bool OESliceEnsemble(OEChem::OEMCMolBase &mol, double rms=OESliceEnsembleDefaults::RMS,
                     double ewindow=OESliceEnsembleDefaults::EWindow,
                     unsigned maxconfs=OESliceEnsembleDefaults::MaxConfs)
bool OESliceEnsemble(OEChem::OEMCMolBase &mol, const OESliceEnsembleOptions& options)

Reduces the number of conformers in the input mol using the OMEGA deduplication algorithm. This allows for OEOmega to generate a very large ensemble with much looser deduplication parameters, and then to “slice” that ensemble of conformations by various different parameters after the fact.

The default values for the first overlad of the function are picked from the OESliceEnsembleDefaults namespace.

Conformer slicing proceeds in the following order:

  1. Slice by energy window. Decreasing this value will result in fewer conformers. For slicing by energy, the algorithm assumes that the energies for each conformer has been pre-calculated and set as the energy property of the conformer using the OEMolBase.SetEnergy method. Conformer generation using OEOmega, sets this property by default.

  2. Slice by RMS. Increasing this value will result in fewer conformers.

  3. Slice by maximum number of conformers. Decreasing this value will result in fewer conformers.


If the same energy window and RMS values are being chosen as the defaults being used in the previous OEOmega calculation, it will be faster to just delete conformers directly with OEMCMolBase.DeleteConf. This function is really intended to be run whenever the RMS has changed, or the conformer geometry itself has changed. As RMS deduplication is the expensive O(N^2) problem that requires many “tricks” to perform very fast.