schrodinger.infra.structure module

class schrodinger.infra.structure.AtomPairWithValue

schrodinger::structure_interaction::AtomPairWithValue

__init__(*args, **kwargs)
getAtom1(self) StructureAtom
getAtom2(self) StructureAtom
getValue(self) float
class schrodinger.infra.structure.AtomQueryParams

schrodinger::structure_interaction::AtomQueryParams

__init__(*args, **kwargs)
getAcceptorAtomicNumbers(self) SwigRingSet
getDonorAlphaAtomicNumbers(self) SwigRingSet
getDonorAtomicNumbers(self) SwigRingSet
getElementRestrictions(self) schrodinger::structure_interaction::ELEMENT_RESTRICTIONS
getMaximumAcceptorAngle(self) float
getMaximumDistance(self) float
getMaximumDonorAngle(self) float
getMinimumAcceptorAngle(self) float
getMinimumDonorAngle(self) float
setMaximumAcceptorAngle(self, angle)
setMaximumDistance(self, distance)
setMaximumDonorAngle(self, angle)
setMinimumAcceptorAngle(self, angle)
setMinimumDonorAngle(self, angle)
class schrodinger.infra.structure.CellMatchAtom

Class to store the details of close atom in the distance cell

__init__(*args, **kwargs)
getCoords(self) StructureCoordinates

Get Atom coordinates

getDistanceSquared(self) double

Get the square of the distance to the measurement point

getIndex(self) int

Get index of atom in the structure

class schrodinger.infra.structure.ContactParams

schrodinger::structure_interaction::ContactParams

__init__(*args, **kwargs)
getCutoff(self) float
getShow1_4(self) bool

Should 1,4 interactions be included in contact list?

setCutoff(self, cutoff)

The maximum ratio of any interaction that is returned

setShow1_4(self, show_1_4)
class schrodinger.infra.structure.DistanceCell
__init__(*args, **kwargs)
getCellSize(self) double
getCt(self) MM_Index
getPBC(self) PBC
getStructure(self) Structure
hasPBC(self) bool
isOrthorhombic(self) bool
query(self, x, y, z) SwigDcNonPbcAtomIdxList

Find indices of sites within the distance used to construct the cell. If the distance cell has a PBC, use query_atoms(..). :raises: logic_error if the function is called has a PBC.

query_atoms(self, x, y, z) SwigDcPbcAtomList
query_atoms(self, arg2) SwigDcPbcAtomList

Overload 1: Find indices of sites within the distance used to construct the cell. Works if the cell has a PBC.


Overload 2: Find atom indices within the distance used to construct the cell. Works if the cell has a PBC.

class schrodinger.infra.structure.FileFormat
MAESTRO = 0
PDB = 1
CIF = 2
SD = 3
MMCIF = 4
MOL2 = 5
XYZ = 6
FASTA = 7
SMILES = 8
SMILESCSV = 9
class schrodinger.infra.structure.IOException

The IOException class is used by file format readers/writers to throw exceptions to client to report the core library errors.

__init__(*args, **kwargs)
err_no(self) int
Return type:

int

Returns:

error code from core library

what(self) char const *
Return type:

string

Returns:

error string from core library

class schrodinger.infra.structure.InteractionAtomPair

schrodinger::structure_interaction::InteractionAtomPair

__init__(*args, **kwargs)
getAcceptor(self) StructureAtom
getDonor(self) StructureAtom
class schrodinger.infra.structure.MM_Bitset
::MM_Bitset

Control lifetime of Schrodinger bitsets, and use them like STL containers.

The mmbs header defines the Schrodinger bitset, which should usually be used via an MM_Bitset. MM_Bitset are 1-indexed. MM_Bitset can create new bitsets or take control of mmbs created from C code.

If the MM_Bitset object owns the MMbs object when its destructor is called, the bitset will be deleted.

One use is to use it in place of an MMbs:

auto bs = MM_Bitset::createFromSize(size);
// The bitset will automatically be destroyed when the destructor is called

Or call a function that creates an MMbs:

MM_Bitset bs;          // Creates an invalid bitset waiting for data
foo(bs.getPointer());  // foo() is expected to create a new bitset that bs
                       // will control
// Again, the destructor will clean up the bitset memory

You may see the above written in this way:

MMbs        mbs;
foo(&mbs);  // This function will call mmbs_new()
MM_Bitset   mbs_owner(mbs);

// Again, the destructor will clean up the bitset memory

An MM_Bitset can be transparently used where an MMbs would normally be used.

See also: MM_BitsetIterator

__init__(*args, **kwargs)
__len__()

Return len(self).

all(self) bool
Return type:

boolean

Returns:

true if all bits are set, otherwise false

any(self) bool
Return type:

boolean

Returns:

true if any bits are set, otherwise false

at(self, index) bool
Return type:

boolean

Returns:

The value at the given position

Raises:

std::out_of_range if index is out of [1, size]

begin(self) MM_BitsetIterator
Return type:

iterator

Returns:

A forward iterator

copy(self) MM_Bitset

Create a new bitset that is a copy of the current bitset

count(self) int
Return type:

int

Returns:

number of bits that are on

create(self, size) int

Replace the current contents with a new bitset of size >= 0. Prefer Bitset::createFromSize() :rtype: int :return: an mmbs status code.

static createFromSize(size, state=False) MM_Bitset

Create a new MM_Bitset of size >= 0.

getHandle(self) MMbs

Get the underlying mmbs handle.

isValid(self) bool

Does this object manage a bitset?

none(self) bool
Return type:

boolean

Returns:

true if no bits are set, otherwise false

release(self) MMbs

Releases ownership of the bitset without deleting it :rtype: int :return: the mmbs handle

reset(self)

Set all bits to “off”

resize(self, size)

Resize the bitset to a new size >= 0 :raises: std::runtime_error if the bitset cannot be resized.

set(self, index, state=True)
set(self) None

Overload 1: Set the value at index to state range is not checked, valid values are [1, size]


Overload 2: Set all bits to “on”

size(self) int
Return type:

int

Returns:

The size (number of bits allocated)

toBoost(self) boost::dynamic_bitset< >
class schrodinger.infra.structure.MM_BitsetIterator
::MM_BitsetIterator

An iterator which walks through the “on” positions in the bitset.

See also: MM_Bitset

__init__(*args, **kwargs)
schrodinger.infra.structure.MM_Bitset_createFromSize(size, state=False) MM_Bitset

Create a new MM_Bitset of size >= 0.

class schrodinger.infra.structure.MaeReader

Read Mae files using MaeParser

__init__(*args, **kwargs)
static countStructures(path) int

Counts the number of structures in the given file

Parameters:

path (boost::filesystem::path) – file in which structures should be counted

Return type:

int

Returns:

total number of structures in the file

Raises:

StructureReaderException if file DNE or is malformed

static fromString(arg1) std::shared_ptr< schrodinger::MaeReader >

Read Structures from text

nextBlock(self) std::string_view

Gets the next f_m_ct block of data from the file

Return type:

std::string_view

Returns:

std::string_view pointing to internally managed memory

readNextTextualStructure(self) schrodinger::TextualStructure

Gets the next Structure

Returns a structure with only the properties filled in doesn’t read atom or bond data

Return type:

schrodinger::TextualStructure

Returns:

Structure object

Raises:

StructureReaderException if the file malformed or isn’t a possible Structure

seek(self, offset)
tell(self) size_t
schrodinger.infra.structure.MaeReader_countStructures(path) int

Counts the number of structures in the given file

Parameters:

path (boost::filesystem::path) – file in which structures should be counted

Return type:

int

Returns:

total number of structures in the file

Raises:

StructureReaderException if file DNE or is malformed

schrodinger.infra.structure.MaeReader_fromString(arg1) std::shared_ptr< schrodinger::MaeReader >

Read Structures from text

class schrodinger.infra.structure.MaeWriter

Class for writing structures with the Maestro format

__init__(*args, **kwargs)
append(self, st)
append(self, ct) None
append(self, mae_text) None

Overload 1:

Writes provided structure to the open file :type st: Structure :param st: structure to write


Overload 2:

Writes provided structure to the open file :param sts: structures to write


Overload 3:

Writes provided text block to the open file :param the: text block

static toStream(st, os)
static toString(st) std::string
Parameters:

st (Structure) – given structure

Return type:

string

Returns:

m2io string representation

schrodinger.infra.structure.MaeWriter_toStream(st, os)
schrodinger.infra.structure.MaeWriter_toString(st) std::string
Parameters:

st (Structure) – given structure

Return type:

string

Returns:

m2io string representation

class schrodinger.infra.structure.MetalInteraction

schrodinger::structure_interaction::MetalInteraction

__init__(*args, **kwargs)
getMetal(self) StructureAtom
class schrodinger.infra.structure.MmctSerializer

::MmctSerializer

DEFAULT_VERSION = 1
MAX_VERSION = 3
V1 = 1
V2 = 2
V3 = 3
__init__(*args, **kwargs)
static deserializeCT(input) MM_Index

This reads serialized data into a single CT If there is an error in here, this will throw an MmctSerializerException with what() saying what failed

static deserializeStructure(input) Structure

This reads serialized data into a single structure :type input: QByteArray, in :param input: Serialized data :raises: MmctSerializerException

static serializeCT(ct, version=DEFAULT_VERSION) QByteArray

This converts a single CT into serialized data :type version: int, in, optional :param version: Format version :raises: MmctSerializerException :raises: std::invalid_argument for unsupported values of version

static serializeStructure(st, version=DEFAULT_VERSION) QByteArray

