///|
/// topGO Demo - Demonstrates topology-based GO enrichment analysis.
fn main {
  println("=== topGO Demo ===")

  let graph = @bio.create_example_topgo_graph()
  println("GO graph root: \{graph.root}")

  let genes_of_interest = ["gene1", "gene2", "gene3"]
  let all_genes = [
    "gene1", "gene2", "gene3", "gene4", "gene5", "gene6", "gene7", "gene8", "gene9",
    "gene10",
  ]

  println("")
  println("Running elim algorithm...")
  let elim_results = @bio.topgo_elim_algorithm(
    graph, genes_of_interest, all_genes, "BP",
  )
  println("Elim results: \{elim_results.length()} GO terms")

  println("")
  println("Running weight01 algorithm...")
  let weight_results = @bio.topgo_weight01_algorithm(
    graph, genes_of_interest, all_genes, "BP",
  )
  println("Weight01 results: \{weight_results.length()} GO terms")

  println("")
  println("Fisher exact test example:")
  let p = @bio.topgo_fisher_exact(3, 10, 5, 100)
  println("  p-value: \{p}")
}