This nature of the algorithm used to calculate overlap is determined by the
SetMethod() member of OEOverlap. At present there are four types of
algorithms implemented: Exact, Analytic, Analytic2, and
Grid. These are defined in the OEOverlapMethod namespace.
The Exact option is as detailed above: all pairs are considered and the
gaussian overlaps are calculated exactly. The two Analytic options use
an approximation to the overlap between two gaussians that is accurate to about
one part in a thousand. In addition, Analytic2 uses a proximity grid to
only calculate those atoms pairs that are within a certain threshold distance
(by default 4.5Å). This approximation adds another one part in a thousand
average error but is faster for larger molecules. The final option,
Grid, uses a grid representation of the volume of the target molecule.
It requires significant set-up time relative to the cost of a single overlap
calculation ( 0.01s compared to 0.0001s) but is significantly faster than
other methods for the evaluation of each overlap once set. Grid suffers
a few caveats and drawbacks. First is that, currently, although reference radii
are all treated as given, fit atoms are all treated as if they have one radius
(that assigned to carbon, and setable via SetCarbonRadius()). The second is
that the approximation is slightly worse, typically a few parts in a thousand,
at typical grid resolutions. Both Analytic2 and Grid improve
performance when the fit molecule is large (>20 atoms) because, if there are
atoms in the fit and
in the reference, the work per atom in the fit is
proportional to a constant not
.
By default, OEOverlap performs an Exact overlap calculation. The OEBestOverlay object (used in ROCS) uses Grid for speed.