This converts a single structure into serialized data :type st: Structure, in :param st: Structure to serialize :type version: int, in, optional :param version: Format version :raises: MmctSerializerException :raises: std::invalid_argument for unsupported values of version

exception schrodinger.infra.structure.MmctSerializerException
schrodinger.infra.structure.MmctSerializer_deserializeCT(input) MM_Index

This reads serialized data into a single CT If there is an error in here, this will throw an MmctSerializerException with what() saying what failed

schrodinger.infra.structure.MmctSerializer_deserializeStructure(input) Structure

This reads serialized data into a single structure :type input: QByteArray, in :param input: Serialized data :raises: MmctSerializerException

schrodinger.infra.structure.MmctSerializer_serializeCT(ct, version=DEFAULT_VERSION) QByteArray

This converts a single CT into serialized data :type version: int, in, optional :param version: Format version :raises: MmctSerializerException :raises: std::invalid_argument for unsupported values of version

schrodinger.infra.structure.MmctSerializer_serializeStructure(st, version=DEFAULT_VERSION) QByteArray

This converts a single structure into serialized data :type st: Structure, in :param st: Structure to serialize :type version: int, in, optional :param version: Format version :raises: MmctSerializerException :raises: std::invalid_argument for unsupported values of version

class schrodinger.infra.structure.MmpdbxReader
__init__(*args, **kwargs)
static countStructures(path) int

Counts the number of structures in the given file :type path: boost::filesystem::path :param path: file in which structures should be counted :rtype: int :return: total number of structures in the file :raises: StructureReaderException if file DNE or is misformatted

disableConnectCloseAtoms(self)

Disable connecting close atoms in unconnected residues

disableTestingMode(self)

Disable the mode of testing

enableTestingMode(self)

Enable the mode of testing which will exercise if values read from file differ from the expectations of our library for example and allow us to take action from the report.

static fromString(data) std::shared_ptr< schrodinger::MmpdbxReader >

Read Structures from text

Parameters:

data (std::string_view) – CIF data for a Structure

schrodinger.infra.structure.MmpdbxReader_countStructures(path) int

Counts the number of structures in the given file :type path: boost::filesystem::path :param path: file in which structures should be counted :rtype: int :return: total number of structures in the file :raises: StructureReaderException if file DNE or is misformatted

schrodinger.infra.structure.MmpdbxReader_fromString(data) std::shared_ptr< schrodinger::MmpdbxReader >

Read Structures from text

Parameters:

data (std::string_view) – CIF data for a Structure

class schrodinger.infra.structure.MoleculeGraph

schrodinger::ringfinding::MoleculeGraph

__init__(*args, **kwargs)
addAtom(self, atom)
addBond(self, atom1, atom2)
areBonded(self, atom1, atom2) bool
atoms(self) SwigRingIndices
bondSmallestRing(self, bond_atom1, bond_atom2, maxsize=std::numeric_limits< unsigned int >::max()) SwigRingIndices
countAtoms(self) unsigned int
countBonds(self) unsigned int
empty(self) bool
findRingSystems(self, want_spiro=False) std::vector< std::vector< std::array< unsigned int,2 >,std::allocator< std::array< unsigned int,2 > > >,std::allocator< std::vector< std::array< unsigned int,2 >,std::allocator< std::array< unsigned int,2 > > > > >
findSpiroSystems(self, ring_systems) std::vector< std::vector< std::array< unsigned int,2 >,std::allocator< std::array< unsigned int,2 > > >,std::allocator< std::vector< std::array< unsigned int,2 >,std::allocator< std::array< unsigned int,2 > > > > >
neighbors(self, atom) SwigRingIndices
removeAtom(self, atom)
removeBond(self, atom1, atom2)
shortestPath(self, atom1, atom2, maxsize=std::numeric_limits< unsigned int >::max()) SwigRingIndices
smallestRing(self, atom, maxsize=std::numeric_limits< unsigned int >::max()) SwigRingIndices
class schrodinger.infra.structure.PBC

Class for Periodic Boundary Condition

__init__(*args, **kwargs)
applyToStructure(self, ct)

Set the CT properties corresponding to this PBC. Silently overwrites any PBC properties that the structure may have.

static clearFromStructure(st)

Remove PBC properties from a Structure :type st: Structure :param st: the structure to consider

findNearbyImages(self, input_displacement) std::pair< bool,std::vector< std::array< double,3 >,std::allocator< std::array< double,3 > > > >
getAngle(self, ct1, atom1, ct2, atom2, ct3, atom3) MM_Angle
getBoxAngles(self) StructureCoordinates
getBoxLengths(self) StructureCoordinates
getBoxVectors(self) std::array< schrodinger::Cartesian,3 >
getDihedral(self, ct1, atom1, ct2, atom2, ct3, atom3, ct4, atom4) MM_Angle
getDistance(self, ct1, atom1, ct2, atom2) MM_Coord
getDistance(self, x1, y1, z1, x2, y2, z2) MM_Coord
getHalfShortBoxLength(self) double
getHalfShortOrthogonalBoxLength(self) double
getNearestImage(self, ct, reference_atom, atom, use_alternate_coordinates=False) StructureCoordinates
getNearestImage(self, ct, xyz, atom, use_alternate_coordinates=False) StructureCoordinates
getNearestImages(self, ct, atom_indices, reference_atom, use_alternate_coordinates=False) SwigDoubleDoubleList

atom_indices is a chain of adjacent atoms. Returns real space coordinates of the atoms in atom_indices so that they are closest to each other. The first instance of reference_atom in atom_indices will be at its input coordinates. If reference_atom is not in atom_indices, the first atom will be in its closest position to reference_atom’s input position.

Throws std::invalid_argument if the ct is invalid, or if any atom index is not in the ct.

getRBoxVectors(self) std::array< schrodinger::Cartesian,3 >
getShortestVector(self, ct1, atom1, ct2, atom2) schrodinger::Cartesian
getShortestVector(self, x1, y1, z1, x2, y2, z2) schrodinger::Cartesian
getVolume(self) double
static get_pbc(st) std::unique_ptr< schrodinger::PBC >
Parameters:

st (Structure) – the structure to consider

Return type:

std::unique_ptr< schrodinger::PBC >

Returns:

PBC instance if available; nullptr otherwise

Raises:

std::invalid_argument if PBC properties are invalid

hasNearerImage(self, ct1, atom1, ct2, atom2, use_alternate_coordinates=False) bool

Return true if there is a nearer image of atom2 to atom1 If nearest_image_displacement is not NULL, store the displacement from atom1 to the nearest image of atom2 in nearest_image_displacement.

isOrthorhombic(self) bool
setAngle(self, angle, ct1, atom1, ct2, atom2, ct3, moving, moving_atoms)
setDihedral(self, angle, ct1, atom1, ct2, atom2, ct3, atom3, ct4, moving, moving_atoms)
setDistance(self, distance, ct1, atom1, ct2, moving, moving_atoms)
schrodinger.infra.structure.PBC_clearFromStructure(st)

Remove PBC properties from a Structure :type st: Structure :param st: the structure to consider

schrodinger.infra.structure.PBC_get_pbc(st) std::unique_ptr< schrodinger::PBC >
Parameters:

st (Structure) – the structure to consider

Return type:

std::unique_ptr< schrodinger::PBC >

Returns:

PBC instance if available; nullptr otherwise

Raises:

std::invalid_argument if PBC properties are invalid

class schrodinger.infra.structure.PiCationInteraction

schrodinger::structure_interaction::PiCationInteraction

__init__(*args, **kwargs)
getCation(self) StructureAtom
getRing(self) std::shared_ptr< schrodinger::StructureRing >
class schrodinger.infra.structure.PiCationParams

schrodinger::structure_interaction::PiCationParams

__init__(*args, **kwargs)
getMaximumAngle(self) float
getMaximumDistance(self) float
setMaximumAngle(self, angle)
setMaximumDistance(self, distance)
class schrodinger.infra.structure.PiPiInteraction

schrodinger::structure_interaction::PiPiInteraction

EDGE_TO_FACE = 1
FACE_TO_FACE = 0
__init__(*args, **kwargs)
getRing1(self) std::shared_ptr< schrodinger::StructureRing >
getRing2(self) std::shared_ptr< schrodinger::StructureRing >
isEdgeToFace(self) bool
isFaceToFace(self) bool
class schrodinger.infra.structure.PiPiParams

schrodinger::structure_interaction::PiPiParams

__init__(*args, **kwargs)
getEdgeToFaceMaximumDistance(self) float
getEdgeToFaceMinimumAngle(self) float
getFaceToFaceMaximumAngle(self) float
getFaceToFaceMaximumDistance(self) float
setEdgeToFaceMaximumDistance(self, distance)
setEdgeToFaceMinimumAngle(self, angle)
setFaceToFaceMaximumAngle(self, angle)
setFaceToFaceMaximumDistance(self, distance)
exception schrodinger.infra.structure.PyStructureReaderException(exc)
__init__(exc)
isEOF()
class schrodinger.infra.structure.ResidueId
__init__(*args, **kwargs)
insertion_code
residue_number
class schrodinger.infra.structure.RingSpear

schrodinger::structure_interaction::RingSpear

__init__(*args, **kwargs)
ring
spear
class schrodinger.infra.structure.SaltBridge

schrodinger::structure_interaction::SaltBridge

__init__(*args, **kwargs)
getAnion(self) StructureAtom
getCation(self) StructureAtom
class schrodinger.infra.structure.SaltBridgeParams

