Version 1.9.2

OEChem 1.9.2

New features

  • OEChem now supports the creation of InChI. OEChem produces the same InChI as the InChI library provided application for 99.77% of MDDR in the SDF format. The differences fall into two categories:

    • Corrupted molecules where the tools have to make arbitrary decisions about how to correctly interpret the data.
    • Bond stereo being perceived by the InChI application where bond stereo does not actually exist. OEChem does not assign bond stereo and generates what appears to be a more “correct” InChI for these cases.

    The inclusion of InChI support added the following:

    In addition, oemolostream will automatically write InChI when using the .inchi file extension.

  • OEPrepareSearch added that perceives atom and bond properties of a molecule that are necessary to successfully execute a given substructure search. It is now highly recommended to run this function on a molecule before passing the molecule to any of OEChem’s graph matching algorithms.

  • Several Java API points that pass primitive arrays of doubles or floats were optimized with good results. The following API points that take these primitive array types were optimized: NewConf, SetCoords, and GetCoords.

    The following figures should be indicative of the performance increase in the 2013.June release:
    ../../_images/javagraph1.png ../../_images/javagraph2.png

Major bug fixes

  • It used to be possible to perform a substructure search for stereochemistry or hybridization on a molecule that did not yet have those properties perceived. This led to very subtle to detect problems where molecules would not match that were expected to match.

    To combat this, the following OESubSearch methods now throw warnings in case some property that is necessary to successfully execute the substructure search has not been perceived yet:

    These warnings can be suppressed by calling the OEPrepareSearch function on the molecule first.

  • Utilizing the OEPerceived.AtomStereo and OEPerceived.BondStereo flag to mark whether the atom and bond stereo information is perceived in a molecule.

  • It is now thread-safe to copy the same OEMol from multiple threads at the same time. This was caused by some OEMCMolBase methods not actually being const. The following methods were marked as const, but were not actually const, leading to subtle race conditions:

  • OEMCMolBase.GetMCMolTitle method added to provide a way to differentiate between a top-level OEMCMolBase title and a conformer title.
  • OEMCSSearch.AddConstraint now requires that the constraint is satisfied in all resulting matches. Previously, the documentation stated the following, “Constraints are considered satisfied in subgraphs which do not contain any constrained atoms or bonds in either the pattern or target molecules.” This is no longer the intended behaviour.
  • OEMCSSearch.AddConstraint now returns false if passed the same pattern atom or bond twice. The user must now use OEMCSSearch.ClearConstraints in order to rebuild a set of constraints.

Minor bug fixes

Documentation fixes

  • The OEAroModel namespace is now accessible from the table of contents.

OESystem 1.9.2

New features

Minor bug fixes

  • Fixed a possible link-time race condition with OEGetTag that could cause a crash if OEGetTag was used during link-time (library loading).
  • OEColor could encounter a benign race condition during color clamping operations.

OEPlatform 1.9.2

Major bug fixes

  • Calling OEPlatform::oeofstream::append after OEPlatform::oeofstream::open will no longer hang indefinitely once data is written to it.

Minor bug fixes

  • The java JVM can run out of memory when trying to free memory. If this is detected, the OpenEye toolkits will print the following message, “JNI::OutOfMemory – the JAVA heap may need to be increased – program terminating”. Please increase the size of the java heap using the -Xmx option.

OEBio 1.9.2

  • Minor internal improvements.

OEGrid 1.4.3

Minor bug fixes

Documentation fixes

  • The ASCIIWriter documentation example in the Grid Input and Output section was incorrect as it was writing out both grid indices and grid values.