OEMolDatabaseclass added for providing fast random read-only access to all the file formats OEChem supports. Please see the new Molecular Database Handling chapter of the documentation for a more thorough description.
The meaning of the
.smi file extension has changed in
OEChem 2.0. The
.smi file extension will now retain
stereochemistry information. This could cause problems for systems
that relied upon
.smi to strip away stereo chemistry.
The following changes have been made to how OEChem defines the various flavors of SMILES (see images demonstrating these changes in Table: SMILES File Formats):
OEFormat::CSVfile format added to OEChem for round-tripping molecules and SD data to other software packages that support the comma-separate-value,
.csv, file format. OEChem supports the
.csvfile format that has largely become ubiquitous and is now standardized by RFC 4180. The following APIs were added for handling CSV files in OEChem:
Added automatic 2D coordinate generation to the following file formats when invoking the
OEWriteMoleculehigh-level molecule writer:
In case of the
OEFormat::CDXfile format, 2D coordinates are generated if the molecule has no 2D coordinates.
OEGenerate2DCoordinatesadded to assign 2D coordinates to the given molecule.
OERoleSetabstract base class added as a mixin class to allow a class to contain a set of
OERoleobjects for classification purposes. This is similar to how the
OEBaseclass provides associative data container behavior as “generic data”. The following classes already derive from
More classes across the toolkits may be added in the future as dictated by needs.
oemolstreambase::GetFileNamemethod added to all molecule streams to return the file name used to open the stream, if a file name was used.
OEMatchBase::IsValidmethod added for determining whether the match contains any atoms or bonds.
OEAssignZap7Radiifunction added to assign radii from the ZAP7 set.
OEParseSmilesOptionsclass added for adding more complex SMILES parsing options for the
OEParseSmilesfunction. This added the ability to make
OEParseSmilesquiet with regard to parsing failures through the
OEChem::OEConfBase::operator C * has been removed
from the API. C++ users who used this API for direct coordinate
access or derived their own classes from
OEConfBase will need to change to the
following different idiom.
OEChem::OEConfBase::operator C *has been removed in favor of the new
OEConfBase::GetCoordsPtrmethods. This allows implementations of
OEConfBaseto use alternative data storage for coordinates, e.g., 64-bit
doubleprecision floating point. Users of
OEConfBaseshould not use
OEConfBase::GetCoordsPtrdirectly, instead relying on the
Due to the above change, the following code will now fail to compile:
OEMol mol; for (OEIter<OEConfBase> conf = mol.GetConfs(); conf; ++conf) mol.NewConf(*conf);
This code was not doing what most programmers thought it was doing. It was actually implicitly casting the
OEConfBase &into a
float *and then calling the version of
NewConfthat takes a
floatpointer. Users should change their code to the following:
OEMol mol; for (OEIter<OEConfBase> conf = mol.GetConfs(); conf; ++conf) mol.NewConf(conf);
The following methods that rely on
OEConfBaseT<double, 3>template instatiations were removed and replaced with
This is part of a larger effort to migrate away from the
OEChem::OEConfBaseT template class in favor a pure
OEConfBase class to allow for
conformer storage in formats other than 32-bit precision
float. This will only affect C++ users of the toolkit, even
then, users who only used
OEConfBase as a typedef should not
Major bug fixes¶
OEFormat::MDLV3000 file format was unable to read multiple molecules from the same file if they were all in the V3000 format. Note, this did not affect the
OEFormat::SDFfiles containing V3000 as those files contain ‘$ $ $ $’ to delimit separate molecule records.
oemolthreadbase::PutMolwill now destroy the pointer passed to it if the underlying buffer returns
false, e.g., the buffer has already been closed.
Minor bug fixes¶
OEChem::OEFormat::BINformat after being deprecated for 10 years.
OEMolToSmilesno longer outputs the title of the molecule.
OEGetCommenthave have been slightly optimized for speed. There is also a larger optimization for memory and file space in the
.oebformat. Previously, setting the comment to an empty string would write superfluous data to the
OECopyPDBDatawill no longer increase the memory consumption of the destination molecule whenever the source molecule does not contain any data. This was causing
OEFormat::PDBfiles read into a
OEMCMolBaseto use more memory than necessary.
OEFormat::MOL2parser will now properly ignore lines between molecule records that start with the pound sign, “#”. Previously, these lines would cause OEChem to spew a lot of warnings and cause the parser to fail.
The chapter about InChI failures has been removed since most of the InChI failures were fixed in the last release, OEChem 1.9.3 in 2013.Oct.
Release notes section re-organized to make the current release more prominent.
Added documentation and code example for
OESmartsLexReplace. The old function named
SmartsLexReplacewithout the leading
OEis considered deprecated and has been removed from the documentation.
Added support for handling the comma-separated-value, CSV, format specified by RFC 4180 with the following two free functions:
The following low-level functions were added support CSV handling but can be ignored by most users:
OEStringJoinnow accepts a parameter to determine if the output string should end with the selected delimiter.
OEStringTokenizeQuotedadded a parameter for whether consecutive delimiters should be treated as a single delimiter. The default behavior is exactly the same as previous versions.
The performance of reading plain-old-data attached to
.oebfiles has been improved by about %10.
OEErrorLevelToStringfree function added.
OEBFPosTEndianadded for allowing 64-bit integers to be round-tripped to binary formats regardless of machine endian-ness.
OEWriteDataadded to allow easily writing any data type as binary.
Major bug fixes¶
The mutex can now be properly released during a process exit like
A deadlock will no longer occur if the implementation of
OEErrorHandlerImplBase::Msgneeds to throw a message itself.
Minor bug fixes¶
OESystem::OEBinaryTagMaxLengthconstant added and set to 1024, the maximum length of an explicit string tag in the
OEStringTokenizeQuotedwill no longer treat a quote as the end quote of a field if it is escaped by another quote. Table: OEStringTokenizeQuoted Change demonstrates the change to support proper CSV parsing.
The size of
OEBitVectorobject has been increased from 12 bytes to 16 bytes on 64-bit machines. The size is still 8 bytes on a 32-bit machine.
OEAddLicenseDatafunction added to parse a string as if it is an OpenEye license file and then license the current process with it.
Major bug fixes¶
OEPlatform::oeistream::size was incorrectly being truncated to 32-bits on 32-bit machines. This resulted in incorrect file sizes being reported for files over 4 gigabytes in size on 32-bit machines.
OEPlatform::oeifstream::tell would return incorrect values if called after OEPlatform::oeifstream::size and after some bytes were already read from the stream.
Minor bug fixes¶
OEPlatform::OEMallocaPtr::GetPtradded to allow the object to be explicitly converted to a pointer type.
Major bug fixes¶
OEGridFileType::Asciifile writer will no longer sometimes corrupt the stack and crash.
When reading a CCP4 file, the standard deviation stored in the CCP4 header is now used to normalize the file.
OENormalizeGrid now properly normalizes by sigma (not variance)
Writing CCP4 maps now uses the original map statistics when possible.
Rotated skew grids attached as generic data are now round-trippable when saved to OEB
Fixed a crash when interpolating grids where the rotation matrix inverts the target grids bounding box
MTZ files with more than 18 columns are now read properly
Fixed a memory leak in
The constructor for the predicate
OEHasResidueNumbernow takes an int rather than an unsigned int because residue numbers can be negative.