///|
fn main {
let rows = [
@iso.sample(0.0, 10.0),
@iso.sample(1.0, 6.0),
@iso.sample(2.0, 8.0),
@iso.sample(3.0, 2.0),
]
let model = @iso.train_l2(rows, direction=Decreasing).unwrap()
let plateau = @iso.inverse(model, 7.0).unwrap()
guard plateau.lower == 1.0 && plateau.upper == 2.0 else { panic() }
guard @iso.predict(model, 1.5).unwrap() == 7.0 else { panic() }
let restored = @iso.decode_model(@iso.encode_model(model).unwrap()).unwrap()
guard @iso.predict_many(restored, [0.0, 1.5, 3.0]).unwrap() ==
[10.0, 7.0, 2.0] else {
panic()
}
let below = @iso.threshold_domain(model, 7.0, above=false).unwrap()
guard below.lower == 1.0 && below.upper == 3.0 else { panic() }
println(
"instrument: decreasing fit, plateau inverse and portable model assertions passed",
)
}