The following API have been added to generate and use 2D ring dictionaries:
- OE2DRingDictionary class
- OEIsValid2DRingDictionary function
- OEWrite2DRingDictionary function
- OEInit2DRingDictionary function
The following sections provide examples to generate and utilize user-defined 2D ring dictionaries:
ringdict2pdf example in OEDepict TK will generate a multi-page PDF report of a 2D ring dictionary.
221 new ring templates have been added to the built-in ring dictionary.
Example of the New 2D Ring Templates Pure Carbon Skeleton Ring Templates Ring Templates with Specified CIS/Trans Bonds
OEIFlavor::MOL2::Forcefield flavor has been added to the MOL2 reader. This allows atom names in the MOL2 file to be interpreted as chemical elements while not using the second character if capitalized; for example, CA and CD are both carbon instead of calcium and cadmium. This will help reading OEFormat::MOL2 files that contain forcefield information like partial charges.
OEAddCustomFASTAResidue now provides the ability to customize OEFormat::FASTA input files with unnatural nucleic acids. OEIFlavor::FASTA::CustomResidues flavor is used to activate the new feature. OEIFlavor::FASTA::EmbeddedSMILES flavor has also been added to experiment with adding cyclizations to peptides using custom tethers. These features are currently considered experimental; please send feedback to firstname.lastname@example.org.
- OEReadMolFromString and OEWriteMolToString have been added. These functions provide efficient molecule encoding to all the OEChem file formats. We anticipate significant performance improvements using these functions instead of the oemolostream::openstring method.
OEOFlavor::SDF::UnsetBad2DStereo and OEOFlavor::CDX::UnsetBad2DStereo, new output flavors for SDF and CDX output formats, have been added. These constants control behavior when generating 2D coordinates during output. When used, the writer will set the stereo to “undefined” for any misleading stereochemistry that may result from layout limitations.
OESubsetMol has a new overload that supports the use of OEAtomBondSet input. This can offer significant performance improvements over the predicate overloads since a full molecule iteration can be avoided.
OEMolBase::ClearCoords has been added to fully clear molecule coordinates, clear the dimension code, and reset perception flags.
OEMolDatabase::WriteMolecule has been added to automatically extract a molecule from the database and write it to the oemolostream. This function is optimized for performance to simply move bytes around if the input OEMolDatabase format and the output format match exactly.
OEMolDatabase::GetMoleculeString has been added to allow direct access to the molecular record data.
OEPRECompress and OESweepRotorCompressHydrogens have been added and documented to allow advanced users to start experimenting with perfect-rotor-encoding OEB files to achieve higher rates of conformer compression. This feature is currently only available to the C++ toolkits.
The following free functions have been added for handling dummy atoms in forcefield calculations in special circumstances:
Currently, dummy atoms are only allowed in Szybki TK for non-bonded interactions.
OEAssignRadii free function has been added to allow for a central entry point for any OpenEye Toolkit atomic radii assignment. This free function uses the OERadiiType namespace for choosing the type of radii to assign.
Major bug fixes¶
- OEReadMolecule will now correctly handle right-justified atomic symbols in MDL molfiles. These files are being generated by the RCSB PDB custom SDF file writer.
- OEPerceiveCIPStereo, the Cahn-Ingold-Prelog
stereochemistry perception algorithm, has been rewritten to solve
the following issues:
- Performance issues for large molecules have been resolved.
- Incorrect chirality perception for certain isotopic molecules, detailed in the blog post R or S? Let’s Vote, has been corrected.
- Incorrect chirality perception for stereocenters with both a hydrogen and either a deuterium or tritium attached has been fixed.
- Incorrect chirality perception for stereocenters with both a hydrogen and a *atom (atomic number 0) has been fixed.
- oemolistream::openstring will now properly reset the state of the oemolistream to use the new data passed to oemolistream::openstring whenever oemolistream::Setgz was previously called. In earlier releases, oemolistream::openstring would only work the first time it was called; subsequent calls would fail to use the new data, even though the function was returning true as if it had succeeded.
- oemolistream::Setgz with a false argument called after a stream has finished reading molecules will no longer cause OEReadMolecule to crash on subsequent calls. It will now return false to indicate that the stream has finished.
- OEMolDatabase::Open will now fail and throw a warning message if there is no disk space left for uncompressing compressed input files. In earlier releases, the operation would appear to succeed and lead to corrupted molecules past a certain point. Furthermore, the directory that OEMolDatabase uses for temporary files can now be controlled through the TEMP or TMP environment variables on Windows or the TMPDIR environment variable on Linux and OSX.
- OEMol will now work with the V3000 file format much more reliably. This was accomplished by making sure that multi-conformer molecules can handle groups appropriately. The OEGroupBase class is a container of atom and bond pointers inside an OEMCMolBase. The OEGroupBase class is currently used to store MDL-enhanced stereo information. Each conformer of the multi-conformer molecule has its own separate container. Now methods such as OEMolBase::GetGroups will provide access to the groups of the active conformation.
Minor bug fixes¶
- OEFormat::OEB format reading will no longer cause a rare crash when dealing with large amounts of SD data, PDB data, or bond integer types.
- OEMatchBase now checks parameters to the overloaded versions of the OESubsetMol function to ensure that the given match corresponds to source and destination molecules.
- OEMolBase::NewGroup method signatures now take const std::vector of atom and/or bond pointers. Previously, these arguments were not const even though the vectors were not altered.
- OEReadMolecule will now perform chirality perception for 0D MDL molfiles to ensure that OEAtomBase::IsChiral and OEBondBase::IsChiral are correct.
- OEGetAtomicNum is now tolerant of leading spaces for the string argument passed in.
- OEBinaryIOHandlerBase had accidentally been removed from Java in the 2014.Oct release. This broke the older idiom for preserving rotor-offset compression in OEB files using OEInitDefaultHandler. The preferred API is to now use OEPreserveRotCompress directly on the molecule streams, avoiding the need to access the OEBinaryIOHandlerBase internals entirely.
- The OEUnaryRoleSetPredicateFunc function was renamed to OEUnaryRoleSetBoolFunc for the sake of consistency.
- OERoleSet predicates can now be created and customized in the same way as atom and bond predicates. OERoleSet predicates are an important part of customizing the new OEBio TK Splitting Macromolecular Complexes feature.
- OERoles class has been added as a concrete implementation of the OERoleSet abstract base class.
- An API has been added for classifying and separating the various components of a macromolecular complex by their functional roles. See the Splitting Macromolecular Complexes section for more information.
- OEGetResidues function has been added to allow iteration over all unique OEResidue objects in an OEMolBase.
OEThrow.SetLevel and OEThrow.GetLevel race conditions should be largely alleviated now. OEErrorHandler::SetLevel and OEErrorHandler::GetLevel will now affect the error message level for the current thread only; all new threads launch with the default error level of OEErrorLevel::Default (Info or above).
Multi-threaded OpenEye Toolkit programs may need to be updated to allow the desired output to be sent to standard error. However, the previous behavior was race-condition prone and difficult to get correct.
Minor bug fixes¶
- OERandom constructor will no longer take an unsigned int as input. Previously, the unsigned int would be implicitly cast to bool and would control whether to time seed the constructor. However, most users actually intend to use an unsigned int as a random number seed meant for the OERandom::Seed method. This change should catch this common mistake at compile time.
- OEFileTempPath will now use the directory specified by the TMPDIR environment variable on Linux and OSX. This allows the user to control where OpenEye Toolkits will create temporary files. This is especially useful since OEMolDatabase can use a lot of temporary storage when dealing with compressed data files.
- Minor internal changes have been made.