schrodinger::structure_interaction::SaltBridgeParams

__init__(*args, **kwargs)
class schrodinger.infra.structure.Structure

A Structure is Schrodinger’s conception of what a molecule is.

The atoms in a Structure are not required to be connected. Arbitrary properties may be added to Structures and Atoms via the setProperty() interface.

Copies of a Structure all point to the same underlying data, which is cleaned up when the Structure goes out of scope. Ownership of the Structure may be shared with the Python API and the C API (mmct_*) See Structure::getHandle(), Structure::releaseOwnership(), and Structure::isValid() for details.

__init__(*args, **kwargs)
addAtom(self, atomic_number) StructureAtom
addAtom(self, atomic_number, macromodel_type) StructureAtom

Overload 1:

Creates a new atom associated with the structure. :type atomic_number: int :param atomic_number:: the new atomic number :rtype: StructureAtom :return: the newly added StructureAtom


Overload 2:

Creates a new atom associated with the structure. :type atomic_number: int :param atomic_number:: the new atomic number :type macromodel_type: int :param macromodel_type:: the new MacroModel type (see atom.typ) :rtype: StructureAtom :return: the newly added StructureAtom

addBond(self, atom1_idx, atom2_idx, bond_type=MMCT_SINGLE_BOND)

Create a bond between the two indicated atoms

clearEntryID(self)
clearEntryID(self, atoms) None
static create_invalid_structure() Structure

This forwards to the private invalid-ct constructor

deleteAtoms(self, indices)
deleteAtoms(self, indices) None
deleteBond(self, atom1_idx, atom2_idx)

Delete the bond between the two indicated atoms

deleteProperty(self, property)

Deletes a property. Noop if property is not set.

deletePropertyFromAllAtoms(self, prop_name)

Deletes a property on all atoms

getAltXYZ(self) std::map< size_t,Eigen::Vector3d >
getAtomPropertyNames(self) std::set< std::string,std::less< std::string >,std::allocator< std::string > >
Return type:

std::set< std::string,std::less< std::string >,std::allocator< std::string > >

Returns:

set of all atom property names across the structure

getBondType(self, atom1_idx, atom2_idx) MM_CTBondType

Return the bond type for the bond between the two indicated atoms

getEntryAtoms(self, entry_id) MM_Bitset
getEntryAtoms(self, entry_id, arg3) None
getEntryIDs(self) SwigRingIndices
getHandle(self) MM_Index

Get CT handle managed by structure object

getMolecularWeight(self) double
getNumAtoms(self) unsigned int
getNumMols(self) unsigned int
getProperty(self, property, value) bool
getProperty(self, property, value) bool
getProperty(self, property, value) bool
getProperty(self, property, value) bool

Overload :type value: boolean, out :param value: of the property :rtype: boolean :return: whether the property was found

getPropertyBool(self, property) bool

Get a property. Allowed types are string, double, int, and bool. :rtype: boolean :return: value for given property :raises: out_of_range if property is not set.

getPropertyInt(self, property) int

Get a property. Allowed types are string, double, int, and bool. :rtype: int :return: value for given property :raises: out_of_range if property is not set.

getPropertyNames(self) SwigStringList
getPropertyNames(self, arg2) SwigStringList

Overload 1: :rtype: std::vector< std::string,std::allocator< std::string > > :return: vector of all property names in the structure


Overload 2: :rtype: std::vector< std::string,std::allocator< std::string > > :return: vector of property names of the given type

getPropertyReal(self, property) double

Get a property. Allowed types are string, double, int, and bool. :rtype: float :return: value for given property :raises: out_of_range if property is not set.

getPropertyString(self, property) std::string

Get a property. Allowed types are string, double, int, and bool. :rtype: string :return: value for given property :raises: out_of_range if property is not set.

getTitle(self) std::string

Get the CT title. :rtype: string :return: std::string Title. Empty on failure.

getTotalCharge(self) int
Return type:

int

Returns:

the summation of all atomic formal charges

getUUID(self) size_t
static get_structure(mmct_handle, handle_ownership=OWNED) Structure

Gives a schrodinger::Structure object from an mmct

hasHandle(self) bool

Does the Structure currently have a handle?

hasProperty(self, property) bool
Return type:

boolean

Returns:

whether a property is set.

isValid(self) bool
releaseOwnership(self)

Calling this function means that you do not want the underlying mmct to be deleted when the Structure object is destroyed. No-op if there is more than one Structure for the same mmct handle.

setBondType(self, atom1_idx, atom2_idx, bond_type)

Set the bond type for the bond between the two indicated atoms

setEntryID(self, entry_id)
setEntryID(self, atoms, entry_id) None
setPropertyBool(self, property, value)

Set a property. Allowed types are string, char, double, int, and bool. :raises: out_of_range if property name format is invalid or the property

cannot be set.

setPropertyInt(self, property, value)

Set a property. Allowed types are string, char, double, int, and bool. :raises: out_of_range if property name format is invalid or the property

cannot be set.

setPropertyReal(self, property, value)

Set a property. Allowed types are string, char, double, int, and bool. :raises: out_of_range if property name format is invalid or the property

cannot be set.

setPropertyString(self, property, value)

Set a property. Allowed types are string, char, double, int, and bool. :raises: out_of_range if property name format is invalid or the property

cannot be set.

setTitle(self, new_title)

Set the CT title. :raises: IOException if setting fails

setXYZ(self, arg2)
setXYZ(self, arg2) None
class schrodinger.infra.structure.StructureAtom

Class representing a single atom within a Structure. If atoms are reordered or other atoms are deleted, the StructureAtom is still valid. In addition to atomic elements, StructureAtoms may represent dummy atoms, lone pairs, and coarse grain particles.

__init__(*args, **kwargs)
chiralityString(self) std::string const

Gets chirality string. empty string if ATOM_ACHIRAL and “R” “S” “ANR” “ANS” for other cases

Return type:

string

Returns:

: atom chirality string

deleteProperty(self, property)

Deletes a property. Noop if property is not set.

getAtomName(self) std::string
getAtomType(self) int
Return type:

int

Returns:

: MacroModel atom type (see atom.typ)

getAtomTypeName(self) std::string
Return type:

string

Returns:

: the MacroModel atom type name (see atom.typ)

getAtomicNumber(self) int
Return type:

int

Returns:

: This atom’s atomic number

getAtomicWeight(self) double
Return type:

float

Returns:

: atomic weight of this atom

getChainSV(self) std::string_view
Return type:

std::string_view

Returns:

The same as getChain() except as a string_view (no string copying).

Notes: We can’t just change getChain() to return a string_view because getChain() is sometimes passed into C functions which require a NUL-terminated string.

getColor(self, color_rgb)
getEntryID(self) unsigned int
Return type:

int

Returns:

: the entry id corresponding to this atom NO_ENTRY_ID (0, which is false-y) if no entry id is set

getEntryName(self) std::string
Return type:

string

Returns:

: the entry name corresponding to this atom

Raises:

out_of_range if entry name doesn’t exist

getEntryNameSV(self) std::string_view
Return type:

std::string_view

Returns:

: the entry name corresponding to this atom

Raises:

out_of_range if entry name doesn’t exist

Notes: This requires the atom’s entry to be set because it returns the internal d_entry_name_p property. This is true for the Workspace structure, but may not be true in general. Thus, this function can return an empty entry name when getEntryName() would return a non-empty entry name.

getFormalCharge(self) int
Return type:

int

Returns:

: the formal charge for this atom

getGrowName(self) std::string
getIndex(self) MM_Index
Return type:

int

Returns:

: The current atom index. The returned index is only valid as long as no atoms have been added, removed, or reordered.

getMacromodelResidue(self) char
getMoleculeNumber(self) int
getNeighborCount(self) unsigned int
Return type:

int

Returns:

: How many atoms are bonded to this atom

getNeighbors(self) SwigAtomList
getNeighbors(self, neighbors) None

Overload 1:

Return type:

std::vector< schrodinger::StructureAtom,std::allocator< schrodinger::StructureAtom > >

Returns:

: all atoms covalently bonded to this atom


Overload 2:

Return type:

void

Returns:

: all atoms covalently bonded to this atom

getOccupancy(self) double
getPDBAtomName(self) std::string
getPDBResidue(self) resname_t
getPartialCharge(self) double
Return type:

float

Returns:

: the partial charge for this atom

getProperty(self, property, default_value) PyObject *
getProperty(self, property) PyObject
getPropertyNames(self) SwigStringList
getPropertyNames(self, arg2) SwigStringList

Overload 1:

Return type:

std::vector< std::string,std::allocator< std::string > >

Returns:

: vector of all property names in the structure


Overload 2:
rtype:

std::vector< std::string,std::allocator< std::string > >

return:

vector of property names of the given type

getRadius(self) double

Returns an approximate radius in angstroms, which is useful for display purposes, but is not terribly accurate.

Return type:

float

Returns:

: radius for this atom

getResidueId(self) ResidueId
getSecondaryStructure(self) MM_CTSecondaryStructure
getSolvationCharge(self) double
Return type:

float

Returns:

: the solvation charge for this atom

getStructure(self) Structure
Return type:

Structure

Returns:

: Pointer to this atom’s parent structure

getStructureHandle(self) MM_Index

Get the MMCT handle of the structure

getTFactor(self) double
getUserLabelFormat(self) std::string
getUserLabelText(self) std::string
getXYZ(self) Eigen::Vector3d
Return type:

Eigen::Vector3d

Returns:

: Cartesian coordinate for this atom

