///|
/// EMBOSS tools example.
///
/// Run: moon run examples/emboss_demo/main.mbt
fn main {
  println("=== EMBOSS Tools Demo ===")
  println("")

  let dna_seq = "ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG"
  let prot_seq = "MKKLLLISVLLFLSSAYSR"

  println("=== Sequence Analysis ===")
  println("DNA: \{dna_seq}")
  println("Protein: \{prot_seq}")
  println("")

  println("=== GC/AT Skew ===")
  let gc_skew_val = @bio.emboss_gc_skew(dna_seq)
  println("GC Skew: \{gc_skew_val}")
  let at_skew_val = @bio.emboss_at_skew(dna_seq)
  println("AT Skew: \{at_skew_val}")
  println("")

  println("=== Molecular Weight ===")
  let mw = @bio.dna_molecular_weight(dna_seq)
  println("DNA Molecular Weight: \{mw}")
  println("")

  println("=== Melting Temperature ===")
  let tm_s = @bio.tm_simple("ATGC")
  println("Tm (simple): \{tm_s}")
  println("")

  println("=== Reverse Complement ===")
  let rc = @bio.emboss_reverse_complement("ATGC")
  println("ATGC -> \{rc}")
  println("")

  println("=== Translation ===")
  let protein = @bio.translate("ATG")
  println("ATG -> \{protein}")
  println("")

  println("=== ORF Finding ===")
  let orfs = @bio.find_orfs("ATGAAATAA", min_length=3)
  println("ORFs found: \{orfs.length()}")
  println("")

  println("=== Distance Calculation ===")
  let hd = @bio.hamming_distance("ATGC", "ATGG")
  println("Hamming distance (ATGC vs ATGG): \{hd}")
  let ld = @bio.levenshtein_distance("ATGC", "AGC")
  println("Levenshtein distance (ATGC vs AGC): \{ld}")
  println("")

  println("=== k-mer Counting ===")
  let kmers = @bio.emboss_count_kmers("ATGCAT", 2)
  println("2-mers found: \{kmers.length()}")
  println("")

  println("=== Protein Analysis ===")
  let pi = @bio.isoelectric_point("K")
  println("Isoelectric point (K): \{pi}")
  let ai = @bio.aliphatic_index(prot_seq)
  println("Aliphatic index: \{ai}")
  let gravy = @bio.gravy_score(prot_seq)
  println("GRAVY score: \{gravy}")
  let ii = @bio.instability_index(prot_seq)
  println("Instability index: \{ii}")
  println("")

  println("=== Amino Acid Composition ===")
  let comp = @bio.emboss_amino_acid_composition(prot_seq)
  println("Composition entries: \{comp.length()}")
  println("")

  println("=== Done ===")
}