schrodinger.application.canvas.r_group module

Detect r-groups from CanvasMCS, CombiGlide, or SMARTS

Description: A module that contains function to detect r-groups. The core is determined either from CombiGlide results, a user-submitted SMARTS pattern, or a Canvas Maximum Common Substructure.

Copyright Schrodinger, LLC. All rights reserved.

class schrodinger.application.canvas.r_group.Data

Bases: object

Class to store intermediary and finals data structures for R-group analysis. Methods starting with add append information on a CT by CT basis to data structures.

__init__()
set_prop_list(proplist)

Create list (self.property_list) of every non string property in a ct Checks for existing properties and prevents duplicates

get_prop_list()
add_property_value(prop, value)

Add property value to self.property_values dict Done in order of cts

get_prop_values()
add_bonds_in_rings(lol, index)
get_bonds_in_rings()
add_core_ct(ct)
add_rg_ct(position, ct)
get_rg_ct()
get_attachment_points()
add_attachment_points(ct_data, index)
print_attachment_points()
print_attachment_points_ct(ct_index)
add_rings(rings, i)
get_rings()
add_functional_rings(rings, ct_index)
get_functional_rings()
add_core(core, i)
get_core(index)
get_cores()
add_core_bonds(bonds, i)
get_core_bonds(index)
add_ct_offset(file_offset)
get_ct_offsets()
add_position()
add_r_group(position_number, smiles, ct_index)
get_r_groups()
add_r_groups_to_atom(atom_index, value)
get_r_group_for_atom(atom)
get_r_groups_per_atom()
schrodinger.application.canvas.r_group.add_methyl_ring(ct, principal_bond, bond_list, attachment_positions, output, grow=True)

Add capping methyls to ring like r_groups

Parameters
  • ct (schrodinger.structure.Structure object) – structure that you are adding a capping group to

  • principal_bond (list) – [ _StructureAtom of to_atom, _StructureAtom of from_atom, bond_order ]

  • bond_list (list) – This contains an outer list of all bonds (specified in in the same way as principal_bond) which contain rings that will need to be capped

  • attachment_positions (list) – list of the index of bonds (from the data.r_group_attachment_bonds ), which need to be capped with rings

Returns

Returns a tuple of structure of the fragment, to_atom index and from-atom index

class schrodinger.application.canvas.r_group.TempAtom(x, y, z, index, atomtype, attach='')

Bases: object

__init__(x, y, z, index, atomtype, attach='')
get_index()
get_x()
get_y()
get_z()
get_type()
set_from_atom()
is_from_atom()
get_attach()
schrodinger.application.canvas.r_group.add_methyl_standard(ct, core_atom, side_atom, output, grow=True)

Breaks bond between core and side atom Grows Carbon off of side-atom, maintaining bond order of core_atom - side_atom bond

Parameters
  • ct (schrodinger.structure.Structure object) – structure that you are adding a capping group to

  • core_atom (int) – index of the core atom

  • side_atom (int) – index of the attachment atom

Returns

Returns a tuple of structure of the fragment, to_atom index and from-atom index

schrodinger.application.canvas.r_group.add_to_data(data, fragment, from_atom, to_atom, to_atom_chirality, j, ct_index)
schrodinger.application.canvas.r_group.checkMultipleMappings(fragment, smiles, from_atom, to_atom)

This function checks whether a given fragment may match SMILES string multiple times. In that case a ‘canonical’ match is selected. In no mapping is found we return (-1, -1) as in previous version of add_to_data function. We assume that calling functions know how to deal with this case.

Parameters
  • fragment (structure.Structure) – r-group structure

  • from_atom (int) – atom index of ‘from’ atom in fragment. This is a core atom that was replaced with a cap group.

  • to_atom (int) – atom index of ‘to’ atom in fragment. This is atom in r-group attached to core.

Parame smiles

SMILES string

Returns

tuple that contains positions of ‘from’ and ‘to’ atoms in SMILES mapping. These values are 0-indexed. If no mapping is found we return (-1, -1).

