Hello all,

Digging around within the documentation the imidazole example I shared is
yet another example on how RDKit defines aromaticity. I know there might be
a lot of nuance here since RDKit already makes it clear aromaticity is
difficult, but here is what I don't understand.

RDKit gives examples of their aromaticity model, found [here](
https://www.rdkit.org/docs/RDKit_Book.html#the-rdkit-aromaticity-model).
Applying the examples given in the table possibly would explain the
behavior I am observing, but the nomenclature is going over my head.

For example the table shows an atomic environment 'c(a)a' contributing one
pi-electron. Breaking down the terms, 'a' is any aromatic atom (this is
given in the footnote of the table), and I assume 'c' is a carbon atom.
Using the daylight nomenclature I would read the parenthesized expression
as a branch containing any aromatic atom. Is that correct?

Also, if the atomic environment of 'c(a)a' is showing at most three atoms
(one carbon, one branching aromatic atom, and then another aromatic atom),
which atom is contributing the single pi-electron.

If anyone had any thoughts on how to read the table, it would be
appreciated.

I didn't have any responses on my last email, but I thought I would add
what I dug up. Hopping it might help.

I thought the AtomParis might be using another flavor of aromaticity, such
as [MDL](
https://www.rdkit.org/docs/RDKit_Book.html#the-mdl-aromaticity-model),
where five-member rings are never considered aromatic. This doesn't seem to
be the case since every atom is aromatic, and every bond in the ring is
aromatic. I found the isRingAromatic from [Greg](
https://sourceforge.net/p/rdkit/mailman/message/23801106/)

>>> from rdkit import Chem

>>> def isRingAromatic(mol,bondRing):

...      for id in bondRing:

...             if not mol.GetBondWithIdx(id).GetIsAromatic():

...                     return False

...      return True

...

>>> m = Chem.MolFromSmiles('C1=CN=CN1')

>>> ri = m.GetRingInfo()

>>> isRingAromatic(m,ri.BondRings()[0])

True

>>> [m.GetBondWithIdx(id).GetIsAromatic() for id in range(0,5)]

[True, True, True, True, True]



v/r,

Ben

On Thu, Nov 21, 2019 at 11:06 PM Benjamin Datko <
benjamin.datko....@gmail.com> wrote:

> Hi all,
>
> When counting the number of pi-electrons in Imidazole, I would expect a
> total of 6 pi-electrons, and the contribution of pi-electrons from the
> nitrogen atoms showing 2 and 1.
>
> But both pyScorePair and NumPiElectrons within AtomPairs only show 5
> pi-electrons, missing the pi-electron from one of the nitrogens. What am
> I missing?
>
> >>> from rdkit import rdBase
> >>> rdBase.rdkitVersion,rdBase.boostVersion
>
> ('2019.03.4', '1_70')
>
> >>> from rdkit import Chem
> >>> from rdkit.Chem.AtomPairs import Pairs
>
> >>> m = Chem.MolFromSmiles('C1=CN=CN1')
> >>> score = Pairs.pyScorePair(m.GetAtomWithIdx(2),m.GetAtomWithIdx(4),3)
> >>> Pairs.ExplainPairScore(score)
> (('N', 2, 1), 3, ('N', 2, 1))
>
> >>> [Chem.AtomPairs.Utils.NumPiElectrons(atom) for atom in m.GetAtoms()]
>  [1, 1, 1, 1, 1]
>
>
_______________________________________________
Rdkit-discuss mailing list
Rdkit-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rdkit-discuss

Reply via email to