OERMSDand its many related overloaded functions have been optimized using recent algorithms from the literature. The algorithm now solves a quaternion-based characteristic polynomial (Theobald-2005). For typical cases, this new algorithm runs 3-5 times faster than the prior algorithm for calculating either an optimum RMSD with or without an overlay transformation.
C++ comparison operators (=, !=, <, <=, >, >=) have been created for
OEResidueobjects, allowing OEResidues to be compared to each other directly, used for sorting, and as keys in a std::map.
A new PDB input flavor,
OEIFlavor::PDB::SecStructhas been created, to control perception of protein secondary structure from PDB files. This flavor is on by default when using
OEReadMolecule. When this flavor is on, secondary structure is automatically perceived using
OEPerceiveSecondaryStructure. Otherwise, secondary structure information is taken from HELIX and SHEET records in a PDB file.
Major bug fixes¶
OEAssignAromaticFlagsperformance is significantly improved for molecules with a large number of rings, such as buckyballs. Since
OEAssignAromaticFlagsis called when reading from every file format OEChem supports this solves problems where OEChem would appear to hang indefinitely trying to read certain molecules.
OEAssignAromaticFlagswill now automatically adjust the maximum path considered for aromaticity perception based upon the following heuristics:
If a molecule has more than 15 rings, than the maximum path considered for aromaticity is 50.
If a molecule has more than 30 rings and is potentially a buckyball, than the maximum path considered for aromaticity is 30.
In the case of buckyballs and other fused ring systems of 5 and 6 membered rings, this change has no effect other than to significantly improve the speed of the perception.
Isomeric canonical smiles improved in the following ways:
Performance improvement to isomeric canonical smiles generation by not performing the more expensive isomeric canonical smiles generation on disconnected components that do not contain stereo information.
Very complex ring system corner case fixed that would cause isomeric canonical smiles generation to run for longer than was required leading to slightly different isomeric canonical smiles.
Minor bug fixes¶
OEBuildMDLQueryExpressionsfixed to properly evaluate expressions with zero charge as a valid atom property.
OEMDLStereoFromBondStereono longer throws a spurious platform dependent warning about ‘’‘Stereochemistry corrected on atom number # of #’‘’ when the 2D atom coordinates around a tetrahedral center were all 90 degrees from each other.
OEParseSmilesno longer crashes when passed a
NULLpointer as a string.
oemolistream::GetReadFailureCtnow returns a non-garbage number. The internal counter was not always properly initialized to
0, requiring the user to first call
oemolistream::ResetReadFailureCtto get meaningful results.
OEAssignAromaticFlagsnow resets all atom aromaticity flags to
falseif no rings are found in the molecule.
oemolistream::tellnow works as expected for
MOL2files. This was accomplished by making
OEReadMol2Filerobust enough to not care whether
@<TRIPOS>MOLECULEwas encountered, and continue to read the rest of the molecule regardless of its existence. Additional checks are now done on subsequent lines to ensure the file is indeed in the
OEResidueHydrogenshas been fixed to remove a possible buffer overflow.
OEResidueHydrogensnow preserves assigned atom names for UNL residues.
Several new functions have been added for the perception and handling of protein secondary structural elements:
Sheets, helices, and turns are perceived using the method of Kabsch & Sander 1983, and are stored in atoms’
OEResiduerecords. Secondary structure perception is performed by default when reading PDB files, but can be controlled with a new PDB input flavor,
Minor bug fixes¶
OEColorGradientBase::GetColorAtfixed to correctly round color components after interpolation.
OESystem::OEGeom3DGetOverlayRotTrans renamed from
OEGeomGetOverlayRotTransand argument order changed to mimic other 3D geometry functions.
OEColorfunctions and methods will automatically clamp color values to the range [0,255] and [0.0, 1.0] for integers and floating point numbers respectively:
A warning will be thrown to
OEThrowif a clamping occurs.
Valgrind warning silenced caused by mismatching
deletein OEChem’s small object memory allocator. The proper
delete is now used though no real issue was observed by this bug in production.
OEInterface no longer returns duplicate and confusing error messages by properly respecting the
error_levelargument in all failure conditions instead of using
OEPlatform::OEMallocaPtr::IsValidadded to provide a more straightforward way of testing whether the held pointer is
Major bug fixes¶
OEThreadLocalwill now properly destroy thread local variables upon thread termination for Visual Studio 2005 and later.
oeostream::operator<<fixed to not crash when writing out a
doublethat needs more than 80 characters to fully represent it.
OEPlatform::oeistream::pushlinemethod removed as it was a hack to implement
MOL2file reading since the molecule delimiter comes at the beginning of the next molecule.
oeistream::getlinewas the only other
oeistreammethod that was aware of a
pushlinecall. See the release note about the improvements to
OEReadMol2Filethat justify the removal of this method.
Minor bug fixes¶
The following chapters have been updated to new 2D depictions using the OEDepict 2.x library:
OE3DToInternalStereodocumentation clarified to specify how it behaves in the absence of 3D coordinates.
Substructure Search section fixed to more accurately reflect that subgraph uniqueness does not actually consider differences in matched bonds.