Bioinformatics/Sequence mutation: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
|||
Line 15: | Line 15: | ||
* Give more information on the individual mutations applied. |
* Give more information on the individual mutations applied. |
||
* Allow mutations to be weighted and/or chosen. |
* Allow mutations to be weighted and/or chosen. |
||
=={{header|11l}}== |
|||
{{trans|Python}} |
|||
<lang 11l>UInt32 seed = 0 |
|||
F nonrandom(n) |
|||
:seed = 1664525 * :seed + 1013904223 |
|||
R Int(:seed >> 16) % n |
|||
F nonrandom_choice(lst) |
|||
R lst[nonrandom(lst.len)] |
|||
F basecount(dna) |
|||
DefaultDict[Char, Int] d |
|||
L(c) dna |
|||
d[c]++ |
|||
R sorted(d.items()) |
|||
F seq_split(dna, n = 50) |
|||
R (0 .< dna.len).step(n).map(i -> @dna[i .< i + @n]) |
|||
F seq_pp(dna, n = 50) |
|||
L(part) seq_split(dna, n) |
|||
print(‘#5: #.’.format(L.index * n, part)) |
|||
print("\n BASECOUNT:") |
|||
V tot = 0 |
|||
L(base, count) basecount(dna) |
|||
print(‘ #3: #.’.format(base, count)) |
|||
tot += count |
|||
V (base, count) = (‘TOT’, tot) |
|||
print(‘ #3= #.’.format(base, count)) |
|||
F seq_mutate(String =dna; count = 1, kinds = ‘IDSSSS’, choice = ‘ATCG’) |
|||
[(String, Int)] mutation |
|||
V k2txt = [‘I’ = ‘Insert’, ‘D’ = ‘Delete’, ‘S’ = ‘Substitute’] |
|||
L 0 .< count |
|||
V kind = nonrandom_choice(kinds) |
|||
V index = nonrandom(dna.len + 1) |
|||
I kind == ‘I’ |
|||
dna = dna[0 .< index]‘’nonrandom_choice(choice)‘’dna[index..] |
|||
E I kind == ‘D’ & !dna.empty |
|||
dna = dna[0 .< index]‘’dna[index+1..] |
|||
E I kind == ‘S’ & !dna.empty |
|||
dna = dna[0 .< index]‘’nonrandom_choice(choice)‘’dna[index+1..] |
|||
mutation.append((k2txt[kind], index)) |
|||
R (dna, mutation) |
|||
print(‘SEQUENCE:’) |
|||
V sequence = ‘TCAATCATTAATCGATTAATACATTCAATTTGAACATCTCCAGGAGAAGGCAGGGTAATCTCGTGTAGCCGTGCTTGGGGCCTCCGATATGGCCGGGGAATTTCAAAGTATAGTGTGCATCCCCTCATAATACATAGATCTATAGGTAAGTATATGGGTTGACGTTGTTAGATGCGATACACGTGCACACTTTATGAATTTTACGTTCCTCTGCCTAGAGTGCCAAGTTTCAATTTGCTACGGTTCCTCA’ |
|||
seq_pp(sequence) |
|||
print("\n\nMUTATIONS:") |
|||
V (mseq, m) = seq_mutate(sequence, 10) |
|||
L(kind, index) m |
|||
print(‘ #10 @#.’.format(kind, index)) |
|||
print() |
|||
seq_pp(mseq)</lang> |
|||
{{out}} |
|||
<pre> |
|||
SEQUENCE: |
|||
0: TCAATCATTAATCGATTAATACATTCAATTTGAACATCTCCAGGAGAAGG |
|||
50: CAGGGTAATCTCGTGTAGCCGTGCTTGGGGCCTCCGATATGGCCGGGGAA |
|||
100: TTTCAAAGTATAGTGTGCATCCCCTCATAATACATAGATCTATAGGTAAG |
|||
150: TATATGGGTTGACGTTGTTAGATGCGATACACGTGCACACTTTATGAATT |
|||
200: TTACGTTCCTCTGCCTAGAGTGCCAAGTTTCAATTTGCTACGGTTCCTCA |
|||
BASECOUNT: |
|||
A: 66 |
|||
C: 51 |
|||
G: 55 |
|||
T: 78 |
|||
TOT= 250 |
|||
MUTATIONS: |
|||
Substitute @184 |
|||
Substitute @70 |
|||
Substitute @28 |
|||
Substitute @6 |
|||
Substitute @25 |
|||
Substitute @197 |
|||
Substitute @81 |
|||
Substitute @130 |
|||
Substitute @76 |
|||
Delete @76 |
|||
0: TCAATCTTTAATCGATTAATACATTCAATTTGAACATCTCCAGGAGAAGG |
|||
50: CAGGGTAATCTCGTGTAGCCCTGCTTGGGCATCCGATATGGCCGGGGAAT |
|||
100: TTCAAAGTATAGTGTGCATCCCCTCATAACACATAGATCTATAGGTAAGT |
|||
150: ATATGGGTTGACGTTGTTAGATGCGATACACGTACACACTTTATGATTTT |
|||
200: TACGTTCCTCTGCCTAGAGTGCCAAGTTTCAATTTGCTACGGTTCCTCA |
|||
BASECOUNT: |
|||
A: 66 |
|||
C: 52 |
|||
G: 52 |
|||
T: 79 |
|||
TOT= 249 |
|||
</pre> |
|||
=={{header|Arturo}}== |
=={{header|Arturo}}== |