extern crate blas_src; use approx::assert_abs_diff_eq; use kickscore as ks; #[test] fn kickscore_basic() { let mut model = ks::model::Binary::probit(); let k_spike = ks::kernel::Constant::new(0.5); let k_tom = ks::kernel::Exponential::new(1.0, 1.0); let k_jerry = ( ks::kernel::Constant::new(1.0), ks::kernel::Matern52::new(0.5, 1.0), ); model.add_item("Spike", k_spike); model.add_item("Tom", k_tom); model.add_item("Jerry", k_jerry); model.observe(&["Jerry"], &["Tom"], 0.0); model.observe(&["Jerry"], &["Tom"], 0.9); model.observe(&["Tom"], &["Spike"], 1.7); model.observe(&["Tom"], &["Jerry"], 2.1); model.observe(&["Jerry"], &["Tom"], 3.0); model.observe(&["Jerry"], &["Tom", "Spike"], 3.5); model.fit(); let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], 4.0); assert_abs_diff_eq!(p_win, 0.7299975928462964, epsilon = f64::EPSILON); let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], 2.0); assert_abs_diff_eq!(p_win, 0.4455095363120037, epsilon = f64::EPSILON); let (p_win, _p_los) = model.probabilities(&["Jerry"], &["Tom"], -1.0); assert_abs_diff_eq!(p_win, 0.9037560799725326, epsilon = f64::EPSILON); }