Package schrodinger :: Package structutils :: Module assignbondorders
[hide private]
[frames] | no frames]

Module assignbondorders


A module to assign bond orders based on molecular geometry.

Assigns double and triple bonds to structures based on molecular geometry
(bond length, bond angles, and dihedral angles). Useful when importing
ligands from PDBs into Maestro.   Please check the output structure for
errors and compare it to the molecular formula. If this script assigns
bond orders incorrectly to a reasonable structure, please email the
maestro file of the structure to help@schrodinger.com.

Functions:

There is a single public function:

    assignbondorders.assign_st(input_st, atoms=[], neutralize=False)
        Assigns bond orders to atom list [atoms] of structure input_st and
        returns a new structure object. Bond orders are assigned for
        all atoms all atoms, if the atoms list is empty.

Copyright (c) Schrodinger, LLC. All rights reserved.

Classes [hide private]
  AssignBondOrders
Functions [hide private]
 
debug(txt)
For general debug messages
 
debuggroup(msg)
For debugging group bond assignments
 
debugbonders(msg)
For debugging aromatic ring assignments
 
debugbond(msg)
For debugging code that calculates bond "scores"
 
warning(msg)
 
get_single_bond_length(a1, a2)
Returns ideal length of a single-order bond between specified atoms.
 
get_neighbors(st, atom)
Returns a list of atoms that <atom> is bound to.
 
calculate_average_angle(st, atom_num)
Calculates the average of all bond angles around the input atom.
 
calculate_dihedral(st, a1, a2)
Calculates the average dihedral angle of the bond between the specified atoms.
 
order_ring_or_chain(st, atoms)
This function orders the atoms in the ring or chain by bonding order.
 
do_rings_share_atoms(r1, r2)
 
get_rings_in_group(ring, rings_to_check)
 
_residue_atom_subset(res, atoms)
Return atoms of the residue residue which are also in the specified <atoms> list.
 
assign_st(st, atoms=None, neutralize=False, problem_only=False, skip_assigned_residues=True)
Performes the fix-bond-order algorithm on the supplied st.
 
_genBondsDict(st, atoms)
Generates the state dictionary for the specified st.
 
orders_assigned(st, atoms=None, all=False)
Returns True if all bond orders are OK in the specified structure.
Variables [hide private]
  DEBUG = log.get_environ_log_level() <= log.DEBUG
  logger = log.get_output_logger("schrodinger.structutils.assign...
  DEBUG_AROMATIC = True
hash(x)
  DEBUG_BOND_SCORE = True
hash(x)
  DEBUG_GROUP = True
hash(x)
  DOUBLE_BOND_THRESHOLD = 5.0
  MAX_VALENCE = [0, 1, 1, 1, 2, 6, 4, 4, 2, 1, 1, 1, 2, 8, 8, 8,...
  ATOM_RADII_DICT = {1: 0.23, 5: 0.83, 6: 0.68, 7: 0.68, 8: 0.68...
Function Details [hide private]

get_single_bond_length(a1, a2)

 

Returns ideal length of a single-order bond between specified atoms. If either of the atoms is non-common, returns 0.0.

calculate_average_angle(st, atom_num)

 

Calculates the average of all bond angles around the input atom. Returns 0 if the angle can not be calculated. Close to 109 degrees = tertrahedral Close to 120 degrees = planar Close to 180 degrees = linear

calculate_dihedral(st, a1, a2)

 

Calculates the average dihedral angle of the bond between the specified atoms. Close to 0 (zero) is likely to be double bond.

_residue_atom_subset(res, atoms)

 

Return atoms of the residue residue which are also in the specified <atoms> list. Will return an empty list if this residue already has bond orders assigned.

assign_st(st, atoms=None, neutralize=False, problem_only=False, skip_assigned_residues=True)

 

Performes the fix-bond-order algorithm on the supplied st.
If the atom list is specified, only those atoms are fixed.
neutralize   - protonate carboxilic acids.
problem_only - assign only to atoms with PDB convert problem of 4
               (orange atoms). Not compatible with <atoms> argument.
skip_assigned_residues - If True, bond orders are not assigned to
                         residues that have double or triple bonds,
                         even if that residue's atoms are in <atoms>.
                         Not compatible with <problem_only> option.

FIXME: This needs to be implemented for Ev:92646:
Returns a list of (atom1, atom2, order) for every bond whose order was
altered.

orders_assigned(st, atoms=None, all=False)

 

Returns True if all bond orders are OK in the specified structure. Can be given a list of atoms to check bond orders of. If not list is specified and all flag is set to True, all atoms are checked; otherwise only atoms with a PDB convert error (appear orange in Maestro) are checked. NOTE: atoms and all options are mutually exclusinve.


Variables Details [hide private]

logger

Value:
log.get_output_logger("schrodinger.structutils.assignbondorders")

MAX_VALENCE

Value:
[0, 1, 1, 1, 2, 6, 4, 4, 2, 1, 1, 1, 2, 8, 8, 8, 8, 1, 1, 1, 2, 9, 9, \
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9\
, 9, 9, 9, 9, 9, 8, 1, 1, 1, 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,\
 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 1, 1, 9, 9, 9, 9, 9, 9, \
9, 9, 9, 9, 9, 9, 9, 9, 9, 9]

ATOM_RADII_DICT

Value:
{1: 0.23, 5: 0.83, 6: 0.68, 7: 0.68, 8: 0.68, 9: 0.64, 14: 1.20, 15: 1\
.05, 16: 1.02, 17: 0.99, 33: 1.21, 34: 1.22, 35: 1.21, 52: 1.47, 53: 1\
.40,}