113 lines
2.8 KiB
Plaintext
113 lines
2.8 KiB
Plaintext
row = 0
|
|
dnaList = []
|
|
base = ["A","C","G","T"]
|
|
long = 20
|
|
see "Initial sequence:" + nl
|
|
see " 12345678901234567890" + nl
|
|
see " " + long + ": "
|
|
|
|
for nr = 1 to 200
|
|
row = row + 1
|
|
rnd = random(3)+1
|
|
baseStr = base[rnd]
|
|
see baseStr # + " "
|
|
if (row%20) = 0 and long < 200
|
|
long = long + 20
|
|
see nl
|
|
if long < 100
|
|
see " " + long + ": "
|
|
else
|
|
see "" + long + ": "
|
|
ok
|
|
ok
|
|
add(dnaList,baseStr)
|
|
next
|
|
see nl+ " 12345678901234567890" + nl
|
|
|
|
baseCount(dnaList)
|
|
|
|
for n = 1 to 10
|
|
rnd = random(2)+1
|
|
switch rnd
|
|
on 1
|
|
baseSwap(dnaList)
|
|
on 2
|
|
baseDelete(dnaList)
|
|
on 3
|
|
baseInsert(dnaList)
|
|
off
|
|
next
|
|
showDna(dnaList)
|
|
baseCount(dnaList)
|
|
|
|
func baseInsert(dnaList)
|
|
rnd1 = random(len(dnaList)-1)+1
|
|
rnd2 = random(len(base)-1)+1
|
|
insert(dnaList,rnd1,base[rnd2])
|
|
see "Insert base " + base[rnd2] + " at position " + rnd1 + nl
|
|
return dnaList
|
|
|
|
func baseDelete(dnaList)
|
|
rnd = random(len(dnaList)-1)+1
|
|
del(dnaList,rnd)
|
|
see "Erase base " + dnaList[rnd] + " at position " + rnd + nl
|
|
return dnaList
|
|
|
|
func baseSwap(dnaList)
|
|
rnd1 = random(len(dnaList))
|
|
rnd2 = random(3)+1
|
|
see "Change base at position " + rnd1 + " from " + dnaList[rnd1] + " to " + base[rnd2] + nl
|
|
dnaList[rnd1] = base[rnd2]
|
|
|
|
func showDna(dnaList)
|
|
long = 20
|
|
see nl + "After 10 mutations:" + nl
|
|
see " 12345678901234567890" + nl
|
|
see " " + long + ": "
|
|
for nr = 1 to len(dnaList)
|
|
row = row + 1
|
|
see dnaList[nr]
|
|
if (row%20) = 0 and long < 200
|
|
long = long + 20
|
|
see nl
|
|
if long < 100
|
|
see " " + long + ": "
|
|
else
|
|
see "" + long + ": "
|
|
ok
|
|
ok
|
|
next
|
|
see nl+ " 12345678901234567890" + nl
|
|
|
|
func baseCount(dnaList)
|
|
dnaBase = [:A=0, :C=0, :G=0, :T=0]
|
|
lenDna = len(dnaList)
|
|
for n = 1 to lenDna
|
|
dnaStr = dnaList[n]
|
|
switch dnaStr
|
|
on "A"
|
|
strA = dnaBase["A"]
|
|
strA++
|
|
dnaBase["A"] = strA
|
|
on "C"
|
|
strC = dnaBase["C"]
|
|
strC++
|
|
dnaBase["C"] = strC
|
|
on "G"
|
|
strG = dnaBase["G"]
|
|
strG++
|
|
dnaBase["G"] = strG
|
|
on "T"
|
|
strT = dnaBase["T"]
|
|
strT++
|
|
dnaBase["T"] = strT
|
|
off
|
|
next
|
|
see nl
|
|
see "A: " + dnaBase["A"] + ", "
|
|
see "T: " + dnaBase["T"] + ", "
|
|
see "C: " + dnaBase["C"] + ", "
|
|
see "G: " + dnaBase["G"] + ", "
|
|
total = dnaBase["A"] + dnaBase["T"] + dnaBase["C"] + dnaBase["G"]
|
|
see "Total: " + total+ nl + nl
|