use deep_causality_discovery::*;
use std::{fs::File, io::Write};
fn main() {
let file_path = get_test_csv_file_path();
let target_index = 3;
let result_effect = CdlBuilder::build()
.bind(|cdl| cdl.load_data(&file_path, target_index, vec![]))
.bind(|cdl| cdl.clean_data(OptionNoneDataCleaner))
.bind(|cdl| {
cdl.feature_select(|tensor| {
mrmr_features_selector(tensor, 3, target_index)
})
})
.bind(|cdl| {
cdl.causal_discovery(|tensor| {
surd_states_cdl(tensor, MaxOrder::Max).map_err(Into::into)
})
})
.bind(|cdl| cdl.analyze())
.bind(|cdl| cdl.finalize());
result_effect.print_results();
std::fs::remove_file(file_path).unwrap();
}
fn get_test_csv_file_path() -> String {
let csv_data =
"s1,s2,s3,target\n1.0,2.0,3.0,1.5\n2.0,4.1,6.0,3.6\n3.0,6.2,9.0,5.4\n4.0,8.1,12.0,7.6";
let file_path = "./test_data.csv";
let mut file = File::create(file_path).unwrap();
file.write_all(csv_data.as_bytes()).unwrap();
file_path.to_string()
}