Version 1.3.2

OEChem 1.3.2

New Features

  • New function OEReadRxnFile to read MDL RXN (reaction) file format.

  • New functions OEGetAtomComment and OESetAtomComment 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 and OEWriteMDLFile to read and write atom alias information. Atom alias information is stored on an atom by the reader using OESetAtomComment, 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 in OESet3DHydrogenGeom 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 as C&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 to const 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 to oemolistream::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= and OEIsMemberPtr::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, and rmsd_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 and OEPerceiveChiral’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 function OEAssignHybridization on the molecule, using a user-assigned hybridization if available and calling OEGetHybridization 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 either OEAtomStereo::Left or OEAtomStereo::Right for an atom without OEAtomBase::HasStereoSpecified. This has now been fixed such that whenever OEAtomBase::HasStereoSpecified returns false, OEAtomBase::GetStereo will always return OEAtomStereo::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 residues CL, BR and IOD (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, residue 783 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.

  • stopped working in 1.3.1 due to changes to oemolistream::seek on a stream. A new method oemolistream::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