Version 1.3.0¶
OEChem 1.3.0¶
New Features¶
Added reaction parsing and processing including: OELibraryGen class for generating combinatorial libraries; OEUniMolecularRxn class primarily for applying normalizations;
OEParseSmirksfunction for converting Daylight’s SMIRKS format to an OEQMolBase; andOEReadRxnFilethat takes an OEMolBase for reading MDL’s rxn files.Added OEVectorBindings class to handle SMARTS vector bindings.
Added ChemDraw CDX reader and writer functions.
Added ability to perceive symmetry classes useful for automorphism detection.
Added factory methods for allocating molecules. Implemented OEGraphMol, OEMol and OEQMol in terms of the factory methods.
Added
intandfloatgrid handlers to OEBinaryIOHandler.Added
OEDisassembleExpressionsfunction which converts query expressions into data directly on atoms/bonds.Added OEMiniMol – a small memory footprint molecule useful for in-memory graph searching.
Added utility functors OEUnaryToBinaryAnd and OEUnaryToBinaryOr that turn a unary functor into a binary ‘or’ or ‘and’ functor.
Add default 64 bit file support on Linux.
Added functions to set and get comment on molecules. These comments are written to the appropriate fields of .sdf,
.mol2and.oebfile formats.New function
OEMDLStereoFromParitythat sets the OEChem stereochemistry of each atom from the MDL stereo parity flag stored in generic data.
Improvements and Optimizations¶
Performance enhancement to
OESetDistance.Modified the implementation of the
OEMCMolBasemember functionSetActivefor significant performance gains in binary i/o.Optimization of copy construction of
OEMCMolBase.Added warning when oemolistream and oemolostream fail to allocate a oeogzstream or oeigzstream .
Made OEMol and
OEMCMolBasecontain a separate dimensionality (e.g. - the value returned byOEMolBase.GetDimension) for each conformer rather than a single value for the molecule. This allows depictions and conformers to be stored on the same molecules and still be handled correctly by the .sd writers.Numerous improvements/enhancements to OEChem’s PDB file reader. The list of exceptional residue names has been updated to match the May 2004 list of public PDB files from RCSB.
The MDL mol file reader is tweaked to record unrecognized atomic symbols (just like we do for 3-letter superatom codes) storing them in the atom’s name property/field.
The routine
OEMDLPerceiveParity(and thereby the MDL mol file writer) is improved to record chiral centers that don’t have stereo specified as the MDL parity value 3 (unspecified chiral center).Improved performance for OEMolBase member functions
OEMolBase.GetAtom,OEMolBase.GetBondandOEMolBase.Sweep.All parity values were being stored for atoms (including value == 0) which was unnecessary, and was consuming both memory and space on disk in the form of OEB files.
Added call to seed random number generator from the clock in
OERandomizeTorsions.Added more
floatmulti-grid handlers to be initialized by default.A warning message was added to the SMARTS parser to alert users in cases of attempted assignment of map index to zero.
Moved implementation of OEInSamePart to a template class so that parts can be tested for bonds (and other objects) as well atoms.
Extended to OEIsRotor constructor to allow the option of hydrogen rotors.
Created and exposed
OEMDLStereoFromBondStereofunction from previously internal code.
Major bug fixes¶
Fixed bug in
OECalcCartesianCoordwhen rotating around the y axis. Prior implementation would give wildly incorrect results.Removed dangerous allocation of too small a temporary array for use in writing conformer coordinates to OEBinary files.
Fixed bug in
.mol2file format reader that resulted in connection tables occasionally being skipped when reading files from stdin, pipes and/or sockets. TheOEReadMol2Filefunction no longer requires the use of tell and seek on its input stream.Modified the heuristic in
OERMSDfor recognizing and dealing with degenerate roots. When the heuristic fails, inappropriate rotation matrices were generated.Fixed bug in
OESet3DHydrogenGeomwherememcmpwas comparing coordinates of typedouble, but usingsizeof(float), so only a partial comparison was being carried out.Modifications which provide the ability to read OEBinary v2 files which contain unrecognized data, without losing the data.
Added 1 byte at the end of OEMolCT record for molecules with >255 && <65536 bonds to store the endianness of short integers which are used to store bond records. The extra byte won’t break old format readers, although oeb files written with old version writers won’t be portable. This change doesn’t break anything either direction, but does allow for portability of oeb files.
Minor bug fixes¶
OEB files now properly store and read conformer energy.
Fixed bug that prevented OEB’s large molecules (>255 atoms) from being cross platform.
Reading and writing molecules in OEB format no longer fails if a string of 0 length has been tagged to the molecules generic data.
Fixed bug in
OEMolBase.Sweepto ensure that atoms/bonds are reindexed sequentially even if there have been no deletions.Fixed bug in
OEParseSmilesthat incorrectly parsed atom map indices.Fixed bug that
OEAtomBase.SetStereowas returningfalseeven when the stereo was set correctly.Fixed a bug in the copy constructor of OEMolTmplt that was only apparent for OEDBMol`s.
Bug fixes to MDL superatom expansion to avoid problems with the order in which superatoms expanded.
Fixed the return value of the
DeleteAtomandDeleteBondmember functions ofOEMolBaseandOEMol. The behavior of these functions was not changed.Added missing
IsDeleted(OEAtomBase*)andIsDeleted(OEBondBase*)methods to OEMolBase.Fixed API misspelling of
OESuppressHydrogensFixed
OEAddExplicitHydrogensto return bool rather than void to reflect its failures.Fixed
OESet3DHydrogenGeomto return an appropriate boolean value rather than always returning true.In
boolOERMSD(const OEMolBase&, const OEMCMolBase&, double *rmsdArray, const OEMatchBase &match, bool overlay = false, double *rot = 0, double *trans = 0)fixed bug that the first conformer of theOEMCMolBasewas used repeatedly rather than using each conformer in succession.
Corrected behavior of
OESubsetMolin the case when a ring bond it the only item removed from the original molecule.Fixed a bug in OEChem’s default OEAtomBase implementation that caused problems for an atom after 65536 neighboring bonds had been deleted. This occurred in codes repeatedly created temporary bonds then deleted them without calling
OEAtomBase.Sweep.Fixes to atom naming bugs in OEChem’s peptide reside perception routines. Also adds support for the PTR residue, representing phosphotyrosine. Additional fixes to tie splitting of C-terminal serine residues. Use `` H’ `` to name C-terminal aldehyde hydrogens (`` H `` denotes the backbone amide nitrogen’s hydrogen).
Changed
OEFuzzy.operator!=andOEFuzzy.operator==to return bool instead of OEFuzzy.Removed overloaded OEChem::OEMatch::operator new as it was incompatible with some versions of STL.
OESystem 1.3.0¶
New Features¶
Added two functions OESystem::OEFizzGrid::GetFloatsSet and OESystem::OEFizzGrid::GetIntegersSet to determine if the floats and integers are set for this grid.
Added the new functions
OEBitVector.SetRangeOnandOEBitVector.SetRangeOffto OEBitVector.Classes to handle grid I/O in OEB files.
Add default 64 bit file support on Linux.
Added
OEIter.Sortmember function to iterators. This allows arbitrary sorting of the order in which objects come out of any OEIter.Added two functions:
OEFileExtensionandOEFileExtensionswhich return a string containing the specified filenames file extension or list of extensions respectively.
Improvements and Optimizations¶
OECheckHelpnow also checks for--help defaults, which will list the default arguments of all parameters.Added a new function for configuring OEInterface which takes an
unsigned char*rather than achar*.The
OEWriteSettingsfunction now defaults to using OEERR rather than OEOUT.Added the non-virtual function
OEUnaryPredicate.CreatePredicateCopyto the OEUnaryPredicate and OEBinaryPredicate base classes which allow users to use this virtual constructor method without unnecessary casts.
Major bug fixes¶
Fixed the previously broken
OEBitVector.FirstBit,OEBitVector.LastBit,OEBitVector.NextBit, andOEBitVector.PrevBitfunctions.Fixed OEBinary writer bug where atom types were being written as atom names.
Added handling for unknown data in OEB files for lossless data conversion even when older software versions are unable to parse data.
Minor bug fixes¶
Removed a bug where OESystem::OEFizzGrid::IsDataType calls
OEBase.IsDataTypeas wellFixed a bug in OEConcatIter that would cause the iterator to appear to have only part of its contents of two empty iterators were pushed back onto the concat iterator.
OEB read and write functions now return with meaningful values (previously the writers always returned false regardless and the readers always returned success regardless).
Fixed problem with some interface parameters calling
newon zero bytes, then reset the pointer, causing small leaks on some platforms.Corrected the error descriptor for FATAL errors.
Fixed MSVC 7.1 ambiguity in
operator && (const OEIter<T>&, bool).Added endianness test for short integers to fix problems with small number of OEB files.
Fixed recurring compile problem in cygwin where
ssize_tisn’t defined.
OEPlatform 1.3.0¶
New Features¶
Added an OETryMutex class that allows for an attempted lock through the function
OETryMutex.TryAdded
OEFileCorrectSeparatorsandOEFileDeterminePathAndNamefunctions.Added new platform-independent
OEIsNaNfunction which is overloaded forfloatanddouble. As the name implies, this function returns a boolean which is true if the number passed is a nan.
Improvements and Optimizations¶
OEMutex implementation now uses pthreads for icc 8.0
Add default 64 bit file support on Linux.
Major bug fixes¶
Defined NONMINMAX in
openeye.hunder win32, which prevents conflicts between STL min/max and windows min/max macros.
Minor bug fixes¶
Made gzip set and initialization functions work with std::cin.
Fixed a bug in the gzip seek function.
Fixed a few minor issues with the handling of trailing separators in path names.
Fix bug in OEPlatform::OEStreamManager::openInput function. When there was no protocol part of the
filenameparameter, the internal protocol string was not properly NULL-terminated.Added code to properly initialize OEMutex.
Used
&&to replaceandfor more consistent compiler support in OEMutex.Implemented copy constructor and assignment operator for oeisstream.