RosettaCodeData/Task/Bioinformatics-base-count/Picat/bioinformatics-base-count.picat

32 lines
1,012 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
main =>
dna(DNA, ChunkSize),
Count = 0,
println("Sequence:"),
Map = new_map(['A'=0,'C'=0,'G'=0,'T'=0]),
foreach(Chunk in DNA.chunks_of(ChunkSize))
printf("%4d: %s\n", Count, Chunk),
Count := Count + Chunk.len,
foreach(C in Chunk)
Map.put(C,Map.get(C)+1)
end
end,
println("\nBase count:"),
foreach(C in "ACGT")
printf("%5c: %3d\n", C, Map.get(C))
end,
printf("Total: %d\n", Count),
nl.
dna(DNA,ChunkSize) =>
DNA = "CGTAAAAAATTACAACGTCCTTTGGCTATCTCTTAAACTCCTGCTAAATG
CTCGTGCTTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTG
AGGACAAAGGTCAAGATGGAGCGCATCGAACGCAATAAGGATCATTTGAT
GGGACGTTTCGTCGACAAAGTCTTGTTTCGAGAGTAACGGCTACCGTCTT
CGATTCTGCTTATAACACTATGTTCTTATGAAATGGATGTTCTGAGTTGG
TCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTATA
TTTAATTTTTCTATATAGCGATCTGTATTTAAGCAATTCATTTAGGTTAT
CGCCGCGATGCTCGGTTCGGACCGCCAAGCATCTGGCTCCACTGCTAGTG
TCCTAAATTTGAATGGCAAACACAAATAAGATTTAGCAATTCGTGTAGAC
GACCGGGGACTTGCATGATGGGAGCAGCTTTGTTAAACTACGAACGTAAT".delete_all('\n'),
ChunkSize = 50.