Return type

tuple

schrodinger.application.canvas.r_group.determine_attachments(core, ct, ct_index, data)
schrodinger.application.canvas.r_group.get_atom_chirality(ct, atom)
schrodinger.application.canvas.r_group.determine_rings_in_attachments(functional_rings, r_group_attachment_bonds)
schrodinger.application.canvas.r_group.determine_attachment_bonds(ct, core, r_groups_per_atom)
:return list of lists. Inner element is the

[core_atom, bonded_atom, bond_order ] of each attachment point

schrodinger.application.canvas.r_group.conglomerate_rings(rings, core)

This function takes the mmssr and combines rings if they are entirely part of the core structure. Since we know in RGA we are never breaking the core structure, this is a safe operation.

Parameters
  • rings – output from a mmsssr calculation on the entire output structure

  • core – list of atoms in the core structure

schrodinger.application.canvas.r_group.bond_in_ring(ring, bond)
schrodinger.application.canvas.r_group.get_connected_ring_bonds(ct_rings, ring)

This function returns any other rings that are also connected to any attachment bonds that are part of the ring fed to the function.

Parameters
  • ct_rings (list) – Outer list is a list of each ring that is stored in the data class. Inner list is an index of the attachment bond that is present in that ring

  • ring (list) – List of attachment bonds that are present in the ring

exception schrodinger.application.canvas.r_group.RGroupException

Bases: Exception

This is a special exception, which is thrown when for some reason r-group calculation can not be completed. When this exception is caught remaining function calls in calculate() function are not made.

classmethod fromSmartsError(err)

This function checks whether an exception err was due to invalid SMARTS pattern.

Parameters

err (Exception) – exception

Returns

exception with specific message

Return type

RGroupException

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

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

class schrodinger.application.canvas.r_group.RGroupFinder(input_file, smarts, temp_dir=None, thread=None, use_mm=1, use_fp_sim=False, sa_seed=None, t_factor=None, tmax_mult=None)

Bases: object

This class is used to find optimal core alignments and determines r-groups for input structures. This is a base class that uses ‘original’ algorithm that tries to minimize the number of r-groups.

__init__(input_file, smarts, temp_dir=None, thread=None, use_mm=1, use_fp_sim=False, sa_seed=None, t_factor=None, tmax_mult=None)

This function creates an instance of RGroupFinder object.

Parameters
  • input_file (str) – name of the input structure file

  • smarts (list) – list of cores SMARTS patterns

  • temp_dir (str) – name of temporary directory

  • thread (calculation_thread) – calculation thread (optional)

  • use_mm (int) – type of multiple matching algorithm (1-SA and 2-DEE)

  • use_fp_sim (bool) – True to use fingerprint similarity between pairs of ‘states’

  • sa_seed (int) – SimualtedAnnealing random generator seed

  • t_factor – SimulatedAnnealing temperature factor

  • tmax_mult (float) – SimualtedAnnealing parameter to set starting temperature

calculate()

This function is called to compute optimal molecule alignment and determine attached r-groups. It defines the order of calls that need to be made as in ‘Template Method’ design pattern. When calculation is done here self.data object can be retrieved to get results.

schrodinger.application.canvas.r_group.get_rgroup_DEE(input_file, SMARTS, temp_dir=None, thread=None, use_mm=1, use_fp_sim=False, sa_seed=None, t_factor=None, tmax_mult=None)
schrodinger.application.canvas.r_group.get_rgroup_SMARTS(input_file, SMARTS, temp_dir=None, thread=None)

Takes input_file and SMARTS_pattern and defines r-groups input_file - input .mae file SMARTS_pattern defining core

schrodinger.application.canvas.r_group.get_rgroup_MCS(input_file, MCS_index, temp_dir=None, thread=None, use_mm=0, use_fp_sim=False, sa_seed=None, t_factor=None, tmax_mult=None)

Determines the core and r-groups using the canvasMCS method.