hasProperty(self, property) bool
Parameters:

property: – the given atom property

Return type:

boolean

Returns:

whether a property is set for this atom.

hasRibbonColor(self) bool
isValid(self) bool
Return type:

boolean

Returns:

: Whether atom is still present in the parent Structure

setAtomName(self, atom_name)
setAtomType(self, macromodel_type)

sets the MacroModel atom type. This is required, e.g., for types indicating geometry. This will override the atomic number if the type is not a generalized type.

Return type:

void

Returns:

: MacroModel atom type (see atom.typ).

setAtomicNumber(self, atomic_number)
setAtomicNumber(self, atomic_number, macromodel_type) None

Overload 1:

Assigns the given atomic number and re-types the atom

Parameters:

atomic_number: – the new atomic number


Overload 2:

Set atomic number and MacroModel type

Parameters:
  • atomic_number: – the new atomic number

  • macromodel_type: – the new MacroModel type (see atom.typ)

Raises:

: runtime_error if the atomic number doesn’t match the type

setColor(self, color)
setColor(self, color_rgb) None
setColor(self, color_string) None
setDefaultColor(self)

Sets color based on the macromodel type for this atom’s atomic number

setFormalCharge(self, formal_charge)
Parameters:

formal_charge: – the charge to assign to this atom

Raises:

: out_of_range if the charge is not in the allowed range

setGrowName(self, grow_name)
setMacromodelResidue(self, residue)
setPDBAtomName(self, atom_name)
setPDBResidue(self, residue)
setPartialCharge(self, partial_charge)
Parameters:

partial_charge: – the partial charge to assign to this atom

setPropertyBool(self, property, value)

Sets a property. Allowed types are string, char, double, int, and bool.

Parameters:
  • property: – the given atom property

  • value: – value to assign the given atom property

Raises:

out_of_range if property name format is invalid or the property cannot be set.

setPropertyInt(self, property, value)

Sets a property. Allowed types are string, char, double, int, and bool.

Parameters:
  • property: – the given atom property

  • value: – value to assign the given atom property

Raises:

out_of_range if property name format is invalid or the property cannot be set.

setPropertyReal(self, property, value)

Sets a property. Allowed types are string, char, double, int, and bool.

Parameters:
  • property: – the given atom property

  • value: – value to assign the given atom property

Raises:

out_of_range if property name format is invalid or the property cannot be set.

setPropertyString(self, property, value)

Sets a property. Allowed types are string, char, double, int, and bool.

Parameters:
  • property: – the given atom property

  • value: – value to assign the given atom property

Raises:

out_of_range if property name format is invalid or the property cannot be set.

setResidueNumber(self, residue_number, insertion_code=' ')
setSecondaryStructure(self, ss_type)
setSolvationCharge(self, solvation_charge)
Parameters:

solvation_charge: – the solvation charge to assign to this atom

setUserLabelFormat(self, label_format)
setUserLabelText(self, label_user_text)
setX(self, x)
Parameters:

x: – New x-coordinate for this atom

setXYZ(self, xyz)
Parameters:

xyz: – New cartesian coordinate for this atom

setY(self, y)
Parameters:

y: – New y-coordinate for this atom

setZ(self, z)
Parameters:

z: – New z-coordinate for this atom

x(self) double
Return type:

float

Returns:

: The atom x-coordinate

y(self) double
Return type:

float

Returns:

: The atom y-coordinate

z(self) double
Return type:

float

Returns:

: The atom z-coordinate

class schrodinger.infra.structure.StructureCoordinates

std::array< double,3 >

__init__(*args, **kwargs)
__len__()

Return len(self).

back(self) std::array< double,3 >::value_type const &
begin(self) std::array< double,3 >::iterator
empty(self) bool
end(self) std::array< double,3 >::iterator
fill(self, u)
front(self) std::array< double,3 >::value_type const &
iterator(self) SwigPyIterator
rbegin(self) std::array< double,3 >::reverse_iterator
rend(self) std::array< double,3 >::reverse_iterator
size(self) std::array< double,3 >::size_type
swap(self, v)
class schrodinger.infra.structure.StructureIterator
__init__(*args, **kwargs)
setOwnership(self, ownership)
class schrodinger.infra.structure.StructureReader

The StructureReader class acts as a base class for file format readers

The main entry point is:

auto reader = StructureReader::getReader(filename);
__init__(*args, **kwargs)
approxProgressPercent(self) size_t
begin(self) StructureIterator
Return type:

StructureIterator

Returns:

an iterator pointing to first structure of the reader

static countStructures(path) int

Counts the number of structures in the given file

Parameters:

path (boost::filesystem::path) – file in which structures should be counted

Return type:

int

Returns:

total number of structures in the file

Raises:

StructureReaderException if file DNE or is misformatted

end(self) StructureIterator
Return type:

StructureIterator

Returns:

an iterator pointing to past-the-end structure of the reader

eof(self) bool
Return type:

boolean

Returns:

whether the reader reached the EOF or whether at least one more Structure can be read from it.

getFileSize(self) size_t
getFilename(self) std::string
Return type:

string

Returns:

filename managed by the reader

static getFromString(data, format) std::shared_ptr< schrodinger::StructureReader >

Gets a StructureReader from in-memory data

Parameters:
  • data (std::string_view) – Contents of a file in some Structure Format

  • format (int) – Format of the data

Return type:

StructureReader

Returns:

a new StructureReader instance

static getReader(filename) std::shared_ptr< schrodinger::StructureReader >

Gets a specific StructureReader instance for the given filename

Parameters:

filename (boost::filesystem::path) – file to manage by reader

Return type:

StructureReader

Returns:

a new StructureReader instance

static read(filename, index=1) Structure

Gets the Structure extracted at the ith index

Parameters:
  • filename (boost::filesystem::path) – file to manage by reader

  • index (int, optional) – Structure index to read

Return type:

Structure

Returns:

Structure object

Raises:

StructureReaderException

readFromIndex(self, index) Structure

Gets the structure at the given index. Reader is 1-indexed and will throw an exception if index is set to 0. :type index: int :param index: Structure index to read :rtype: Structure :return: Structure object :raises: StructureReaderException

static readFromString(data, format, index=1) Structure

Gets a Structure from in-memory data

Parameters:
  • data (std::string_view) – Contents of a file in some Structure Format

  • format (int) – Format of the data

  • index (int, optional) – Structure index to read

Return type:

Structure

Returns:

Structure object

readNext(self) Structure

Gets the next structure

Return type:

Structure

Returns:

Structure object

Raises:

StructureReaderException

setIndex(self, index)

Set the reader to read from a given index. Reader is 1-indexed and will throw an exception if index is set to 0. :type index: int :param index: index to set reader to :raises: StructureReaderException

class schrodinger.infra.structure.StructureReaderException

The StructureReaderException class is used by file format readers/writers to throw exceptions to client to report the core library errors.

__init__(*args, **kwargs)
isEOF(self) bool
Return type:

boolean

Returns:

whether the exception occurred at end of file

schrodinger.infra.structure.StructureReader_countStructures(path) int

Counts the number of structures in the given file

Parameters:

path (boost::filesystem::path) – file in which structures should be counted

Return type:

int

Returns:

total number of structures in the file

Raises:

StructureReaderException if file DNE or is misformatted

schrodinger.infra.structure.StructureReader_getFromString(data, format) std::shared_ptr< schrodinger::StructureReader >

Gets a StructureReader from in-memory data

Parameters:
  • data (std::string_view) – Contents of a file in some Structure Format

  • format (int) – Format of the data

Return type:

StructureReader

Returns:

a new StructureReader instance

schrodinger.infra.structure.StructureReader_getReader(filename) std::shared_ptr< schrodinger::StructureReader >

Gets a specific StructureReader instance for the given filename

Parameters:

filename (boost::filesystem::path) – file to manage by reader

Return type:

StructureReader

Returns:

a new StructureReader instance

schrodinger.infra.structure.StructureReader_read(filename, index=1) Structure

Gets the Structure extracted at the ith index

Parameters:
  • filename (boost::filesystem::path) – file to manage by reader

  • index (int, optional) – Structure index to read

Return type:

Structure

Returns:

Structure object

Raises:

StructureReaderException

schrodinger.infra.structure.StructureReader_readFromString(data, format, index=1) Structure

Gets a Structure from in-memory data

Parameters:
  • data (std::string_view) – Contents of a file in some Structure Format

  • format (int) – Format of the data

  • index (int, optional) – Structure index to read

Return type:

Structure

Returns:

Structure object

class schrodinger.infra.structure.StructureRing
__init__(*args, **kwargs)
getAtoms(self) SwigAtomList
getCenter(self) Eigen::Vector3d const &
getCenterX(self) double
getCenterY(self) double
getCenterZ(self) double
isAromatic(self) bool
class schrodinger.infra.structure.StructureWriter

Base class for structure file format writers

__init__(*args, **kwargs)
append(self, st)
append(self, ct) None
append(self, text_block) None

Overload 1:

Writes provided structure to the open file :param sts: structures to write


Overload 2:

Writes provided structure to the open file :param sts: structures to write


Overload 3:

Writes provided text block to the open file :param the: text block

close(self)

Closes the file

This needs to be separate from the destructor so that it can be called from the __exit__() function in Python context managers

getFilename(self) boost::filesystem::path const &
Return type:

boost::filesystem::path

Returns:

filename managed by the reader

static getWriter(filename, file_mode=OVERWRITE, allow_empty_file=False) std::shared_ptr< schrodinger::StructureWriter >
static getWriter(filename, file_mode, format, allow_empty_file, use_display_names=False) std::shared_ptr< schrodinger::StructureWriter >

