Version 1.3.2¶
OEChem 1.3.2¶
New Features¶
New function
OEReadRxnFileto read MDL RXN (reaction) file format.New functions
OEGetAtomCommentandOESetAtomCommentthat allow arbitrary text strings to be associated with atoms. This is currently used to preserve/manipulate atom aliases from MDL file formats.Changes to
OEReadMDLFileandOEWriteMDLFileto 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
OEInvertCenterto 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)
OECorrectAcidProtonGeometryto expose the new functionality inOESet3DHydrogenGeomto ensure that protons on carboxylic acid groups are cis.A new SMILES flavor,
OESMILESFlag.ExtBondsallows 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::stringhave been added to both oemolistream and oemolostream, allowing then to take C++ strings, in addition toconst char*.A
oemolistream.rewindmethod 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.SetMCSFuncmethod 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.Setmethods.Added new function
OEGetHonigIonicCavityRadiusto 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.GetDimensionmethod), 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
OEPerceiveChiralthat 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
OECreateSmiStringfunction 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&1and even&=9to crash the parser. We now more politely generate a warning message and return false.Improvements to
OESet3DHydrogenGeomto improve the geometry of protons added to carboxylic acids (which are now guaranteed to be cis).OESet3DHydrogenGeomalso avoids calling the functionOEAssignHybridizationon the molecule, using a user-assigned hybridization if available and callingOEGetHybridizationotherwise.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
OERMSDwhere 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
SweepConfswhere we’d fail to renumber conformer indices, if there were no deleted conformers.Minor tweak to
OEGetHybridizationfor uncharged sulfur, selenium, tellurium and polonium. These are now always considered sp3 unless they’re aromatic, in which case they are sp2.The
OEQBase.SetExprhas 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.GetStereothat could occasionally return eitherOEAtomStereo.LeftorOEAtomStereo.Rightfor an atom withoutOEAtomBase.HasStereoSpecified. This has now been fixed such that wheneverOEAtomBase.HasStereoSpecifiedreturns false,OEAtomBase.GetStereowill always returnOEAtomStereo.Undefined.A minor tweak to
OEGetFileTypeto perform case-insensitive string comparison, allows this code to recognize file format extensions independent of capitalization, i.e..mol2and.MOL2.Improvements to the heuristics used by
OEMDLPerceiveBondStereofor 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
OEDetermineConnectivitysuch that atoms that are marked as PDB residuesCL,BRandIOD(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
GCPin pdb1rca.ent, residue783in pdb1o2t, and similar fixes in PDB codes 1ta2, 1ta6, 1o3m, 1o3n and 1o3o.Improvement to
OEReadMacroModelFileto 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
OEWriteMacroModelFilefunction 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.hwere not wrapped.molchunk.py stopped working in 1.3.1 due to changes to
oemolistream.seekon a stream. A new methodoemolistream.rewindhas 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
OEGeom3DAngleallows 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
OELinearInterpolatefunction (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
_baseimplmember 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::istreamandstd:ostreaminto the oeistream and oeostream required by OEChem’s file functions.