On Feb 8, 2017, at 19:22, Markus Metz <[email protected]> wrote:
> The question to you is: Is there another more elegant way of doing it? May be 
> I missed something from the python API?

I don't quite follow what you are looking for, though I have managed to 
condense your code somewhat, into:

updatedMapping = None
for ring in m.GetRingInfo().AtomRings():
    if set(ring).issubset(maps):
        updatedMapping = ring

if updatedMapping is not None:
    updatedMapping = sorted(updatedMapping)
    for i, atom_idx in enumerate(updatedMapping, 1):
        m.GetAtomWithIdx(atom_idx).SetProp("molAtomMapNumber", str(i))


Is it that you do not want to number the "*" atoms? In that case you can ask 
the query structure for the atoms with atomic number 0:

>>> for atom in corea.GetAtoms():
...    print(atom.GetAtomicNum())
...
0
6
6
6
6
6
6
0

and ignore numbering the atoms at those positions.

Or that you don't want to include ring atoms which aren't ring atoms in the 
query structure?

In which case you can ask the query structure for its rings:

>>> corea.GetRingInfo().AtomRings()
((1, 6, 5, 4, 3, 2),)

and use that to guide which atoms should/should not be numbered.

Cheers,

                                Andrew
                                [email protected]



------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to