Overload 1:

Gets a specific StructureWriter instance for the given filename :type filename: boost::filesystem::path :param filename: file to manage by writer :type file_mode: int, optional :param file_mode: whether to overwrite or append to an existing file :type allow_empty_file: boolean, optional :param allow_empty_file: whether we should create an output with no

structures if we don’t append any structures. NOTE: Only currently applies to maestro outputs

Return type:

StructureWriter

Returns:

a new StructureWriter instance


Overload 2:

Overload that allows forcing a file format :type filename: boost::filesystem::path :param filename: file to manage by writer :type format: int :param format: type of file to write :type file_mode: int :param file_mode: whether to overwrite or append to an existing file :type allow_empty_file: boolean :param allow_empty_file: whether we should create an output with no

structures if we don’t append any structures. NOTE: Only currently applies to maestro outputs

Parameters:

use_display_names (boolean, optional) – whether to strip [ibrs]_sd_ prefix from property names. Only applies to SD files

Return type:

StructureWriter

Returns:

a new StructureWriter instance


Overload 3:

Overload that allows forcing a file format :type filename: boost::filesystem::path :param filename: file to manage by writer :type format: int :param format: type of file to write :type file_mode: int :param file_mode: whether to overwrite or append to an existing file :type allow_empty_file: boolean :param allow_empty_file: whether we should create an output with no

structures if we don’t append any structures. NOTE: Only currently applies to maestro outputs

Parameters:

use_display_names – whether to strip [ibrs]_sd_ prefix from property names. Only applies to SD files

Return type:

StructureWriter

Returns:

a new StructureWriter instance

static toString(st, format) std::string
static toString(st) std::string
Parameters:
  • st (Structure) – given structure

  • format (int) – file format for the requested string

Return type:

string

Returns:

string representation of the structure

static write(st, filename)
static write(ct, filename) None

Writes the provided single structure to the given file :type st: Structure :param st: Structure object :type filename: boost::filesystem::path :param filename: file to manage by reader

schrodinger.infra.structure.StructureWriter_getWriter(filename, file_mode=OVERWRITE, allow_empty_file=False) std::shared_ptr< schrodinger::StructureWriter >
schrodinger.infra.structure.StructureWriter_getWriter(filename, file_mode, format, allow_empty_file, use_display_names=False) std::shared_ptr< schrodinger::StructureWriter >

Overload 1:

Gets a specific StructureWriter instance for the given filename :type filename: boost::filesystem::path :param filename: file to manage by writer :type file_mode: int, optional :param file_mode: whether to overwrite or append to an existing file :type allow_empty_file: boolean, optional :param allow_empty_file: whether we should create an output with no

structures if we don’t append any structures. NOTE: Only currently applies to maestro outputs

Return type:

StructureWriter

Returns:

a new StructureWriter instance


Overload 2:

Overload that allows forcing a file format :type filename: boost::filesystem::path :param filename: file to manage by writer :type format: int :param format: type of file to write :type file_mode: int :param file_mode: whether to overwrite or append to an existing file :type allow_empty_file: boolean :param allow_empty_file: whether we should create an output with no

structures if we don’t append any structures. NOTE: Only currently applies to maestro outputs

Parameters:

use_display_names (boolean, optional) – whether to strip [ibrs]_sd_ prefix from property names. Only applies to SD files

Return type:

StructureWriter

Returns:

a new StructureWriter instance


Overload 3:

Overload that allows forcing a file format :type filename: boost::filesystem::path :param filename: file to manage by writer :type format: int :param format: type of file to write :type file_mode: int :param file_mode: whether to overwrite or append to an existing file :type allow_empty_file: boolean :param allow_empty_file: whether we should create an output with no

structures if we don’t append any structures. NOTE: Only currently applies to maestro outputs

Parameters:

use_display_names – whether to strip [ibrs]_sd_ prefix from property names. Only applies to SD files

Return type:

StructureWriter

Returns:

a new StructureWriter instance

schrodinger.infra.structure.StructureWriter_toString(st, format) std::string
schrodinger.infra.structure.StructureWriter_toString(st) std::string
Parameters:
  • st (Structure) – given structure

  • format (int) – file format for the requested string

Return type:

string

Returns:

string representation of the structure

schrodinger.infra.structure.StructureWriter_write(st, filename)
schrodinger.infra.structure.StructureWriter_write(ct, filename) None

Writes the provided single structure to the given file :type st: Structure :param st: Structure object :type filename: boost::filesystem::path :param filename: file to manage by reader

schrodinger.infra.structure.Structure_create_invalid_structure() Structure

This forwards to the private invalid-ct constructor

schrodinger.infra.structure.Structure_get_structure(mmct_handle, handle_ownership=OWNED) Structure

Gives a schrodinger::Structure object from an mmct

class schrodinger.infra.structure.SuperImposeBy
ATOMS = 1
MOLECULES = 1
STRUCTURE = 2
ENTRIES = 3
class schrodinger.infra.structure.TextBlockReader
EMPTY = ''
__init__(*args, **kwargs)
close(self)
eof(self) bool

Are there more structures to read?

getFormat(self) schrodinger::FileFormat
static read(filename, index=1) std::string
setIndex(self, index)

Set the reader to read from a given index. Reader is 1-indexed and will throw an exception if index is set to 0. :type index: int :param index: index to set reader to :raises: StructureReaderException

schrodinger.infra.structure.TextBlockReader_EMPTY_get()
schrodinger.infra.structure.TextBlockReader_read(filename, index=1) std::string
class schrodinger.infra.structure.TextBlockWriter
__init__(*args, **kwargs)
append(self, text_block)
close(self)
getFormat(self) schrodinger::FileFormat
class schrodinger.infra.structure.WorkflowMenuMaestroWriter

Specialized MaeWriter which always writes the Workflow Action Menu property to the Maestro file header.

__init__(*args, **kwargs)
class schrodinger.infra.structure.WriteMode
APPEND = 0
OVERWRITE = 1
schrodinger.infra.structure.add_residue_atoms(arg1, arg2)

Update a bitset with the atoms in same residue as the specified atom

schrodinger.infra.structure.append(source, destination)
schrodinger.infra.structure.append(source_atoms, destination) None
schrodinger.infra.structure.append(source, indices, destination) None
schrodinger.infra.structure.are_hbonded(atom1, atom2, params, pbc=None) bool

Check if the given two atoms are H-bonded to each other with optional periodic boundary condition.

schrodinger.infra.structure.are_ordered_isomers(st1, st2) bool
schrodinger.infra.structure.are_ordered_isomers(st1, atoms1, st2, atoms2) bool

Overload 1:

Determines if st1 and st2 have the same atoms in the same order, connected in the same way.

Checks atomic number, atom type, and bond order, assuming atoms are in the same order


Overload 2:

Determines if st1 and st2 have the same atoms in the same order, connected in the same way.

Checks atomic number, atom type, and bond order, assuming atoms are in the same order

schrodinger.infra.structure.clear_structure_properties(st)
schrodinger.infra.structure.connect_close_atoms(st, atoms, params=defaultBondGeometryParameters, pbc=None)

Define the connections between a set of atoms based on their positions. It is assumed that atoms have 3D coordinates, and that there are no bonds defined among the atoms. The connectivity will be defined using only single bonds and ZOBs; multiple bond types should be calculated afterwards, e.g. using assignbondorders.py. Note that atom types will not be assigned, and no assumptions are made about valences, so that mmlewis_apply() and mmjag_connect() will either fail or produce inaccurate results if directly used on the output structures.

Parameters:
  • st (Structure, in) – Structure object. Will be modified in place.

  • atoms (MM_Bitset, in) – Bitset of atoms. Only pairs which are both enabled in the bitset will potentially be connected.

  • params (BondGeometryParameters, in, optional) – Parameters to decide which bonds are valid.

  • pbc (PBC, in, optional) – OPTIONAL: periodic boundary condition to bde used a reference frame for the structure.

schrodinger.infra.structure.copy(arg1) Structure
schrodinger.infra.structure.copy_ct(ct) Structure
schrodinger.infra.structure.copy_maestro_properties(source_atom, dest_atoms, dest_st, include_residue_properties=True)
schrodinger.infra.structure.copy_residue_properties(source_atom, dest_atom)
schrodinger.infra.structure.copy_style(source_atom, dest_atom)
schrodinger.infra.structure.create_structure(number_of_atoms) Structure

Create a schrodinger::Structure object with C{number_of_atoms} atoms.

schrodinger.infra.structure.discard_named_m2io_block(st, block_name)
schrodinger.infra.structure.extract(source_atoms) Structure
schrodinger.infra.structure.extract(source, indices) Structure
schrodinger.infra.structure.find_all_rings(st, max_size, max_seconds=1) SwigRingIndicesVector
schrodinger.infra.structure.find_ring_atoms(st) SwigRingSet
schrodinger.infra.structure.find_ring_bonds(ct, max_size=0, aromatic_only=False) std::unordered_set< schrodinger::BondIndices >

Find a set of ring bonds. to test for membership in the set, do ring_bonds.count(bond) > 0u or ring_bonds.count({atom1, atom2}) > 0u :type ct: Structure, in :param ct: Structure object :type max_size: int, in, optional :param max_size: Rings larger than this are excluded

(if 0, includes all rings)

Parameters:

aromatic_only (boolean, in, optional) – Include only bonds in aromatic rings?

Return type:

