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 (
-
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
-
__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
-