# Version 1.5.0¶

## OEChem 1.5.0¶

OEChem 1.5.0 is a new release including many major and minor bug fixes along with several new features. This is also a continuation of a complete release of all OpenEye toolkits as a consolidated set so that there are no chances of incompatibilities between libraries.

Note, that in this release the directory structure has been changed to allow multiple versions of the toolkits to be installed in the same directory tree without conflicts. From this release on, all C++ releases will be under the openeye/toolkits main directory. There is then a directory specific to the version of the release and then below that, directories for each architecture/compiler combination. To simplify end user Makefiles, openeye/toolkits/lib, openeye/toolkits/include'', and openeye/toolkits/examples are all symlinks to the specific last version and architecture that was installed.

New users should look in openeye/toolkits/examples for all the examples. Existing users updating existing Makefiles should change their include directory from openeye/include to openeye/toolkits/include. As well, existing Makefiles should change the library directory from openeye/lib to openeye/toolkits/lib.

### New features¶

• OEChem now has a 2D similarity implementation using the Lingos method of similarity. Lingos compares Isomeric SMILES strings instead of pre-computed fingerprints. This combination leads to very rapid 2D similarity calculation without any upfront cost to calculate fingerprints and without any storage requirements to store fingerprints.

• MMFF94 charges are now available in OEChem. While we recommend AM1-BCC charges as the best available charge model, having MMFF94 charges available at the OEChem level means that decent charges are available to all toolkit users.

• In OEChem 1.2, there was an alternate implementation of MCS that used a fast, approximate method for determining the MCS. While it is less than exhaustive, the speed does have some appealing uses. In OEChem 1.5, we’ve restored this older algorithm and now both are available.

namespace OEMCSType
{
static const unsigned int Exhaustive  = 0;
static const unsigned int Approximate = 1;
static const unsigned int Default     = Exhaustive;
}


OEMCSType.Exhaustive implies the current, exhaustive algorithm from OEChem 1.3 and later, while OEMCSType.Approximate implements the older, fast but approximate algorithm.

• Molecules (OEMol, OEGraphMol) can now be attached to an existing OEBase as generic data and they will be written to OEB and read back in. Additional support for attaching grids and surfaces to molecules has been added to Grid and Spicoli.

• There is a new retain Isotope flag to OESuppressHydrogens. If false, [2H] and [3H] will also be removed by this call. By default, this is true so that the current behavior of OESuppressHydrogens is identical to the previous version.

• The OEChem CDX file reader can now Kekulize aromatic (single) bonds in the input ChemDraw file. It switches the internal bond order processing to use the bond’s integer type field, and then calls OEKekulize to do all of the heavy lifting.

• Tweaks to the algorithm used for determining which bond(s) around a stereocenter should bear a wedge or a hash. The bug fixed here includes an example where all three neighbors are stereocenters, but two are in a ring and one isn’t.

• There are new versions of OEIsReadable and OEIsWriteable that take a filename directly.

• More exceptional atom naming support for the PDB residues CO6 (pdb2ii5), SFC (pdb2gce), RFC (pdb2gce), MRR (pdb2gci), MRS (pdb2gd0), FSM (pdb2cgy) and YE1 (pdb2np9) has been added.

### Major bug fixes¶

• The Bondi VdW radii tables have been completely updated and fixed. Additionally, any element not covered by the original Bondi paper is assigned a radius of 2.0 Ångströms.
• Corrected a serious glitch in the OEChem SMILES parser, where [X-2] would be incorrectly interpreted as [X+2]. This bug was an unintentional side-effect of the recent changes to warn about [X+0] and [X-0] when the parser is in strict mode.
• Fixed a bug in OEKekulize of very large molecules. Almost all small molecules continue to use the faster light-weight method, but we avoid exponential behavior for the large non-Kekulizable cases.
• Fixed a bug dealing with the semantics of wedge/hash bonds when the thin end is on a terminal atom. Clearly, in such cases the author probably intended to specify some aspect of the chirality of the atom at the other end of the bond. First, when drawing such structures into MDL’s ISIS/Draw, it does not perceive specified chirality at the thick end of a wedge/hash bond from a hydrogen. However, this patch adds support for conveniently handling this case via OEMDLHasIncorrectBondStereo and OEMDLCorrectBondStereo, which notices this case, and either inverts the sense of the bond if the other end has explicit degree three or four, or removes the ignored wedge/hash bond annotation.
• Bug-fix improvement to OEMDLCorrectBondStereo such that whenever we introduce a new wedge/hash bond (on a previously unmarked bond), we now ensure that the we correctly set the thin end on the appropriate chiral atom.
• Fixed a bug in OEB reading/writing that makes sure that any unknown tags are simply passed from input to output without loss.
• Fixed a bug in reactions where the final valence was being computed incorrectly, such that the bond orders aren’t modified directly until after valence correction is applied.

### Minor bug fixes¶

• Tweaked the way the SMILES parser calculates implicit hydrogen counts on un-bracketed aromatic atoms in SMILES strings. This fixes Scc and S1cccc1.
• OEParseCommandLine now lists the legal and illegal values for a parameter if the user specifies an invalid value for the parameter.
• Fixed a bug where a warning was issued when writing >999 atoms to a V3000 MOL file. V3000 MOL files can contain >999 atoms, unlike V2000 files.
• Fixed a bug where round-off differences between Windows and Linux could result in stereo perception differences for 2D coordinates with angles very nearly equal to 180 degrees.
• Corrected the atomic number perception in the PDB file reader for the residues “G5P”, “COK” and “COZ” (from the recently added PDB files pdb2f35, pdb2ges and pdb2g2z).
• Added residue perception support for the non-standard amino acids “LYZ” and “MEN”, which denote 5-hydroxylysine and N-methylasparagine.
• Fixed a bug where OEGetHybridization failed to classify the sulfur in C=S as sp2 hybridized.
• Completed the coverage of the MDL valence model to all atoms to handle charges less than or equal -2, or greater than or equal to +2. Many of the common cases of these strange charge states were already handled.
• The generic data reader now calls AddData instead of SetData. This means that multiple objects with the same tag can be handled appropriately.
• Added checks to prevent division-by-zero in several geometry routines in OEMath.
• OESetComment now safer to either a NULL pointer for the comment or a NULL pointer for the OEAtomBase.
• Fixed copy constructor and assignment operator for OECoordArray.