molgen

Description of molgen

The initial configuration of simulation systems could be generated by employing a plugin of PYGAMD (named molgen, the abbreviation of “molecule generator”). The format of output files could be MST, Mol2 or XML.

The molgen is composed of two parts:

  1. Defination of molecules and objects where the molecules describe flexible chains and the objects describe rigid objects with fixed shapes.

  2. Generator of system with box size and the number of defined molecules and objects.

A molecule is defined by “Molecule” class with the number of particles, particle types, topology, and so on. An object is defined by “Object” class with the number of particles and shape. One or multiple molecules or objects can be defined in this way.

Head of script:

from poetry import molgen
# imports an extended Python module of molgen.

Example for molecule:

mol1=molgen.Molecule(4)
mol1.setParticleTypes("A,A,A,A")
mol1.setTopology("0-1,1-2,2-3")
mol1.setBondLength(0.75)
mol1.setMass(1.0)
mol1.setAngleDegree("A","A","A",90.0)

“Generators” class could specify box size and the number of defined molecule.

Example for generator:

gen=molgen.Generators(10,10,10)
gen.addMolecule(mol1,10)
gen.setMinimumDistance(0.7)
gen.outPutMST("test")

The configuration of a molecule can be partially read from a MST file and partially defined in the script.

Example:

mol0=molgen.Molecule("sphere.mst",65)
# total 65 particles with 60 read from "sphere.mst".
mol0.setParticleTypes("B*5")
# define the types of the particles which will be generated.
mol0.setTopology("59-60,60-61,61-62,62-63,63-64")
# add the bonds.

If the configuration of a molecule (including particle positions, types, topology and so on) has been completely given in a MST or XML file, we could generate the system by employing “object” to randomaly place and rotate the molecule.

Example:

mol1 = molgen.Object("mol1.mst", 65, molgen.Shape.none)
gen=molgen.Generators(30,30,30)
gen.addMolecule(mol1,20)
gen.outPutMST("test")
or
mol1 = molgen.Object("mol1.xml", 65, molgen.Shape.none)
gen=molgen.Generators(30,30,30)
gen.addMolecule(mol1,20)
gen.outPutXML("test")

Molecule definition

class Molecule(np)

The constructor of a molecule with the number of particles.

Parameters:

np (int) – The number of particles.

class Molecule(filename, np)

The constructor of a molecule and reads particles data from the MST file with file name and the number of particles.

Parameters:
  • filename (str) – The name of inputting file.

  • np (int) – The number of particles.

setParticleTypes(string type)

specifies the particle types separated by comma according to particle index form 0 to N-1 in sequence.

setTopology(string topo)

specifies the bonds separated by comma which connect two particles separated by crossband.

setIsotactic(bool switch)

switches the isotactic configuration of molecule.

setBondLength(double bl)

specifies the bond length of all bonds.

setBondLength(string type1, string type2, double bl)

specifies the bond length of the bond which connect two kind particles with particle type1, type2, and bond length.

setAngleDegree(string type1, sstring type2, string type2, double degree)

specifies the angle with particle type 1, type2, type3, and degree. When angle degree is set as zero, the angles will not be fixed in configuration, but the angle information will still be generated.

setAngleDegree(unsigned int idx1, unsigned int idx2, unsigned int idx3, double degree)

specifies the angle with particle idx1, idx2, idx3, and degree.

setDihedralDegree(string type1, string type2, string type3, string type4, double degree)

specifies the dihedral with particle type1, type2, type3, type4, and degree.

setDihedralDegree(unsigned int idx1, unsigned int idx2, unsigned int idx3, unsigned int idx4, double degree)

specifies the dihedral with particle idx1, idx2, idx3, idx4, and degree.

setMass(double mass)

specifies the mass of all particles.

setMass(string type, double mass)

specifies the mass of a kind of particles.

setMass(unsigned int particle_index, double mass)

specifies the mass of a particle.

setCharge(double charge)

specifies the charge of all particles.

setCharge(string type, double charge)

specifies the charge of a kind of particles.

setCharge(unsigned int particle_index, double charge)

specifies the charge of a particle.

setOrientation()

specifies all particles having orientation.

setOrientation(string type)

specifies a kind of particles having orientation.

setOrientation(unsigned int particle_index)

specifies a particle having orientation.

setInert(double inertx, double inerty, double inertz)

specifies the inert in x, y, z directions of all particles.

setInert(string type, double inertx, double inerty, double inertz)

specifies the inert in x, y, z directions of a kind of particles.

setInert(unsigned int particle_index, double inertx, double inerty, double inertz)

specifies the inert in x, y, z directions of a particle.

setQuaternion()

specifies all particles having quaternion.

setQuaternion(string type)

specifies a kind of particles having quaternion.

setQuaternion(unsigned int particle_index)

specifies a particle having quaternion.

setDiameter(double di)

specifies the diameter of all particles.

setDiameter(string type, double di)

specifies the diameter of a kind of particles.

setDiameter(unsigned int particle_index, double di)

specifies the diameter of a particle.

setCris(unsigned int cris)

specifies the cris of all particles.

setCris(string type, unsigned int cris)

specifies the cris of a kind of particles.

