use deep_causality_algorithms::causal_discovery::surd::{MaxOrder, surd_states};
use deep_causality_tensor::CausalTensor;
fn main() {
let data_original = vec![
0.1, 0.2, 0.0, 0.2, 0.3, 0.0, 0.1, 0.1, ];
let p_raw_original = CausalTensor::new(data_original, vec![2, 2, 2]).unwrap();
let full_result_original = surd_states(&p_raw_original, MaxOrder::Max).unwrap();
println!("{}", &full_result_original);
println!("\n--- Test Case: Low Information Leak ---");
let data_low_leak = vec![
0.45, 0.05, 0.05, 0.45, 0.05, 0.45, 0.45, 0.05, ];
let p_raw_low_leak = CausalTensor::new(data_low_leak, vec![2, 2, 2]).unwrap();
let result_low_leak = surd_states(&p_raw_low_leak, MaxOrder::Max).unwrap();
println!("{}", &result_low_leak);
println!("\n--- Test Case: Medium Information Leak ---");
let data_medium_leak = vec![
0.3, 0.1, 0.2, 0.1, 0.1, 0.2, 0.1, 0.3, ];
let p_raw_medium_leak = CausalTensor::new(data_medium_leak, vec![2, 2, 2]).unwrap();
let result_medium_leak = surd_states(&p_raw_medium_leak, MaxOrder::Max).unwrap();
println!("{}", &result_medium_leak);
println!("\n--- Test Case: High Information Leak ---");
let data_high_leak = vec![
0.12, 0.13, 0.13, 0.12, 0.13, 0.12, 0.12, 0.13, ];
let p_raw_high_leak = CausalTensor::new(data_high_leak, vec![2, 2, 2]).unwrap();
let result_high_leak = surd_states(&p_raw_high_leak, MaxOrder::Max).unwrap();
println!("{}", &result_high_leak);
}