2010/4/20 Egon Willighagen <egon.willighagen@gmail.com>
On Tue, Apr 20, 2010 at 1:22 PM, Vincent Le Guilloux
>> If not mistaken, the RELAXED mode is doing this... but would need to
>> check...
>
> I didn't know the RELAXED mode.
>
> But i'm thinking: if there is a RELAXED mode allowing such bond, then the
> STRICT one (which we are talking about ?) should send an error when meeting
> the aromatic flag doesn't it?

Indeed.

Just checked, but it is not doing this yet in MDLV200Reader:

               } else if (order == 4) {
                   // aromatic bond
                       newBond =
molecule.getBuilder().newInstance(IBond.class,a1, a2,
IBond.Order.SINGLE, stereo);
                   // mark both atoms and the bond as aromatic
                       newBond.setFlag(CDKConstants.ISAROMATIC, true);
                   a1.setFlag(CDKConstants.ISAROMATIC, true);
                   a2.setFlag(CDKConstants.ISAROMATIC, true);
               }
               else {
                   throw new CDKException
                       ("Detected 'query bond type ' (value="+order +")."+
                        " Could not create regular molecule.");
               }

And using such bonds are aromatic by default... but also note the
explicit setting IBond.Order.SINGLE... need to fix that...

Yep that's the problem.

I've done some basic tests and the conclusion is as expected: there is no difference (at least for the aromaticity flag issue) between RELAXED and STRICT mode: they both set bond order to single at reading, the STRICT mode does not throws exception when we encounter aromatic flag, and both produce the same output molecule using MDLWriter. These issues are all visible in the snippet you pointed :)

I also noticed something else: if a negative charge is present in the molecule, the resulting output SDF file will contains the charge as MDL property:
M  CHG  1   9  -1

but the corresponding charge flag in the atom block is not set at all (always 0). I think It's not a real problem: in the MDL specification, the charge on atom block is kept for compatibility reason, and Chemaxon's tools and MOE does not complains.

But I've slightly different results with some JOELib descriptors depending on the input molecule (generated with CDK, Marvin or MOE)... I've to investigate that to see why :)