setCris(unsigned int particle_index, unsigned int cris)

specifies the cris of a particle.

setInit(unsigned int init)

specifies the init of all particles.

setInit(string type, unsigned int init)

specifies the init of a kind of particles.

setInit(unsigned int particle_index, unsigned int init)

specifies the init of a particle.

setBody(unsigned int body_id)

specifies the body id of all particles (start form 0).

setBody(string type, unsigned int body_id)

specifies the body id of a kind of particles (start form 0).

setBody(unsigned int particle_index, unsigned int body_id)

specifies the body id of a particle (start form 0).

setMolecule(unsigned int mol_id)

specifies the molecule id of all particles (start form 0).

setMolecule(string type, unsigned int mol_id)

specifies the mlecule id of a kind of particles (start form 0).

setMolecule(unsigned int particle_index, unsigned int mol_id)

specifies the molecule id of a particle (start form 0).

setBox(double lx, double ly, double lz)

specifies the size of box where the molecules are generated.

setBox(double lx_min, double lx_max, double ly_min, double ly_max, double lz_min, double lz_max)

specifies the box where the molecules are generated with box boundaries: lx_min, lx_max, ly_min, ly_max, lz_min, lz_max.

setSphere(double sx, double sy, double sz, double r_min, double r_max)

specifies the sphere where the molecules are generated with sphere center position(sx, sy, sz), spherical shell radius r_min, and r_max. The molecules are generated in the range r_min< r < r_max.

setCylinder(double px, double py, double pz, double ax, double ay, double az, double r_min, double r_max)

specifies the cylinder where the molecules are generated with cylinder center position(px, py, pz), cylinder axe vecter(ax, ay, ax), cyliner radius r_min, and r_max. The molecules are generated in the range r_min< r<r_max.

setBodyEvacuation()

specifies the generation of molecules outside bodies.

Example:

mol0=molgen.Molecule(8)
# initializes a molecule object with the number of particles.
mol0.setParticleTypes("A,A,A,A,A,A,A,A")
# sets particle types.
mol0.setTopology("0-1,0-3,0-4,2-3,1-2,1-5,2-6,3-7,4-5,4-7,5-6,6-7")
# sets topology.
mol0.setBondLength(0.75)
# sets bond length for all bonds.
mol0.setMass(1.0)
# sets mass for all particle.
mol0.setAngleDegree("A","A","A",90.0)
# sets the degree of the angle of particles with the type 1, 2 and 3.

Objects definition

class Object(np, shape)

The constructor of an object with the number of particles and shape.

Parameters:
  • np (int) – The number of particles.

  • shape (Shape) – The shape of object.

class Object(string filename, unsigned int, Shape)

The constructor of an object by reading partial data from a file with file name, the number of particles, and shape (the candidates are “none” and “sphere”).

Parameters:
  • filename (str) – The name of inputting file.

  • np (int) – The number of particles.

  • shape (Shape) – The shape of object.

setRadius(double radius)

specifies the radius of the sphere which will be generated(only works for “sphere” shape) with radius.

Example:

mol0 = molgen.Object("sphere.MST", 65, molgen.Shape.none)
# initializes an object by the reading file (containing 60 particles),
# the number of particles, and object shape.
mol0.setParticleTypes("A*5")
# sets particle types (the former 60 types can be read form the file).
mol0.setTopology("59-60,60-61,61-62,62-63,63-64")
# sets topology.
mol0.setBody("C", 0)
# sets body index (the type "C" particles are thereby rigid body particles).

Generator definition

class Generators(double lx, double ly, double lz)

The constructor of a molecule generator with box length in x y z directions.

Parameters:
  • lx (float) – The box length in x direction.

  • ly (float) – The box length in y direction.

  • lz (float) – The box length in z direction.

addMolecule(Molecule mol, unsigned int num)

adds a molecule into generator with molecule object and number.

setMinimumDistance(double min_dis)

sets the minimum separated distance of all particles.

setMinimumDistance(string type1, string type2, double min_dis)

sets the minimum separated distance between two particle types with particle type 1, particle type 2 and minimum distance.

setParam(string type1, string type2, double epsilon, double sigma, double r_cut)

sets the LJ potential parameters between two particle types for Rosenblueth method with particle type1, particle type2, epsilon, sigma, and cut-off radius.

setDimension(unsigned int dimension)

specifies system dimension, the default value is 3.

outPutMST(string filename)

switch the function of outputting MST filename.

outPutMol2(string filename)

switch the function of outputting Mol2 files.

outPutXML(string filename)

switch the function of outputting XML filename.

Example:

gen=molgen.Generators(10, 10, 10)
# initializes a generator object by box length in x, y, and z direction.
gen.addMolecule(mol0, 10)
# adds a molecule by molecule name and the number of molecules.
gen.setParam("A","A", 1.0, 0.7, 1.0)
# sets the parameters of LJ potential which is used for Rosenblueth method.
gen.setMinimumDistance(0.7)
# sets the minimum separated distance of all particles.
gen.setMinimumDistance("A","A", 0.7)
# sets the minimum separated distance between the particle types.
gen.outPutMST("test")
# sets the name of output MST file.