///|
/// POA 图多序列比对演示: 多样本共识与 MSA.
fn main {
  println("=== 场景 1: 测序误差下的共识 ===")
  let g1 = @src.PoaGraph::new("ACGTACGTAC")
  ignore(@src.poa_add(g1, "ACGTACGTAC"))
  ignore(@src.poa_add(g1, "ACCTACGTAC"))
  ignore(@src.poa_add(g1, "ACGTACGTTC"))
  println("  节点数: " + @src.poa_node_count(g1).to_string())
  println("  共识:   " + @src.poa_consensus(g1))
  println("  MSA:")
  for row in @src.poa_msa(g1) {
    println("    " + row)
  }
  println("=== 场景 2: 含 indel 的簇 ===")
  let g2 = @src.PoaGraph::new("ATGGCCTAGC")
  ignore(@src.poa_add(g2, "ATGGCCTTAGC"))
  ignore(@src.poa_add(g2, "ATGGCCTAGC"))
  println("  节点数: " + @src.poa_node_count(g2).to_string())
  println("  共识:   " + @src.poa_consensus(g2))
  println("  MSA:")
  for row in @src.poa_msa(g2) {
    println("    " + row)
  }
  println("=== 场景 3: 自定义打分 ===")
  let g3 = @src.PoaGraph::new("AAAA", match_score=5, mismatch_score=-4, gap=-3)
  let s = @src.poa_add(g3, "AAAT", match_score=5, mismatch_score=-4, gap=-3)
  println("  得分: " + s.to_string() + " (3 match + 1 mismatch)")
}