Source code for schrodinger.rdkit.rgroup
from rdkit.Chem import rdmolops
from rdkit.Chem.rdchem import SetAtomRLabel
from schrodinger.ui import sketcher
ATTACHMENT_POINT_PROP = "atomLabel"
ATTACHMENT_POINT_VALUE = "_AP1"
[docs]def change_to_rgroup(rdkit_atom, rgroup_number):
    """
    Changes atom to rgroup.
    
    :type rdkit_atom: rdkit.Chem.rdchem.QueryAtom
    :param rdkit_atom: query atom
    :type rgroup_number: int
    :param rgroup_number: rgroup number
    """
    SetAtomRLabel(rdkit_atom, rgroup_number)
    rdkit_atom.SetAtomicNum(0)
    rdkit_atom.SetNoImplicit(False)
    rdkit_atom.SetIntProp('molAtomMapNumber',
                          rgroup_number + sketcher.MAP_NUMBER_FOR_R_GROUPS) 
[docs]def set_dummy_atoms_as_attachment_points(mol):
    """
    Creates a copy of a given input molecule and replaces dummy atoms with
    'attachment points'. New molecule can then be used in sketcher, so that
    'attachment points' are shown correctly.
    :param mol: molecule with dummy atom(s)
    :type mol:  rdkit.Chem.Mol
    :return: modified molecule with attachment point(s)
    :rtype: rdkit.Chem.Mol
    """
    for atom in mol.GetAtoms():
        if atom.GetAtomicNum() == 0:
            # We currently allow only one attachment point
            atom.SetProp(ATTACHMENT_POINT_PROP, ATTACHMENT_POINT_VALUE)
    params = rdmolops.AdjustQueryParameters.NoAdjustments()
    params.makeDummiesQueries = True
    return rdmolops.AdjustQueryProperties(mol, params)