This is effectively a topology, a handful of ways to deal with force field data and typing information, positions, and box vectors. It may seem counter-intuitive, but in order to facilitate #19 it may be valuable to support states with no parameters, in addition to those with some but not all.
# specify a topology, force field, positions, and box vectors
mysystem = System(topology, positions, box) # Create an "empty" system
# Apply select ParameterHandler objects, instead of the entire force field all at once
mysystem.apply_parameter_handler(forcefield['vdW'])
mysystem.apply_parameter_handler(forcefield['Bonds'])
...
This may be feasible with a subclass from System or perhaps a common ancestor that specifies the common components. Or maybe composition over inheritance.
Consider the current constructor:
This is effectively a topology, a handful of ways to deal with force field data and typing information, positions, and box vectors. It may seem counter-intuitive, but in order to facilitate #19 it may be valuable to support states with no parameters, in addition to those with some but not all.
This may be feasible with a subclass from
System
or perhaps a common ancestor that specifies the common components. Or maybe composition over inheritance.