forcefield

Force fields are fun.

The forcefield structure is modeled off of the structures.py file, where each forcefield is considered a chain of residues of atoms.

Code author: Todd Dolinsky

Code author: Yong Huang

class pdb2pqr.forcefield.Forcefield(ff_name, definition, userff, usernames=None)[source]

Parameter definitions for a given forcefield.

Note

Pass ff and ff names file like objects rather than sorting out whether to use user-created files here.

The forcefield class contains definitions for a given forcefield. Each forcefield object contains a dictionary of residues, with each residue containing a dictionary of atoms. Dictionaries are used instead of lists as the ordering is not important. The forcefield definition files are unedited, directly from the forcefield - all transformations are done within.

__init__(ff_name, definition, userff, usernames=None)[source]

Initialize the class by parsing the definition file.

Todo

Why are files being loaded so deep in this function?

Parameters:
  • ff_name (str) – the name of the forcefield (can be None)
  • definition (Definition) – the definition object for the Forcefield
  • userff (str) – path for user-defined forcefields file
  • usernames (str) – path to user-defined atom/residue names file
Raises:

ValueError – if invalid force field names specified

classmethod get_amber_params(residue, name)[source]

Get AMBER forcefield definitions.

Todo

Should this be a staticmethod or a classmethod?

Todo

Figure out why residue.type has int values

Parameters:
  • residue (Residue) – the residue
  • name (str) – the atom name
Returns:

(forcefield name of residue, forcefield name of atom)

Return type:

(str, str)

classmethod get_charmm_params(residue, name)[source]

Get CHARMM forcefield definitions.

Todo

Should this be a staticmethod or a classmethod?

Todo

Figure out why residue.type has int values

Parameters:
  • residue (Residue) – the residue
  • name (str) – the atom name
Returns:

(forcefield name of residue, forcefield name of atom)

Return type:

(str, str)

get_group(resname, atomname)[source]

Get the group/type associated with the input fields.

Parameters:
  • resname (str) – the residue name
  • atomname (str) – the atom name
Returns:

group name or empty string

Return type:

str

get_names(resname, atomname)[source]

Get forcefield names associated with residue and atom.

The names passed in point to ForcefieldResidue and ForcefieldAtom objects which may have different names; grab these names and return.

Parameters:
  • resname (str) – the residue name
  • atomname (str) – the atom name
Returns:

(forcefield’s name for this residue, forcefield’s name for this atom)

Return type:

(str, str)

get_params(resname, atomname)[source]

Get the charge and radius parameters for an atom in a residue.

The residue itself is needed instead of simply its name because the forcefield may use a different residue name than the standard amino acid name.

Todo

Why do both get_params() and get_params1() exist?

Parameters:
  • resname (str) – the residue name
  • atomname (str) – the atom name
Returns:

(charge of the atom, radius of the atom)

Return type:

(float, float)

get_params1(residue, name)[source]

Get the charge and radius parameters for an atom in a residue.

The residue itself is needed instead of simply its name because the forcefield may use a different residue name than the standard amino acid name.

Todo

Why do both get_params() and get_params1() exist?

Parameters:
  • resname (str) – the residue name
  • name (str) – the atom name
Returns:

(charge of the atom, radius of the atom)

Return type:

(float, float)

classmethod get_parse_params(residue, name)[source]

Get PARSE forcefield definitions.

Todo

Should this be a staticmethod or a classmethod?

Parameters:
  • residue (Residue) – the residue
  • name (str) – the atom name
Returns:

(forcefield name of residue, forcefield name of atom)

Return type:

(str, str)

get_residue(resname)[source]

Return the residue object with the given resname.

Parameters:resname (str) – the name of the residue
Returns:residue object
Return type:ForcefieldResidue
has_residue(resname)[source]

Check if the residue name is in the map or not.

Parameters:resname (str) – the residue name to search
Returns:indication of whether resname is in map
Return type:bool
class pdb2pqr.forcefield.ForcefieldAtom(name, charge, radius, resname, group='')[source]

ForcefieldAtom class.

Contains fields that are related to the forcefield at the atom level.

__init__(name, charge, radius, resname, group='')[source]

Initialize the object.

Parameters:
  • name (str) – atom name
  • charge (float) – the charge on the atom
  • radius (float) – the radius of the atom
  • resname (str) – the residue name
  • group (str) – the group name
get(name)[source]

Get a member of the ForcefieldAtom class.

Parameters:name (str) –

the name of the member, including:

  • name: The atom name (returns string)
  • charge: The charge on the atom (returns float)
  • radius: The radius of the atom (returns float)
  • epsilon: The epsilon assocaited with the atom (returns float)
Returns:the value of the member
Raises:KeyError – if member does not exist
class pdb2pqr.forcefield.ForcefieldHandler(map_, reference)[source]

Process XML-format force field parameter files.

__init__(map_, reference)[source]

Initialize handler

Parameters:
  • map (dict) – dictionary of paramaeter information
  • reference (dict) – reference map for force field
characters(text)[source]

Parse text information within XML tag.

Parameters:text – the text value between the XML tags
endElement(name)[source]

End XML element parsing.

Parameters:name (str) – the name of the element
classmethod find_matching_names(regname, map_)[source]

Find strings in the map that match the given regular expression.

Todo

Should this be a staticmethod instead of classmethod?

Parameters:
  • regname (str) – the regular expression to search for in the map
  • map (dict) – the dictionary to search
Returns:

a list of regular expression match objects for dictionary keys that match the regular expression.

Return type:

[re.Match]

startElement(name, _)[source]

Start XML element parsing.

Parameters:name (str) – element name
classmethod update_map(toname, fromname, map_)[source]

Update the given map by adding a pointer from a new name to an object.

Todo

Should this be a staticmethod instead of classmethod?

Parameters:
  • toname (str) – the new name for the object
  • fromname (str) – the old name for the object
  • map (dict) – a dictionary of forcefield-related items
class pdb2pqr.forcefield.ForcefieldResidue(name)[source]

ForcefieldResidue class

The ForceFieldResidue class contains a mapping of all atoms within the residue for easy searching.

__init__(name)[source]

Initialize the ForceFieldResidue object.

Parameters:name (str) – the name of the residue
add_atom(atom)[source]

Add an atom to the ForcefieldResidue object.

Parameters:atom (Atom) – the atom to be added
get_atom(atomname)[source]

Return the atom object with the given atomname.

Parameters:resname (str) – the name of the atom
Returns:the atom object
Return type:ForcefieldAtom
has_atom(atomname)[source]

Check to see if the named atom is in the current residue.

Parameters:atomname (str) – the name of the atom to search for
Returns:indication of whether atmo is present
Return type:bool