std::unordered_set< schrodinger::BondIndices >

Returns:

pairs of atoms comprising a bond

schrodinger.infra.structure.find_ring_systems(st, want_spiro) SwigRingSets
schrodinger.infra.structure.format_as(format) std::string_view

Output string formatter for FileFormat, to properly print format names.

schrodinger.infra.structure.get_atoms_bitset(st) MM_Bitset

Extracts bitset for all atoms in the given structure

Parameters:

st: – the input structure

Return type:

MM_Bitset

Returns:

: mm_bitset with all bits off

schrodinger.infra.structure.get_chain_termini(atom_in_chain) std::pair< schrodinger::StructureAtom,schrodinger::StructureAtom >
schrodinger.infra.structure.get_contacts(ct1, bs1, ct2, bs2, params, hbond_params=None, salt_bridge_params=None, pbc=None) SwigAtomPairWithValueList
schrodinger.infra.structure.get_contacts(ct1, bs1, cell_for_ct2, bs2, params, hbond_params=None, salt_bridge_params=None) SwigAtomPairWithValueList
schrodinger.infra.structure.get_contacts(ct, bs, params, hbond_params=None, salt_bridge_params=None, pbc=None) SwigAtomPairWithValueList

Overload 1: Get contacts between atoms in two CTs. Checks atoms that correspond to “on” bits in the respective bitsets. If the optional hbond_params is provided, contacts that are H-bonds will be ignored. :type ct1: Structure, in :param ct1: 1st Structure object. :type bs1: MM_Bitset, in :param bs1: Bitset object of atom indices to search in the

1st structure.

Parameters:
  • ct2 (Structure, in) – 2nd Structure object.

  • bs2 (MM_Bitset, in) – Bitset object of atom indices to search in the 2nd structure.

  • params (ContactParams, in) – Query parameters used for contact search. See ContactParams for possible parameters to set.

  • hbond_params (AtomQueryParams, in, optional) – OPTIONAL: if provided, HBonds should be ignored as contacts. The HBonds will be discovered using the rules from hbond_params

  • salt_bridge_params (SaltBridgeParams, in, optional) –

    OPTIONAL: if provided, salt bridges should be

    ignored as contacts. The salt bridges will be discovered using the rules from salt_bridge_params

  • pbc (PBC, in, optional) – OPTIONAL: periodic boundary condition to be used as a reference frame for both structures.

Return type:

AtomPairWithValueList

Returns:

List of (Atom1, Atom2, distance/(sum of vdW) ratio), sorted by distance/(sum of vdW).


Overload 2: Get contacts between atoms in a CT and those in an existing DistanceCell. Checks atoms that correspond to “on” bits in the respective bitsets. If the optional hbond_params is provided, contacts that are H-bonds will be ignored. :type ct1: Structure, in :param ct1: 1st Structure object. :type bs1: MM_Bitset, in :param bs1: Bitset object of atom indices to search in the

1st structure.

Parameters:
  • cell_for_ct2 (DistanceCell, in) – DistanceCell loaded with atoms in a Structure

  • bs2 (MM_Bitset, in) – Bitset object of atom indices to search in the 2nd structure.

  • params (ContactParams, in) – Query parameters used for contact search. See ContactParams for possible parameters to set.

  • hbond_params (AtomQueryParams, in, optional) – OPTIONAL: if provided, HBonds should be ignored as contacts. The HBonds will be discovered using the rules from hbond_params

  • salt_bridge_params (SaltBridgeParams, in, optional) –

    OPTIONAL: if provided, salt bridges should be

    ignored as contacts. The salt bridges will be discovered using the rules from salt_bridge_params

Return type:

AtomPairWithValueList

Returns:

List of (Atom1, Atom2, distance/(sum of vdW) ratio), sorted by distance/(sum of vdW).


Overload 3: Get contacts between atoms in a CT and those in an existing DistanceCell. Checks atoms that correspond to “on” bits in the respective bitsets. If the optional hbond_params is provided, contacts that are H-bonds will be ignored. :type ct1: Structure, in :param ct1: 1st Structure object. :type bs1: MM_Bitset, in :param bs1: Bitset object of atom indices to search in the

1st structure.

Parameters:
  • cell_for_ct2 (DistanceCell, in) – DistanceCell loaded with atoms in a Structure

  • bs2 (MM_Bitset, in) – Bitset object of atom indices to search in the 2nd structure.

  • params (ContactParams, in) – Query parameters used for contact search. See ContactParams for possible parameters to set.

  • hbond_params (AtomQueryParams, in, optional) – OPTIONAL: if provided, HBonds should be ignored as contacts. The HBonds will be discovered using the rules from hbond_params

  • salt_bridge_params

    OPTIONAL: if provided, salt bridges should be

    ignored as contacts. The salt bridges will be discovered using the rules from salt_bridge_params

Return type:

AtomPairWithValueList

Returns:

List of (Atom1, Atom2, distance/(sum of vdW) ratio), sorted by distance/(sum of vdW).


Overload 4: Get contacts between atoms in a CT and those in an existing DistanceCell. Checks atoms that correspond to “on” bits in the respective bitsets. If the optional hbond_params is provided, contacts that are H-bonds will be ignored. :type ct1: Structure, in :param ct1: 1st Structure object. :type bs1: MM_Bitset, in :param bs1: Bitset object of atom indices to search in the

1st structure.

Parameters:
  • cell_for_ct2 (DistanceCell, in) – DistanceCell loaded with atoms in a Structure

  • bs2 (MM_Bitset, in) – Bitset object of atom indices to search in the 2nd structure.

  • params (ContactParams, in) – Query parameters used for contact search. See ContactParams for possible parameters to set.

  • hbond_params – OPTIONAL: if provided, HBonds should be ignored as contacts. The HBonds will be discovered using the rules from hbond_params

  • salt_bridge_params

    OPTIONAL: if provided, salt bridges should be

    ignored as contacts. The salt bridges will be discovered using the rules from salt_bridge_params

Return type:

AtomPairWithValueList

Returns:

List of (Atom1, Atom2, distance/(sum of vdW) ratio), sorted by distance/(sum of vdW).


Overload 5: Get contacts between atoms in a CT. Checks atoms that correspond to “on” bits in the Bitset. If the optional hbond_params is provided, contacts that are H-bonds will be ignored. :type ct: Structure, in :param ct: Structure object. :type bs: MM_Bitset, in :param bs: Bitset object of atoms to search. :type params: ContactParams, in :param params: Query parameters used for contact search. See

ContactParams for possible parameters to set.

Parameters:
  • hbond_params (AtomQueryParams, in, optional) –

    OPTIONAL: if provided, HBonds should be ignored

    as contacts. The HBonds will be discovered using the rules from hbond_params

  • salt_bridge_params (SaltBridgeParams, in, optional) –

    OPTIONAL: if provided, salt bridges should be

    ignored as contacts. The salt bridges will be discovered using the rules from salt_bridge_params

  • pbc (PBC, in, optional) – OPTIONAL: periodic boundary condition to be used a reference frame for the structure.

Return type:

AtomPairWithValueList

Returns:

List of (Atom1, Atom2, distance/(sum of vdW) ratio), sorted by distance/(sum of vdW).


Overload 6: Get contacts between atoms in a CT. Checks atoms that correspond to “on” bits in the Bitset. If the optional hbond_params is provided, contacts that are H-bonds will be ignored. :type ct: Structure, in :param ct: Structure object. :type bs: MM_Bitset, in :param bs: Bitset object of atoms to search. :type params: ContactParams, in :param params: Query parameters used for contact search. See

ContactParams for possible parameters to set.

Parameters:
  • hbond_params (AtomQueryParams, in, optional) –

    OPTIONAL: if provided, HBonds should be ignored

    as contacts. The HBonds will be discovered using the rules from hbond_params

  • salt_bridge_params (SaltBridgeParams, in, optional) –

    OPTIONAL: if provided, salt bridges should be

    ignored as contacts. The salt bridges will be discovered using the rules from salt_bridge_params

  • pbc – OPTIONAL: periodic boundary condition to be used a reference frame for the structure.

Return type:

AtomPairWithValueList

Returns:

List of (Atom1, Atom2, distance/(sum of vdW) ratio), sorted by distance/(sum of vdW).


Overload 7: Get contacts between atoms in a CT. Checks atoms that correspond to “on” bits in the Bitset. If the optional hbond_params is provided, contacts that are H-bonds will be ignored. :type ct: Structure, in :param ct: Structure object. :type bs: MM_Bitset, in :param bs: Bitset object of atoms to search. :type params: ContactParams, in :param params: Query parameters used for contact search. See

ContactParams for possible parameters to set.

Parameters:
  • hbond_params (AtomQueryParams, in, optional) –

    OPTIONAL: if provided, HBonds should be ignored

    as contacts. The HBonds will be discovered using the rules from hbond_params

  • salt_bridge_params

    OPTIONAL: if provided, salt bridges should be

    ignored as contacts. The salt bridges will be discovered using the rules from salt_bridge_params

  • pbc – OPTIONAL: periodic boundary condition to be used a reference frame for the structure.

Return type:

AtomPairWithValueList

Returns:

List of (Atom1, Atom2, distance/(sum of vdW) ratio), sorted by distance/(sum of vdW).


Overload 8: Get contacts between atoms in a CT. Checks atoms that correspond to “on” bits in the Bitset. If the optional hbond_params is provided, contacts that are H-bonds will be ignored. :type ct: Structure, in :param ct: Structure object. :type bs: MM_Bitset, in :param bs: Bitset object of atoms to search. :type params: ContactParams, in :param params: Query parameters used for contact search. See

