Several enhancements have been made to the protein perception algorithms used in
OEPerceiveResidues. These allow OEChem to recognize the N-terminal capping group
ACE, and the nonstandard amino acid residues
TPO. Support for these additional amino acid types has also been added to
OEGetResidueIndexand friends. The sidechain pattern matching algorithm now has improved fallback functionality for better handling of modified/substituted residues.
Improved support from aromatic boron and aromatic silicon in
OEKekulize. The OEChem toolkit currently doesn’t perceive either boron or silicon to be aromatic (with any aromaticity model), but this enhancement allows us to Kekulize structures so specified.
Added improved support of parsing SMILES containing aromatic boron and aromatic silicon, allowing the OEChem toolkit to parse
OEGetDelphiRadiusfunction has been added to OEChem to return the default radius for a given element used by the Accelrys’ Delphi program for electrostatics calculations.
Several new convenience functions,
OEAssignHonigIonicCavityRadii, are now provided to set the radius property on each atom of a molecule to the value specified by the corresponding
A new function
OEIsBinaryis provided to determine whether the specified file format is binary or not, for example,
The new function
OEGetFormatExtensioncan be used to return a comma separated list of lowercase file format extensions that can be used to aid implementing directory scans and file format dialog boxes.
Major bug fixes¶
A problem in OEChem’s graph canonicalization algorithm was identified by the NCBI’s PubChem project for the single molecule:
C12C3C4C3C5C4C1C25. This problem has been fixed in OEChem 1.3.3. Unfortunately, this failure didn’t show up on our testing of 100 random permutations of 2.5 million compound test set. Efforts are now on-going to validate OpenEye’s canonicalization against all theoretical connection tables with less than \(N\) atoms, for some \(N > 10\).
A bug in the OEB file format readers and writers that could cause the titles and/or comments attached to molecules or conformers to be lost, has been corrected.
Minor bug fixes¶
Fixed bug in the OEChem SMARTS parser that failed to follow the Daylight semantics for patterns such as
Hspecifies the pattern must match a hydrogen, and not the expected hydrogen count on an atom.
The OEChem SMILES writers have been modified to prevent them generating atoms such as
[C@@H2]for centers that have stereo explicitly specified (on non-chiral centers) with explicit hydrogens, when the hydrogens are being automatically suppressed by the output SMILES flavor.
OEBondBase.GetStereohave been enhanced such that the internal representation of stereochemistry is invariant of hydrogen suppression. The functions
OEAddExplicitHydrogensno longer invalidate stereochemistry.
The old-style OE binary,
.bin, file format reader now automatically sets the dimension property of molecules and conformers to 3. Whilst new-style OE binary,
.oeb, files explicitly record the dimensionality of the stored coordinates, the old format didn’t and its contents should be assumed to be 3-dimensional.
Correct a minor logic problem in
OEQMolBase.BuildExpressionswhen constructing the expressions to match bond orders but not aromaticity.
Fixed a problem in the SMILES parser, which would cause a segmentation fault if ever a SMILES string longer than 4096 characters encountered a syntax or Kekulization error. We no longer try to report the location of the syntax error for SMILES strings longer than 2048 characters.
A bug in
OEPerceiveBondOrdersthat assumed/required that the incoming molecule not have any aromaticity specified, has been fixed by calling
OEClearAromaticFlagson the incoming molecule. This assumption was valid for its existing use by the high-level file format readers, but meant that calling
OEPerceiveBondOrderstwice in a row could sometimes produce different results.
Fixed a potential problem in several file format readers that caused a run-time abort in Microsoft’s runtime libraries on Windows when reading corrupt or binary files. The Microsoft implementation of the standard
<ctype.h>functions, such as
isupperwill abort when passed negative values, such as when interpreting the bytes of a file as (signed) char.
Fixed a segmentation fault in
OEScrambleMoleculethat was triggered by chiral molecules.
Fixed a bug in
OEMDLCorrectBondStereothat could cause that routine to crash, if the chiral atom on which the stereo chemistry needed to be corrected was degree three instead of degree 4. This routine has been made more robust, and can now correct wedges and hashes around degree three atoms that conflict with the specified MDL parity bit.
The OEChem MDL mol file reader has been made more robust by checking for negative values in the atom count, bond count and list count fields. These are now interpreted as being zero. Corrupted SD files could previously cause OEChem to crash.
Calling close on an oemolistream that wraps
OEPlatform_oein, will now correctly make
oemolistream.operator boolreturn false, and stop it reading (even though
OEPlatform_oein, itself shouldn’t be closed).
The OEChem SMILES parser,
OEParseSmilesfunction, has been fixed to set the default bond order of unspecified external bonds, i.e.
C&1, to be single. Previously these were left initialized as bond order zero, although
Cwere correctly handled as double and triple bonds respectively.
OEPDBOrderAtomshas been improved to only compare atoms names for recognized residues when sorting. This prevents atoms being needlessly reordered for no good reason.
OEPerceiveResidueshas been improved to assign unique atom names to every atom within an unknown or unrecognized residue. Previously, all six atoms in benzene would be given the same atom name
C `` which confuses software that assumes PDB atom names are unique within a residue. *OEChem* now assigns ``C1,
Add goof-proofing to return calls to
OEInvertCenterwhere the specified atom is not trivially invertible (i.e. a center with 3 or more ring bonds).
Improved handling of the hydrogen isotopes
Twhen reading MDL connection tables. These symbols now automatically set the isotope field appropriately. Previous versions of OEChem interpreted these symbols as forms of hydrogen, but relied on the MDL’s mass field or
M ISOline being correctly set to specify a/which isotope.
A very minor bug in
OEPerceiveResidueshas been fixed that prevented residue information from being assigned to lone protons. The algorithm previously assumed all hydrogens were bonded to a heavy atom parent.
OESubsetMolthe dummy atoms used to represent attachment points are no assigned map indices starting from one, i.e. R1, R2, R3, instead of from zero, i.e., R1, R2.
OESubsetMolnow attempts to preserve or undefine the specified stereochemistry at atoms and bonds affected by attachment points.
The performance of
OEDetermineConnectivityhas been dramatically improved for very large molecules. This greatly speeds up the reading of proteins like
pdb1jj2.ent(which contains 98,543 atoms) several fold.
Replaced an inefficient \(O(n^2)\) algorithm in the OEChem::OEMolBaseImpl::OrderAtoms method that checked that the input vector was a valid permutation of a subset of the atoms in the molecule. This dramatically improves the performance of writing large PDB files.
With this release of OEChem, Java wrappers are now provided. This first version only supports Sun’s JVM version 1.4.2.
The OEInterface class and associated machinery for creating and parsing command lines is now available in Python. While Python has native command line argument support, this provides an alternative that is functionally similar to the C++ OEChem version. The example program
molextract.pyhas been updated to demonstrate this new feature.
Major bug fixes¶
Fixed a bug in PyAtomPredicate, PyBondPredicate and PyConfPredicate where a syntax error in the Python callable function would silently fail. Now, if there is an error in the Python function, the exception will propagate back to the Python interpreter.
By default the OpenEye toolkits now use thread-safe memory management internally to allow multiple molecules (and other objects) to be manipulated by different concurrent threads. Modifying the same object concurrently is still unsafe. On some operating systems, OEChem intensive applications may experience a slight overhead which may be explicitly disabled with the new
OESetThreadSafefunction call. Timings on modern GNU/Linux systems show almost no overhead, and the performance benefits of upgrading to g++ 3.4.x means that most applications should run faster with OEChem 1.3.3 than with previous releases even with thread-safety enabled.
--helpfunctionality of the OEInterface class has been improved to indent and wrap the on-line help text at 80 columns. The default screen width can be controlled by specifying the column width on the command line, for example
--help all 100.
The OEInterface parser has been improved to allow
!CATEGORYnames to be quoted, allowing names to contain spaces.
The OESystem::OEFizzGrid class now has an OESystem::OEFizzGrid::operator bool method, which returns true if either floats or integers have been set.
Major bug fixes¶
The semantics of how quaternions are represented within the OpenEye toolkits have now been standardized, as scalar-first. Hence, of the four floating point values that define a quaternion, the first represents the scalar component and the final three values represent the vector component. The failure to explicitly document which of the two possible forms was used, resulted in some OEMath functions assuming scalar-first whilst others assumed scalar-last. (The quaternion functions in OELib, for example, used scalar-last). Functions affected by this include OEMath::OEGeomQuaternionMultiply, OEMath::OEGeom3DUnitQuaternionRotate OEMath::OEGeom3DQuaternionToRotMatrix and OEMath::OEGeom3DRotMatrixToQuaternion.
Minor bug fixes¶
Fixed a potential memory leak in OEBinaryNot.
A minor bug in the OEInterface class, that in some cases caused the detailed description to end with
!END, has been fixed.
The behavior of the
!REQUIREDkeyword has changed in OEInterface files. If an option has a default value, specified by the
!DEFAULTkeyword, then the
!REQUIREDoption is ignored.
Minor bug fixes¶
OEFileDeterminePathAndNameto canonicalize directory separators to the appropriate form for the host operating system.
Improved the performance of OEMutex when using g++, by using the low-level
gthrAPI, rather than using the higher-level locking primitives used by the