RosettaCodeData/Task/Bioinformatics-Sequence-mutation/EasyLang/bioinformatics-sequence-mutation.easy

78 lines
1.4 KiB
Text
Raw Permalink Normal View History

2024-10-16 18:07:41 -07:00
base$[] = [ "A" "C" "T" "G" ]
global seq[] seqnx[] seqpr[] .
2025-06-11 20:16:52 -04:00
proc prseq .
2024-10-16 18:07:41 -07:00
len cnt[] 4
2025-06-11 20:16:52 -04:00
numfmt 3 0
2024-10-16 18:07:41 -07:00
ind = 1
while seqnx[ind] <> 1
pos += 1
ind = seqnx[ind]
2025-06-11 20:16:52 -04:00
if pos mod 40 = 1 : print ""
if pos mod 40 = 1 : write pos & ":"
if pos mod 4 = 1 : write " "
2024-10-16 18:07:41 -07:00
cnt[seq[ind]] += 1
write base$[seq[ind]]
.
print ""
print ""
for i to 4
print base$[i] & ":" & cnt[i]
sum += cnt[i]
.
print "====="
print " " & sum
print ""
.
2025-06-11 20:16:52 -04:00
proc init .
2024-10-16 18:07:41 -07:00
seq[] = [ 0 ]
seqnx[] = [ 2 ]
seqpr[] = [ 0 ]
for i = 2 to 201
2026-04-30 12:34:36 -04:00
seq[] &= random 1 4
2024-10-16 18:07:41 -07:00
seqnx[] &= i + 1
seqpr[] &= i - 1
.
seqpr[1] = len seq[]
seqnx[$] = 1
.
2025-06-11 20:16:52 -04:00
proc delete pos .
2024-10-16 18:07:41 -07:00
nx = seqnx[pos]
pre = seqpr[pos]
seqnx[pre] = nx
seqpr[nx] = pre
last = len seq[]
seq[pos] = seq[last]
seqnx[pos] = seqnx[last]
seqpr[pos] = seqpr[last]
seqpr[seqnx[pos]] = pos
seqnx[seqpr[pos]] = pos
len seq[] -1
len seqnx[] -1
len seqpr[] -1
.
2025-06-11 20:16:52 -04:00
proc insert pos .
2026-04-30 12:34:36 -04:00
seq[] &= random 1 4
2024-10-16 18:07:41 -07:00
last = len seq[]
seqnx[] &= pos
seqpr[] &= seqpr[pos]
seqnx[seqpr[pos]] = last
seqpr[pos] = last
.
2025-06-11 20:16:52 -04:00
proc mutate .
2026-04-30 12:34:36 -04:00
op = random 1 3
pos = random 2 len seq[]
2024-10-16 18:07:41 -07:00
if op = 1
2026-04-30 12:34:36 -04:00
seq[pos] = random 1 4
2024-10-16 18:07:41 -07:00
elif op = 2
insert pos
else
delete pos
.
.
init
print "Original:"
prseq
2025-06-11 20:16:52 -04:00
for i to 10 : mutate
2024-10-16 18:07:41 -07:00
print "Mutated:"
prseq