Bioinformatics/Sequence mutation: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring the hard way) |
No edit summary |
||
Line 1,742: | Line 1,742: | ||
Total 502 |
Total 502 |
||
</pre> |
</pre> |
||
=={{header|Mathematica}} / {{header|Wolfram Language}}== |
|||
BioSequence is a fundamental data type in Mathematica: |
|||
<lang Mathematica>SeedRandom[13122345]; |
|||
seq = BioSequence["DNA", "ATAAACGTACGTTTTTAGGCT"]; |
|||
randompos = RandomInteger[seq["SequenceLength"]]; |
|||
seq = StringReplacePart[seq, RandomChoice[{"A", "T", "C", "G"}], {randompos, randompos}]; |
|||
randompos = RandomInteger[seq["SequenceLength"]]; |
|||
seq = StringReplacePart[seq, "", {randompos, randompos}]; |
|||
randompos = RandomInteger[seq["SequenceLength"]]; |
|||
seq = StringInsert[seq, RandomChoice[{"A", "T", "C", "G"}], randompos]; |
|||
seq = BioSequence["DNA", StringJoin@RandomChoice[{"A", "T", "C", "G"}, 250]]; |
|||
size = 50; |
|||
parts = StringPartition[seq["SequenceString"], UpTo[size]]; |
|||
begins = Most[Accumulate[Prepend[StringLength /@ parts, 1]]]; |
|||
ends = Rest[Accumulate[Prepend[StringLength /@ parts, 0]]]; |
|||
StringRiffle[MapThread[ToString[#1] <> "-" <> ToString[#2] <> ": " <> #3 &, {begins, ends, parts}], "\n"] |
|||
Tally[Characters[seq["SequenceString"]]] |
|||
Do[ |
|||
type = RandomChoice[{1, 2, 3}]; |
|||
Switch[type, 1, |
|||
randompos = RandomInteger[seq["SequenceLength"]]; |
|||
seq = StringReplacePart[seq, RandomChoice[{"A", "T", "C", "G"}], {randompos, randompos}]; |
|||
, 2, |
|||
randompos = RandomInteger[seq["SequenceLength"]]; |
|||
seq = StringReplacePart[seq, "", {randompos, randompos}]; |
|||
, 3, |
|||
randompos = RandomInteger[seq["SequenceLength"]]; |
|||
seq = StringInsert[seq, RandomChoice[{"A", "T", "C", "G"}], randompos]; |
|||
] |
|||
, |
|||
{10} |
|||
] |
|||
parts = StringPartition[seq["SequenceString"], UpTo[size]]; |
|||
begins = Most[Accumulate[Prepend[StringLength /@ parts, 1]]]; |
|||
ends = Rest[Accumulate[Prepend[StringLength /@ parts, 0]]]; |
|||
StringRiffle[MapThread[ToString[#1] <> "-" <> ToString[#2] <> ": " <> #3 &, {begins, ends, parts}], "\n"] |
|||
Tally[Characters[seq["SequenceString"]]]</lang> |
|||
{{out}} |
|||
<pre>1-50: TAGCAGGGGAATTGTCGACTCCCGGGTTTCAATTGCCAACCAAGCATATT |
|||
51-100: GTACGCTCGTTCATTATAGGGGAAATGCGAGGGGCTAGAACGTTAGCTTC |
|||
101-150: GAGAGGTCGCGGCAATTTAGGGGGGCACCAAACGGTTTATAATACAGGGA |
|||
151-200: CTGATACATTCGCTGGAAAACAATTCTGCCCAGCAGCGACTCCGGACAAC |
|||
201-250: GTGACTTTGGTCCAAGATATTAGATTATCAATCCGTATTAATGTAGGCTT |
|||
{{"T", 63}, {"A", 69}, {"G", 66}, {"C", 52}} |
|||
1-50: TAGCAGGGGAATTGTCGACTCCCGGGTTCAATTGCCAACCAAGATATTGT |
|||
51-100: ACGCTCGTTCATTATAGGGGAAATGCGAGGGGCTAGAAACGTTAGTTCGA |
|||
101-150: GAGGTCGCGGAAATTTAGGGGGGCACCAACGGTTTATAATACAGGGACTG |
|||
151-200: ATACATTCGCTGGAAAACAATTCTGCCCAGCAGCGACTCCGGACAACGTG |
|||
201-246: ACTTTGGTCCAAGATAGTTAGATATCAATCCGTATAATGTAGGCTT |
|||
{{"T", 60}, {"A", 70}, {"G", 67}, {"C", 49}}</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |