///|
/// Demo for orfik module: ORFik-style ORF detection.
fn main {
println("=== orfik Demo: ORFik-style ORF Detection ===")
println("")
// Example 1: Find all ORFs in six frames
println("--- Step 1: Find All ORFs ---")
let seq = "ATGAAATAAATGCCCTAGATGGGGGTGA"
let orfs = @src.orff_find_all_orfs(seq, min_length=9)
println("Sequence: " + seq)
println("ORFs found: " + orfs.length().to_string())
for orf in orfs {
println(
" start=" +
orf.start.to_string() +
" stop=" +
orf.stop.to_string() +
" frame=" +
@src.orff_frame_label(orf.frame) +
" protein=" +
orf.protein +
" kozak=" +
orf.kozak_score.to_string(),
)
}
println("")
// Example 2: Kozak score
println("--- Step 2: Kozak Score ---")
let kozak_seq = "GCCGCCAUGG"
let score = @src.orff_kozak_score(kozak_seq, 6)
println("Sequence: " + kozak_seq)
println("Kozak score at ATG (pos 6): " + score.to_string())
println("")
// Example 3: Classify ORFs relative to CDS
println("--- Step 3: Classify ORFs ---")
let classified = @src.orff_classify_all(orfs, 0, 9)
for orf in classified {
println(
" start=" +
orf.start.to_string() +
" stop=" +
orf.stop.to_string() +
" class=" +
@src.orff_class_label(orf.orf_class),
)
}
println("")
// Example 4: Find uORFs
println("--- Step 4: Find uORFs ---")
let uorfs = @src.orff_find_uorfs(seq, 9, min_length=9)
println("uORFs found: " + uorfs.length().to_string())
for orf in uorfs {
println(
" start=" +
orf.start.to_string() +
" stop=" +
orf.stop.to_string() +
" protein=" +
orf.protein,
)
}
println("")
// Example 5: Count by frame and class
println("--- Step 5: Summary Statistics ---")
let by_frame = @src.orff_count_by_frame(orfs)
println(
"By frame: F0=" +
by_frame.get("F0").unwrap_or(0).to_string() +
" F1=" +
by_frame.get("F1").unwrap_or(0).to_string() +
" F2=" +
by_frame.get("F2").unwrap_or(0).to_string(),
)
let by_class = @src.orff_count_by_class(classified)
println(
"By class: CDS=" +
by_class.get("CDS").unwrap_or(0).to_string() +
" uORF=" +
by_class.get("uORF").unwrap_or(0).to_string(),
)
println("")
// Example 6: Export ORFs
println("--- Step 6: Export ORFs ---")
let exported = @src.orff_export_orfs(orfs)
println(exported)
}