ContactParams for possible parameters to set.

Parameters:
  • hbond_params

    OPTIONAL: if provided, HBonds should be ignored

    as contacts. The HBonds will be discovered using the rules from hbond_params

  • salt_bridge_params

    OPTIONAL: if provided, salt bridges should be

    ignored as contacts. The salt bridges will be discovered using the rules from salt_bridge_params

  • pbc – OPTIONAL: periodic boundary condition to be used a reference frame for the structure.

Return type:

AtomPairWithValueList

Returns:

List of (Atom1, Atom2, distance/(sum of vdW) ratio), sorted by distance/(sum of vdW).

schrodinger.infra.structure.get_entry_bitset(st, entry_id) MM_Bitset
schrodinger.infra.structure.get_format_from_extension(filename) schrodinger::FileFormat

Determines the file format of a given file

Parameters:

filename (boost::filesystem::path) – file path

Return type:

int

Returns:

corresponding file format enum

Raises:

std::out_of_range if file extension is unrecognized

schrodinger.infra.structure.get_hydrogen_bonds(ct1, bs1, ct2, bs2, params, input_rings1, input_rings2, pbc=None) SwigAtomPairList
schrodinger.infra.structure.get_hydrogen_bonds(ct, params, input_rings, pbc=None) SwigAtomPairList

Overload 1: Get hydrogen bonds between the atoms in the two provided bitsets. :type ct1: Structure, in :param ct1: First Structure object. :type bs1: MM_Bitset, in :param bs1: Bitset object corresponding to first

structure.

Parameters:
  • ct2 (Structure, in) – Second Structure object. structure.

  • bs2 (MM_Bitset, in) – Bitset object corresponding to second structure.

  • params (std::vector< std::shared_ptr< schrodinger::structure_interaction::AtomQueryParams >,std::allocator< std::shared_ptr< schrodinger::structure_interaction::AtomQueryParams > > >, in) –

    Query parameters to use for acceptor-donor

    H search (See also: AtomQueryParams class for

    possible parameters to set).

  • input_rings1 (std::vector<std::shared_ptr<schrodinger::StructureRing> >, in) – SSSR for first structure, these are only needed for aromatic h bond determination. If value is NULL and AROMATIC_H_DONOR is in in AtomQueryParams, throws std::invalid_argument.

  • input_rings2 (std::vector<std::shared_ptr<schrodinger::StructureRing> >, in) – SSSR for second structure, these are only needed for aromatic h bond determination. If value is NULL and AROMATIC_H_DONOR is in in AtomQueryParams, throws std::invalid_argument.

  • pbc (PBC, in, optional) – OPTIONAL: periodic boundary condition to be used as a reference frame for both structures.

Return type:

AtomPairList

Returns:

acceptor-donor H pairs corresponding to given structures.


Overload 2: Get the hydrogen bonds within complete given structure. :type ct: Structure, in :param ct: Structure object :type params: std::vector< std::shared_ptr< schrodinger::structure_interaction::AtomQueryParams >,std::allocator< std::shared_ptr< schrodinger::structure_interaction::AtomQueryParams > > >, in :param params: Query parameters to use for acceptor-donor

H search (See also: AtomQueryParams class for

possible parameters to set).

Parameters:
  • input_rings (std::vector<std::shared_ptr<schrodinger::StructureRing> >, in) – SSSR for the structure, these are only needed for aromatic h bond determination. If value is NULL and AROMATIC_H_DONOR is in in AtomQueryParams, throws std::invalid_argument.

  • pbc (PBC, in, optional) – OPTIONAL: periodic boundary condition to be used as a reference frame for both structures. If a PBC is used, rings should be generated with the PBC parameter.

Return type:

AtomPairList

Returns:

acceptor-donor H pairs within the structure.


Overload 3: Get the hydrogen bonds within complete given structure. :type ct: Structure, in :param ct: Structure object :type params: std::vector< std::shared_ptr< schrodinger::structure_interaction::AtomQueryParams >,std::allocator< std::shared_ptr< schrodinger::structure_interaction::AtomQueryParams > > >, in :param params: Query parameters to use for acceptor-donor

H search (See also: AtomQueryParams class for

possible parameters to set).

Parameters:
  • input_rings (std::vector<std::shared_ptr<schrodinger::StructureRing> >, in) – SSSR for the structure, these are only needed for aromatic h bond determination. If value is NULL and AROMATIC_H_DONOR is in in AtomQueryParams, throws std::invalid_argument.

  • pbc – OPTIONAL: periodic boundary condition to be used as a reference frame for both structures. If a PBC is used, rings should be generated with the PBC parameter.

Return type:

AtomPairList

Returns:

acceptor-donor H pairs within the structure.

schrodinger.infra.structure.get_index(arg1) MM_Index
Return type:

int

Returns:

: Atom index. Useful for constructing vectors of indices for legacy interfaces or local use, e.g. transform(atoms.begin(), atoms.end(), atom_indices.begin(), get_index)

schrodinger.infra.structure.get_pi_cation_interactions(ct, input_rings, params) SwigPiCationList
schrodinger.infra.structure.get_pi_cation_interactions(ct1, atomic_bs1, rings1, ct2, atomic_bs2, rings2, params) SwigPiCationList

Overload 1: Get the Pi-Cation interaction pair between atoms of the given structure and rings. This doesn’t perform any validation if rings are from the given structure. :type ct: Structure, in :param ct: Structure object. :type input_rings: std::vector<std::shared_ptr<schrodinger::StructureRing> >, in :param input_rings: SSSR rings related to the structure, :type params: PiCationParams, in :param params: Query parameters to use for Pi-Cation search

(See also: PiCationParams class for possible

parameters to set).

Return type:

PiCationList

Returns:

Pi-Cation interaction pair corresponding to given structure.


Overload 2: Get the Pi-Cation interaction pair between atoms of the provided bitset and rings. This doesn’t perform any validation if rings are from the given structure. And also assume that the rings are filtered on the given bitset using schrodinger::get_sssr(..). The procedure uses :type ct1: Structure, in :param ct1: Structure object corresponding to first structure. :type rings1: std::vector<std::shared_ptr<schrodinger::StructureRing> >, in :param rings1: SSSR rings related to first structure,

filtered to remove the rings you don’t want in your interactions.

Parameters:
  • atomic_bs1 (MM_Bitset, in) – Bitset object corresponding to first structure to operate on a subset.

  • ct2 (Structure, in) – Structure object corresponding to second structure.

  • rings2 (std::vector<std::shared_ptr<schrodinger::StructureRing> >, in) – SSSR rings related to second structure.

  • atomic_bs2 (MM_Bitset, in) – Bitset object corresponding to second structure to operate on a subset.

  • params (PiCationParams, in) –

    Query parameters to use for Pi-Cation search

    (See also: PiCationParams class for possible

    parameters to set).

Return type:

PiCationList

Returns:

Pi-Cation interaction pair corresponding to given structures.

schrodinger.infra.structure.get_pi_pi_interactions(input_rings, params, pbc=None) SwigPiPiInteractionList
schrodinger.infra.structure.get_pi_pi_interactions(input_rings1, input_rings2, params, pbc=None) SwigPiPiInteractionList

Overload 1: Get Pi-Pi interactions between given structure rings. :type input_rings: std::vector<std::shared_ptr<schrodinger::StructureRing> >, in :param input_rings: SSSR rings corresponding to structure :type params: PiPiParams, in :param params: Query parameters to use for Pi-Pi search

(See also: PiPiParams class for possible

parameters to set).

Parameters:

pbc (PBC, in, optional) – OPTIONAL: periodic boundary condition to be used as a reference frame for both structures.

Return type:

PiPiList

Returns:

Pi-Pi interaction pairs corresponding to given structure rings.


Overload 2: Get Pi-Pi interactions for structure rings in the first set with structure rings in the second set. :type input_rings1: std::vector<std::shared_ptr<schrodinger::StructureRing> >, in :param input_rings1: SSSR rings corresponding to first structure. :type input_rings2: std::vector<std::shared_ptr<schrodinger::StructureRing> >, in :param input_rings2: SSSR rings corresponding to second structure. :type params: PiPiParams, in :param params: Query parameters to use for Pi-Pi search

(See also: PiPiParams class for possible

parameters to set).

Parameters:

pbc (PBC, in, optional) – OPTIONAL: periodic boundary condition to be used as a reference frame for both structures.

Return type:

PiPiList

Returns:

Pi-Pi interaction pairs corresponding to given structure rings.


Overload 3: Get Pi-Pi interactions for structure rings in the first set with structure rings in the second set. :type input_rings1: std::vector<std::shared_ptr<schrodinger::StructureRing> >, in :param input_rings1: SSSR rings corresponding to first structure. :type input_rings2: std::vector<std::shared_ptr<schrodinger::StructureRing> >, in :param input_rings2: SSSR rings corresponding to second structure. :type params: PiPiParams, in :param params: Query parameters to use for Pi-Pi search

(See also: PiPiParams class for possible

parameters to set).

Parameters:

pbc – OPTIONAL: periodic boundary condition to be used as a reference frame for both structures.

Return type:

PiPiList

Returns:

Pi-Pi interaction pairs corresponding to given structure rings.

schrodinger.infra.structure.get_property_type(property_name) schrodinger::PropertyType
schrodinger.infra.structure.get_residue_atoms(atom) MM_Bitset

Get a bitset of atoms in the same residue as the specified atom.

