Package schrodinger :: Package application :: Package matsci :: Module buildcomplex :: Class Ligand
[hide private]
[frames] | no frames]

Class Ligand

object --+
         |
        Ligand

Stores information about a ligand structure

Instance Methods [hide private]
 
__init__(self, struct, sites=None, slots=None)
Create a Ligand object
 
minimizeEtaPosition(self)
For bidentate eta ligands, orient the eta plane(s) to be face-on to roughly where the metal atom will be
tuple
_findDativeSite(self, site)
Normally, we'd put the X-Metal bond on the same vector as the X-Y bond vector, where Y is the atom that is being removed.
 
_addPhantomMarkerAtom(self, partner_xyz, vector, other_site=None)
Add an atom at the predetermined marker site.
tuple
_findEtaSite(self, site, other_site=None)
Determine the vector from the centroid of the eta-coordinating atoms to the metal atom.
numpy.array
_stupidlyGuessEtaNormal(self, xatom, eta_atoms)
Fallback attempt at finding the eta binding direction if we can't fit a plane to the eta-coordinating atoms.

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, struct, sites=None, slots=None)
(Constructor)

 

Create a Ligand object

Parameters:
  • struct (schrodinger.structure.Structure) - The ligand structure
  • sites (list of tuple) - Each item of the list is a (X, Y) tuple. X is the index of the atom that will attach to the central metal atom in the complex, and Y is the index of the atom that should be removed to make the attachment. The X-Metal bond will be made along the X-Y bond vector. If Y is 0, the bond will be assumed to be a dative bond, and the X-Metal bond will be formed along an angle that is chosen to minimize sterics. If X is negative, the site is an eta-coordination site.
  • slots (list of int) - The coordination slots this ligand will occupy. The coordination slot is the index into the GEOMETRY_LOCATIONS array that specifies the xyz coordinates for this ligand coordination. If not supplied, the slots will be supplied based on the isomer of the complex.
Overrides: object.__init__

_findDativeSite(self, site)

 

Normally, we'd put the X-Metal bond on the same vector as the X-Y bond vector, where Y is the atom that is being removed. However, for a dative X-Metal bond, there is no atom to remove and therefore, there is no predefined bond vector for the X-Metal bond. Find the best vector and place an atom there for removal later.

Parameters:
  • site (tuple) - (X, Y) tuple indicating the index of atom X, which will be bonded to the metal atom. Y is ignored.
Returns: tuple
(X, Y) tuple, where Y is a new atom added on the vector that the X-Metal bond should be made.

_addPhantomMarkerAtom(self, partner_xyz, vector, other_site=None)

 

Add an atom at the predetermined marker site. This atom represents where the metal atom should be placed relative to the ligand.

Parameters:
  • partner_xyz (list) - The x, y, z coordinates of the atom this phantom atom will be attached to
  • vector (list) - The x, y, z displacement from partner_xyz to place the phantom atom at. See also other_site.
  • other_site (tuple) - An (X, Y) tuple of atom indexes for the other binding site in a bidentate ligand. The X atom index is used to choose the vector direction (either + or - the vector displacement) that puts this phantom atom closer to the other site. Used for eta-coordination. The Y index is ignored and may be None

_findEtaSite(self, site, other_site=None)

 

Determine the vector from the centroid of the eta-coordinating atoms to the metal atom. Mark this vector in the structure with a new atom positioned where we determine the metal atom should be.

Parameters:
  • site (tuple) - (X, Y) tuple indicating the index of atom X, which is the centroid of the eta-coordinating atoms. Y is ignored.
  • other_site (tuple) - An (X, Y) tuple of atom indexes for the other binding site in a bidentate ligand. The X atom index is used to choose the vector direction (either + or - the vector displacement) that puts this sitecloser to the other site. The Y index is ignored and may be None.
Returns: tuple
(X, Y) tuple, where Y is a new atom added on the vector that the X-Metal bond should be made.

_stupidlyGuessEtaNormal(self, xatom, eta_atoms)

 

Fallback attempt at finding the eta binding direction if we can't fit a plane to the eta-coordinating atoms. We simply pick a binding direction that forms a 90 degree A-X-Y angle, where Y is the atom we are adding to define this direction, X is the eta atom centroid marker and A in an arbitrarily chosen eta atom (the first one in the list of atoms bonded to X).

Since by far and away the most likely failure to fit a plane is due to all eta atoms being arranged in a line, this stupid guess is fine.

Parameters:
  • xatom (schrodinger.structure._StructureAtom) - The atom that marks the centroid of the eta atoms
  • eta_atoms (list) - The eta-coordinating atoms. Each item is a _StructureAtom instance.
Returns: numpy.array
The vector that gives the direction of the eta binding direction