///|
/// Example: mol_wt_demo
/// Demonstrates the Bio.SeqUtils.MolWt module (molecular weight calculation).
fn main {
  println("=== Molecular Weight Calculator Demo ===")
  println("")

  // Example 1: DNA molecular weight
  println("=== DNA Molecular Weight ===")
  let dna_seq = "ACGTACGTACGT"
  let dna_len = dna_seq.length()
  let dna_mw = @bio.mol_weight_dna(dna_seq)
  println("Sequence: \{dna_seq}")
  println("Length: \{dna_len} bp")
  println("Molecular Weight: \{dna_mw} Da")
  println("")

  // Example 2: RNA molecular weight
  println("=== RNA Molecular Weight ===")
  let rna_seq = "ACGUACGUACGU"
  let rna_mw = @bio.mol_weight_rna(rna_seq)
  println("Sequence: \{rna_seq}")
  println("Molecular Weight: \{rna_mw} Da")
  println("")

  // Example 3: Protein molecular weight
  println("=== Protein Molecular Weight ===")
  let protein_seq = "MVLSPADKTNVKAAWGCK"
  let protein_len = protein_seq.length()
  let protein_mw = @bio.mol_weight_protein(protein_seq)
  println("Sequence: \{protein_seq}")
  println("Length: \{protein_len} aa")
  println("Molecular Weight: \{protein_mw} Da")
  println("")

  // Example 4: Extinction coefficient at 280nm
  println("=== Extinction Coefficient (280nm) ===")
  let ext = @bio.extinction_coefficient_280(protein_seq)
  println("Protein: \{protein_seq}")
  println("Extinction Coefficient: \{ext} M^-1 cm^-1")
  println("")

  // Example 5: Absorbance coefficient (1 mg/mL)
  println("=== Absorbance Coefficient ===")
  let abs = @bio.absorbance_280(protein_seq)
  println("Absorbance (1 mg/mL): \{abs}")
  println("")

  // Example 6: Isoelectric point
  println("=== Isoelectric Point ===")
  let pI = @bio.mol_wt_isoelectric_point(protein_seq)
  println("Protein: \{protein_seq}")
  println("pI: \{pI}")

  // Basic protein
  let basic = "KKKKKK"
  let pI_basic = @bio.mol_wt_isoelectric_point(basic)
  println("Basic (\{basic}): pI = \{pI_basic}")

  // Acidic protein
  let acidic = "DEDEDE"
  let pI_acidic = @bio.mol_wt_isoelectric_point(acidic)
  println("Acidic (\{acidic}): pI = \{pI_acidic}")
  println("")

  // Example 7: Molecular weight difference
  println("=== Molecular Weight Difference ===")
  let diff = @bio.mol_weight_diff("ACGT", "TGCA")
  println("Diff (ACGT vs TGCA): \{diff} Da")
  println("")

  // Example 8: Summary
  println("=== Full Summary ===")
  println(@bio.mol_weight_summary(protein_seq, is_protein=true))
  println("")
  println(@bio.mol_weight_summary(dna_seq))
}