schrodinger.application.matsci.smartsutils module¶
Utilities for working with SMARTS patterns
Copyright Schrodinger, LLC. All rights reserved.
- class schrodinger.application.matsci.smartsutils.SMARTSGroupData(number, name, pattern, indexes)¶
Bases:
tuple
- indexes¶
Alias for field number 3
- name¶
Alias for field number 1
- number¶
Alias for field number 0
- pattern¶
Alias for field number 2
- schrodinger.application.matsci.smartsutils.defines_integer_atom_props(st)¶
Return True if the given structure has SMARTS-related integer atom properties defined. These properties were originally used when each atom was forced to belong to a single SMARTS group. That condition has been relaxed but these properties are kept for backwards compatibility.
- Parameters
st (schrodinger.structure.Structure) – the structure
- Return type
bool
- Returns
True if such properties are defined
- schrodinger.application.matsci.smartsutils.get_group_names(atom)¶
Return a list of group names for the given atom.
- Parameters
atom (schrodinger.structure._StructureAtom) – the atom
- Return type
list
- Returns
group names
- schrodinger.application.matsci.smartsutils.get_group_atom_indices(atom)¶
Return a list of group atom indices for the given atom.
- Parameters
atom (schrodinger.structure._StructureAtom) – the atom
- Return type
list
- Returns
group atom indices
- schrodinger.application.matsci.smartsutils.get_group_numbers(atom)¶
Return a list of group numbers for the given atom.
- Parameters
atom (schrodinger.structure._StructureAtom) – the atom
- Return type
list
- Returns
group numbers
- schrodinger.application.matsci.smartsutils.append_property(atom, key, value)¶
Append the given property to the atom.
- Parameters
atom (schrodinger.structure._StructureAtom) – the atom
key (str) – the property key
value (str) – the property value
- schrodinger.application.matsci.smartsutils.validate_name(name)¶
Make sure name has the correct set of characters
- Parameters
name (str) – The string to check
- Return type
bool
- Returns
True if name has no invalid characters, False if any characters are invalid
- exception schrodinger.application.matsci.smartsutils.SMARTSGroupError¶
Bases:
Exception
Class for exceptions related to SMARTS group finding
- schrodinger.application.matsci.smartsutils.delete_group_properties(struct)¶
Delete all SMARTS group properties (structure and atom) from the structure
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to delete properties from
- schrodinger.application.matsci.smartsutils.find_group_data(struct)¶
Find an SMARTS group data on the structure
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to find groups on- Return type
dict
- Returns
A dictionary. Keys are smarts group numbers, values are
SMARTSGroupData
named tuples for the SMARTS group with that number- Raises
SMARTSGroupError – If something in the data is not consistent
- schrodinger.application.matsci.smartsutils.get_rdkit_atoms(smarts)¶
Return a collection of rdkit atoms for the given SMARTS. The return value has the length of a potential match group, for example for ‘cc’ this length is 2, for ‘[$([NH]([CH2])[CH2])]C’ it is 2, for [n-0X2].[n-0X2] it is 2, etc., even though there might be any number of matches if the pattern was matched.
- Parameters
smarts (str) – the SMARTS pattern
- Raises
RuntimeError – if rdkit has a problem with the SMARTS
- Return type
rdkit.Chem.rdchem._ROAtomSeq
- Returns
the rdkit atoms
- schrodinger.application.matsci.smartsutils.is_smarts_bonding_pair(smarts)¶
Return True if the given SMARTS would match a bonding pair, False otherwise.
- Parameters
smarts (str) – the SMARTS pattern
- Return type
bool
- Returns
True if the SMARTS would match a bonding pair, False otherwise
- class schrodinger.application.matsci.smartsutils.SMARTSGroup(name, pattern, logger=None)¶
Bases:
object
Handles matching and record-keeping for a SMARTS patter
- __init__(name, pattern, logger=None)¶
Create a SMARTSGroup object
- Parameters
name (str) – The name of this SMARTS group
pattern (str) – The SMARTS pattern for this group
- Raises
ValueError – If name has invalid characters
ValueError – If the SMARTS is invalid
- nextNumber(numbers_used)¶
Get the next unused group number
- Parameters
numbers_used (set) – Each member is a number that has already been used for a group and is unavailable. The number returned by this function is added to the numbers_used set.
- Return type
int
- Returns
The lowest available number. This number will have been added to the numbers_used set.
- prioritizeBackbone(matches, backbone_atoms)¶
Prioritize matches that are in backbone of the molecule
- Parameters
matches (list) – List of list containing the smart pattern matches
backbone_atoms (dict) – dictionary with key as molecule number and backbone atoms index ordered in a list
- Returns
List of list containing the smart pattern matches where the matches in the backbone appears first
- Return type
list
- prioritizeSameMonomers(struct, matches)¶
Prioritize matches that belong to same (or least) number of unique monomers.
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to find SMARTS pattern match inmatches (list) – List of list containing the smart pattern matches
- Returns
List of list containing the smart pattern matches where the matches that belong to same (or least) number of unique monomers appear first
- Return type
list
- orderedMatches(struct, backbone_atoms)¶
Evaluate the smarts pattern matches, where matches are ordered to follow network sequence. Consider backbone atoms matches first in the sequence and the side chain matches are then ordered according to atom index.
- Parameters
struct (schrodinger.structure.Structure) – The structure to delete properties from
backbone_atoms (dict) – dictionary with key as molecule number and backbone atoms index ordered in a list
- Return list(list)
List of list containing the smart pattern matches
- getSmartsDictData(struct, match, allow_partial_overlap)¶
Gets the smarts dictionary data for the passed match
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to which the SMARTS match belongs tomatch (list) – The list of atom indices that belong to the SMARTS match
allow_partial_overlap (bool) – Whether partial overlap is allowed
- Returns
Dictionary where the key is a SMARTSGroupData and the value is the list of atom indices that belong to the group
- Return type
dict
- Raises
ValueError – If overlapping is not supported due to backwards incompatibility
- isAlreadyMatched(match, smarts_group_matches)¶
Check if atoms have already been matched to the same SMARTS pattern. This allows creating a group from some atoms already matched to some group and other atoms already matched to some other group but prevents creating a group that is a sub-group of another group
- Parameters
match (list) – The list of atom indices that belong to the SMARTS match
smarts_group_matches (dict) – Dictionary where the key is a unique SMARTS pattern and the value is the list of atom indices that belong to the group
- Return type
bool
- Returns
Whether the match has already been matched to same SMARTS
- onlyDifferByAHydrogen(struct, match, smarts_group_matches)¶
Check all atoms except a single H atom have already been matched to the same SMARTS group. This prevents matching a terminal methyl 3 times as is the case for a polymer head or tail monomer with a terminating hydrogen
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to which the SMARTS match belongs tomatch (list) – The list of atom indices that belong to the SMARTS match
smarts_group_matches (dict) – Dictionary where the key is a unique SMARTS pattern and the value is the list of atom indices that belong to the group
- Return type
bool
- Returns
Whether all atoms except a single H atom have already been matched
- isOverlapAllowedInMatch(struct, match, smarts_group_data_dict)¶
Determines if overlap is allowed for the current match.
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to which the SMARTS match belongs tomatch (list) – The list of atom indices that belong to the SMARTS match
smarts_group_data_dict (dict) – Dictionary where the key is a SMARTSGroupData and the value is the list of atom indices that belong to the group
- Return type
bool
- Returns
Whether overlapping is allowed for the current match
- addMatchToAtoms(struct, numbers_used, match)¶
Adds match information to structure atom property
- Parameters
struct (
schrodinger.structure.Structure
) – The structure to which the SMARTS match belongs tonumbers_used (set) – Each member is a number that has already been used for a group and is unavailable. The number returned by this function is added to the numbers_used set.
match (list) – The list of atom indices from the match
- log(msg)¶
Log message if logger is present
- Parameters
msg (str) – The message to log
- match(struct, numbers_used, backbone_atoms, allow_partial_overlap=False)¶
Find all the SMARTS groups matching the SMARTS pattern and mark them with the appropriate properties
- Parameters
struct (schrodinger.structure.Structure) – The structure to find SMARTS pattern match in
numbers_used (set) – A set of all the group numbers that have been used and are unavailable
backbone_atoms (dict) – dictionary with key as molecule number and backbone atoms index ordered in a list
allow_partial_overlap (bool) – whether atoms can belong to multiple groups