chiral_common/data/
mod.rs1mod 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