Bioinformatics/Subsequence: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: added a foot separator to the outputs.) |
|||
Line 197: | Line 197: | ||
289..293 |
289..293 |
||
312..316 |
312..316 |
||
</pre> |
|||
=={{header|Go}}== |
|||
{{trans|Wren}} |
|||
<lang go>package main |
|||
import ( |
|||
"fmt" |
|||
"math/rand" |
|||
"regexp" |
|||
"time" |
|||
) |
|||
const base = "ACGT" |
|||
func findDnaSubsequence(dnaSize, chunkSize int) { |
|||
dnaSeq := make([]byte, dnaSize) |
|||
for i := 0; i < dnaSize; i++ { |
|||
dnaSeq[i] = base[rand.Intn(4)] |
|||
} |
|||
dnaStr := string(dnaSeq) |
|||
dnaSubseq := make([]byte, 4) |
|||
for i := 0; i < 4; i++ { |
|||
dnaSubseq[i] = base[rand.Intn(4)] |
|||
} |
|||
dnaSubstr := string(dnaSubseq) |
|||
fmt.Println("DNA sequnence:") |
|||
for i := chunkSize; i <= len(dnaStr); i += chunkSize { |
|||
start := i - chunkSize |
|||
fmt.Printf("%3d..%3d: %s\n", start+1, i, dnaStr[start:i]) |
|||
} |
|||
fmt.Println("\nSubsequence to locate:", dnaSubstr) |
|||
var r = regexp.MustCompile(dnaSubstr) |
|||
var matches = r.FindAllStringIndex(dnaStr, -1) |
|||
if len(matches) == 0 { |
|||
fmt.Println("No matches found.") |
|||
} else { |
|||
fmt.Println("Matches found at the following indices:") |
|||
for _, m := range matches { |
|||
fmt.Printf("%3d..%-3d\n", m[0]+1, m[1]) |
|||
} |
|||
} |
|||
} |
|||
func main() { |
|||
rand.Seed(time.Now().UnixNano()) |
|||
findDnaSubsequence(200, 20) |
|||
fmt.Println() |
|||
findDnaSubsequence(600, 40) |
|||
}</lang> |
|||
{{out}} |
|||
Sample run: |
|||
<pre> |
|||
DNA sequnence: |
|||
1.. 20: GTTGCCCACACGTCTTATTG |
|||
21.. 40: TAAAAATCACCGTGCAGCGA |
|||
41.. 60: GGTTAAAAATGGTAGGAAAA |
|||
61.. 80: TATCCTCAGCCAGCGGTGCC |
|||
81..100: GGCCAACAAAAGGGACGTTG |
|||
101..120: GATTAAAGTAGGTCTAGGTA |
|||
121..140: TCTCGTATCCGGTTGATCCG |
|||
141..160: GGATGGTGGACGATATTGGA |
|||
161..180: GACCGGAGTGTACATCGGTG |
|||
181..200: TTGTCGCTTGCAGCTACGGT |
|||
Subsequence to locate: AATA |
|||
Matches found at the following indices: |
|||
59..62 |
|||
DNA sequnence: |
|||
1.. 40: GTACAGCCACTGTTAGTAGACGGATGCTATTGGGACGCAA |
|||
41.. 80: CACATCAGTACACTGCTTGTTCGTAATCGCGTACCCAGCG |
|||
81..120: CAAAAGGAGGGGAGGAACCTGCTCAGACTGTCGCTAAAAA |
|||
121..160: CGAGCACGTGTCCTTACGCAGTGATGGTAGCGGTCCACGA |
|||
161..200: CTTCCACTGGCATAAGGAGAATGTTTAGTAACGCCCCTCA |
|||
201..240: TAGGTGCAATTCTACAGGTTAAGGGACCGTGGGATGTTTC |
|||
241..280: TATAAAAGTTGAAGAGATTACTAATCCGTCCCGTGCGCGT |
|||
281..320: GCCGCAATTTAGCGCCCGTTCTTGAGTAAACATACATGCA |
|||
321..360: CGCTCTTGAGTTTTCTAAAACCTGATCAAAACGGTCGCCC |
|||
361..400: ACATGCAGGAGCGCCGCAGGGTTTCAGAGGTCAACCATCG |
|||
401..440: GCAGCACACGTGAACCCTCTGTACTGACCAGGGGCTTGCT |
|||
441..480: CCTTGGTAGGAGATGGTGGAGAATGCGTCGATGCACTGAA |
|||
481..520: GCAGACCGCTGATAGCATGTACGATGTTTACGGGTTGACG |
|||
521..560: ATAGCTTTGCTAGTGATCGAACATATGATGAAAAACGCTT |
|||
561..600: CCATTGATAGAGCATCTTAGGAGCTCAGTCCAGTGACCTC |
|||
Subsequence to locate: AGGT |
|||
Matches found at the following indices: |
|||
202..205 |
|||
216..219 |
|||
388..391 |
|||
</pre> |
</pre> |
||