///|
/// edgeR Differential Expression Analysis Demo.
fn main {
println("=== edgeR Differential Expression Analysis Demo ===\n")
let counts = [
[10, 20, 30, 40],
[50, 60, 70, 80],
[90, 100, 110, 120],
[130, 140, 150, 160],
]
let group = ["A", "A", "B", "B"]
let genes = ["GeneA", "GeneB", "GeneC", "GeneD"]
println("1. Creating DGEList...")
let dge = @src.dge_list(counts, group, genes)
println(" Genes: \{genes.join(", ")}")
println(" Groups: \{group.join(", ")}")
println("\n2. Calculating normalization factors...")
let dge_norm = @src.calc_norm_factors(dge)
let norm_str = dge_norm.norm_factors.map(fn(x) { x.to_string() }).join(", ")
println(" Norm factors: \{norm_str}")
println("\n3. Estimating dispersion...")
let disp = @src.estimate_dispersion(dge_norm)
println(" Dispersion: \{disp}")
println("\n4. Performing exact test (A vs B)...")
let results = @src.exact_test(dge_norm, "A", "B")
println(" Results for \{results.genes.length()} genes")
println("\n5. Getting top 2 genes...")
let top = @src.top_tags(results, 2)
for i = 0; i < top.genes.length(); i = i + 1 {
println(" \{top.genes[i]}: logFC=\{top.log_fc[i]}, p=\{top.p_value[i]}")
}
println("\n=== edgeR Demo Complete ===")
}