The MolecularDataType is the data type that carry molecular information between modules. It is composed by the following objects:
group MolecularDataType {
int num_atoms; // total number of atoms
int atom_z[.num_atoms]; // atomic numbers list
string atom_name[.num_atoms]; // atom names as read from the file
string residue_name[.num_atoms]; // residue names
int residue_id[.num_atoms]; // residue number as read from the file
float xyz_lst[.num_atoms][3]; // atom coordinates
float charge_lst[.num_atoms]; // atom charge (or any other scalar parameter associated to the atom)
int num_bonds; // number of bonds
int connect_lst[2*.num_bonds]; // connection list
int bond_type_lst[.num_bonds]; // type of bond; the values are defined in mol_type.h
float offset_lst[.num_atoms][3]; // atom offset vector provided by some formats
group unit_cell { // info on unit cell placement (some info are redundant, but keep here for convenience)
float side_vectors[3][3]; // vectors defining the three unit cell sides (first vector (0, 0, 0) means no unit cell available)
float angles[3]; // angles between unit cell sides (as defined in the PDB format)
float origin[3]; // the origin of the unit cell
};
group symmetry { // info on atom symmetries
string space_group; // the Hermann-Mauguin space group symmetry code (eg. P 21 21 21)
};
};