rdkit-rs 0.1.0

Rust bindings to chemical toolbox RDKit
Documentation
use rdkit_ffi::rd;
use super::molecule;

pub struct MorganFingeprint {
    pub rd_mfp: cxx::UniquePtr<rd::MorganFingerprint>
}

impl MorganFingeprint {
    pub fn get_morgan_fp(mol: &molecule::Molecule, radius: u32, use_chirality: bool) -> Self {
        Self{ rd_mfp: rd::MorganFP_get_fingerprint(&mol.rd_mol, radius, use_chirality, true, true, false, false) }
    }

    pub fn non_zero_elements_size(&self) -> usize { 
        rd::MorganFP_get_nonzero_elements_size(&self.rd_mfp) 
    }
}

#[cfg(test)]
mod test_mod_fingerprint {
    use super::*;

    #[test]
    fn test_morgan_fp() {
        let mol = molecule::Molecule::new_from_smiles("CC(F)(Cl)[C@](F)(Cl)C");
        assert_eq!(MorganFingeprint::get_morgan_fp(&mol, 0, false).non_zero_elements_size(), 4);
        assert_eq!(MorganFingeprint::get_morgan_fp(&mol, 1, false).non_zero_elements_size(), 8);
        assert_eq!(MorganFingeprint::get_morgan_fp(&mol, 0, true).non_zero_elements_size(), 4);
        assert_eq!(MorganFingeprint::get_morgan_fp(&mol, 1, true).non_zero_elements_size(), 9);
    }
}