OEGenerate2DCoordinates added the following new features to improve the 2D layout of molecules:
- The ring template dictionary search algorithm now has the ability to preserve cis/trans bond stereo. The 2014.Feb and 2014.Jun releases contained a bug that caused bond stereo to be erroneously inverted. The 2014.Oct release prevented the erroneous inversion by disallowing creation of such 2D coordinate layouts. This release is the next step in improving 2D coordinate generation for large macrocycles: ring templates with matching cis/trans stereo chemistry can now be used.
- 252 new ring templates have been added:
- 180 complex ring systems with anonymized carbon frameworks
- 72 common macrocycle ring systems with specified cis/trans bond configuration
Example of 2D coordinate generation for macrocycles with cis/trans bond stereo OEChem TK 2.0.2 OEChem TK 2.0.3
A new OEChem TK example that extracts ring templates for 2D coordinate generation has been added. For more information, see the Extract 2D ring templates section.
A new OEIs2DFormat function that can determine whether the given file format supports 2D coordinate information has been added.
Canonical SMILES generated with the OESMILESFlag_SuperAtoms flag will now respect any value that is placed in the OEAtomBase.GetName field while canonical ordering the molecule. This feature is useful for creating specialized SMILES that can be canonicalized and deduplicated.
Major bug fixes¶
- InChI creation will now fail if the molecule being converted cannot be handled by the InChI reference implementation. The OEChem TK will throw a warning message about the molecular data that cannot be converted and return an empty string. This also protects against many possible crashes inside the InChI reference implementation due to abnormal molecules.
- InChI creation will no longer overflow the stack when an atom has more than 20 neighbors.
- The state of the chiral flag from MDL files is now correctly managed and maintained by OEReadMolecule and OEWriteMolecule. Previously, non-chiral (relative) stereochemistry structures were being promoted incorrectly to chiral (absolute) stereochemistry.
- OESubSearch constructors no longer create or use uninitialized memory. This bug was introduced in the 2014.Jun release and caused erroneous warning messages about explicit and implicit hydrogen mismatches.
- OEPDBOrderAtoms previously sorted residues improperly due to a buffer overflow for the OEResidueIndex_YG residue index corresponding to the T-RNA base wybutosine. This has been fixed.
- OEWritePDBFile will no longer buffer overflow for atoms that have their name fields set.
- OEWriteMacroModelFile will no longer buffer overflow for atoms that have their name fields set.
- OELibraryGen previously had a thread-safety issue when generating libraries. This has been fixed.
- OEGetSDDataPairs will again return a OESDDataIter. The return value changed in the 2014.Jun release from “OESDDataIter” to “OEPDBDataIter” by accident.
The following public API points were largely undocumented and have been removed as internal implementation details, including the removal of the public header:
- OEFuzzy OEGetAtomicNumconst OEExprBase*,...
- OEFuzzy OEGetAromatic(const OEExprBase*,...)
- OEFuzzy OEGetFormalCharge(const OEExprBase*,...)
- OEFuzzy OEGetImplicitHCount(const OEExprBase*,...)
- OEFuzzy OEGetHCount(const OEExprBase *expr,...)
- OEFuzzy OEGetBondOrder(const OEExprBase*,...)
- bool OEIsSingleOrAromatic(const OEExprBase*)
- OEFuzzy OEGetStereo(const OEExprBase *expr,...)
Additionally, the function OEDisassembleExpressions has been explicitly marked as deprecated in the documentation and will be removed in a future release.
Minor bug fixes¶
- OEMolBase.Clear will no longer leak memory for OEMCMolType_OEDBMCMol after OEMolBase.Compress has been called.
- A warning is now thrown if kekulization is skipped and OEParseSmiles subsequently finds a bond with a bond order of five.
- Warnings will now be issued for enhanced stereo collection in V3000 format files that have atoms in more than one enhanced stereo collection. A given stereo center atom can be in no more than one stereo collection type.
- Enhanced stereo collection information in V3000 MDL files is now correctly parsed for multiline appendix information.
- Parsing of V3000 stereo collection information has been corrected to combine explicitly named stereo collections. Previously, multiple stereo collection entries of the same name in separate appendix entries generated different stereo groups.
- For V3000 MDL files, implicitly defined stereo collection information is now explicitly exported from OEWriteMolecule. Defined stereocenters that are not included in the explicit enhanced stereo collections will be added to the appropriate stereo collection based on the state of the chiral flag.
- For MDL files, the writer will always attempt to export in V2000 format to ensure maximum compatibility with third party programs. If V3000 format files are explicitly desired regardless of whether the molecule is compatible with V2000, use OEOFlavor_MDL_MV30.
- Undefined behavior in OEMolBaseType_OEMiniMol has been fixed.
- OEMolDatabase.Save will now throw a warning message and return false when attempting to save the database to the same file.
- OEMCMolBase.NewConf will now throw a warning message if the number of atoms in the OEMolBase or OEConfBase is different than the OEMCMolBase into which the conformer is being constructed. This addresses the common problem of creating conformers from molecules that simply differ in the number of implicit or explicit hydrogens. Note: OEMCMolBase.NewConf is still designed to be very fast, so the safety checks are intentionally kept minimal.
- OESetRotamer now properly returns true to indicate success when applied to residues that have fewer than four chi angles.
- Extensive documentation has been added to the OEExprOpts namespace and how it affects OESubSearch and OEMCSSearch.
- An example code has been added that describes how to retrieve an OEGraphMol object as a OEInterface parameter.
- A large warning message has been added to the Multi-Threaded OEChem chapter, alerting users that passing molecules between threads is not supported by default.
- A new OEBio::OEFragmentNetwork class that represents networks of fragments and their interactions has been added. This is being used by the new protein-ligand rendering capability in the Grapheme TK. This class is considered beta and will likely change over the next year as the protein-ligand rendering feature is refined.
Minor bug fixes¶
- OESystem::OEBinaryRead no longer crashes nor displays undefined behavior when there is a mismatch between the template parameter and the registered reader objects.
- OEUniMolecularRxn now strips internal generic atom data annotations on the generated product molecules.
- OEUniMolecularRxn now corrects implicit hydrogen counts on charged atoms in the product molecules.
- OEGetPlatformInfo will now generate more accurate descriptions of modern Windows operating systems.