Bioinformatics/Subsequence: Difference between revisions

m (FWIW, not talking proteins here)
Line 296:
=={{header|Ring}}==
<lang ring>
load "consolecolors.ring"
 
row = 0
dnaList = []
dnaSeq = []
base = ["A","C","G","T"]
long = 20
plus = 0
see "DNA sequence:" + nl
see "DNA sequence:" + nl + nl
see " 12345678901234567890" + nl
see " " + long + ": "
 
Line 307 ⟶ 312:
rnd = random(3)+1
baseStr = base[rnd]
see baseStr # + " "
plusLine()
if (row%20) = 0 and long < 200
long = long + 20
see nl
if long < 100
see " " + long + ": "
else
see "" + long + ": "
ok
ok
add(dnaList,baseStr)
next
see nl+ " 12345678901234567890" + nl
 
strDna = list2str(dnaList)
strBase = ""
strDna = substr(strDna,nl,"")
for n = 1 to 4
 
rnd = random(3)+1
while true
strBase = strBase + base[rnd]
strBase = ""
next
for n = 1 to 4
rnd = random(3)+1
strBase = strBase + base[rnd]
next
ind = substr(strDna,strBase)
if ind > 0
exit
ok
end
 
see nl + "subsequence to search: " + strBase + nl
 
seqok = 0
see "start positions of subsequence : "
 
for n = 1 to 196
Line 339 ⟶ 347:
next
if flag = 1
add(dnaSeq,n)
seqok = 1
see "start position of sequence = " + n + nl" "
ok
next
 
if seqok = 0
see "subsequencesequence not found" + nl
ok
 
row = 0
showDna(dnaList)
 
func showDna(dnaList)
long = 20
see nl + "found subsequences:" + nl + nl
see " 12345678901234567890" + nl
see " " + long + ": "
for nr = 1 to len(dnaList)
if plus = 0
row = row + 1
ok
if plus = 1
nr = nr + 3
row = row + 1
plusLine()
ok
ind = find(dnaSeq,nr)
if ind > 0
for n = nr to nr + 3
cc_print(CC_BG_DARK_RED | CC_FG_WHITE,dnaList[n])
if n != nr
row = row + 1
ok
plusLine()
next
plus = 1
if (row%20) = 0
row = row + 1
nr = nr + 1
ok
else
plus = 0
see dnaList[nr]
ok
plusLine()
next
see nl+ " 12345678901234567890" + nl
 
func plusLine()
if (row%20) = 0 and long < 200
long = long + 20
see nl
if long < 100
see " " + long + ": "
else
see "" + long + ": "
ok
ok
</lang>
{{out}}
<pre>
DNA sequence:
12345678901234567890
20: GAGTATAAAAAGCGACATAG
20: CAGTAAATAAGGAGAACAGG
40: AAGCAGGGGGGGAACAGACA
40: GATCTATCTGCGCAGTTGTT
60: ACAATTGTGAAAACTAATCA
60: CAAATCAAGAGGAAAAAGTT
80: ATACGGAAAAGGATAAACAT
80: AAATCCAACACGGTAGGATG
100: GAGGGACTGCGGTTGGTAGG
100: CATTGAAAGGTTGCGTAAGA
120: CGATGAAACCTAAGAATGAA
120: AAAAAGGAGGGAAATGATCG
140: AACGAGGAAGGTGTAAAGTG
140: AAACAAAGTACGTCAATTAG
160: ATGGGGTCATGGGACAGACA
160: ATGCCAAAGACCGATAAAAG
180: TAGCTAAATGGATAAAAGCG
180: GTATTAGTATTAGAGCAGCG
200: GGTGAAGTCGGTCGCAAACG
200: AATGAGGAAGACTTCGAGAA
subsequence to search: ATGA
12345678901234567890
start position of subsequence = 79
 
start position of subsequence = 103
subsequence to search: AAGA
start position of subsequence = 116
start positions of subsequence : 47 97 147 188
found subsequences:
 
12345678901234567890
20: CAGTAAATAAGGAGAACAGG
40: GATCTATCTGCGCAGTTGTT
60: CAAATCAAGAGGAAAAAGTT
80: AAATCCAACACGGTAGGATG
100: CATTGAAAGGTTGCGTAAGA
120: AAAAGGAGGGAAATGATCG
140: AAACAAAGTACGTCAATTAG
160: ATGCCAAAGACCGATAAAAG
180: GTATTAGTATTAGAGCAGCG
200: AATGAGGAAGACTTCGAGAA
12345678901234567890
</pre>
 
2,468

edits