ligand
and submodule contents
ligand
Ligand support functions.
Todo
Some of the definitions in this module belong in a configuration file other than here.
Code author: Jens Erik Nielsen
- pdb2pqr.ligand.ELEMENT_BY_GROUP = {1: ['H', 'Li', 'Na', 'K', 'Rb', 'Cs', 'Fr'], 2: ['Be', 'Mg', 'Ca', 'Sr', 'Ba', 'Ra'], 13: ['B', 'Al', 'Ga', 'In', 'Tl', 'Nh'], 14: ['C', 'Si', 'Ge', 'Sn', 'Pb', 'Fl'], 15: ['N', 'P', 'As', 'Sb', 'Bi', 'Mc'], 16: ['O', 'S', 'Se', 'Te', 'Po', 'Lv'], 17: ['F', 'Cl', 'Br', 'I', 'At', 'Ts'], 18: ['He', 'Ne', 'Ar', 'Kr', 'Xe', 'Rn', 'Og']}
Groups of the periodic table
- pdb2pqr.ligand.NONBONDED_BY_TYPE = {'Al': 0, 'Br': 6, 'C.1': 0, 'C.2': 0, 'C.3': 0, 'C.ar': 0, 'Ca': 0, 'Cl': 6, 'F': 6, 'H': 0, 'I': 6, 'K': 0, 'Li': 0, 'N.1': 2, 'N.2': 2, 'N.3': 2, 'N.4': 0, 'N.am': 0, 'N.ar': 2, 'N.pl3': 0, 'Na': 0, 'O.2': 4, 'O.3': 4, 'O.co2': 4.5, 'P.3': 0, 'S.2': 4, 'S.3': 4, 'S.o': 2, 'S.o2': 0, 'Si': 0}
Numbers of non-bonded electrons for Sybyl-type atoms. Adapted from https://onlinelibrary.wiley.com/doi/abs/10.1002/jcc.540100804 (Table I).
- pdb2pqr.ligand.RADII = {'bondi': {'Ar': 1.88, 'As': 1.85, 'Br': 1.85, 'C': 1.7, 'Cl': 1.75, 'F': 1.47, 'H': 1.2, 'He': 1.4, 'I': 1.98, 'Kr': 2.02, 'N': 1.55, 'Ne': 1.54, 'O': 1.52, 'P': 1.8, 'S': 1.8, 'Se': 1.9, 'Si': 2.1, 'Te': 2.06, 'Xe': 2.16}, 'bondi-zap': {'C': 1.7, 'Cl': 1.75, 'F': 1.47, 'H': 1.2, 'I': 1.98, 'N': 1.55, 'O.co2': 1.52, 'S': 1.8}, 'not parse - do not use': {'Br': 2.5, 'C': 1.7, 'Cl': 1.75, 'F': 1.2, 'H': 1.0, 'N': 1.5, 'O': 1.4, 'P': 1.9, 'S': 1.85}, 'parse': {'C': 1.7, 'C.1': 2.0, 'C.2': 2.0, 'C.3': 2.0, 'H': 1.0, 'N': 1.5, 'O': 1.4, 'S': 1.85}, 'zap9': {'C': 1.87, 'Cl': 1.82, 'F': 2.4, 'H': 1.1, 'I': 2.65, 'N': 1.4, 'O.co2': 1.76, 'S': 2.15}}
Radii for different atom types. When using these tables, the most specific Sybyl atom type should be used first and then the generic element should be used
- pdb2pqr.ligand.VALENCE_BY_ELEMENT = {'Al': 3, 'Ar': 8, 'As': 5, 'At': 7, 'B': 3, 'Ba': 2, 'Be': 2, 'Bi': 5, 'Br': 7, 'C': 4, 'Ca': 2, 'Cl': 7, 'Cs': 1, 'F': 7, 'Fl': 4, 'Fr': 1, 'Ga': 3, 'Ge': 4, 'H': 1, 'He': 8, 'I': 7, 'In': 3, 'K': 1, 'Kr': 8, 'Li': 1, 'Lv': 6, 'Mc': 5, 'Mg': 2, 'N': 5, 'Na': 1, 'Ne': 8, 'Nh': 3, 'O': 6, 'Og': 8, 'P': 5, 'Pb': 4, 'Po': 6, 'Ra': 2, 'Rb': 1, 'Rn': 8, 'S': 6, 'Sb': 5, 'Se': 6, 'Si': 4, 'Sn': 4, 'Sr': 2, 'Te': 6, 'Tl': 3, 'Ts': 7, 'Xe': 8}
Valence electrons by element
- pdb2pqr.ligand.VALENCE_BY_GROUP = {1: 1, 2: 2, 13: 3, 14: 4, 15: 5, 16: 6, 17: 7, 18: 8}
Numbers of valence electrons for the groups of the periodic table
hydrogens.ligand.mol2
Support molecules in Tripos MOL2 format.
For further information look at (web page exists: 25 August 2005): http://www.tripos.com/index.php?family=modules,SimplePage,,,&page=sup_mol2&s=0
- class pdb2pqr.ligand.mol2.Mol2Atom[source]
MOL2 molecule atoms.
- assign_radius(primary_dict, secondary_dict)[source]
Assign radius to atom.
Todo
It seems inconsistent that this function pulls radii from a dictionary and the biomolecule routines use force field files.
- property bond_order
Total number of electrons in bonds with other atoms.
- Returns:
total number of electrons in bonds with other atoms
- Return type:
- property coords
Coordinates.
- Returns:
coordinates
- Return type:
numpy.ndarray
- property element
Element for this atom (uppercase).
- Returns:
element for this atom
- Return type:
- property formal_charge
Formal charge for this atom
- Returns:
formal charge for this atom
- Return type:
- property num_bonded_heavy
Number of heavy atoms bonded to this atom.
- Returns:
number of heavy atoms
- Return type:
- class pdb2pqr.ligand.mol2.Mol2Bond(atom1, atom2, bond_type, bond_id=0)[source]
MOL2 molecule bonds.
- property atom_names
Get atom names in bond.
- class pdb2pqr.ligand.mol2.Mol2Molecule[source]
Tripos MOL2 molecule.
- assign_parameters(primary_dict={'C': 1.87, 'Cl': 1.82, 'F': 2.4, 'H': 1.1, 'I': 2.65, 'N': 1.4, 'O.co2': 1.76, 'S': 2.15}, secondary_dict={'Ar': 1.88, 'As': 1.85, 'Br': 1.85, 'C': 1.7, 'Cl': 1.75, 'F': 1.47, 'H': 1.2, 'He': 1.4, 'I': 1.98, 'Kr': 2.02, 'N': 1.55, 'Ne': 1.54, 'O': 1.52, 'P': 1.8, 'S': 1.8, 'Se': 1.9, 'Si': 2.1, 'Te': 2.06, 'Xe': 2.16})[source]
Assign charges and radii to atoms in molecule.
- Parameters:
primary_dict – primary dictionary of radii indexed by atom type or element
secondary_dict – backup dictionary for radii not found in primary dictionary
- find_atom_torsions(start_atom)[source]
Set the torsion angles that start with this atom (name).
- Parameters:
start_atom (str) – starting atom name
- Returns:
list of 4-tuples containing atom names comprising torsions
- find_new_rings(path, rings, level=0)[source]
Find new rings in molecule.
This was borrowed from StackOverflow: https://j.mp/2AHaukj
- parse_atoms(mol2_file)[source]
Parse @<TRIPOS>ATOM section of file.
- Parameters:
mol2_file – file-like object with MOL2 data
- Returns:
file-like object advanced to bonds section
- Raises:
ValueError – for bad MOL2 ATOM lines
TypeError – for bad charge entries
- parse_bonds(mol2_file)[source]
Parse @<TRIPOS>BOND section of file.
Atoms must already have been parsed. Also sets up torsions and rings.
- Parameters:
mol2_file – file-like object with MOL2 data
- Returns:
file-like object advanced to SUBSTRUCTURE section
- read(mol2_file)[source]
Routines for reading MOL2 file.
- Parameters:
mol2_file – file-like object with MOL2 data
- static rotate_to_smallest(path)[source]
Rotate cycle path so that it begins with the smallest node.
This was borrowed from StackOverflow: https://j.mp/2AHaukj
- set_rings()[source]
Set all rings in molecule.
This was borrowed from StackOverflow: https://j.mp/2AHaukj
hydrogens.ligand.peoe
Implements the PEOE method.
The PEOE method is described in: Paul Czodrowski, Ingo Dramburg, Christoph A. Sotriffer Gerhard Klebe. Development, validation, and application of adapted PEOE charges to estimate pKa values of functional groups in protein–ligand complexes. Proteins, 65, 424-437, 2006. https://doi.org/10.1002/prot.21110
- pdb2pqr.ligand.peoe.electronegativity(charge, poly_terms, atom_type)[source]
Calculate the electronegativity.
Calculation is based on a third-order polynomial in the atomic charge as described in Equation 2 of https://doi.org/10.1002/prot.21110.
- Parameters:
- Returns:
electronegativity value
- Return type:
- Raises:
IndexError – if incorrect number of poly_terms given
- pdb2pqr.ligand.peoe.equilibrate(atoms, damp=0.778, scale=1.56, num_cycles=6, term_dict={'BR': (10.88, 8.47, 1.16, 19.71), 'C.1': (10.39, 9.45, 0.73, 20.57), 'C.2': (9.29, 9.32, 1.51, 19.62), 'C.3': (7.98, 9.18, 1.88, 19.04), 'C.AR': (8.530000000000001, 9.18, 1.88, 19.04), 'C.CAT': (7.98, 9.18, 1.88, 19.04), 'CL': (10.38, 9.69, 1.35, 22.04), 'F': (12.36, 13.85, 2.31, 30.82), 'H': (7.17, 6.24, -0.56, 12.85), 'I': (10.9, 7.96, 0.96, 18.82), 'N.1': (15.68, 11.7, -0.27, 27.11), 'N.2': (12.87, 11.15, 0.85, 24.87), 'N.3': (17.54, 10.28, 1.36, 28.0), 'N.4': (17.54, 10.28, 1.36, 28.0), 'N.AM': (16.369999999999997, 11.15, 0.85, 24.87), 'N.AR': (11.579999999999998, 11.15, 0.85, 24.87), 'N.PL3': (13.37, 11.15, 0.85, 24.87), 'O.2': (14.18, 12.92, 1.39, 28.49), 'O.3': (11.08, 12.92, 1.39, 28.49), 'O.CO2': (15.25, 13.79, 0.47, 31.33), 'O.OH': (14.98, 12.92, 1.39, 28.49), 'P.3': (10.63, 9.13, 1.38, 20.65), 'S.2': (10.63, 9.13, 1.38, 20.65), 'S.3': (10.63, 9.13, 1.38, 20.65), 'S.O2': (10.63, 9.13, 1.38, 20.65)})[source]
Equilibrate the atomic charges.
- Parameters:
- Returns:
revised list of atoms
- Return type:
hydrogens.ligand.topology
Ligand topology classes.
- class pdb2pqr.ligand.topology.Topology(molecule)[source]
Ligand topology class.
- __init__(molecule)[source]
Initialize with molecule.
- Parameters:
molecule (Mol2Molecule) – Mol2Molecule object