Version 1.3.2¶
OEChem 1.3.2¶
New Features¶
New function
OEReadRxnFile
to read MDL RXN (reaction) file format.New functions
OEGetAtomComment
andOESetAtomComment
that allow arbitrary text strings to be associated with atoms. This is currently used to preserve/manipulate atom aliases from MDL file formats.Changes to
OEReadMDLFile
andOEWriteMDLFile
to read and write atom alias information. Atom alias information is stored on an atom by the reader usingOESetAtomComment
, and any such atom comments are written to the MDL connection table on output.New function
OEInvertCenter
to invert a tetrahedral center. For chiral atoms, this function flips the molecule from one isomeric form to the other. This function returns false if the center can’t easily be inverted.Query molecules, represented by an OEQMolBase can now be read from and written to OEB binary files.
New function(s)
OECorrectAcidProtonGeometry
to expose the new functionality inOESet3DHydrogenGeom
to ensure that protons on carboxylic acid groups are cis.A new SMILES flavor,
OESMILESFlag::ExtBonds
allows OEChem to write out SMILES strings using the external bond notation, {i.e.[*:1]CC[*:2]
(a.k.a.[R1]CC[R2]
) can now be written out asC&1C&2
.Constructors that take an STL
std::string
have been added to both oemolistream and oemolostream, allowing then to take C++ strings, in addition toconst char*
.A
oemolistream::rewind
method has been added to oemolistream to match the functionality available with oeistream. This method rewinds the stream to the beginning (if possible) and is equivalent tooemolistream::seek
(0).Added a new
OECliqueSearch::SetMCSFunc
method to OECliqueSearch to allow callers to customize the MCS function used in clique searching.A new constructor to the OEIsMember functor allows it to be used with an STL std::set. Additionally OEIsMember and OEIsMemberPtr now have assignment operator
OEIsMemberPtr::operator=
andOEIsMemberPtr::Set
methods.Added new function
OEGetHonigIonicCavityRadius
to return the effective ionic radius of each element to be used in solvation calculations. These values are described in [Rashin-1985] .New example programs
catmols
,movemol
,pdbdata
,rings
, andrmsd_selftest
.
Minor bug fixes¶
Fixed a problem with reading multi-conformer molecules from MDL SD file format, where we wouldn’t correctly record that each conformer already had MDL atom parity information (so we’d re-perceive it upon output which wouldn’t preserve the original input values).
The dimension of an OEMolBase (as returned by the
OEMolBase::GetDimension
method), is now read and written to OEB binary files. Previously, all molecules in OEB were implicitly 3D (which remains the default), but we now explicitly record when the dimension has a value other than three.Fixed a bug in
OEPerceiveChiral
that failed to recognize that double bonds in rings of size seven or greater are potentially chiral.Fixed an obscure bug in the MDL file reader. We were doing chirality and bond stereochemistry processing before we’d kekulized any aromatic bonds (from MDL substructure queries) or set the implicit hydrogen counts. This occasionally confused
OEPerceiveSymmetry
’s graph invariants andOEPerceiveChiral
’s tests for potential chiral atoms.Corrected the high-level file writer,
OEWriteMolecule
, such that when calculating MDL atom parity bits prior to writing MDL file formats, to first extract chirality from 3D coordinates if present. This is now consistent with similar logic prior to writing isomeric SMILES.When writing isomeric SMILES, the
OECreateSmiString
function was suppressing explicit hydrogens necessary to represent double bond stereochemistry. These necessary stereo hydrogens are now written out explicitly.Fixed some issues in the OEChem SMILES parser where there was insufficient validity checking in the processing of external bonds. These problems caused SMILES strings such as
C&1&1
,C&1C&1
and even&=9
to crash the parser. We now more politely generate a warning message and return false.Improvements to
OESet3DHydrogenGeom
to improve the geometry of protons added to carboxylic acids (which are now guaranteed to be cis).OESet3DHydrogenGeom
also avoids calling the functionOEAssignHybridization
on the molecule, using a user-assigned hybridization if available and callingOEGetHybridization
otherwise.Several fixes and improvements to the SMARTS parser. We weren’t correctly handling SMARTS with double digit ring closures, and we didn’t recognize
[te]
as aromatic tellurium. Also fixes to cis/trans stereo chemistry in a few corner cases.Fixed by in a bug in reaction handling of the OELibraryGen class that caused a segmentation fault when using a reaction to delete unmapped atoms.
Fixed a bug in
OERMSD
where if asked to overlay two sets of coordinates, and the user didn’t ask for either the rotation matrix or translation vector, and the two structures overlaid perfectly, we’d generate a segmentation fault (we were writing a unit matrix to a NULL pointer).Fixed a bug in
SweepConfs
where we’d fail to renumber conformer indices, if there were no deleted conformers.Minor tweak to
OEGetHybridization
for uncharged sulfur, selenium, tellurium and polonium. These are now always considered sp3 unless they’re aromatic, in which case they are sp2.The
OEQBase::SetExpr
has been changed to make a copy of the passed OEExprBase pointer which fixes issues with copying/assigning OEQMolBase s.Fixed a rare bug in
OEAtomBase::GetStereo
that could occasionally return eitherOEAtomStereo::Left
orOEAtomStereo::Right
for an atom withoutOEAtomBase::HasStereoSpecified
. This has now been fixed such that wheneverOEAtomBase::HasStereoSpecified
returns false,OEAtomBase::GetStereo
will always returnOEAtomStereo::Undefined
.A minor tweak to
OEGetFileType
to perform case-insensitive string comparison, allows this code to recognize file format extensions independent of capitalization, i.e..mol2
and.MOL2
.Improvements to the heuristics used by
OEMDLPerceiveBondStereo
for placing wedge and hash bonds on a connection table. These include avoiding placing the wedge/hash on the fusion bond for chiral bridgehead atoms, and arbitrarily choosing amongst the best bonds when no unique best is found (previously a tie caused the algorithm to choose randomly between all neighboring bonds).Tweak to
OEDetermineConnectivity
such that atoms that are marked as PDB residuesCL
,BR
andIOD
(i.e. chloride, bromide and iodide ions) are treated like solvent, and are never bonded to other residues (in this case other atoms).Routine maintenance improvements to OEChem’s PDB file format readers to handle files recently released by RCSB. For example, residue
GCP
in pdb1rca.ent, residue783
in pdb1o2t, and similar fixes in PDB codes 1ta2, 1ta6, 1o3m, 1o3n and 1o3o.Improvement to
OEReadMacroModelFile
to read the atomic partial charge out of the charge-charge interaction column and fixed a bug in extracting the atom name field.Enhancement to the
OEWriteMacroModelFile
function to write out the atomic partial charge to both the charge-charge and charge-multipole fields of the MacroModel connection table. Previously, we only stored the partial charge in the charge-charge field, and wrote 0.0 to the charge-multipole field.
Python wrappers¶
Major bug fixes¶
Fixed a major bug in SD tag handling for OEGraphMol s. In OEChem 1.3.1, re-using an OEGraphMol and reading from an SD file, could result in one molecule getting SD tags from the previous molecule.
Minor bug fixes¶
Alternate implementations of OEGraphMol are now exposed by passing a constant to the constructor. This was exposed in 1.3.1, but the C++ constants from
molfactory.h
were not wrapped.molchunk.py stopped working in 1.3.1 due to changes to
oemolistream::seek
on a stream. A new methodoemolistream::rewind
has been added to oemolistream to take the place of the old seek(0).
OESystem 1.3.2¶
New Features¶
A new two argument variant of
OEGeom3DAngle
allows the calculation of the angle between two vectors. This is an efficient form of the three argument variant, where the middle point is defined to be the origin.Added a new
OELinearInterpolate
function (template) that can be used to linearly interpolate the value at an arbitrary point inside an OEFixedGrid.Two new functors OEBinaryAnd and OEBinaryOr for constructing a single binary predicate from two binary predicates. These are equivalent to the OEAnd and OEOr functors for unary predicates.
Major bug fixes¶
Exposed the
_baseimpl
member of OEBase. This allows the OEChem python wrappers to associate generic data correctly with a molecule.
Minor bug fixes¶
Made OEBitVector’s destructor virtual to allow classes to be derived from them.
OEPlatform 1.3.2¶
Minor bug fixes¶
Fixed the STL standard file I/O wrappers, oeistdstream and oeostdstream that wrap/transform C++’s
std::istream
andstd:ostream
into the oeistream and oeostream required by OEChem’s file functions.