use infomeasure::estimators::entropy::{Entropy, GlobalValue, LocalValues};
use ndarray::{Array1, array};
use rand::prelude::*;
use rand_distr::{Distribution, Normal};
fn main() {
let data = array![
[1.0, 1.5], [2.0, 3.0], [4.0, 5.0] ];
let bandwidth = 1.0;
let _kernel_entropy = Entropy::nd_kernel::<2>(data, bandwidth);
let mut rng = thread_rng();
let normal = Normal::new(0.0, 1.0).unwrap();
let data_1d = Array1::from_iter((0..100).map(|_| normal.sample(&mut rng)));
let bandwidth_1d = 0.5;
let kernel_entropy_1d = Entropy::new_kernel(data_1d, bandwidth_1d);
let local_values_1d = kernel_entropy_1d.local_values();
let global_value_1d = kernel_entropy_1d.global_value();
println!("1D Local Entropy Values: {local_values_1d:?}");
println!("1D Global Entropy Value: {global_value_1d}");
}