oeigzstream constructor, that
could cause problems determining the size of a file using size,
as zlib was not being correctly initialized.
OEFileCreate that was failing to
close the file descriptor for the newly created file.
OEFile::Size method and the
OEFileSize function have been changed from size_t
to oefpos_t to allow correct handling of large files on
32-bit platforms.
oeistream and oeostream
when these classes are used directly.
OEFileDetermineName and OEFileDeterminePath
to extract the basename and path of a filename respectively.
OEConcatIter to avoid
potential problems caused by the fact that appending items to an
STL std::vector invalidates iterators over it. The new
implementation uses offsets rather than pointers to avoid problems.
This also fixes a crash of OEConcatIter::operator++ on an
empty iterator.
OEIter::Push that caused problems if the
iterator was previously empty.
OEFileExtension that was causing crashes
when no extension was present.
OEInterface::GetParameters that caused
parameters in sub sub interfaces to appear multiple times in the
returned iterator.
OEWriteSettings function now takes a const
OEInterface&.
OEMath template functions OEGeom3DGetCenterAndExtents
and OEGeom3DGetCenterOfMass have been added to calculate the
center, extents and (weighted) center of mass of a set of 3D coordinates.
OEInterface class now has new GetTypedParameter
template member functions.
OEGetCenterAndExtents has been added to
OESystem's grid handling code, to retrieve the center and extents of
a grid.
IsCommonIsotope
or OEGetIsotopicWeight with both atomic number and atomic mass of
zero. If ever IsCommonIsotope is called with a mass of zero (for
any element) it now returns false, and whenever OEGetIsotopicWeight
is called with a mass of zero, it now returns the corresponding isotopically
averaged atomic weight, i.e. via OEGetAverageWeight.
OEMatch class was missing an explicit assignment
operator, which could cause memory corruption if one OEMatch
was ever assigned to another. This has now been implemented.
OEDetermineConnectivity functionality
to restrict proximity-based bonding of hydrogen atoms preferably to
their nearest suitable heavy (non-hydrogen) neighbor. Previously,
hydrogens only bonded to their nearest neighbor, which for all-atom
molecules with bad clashes caused the overlapping protons to sublimate
as molecular hydrogen, leaving their original parents in strange
charge (or radical) states.
@TRIPOS<SUBSTRUCTURE> records in Sybyl
.mol2 files has been rewritten to ensure that ligands, solvent
molecules and non-standard amino acids are correctly placed in their
own Tripos substructure. Previously, PDB HETATMs would be
placed in substructure 1, sharing it with a valid RESIDUE.
Each OEResidue is now allocated a unique Tripos substructure,
and non-standard (or unrecognized) residues are marked as GROUP.
OESetAngle and OESetDistance
have both been made more robust to molecules without coordinates (and
zero bond lengths).
OECreateAbsSmiString are now identical to those
created by OECreateSmiString with just the AtomMaps
and RGroups flags.
OEDetermineConnectivity to avoid generating bonds
between atoms in alternate locations/conformations. This is only a
problem for PDB files read with the ALL input flavor. There
are still multiple bonds between invariant ``hinge'' atoms and the
multiple copies of it's neighbors in alternate conformations.
OEMolBase's
+= operator, and the equivalent OEAddMols function
calls, when concatenating large molecules with co-ordinates.
DATA flavor) has
been improved. Instead of attaching each data item to the
molecule as it's encountered, the file format readers now
accumulate the data first, and then attach it to the molecule
on encountering the end of the connection table.
ExtBonds flavor that was previously only available
to the SMI file format, is now also available to the
CAN and ISM formats. Likewise, the flavors available
to the MOL2 and MOL2H file formats have been synchronized,
with MOL2H becoming a flavor of MOL2 (i.e. the
file extension effectively specifies a different default flavor).
OEMCSMaxAtomsCompleteCycles objective function
requires that ring atoms and bonds of the query molecule have been
perceived (using OEFindRingAtomsAndBonds) before the
corresponding OEMCSSearch instance is constructed. To
avoid unexpected behavior, the OEMCSSearch constructors
now call OEFindRingAtomsAndBonds themselves if allowed to
make a copy of the query molecule (the default), or issue a
warning to OEThrow otherwise.
OEPerceiveResidues
function. The new functionality to identify an acetyl as an N-terminal
blocking group, PDB code ACE, could get confused when pattern
matching some pathological graphs, such as proteins with N-terminal
proline residues.
OEMolBase has been reordered, with
OEMolBase::OrderAtoms, (and no atoms had been deleted) before
writing the molecule. This could also affected the OEMolBase::Compress
and OEMolBase::UnCompress methods.
OESubSearch instance that contains atom or bond stereo.
OEChemIsLicensed API point has been provided
to allow an application to check whether the OEChem, OESystem and
OEPlatform libraries have managed to find a suitable run-time
license. This function can safely be called from programs to
determine a priori whether using OEChem functionality may
trigger a fatal error, allowing a warning to be issued and/or
calls the affected functionality to be avoided.
MOL2::Substructure flavor has been added to the
high-level writers (and a new default argument to the low-level
OEWriteMol2File) to force the writer to emit a suitable
@TRIPOS<SUBSTRUCTURE> record even for molecules having only
a single substructure. The default behavior remains the same
(to omit the record for ``small'' molecules) to save space in
the common case.
OEParseSmiles, has been
tweaked to treat SMILES with inconsistent cis/trans bond stereo,
such as C/C=C(/C)/C, as a soft warning rather than as a hard
error. Previously, OEChem followed the Daylight toolkits, treating
this as a serious error, and returning an empty molecule. The
new behavior is that a warning is now thrown to OEThrow,
but the molecule is returned, just without specified stereochemistry
for the problematic bond(s). This allows OEChem to be used to
correct/recover SMILES generated by buggy SMILES writers.
OEAtomSetMDLParity and
OEAtomGetMDLParity have been introduced, to simplify the
task of storing and retrieving the MDL parity value associated
with each atom.
OEGetCenterAndExtents can be used to
retrieve the center and 3D extents of a given OEMolBase.
.isosmi'' is now treated as
a synonym for ``.ism'', indicating isomeric SMILES.
OEQMolBase::BuildExpressions function now avoids
constructing an atomic hybridization constraint if the query atom's
OEAtomBase::GetHyb() method returns zero.
The Python and Java wrappers have been split out from the OEChem distribution, into a distribution of their own. Release notes for changes to the Python and Java language bindings for OEChem, OESystem and OEPlatform can from now be found listed in their own separate release notes document.