Changes to the FastROCS algorithm, including porting the static color calculation to GPU, have resulted in a more than 2x performance improvement of FastROCS on some GPU systems. Benchmarking was carried out on AWS GPU instances and compared to the 2018.Oct version of FastROCS TK:
For some systems, the standard benchmark dataset of 14M conformers is not large enough to fully saturate the GPUs. To demonstrate the potential performance of larger databases, a 2 billion conformer subset of Enamine was searched on suitable AWS instances. FastROCS searched the 2 billion conformer database on an AWS P3 instance with 8x Nvidia Tesla V100 GPUs at a rate of over 44 million overlays per second:
A new compressed file format with the extension oez has been added to OEChem TK. This format uses the Zstandard algorithm to efficiently compress individual multi-conformer molecules, making it well-suited to work with OEMolDatabase for fast read-only random access to molecules. See more details in the Compressed Input and Output section of the OEChem TK documentation.
Following our tradition of providing easily comprehensible visualization of complex data, OEGrapheme TK can now depict Ramachandran plots ([Ramachandran-1963]). These plots provide an easy way to examine the distribution of backbone dihedral angles in a particular protein. For instance, structure quality can be assessed by identifying residues whose backbone \(\psi\) are outside energetically accessible regions. Grapheme TK uses the data and classifications available in OEBio TK, which were extracted from the open-source Computational Crystallography Toolbox [Grosse-Kunstleve-2002].
Hovering over the red circles (on the top right plot) reveals the name of the outlier residues
Examples of visualizing the Ramachandran plots of various residue types in Grapheme TK (PDB: 2ROX)
Atom and bond expressions of query molecules have been optimized for substructure search. The graphs below show the performance improvement since the 2018.Oct release. Optimization has been turned on for both MDL queries and SMARTS patterns and can be controlled by the following options:
A new OEFormat::OEZ compressed binary format has been added with the .oez extension. This file format only supports multi-conformer molecules derived from the OEMCMolBase class. Each molecule is individually compressed in the file using the Zstandard compression algorithm. See the Compressed Input and Output section for more details.
This new file format is not backwards compatible. OpenEye applications and toolkits released before April 2019 will not be able to read or write this file format.
Multi-conformer molecule overloads have been added to the following existing APIs:
New input flavors, OEIFlavor::MDL::SuppressEmptyMolSkip, OEIFlavor::SDF::SuppressEmptyMolSkip, and OEIFlavor::RDF::SuppressEmptyMolSkip, have been added to the MDL formats to allow returning empty molecule records. This allows the SD data to be recovered from these records.
New output flavors, OEOFlavor::MDL::SuppressTimestamps and OEOFlavor::SDF::SuppressTimestamps, have been added to the MDL formats to explicitly suppress timestamps in the file header. This is convenient for generating diffable test files.
The following new classes have been added to provide alternative ways to access tagged property data in molecules:
A new OELibraryGen::NumPossibleProducts method has been added that returns the number of possible products that can be generated.
A new OEShortestPath overload function has been added that disallows traversing excluded bonds in the path.
A new OEAtomBondSet::GetParent method has been added.
A new OEGetResidueIndexFromCode function has been added.
The OEPDBOrderAtoms function has been updated to take an argument that preserves the PDB residue order. It defaults to false to preserve backwards compatibility.
The following preliminary APIs have been added to handle design units:
The above classes and functions are currently used by Spruce TK for protein handling.
A new namespace, OEOmegaReturnCode, has been introduced that defines return codes for various API methods.
A new function, OEGetOmegaError, has been introduced that returns error descriptions corresponding to various Omega return codes.
A new method, OETorLib::GetTorRule, has been introduced that returns the torsion rule corresponding to a rotatable bond.
A new method, OETorLib::HasTorRule, has been introduced that determines whether a torsion rule is defined for a rotatable bond.
The following preliminary APIs, which were introduced in Omega TK 2.8.0, have been modified to return an unsigned return code instead of a bool:
The change in the preliminary APIs mentioned above is a breaking change and needs to be addressed properly by scripts and code that use these APIs. Since bool and unsigned are mutually compatible, any scripts or code using these API methods may continue to function without a proper fix and may not give any runtime or compile-time error. However, the end results obtained from such scripts or codes could be incorrect.
The following APIs have been modified to be const and some of their arguments have been modified to be const:
The following APIs have been modified to return a bool instead of a void: