stereoisomer enumeration

User 870ab5b546

22-04-2011 17:32:47

The code:


        try {
final StereoisomerPlugin plugin = new StereoisomerPlugin();
plugin.setMolecule(cpd);
plugin.setStereoisomerismType(StereoisomerPlugin.BOTH);
plugin.setProtectTetrahedralStereo(true);
plugin.setProtectDoubleBondStereo(true);
plugin.run();
final Molecule[] molArray = plugin.getStereoisomers();
stereoisomers = Utils.molArrayToList(molArray);
} catch (PluginException e) {
Utils.alwaysPrint(SELF + "caught PluginException while "
+ "generating stereoisomers of ", cpd);
stereoisomers = new ArrayList<Molecule>();
stereoisomers.add(cpd);
} // try
debugPrint(SELF + "enumerated ", stereoisomers.size(),
" stereoisomer(s) from ", cpd, ": ", stereoisomers);

The logs:


StereoFunctions.enumerateStereo: enumerated 3 stereoisomer(s) from CC1CCCC(C)C1=O: [C[C@@H]1CCC[C@@H](C)C1=O.C[C@H]1CCC[C@@H](C)C1=O.C[C@H]1CCC[C@H](C)C1=O]
StereoFunctions.enumerateStereo: enumerated 4 stereoisomer(s) from CC1CCC[CH:2]([CH3:1])C1=O: C[C@@H]1CCC[C@@H:2]([CH3:1])C1=O.C[C@H]1CCC[C@@H:2]([CH3:1])C1=O.[CH3:1][C@H:2]1CCC[C@@H](C)C1=O.C[C@H]1CCC[C@H:2]([CH3:1])C1=O

The only difference between the starting compounds are their atom maps.  In the second case, the meso diastereomer was generated twice, the difference being that the two diastereomers differed in their atom maps.  It seems to me that the default should be that atom maps should NOT affect stereoisomer generation, but there should be an option to have them affect it.

ChemAxon e08c317633

26-04-2011 11:30:07

Bob, you are right, atom maps should NOT affect stereoisomer generation. It's a bug in duplicate filtering, we will fix it ASAP.


Workaround: remove atom maps before generating stereoisomers.


Zsolt