Bioinformatics/Sequence mutation: Difference between revisions
Content added Content deleted
(→{{header|Lua}}: added Lua solution) |
|||
Line 3,438: | Line 3,438: | ||
====== |
====== |
||
</pre> |
</pre> |
||
=={{header|Yabasic}}== |
|||
{{trans|Phix}} |
|||
<lang Yabasic>// Rosetta Code problem: http://rosettacode.org/wiki/Sequence_mutation |
|||
// by Galileo, 07/2022 |
|||
r = int(ran(300)) |
|||
for i = 1 to 200 + r : dna$ = dna$ + mid$("ACGT", int(ran(4))+1, 1) : next |
|||
sub show() |
|||
local acgt(4), i, j, x, total |
|||
for i = 1 to len(dna$) |
|||
x = instr("ACGT", mid$(dna$, i, 1)) |
|||
acgt(x) = acgt(x) + 1 |
|||
next |
|||
for i = 1 to 4 : total = total + acgt(i) : next |
|||
for i = 1 to len(dna$) step 50 |
|||
print i, ":\t"; |
|||
for j = 0 to 49 step 10 |
|||
print mid$(dna$, i+j, 10), " "; |
|||
next |
|||
print |
|||
next |
|||
print "\nBase counts: A: ", acgt(1), ", C: ", acgt(2), ", G: ", acgt(3), ", T: ", acgt(4), ", total: ", total |
|||
end sub |
|||
sub mutate() |
|||
local i, p, sdi$, rep$, was$ |
|||
print |
|||
for i = 1 to 10 |
|||
p = int(ran(len(dna$))) + 1 |
|||
sdi$ = mid$("SDI", int(ran(3)) + 1, 1) |
|||
rep$ = mid$("ACGT", int(ran(4)) + 1, 1) |
|||
was$ = mid$(dna$, p, 1) |
|||
switch sdi$ |
|||
case "S": mid$(dna$, p, 1) = rep$ |
|||
print "swapped ", was$, " at ", p, " for ", rep$ : break |
|||
case "D": dna$ = left$(dna$, p - 1) + right$(dna$, len(dna$) - p) |
|||
print "deleted ", was$, " at ", p : break |
|||
case "I": dna$ = left$(dna$, p - 1) + rep$ + right$(dna$, (len(dna$) - p + 1)) |
|||
print "inserted ", rep$, " at ", p, ", before ", was$ : break |
|||
end switch |
|||
next |
|||
print |
|||
end sub |
|||
show() |
|||
mutate() |
|||
show()</lang> |
|||
{{out}} |
|||
<pre>1: TCCATCGTGG GATCGCTCTA GCGGTATGCT ATCATTCCTA TAGCAATTCT |
|||
51: CAGGGGGCCC GACGGCGCCG ATCACATGTG ATCCTTGTGT GATCGCTTCA |
|||
101: TGTCATGGCT TTCTAGACCT TGGATAAGCA TGTACGGTTG GACCAGTCGT |
|||
151: GCGTCGGTAA ACAACGCATC TGTGTTATAT CCGTCGAATA ACCCATATGT |
|||
201: CTCCAGTCTA ATCCCCTAAG CAACTGCTCA AGGTAAAATG CAAATACAGG |
|||
251: TGAGGAGTCC TCGAAGGGGT CGCACCGCAA TATGGGCGTC CCTTATTGGC |
|||
301: CCTCATCAGT AT |
|||
Base counts: A: 72, C: 81, G: 76, T: 83, total: 312 |
|||
inserted G at 89, before G |
|||
swapped T at 174 for C |
|||
deleted A at 31 |
|||
deleted G at 89 |
|||
deleted C at 275 |
|||
inserted A at 278, before A |
|||
inserted C at 200, before C |
|||
inserted C at 232, before G |
|||
deleted G at 10 |
|||
swapped A at 124 for C |
|||
1: TCCATCGTGG ATCGCTCTAG CGGTATGCTT CATTCCTATA GCAATTCTCA |
|||
51: GGGGGCCCGA CGGCGCCGAT CACATGTGAT CCTTGTGTGA TCGCTTCATG |
|||
101: TCATGGCTTT CTAGACCTTG GATCAGCATG TACGGTTGGA CCAGTCGTGC |
|||
151: GTCGGTAAAC AACGCATCTG CGTTATATCC GTCGAATAAC CCATATGTCC |
|||
201: TCCAGTCTAA TCCCCTAAGC AACTGCTCAA CGGTAAAATG CAAATACAGG |
|||
251: TGAGGAGTCC TCGAAGGGGT CGCACGCAAA TATGGGCGTC CCTTATTGGC |
|||
301: CCTCATCAGT AT |
|||
Base counts: A: 71, C: 84, G: 75, T: 82, total: 312 |
|||
---Program done, press RETURN---</pre> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |