pub mod distgeom;
mod graph;
mod options;
mod report;
pub mod etkdg;
pub use options::{ConformerAlgorithm, ConformerOptions, ConformerSpeed, ForceFieldKind};
pub use report::{ConformerReport, ConformerStageReport, StageKind};
use molrs::error::MolRsError;
use molrs::system::atomistic::Atomistic;
#[derive(Debug, Clone)]
pub struct Conformer {
opts: ConformerOptions,
}
impl Conformer {
pub fn new(opts: ConformerOptions) -> Self {
Self { opts }
}
pub fn options(&self) -> &ConformerOptions {
&self.opts
}
pub fn generate(&self, mol: &Atomistic) -> Result<(Atomistic, ConformerReport), MolRsError> {
etkdg::generate_3d_impl(mol, &self.opts)
}
}
impl Default for Conformer {
fn default() -> Self {
Self::new(ConformerOptions::default())
}
}