Good to know! Thanks so much for the explanation! So for now, it's much safer to use the atom or conformer id as, for example, a dict key than to use the atom or conformer itself. Seth
On Tue, Nov 3, 2015, 7:06 AM Greg Landrum <[email protected]> wrote: > Hi Seth, > > > On Tue, Nov 3, 2015 at 7:26 AM, Seth Axen <[email protected]> wrote: > >> I was wondering why, when I request the conformers (or atoms) from a mol, >> and then request the owning mol of the conformer or atom, the two mols are >> not the same instance: >> >>> mol.GetConformers()[0].GetOwningMol() == mol >> False >> >> I'd expect that they would be equal. Or, is there another way to retrieve >> the mol instance from an atom or conformer instance? >> > > They actually are the same, it just doesn't look like they are because the > pointers are different (this is an implementation detail). > Here's a little demo showing this for atoms : > > In [26]: m = Chem.MolFromSmiles('CCC') > > In [27]: at = m.GetAtomWithIdx(0) > > In [29]: at2 = m.GetAtomWithIdx(0) > > > # they look different: > > In [28]: at > Out[28]: <rdkit.Chem.rdchem.Atom at 0x106031d48> > > In [30]: at2 > Out[30]: <rdkit.Chem.rdchem.Atom at 0x106031528> > > In [31]: at==at2 > Out[31]: False > > > # but are the same: > > In [32]: at.SetAtomicNum(7) > > In [33]: at2.GetAtomicNum() > Out[33]: 7 > > > > It's certainly worth exploring whether or not it's possible to make this a > bit more transparent and enable either "==" or "is" to work with these > objects. That investigation is now on the todo list. :-) > > -greg > >
------------------------------------------------------------------------------
_______________________________________________ Rdkit-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

