///|
/// Population genetics demo.
///
/// Run: moon run examples/popgen_demo/main.mbt
fn main {
println("=== Population Genetics Demo ===\n")
let population = ["AA", "Aa", "Aa", "aa", "AA", "Aa", "aa"]
println("1. Population data:")
println(" Genotypes: \{Repr(population)}")
println("\n2. Allele frequencies:")
let allele_freqs = @bio.allele_frequencies(population)
println(" Number of alleles: \{allele_freqs.length()}")
println("\n3. Genotype frequencies:")
let geno_freqs = @bio.genotype_frequencies(population)
println(" Number of genotypes: \{geno_freqs.length()}")
println("\n4. Hardy-Weinberg test:")
let chi_sq = @bio.hardy_weinberg_test(population)
println(" Chi-squared: \{chi_sq}")
println("\n5. Heterozygosity:")
let h_exp = @bio.heterozygosity(population)
let h_obs = @bio.observed_heterozygosity(population)
println(" Expected heterozygosity: \{h_exp}")
println(" Observed heterozygosity: \{h_obs}")
println("\n6. Inbreeding coefficient:")
let f = @bio.inbreeding_coefficient(population)
println(" F: \{f}")
println("\n7. Allele richness:")
let richness = @bio.allele_richness(population)
println(" Richness: \{richness}")
println("\n8. FST between populations:")
let pop1 = ["AA", "Aa", "aa", "AA"]
let pop2 = ["AA", "AA", "Aa", "Aa"]
let fst_val = @bio.fst(pop1, pop2)
println(" FST: \{fst_val}")
println("\n9. Watterson's theta:")
let sequences = ["ATCG", "ATCA", "ATGG", "ATGT"]
let theta = @bio.watterson_theta(sequences)
println(" Theta: \{theta}")
println("\n10. Diversity indices:")
let counts = [100, 100, 100, 100, 50, 50, 30, 20, 10, 10, 10]
println(" Species counts: \{Repr(counts)}")
println(" Shannon index: \{@bio.shannon_index(counts)}")
println(" Simpson index: \{@bio.simpson_index(counts)}")
println(" Simpson reciprocal: \{@bio.simpson_reciprocal(counts)}")
println(" Evenness: \{@bio.evenness(counts)}")
println(" Chao1 estimate: \{@bio.chao1(counts)}")
println(" ACE estimate: \{@bio.ace(counts)}")
println(" Fisher's alpha: \{@bio.fishers_alpha(counts)}")
println(" Margalef index: \{@bio.margalef_index(counts)}")
println(" Menhinick index: \{@bio.menhinick_index(counts)}")
println("\n=== Demo Complete ===")
}