OEChem 1.4.0 is a major new feature release. OpenEye is introducing
OEBio, a new programming library extending OEChem‘s convenience in
handling biopolymers. In this initial release, OEBio‘s API is small
but useful. Over the life of the 1.4.x OEChem release series the
OEBio API will grow. The purpose of OEBio is not to cover
Bioinformatics, but to extend OEChem‘s strong cheminformatics
foundation to conveniently support protein modeling.

The source-code and examples in /openeye/examples/oechem have long
been caught in a conflict. They served both as very useful tools and
as didactic coding examples. To fulfill the role as tools, they
needed good command-line-interfaces and error reporting.
Unfortunately these features lead to more complex code. To fulfill a
role as code examples, these programs need to be as simple as
possible, highlighting one or two programming principles. In order to
better serve both purposes, the example programs have now been split
into /openeye/utilities and /openeye/examples, the first includes
programs with more complex code and better interfaces and the latter
with simple OEChem code examples. In addition, nine new example
programs have been included to demonstrate common uses of the OEBio
API.

In addition to OEBio, the 1.4.0 release includes many new features
and bug fixes in the OEChem, OESystem and OEPlatform libraries.

Split the programs previously in the examples directory into
examples and utilities. The utilities directory will contain
programs or versions of programs that may be useful and convenient
for modelers to carry out common tasks. The examples directory
will contain programs that may also be useful, but there primary
purpose will be to provide didactic code examples of how to program
common tasks using the OEChem library.

New support for highly compact rotor-offsetcompressed oeb files.

Added support for MDL ISIS Sketch file format with the .skc suffix.

Added support for writing hydrogens that are required for specifying cis-trans stereo.

Added support for [Ds] and [Rg] in SMILES and SMARTS.

Added support for writing high-atomic number atoms in SMILES using
[\#123] notation.

New OEWriteConstMolecule function class to support high-level
writing of const molecules. Introduced return-codes for the high-level writers
that reflect that some molecules are inherently not supported by certain file
formats (e.g. >999 atoms in .sdf).

Eliminate the redundancy between OEChem::OEMDLSetBondStereo and
OE3DToBondStereo by allowing OE3DToBondStereo to take an
optional bond mask and work on 2D as well as 3D molecules.

Correct a bug in the OEChem interpretation of MDL wedge and hash bonds.
In MDL connection tables, wedges and hashes only imply a specified stereo-center
at the thin end (i.e.OEBondBase.GetBgn). This has been confirmed by
comparing the wedge/hash bonds with the atom stereo parity bit in MDL ISIS
output (including large vendor databases such as the entire Asinex 2005
collection).

Fixed MDL reader bug where unrecognized atomic symbols would ignore
subsequent fields in the atom block such as stereo parity, reaction role and
valence.

These examples show the best feature of OEChem. Though most are less than 100
lines of simple code they demonstrate protein-protein sequence alignment, 2D
and 3D structure manipulation, residue perception, robust multi-format I/O, stl
integration, canonicalization, chirality perception and manipulation and many
other complex cheminformatics tasks. While the main loop of each program is
often only 30 lines long, it brings to bear thousand of lines of OEChem code
and years of cumulative cheminformatics experience to easily combine 2D and 3D
structure analysis and manipulation.

backbone.cpp: Code to show the use of functors to select and write the
backbone atoms of a protein.

cischeck.cpp: Demonstrates how to loop over residues and checking the
omega torsion for cis amides.

makealpha.cpp: A code example of protein structure manipulation. This
example modifies any protein into an alpha-helical structure with extended
side-chains.

phipsi.cpp: Simple code to report the phi-psi angles of a protein.

rescount.cpp: Demonstrates an easy way to loop over the residues of a
protein and query their information.

reshist.cpp: Demonstrates and easy way to loop over a protein’s residues
and integrate the acquired data into an STL dictionary class.

seqalign.cpp: This is perhaps the most complex program of the examples.
It carries out protein-protein sequence alignment, alignment evaluation and
printing as well as 3D structural alignment.

subsetres.cpp: Simple code example of how to pull a specific residue out
of a protein using its common name(e.g. ARG B 52).

swapaieres.cpp: Demonstrates how a user can select a residue using its
common name (e.g. GLN 252) and swap the ambiguous iso-electronic atoms.

Added OESequenceAlignment class with associated features for pairwise
sequence alignment (including PAM250, BLOSUM62 and GONNET), writing an
alignment to an oeostream and carrying out RMSD alignment between two
proteins based on the sequence alignment.

Simple methods for accessing and manipulating the torsion angles of
biopolymers.

Introduce classes that allow a hierarchical view of the Chains, Fragments
and Residues of a protein while maintaining the efficient OEChem internal data
structures.

Added facility for swapping the terminal atoms of residues that are
commonly ambiguous in protein crystal structures (e.g. terminal N,O of
ASN).

Added nine new example programs demonstrating the use of the new OEBio
API points. These include: backbone, cischeck, makealpha,
phipsi, rescount, reshist, seqalign, subsetres and
swapaieres.