diff --git a/src/main/org/openscience/cdk/io/MDLReader.java b/src/main/org/openscience/cdk/io/MDLReader.java index b4a43fd3d30..e295fc0f764 100644 --- a/src/main/org/openscience/cdk/io/MDLReader.java +++ b/src/main/org/openscience/cdk/io/MDLReader.java @@ -525,8 +525,11 @@ private IMolecule readMolecule(IMolecule molecule) throws CDKException { // bond has no stereochemistry stereo = IBond.Stereo.NONE; } else if (mdlStereo == 4) { - //MDL bond undefined - stereo = (IBond.Stereo)CDKConstants.UNSET; + //MDL up or down bond + stereo = IBond.Stereo.UP_OR_DOWN; + } else if (mdlStereo == 3) { + //MDL e or z undefined + stereo = IBond.Stereo.E_OR_Z; } } else { logger.warn("Missing expected stereo field at line: " + line); diff --git a/src/main/org/openscience/cdk/io/MDLV2000Reader.java b/src/main/org/openscience/cdk/io/MDLV2000Reader.java index 88e0f2923e8..65ef0ff26b6 100644 --- a/src/main/org/openscience/cdk/io/MDLV2000Reader.java +++ b/src/main/org/openscience/cdk/io/MDLV2000Reader.java @@ -619,7 +619,7 @@ private IMolecule readMolecule(IMolecule molecule) throws CDKException { stereo = IBond.Stereo.E_OR_Z; } else if (mdlStereo == 4) { //MDL bond undefined - stereo = (IBond.Stereo)CDKConstants.UNSET; + stereo = IBond.Stereo.UP_OR_DOWN; } } else { handleError( diff --git a/src/main/org/openscience/cdk/io/MDLWriter.java b/src/main/org/openscience/cdk/io/MDLWriter.java index 98512314ace..a141be9f01a 100644 --- a/src/main/org/openscience/cdk/io/MDLWriter.java +++ b/src/main/org/openscience/cdk/io/MDLWriter.java @@ -322,7 +322,8 @@ else if(atom.getValency()==0) logger.warn("Skipping bond with more/less than two atoms: " + bond); } else { if (bond.getStereo() == IBond.Stereo.UP_INVERTED || - bond.getStereo() == IBond.Stereo.DOWN_INVERTED) { + bond.getStereo() == IBond.Stereo.DOWN_INVERTED || + bond.getStereo() == IBond.Stereo.UP_OR_DOWN_INVERTED) { // turn around atom coding to correct for inv stereo line = formatMDLInt(container.getAtomNumber(bond.getAtom(1)) + 1,3); line += formatMDLInt(container.getAtomNumber(bond.getAtom(0)) + 1,3); @@ -348,6 +349,9 @@ else if(atom.getValency()==0) case UP_OR_DOWN: line += "4"; break; + case UP_OR_DOWN_INVERTED: + line += "4"; + break; case E_OR_Z: line += "3"; break;