schrodinger.application.matsci.buildcomplex module¶
This module assists in building organometallic complexes. Given one or more ligands, these ligands will be arranged around a central atom.
Copyright Schrodinger, LLC. All rights reserved.
-
schrodinger.application.matsci.buildcomplex.
MONODENTATE
= 'Monodentate'¶ Name for ligands that have a single coordination site
-
schrodinger.application.matsci.buildcomplex.
BIDENTATE
= 'Bidentate'¶ Name for ligands that have two coordination sites
-
schrodinger.application.matsci.buildcomplex.
OCTAHEDRAL
= 'Octahedral'¶ VESPR geometry with 6 coordination sites around a central atom
-
schrodinger.application.matsci.buildcomplex.
TRIGONAL_BIPYRAMIDAL
= 'Trigonal bipyramidal'¶ VESPR geometry with 5 coordination sites around a central atom
-
schrodinger.application.matsci.buildcomplex.
TETRAHEDRAL
= 'Tetrahedral'¶ VESPR geometry with 4 coordination sites around a central atom
-
schrodinger.application.matsci.buildcomplex.
SQUARE_PLANAR
= 'Square planar'¶ VESPR geometry with 4 coordination sites around a central atom
-
schrodinger.application.matsci.buildcomplex.
TRIGONAL_PLANAR
= 'Trigonal planar'¶ VESPR geometry with 3 coordination sites around a central atom
-
schrodinger.application.matsci.buildcomplex.
LINEAR
= 'Linear'¶ VESPR geometry with 2 coordination sites around a central atom
-
schrodinger.application.matsci.buildcomplex.
SUPPORTED_GEOMETRIES
= ['Octahedral', 'Trigonal bipyramidal', 'Tetrahedral', 'Square planar', 'Trigonal planar', 'Linear']¶ VESPR geometries that can be build by this module
-
schrodinger.application.matsci.buildcomplex.
FACIAL
= 'facial'¶ Octahedral complex with identical atoms on the face of the octahedron
-
schrodinger.application.matsci.buildcomplex.
MERIDIONAL
= 'meridional'¶ Octahedral complex with identical atoms on the meridion of the octahedron
-
schrodinger.application.matsci.buildcomplex.
NO_ISOMER
= 'none'¶ No specific isomer
-
schrodinger.application.matsci.buildcomplex.
CIS
= 'cis'¶ Square planar complex with identical atoms in adjacent sites
-
schrodinger.application.matsci.buildcomplex.
TRANS
= 'trans'¶ Square planar complex with identical atoms in opposite sites
-
schrodinger.application.matsci.buildcomplex.
OCTAHEDRAL_LOCATIONS
= [(2.0, 0.0, 0.0), (0.0, 2.0, 0.0), (0.0, 0.0, 2.0), (0.0, -2.0, 0.0), (-2.0, 0.0, 0.0), (0.0, 0.0, -2.0)]¶ XYZ coordinates of the octahedral coordination sites
-
schrodinger.application.matsci.buildcomplex.
TRIGONAL_BIPYRAMIDAL_LOCATIONS
= [(0.0, 2.0, 0.0), (0.0, -2.0, 0.0), (2.0, 0.0, 0.0), (-1.0, 0.0, 1.73205), (-1.0, 0.0, -1.73205)]¶ XYZ coordinates of the trigonal pyramid coordination sites
-
schrodinger.application.matsci.buildcomplex.
SQUARE_PLANAR_LOCATIONS
= [(2.0, 0.0, 0.0), (0.0, 2.0, 0.0), (0.0, -2.0, 0.0), (-2.0, 0.0, 0.0)]¶ XYZ coordinates of the square planar coordination sites
-
schrodinger.application.matsci.buildcomplex.
TETRAHEDRAL_LOCATIONS
= [(0.0, 2.0, 0.0), (1.88562, -0.66667, 0.0), (-0.94281, -0.66667, -1.63299), (-0.94281, -0.66667, 1.63299)]¶ XYZ coordinates of the tetrahedral coordination sites
-
schrodinger.application.matsci.buildcomplex.
TRIGONAL_PLANAR_LOCATIONS
= [(2.0, 0.0, 0.0), (-1.0, 1.73205, 0.0), (-1.0, -1.73205, 0.0)]¶ XYZ coordinates of the trigonal planar coordination sites
-
schrodinger.application.matsci.buildcomplex.
LINEAR_LOCATIONS
= [(2.0, 0.0, 0.0), (-2.0, 0.0, 0.0)]¶ XYZ coordinates of the linear coordination sites
-
schrodinger.application.matsci.buildcomplex.
minimize_complex
(struct, forcefield=14, **kwargs)¶ Minimize the given structure using the new MMFFLD method of determining parameters for metal complexes.
Additional keyword arguments are passed to the Minimizer class constructor
Parameters: - struct (
schrodinger.structure.Structure
) – The structure to minimize - ffld_version (integer) – The force field to use. Should be a module constant from the minimize module.
Raises: - ValueError – Typically means atom typing error or valence violations
- mm.MmException – Due to overlapping atoms
- struct (
-
schrodinger.application.matsci.buildcomplex.
fix_metal_bond_orders
(struct, index)¶ Fix all the bonds to atom index to be either single or dative depending on whether the other atom has a full valence without this bond or not. Full valence without this bond = dative bond, otherwise bond order = number of open valences. Formal charges are also set to 0 for the metal atom and bonded neighbors.
Note - no bonds are added or removed by this function, only bond orders are changed.
Parameters: - struct (
schrodinger.structure.Structure
) – The structure to operate on - bonds are modified on this structure directly, not a copy - index (int) – The atom index of the metal atom with bonds to adjust
- struct (
-
schrodinger.application.matsci.buildcomplex.
transmute_atom
(atom, element, color=None)¶ Transmute atom from its current element to a new element. The new name will be element + index (ex. H17), and the new color if not supplied will be the Maestro default (or purple if no Maestro default).
Parameters: - atom (
schrodinger.structure._StructureAtom
) – The atom object to transmute to a new element - element (str) – The atomic symbol of the new element
- color (str) – The new color of the atom in a format accepted by the _StructAtom.color property. The default is to use Maestro’s default color for the new element, or purple if the default color is not defined.
Raises: ValueError – if element is not a recognized atomic symbol
- atom (
-
schrodinger.application.matsci.buildcomplex.
find_atoms_to_remove
(struct, keep_atom, root_atom)¶ Return a list of atoms bound to root atom (and recursively all atoms bound to those atoms, ad infinitum). keep_atom and all atoms recursively bound to it will not be added to the list.
If keep_atom and root_atom are part of the same ring system, root_atom will be the only atom returned in the list.
For structure A-B-C-D-E, if keep_atom=B and root_atom=C, the returned list will be [C, D, E].
Parameters: - struct (schrodinger.structure.Structure) – The structure to use
- keep_atom (int) – The index of the atom to keep
- root_atom (int) – The index of the first atom to remove. All neighbors of this atom that are not keep_atom will be added to the list.
Return type: list
Returns: A list of all atoms recursively bound to root atom. keep_atom and all atoms bound to it are excluded from the list.
-
class
schrodinger.application.matsci.buildcomplex.
Ligand
(struct, sites=None, slots=None)¶ Bases:
object
Stores information about a ligand structure
-
__init__
(struct, sites=None, slots=None)¶ 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.
- struct (
-
__class__
¶ alias of
builtins.type
-
__delattr__
¶ Implement delattr(self, name).
-
__dict__
= mappingproxy({'__module__': 'schrodinger.application.matsci.buildcomplex', '__doc__': '\n Stores information about a ligand structure\n ', '__init__': <function Ligand.__init__>, 'minimizeEtaPosition': <function Ligand.minimizeEtaPosition>, '_findDativeSite': <function Ligand._findDativeSite>, '_addPhantomMarkerAtom': <function Ligand._addPhantomMarkerAtom>, '_findEtaSite': <function Ligand._findEtaSite>, '_stupidlyGuessEtaNormal': <function Ligand._stupidlyGuessEtaNormal>, '__dict__': <attribute '__dict__' of 'Ligand' objects>, '__weakref__': <attribute '__weakref__' of 'Ligand' objects>})¶
-
__dir__
() → list¶ default dir() implementation
-
__eq__
¶ Return self==value.
-
__format__
()¶ default object formatter
-
__ge__
¶ Return self>=value.
-
__getattribute__
¶ Return getattr(self, name).
-
__gt__
¶ Return self>value.
-
__hash__
¶ Return hash(self).
-
__init_subclass__
()¶ This method is called when a class is subclassed.
The default implementation does nothing. It may be overridden to extend subclasses.
-
__le__
¶ Return self<=value.
-
__lt__
¶ Return self<value.
-
__module__
= 'schrodinger.application.matsci.buildcomplex'¶
-
__ne__
¶ Return self!=value.
-
__new__
()¶ Create and return a new object. See help(type) for accurate signature.
-
__reduce__
()¶ helper for pickle
-
__reduce_ex__
()¶ helper for pickle
-
__repr__
¶ Return repr(self).
-
__setattr__
¶ Implement setattr(self, name, value).
-
__sizeof__
() → int¶ size of object in memory, in bytes
-
__str__
¶ Return str(self).
-
__subclasshook__
()¶ Abstract classes can override this to customize issubclass().
This is invoked early on by abc.ABCMeta.__subclasscheck__(). It should return True, False or NotImplemented. If it returns NotImplemented, the normal algorithm is used. Otherwise, it overrides the normal algorithm (and the outcome is cached).
-
__weakref__
¶ list of weak references to the object (if defined)
-
minimizeEtaPosition
()¶ For bidentate eta ligands, orient the eta plane(s) to be face-on to roughly where the metal atom will be
-
-
class
schrodinger.application.matsci.buildcomplex.
ComplexBuilder
(metal='Ir', geometry='Octahedral', isomer='facial', homoleptic=True, dentation='Bidentate')¶ Bases:
object
A class used to build an organometallic complex
-
__class__
¶ alias of
builtins.type
-
__delattr__
¶ Implement delattr(self, name).
-
__dict__
= mappingproxy({'__module__': 'schrodinger.application.matsci.buildcomplex', '__doc__': '\n A class used to build an organometallic complex\n ', '__init__': <function ComplexBuilder.__init__>, 'resetSlots': <function ComplexBuilder.resetSlots>, 'setSlotOrder': <function ComplexBuilder.setSlotOrder>, 'getNumUsedCoordSites': <function ComplexBuilder.getNumUsedCoordSites>, 'addMonodentateLigand': <function ComplexBuilder.addMonodentateLigand>, 'addBidentateLigand': <function ComplexBuilder.addBidentateLigand>, '_addLigand': <function ComplexBuilder._addLigand>, 'clearLigands': <function ComplexBuilder.clearLigands>, 'createComplex': <function ComplexBuilder.createComplex>, '_getNextSlot': <function ComplexBuilder._getNextSlot>, '_attachLigand': <function ComplexBuilder._attachLigand>, '__dict__': <attribute '__dict__' of 'ComplexBuilder' objects>, '__weakref__': <attribute '__weakref__' of 'ComplexBuilder' objects>})¶
-
__dir__
() → list¶ default dir() implementation
-
__eq__
¶ Return self==value.
-
__format__
()¶ default object formatter
-
__ge__
¶ Return self>=value.
-
__getattribute__
¶ Return getattr(self, name).
-
__gt__
¶ Return self>value.
-
__hash__
¶ Return hash(self).
-
__init_subclass__
()¶ This method is called when a class is subclassed.
The default implementation does nothing. It may be overridden to extend subclasses.
-
__le__
¶ Return self<=value.
-
__lt__
¶ Return self<value.
-
__module__
= 'schrodinger.application.matsci.buildcomplex'¶
-
__ne__
¶ Return self!=value.
-
__new__
()¶ Create and return a new object. See help(type) for accurate signature.
-
__reduce__
()¶ helper for pickle
-
__reduce_ex__
()¶ helper for pickle
-
__repr__
¶ Return repr(self).
-
__setattr__
¶ Implement setattr(self, name, value).
-
__sizeof__
() → int¶ size of object in memory, in bytes
-
__str__
¶ Return str(self).
-
__subclasshook__
()¶ Abstract classes can override this to customize issubclass().
This is invoked early on by abc.ABCMeta.__subclasscheck__(). It should return True, False or NotImplemented. If it returns NotImplemented, the normal algorithm is used. Otherwise, it overrides the normal algorithm (and the outcome is cached).
-
__weakref__
¶ list of weak references to the object (if defined)
-
__init__
(metal='Ir', geometry='Octahedral', isomer='facial', homoleptic=True, dentation='Bidentate')¶ Create a ComplexBuilder instance
Parameters: - metal (str) – The atomic symbol of the central atom
- geometry (str) – VESPR geometry of the complex. Should be a module constant: OCTAHEDRAL, TETRAHEDRAL, SQUARE_PLANAR
- isomer (str or None) – For octahedral complexes, can be module constants FACIAL, MERIDIONAL, or NO_ISOMER. For square planar complexes, can be module constants CIS, TRANS or NO_ISOMER. It is ignored for tetrahedral. None may be used instead of NO_ISOMER.
- homoleptic (bool) – If True, the complex is homoleptic and only one ligand should be supplied. If False, the complex is heteroleptic and every ligand must be supplied. Homoleptic = all ligands are identical, heteroleptic = ligands may or may not be identical.
- dentation (int) – Module-level constant describing the dentation type of the ligand - either MONODENTATE or BIDENTATE. Only used to determine the coordination slot order (the order coordination sites are filled) for isomers.
-
resetSlots
(dentation='Bidentate')¶ Reset the slot order back to ideal slot order
Parameters: dentation (int) – Module-level constant describing the dentation type of the ligand - either MONODENTATE or BIDENTATE
-
setSlotOrder
(slot_order)¶ Set the order that coordination sites should be used. This should be a list of indexes into the slot_order property. Ligands will be attached at these coordination sites in the order they are added.
Parameters: slot_order (list of int) – List of indexes that specifies the order of coordination sites to use.
Raises: - IndexError – If the list is not the correct length (6 for octahedral, 4 for tetrahedral/square_planar). An example for square_planar might be [0, 2, 1, 3].
- ValueError – If the list contains duplicated indexes or indexes outside the allow range of 0 to len(list)-1
-
getNumUsedCoordSites
()¶ Get the current number of coordination sites required for all copies of all ligands set so far.
Return type: int Returns: The total number of sites required for all currently set ligands. Accounts for the number of copies requested and mono/bi-dentation of each ligand.
-
addMonodentateLigand
(struct, site, slot=None, copies=1)¶ Add a monodentate ligand for the complex.
Parameters: - struct (
schrodinger.structure.Structure
) – The structure of the ligand - site (tuple) – An (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.
- slot (int) – The coordination slot this ligand will occupy. The coordination slot is the index into the GEOMETRY_LOCATIONS array that specifies the xyz coordinates for this ligand coordination.
- copies (int) – The number of copies of this ligand. It is a ValueError to specify slot & copies > 1.
- struct (
-
addBidentateLigand
(struct, sites, slots=None, copies=1)¶ Add a bidentate ligand for the complex.
Parameters: - struct (
schrodinger.structure.Structure
) – The structure of the ligand - 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.
- copies (int) – The number of copies of this ligand. It is a ValueError to specify slot & copies > 1.
- struct (
-
clearLigands
()¶ Remove all added ligands
-
createComplex
(force=False)¶ Create the complex based on the defined ligands
Parameters: force (bool) – If true, create a complex even if all slots are not filled. If False (default), raise IndexError if all slots are not filled.
Raises: - IndexError – If not all sites are filled and force is not True
- IndexError – Too many ligands specified for available sites
-