chiral_common/data/
mod.rs

1mod doc;
2mod source;
3
4pub use doc::smiles::DocSMILES;
5pub use doc::smiles::DocStoreSMILES;
6pub use source::chembl::SourceChembl;
7
8pub mod types {
9    pub type EntryID = String;
10}
11
12pub trait Empty {
13    fn empty() -> Self;
14}
15
16pub trait Dummy {
17    fn dummy() -> Self;
18} 
19
20pub trait Info {
21    fn info(&self) -> String;
22}
23
24pub fn load_from_path<T: Empty + Dummy + From<SourceChembl>>(kind: &crate::kinds::Dataset, data_dir: &std::path::PathBuf) -> T {
25    match kind {
26        crate::kinds::Dataset::Empty => T::empty(), 
27        crate::kinds::Dataset::Dummy => T::dummy(),
28        crate::kinds::Dataset::TestChembl | crate::kinds::Dataset::Chembl30 => {
29            let mut sc = SourceChembl::new();
30            sc.set_path(data_dir.join(kind.filename()).as_os_str());
31            sc.load_all();
32            T::from(sc)
33        },
34        crate::kinds::Dataset::PubChem => {
35            unimplemented!()
36        }
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use super::*;
43
44    #[test]
45    fn test_load() {
46        let data_dir = std::path::PathBuf::from("../../../chiral-db-example-data/ChEMBL");
47        let doc_1 = load_from_path::<doc::smiles::DocSMILES>(&crate::kinds::Dataset::TestChembl, &data_dir);
48        assert_eq!(doc_1.get_ids().len(), 10000);
49        assert_eq!(doc_1.get_smiles_vec().len(), 10000);
50    }
51}
52