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
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss
------------------------------------------------------------------------------
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