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

Reply via email to