schrodinger.application.matsci.sculptcomplex module

Utilities for sculpt complex.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.matsci.sculptcomplex.SiteAtom(entry_id, element, entry_index, ws_index)

Bases: tuple

element

Alias for field number 1

entry_id

Alias for field number 0

entry_index

Alias for field number 2

ws_index

Alias for field number 3

exception schrodinger.application.matsci.sculptcomplex.SculptingError

Bases: Exception

class schrodinger.application.matsci.sculptcomplex.CoordinationInfo

Bases: object

Holds and yields information about atoms and groups that coordinate at specific sites

__init__()

Create a CoordinationInfo object

addSite(site)

Add information about the next site. Information should be added in the order of the sites i.e. add information about site 1 first, then site 2…

Parameters:

site (SiteAtom or str) – For sites occupied by ligand atoms, pass in the SiteAtom for the ligand atom. For sites occupied by capping groups, pass in the str name of the capping group.

ligandSites()

A generator over all the sites attached to the ligand

Return type:

(int, SiteAtom)

Returns:

Iterates over pairs of index number (zero-based) and the SiteAtom object associated with that site

cappedSites()

A generator over all the sites capped by capping groups

Return type:

(int, str)

Returns:

Iterates over pairs of index number (zero-based) and the name of the capping group. The name will be a key to the FRAG_DICT dictionary

allGroupsAreCapping()

Check if all sites are capped (i.e. there are no ligand attachments)

Return type:

bool

Returns:

True if all sites are capped

schrodinger.application.matsci.sculptcomplex.validate_coord_flag(coordinators)

Validate that the -coord flag argument is correct and parse its information

Parameters:

coordinators (str) – The command line argument for the -coord flag

Return type:

(CoordinationInfo, list[str])

Returns:

The CoordinationInfo object with the command line information and strings of corresponding VSEPR geometries. The strings will be from the buildcomplex geometry constants (OCTAHEDRAL, etc.)

Raises:

argparse.ArgumentTypeError – If something is wrong with the input

class schrodinger.application.matsci.sculptcomplex.Sculptor(element, coordination_info, geometry, del_h, title, enumerating)

Bases: object

Does the work of sculpting a ligand around a metal atom and capping open valences with small capping groups.

__init__(element, coordination_info, geometry, del_h, title, enumerating)
Parameters:
  • element (str) – The atomic symbol of the central atom

  • coordination_info (CoordinationInfo) – The CoordinationInfo that gives the information about each coordination site

  • geometry (str) – One of the VSEPR string constants from schrodinger.application.matsci.buildcomplex (OCTAHEDRAL, etc.)

  • del_h (bool) – Whether to delete H atoms at the ligand coordination sites

  • title (str) – The base title for structures created by this Sculptor.

  • enumerating (bool) – True if enumerating multiple ligand structures

sculpt(ligstruct, optimize=True, sign_by_idx=None)

Create a sculpted complex from the given ligand structure

Parameters:
  • ligstruct (schrodinger.structure.Structure) – The structure of the ligand

  • 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:

SculptingError – Too many metal-to-ligand bonds

Return type:

schrodinger.structure.Structure

Returns:

The structure of the complex

getLigandStructure(struct, sign_by_idx=None)

Fix up struct to prepare it for binding in the complex

Parameters:
  • struct (schrodinger.structure.Structure) – The raw structure of the ligand

  • 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

Return type:

list

Returns:

The fixed up struct. A list is returned to maintain API compatibitily with code that was implemented for self.getLigandsFromMultiStructures. Left this way in case we implement multiple ligand entries in the future.

coordinatingAtoms(struct)

A generator over all the atoms in the structure that bind or will bind to the metal

Parameters:

struct (schrodinger.structure.Structure) – The structure containing the atoms. Can be either a ligand or the full complex.

Return type:

schrodinger.structure._StructureAtom, int

Returns:

An atom that binds/will bind to the metal and the coordination site it occupies/will occupy

fixLocations()

Reorder the ideal locations list to correspond to the reordered coordination sites in the siteselectors.

Return type:

list

Returns:

The list of ideal coordination sitess reordered the to same order as shown in the GUI site selection diagrams. Each item of the list is an XYZ tuple giving the coordination site if the metal is at (0, 0, 0)

alignLigands()

Align the ligands to good binding location, ensuring that the coordinating atoms are near (as possible) to the coordination sites and that the ligand is flipped to a reasonable orientation

createBasicStructure()

Create the basic structure of the complex - metal atom plus ligands without the ligands actually bound to the metal and without optimizing their positions

Return type:

schrodinger.structure.Structure

Returns:

The basic complex structure

addCappingLigands()

Add capping groups to the requested positions

bondLigandsToMetal()

Bond the ligands to the metal atom

addIdealAnchors()

Add dummy atoms at each of the ideal coordination locations

minimizeIdealComplex(ligname)

Minimize the complex using the passed in minimizer

Parameters:

ligname (str) – The title of the ligand structure

Return type:

schrodinger.structutils.minimize.Minimzer

Returns:

The minimizer with structure and restraints set

deleteAnchors()

Delete the dummy atoms that mark the ideal coordination sites