RosettaCodeData/Task/Bioinformatics-base-count/Wren/bioinformatics-base-count.wren
2023-12-16 21:33:55 -08:00

38 lines
1.3 KiB
Text

import "./fmt" for Fmt
import "./sort" for Sort
import "./iterate" for Stepped
var dna = "CGTAAAAAATTACAACGTCCTTTGGCTATCTCTTAAACTCCTGCTAAATG" +
"CTCGTGCTTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTG" +
"AGGACAAAGGTCAAGATGGAGCGCATCGAACGCAATAAGGATCATTTGAT" +
"GGGACGTTTCGTCGACAAAGTCTTGTTTCGAGAGTAACGGCTACCGTCTT" +
"CGATTCTGCTTATAACACTATGTTCTTATGAAATGGATGTTCTGAGTTGG" +
"TCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTATA" +
"TTTAATTTTTCTATATAGCGATCTGTATTTAAGCAATTCATTTAGGTTAT" +
"CGCCGCGATGCTCGGTTCGGACCGCCAAGCATCTGGCTCCACTGCTAGTG" +
"TCCTAAATTTGAATGGCAAACACAAATAAGATTTAGCAATTCGTGTAGAC" +
"GACCGGGGACTTGCATGATGGGAGCAGCTTTGTTAAACTACGAACGTAAT"
System.print("SEQUENCE:")
var le = dna.count
for (i in Stepped.new(0...le, 50)) {
var k = i + 50
if (k > le) k = le
System.print("%(Fmt.d(5, i)): %(dna[i...k])")
}
var baseMap = {} // allows for 'any' base
for (i in 0...le) {
var d = dna[i]
var v = baseMap[d]
baseMap[d] = !v ? 1 : v + 1
}
var bases = baseMap.keys.toList
Sort.quick(bases)
System.print("\nBASE COUNT:")
for (base in bases) {
System.print(" %(base): %(Fmt.d(3, baseMap[base]))")
}
System.print(" ------")
System.print(" Σ: %(le)")
System.print(" ======")