Source code for intermol.system

from collections import OrderedDict
import logging

import numpy as np

logger = logging.getLogger('InterMolLog')


[docs]class System(object): """ """ def __init__(self, name=None): """Initialize a new System object. Args: name (str): The name of the system """ if name: self.name = name else: self.name = "Untitled" self.nonbonded_function = 0 self.combination_rule = 0 self.genpairs = 'yes' self.lj_correction = 0 self.coulomb_correction = 0 self._box_vector = np.zeros([3, 3]) self._n_atoms = None self._molecule_types = OrderedDict() self._atomtypes = dict() self._nonbonded_types = dict()
[docs] def add_molecule(self, molecule): """Append a molecule into the System. Args: molecule (Molecule): The molecule object to be appended """ self._molecule_types[molecule.name].add_molecule(molecule)
[docs] def add_molecule_type(self, molecule_type): """Append a molecule_type into the System. Args: molecule_type (MoleculeType): The MoleculeType object to be appended """ self._molecule_types[molecule_type.name] = molecule_type
[docs] def add_atomtype(self, atomtype): """ """ self._atomtypes[atomtype.atomtype] = atomtype
@property
[docs] def atomtypes(self): return self._atomtypes
@property
[docs] def nonbonded_types(self): return self._nonbonded_types
@property
[docs] def molecule_types(self): return self._molecule_types
@property
[docs] def atoms(self): for mol_type in self.molecule_types.itervalues(): for mol in mol_type.molecules: for atom in mol.atoms: yield atom
@property def n_atoms(self): if not self._n_atoms: self._n_atoms = len(list(self.atoms)) return self._n_atoms @n_atoms.setter
[docs] def n_atoms(self, n): self._n_atoms = n
@property def box_vector(self): """Return the box vector. """ return self._box_vector @box_vector.setter
[docs] def box_vector(self, v): """Sets the box vector for the system. Assumes the box vector is in the correct form: [[v1x,v2x,v3x],[v1y,v2y,v3y],[v1z,v2z,v3z]] """ if v.shape != (3, 3): e = ValueError("Box vector with incorrect format: {0}".format(v)) logger.exception(e) self._box_vector = np.array(v)
def __repr__(self): return "System '{}' ".format(self.name) def __str__(self): return "System{} '{}'".format(id(self), self.name)