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)[source]

Bases: object

Context manager to temporarily convert dummy atoms to hydrogens.

__init__(st)[source]
class schrodinger.application.matsci.buildcomplex2d.RemoveMetalBonds(st)[source]

Bases: object

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

__init__(st)[source]
exception schrodinger.application.matsci.buildcomplex2d.ComplexSdfToMaeException[source]

Bases: Exception

__init__(*args, **kwargs)
args
with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

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

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)[source]

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)[source]

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()[source]

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()[source]

Prepare the structure.

addHydrogens(st)[source]

Add hydrogens to the given structure.

Parameters

st (schrodinger.structure.Structure) – the structure

build()[source]

Build the complex.

Raises

ComplexSdfToMaeException – if there is an issue

Return type

schrodinger.structure.Structure

Returns

the complex

fixRingSpears(st)[source]

Fix ring-spears.

Parameters

st (schrodinger.structure.Structure) – the structure

updateProperties(st)[source]

Update properties on the given structure.

Parameters

st (schrodinger.structure.Structure) – the structure

run()[source]

Run.

Return type

schrodinger.structure.Structure

Returns

the structure

write(mae_file=None)[source]

Write.

Parameters

mae_file (str) – the 3D *mae file

Return type

str

Returns

the 3D *mae file

sculptComplexBuild(sites=None, geometry=None, optimize=True)[source]

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

Raises

ComplexSdfToMaeException – if there is an issue

Return type

schrodinger.structure.Structure

Returns

the complex

buildComplexBuild()[source]

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)[source]

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)[source]

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

get3DIsomers(geometry=None, out_rep=None)[source]

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

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)[source]

Bases: schrodinger.application.matsci.buildcomplex2d.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)[source]

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)[source]

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)[source]

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)[source]

Update properties on the given structure.

Parameters

st (schrodinger.structure.Structure) – the structure

buildBestRotamer(nov_st)[source]

Build the best rotamer:

Parameters

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

Raises

ComplexSdfToMaeException – if there is an issue

run()[source]

Run.

Return type

schrodinger.structure.Structure

Returns

the structure

write(rxnwf_file=None)[source]

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]

BIND_PROP = 'b_user_metal_neighbor'
DUMMY_ATOMIC_NUMBER = -2
HAPTIC_ATOM_PROP = 'b_user_haptic_atom'
SD_PROP_PATTERN = re.compile('><(.*)>')
SD_PROP_STARTER = 's_sd_'
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

buildComplexBuild()

Build the complex using build 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

get3DIsomers(geometry=None, out_rep=None)

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

Raises

ComplexSdfToMaeException – if there is an issue

Return type

list[schrodinger.structure.Structure]

Returns

contains 3D isomers

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

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.

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

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

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

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

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

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, logger=None)[source]

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

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

Return type

list[schrodinger.structure.Structure]

Returns

contains 3D isomers