schrodinger.application.matsci.buildcomplex2d module

Utilities for the 2D-to-3D *sdf to *mae file conversion for a metal complex.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.matsci.buildcomplex2d.DummiesToHydrogens(st)

Bases: object

Context manager to temporarily convert dummy atoms to hydrogens.

__init__(st)
class schrodinger.application.matsci.buildcomplex2d.RemoveMetalBonds(st)

Bases: object

Context manager to temporarily remove bonds to the metal atom in a complex.

__init__(st)
exception schrodinger.application.matsci.buildcomplex2d.ComplexSdfToMaeException

Bases: Exception

class schrodinger.application.matsci.buildcomplex2d.ComplexSdfToMae(sdf_file, logger=None)

Bases: object

Manage the 2D-to-3D *sdf to *mae file conversion for a metal complex.

SD_PROP_PATTERN = re.compile('><(.*)>')
SD_PROP_STARTER = 's_sd_'
DUMMY_ATOMIC_NUMBER = -2
BIND_PROP = 'b_user_metal_neighbor'
HAPTIC_ATOM_PROP = 'b_user_haptic_atom'
__init__(sdf_file, logger=None)

Create an instance.

Parameters:
  • sdf_file (str) – the 2D *sdf file

  • logger (logging.Logger or None) – output logger or None if there isn’t one

static read_sdf(sdf_file)

Wrapper to read an *sdf file.

Parameters:

sdf_file (str) – the *sdf file

Raises:

ComplexSdfToMaeException – if there is an issue

Return type:

schrodinger.structure.Structure

Returns:

the structure

getCenterIdx()

Return the atom index that serves as the complex center, typically a metal atom.

Raises:

ComplexSdfToMaeException – if there is an issue

Return type:

int

Returns:

the atom index that serves as the complex center

prepare()

Prepare the structure.

addHydrogens(st)

Add hydrogens to the given structure.

Parameters:

st (schrodinger.structure.Structure) – the structure

build()

Build the complex.

Raises:

ComplexSdfToMaeException – if there is an issue

Return type:

schrodinger.structure.Structure

Returns:

the complex

fixRingSpears(st)

Fix ring-spears.

Parameters:

st (schrodinger.structure.Structure) – the structure

updateProperties(st)

Update properties on the given structure.

Parameters:

st (schrodinger.structure.Structure) – the structure

run()

Run.

Return type:

schrodinger.structure.Structure

Returns:

the structure

write(mae_file=None)

Write.

Parameters:

mae_file (str) – the 3D *mae file

Return type:

str

Returns:

the 3D *mae file

sculptComplexBuild(sites=None, geometry=None, optimize=True, sign_by_idx=None)

Build the complex using sculpt complex.

Parameters:
  • sites (list or None) – contains atom index pair tuples, the first index is for the atom that binds to the metal and is negated for eta-coordinated ligands, the second index is for the atom that represents the metal positioning relative to the ligand and is 0 for eta-coordinated ligands, the order of sites in this list determines the coordination geometry of the complex, if None an arbitrarily ordered list of sites will be determined from the structure

  • geometry (str or None) – the VSEPR geometry from the buildcomplex geometry constants, if None uses the sculpt complex convention of using the last geometry for a given number of slots coming from the order in buildcomplex.IDEAL_SLOTS

  • optimize (bool) – whether to perform a standard geometry optimization on the final sculpted complex

  • sign_by_idx (dict or None) – keys are atom indices on the given structure, values are either 1 or -1, use this option to distinguish between which side of a flat group of coordinating atoms in a ligand is to bind to the metal, could be an eta- or non-eta ligand, if not given some arbitrary choice is made

Raises:

ComplexSdfToMaeException – if there is an issue

Return type:

schrodinger.structure.Structure

Returns:

the complex

buildComplexBuild()

Build the complex using build complex.

Raises:

ComplexSdfToMaeException – if there is an issue

Return type:

schrodinger.structure.Structure

Returns:

the complex

static type_cast_sdf_file(sdf_file)

Type cast the 2D *sdf file.

Parameters:

sdf_file (str) – the 2D *sdf file

Raises:

argparse.ArgumentTypeError – is there is an issue

Return type:

str

Returns:

the 2D *sdf file

getAvailableGeometries(geometry=None)

Return the available geometries.

Parameters:

geometry (str or None) – the specific coordination geometry to use, if not specified all available geometries will be considered

Raises:

ComplexSdfToMaeException – if there is an issue

Return type:

list[str]

Returns:

contains available geometries

getFlippableIdxs(sites)

Return a list of atom indices for sites whose coordination is flippable.

Parameters:

sites (list) – contains atom index pair tuples, the first index is for the atom that binds to the metal and is negated for eta-coordinated ligands, the second index is for the atom that represents the metal positioning relative to the ligand and is 0 for eta-coordinated ligands

Return type:

list[int]

Returns:

atom indices for sites whose coordination is flippable, used to distinguish between which side of a flat group of coordinating atoms in a ligand is to bind to the metal, could be an eta- or non-eta ligand

cleanPostSculpt(f3d_engine, st)

Clean up the structure after sculpting.

Parameters:
getRepresentatives(sts_by_smiles, epsilon=2)

Return representative structures from those given.

