parmed.modeller package¶
Module contents¶
This package contains functionality necessary to carry out basic molecular modelling tasks.
-
class
parmed.modeller.
AmberOFFLibrary
[source]¶ Bases:
object
Class containing static methods responsible for parsing and writing OFF libraries
Methods
id_format
(filename)Sees if an open file is an OFF library file.
parse
(filename)Parses an Amber OFF library
write
(lib, dest)Writes a dictionary of ResidueTemplate units to a file in OFF format
-
static
id_format
(filename)[source]¶ Sees if an open file is an OFF library file.
- Parameters
- filenamestr
The name of the file to see if it is an OFF file format
- Returns
- is_fmtbool
True if it is recognized as OFF, False otherwise
-
static
parse
(filename)[source]¶ Parses an Amber OFF library
- Parameters
- filenamestr or file-like iterable
The file name or file object to parse. If it is an iterable, it will be exhausted
- Returns
- residuesOrderedDict {str
Dictionary pairing residue names with their
ResidueTemplate
objects
- Raises
- ValueError if the first line does not match the file format. This line
- will be consumed
- IOError if filename is the name of a file that does not exist
- RuntimeError if EOF is reached prematurely or other formatting issues
- found
-
static
write
(lib, dest)[source]¶ Writes a dictionary of ResidueTemplate units to a file in OFF format
- Parameters
- libdict {str
Items can be either
ResidueTemplate
orResidueTemplateContainer
instances- deststr or file-like
Either a file name or a file-like object to write the file to
-
static
-
class
parmed.modeller.
PatchTemplate
(name='')[source]¶ Bases:
parmed.modeller.residue.ResidueTemplate
A residue patch (typically used for CHARMM) that is used to modify existing residues in some way (e.g., terminal patches, disulfide bridges, etc.)
- Parameters
- namestr, optional
If provided, this is the name of the residue
See also
Notes
This class basically just provides an additional list of atoms that need to be deleted when applying this patch – something that does not apply to standard Residues
- Attributes
- add_bondslist of (str, str, order)
List of bonds that need to be added in applying the patch
- delete_atomslist of str
List of atom names that need to be deleted in applying the patch
- delete_improperslist of tuple of str
List of impropers (tuple of atom names) that need to be deleted in applying the patch
Methods
add_atom
(atom)Adds an atom to this residue template
add_bond
(atom1, atom2[, order])Adds a bond between the two provided atoms in the residue
apply_patch
(patch[, precision])Apply the specified PatchTemplate to the ResidueTemplate.
delete_atom
(atom)Delete an atom from this residue template, along with corresponding bonds.
delete_bond
(bond)Delete a bond from this residue template.
fix_charges
([to, precision])Adjusts the partial charge of all atoms in the residue to match the requested target charge.
from_residue
(residue)This constructor creates a ResidueTemplate from a particular Residue object Parameters ———- residue :
Residue
The residue from which to create a templatepatch_is_compatible
(patch)Determine whether a specified patch is compatible with this residue.
save
(fname[, format, overwrite])Saves the current ResidueTemplate in the requested file format.
to_dataframe
()Create a pandas dataframe from the atom information
to_networkx
([include_extra_particles])Create a NetworkX graph of atoms and bonds
to_structure
()Generates a Structure instance with a single residue from this ResidueTemplate
-
class
parmed.modeller.
ResidueTemplate
(name='')[source]¶ Bases:
object
This is a residue template, which contains a listing of the atoms in the residue template as well as a mapping of which atoms are bonded to other atoms.
- Parameters
- namestr, optional
If provided, this is the name of the residue
- Attributes
- atoms
AtomList
List of atoms in this residue
- bonds
TrackedList
List of the bonds between the atoms in this residue
coordinates
np.ndarray(natom, 3)Atomic coordinates, in Angstroms, of all atoms in the template
- connectionslist of
Atom
A list of all atoms that should form connections with atoms of another residue besides the head and tail atoms
- head
Atom
or None The atom that is connected to the residue that comes before this one
- tail
Atom
or None The atom that is connected to the next residue after this one
- first_patch
ResidueTemplate
or None If it is not None, this is the patch whose tail is added to the head atom of this residue when this residue is the first in a chain
- last_patch
ResidueTemplate
or None If it is not None, this is the patch whose head is added to the tail atom of this residue when this residue is the last in a chain
- groupslist of list(
Atom
) If set, each group is a list of Atom instances making up each group
- override_levelinteger
For use with OpenMM ResidueTemplates. If OpenMM ForceField is given multiple identically-matching residue templates with the same names it choses (overrides with) the one with the highest override_level (overrideLevel in OpenMM). Default is 0.
- atoms
Methods
add_atom
(atom)Adds an atom to this residue template
add_bond
(atom1, atom2[, order])Adds a bond between the two provided atoms in the residue
apply_patch
(patch[, precision])Apply the specified PatchTemplate to the ResidueTemplate.
delete_atom
(atom)Delete an atom from this residue template, along with corresponding bonds.
delete_bond
(bond)Delete a bond from this residue template.
fix_charges
([to, precision])Adjusts the partial charge of all atoms in the residue to match the requested target charge.
from_residue
(residue)This constructor creates a ResidueTemplate from a particular Residue object Parameters ———- residue :
Residue
The residue from which to create a templatepatch_is_compatible
(patch)Determine whether a specified patch is compatible with this residue.
save
(fname[, format, overwrite])Saves the current ResidueTemplate in the requested file format.
Create a pandas dataframe from the atom information
to_networkx
([include_extra_particles])Create a NetworkX graph of atoms and bonds
Generates a Structure instance with a single residue from this ResidueTemplate
-
add_atom
(atom)[source]¶ Adds an atom to this residue template
- Parameters
- atom
Atom
The atom to add to this residue
- atom
- Raises
- ValueError if
atom
has the same name as another atom in this - residue already
- ValueError if
-
add_bond
(atom1, atom2, order=1.0)[source]¶ Adds a bond between the two provided atoms in the residue
- Parameters
- atom1
Atom
or int or str One of the atoms in the bond. It must be in the
atoms
list of this ResidueTemplate. It can also be the atom index (index from 0) of the atom in the bond.- atom2
Atom
or int or str The other atom in the bond. It must be in the
atoms
list of this ResidueTemplate. It can also be the atom index (index from 0) of the atom in the bond.- orderfloat
- The bond order of this bond. Bonds are classified as follows:
1.0 – single bond 2.0 – double bond 3.0 – triple bond 1.5 – aromatic bond 1.25 – amide bond
Default is 1.0
- atom1
- Raises
- IndexError if atom1 or atom2 are integers that are out of range of the
- number of atoms already in this template
- RuntimeError if atom1 or atom2 are
Atom
instances but they are - not in the atoms list of this ResidueTemplate
Notes
If atom1 and atom2 are already bonded, this routine does nothing. If atom1 or atom2 are strings, then they will match the first instance of the atom name that is the same as the atom name passed.
-
apply_patch
(patch, precision=4)[source]¶ Apply the specified PatchTemplate to the ResidueTemplate.
This only handles patches that affect a single residue.
An exception is thrown if patch is incompatible because * The patch specifies that an atom is to be deleted that doesn’t exist in the residue * A bond specified as being added in the patch does not have both atom names present after adding/deleting atoms from the patch * The new net charge is not integral to the specified precision * The residue is not modified in any way (no atoms or bonds added/changed/deleted)
- Parameters
- patchPatchTemplate
The patch to apply to this residue
- precisionint, optional
Each valid patch should be produce a net charge that is integral to this many decimal places. Default is 4
- Returns
- residueResidueTemplate
A new ResidueTemplate corresponding to the patched residue is returned. The original remains unmodified.
-
property
coordinates
¶ Atomic coordinates, in Angstroms, of all atoms in the template
-
delete_atom
(atom)[source]¶ Delete an atom from this residue template, along with corresponding bonds.
- Parameters
- atom
Atom
or str The atom or atom name to be deleted
- atom
-
delete_bond
(bond)[source]¶ Delete a bond from this residue template.
- Parameters
- bond
Bond
The bond to be deleted
- bond
-
property
empirical_chemical_formula
¶ Return the empirical chemical formula (in Hill notation) as a string (e.g. ‘H2O’, ‘C6H12’), omitting EPs
-
fix_charges
(to=None, precision=4)[source]¶ Adjusts the partial charge of all atoms in the residue to match the requested target charge. The default target charge is the closest integer
- Parameters
- tofloat, optional
The desired net charge of this residue template. Default is the closest integer charge
- precisionint, optional
The number of decimal places that each charge should be rounded to. Default is 4
- Returns
- self
ResidueTemplate
The current residue template whose charges are being modified
- self
- Raises
- ValueError
If you try to call fix_charges on a residue template with no atoms
Notes
This method modifies the atomic charges of this residue template in-place. Any residual charge (which is accumulated roundoff beyond the requested precision) is added to the first atom of the residue. This will typically be 10^-precision in magnitude, and should almost never be higher than 2*10^-precision. As long as a reasonable precision is chosen (no fewer than 3 or 4 decimal places), this will have only a negligible impact on a force field.
If provided, “to” will be rounded to the
precision
’th decimal place to make sure that the sum of the charges come out as close as possible to the target charge while still obeying the requested precision.
-
classmethod
from_residue
(residue)[source]¶ This constructor creates a ResidueTemplate from a particular Residue object Parameters ———- residue :
Residue
The residue from which to create a template
-
property
map
¶
-
property
net_charge
¶
-
patch_is_compatible
(patch)[source]¶ Determine whether a specified patch is compatible with this residue.
Compatibility is determined by whether Residue.Template.apply_patch(patch) raises as exception or not.
- Parameters
- patchPatchTemplate
The patch to be applied to this residue.
- Returns
- is_compatiblebool
True if patch is compatible with the residue; False if not.
-
save
(fname, format=None, overwrite=False, **kwargs)[source]¶ Saves the current ResidueTemplate in the requested file format. Supported formats can be specified explicitly or determined by file-name extension. The following formats are supported, with the recognized suffix shown in parentheses:
MOL2 (.mol2)
MOL3 (.mol3)
OFF (.lib/.off)
PDB (.pdb)
PQR (.pqr)
- Parameters
- fnamestr
Name of the file to save. If
format
isNone
(see below), the file type will be determined based on the filename extension. If the type cannot be determined, a ValueError is raised.- formatstr, optional
The case-insensitive keyword specifying what type of file
fname
should be saved as. IfNone
(default), the file type will be determined from filename extension offname
- overwritebool, optional
If True, allow the target file to be overwritten. Otherwise, an IOError is raised if the file exists. Default is False
- kwargskeyword-arguments
Remaining arguments are passed on to the file writing routines that are called by this function
- Raises
- ValueError if either filename extension or
format
are not recognized - TypeError if the structure cannot be converted to the desired format for
- whatever reason
- ValueError if either filename extension or
-
to_dataframe
()[source]¶ Create a pandas dataframe from the atom information
- Returns
- df
pandas.DataFrame
The pandas DataFrame with all of the atomic properties
- df
Notes
The DataFrame will be over all atoms. The columns will be the attributes of the atom (as well as its containing residue). Some columns will always exist. Others will only exist if those attributes have been set on the Atom instances (see the
Atom
docs for possible attributes and their meaning). The columns that will always be present are:number : int
name : str
type : str
atomic_number : int
charge : float
mass : float
nb_idx : int
solvent_radius : float
screen : float
occupancy : float
bfactor : float
altloc : str
tree : str
join : int
irotat : int
rmin : float
epsilon : float
rmin_14 : float
epsilon_14 : float
The following attributes are optionally present if they were present in the original file defining the structure:
xx : float (x-coordinate position)
xy : float (y-coordinate position)
xz : float (z-coordinate position)
vx : float (x-coordinate velocity)
vy : float (y-coordinate velocity)
vz : float (z-coordinate velocity)
-
to_networkx
(include_extra_particles=True)[source]¶ Create a NetworkX graph of atoms and bonds
- Parameters
- include_extra_particlesbool
Whether to include “atoms” that actually represent extra particles (atomic_number == 0).
- Returns
- G
networkx.Graph
A NetworkX Graph representing the molecule
- G
-
to_structure
()[source]¶ Generates a Structure instance with a single residue from this ResidueTemplate
- Returns
- struct
parmed.structure.Structure
The Structure with all of the bonds and connectivity of this template
- struct
-
class
parmed.modeller.
ResidueTemplateContainer
(name='')[source]¶ Bases:
list
A container of ResidueTemplate objects representing a unit with multiple residues
- Parameters
- namestr, optional
The name of the residue container
Methods
append
(object, /)Append object to the end of the list.
clear
(/)Remove all items from list.
copy
(/)Return a shallow copy of the list.
count
(value, /)Return number of occurrences of value.
extend
(iterable, /)Extend list by appending elements from the iterable.
fix_charges
([precision])Adjusts the net charge of all residues in this ResidueContainer to match the closest integer charge
from_library
(library[, copy])Converts a dictionary of ResidueTemplate items into a ResidueTemplateContainer.
from_structure
(struct[, term_decorate])Instantiates a ResidueTemplateContainer from a Structure instance filled with residues
index
(value[, start, stop])Return first index of value.
insert
(index, object, /)Insert object before index.
pop
([index])Remove and return item at index (default last).
remove
(value, /)Remove first occurrence of value.
reverse
(/)Reverse IN PLACE.
save
(fname[, format])Saves the current ResidueTemplateContainer in the requested file format.
sort
(*[, key, reverse])Stable sort IN PLACE.
Converts the ResidueTemplateContainer instance to a library of unique
ResidueTemplate
instances.-
fix_charges
(precision=4)[source]¶ Adjusts the net charge of all residues in this ResidueContainer to match the closest integer charge
- Parameters
- precisionint, optional
The number of decimal places that each charge should be rounded to. Default is 4
- Returns
- self
ResidueTemplateContainer
The current residue template container whose ResidueTemplates are being modified
- self
- Raises
- ValueError
If you try to call fix_charges on a container with no templates
Notes
This method modifies everything in-place.
-
classmethod
from_library
(library, copy=False)[source]¶ Converts a dictionary of ResidueTemplate items into a ResidueTemplateContainer.
- Parameters
- librarydict or OrderedDict
The library of ResidueTemplate objects to add to this container
- copybool, optional
If True, copies of each ResidueTemplate in library is added to the ResidueTemplateContainer. Default is False
- Returns
- contResidueTemplateContainer
A ResidueTemplateContainer containing all of the residues defined in
library
- Raises
- TypeError if any of the items in the input library is not a
- ResidueTemplate instance (or an instance of a subclass)
Notes
If the library is ordered, that order is maintained
-
classmethod
from_structure
(struct, term_decorate=True)[source]¶ Instantiates a ResidueTemplateContainer from a Structure instance filled with residues
- Parameters
- struct
parmed.structure.Structure
The structure from which to generate the ResidueTemplateContainer from
- term_decoratebool, optional
If True, terminal amino and nucleic acid residues will be adorned as follows:
N-prepended if it is an N-terminal amino acid
C-prepended if it is a C-terminal amino acid
5-appended if it is a 5’-terminal nucleic acid
3-appended if it is a 3’-terminal nucleic acid
For example, an N-terminal GLY will become NGLY, while a 5’-terminal DA will become DA5. Default is True
- struct
-
save
(fname, format=None, **kwargs)[source]¶ Saves the current ResidueTemplateContainer in the requested file format. Supported formats can be specified explicitly or determined by file-name extension. The following formats are supported, with the recognized suffix and
format
keyword shown in parentheses:MOL2 (.mol2)
MOL3 (.mol3)
OFF (.lib/.off)
- Parameters
- fnamestr
Name of the file to save. If
format
isNone
(see below), the file type will be determined based on the filename extension. If the type cannot be determined, a ValueError is raised.- formatstr, optional
The case-insensitive keyword specifying what type of file
fname
should be saved as. IfNone
(default), the file type will be determined from filename extension offname
- kwargskeyword-arguments
Remaining arguments are passed on to the file writing routines that are called by this function
- Raises
- ValueError if either filename extension or
format
are not recognized - TypeError if the structure cannot be converted to the desired format for
- whatever reason
- ValueError if either filename extension or
Notes
Mol2 and Mol3 files are saved as concatenated multiple @<MOLECULE>s. By contrast,
Structure.save
will save a single @<MOLECULE> mol2 file with multiple residues if the mol2 format is requested.
-
to_library
()[source]¶ Converts the ResidueTemplateContainer instance to a library of unique
ResidueTemplate
instances. The first of each kind of residue is taken- Returns
- residuesdict {str
The residue library with all residues from this residue collection