Version 1.9.2¶
OEChem 1.9.2¶
New features¶
OEChem now supports the creation of InChI. OEChem produces the same InChI as the InChI library provided application for 99.77% of MDDR in the SDF format. The differences fall into two categories:
Corrupted molecules where the tools have to make arbitrary decisions about how to correctly interpret the data.
Bond stereo being perceived by the InChI application where bond stereo does not actually exist. OEChem does not assign bond stereo and generates what appears to be a more “correct” InChI for these cases.
The inclusion of InChI support added the following:
In addition, oemolostream will automatically write InChI when using the
.inchi
file extension.OEPrepareSearch
added that perceives atom and bond properties of a molecule that are necessary to successfully execute a given substructure search. It is now highly recommended to run this function on a molecule before passing the molecule to any of OEChem’s graph matching algorithms.
Changed the default input and output molecule file formats for molstreams and molthreads from
OEFormat::SMI
toOEFormat::ISM
.OEWriteMDLFile
writes MDL enhanced stereo groups.OEWriteMDLFile
will now automatically write a molecule in the V3000 file format if it has more than 999 atoms or if it has any MDL enhanced stereo group regardless of the given file format flavor.OESetMCSExhaustiveSearchTruncationLimit
andOEGetMCSExhaustiveSearchTruncationLimit
functions added that control how thoroughly the search is performed by theexhaustive
MCS search.Added the following standard SYBYL atom types:
OETriposType::Cu
OETriposType::Cooh
,OETriposType::Croh
,OETriposType::Crth
,OETriposType::Fe
,OETriposType::Mg
,OETriposType::Mn
,OETriposType::Mo
,OETriposType::Se
,OETriposType::Sn
, andOETriposType::Zn
. Atoms for which no SYBYL atom type exists are still internally handled with theOETriposType::Du
type, however when writing these atoms into aMOL2
file their atomic symbol is written to the SYBYL atom type column instead of a string “Du”.Added
OEGetDimensionFromCoords
function that returns the dimension of the molecule from its coordinates.Residue information is now retained when reading files with MacroModel formats (.mmod, .mmd, and .dat).
Major bug fixes¶
It used to be possible to perform a substructure search for stereochemistry or hybridization on a molecule that did not yet have those properties perceived. This led to very subtle to detect problems where molecules would not match that were expected to match.
To combat this, the following OESubSearch methods now throw warnings in case some property that is necessary to successfully execute the substructure search has not been perceived yet:
These warnings can be suppressed by calling the
OEPrepareSearch
function on the molecule first.Utilizing the
OEPerceived::AtomStereo
andOEPerceived::BondStereo
flag to mark whether the atom and bond stereo information is perceived in a molecule.It is now thread-safe to copy the same OEMol from multiple threads at the same time. This was caused by some OEMCMolBase methods not actually being const. The following methods were marked as const, but were not actually const, leading to subtle race conditions:
The const-ness of many OEChem functions and methods have been fixed. This can potentially cause code to not compile if the code was incorrectly abusing the const-ness of the object. For example, the following code used to compile before this release:
const OEGraphMol mol; OEAddExplicitHydrogens(mol);
The const-ness of the following functions and methods have been fixed:
OEMCMolBase::GetMCMolTitle
method added to provide a way to differentiate between a top-level OEMCMolBase title and a conformer title.OEMCSSearch::AddConstraint
now requires that the constraint is satisfied in all resulting matches. Previously, the documentation stated the following, “Constraints are considered satisfied in subgraphs which do not contain any constrained atoms or bonds in either the pattern or target molecules.” This is no longer the intended behavior.OEMCSSearch::AddConstraint
now returnsfalse
if passed the same pattern atom or bond twice. The user must now useOEMCSSearch::ClearConstraints
in order to rebuild a set of constraints.
Minor bug fixes¶
OE3DToBondStereo
function returns false if the molecule dimension is 0, since no cis or trans bonds can be perceived if there are no coordinates.Fixed a problem when the max matches value of the OESubSearch was reset to the default value
1024
every time the search was initialized by theOESubSearch::Init
method.Adjusted the dimension of a molecule to 0 if it is read from either a
MDL
or anSDF
file with no coordinates.OE3DToAtomStereo
function throws a warning and returnsfalse
if any chiral atom of the molecule is not tetrahedral, i.e., if the atom stereo can not be determined from the 3D coordinates, usually because it is flat.The following functions and methods throw additional warnings in cases where either the
OE3DToAtomStereo
or theOE3DToBondStereo
functions encounter any problems when assigning stereo from coordinates:OEPrepareSearch
functionsOEWriteMolecule
function when writing the following formats:OEFormat::MDL
,OEFormat::SDF
OEFormat::ISM
,OEFormat::INCHI
andOEFormat::INCHIKEY
OEOmegaConfTest::CompareMols
method
OESubsetMol
now produces correct results when theRGroup
flag wastrue
and the molecule contained OEGroupBase objects.OEPerceiveChiral
function considers hydrogens with different mass as being different i.e. it will recognize the C atom in a molecule “[3H]C(N)F” as a chiral atom, since it has four different neighbors: N, F, H and 3H.The first argument of the following methods is not const any longer:
OEOmegaConfTest::CompareMols
method
Improved the performance of the following methods:
OEOmegaConfTest::CompareMols
method
OEAtomBondSet::AddAtom
andOEAtomBondSet::AddBond
will now return false when the trying to mix atoms from different molecules.OEAtomBondSet::HasAtom
andOEAtomBondSet::HasBond
added for testing for membership.
Documentation fixes¶
The
OEAroModel
namespace is now accessible from the table of contents.
OESystem 1.9.2¶
New features¶
Added the following non-linear color gradients:
These classes along with the OELinearColorGradient class now derive from the OEColorGradientBase base class.
Minor bug fixes¶
Fixed a possible link-time race condition with
OEGetTag
that could cause a crash ifOEGetTag
was used during link-time (library loading).OEColor could encounter a benign race condition during color clamping operations.
Parameter types for
OECopyArray
andOEMoveArray
have been changed from unsigned int to size_t to reduce compiler warnings and increase compatibility with the underlying syscall.Put
fixed to avoid a rare race condition when pushing in a null value.OEErrorHandler copy constructor and
operator=
argument changed from const to non-const as they were not actually const. These methods can pass ownership from the right-hand-side to the left-hand-side for the underling OEErrorHandlerImplBase object.
OEPlatform 1.9.2¶
Major bug fixes¶
Windows C++ MT projects will no longer randomly crash at process exit due to OpenEye toolkit internals.
OEThreadLocal destructor will now delete the object associated with the current thread. The object has to be destroyed at this point since after the OEThreadLocal destructor finishes it is impossible to get the data stored in it again. Note, it is still undefined behavior to destroy a OEThreadLocal object that is still being used by another thread.
Calling OEPlatform::oeofstream::append after OEPlatform::oeofstream::open will no longer hang indefinitely once data is written to it.
OEBio 1.9.2¶
Minor internal improvements.
OEGrid 1.4.3¶
Minor bug fixes¶
OESkewGrid now properly initializes its base class OEGridAbstractBase during construction.
The
OEGridFileType::Ascii
format will now try harder to detect any incorrect file formatting issues and warn about them.
Documentation fixes¶
The
ASCIIWriter
documentation example in the Grid Input and Output section was incorrect as it was writing out both grid indices and grid values.