Parameters:
  • sts_by_smiles (dict[str]=list[schrodinger.structure.Structure]) – keys are SMILES, values are lists of structures

  • epsilon (float) – the energy window in kcal/mol for binning isomers

Return type:

list[schrodinger.structure.Structure]

Returns:

the representative structures

get3DIsomers(geometry=None, out_rep=None, epsilon=2)

Return 3D isomers.

Parameters:
  • geometry (str or None) – the specific coordination geometry to use, if not specified all available geometries will be considered

  • out_rep (str or None) – if None then the conversion is to the opposite of the given representation, eta to centroid or centroid to eta, if a string then must be either module constant parserutils.CENTROID or parserutils.ETA in which case the conversion will always provide an output representation of the given type

  • epsilon (float) – the energy window in kcal/mol for binning isomers

Raises:

ComplexSdfToMaeException – if there is an issue

Return type:

list[schrodinger.structure.Structure]

Returns:

contains 3D isomers

class schrodinger.application.matsci.buildcomplex2d.ComplexSdfToRxnWF(sdf_file, reference_rxnwf_file=None, handle_rotamers=True, logger=None)

Bases: ComplexSdfToMae

Manage the 2D-to-3D *sdf to *_rxnwf_mae file conversion for a metal complex.

R_GROUP_SD_KEY_PATTERN = re.compile('R(\\d+)(.*)')
SITE_ATOM_KEY = 'i_matsci_Reaction_Workflow_Enumeration_Atom'
REPLACE_ATOM_SD_KEY = 'Replace Indices'
SUPERPOSITION_ATOM_SD_KEY = 'Superimpose Indices'
__init__(sdf_file, reference_rxnwf_file=None, handle_rotamers=True, logger=None)

Create an instance.

Parameters:
  • sdf_file (str) – the 2D *sdf file

  • reference_rxnwf_file (str) – the reaction workflow file containing the reference structures, used for finding an optimal 3D geometry

  • handle_rotamers (bool) – whether to rotate mono-dentate haptic ligands containing superposition atoms such that they maximally overlap with the reference reaction workflow

  • logger (logging.Logger or None) – output logger or None if there isn’t one

static parse_novel_sdf_file(sdf_file)

Parse the novel 2D *sdf file.

Parameters:

sdf_file (str) – the novel 2D *sdf file

Returns:

list, list, list, list

Returns:

(1) contains R-group file data as [R-group file, R-group index] pairs, (2) contains site data as [site “to” index, R-group index] pairs, (3) contains replace indicies, (4) contains superposition indices

static type_cast_novel_sdf_file(sdf_file)

Type cast the novel 2D *sdf file.

Parameters:

sdf_file (str) – the novel 2D *sdf file

Raises:

argparse.ArgumentTypeError – is there is an issue

Return type:

str

Returns:

the novel 2D *sdf file

updateProperties(st)

Update properties on the given structure.

Parameters:

st (schrodinger.structure.Structure) – the structure

buildBestRotamer(nov_st)

Build the best rotamer:

Parameters:

nov_st (schrodinger.structure.Structure) – the novel structure

Raises:

ComplexSdfToMaeException – if there is an issue

run()

Run.

Return type:

schrodinger.structure.Structure

Returns:

the structure

write(rxnwf_file=None)

Write.

Parameters:

rxnwf_file (str) – the 3D *_rxnwf.mae file

Return type:

str, list

Returns:

the 3D *_rxnwf.mae file, contains for each site a list of data [from_idx, to_idx, rgroup_idx]

schrodinger.application.matsci.buildcomplex2d.convert_sdf_to_rxnwf(sdf_file, reference_rxnwf_file, handle_rotamers=True, output_rxnwf_file_name=None, logger=None)

Convert the given single structure 2D *sdf file to a 3D *_rxnwf.mae file.

Parameters:
  • sdf_file (str) – the *sdf file

  • reference_rxnwf_file (str) – the reaction workflow file containing the reference structures, used for finding an optimal 3D geometry

  • handle_rotamers (bool) – whether to rotate mono-dentate haptic ligands containing superposition atoms such that they maximally overlap with the reference reaction workflow

  • output_rxnwf_file_name (str) – the output reaction workflow file name

  • logger (logging.Logger or None) – output logger or None if there isn’t one

Return type:

str, list, list

Returns:

(1) the 3D *_rxnwf.mae file, (2) contains R-group file data as [R-group file, R-group index] pairs, (3) contains for each site a list of data [from_idx, to_idx, rgroup_idx]

schrodinger.application.matsci.buildcomplex2d.get_3d_isomers(sdf_file, geometry=None, out_rep=None, epsilon=2, logger=None)

Return 3D isomers for the given 2D *sdf file of a transition metal complex.

Parameters:
  • sdf_file (str) – the *sdf file

  • geometry (str or None) – the specific coordination geometry to use, if not specified all available geometries will be considered

  • out_rep (str or None) – if None then the conversion is to the opposite of the given representation, eta to centroid or centroid to eta, if a string then must be either module constant parserutils.CENTROID or parserutils.ETA in which case the conversion will always provide an output representation of the given type

  • epsilon (float) – the energy window in kcal/mol for binning isomers

  • logger (logging.Logger or None) – output logger or None if there isn’t one

Return type:

list[schrodinger.structure.Structure]

Returns:

contains 3D isomers