Subsections

 
34.10 OEChem 1.3.2

34.10.1 OEPlatform

34.10.1.1 Minor bug fixes

  1. Fixed the STL standard file I/O wrappers, oeistdstream and oeostdstream that wrap/transform C++'s std::istreams and std:ostreams into the oeistreams and oeostreams required by OEChem's file functions.

34.10.2 OESystem

34.10.2.1 Minor bug fixes

  1. Made OEBitVector's destructor virtual to allow classes to be derived from them.

34.10.2.2 Major bug fixes

  1. Exposed the _baseimpl member of OEBase. This allows the OEChem python wrappers to associate generic data correctly with a molecule.

34.10.2.3 New Features

  1. 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.

  2. Added a new OELinearInterpolate function (template) that can be used to linearly interpolate the value at an arbitrary point inside an OEFixedGrid.

  3. 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.

34.10.3 OEChem

34.10.3.1 Minor bug fixes

  1. 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).

  2. 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.

  3. Fixed a bug in OEPerceiveChiral that failed to recognize that double bonds in rings of size seven or greater are potentially chiral.

  4. 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.

  5. 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 co-ordinates if present. This is now consistent with similar logic prior to writing isomeric SMILES.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. Fixed a bug in OERMSD where if asked to overlay two sets of co-ordinates, and the user didn't ask for either the rotation matrix or translation vector, and the two structures overlayed perfectly, we'd generate a segmentation fault (we were writing a unit matrix to a NULL pointer).

  12. Fixed a bug in OEMCMolBase::SweepConfs where we'd fail to renumber conformer indices, if there were no deleted conformers.

  13. 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.

  14. The OEQBase::SetExpr has been changed to make a copy of the passed const OEExprBase* which fixes issues with copying/assigning OEQMolBases.

  15. Fixed a rare bug in OEAtomBase::GetStereo that could occasionally return either Left or Right for an atom without HasStereoSpecified. This has now been fixed such that whenever HasStereoSpecified returns false, GetStereo will always return OEAtomStereo::Undefined.

  16. 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''.

  17. 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).

  18. 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).

  19. 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.

  20. 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.

  21. 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.

34.10.3.2 New Features

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

  2. 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.

  3. 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.

  4. 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.

  5. Query molecules, represented by an OEQMolBase can now be read from and written to OEB binary files.

  6. New function(s) OECorrectAcidProtonGeometry to expose the new functionality in OESet3DHydrogenGeom to ensure that protons on carboxylic acid groups are cis.

  7. 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''.

  8. Constructors that take an STL std::string have been added to both oemolistreams and oemolostreams, allowing then to take C++ strings, in addition to const char*.

  9. A rewind method has been added to oemolistreams to match the functionality available with OESystem::oeistreams. This method rewinds the stream to the beginning (if possible) and is equivalent to oemolistream::seek(0).

  10. Added a new SetMCSFunc method to OECliqueSearch to allow callers to customize the MCS function used in clique searching.

  11. A new constructor to the OEIsMember functor allows it to be used with an STL std::set. Additionally OEIsMember and OEIsMemberPtr now have assignment operators and Set methods.

  12. Added new function OEGetHonigIonicCavityRadius to return the effective ionic radius of each element to be used in solvation calculations. These values are described in Alexander A. Rashin and Barry Honig, ``Reevaluation of the Born Model of Ion Hydration'', Journal of Physical Chemistry, Vol. 89, pp. 5588-5593, 1985.

  13. New example programs ``catmols'', ``movemol'', ``pdbdata'', ``rings'', and ``rmsd_selftest''.

34.10.4 Python wrappers

34.10.4.1 Major bug fixes

  1. Fixed a major bug in SD tag handling for OEGraphMols. 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.

34.10.4.2 Minor bug fixes

  1. Alternate implementations of OEGraphMol are now exposed by passing a constant to the constructor. This was exposed in v1.3.1, but the C++ constants from molfactory.h were not wrapped.

  2. molchunk.py stopped working in v1.3.1 due to changes to seek() on a stream. A new method rewind() has been added to oemolistream to take the place of the old seek(0).

34.10.5 Common

34.10.5.1 Minor bug fixes

  1. Numerous improvements and refinements to the API documentation.

34.10.5.2 New Features

  1. Added support for x86_64/AMD64 processor families (i.e. AMD Opteron and Athlon64) running SuSE Linux 9.1 (or later).