Hi Josh,

https://gist.github.com/ptosco/3797986d7c01d052a774a2f6c43a3bc7

(disclaimer: there may be better/faster ways)

Cheers,
p.


On 07/02/18 17:42, Joshua Meyers wrote:
Hey Again,

Back to this problem because I didn't isolate the problem well enough in the first place - my bad!

I would like to get the original atom indices of the r groups created by the ReplaceCore function. The issue is that the atom indices are reset by the ReplaceCore() function (and seemingly any other function that deletes atoms).

Any idea how I would get these?

In [1]: from rdkit import Chem

In [2]: from rdkit.Chem.Scaffolds import MurckoScaffold

In [3]: m = Chem.MolFromSmiles('c1cc(C)c(CC(=O)[13C])cc1')

In [4]: murcko = MurckoScaffold.GetScaffoldForMol(m)

In [5]: rGroups = Chem.ReplaceCore(m, murcko, useChirality=True, labelByIndex=True)

In [6]: rGroup_idxs = []
   ...: rGroups = Chem.GetMolFrags(rGroups, asMols=True, fragsMolAtomMapping=rGroup_idxs)
   ...: rGroup_idxs
   ...:
Out[6]: [(0, 5), (1, 2, 3, 4, 6)]

I know that the two sets of indices I want from the original molecule m are
((3,2),(5,6,7,8))

(found by depicting the indices - see attached)




Any idea how I can achieve this?

Cheers in advance,
Josh


On 26 June 2018 at 12:25, Paolo Tosco <paolo.tosco.m...@gmail.com <mailto:paolo.tosco.m...@gmail.com>> wrote:

    Hi Josh,

    if you pass empty lists as the frags and as the
    fragsMolAtomMapping parameters of GetMolFrags() they will be
    filled with indices referring to the indices of the original
    molecule (see lines highlighted in red below).

    Hope that helps, cheers
    p.


          GetMolFrags(...)


        

    GetMolFrags( (Mol)mol [, (bool)asMols=False [, (bool)sanitizeFrags=True
         [, (AtomPairsParameters)frags=None [, 
(AtomPairsParameters)fragsMolAtomMapping=None]]]]) -> tuple :
         Finds the disconnected fragments from a molecule.
For example, for the molecule 'CC(=O)[O-].[NH3+]C' GetMolFrags() returns
           ((0, 1, 2, 3), (4, 5))
ARGUMENTS: - mol: the molecule to use
             - asMols: (optional) if this is provided and true, the fragments
               will be returned as molecules instead of atom ids.
             - sanitizeFrags: (optional) if this is provided and true, the 
fragments
               molecules will be sanitized before returning them.
    - frags: (optional, defaults to None) if this is provided as an
    empty list, the result will be mol.GetNumAtoms() long on return
    and will contain the fragment assignment for each Atom -
    fragsMolAtomMapping: (optional, defaults to None) if this is
    provided as an empty list, the result will be a a numFrags long
    list on return, and each entry will contain the indices of the
Atoms in that fragment: [(0, 1, 2, 3), (4, 5)] RETURNS: a tuple of tuples with IDs for the atoms in each fragment
                    or a tuple of molecules.


    On 26/06/2018 10:29, Joshua Meyers wrote:
    Hey All,

    I am chopping parts out of molecules and picking up the pieces
    using the Chem.GetMolFrags() function.
    I would like to separate fragments into distinct mol objects but
    keep the original atom indexes however setting the asMols=True
    flag seems to reset the indexes, is this expected behaviour? Is
    there a way around this?

    Here's some code:

    In [1]: from rdkit import Chem

    In [2]: m = Chem.MolFromSmiles('c1ccccc1.CCO')

    In [3]: Chem.GetMolFrags(m)
    Out[3]: ((0, 1, 2, 3, 4, 5), (6, 7, 8)) <----- desired indexes

    In [4]: frags = Chem.GetMolFrags(m, asMols=True)

    In [5]: for frag in frags:
       ...:     print([a.GetIdx() for a in frag.GetAtoms()])
       ...:
    [0, 1, 2, 3, 4, 5]
    [0, 1, 2] < ------ indexes have been reset


    Many thanks in advance,
    Josh


    
------------------------------------------------------------------------------
    Check out the vibrant tech community on one of the world's most
    engaging tech sites, Slashdot.org!http://sdm.link/slashdot
    <https://protect-eu.mimecast.com/s/s6W1CX6DYIXlN6U6Hc4j>


    _______________________________________________
    Rdkit-discuss mailing list
    Rdkit-discuss@lists.sourceforge.net
    <mailto:Rdkit-discuss@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
    <https://protect-eu.mimecast.com/s/tLq6CY6EVILKZ0fGKfEC>



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to