Parameters
  • input_file (string) – Absolute path to mae file to run the canvasMCS utility on

  • MCS_index (int/str) – atomtyping scheme to use in canvasMCS

  • temp_dir (str) – name of temporary directory

  • thread (calculation_thread) – calculation thread (optional)

  • use_mm (int) – type of multiple matching algorithm (0-Original method, 1-SA and 2-DEE)

  • use_fp_sim (bool) – True to use fingerprint similarity between pairs of ‘states’

  • sa_seed (int) – SimulatedAnnealing random number generator seed. ‘None’ will use the SimulatedAnnealing defaults.

  • t_factor – SimulatedAnnealing temperature factor. ‘None’ will use the SimulatedAnnealing defaults.

  • tmax_mult (float) – SimulatedAnnealing parameter to set starting temperature. ‘None’ will use the SimulatedAnnealing defaults.

schrodinger.application.canvas.r_group.getMCSMatches(input_file, MCS_index, temp_dir=None, thread=None)

This function is used to setup and run MCS calculation on a given input file. It returns a list of matching SMARTS patterns.

Parameters
  • input_file (string) – Absolute path to mae file to run the canvasMCS utility on

  • MCS_index (int/str) – atomtyping scheme to use in canvasMCS

  • temp_dir (str) – name of temporary directory

  • thread (calculation_thread) – calculation thread (optional)

Returns

list of matching SMARTS patterns

Return type

list

schrodinger.application.canvas.r_group.find_best_core_match(ct, cores, ref_ct=None, ref_core=None)
schrodinger.application.canvas.r_group.write_core_only(structure, attachment_points, core_indexes, core_bonds, temp_dir=None)
schrodinger.application.canvas.r_group.add_ct_data(data, core, ct, ct_index)

Add to the determine the rings and r-groups per atom for each ct and add the following data structures: data.add_functional_rings data.add_rings data.add_r_groups_to_atom

Parameters
  • core (list) – list of atoms belonging to the core

  • ct (schrodinger.structure.Structure object) – structure object corresponding to the core atoms

schrodinger.application.canvas.r_group.write_output(data, input_file, smarts, cli=False, temp_dir=None, thread=None, settings=None)

This function writes RGA results to output files.

Parameters
  • data (Data) – data object that contains calculation results

  • input_file (str) – name of input file used in calculation

  • smarts (bool) – True when MCS/SMARTS method was used and False otherwise

  • cli (bool) – True if RGA was run from CL without GUI (this is a guess!)

  • temp_dir (str) – name of temporary directory

  • thread (calculation_thread) – thread used to run RGA calculation

Return type

Settings

Returns

Settings data object, which is used in RGA GUI

schrodinger.application.canvas.r_group.determine_rgroup_indexes(ct, number_of_groups)
schrodinger.application.canvas.r_group.evaluate_smarts_ex(structure, smarts, stereo='annotation_and_geom', start_index=1, uniqueFilter=False, allowRelativeStereo=False, rigorousValidationOfSource=False, hydrogensInterchangeable=True)

Evaluate SMARTS patterns using the Canvas libraries.

Returns a list of lists of ints. Each list of ints is a list of atom indices matching the SMARTS pattern.

Parameters
  • structure (Structure or schrodinger.application.canvas.base.ChmMol) – Structure to search for matching substructures.

  • smarts (str) – SMARTS string used to match substructures.

  • stereo (enum) – Specify how to determine the stereochemistry of a ChmMol from a Structure. Can be STEREO_FROM_GEOMETRY, STEREO_FROM_ANNOTATION, STEREO_FROM_ANNOTATION_AND_GEOM, or NO_STEREO. See schrodinger.structutils.smiles.SmilesGenerator.__init__ for descriptions of these options.

  • start_index (int) – Specify the start index of the atom indices returned. Defaults to Structure mode, which is 1-based. Pass in 0 for 0-based indices.

Return type

list

Returns

Each value is a list of atom indices matching the SMARTS pattern.

schrodinger.application.canvas.r_group.import_canvas()

Perform a lazy import of canvas libraries to speed up loading time.