///|
fn main {
let rows = @iso.read_samples(
"x\ty\tweight\n0\t0\t1\n1\t4\t1\n2\t2\t1\n3\t6\t1\n",
).unwrap()
let robust = @iso.train_l1(rows).unwrap()
let table = @iso.write_predictions(rows, robust).unwrap()
guard table.length() > 40 else { panic() }
guard @iso.read_samples(@iso.write_samples(rows).unwrap()).unwrap().length() ==
4 else {
panic()
}
let band = @iso.train_band(rows, 0.25, 0.75).unwrap()
let ranges = @iso.predict_band(band, [0.0, 1.5, 3.0]).unwrap()
for r in ranges {
guard r.lower <= r.upper else { panic() }
}
let fitted = @iso.fit_l1(
rows.map(fn(s) { s.y }),
rows.map(fn(s) { s.weight }),
).unwrap()
let explanations = @iso.explain_fit(
rows.map(fn(s) { s.y }),
rows.map(fn(s) { s.weight }),
fitted,
).unwrap()
guard @iso.explanation_table(explanations).length() > 0 else { panic() }
let cv = @iso.cross_validate(rows, [0, 1, 0, 1], 2, loss=Absolute).unwrap()
guard cv.predictions.length() == 4 else { panic() }
println(
"analysis: TSV, L1, descriptive bands, block explanation and cross-validation passed",
)
}