RosettaCodeData/Task/Bioinformatics-base-count/Action-/bioinformatics-base-count.a...

68 lines
1.8 KiB
Plaintext

DEFINE PTR="CARD"
PROC PrettyPrint(PTR ARRAY data INT count,gsize,gcount)
INT index,item,i,ingroup,group,a,t,c,g
CHAR ARRAY s
CHAR ch
index=0 item=0 i=1 ingroup=0 group=0
a=0 t=0 g=0 c=0
s=data(0)
DO
WHILE i>s(0)
DO
i=1 item==+1
IF item>=count THEN EXIT FI
s=data(item)
OD
IF item>=count THEN EXIT FI
index==+1
IF group=0 AND ingroup=0 THEN
IF index<10 THEN Put(32) FI
IF index<100 THEN Put(32) FI
PrintI(index) Print(":")
FI
IF ingroup=0 THEN Put(32) FI
ch=s(i) i==+1
Put(ch)
IF ch='A THEN a==+1
ELSEIF ch='T THEN t==+1
ELSEIF ch='C THEN c==+1
ELSEIF ch='G THEN g==+1 FI
ingroup==+1
IF ingroup>=gsize THEN
ingroup=0 group==+1
IF group>=gcount THEN
group=0
FI
FI
OD
PrintF("%E%EBases: A:%I, T:%I, C:%I, G:%I%E",a,t,c,g)
PrintF("%ETotal: %I",a+t+g+c)
RETURN
PROC Main()
PTR ARRAY data(10)
BYTE LMARGIN=$52,oldLMARGIN
oldLMARGIN=LMARGIN
LMARGIN=0 ;remove left margin on the screen
Put(125) PutE() ;clear the screen
data(0)="CGTAAAAAATTACAACGTCCTTTGGCTATCTCTTAAACTCCTGCTAAATG"
data(1)="CTCGTGCTTTCCAATTATGTAAGCGTTCCGAGACGGGGTGGTCGATTCTG"
data(2)="AGGACAAAGGTCAAGATGGAGCGCATCGAACGCAATAAGGATCATTTGAT"
data(3)="GGGACGTTTCGTCGACAAAGTCTTGTTTCGAGAGTAACGGCTACCGTCTT"
data(4)="CGATTCTGCTTATAACACTATGTTCTTATGAAATGGATGTTCTGAGTTGG"
data(5)="TCAGTCCCAATGTGCGGGGTTTCTTTTAGTACGTCGGGAGTGGTATTATA"
data(6)="TTTAATTTTTCTATATAGCGATCTGTATTTAAGCAATTCATTTAGGTTAT"
data(7)="CGCCGCGATGCTCGGTTCGGACCGCCAAGCATCTGGCTCCACTGCTAGTG"
data(8)="TCCTAAATTTGAATGGCAAACACAAATAAGATTTAGCAATTCGTGTAGAC"
data(9)="GACCGGGGACTTGCATGATGGGAGCAGCTTTGTTAAACTACGAACGTAAT"
PrettyPrint(data,10,5,6)
LMARGIN=oldLMARGIN ;restore left margin on the screen
RETURN