// Demo for Bio.FreqAnalysis module
///|
fn main {
println("=== Bio.FreqAnalysis Module Demo ===\n")
// Nucleotide frequency
let seq = "ATGCGTACGTTAGCTA"
println("Sequence: \{seq}")
let nuc_freq = @bio.fa_nucleotide_frequency(seq)
println("\nNucleotide frequencies:")
println(" A: \{nuc_freq.fa_get_frequency("A")}")
println(" T: \{nuc_freq.fa_get_frequency("T")}")
println(" G: \{nuc_freq.fa_get_frequency("G")}")
println(" C: \{nuc_freq.fa_get_frequency("C")}")
println(" Total count: \{nuc_freq.fa_get_total_count()}")
// GC content
let gc = @bio.fa_gc_content(seq)
println("\nGC content: \{gc}")
// AT content
let at = @bio.fa_at_content(seq)
println("AT content: \{at}")
// K-mer counting
println("\n=== K-mer Analysis ===")
let di_freq = @bio.fa_dinucleotide_frequency(seq)
let patterns = di_freq.fa_get_patterns()
println("Dinucleotide frequencies:")
let mut i = 0
while i < patterns.length() {
let p = patterns[i]
println(" \{p}: \{di_freq.fa_get_frequency(p)}")
i = i + 1
}
// Codon usage
println("\n=== Codon Usage ===")
let coding_seq = "ATGAAACCCGGGTTTAAA"
println("Coding sequence: \{coding_seq}")
let codon_freq = @bio.fa_codon_usage(coding_seq)
let codon_patterns = codon_freq.fa_get_patterns()
let mut j = 0
while j < codon_patterns.length() {
let c = codon_patterns[j]
let count = codon_freq.fa_get_count(c)
let freq = codon_freq.fa_get_frequency(c)
println(" \{c}: count=\{count}, freq=\{freq}")
j = j + 1
}
// Sequence complexity
println("\n=== Sequence Complexity ===")
let entropy = @bio.fa_sequence_complexity(seq)
println("Shannon entropy: \{entropy}")
// Find motifs
println("\n=== Motif Finding ===")
let positions = @bio.fa_find_motif(seq, "TAC")
if positions.length() > 0 {
println("Found 'TAC' at positions:")
let mut k = 0
while k < positions.length() {
println(" \{positions[k]}")
k = k + 1
}
} else {
println("'TAC' not found in sequence")
}
println("\nDemo completed successfully!")
}