///|
/// Demo for xms module: XMS weighted site motif + microRNA motif formats.
fn main {
println("=== xms Demo: XMS & microRNA Motif Formats ===")
println("")
// Example 1: Parse XMS format
println("--- Step 1: Parse XMS Format ---")
let xms_text = ">TF1\nACGTACGT\nTGCAACGT\nACGTACGT 2.0\n>TF2\nAAAAACCC\nGGGGGTTT\n"
let motifs = @src.xms_parse(xms_text)
println("Parsed motifs: " + motifs.length().to_string())
for m in motifs {
println(" " + m.name + ": " + m.sites.length().to_string() + " sites")
}
println("")
// Example 2: Count matrix
println("--- Step 2: Count Matrix ---")
let counts = @src.xms_counts(motifs[0])
println(
"Count matrix: " +
counts.length().to_string() +
" x " +
counts[0].length().to_string(),
)
println(" A: " + repr(counts[0]))
println(" C: " + repr(counts[1]))
println("")
// Example 3: PFM (frequency matrix)
println("--- Step 3: PFM (Frequency Matrix) ---")
let pfm = @src.xms_pfm(counts)
println("PFM: " + pfm.length().to_string() + " positions")
for i in 0.. " + rc)
println("")
// Example 9: microRNA PFM from sequences
println("--- Step 9: microRNA PFM ---")
let mir_seqs = ["UGA", "UGA", "UGC"]
let mir_pfm = @src.mirs_pfm(mir_seqs)
println("microRNA PFM: " + mir_pfm.length().to_string() + " positions")
for i in 0..