Hi there at RDKit,

I have a set of atom indices from a molecule I want to keep, and any atom
which is not in this list I want to discard.

I thought of implementing this as follows:

#!/usr/bin/env python

from rdkit import Chem

mol = Chem.MolFromSmiles("CCC1CNCC1CC")

keep_atoms = [2,3,4] # assume these exist in the above as an example, you
can print the atom ids to check

edit_mol = Chem.EditableMol(mol)
for atom in mol.GetAtoms():
    if atom.GetIdx() not in keep_atoms:
        edit_mol.RemoveAtom(atom.GetIdx())

I am not sure this is the best implementation (also because it does not
work), but it's a try.

The end result should be an sdf file with only atoms 2,3,4 from the
original molecule.

When I run the above I get:

[15:45:50]

****
Range Error
idx
Violation occurred on line 143 in file
/opt/RDKit_2011_12_1/Code/GraphMol/ROMol.cpp
Failed Expression: 0 <= 6 <= 5
****

Traceback (most recent call last):
  File "./test.py", line 12, in <module>
    edit_mol.RemoveAtom(atom.GetIdx())
RuntimeError: Range Error

I cannot quite understand this error.  Can anyone shed some light?
I mean this is related to me deleting 3 atoms from the molecule, so it
somehow expects the range to be from 0 <= x <= 5  instead of 0 <= x <= 8...
but why is there this check in place?

Many Thanks

-
Jean-Paul Ebejer
Early Stage Researcher
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to