Bioinformatics/Subsequence: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (→{{header|Raku}}: Add a Raku example) |
(Added Wren) |
||
Line 118: | Line 118: | ||
start position of subsequence = 103 |
start position of subsequence = 103 |
||
start position of subsequence = 116 |
start position of subsequence = 116 |
||
</pre> |
|||
=={{header|Wren}}== |
|||
{{libheader|Wren-pattern}} |
|||
{{libheader|Wren-str}} |
|||
{{libheader|Wren-fmt}} |
|||
<lang ecmascript>import "random" for Random |
|||
import "/pattern" for Pattern |
|||
import "/str" for Str |
|||
import "/fmt" for Fmt |
|||
var rand = Random.new() |
|||
var base = "ACGT" |
|||
var findDnaSubsequence = Fn.new { |dnaSize, chunkSize| |
|||
var dnaSeq = List.filled(dnaSize, null) |
|||
for (i in 0...dnaSize) dnaSeq[i] = base[rand.int(4)] |
|||
var dnaStr = dnaSeq.join() |
|||
var dnaSubseq = List.filled(4, null) |
|||
for (i in 0...4) dnaSubseq[i] = base[rand.int(4)] |
|||
var dnaSubstr = dnaSubseq.join() |
|||
System.print("DNA sequence:") |
|||
var i = chunkSize |
|||
for (chunk in Str.chunks(dnaStr, chunkSize)) { |
|||
Fmt.print("$3d..$3d: $s", i - chunkSize + 1, i, chunk) |
|||
i = i + chunkSize |
|||
} |
|||
System.print("\nSubsequence to locate: %(dnaSubstr)") |
|||
var p = Pattern.new(dnaSubstr) |
|||
var matches = p.findAll(dnaStr) |
|||
if (matches.count == 0) { |
|||
System.print("No matches found.") |
|||
} else { |
|||
System.print("Matches found at the following indices:") |
|||
for (m in matches) { |
|||
Fmt.print("$3d..$3d", m.index + 1, m.index + 4) |
|||
} |
|||
} |
|||
} |
|||
findDnaSubsequence.call(200, 20) |
|||
System.print() |
|||
findDnaSubsequence.call(600, 40)</lang> |
|||
{{out}} |
|||
<pre> |
|||
DNA sequence: |
|||
1.. 20: TATGGGCGCATTATGACAAC |
|||
21.. 40: GGCTACTGAAACGAAAATTC |
|||
41.. 60: ATGCCTTCGGAGGCTAGACC |
|||
61.. 80: ACTCATACATGATTTACAGC |
|||
81..100: TAGTCAGTTGCGTCCGCCAT |
|||
101..120: CCCGCATAACTATGTATTAC |
|||
121..140: GAGCATGTTCTGGCAACCTT |
|||
141..160: TCAGTGACAGTTCCTCAGGC |
|||
161..180: GCGTTCGCGTTGAAGGCCTC |
|||
181..200: CCCACACCGCACCCCTGCCG |
|||
Subsequence to locate: AATT |
|||
Matches found at the following indices: |
|||
36.. 39 |
|||
DNA sequence: |
|||
1.. 40: GCGCTGAGCGCCCCAGTACAGCGGGTTAAACCGAGCCCGC |
|||
41.. 80: TCCGATGAACCAACTCCCATTCCTATAATGGTGCCCCGAC |
|||
81..120: ATATTGAATTCGGCGGGTCCGCTATCGGGCTGAGGATGCC |
|||
121..160: AATATCTAGGCGCTACCCTGAAGATCCTCAGTTGTGGTGT |
|||
161..200: CGCGGAGTGTCGATCCCAGAGCTCCCAATTGACTCAATTA |
|||
201..240: CTTTTTCCGTCCTCTTGCTTACGGATTTATGTTTGTGGCA |
|||
241..280: GAGGTTATGCTTCAGGCATCCCCATGTTTCCTGAGATACG |
|||
281..320: ACCACTGTCAGGTGGCTTGAATCTACCTTGTATTTCCTCT |
|||
321..360: AGTACCAGTCACTGTCATCTACTGGAAGCCATATCAGCGT |
|||
361..400: TGAAATGTCTATAATTTACTCTCCGGTTGTACCCAAGCGA |
|||
401..440: TAACAGCAACGTGTGGGTCTAAAGAGTTCCGCGTTTCGAC |
|||
441..480: ATAACGTGCTCCTATTTATCTACCGAAACACCCTATTTTC |
|||
481..520: CATCTAACCGGCACCCAATGCGCAGGTGTACGCGTCCTAC |
|||
521..560: TACGTTTGAAACGGTTCCATCTCGCCATGTACAATTGTGG |
|||
561..600: GGCTACGATTAAGTGTAGTCGGTAATTCAGGGTGAAGTTG |
|||
Subsequence to locate: TTCG |
|||
Matches found at the following indices: |
|||
89.. 92 |
|||
435..438 |
|||
</pre> |
</pre> |