///|
/// scikit-bio distance-based statistical tests demo.
///
/// Runs ANOSIM, PERMDISP and PERMANOVA on a small Euclidean distance matrix
/// with two groups (a tight cluster vs a spread cluster).
///|
fn main {
println("=== BioEnv (best environmental-variable subset) ===")
let bdm = [
[0.0, 0.5, 0.25, 1.0, 0.8, 0.6],
[0.5, 0.0, 0.4, 0.9, 0.7, 0.55],
[0.25, 0.4, 0.0, 1.1, 0.9, 0.5],
[1.0, 0.9, 1.1, 0.0, 0.3, 0.75],
[0.8, 0.7, 0.9, 0.3, 0.0, 0.65],
[0.6, 0.55, 0.5, 0.75, 0.65, 0.0],
]
let bdata = [
[7.0, 6.0, 400.0],
[8.0, 6.5, 380.0],
[6.5, 6.2, 420.0],
[10.0, 7.5, 100.0],
[11.0, 7.8, 80.0],
[9.0, 7.0, 250.0],
]
let be = @src.skbio_bioenv(bdm, bdata)
println("best subset correlations: \{Repr(be.correlations)}")
let dm = [
[0.0, 0.223607, 0.111803, 2.828427, 3.162278, 3.590265],
[0.223607, 0.0, 0.304138, 2.617250, 3.008322, 3.373426],
[0.111803, 0.304138, 0.0, 2.865746, 3.148412, 3.677295],
[2.828427, 2.617250, 2.865746, 0.0, 1.414214, 1.920937],
[3.162278, 3.008322, 3.148412, 1.414214, 0.0, 3.330165],
[3.590265, 3.373426, 3.677295, 1.920937, 3.330165, 0.0],
]
let g = [0, 0, 0, 1, 1, 1]
let a = @src.skbio_anosim(dm, g, 999, 42)
println("ANOSIM R = \{a.statistic}")
println(" p = \{a.p_value}")
let pd = @src.skbio_permdisp(dm, g, 999, 42)
println("PERMDISP F = \{pd.statistic}")
println(" p = \{pd.p_value}")
let p = @src.skbio_permanova(dm, g, 999, 42)
println("PERMANOVA F = \{p.statistic}")
println(" p = \{p.p_value}")
println(" n = \{p.n}, groups = \{p.num_groups}")
}