This PR expands on the plugin features for force-bdss, by introducing new BaseDataSource subclasses to pre-process input Gromacs files and generate GromacsPipeline capable of running a simulation.
In doing so, two new data source types have been included: FragmentDataSource and SimulationDataSouce, with the MoleculeDataSource class having undergone significant restructuring. This reflects the hierarchical nature of building unique (neutrally charged) molecules from combinations of 'building block' fragments. For example, using sodium ion (Na+), hydrogen ion (H+) and a chloride ion (Cl-) fragments we can create sodium chloride (NaCl) and hydrogen chloride (HCl) molecules. In this case we would only need to provide one FragmentDataSource for the chloride ion, though would be is present in two MoleculeDataSources.
This method also reflects the way that Gromacs inserts and treats charged chemical species into simulation cells using the genion command. Gromacs molecular topology and coordinate files describe a set atoms or atomic beads that are permanently bonded together during the simulation (such as a carbonate ion CO2-). Therefor, if we wanted to add a specific concentration of NaCl into a simulation, we would need separate input files for both the Na+ and Cl- ions, since they posses an ionic bond and so can become dissociated during the simulation.
Changelog
New classes Fragment and FragmentDataSource representing a collection of particles connected together with covalent bonds
Refactored classes Molecule and MoleculeDataSource to represent a collection of Fragment objects that are only connected together by ionic bonds.
New classes Simulation and SimulationDataSource to provide a generic way to run a simulation via the creation of a GromacsSimulationBuilder object
This PR expands on the plugin features for
force-bdss
, by introducing newBaseDataSource
subclasses to pre-process input Gromacs files and generateGromacsPipeline
capable of running a simulation.In doing so, two new data source types have been included:
FragmentDataSource
andSimulationDataSouce
, with theMoleculeDataSource
class having undergone significant restructuring. This reflects the hierarchical nature of building unique (neutrally charged) molecules from combinations of 'building block' fragments. For example, using sodium ion (Na+), hydrogen ion (H+) and a chloride ion (Cl-) fragments we can create sodium chloride (NaCl) and hydrogen chloride (HCl) molecules. In this case we would only need to provide oneFragmentDataSource
for the chloride ion, though would be is present in twoMoleculeDataSources
.This method also reflects the way that Gromacs inserts and treats charged chemical species into simulation cells using the
genion
command. Gromacs molecular topology and coordinate files describe a set atoms or atomic beads that are permanently bonded together during the simulation (such as a carbonate ion CO2-). Therefor, if we wanted to add a specific concentration of NaCl into a simulation, we would need separate input files for both the Na+ and Cl- ions, since they posses an ionic bond and so can become dissociated during the simulation.Changelog
Fragment
andFragmentDataSource
representing a collection of particles connected together with covalent bondsMolecule
andMoleculeDataSource
to represent a collection ofFragment
objects that are only connected together by ionic bonds.Simulation
andSimulationDataSource
to provide a generic way to run a simulation via the creation of aGromacsSimulationBuilder
object