Bugs item #3428027, was opened at 2011-10-25 00:51
Message generated for change (Tracker Item Submitted) made by dalke
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=428740&aid=3428027&group_id=40728
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: File Translation
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Andrew Dalke (dalke)
Assigned to: Nobody/Anonymous (nobody)
Summary: incorrect treatment of aromatic with explicit bond
Initial Comment:
I was reviewing the Open Babel SMILES code and noticed that if atom1 and atom2
are joined, and atom1 and atom2 are aromatic, then the bond order is reset to
_order=5. This is done in different ways in smilesformat.cpp
On line 1055:
if (_order != 2) _order=5; //Potential aromatic bond -- but flag
explicit double bonds
On line 1958:
_order=5; //Potential aromatic bond
I haven't yet figured out if they are supposed to be the same or different, but
I strongly suspect that it's supposed to be the same check.
It is possible, but rare, to have an explicit '-' bond marked to indicate that
a bond between two aromatics is supposed to be a single/non-aromatic bond. For
examples:
c12-c3c(cccc3)[IH]c1cccc2
Clc1cc-2c3c(cccc3n1)-c4c2cccc4
[Ni]123n4c5c6ccccc6c4nc-7[n+]2c(-c8ccccc78)nc9n1c(c1ccccc91)nc-1[n+]3c(-c2ccccc12)n5
O=c1nc-2cccccc2s1
c-12n(c3ccccc3n2)Cc4c1cc5ccccc5c4
These are not handled correctly in Open Babel. In RDKit:
>>> from rdkit import Chem
>>> mol = Chem.MolFromSmiles("c12-c3c(cccc3)[IH]c1cccc2")
>>> Chem.MolToSmiles(mol)
'c1ccc2c(c1)[IH]c1ccccc1-2'
See the "-2" at the end? That's the explicit single bond.
While Open Babel sees the explicit '-' as being an aromatic:
% echo 'c12-c3c(cccc3)[IH]c1cccc2 blah' | babel -ismi -osmi
c12c3c(cccc3)[IH]c1cccc2 blah
As an extreme example, here's a triple-bond joining two
aromatic rings in RDKit:
>>> mol = Chem.MolFromSmiles("c1ccc[n-2]1#[n-2]1cccc1")
>>> Chem.MolToSmiles(mol)
'c1cc[n-2](#[n-2]2cccc2)c1'
Open Babel totally ignores the triple bond and says the
bond between the two aromatic rings is a single bond.
% echo "c1ccccc1#c1ccccc1 blah" | babel -ismi -osmi
c1ccccc1c1ccccc1 blah
BTW, I'm using the Open Babel build from today's version control.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=428740&aid=3428027&group_id=40728
------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn
about Cisco certifications, training, and career opportunities.
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
OpenBabel-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbabel-devel