///|
/// Alignment format parsing example inspired by Biopython Bio.AlignIO.
///
/// Run: moon run examples/align_io_demo/main.mbt
fn main {
println("=== Bio.AlignIO Demo ===")
let clustalw_content = "CLUSTAL W (1.83) multiple sequence alignment\n\nSeq1 ACGTACGT\nSeq2 ACATACAT\nSeq3 AGGTAGGT\n"
println("\n1. Parse ClustalW alignment:")
let align = @bio.parse_clustalw(clustalw_content)
println(" Number of sequences: \{@bio.num_sequences(align)}")
println(" Alignment length: \{@bio.alignment_length(align)}")
println("\n2. Get sequence by name:")
match @bio.get_sequence(align, "Seq1") {
Some(seq) => println(" Seq1: \{seq}")
None => println(" Seq1 not found")
}
println("\n3. Consensus sequence:")
let consensus = @bio.consensus_sequence(align)
println(" Consensus: \{consensus}")
println("\n4. Column consensus (position 2):")
let col_cons = @bio.column_consensus(align, 2)
println(" Position 2: \{col_cons}")
println("\n5. Write ClustalW format:")
let clustalw_out = @bio.write_clustalw(align)
println(clustalw_out)
let fasta_content = ">Seq1\nACGTACGT\n>Seq2\nACATACAT\n"
println("\n6. Parse FASTA alignment:")
let fasta_align = @bio.parse_fasta_alignment(fasta_content)
println(" Number of sequences: \{@bio.num_sequences(fasta_align)}")
println("\n7. Write FASTA format:")
let fasta_out = @bio.write_fasta_alignment(fasta_align)
println(fasta_out)
}