#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ConformerAlgorithm {
FragmentRules,
DistanceGeometry,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ForceFieldKind {
MMFF94,
Uff,
Auto,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ConformerSpeed {
Fast,
Medium,
Better,
}
#[derive(Debug, Clone)]
pub struct ConformerOptions {
pub algorithm: ConformerAlgorithm,
pub forcefield: ForceFieldKind,
pub speed: ConformerSpeed,
pub add_hydrogens: bool,
pub max_steps: usize,
pub rng_seed: Option<u64>,
}
impl Default for ConformerOptions {
fn default() -> Self {
Self {
algorithm: ConformerAlgorithm::FragmentRules,
forcefield: ForceFieldKind::Auto,
speed: ConformerSpeed::Medium,
add_hydrogens: true,
max_steps: 0,
rng_seed: None,
}
}
}
impl ConformerOptions {
pub(crate) fn max_iterations_internal(&self) -> usize {
self.max_steps
}
pub(crate) fn use_random_coords_fallback_internal(&self) -> bool {
true
}
pub(crate) fn mmff_cleanup_internal(&self) -> bool {
true
}
}