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-offset compressedoeb files.
Added support for MDL ISIS Sketch file format with the
Added support for writing hydrogens that are required for specifying cis-trans stereo.
Added support for
[Rg]in SMILES and SMARTS.
Added support for writing high-atomic number atoms in SMILES using
OEWriteConstMoleculefunction 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).
OEOFlavor.MOL2.Substructurehigh-level writer flavor to force an
@TRIPOS<SUBSTRUCTURE>idiom in the
OEHasStereoHydrogensfunction that determines if an atom has a proton that is required to specify stereochemistry.
Dramatically improved efficiency of
DeleteConffor deleting large numbers of conformers in order. Worst case behavior of the algorithm was changed from \(N*N\) to \(N\).
Allow the SD file reader to handle a blank line between the
M ENDand the ‘$ $ $ $’ lines.
Added convenience functions for getting and setting the MDL parity on atoms.
Added new bitmask initialization parameters to
OEInitDefaultHandlerthat allow easy specification of which handlers to initialize.
New support for
[t]non-standard SMILES representations.
Improved support for multiple NMR models in PDB files by reading, retaining and writing model number.
Added fully supported OEPDBData and
OEPDBDataPairclasses as well as the necessary function to store and retrieve them from molecules.
Added support for determining whether the library is properly licensed with
OEResidueHydrogensfunction that will rename hydrogens an a heavy atom to their proper PDB atom names.
Major bug fixes¶
Minor bug fixes¶
Added PDBData readers and writers to OEBinary file handlers.
Fixed rotation bug in inertial frame alignment.
\into a warning rather than an error, allowing the molecule to be parsed in a racemic fashion.
Added an upper bound to the degree of the atoms at either end of a cis-trans chiral double bond.
Added defensive code to prevent creation of atoms with atomic number greater than 255.
Improved perception of non-aromatic exo double-bonds. This corrects a problem perceiving the progesterone in
Improved the exo-cyclic double bonds to sulfur. This improves the connectivity perception in
Improved the bond order perception of nitroso, oxime, azide, and arylhydroxylamine functional groups.
Improved bond order perception of clashed structures by allowing hydrogens to only bond to their nearest heavy atoms.
Prevent alternate conformation representations to be bonded to one another during bond perception.
Made Up/Down choice for the first stereo bond in each resonance system canonical for writing isomeric smiles files.
Fixed the high-level pdb writer to preserve residue information found on the molecule.
OEIsReadableto return false for the MOPAC file format.
Added MOPAC flavors to the high-level molecule writers.
Changed the hybridization assignment of negatively charged resonant nitrogens such as
Fix bug in
OESet3DHydrogenGeomthe could use a hydrogen’s own coordinates as a reference for determining its geometry.
Fix ring perception bug in
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.
Added copy constructors and assignment operators to OEMiniMols, OEChem::OEMiniBonds and OEMiniAtoms.
Fixed a sign error in
New Example Programs¶
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
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.
OESequenceAlignmentclass with associated features for pairwise sequence alignment (including PAM250, BLOSUM62 and GONNET), writing an alignment to an
oeostreamand 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:
Moved superpose and tensor2mat API points from OEChem to OESystem. Added deprecated support for their use in OEChem.
Added ability to assign an
OEIter<const foo>object. This allows much wider use of iterators of const objects.
OEIter.Sorta stable sort.
Additional physical constants added to
Added the ability to parse
OEInterfaceparameter files without use of command-line parsing.
New OEChem::OEPDBOFlag::ELEMENT and OEChem::OEPDBOFlag::FORMALCHARGE flavors for pdb writer. OEChem::OEPDBOFlag::ELEMENT adds the atomic symbol to columns 77-78 and OEChem::OEPDBOFlag::FORMALCHARGE add non-zero formal charges in columns 79-80.
OEOFlavor.SMI.ExtBondsoption from the
.smiwriter to the
Minor bug fixes¶
Fixed OEGrid and OEMultiGrid constructor bug that could cause no memory to be allocated for the grid elements.
Fixed rotation bug in inertial-frame alignment.
Fixed bug in the atom index into coordinates used while calculating the center of mass.
OEInterfacecategory name bug,
!KEYLESSbug and unterminated category bug.
Improved binary data handling in streams.
Significant improvements for user convenience in licensing code will allow future versions of OpenEye applications to manage licensing failures in a friendly manner.
Major bug fixes¶
Fixed bug that prevented reading the final molecule in a file and then seeking to other positions in the file.
Fixed a 64bit stream seek and read bug that could cause memory overflows and crashes.
Minor bug fixes¶
Fixed bug in cross-platform directory searching and checking for files on a file system.
Fixed bug in OEPlatform::oeigzstream::size that reported incorrect sizes in some instances.
Added the ability to detect moved home directories under Windows.