schrodinger.infra.structure.get_residue_from_ccd(residue_name) std::optional< schrodinger::Structure >
schrodinger.infra.structure.get_ring_spears(ring_st, spear_st, ring_bs, spear_bs, ring_pbc=None, spear_pbc=None, max_results=0, max_ring_size=12, cutoff_distance=4.0, allow_distorted=False) SwigRingSpearList
schrodinger.infra.structure.get_ring_spears(ring_st, spear_st, ring_pbc=None, spear_pbc=None, max_results=0, max_ring_size=12, cutoff_distance=4.0, allow_distorted=False) SwigRingSpearList
schrodinger.infra.structure.get_ring_spears(st, bs, pbc=None, max_results=0, max_ring_size=12, cutoff_distance=4.0, allow_distorted=False) SwigRingSpearList
schrodinger.infra.structure.get_ring_spears(st, pbc=None, max_results=0, max_ring_size=12, cutoff_distance=4.0, allow_distorted=False) SwigRingSpearList
schrodinger.infra.structure.get_salt_bridges(ct1, bs1, ct2, bs2, params) SwigSaltBridgeList
schrodinger.infra.structure.get_salt_bridges(ct, bs, params) SwigSaltBridgeList

Overload 1: Get salt bridges between atoms in two CTs. Checks atoms that correspond to “on” bits in the respective bitsets. The procedure uses the structure’s PBC :type ct1: Structure, in :param ct1: 1st Structure object. :type bs1: MM_Bitset, in :param bs1: Bitset object of atom indices to search in the

1st structure.

Parameters:
  • ct2 (Structure, in) – 2nd Structure object.

  • bs2 (MM_Bitset, in) – Bitset object of atom indices to search in the 2nd structure.

  • params (SaltBridgeParams, in) – Query parameters used for salt bridge search. See SaltBridgeParams for possible parameters to set.

Return type:

SaltBridgeList

Returns:

Anion-Cation interaction pair corresponding to given structures


Overload 2: Get salt bridges between atoms in a CT. Checks atoms that correspond to “on” bits in the Bitset. :type ct: Structure, in :param ct: Structure object. :type bs: MM_Bitset, in :param bs: Bitset object of atoms to search. :type params: SaltBridgeParams, in :param params: Query parameters used for contact search. See

SaltBridgeParams for possible parameters to set.

Return type:

SaltBridgeList

Returns:

Anion-Cation interaction pair corresponding to given structures

schrodinger.infra.structure.get_scratch_entry_name() std::string_view const &
schrodinger.infra.structure.get_sssr(ct, pbc=None) std::shared_ptr< schrodinger::RingList >
schrodinger.infra.structure.get_sssr(ct, atomic_bs, pbc=None) std::shared_ptr< schrodinger::RingList >

Overload 1: Get the SSSR rings from the given structure :type ct: Structure, in :param ct: Structure object :rtype: std::vector<std::shared_ptr<schrodinger::StructureRing> > :return: Computed SSSR rings


Overload 2: Get the SSSR rings from the given structure filtered by the given bitset. A ring will be included if any of its atoms are in the provided bitset. :type ct: Structure, in :param ct: Structure object :type atomic_bs: MM_Bitset, in :param atomic_bs: Bitset corresponding to the given structure :rtype: std::vector<std::shared_ptr<schrodinger::StructureRing> > :return: Computed SSSR rings


Overload 3: Get the SSSR rings from the given structure filtered by the given bitset. A ring will be included if any of its atoms are in the provided bitset. :type ct: Structure, in :param ct: Structure object :type atomic_bs: MM_Bitset, in :param atomic_bs: Bitset corresponding to the given structure :rtype: std::vector<std::shared_ptr<schrodinger::StructureRing> > :return: Computed SSSR rings

schrodinger.infra.structure.get_workflow_action_menu(st) schrodinger::WorkflowType

Obtains the Workflow Action Menu from the given structure object.

Return type:

int

Returns:

workflow action menu enum

Raises:

std::runtime_error if not Maestro format

schrodinger.infra.structure.grow_peptide(old_residue_atom, new_amino_acid, grow_direction=Forward, secondary_structure=Extended, joining_geometry=Trans)
schrodinger.infra.structure.in_same_residue(arg1, arg2) bool
Return type:

boolean

Returns:

whether the atoms in the same residue

schrodinger.infra.structure.in_same_structure(arg1, arg2) bool
schrodinger.infra.structure.is_cms_file(filename) bool
Parameters:

filename (boost::filesystem::path) – file path

Return type:

boolean

Returns:

true if the filename has an known cms extension: “.cms”, “.cms.gz” or “.cmsgz”.

schrodinger.infra.structure.is_file_supported_by_structure_writer(filename) bool

Determines if the given file can be written to by schrodinger::StructureWriter :type filename: boost::filesystem::path :param filename: given file name :rtype: boolean :return: true if the given file is writable by

schrodinger::StructureWriter

schrodinger.infra.structure.is_glide_pose_viewer_file(filename) bool
Parameters:

filename (boost::filesystem::path) – file path

Return type:

boolean

Returns:

whether the given file is a glide pose viewer file

schrodinger.infra.structure.is_scratch_entry_name(entry_name) bool
schrodinger.infra.structure.is_watermap_file(filepath) bool
Parameters:

filepath: – is file path.

Return type:

boolean

Returns:

true if file is of watermap type, else return false.

schrodinger.infra.structure.mirror_structure_properties(src, dest)
schrodinger.infra.structure.mirror_structure_properties_and_blocks(src, dest)
schrodinger.infra.structure.mmbs_get_memory_usage() std::tuple< uint64_t,uint64_t >
Return type:

std::tuple< uint64_t,uint64_t >

Returns:

The number of bitsets in use and the amount of memory used by them

schrodinger.infra.structure.mmbs_get_stats() std::string
Return type:

string

Returns:

Human-readable report on in-use bitsets

schrodinger.infra.structure.mmbs_in_use(bs) MMbool

Overload to check whether the MMbs handle underlying a MM_Bitset is valid. Avoids casting the MM_Bitset into a MMbs and, eventually, throwing if a invalid/uninitialized MM_Bitset is passed to the other overload.

schrodinger.infra.structure.mutate(old_atom, fragment)
schrodinger.infra.structure.mutate_amino_acid(old_residue_atom, fragment)
schrodinger.infra.structure.mutate_amino_acid(old_residue_atom, fragment) None
schrodinger.infra.structure.mutate_nucleotide(old_nucleotide_atom, fragment)
schrodinger.infra.structure.mutate_nucleotide(old_residue_atom, fragment) None
schrodinger.infra.structure.process_structure_properties_for_writing(st, use_data_names) std::vector< schrodinger::processed_property,std::allocator< schrodinger::processed_property > >
schrodinger.infra.structure.read_workflow_menu_header(filename) schrodinger::WorkflowType

Reads the Workflow Action Menu property from the given Maestro file. If a Glide pose viewer file with the proper extension, POSE_VIEWER is returned. If no property is present, NONE is returned.

Return type:

int

Returns:

workflow action menu enum

Raises:

std::runtime_error if not Maestro format

schrodinger.infra.structure.reorder_entries(st, new_entry_id_order)
schrodinger.infra.structure.rmsd(st1, st2) double
schrodinger.infra.structure.rmsd(st1, atoms1, st2, atoms2) double

Calculate the in-place RMSD between two Structures (or two sets of atoms)

schrodinger.infra.structure.rmsd_with_symmetry(ref_st, test_st) double
schrodinger.infra.structure.rmsd_with_symmetry(ref_st, ref_atoms, test_st, test_atoms) double
schrodinger.infra.structure.set_all_atoms_entry_id(st, entry_id=NO_ENTRY_ID)
schrodinger.infra.structure.set_entry_id(st, atoms, entry_id=NO_ENTRY_ID)
schrodinger.infra.structure.set_entry_id(atom, entry_id=NO_ENTRY_ID) None
schrodinger.infra.structure.set_workflow_action_menu(st, value)

Writes the Workflow Action Menu as a structure-level property on the given structure object.

Parameters:
  • st (Structure) – structure object

  • value (int) – workflow action menu property value to set

Raises:

std::runtime_error if unable to write workflow action menu

schrodinger.infra.structure.split_structure_files(filenames, out_prefix, file_count=10, gzip=False, strategy=FileSize) SwigStringList
schrodinger.infra.structure.structure_is_valid_amino_acid_fragment(st) bool
schrodinger.infra.structure.superimpose(st1, st2)
schrodinger.infra.structure.superimpose(st1, atoms1, st2, atoms2, move_which=STRUCTURE) None

Overload 1: Superimpose two Structures


Overload 2: Superimpose two sets of atoms Structures


Overload 3: Superimpose two sets of atoms Structures

schrodinger.infra.structure.to_atom_indices_list(atoms_list) SwigDcNonPbcAtomIdxList

Converts a list of StructureAtom objects to a list of atom indices. :type atoms_list: std::vector< schrodinger::StructureAtom,std::allocator< schrodinger::StructureAtom > > :param atoms_list: The list of StructureAtom objects. :rtype: std::vector< int,std::allocator< int > > :return: A list of atom indices.

schrodinger.infra.structure.topologically_equivalent(ct1, ct2) bool

Tests if two structures are 2d equivalent (x,y,z) + bonding + stereo despite atom numbering being different. param[in] ct1 Structure object param[in] ct2 Structure object :rtype: boolean :return: false if structures are equivalent

schrodinger.infra.structure.topologically_equivalent_without_stereo(ct1, ct2) bool