OEPrepareFastROCSMol¶
bool OEPrepareFastROCSMol(OEChem::OEMCMolBase &mol)
bool OEPrepareFastROCSMol(OEChem::OEMCMolBase &mol,
const OEShape::OEColorForceField &cff)
Prepares the molecule mol
to improve the performance of loading
the molecule into memory as an OEShapeDatabase
object from an OEFormat.OEB
file. The following
steps are taken to improve the performance of
OEShapeDatabase.Open
by as much as 10-fold:
Sets the energy of each conformer to
0.0
to avoid writing it to OEB.Suppresses hydrogens and reorders reference conformers for compression.
Pre-calculates color atoms.
Pre-calculates self-color and self-shape terms for all conformers.
It is recommended to call OEPRECompress
on
the oemolostream before writing out to
OEB
. This will store conformers in “PRE-compressed” form
therefore alleviating the need to Gzip the OEB
file and
consequently improving the performance of
OEMolDatabase.Open
.
In general, calling OEPrepareFastROCSMol
and
OEPRECompress
will result in a smaller OEB
file than the default OEB.GZ
output from OMEGA.
Additionally, if OEB
file size is of chief concern a further reduction in
file size can be achieved by using an
OEMCMolType.HalfFloatCartesian
molecule, which
stores reference coordinates and torsions in half floating
point precision (16-bit). The following code snippet demonstrates
how to cast the resultant molecule from OEPrepareFastROCSMol
to use half precision:
OEPrepareFastROCSMol(mol);
OEMol halfMol(mol, OEMCMolType::HalfFloatCartesian);
OEWriteMolecule(ofs, halfMol);
OEPrepareFastROCSMol(mol)
halfMol = OEMol(mol, OEMCMolType_HalfFloatCartesian)
OEWriteMolecule(ofs, halfMol)
16-bit floating point will give a file size saving of approximately 12% with a tradeoff of about 7% more performance when loading the OEB from disk into memory.
Note
By default, OEPrepareFastROCSMol
will
cache color atoms and self color terms for the
OEColorFFType.ImplicitMillsDean
color
force field. The second overload that takes a
OEColorForceField can be used to override
this default.