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;
OEParseSmirks
function for converting Daylight’s SMIRKS format to an OEQMolBase; andOEReadRxnFile
that 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
int
andfloat
grid handlers to OEBinaryIOHandler.Added
OEDisassembleExpressions
function 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,
.mol2
and.oeb
file formats.New function
OEMDLStereoFromParity
that 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
OEMCMolBase
member functionSetActive
for 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
OEMCMolBase
contain 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::GetBond
andOEMolBase::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
float
multi-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
OEMDLStereoFromBondStereo
function from previously internal code.
Major bug fixes¶
Fixed bug in
OECalcCartesianCoord
when 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
.mol2
file format reader that resulted in connection tables occasionally being skipped when reading files from stdin, pipes and/or sockets. TheOEReadMol2File
function no longer requires the use of tell and seek on its input stream.Modified the heuristic in
OERMSD
for recognizing and dealing with degenerate roots. When the heuristic fails, inappropriate rotation matrices were generated.Fixed bug in
OESet3DHydrogenGeom
wherememcmp
was 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::Sweep
to ensure that atoms/bonds are reindexed sequentially even if there have been no deletions.Fixed bug in
OEParseSmiles
that incorrectly parsed atom map indices.Fixed bug that
OEAtomBase::SetStereo
was returningfalse
even 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
DeleteAtom
andDeleteBond
member functions ofOEMolBase
andOEMol
. The behavior of these functions was not changed.Added missing
IsDeleted(OEAtomBase*)
andIsDeleted(OEBondBase*)
methods to OEMolBase.Fixed API misspelling of
OESuppressHydrogens
Fixed
OEAddExplicitHydrogens
to return bool rather than void to reflect its failures.Fixed
OESet3DHydrogenGeom
to return an appropriate boolean value rather than always returning true.In
bool
OERMSD
(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 theOEMCMolBase
was used repeatedly rather than using each conformer in succession.
Fixed behavior of
oemolostream::GetString
when the stream is wrapping a oeogzstream.
Corrected behavior of
OESubsetMol
in 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::SetRangeOn
andOEBitVector::SetRangeOff
to OEBitVector.Classes to handle grid I/O in OEB files.
Add default 64 bit file support on Linux.
Added
OEIter::Sort
member function to iterators. This allows arbitrary sorting of the order in which objects come out of any OEIter.Added two functions:
OEFileExtension
andOEFileExtensions
which return a string containing the specified filenames file extension or list of extensions respectively.
Improvements and Optimizations¶
OECheckHelp
now 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
OEWriteSettings
function now defaults to using OEERR rather than OEOUT.Added the non-virtual function
OEUnaryPredicate::CreatePredicateCopy
to 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::PrevBit
functions.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::IsDataType
as 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
new
on 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_t
isn’t defined.
OEPlatform 1.3.0¶
New Features¶
Added an OETryMutex class that allows for an attempted lock through the function
OETryMutex::Try
Added
OEFileCorrectSeparators
andOEFileDeterminePathAndName
functions.Added new platform-independent
OEIsNaN
function which is overloaded forfloat
anddouble
. 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.h
under 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
filename
parameter, the internal protocol string was not properly NULL-terminated.Added code to properly initialize OEMutex.
Used
&&
to replaceand
for more consistent compiler support in OEMutex.Implemented copy constructor and assignment operator for oeisstream.