OEFileDeterminePathAndName to canonicalize
directory separators to the appropriate form for the host operating
system.
OEMutex when using g++,
by using the low-level gthr API, rather than using the
higher-level locking primitives used by the libstdc++ STL
library.
oestream classes to prevent accidentally
closing stdin. Minor bug fix to oeiwrapperstream's
implementation.
OEBinaryNot.
OEInterface's methods DeleteInterface and
DeleteParameter now recursively search through sub-interfaces
for the object to delete.
OEStringTokenize and OEStringTokenizeQuoted
functions have been completely rewritten. Both previous implementations
could potentially thrown C++ exceptions, and the latter was just plain
broken.
OEInterface class, that in some
cases caused the detailed description to end with !END,
has been fixed.
!REQUIRED keyword has changed
in OEInterface files. If an option has a default value,
specified by the !DEFAULT keyword, then the !REQUIRED
option is ignored.
OEGeomQuaternionMultiply,
OEGeomGetUnitQuaternionConjugate,
OEGeom3DQuaternionToRotMatrix and
OEGeom3DRotMatrixToQuaternion.
OESetThreadSafe function
call. Timings on modern GNU/Linux systems show almost no overhead,
and the performance benefits of upgrading to g++ 3.4.x means that most
applications should run faster with OEChem 1.3.3 than with previous
releases even with thread-safety enabled.
-help functionality of the OEInterface class
has been improved to indent and wrap the on-line help text at 80 columns.
The default screen width can be controlled by specifying the column width
on the command line, for example -help all 100.
OEInterface parser has been improved to allow
!CATEGORY names to be quoted, allowing names to contain spaces.
OEFizzGrid class now has an operator bool()
method, which returns true if either floats or integers have been set.
OEAtomBase::SetStereo, OEAtomBase::GetStereo,
OEBondBase::SetStereo and OEBondBase::GetStereo
have been enhanced such that the internal representation of
stereochemistry is invariant of hydrogen suppression. The functions
OESuppressHydrogens and OEAddExplicitHydrogens no longer
invalidate stereochemistry.
.bin, file format reader now
automatically sets the dimension property of molecules and conformers
to 3. Whilst new-style OE binary, .oeb, files explicitly record
the dimensionality of the stored co-ordinates, the old format didn't
and it's contents should be assumed to be 3-dimensional.
OEQMolBase::BuildExpressions
when constructing the expressions to match bond orders but not aromaticity.
OEPerceiveBondOrders that assumed/required that
the incoming molecule not have any aromaticity specified, has been
fixed by calling OEClearAromaticFlags on the incoming molecule.
This assumption was valid for its existing use by the high-level
file format readers, but meant that calling OEPerceiveBondOrders
twice in a row could sometimes produce different results.
<ctype.h> functions, such as isdigit and
isupper will abort when passed negative values, such as
when interpreting the bytes of a file as (signed) char.
OEScrambleMolecule that
was triggered by chiral molecules.
OEMDLCorrectBondStereo that could cause
that routine to crash, if the chiral atom on which the stereo
chemistry needed to be corrected was degree three instead of
degree 4. This routine has been made more robust, and can now
correct wedges and hashes around degree three atoms that conflict
with the specified MDL parity bit.
oemolistream that wraps oein,
will now correctly make oemolistream::operator bool() return
false, and stop it reading (even though oein itself shouldn't
be closed).
OEParseSmiles function, has
been fixed to set the default bond order of unspecified external
bonds, i.e. ``C&1", to be single. Previously these were left
initialized as bond order zero, although ``C&=1" and ``C" were
correctly handled as double and triple bonds respectively.
OEPDBOrderAtoms has been improved to only
compare atoms names for recognized residues when sorting. This
prevents atoms being needlessly reordered for no good reason.
OEPerceiveResidues has been improved to assign unique
atom names to every atom within an unknown or unrecognized residue.
Previously, all six atoms in benzene would be given the same atom
name `` C " which confuses software that assumes PDB atom names are
unique within a residue. OEChem now assigns `` C1 ", `` C2 ", etc...
OEInvertCenter
where the specified atom is not trivially invertible (i.e. a
center with 3 or more ring bonds).
OEPerceiveResidues has been fixed
that prevented residue information from being assigned to lone protons.
The algorithm previously assumed all hydrogens were bonded to a
heavy atom parent.
OESubsetMol the dummy atoms used to represent attachment
points are no assigned map indices starting from one, i.e. R1, R2, R3,
instead of from zero, i.e. *, R1, R2.
OESubsetMol now attempts to preserve or undefine the
specified stereochemistry at atoms and bonds affected by attachment
points.
OEDetermineConnectivity has been
dramatically improved for very large molecules. This greatly speeds
up the reading of proteins like pdb1jj2.ent (which contains 98,543 atoms)
several fold.
OEMolBaseImpl::OrderAtoms method that checked that the
input vector was a valid permutation of a subset of the atoms
in the molecule. This dramatically improves the performance
of writing large PDB files.
OEMolBase, OEAtomBase
and OEBondBase methods has been improved in OEChem 1.3.3.
oemolistream::operator bool,
oemolostream::operator bool and oemolistream::eof have
been marked ``const" to enable better compiler optimization.
C12C3C4C3C5C4C1C25. This problem has been fixed in OEChem
1.3.3. Unfortunately, this failure didn't show up on our testing
of 100 random permutations of 2.5 million compound test set.
Efforts are now on-going to validate OpenEye's canonicalization
against all theoretical connection tables with less than
atoms,
for some
OEPerceiveResidues. These allow OEChem to
recognize the N-terminal capping group ``ACE", and the non-standard
amino acid residues ``ABA", ``CGU", ``CME", ``CSD", ``MLY", ``MSE",
``PCA", ``PTR", ``SEP" and ``TPO". Support for these additional amino
acid types has also been added to OEGetResidueIndex and friends.
The sidechain pattern matching algorithm now has improved ``fallback"
functionality for better handling of modified/substituted residues.
OEKekulize. The OEChem toolkit currently doesn't perceive
either boron or silicon to be aromatic (with any aromaticity model),
but this enhancement allows us to Kekulize structures so specified.
OEGetDelphiRadius function has been added to OEChem
to return the default radius for a given element used by the Accelrys'
Delphi program for electrostatics calculations.
OEGetAminoAcidCode can be used to convert
an index from the OEResidueIndex namespace to a IUMB single
character code ('A' for alanine, 'R' for arginine, etc...).
OEAssignCovalentRadii,
OEAssignDelphiRadii, OEAssignBondVdWRadii,
OEAssignPaulingVdWRadii and
OEAssignHonigIonicCavityRadii, are now provided to set
the radius property on each atom of a molecule to the value
specified by the corresponding OEGet...Radius function.
OEIsBinary is provided to determine
whether the specified file format is binary or not, for example,
.oeb, .bin and .cdx.
OEGetFormatExtension can be used
to return a comma separated list of lowercase file format extensions
that can be used to aid implementing directory scans and file
format dialog boxes.
OEMCSFunc functor, OEMCSMaxBondsCompleteCycles
can be used as an objective function to OEChem's maximal common subgraph
matching algorithms.
OENot*, OEAnd* and
OEOr* predicates.
PyAtomPredicate, PyBondPredicate and
PyConfPredicate where a syntax error in the Python callable function
would silently fail. Now, if there is an error in the Python function,
the exception will propagate back to the Python interpreter.
OEInterface class and associated machinery for creating
and parsing command lines is now available in Python. While Python has
native command line argument support, this provides an alternative that
is functionally similar to the C++ OEChem version. The example program
molextract.py has been updated to demonstrate this new feature.
/opt/SUNWspro/bin/CC compiler,
that have now been fixed by recent patches.
cxx compiler
on HP/Compaq Tru64 running on Alpha processors. This is caused by HP's
official ``end-of-life" of their alpha server line, including developer
support program. For the time being, we continue to support Alpha
Tru64 but only using the GNU g++ compiler.