•align.rbを完成させて、ATAGとAACのアラインメントを求めよう。
(青色が省略されていた部分)
def align(s,t)
m=s.length()
n=t.length()
a=make2d(m+1,n+1)
for j in 1..n
a[0][j] = a[0][j-1] + g()
end
for i in 1..m
a[i][0] = a[i-1][0]+g()
end
for i in 1..m
for j in 1..n
x = a[i-1][j] + g()
y = a[i][j-1] + g()
z = a[i-1][j-1] + q(s[i-1],t[j-1])
a[i][j] = max(x,max(y,z))
end
end
a
end
u = ""
v = ""
i = s.length()
j = t.length()
while i>0 || j>0
if j>0 && a[i][j] = a[i][j-1] + g()
u = "-" + u
v = t[j-1..j-1] + v
j = j-1
else
if i>o && j>0 && a[i][j] == a[i-1][j-1] + q(s[i-1],t[j-1])
u = s[i-1..i-1] + u
v = t[j-1..j-1] + v
i = i-1
j = j-1
else
if i>0 && a[i][j] = a[i-1][j] + g()
u = s[i-1..i-1] + u
v = "-" + v
i = i-1
end
end
end
end
[u,v]
end
•RNase_P.rbをロードすると、文字列を返す(引数なしの)関数seq0()とseq1()が定義される。これらのアラインメントを求めよう。
やってみそ。241になります(右下の要素)
参考までに、traceback(a,s,t)の完成形
def traceback(a,s,t)u = ""
v = ""
i = s.length()
j = t.length()
while i>0 || j>0
if j>0 && a[i][j] = a[i][j-1] + g()
u = "-" + u
v = t[j-1..j-1] + v
j = j-1
else
if i>o && j>0 && a[i][j] == a[i-1][j-1] + q(s[i-1],t[j-1])
u = s[i-1..i-1] + u
v = t[j-1..j-1] + v
i = i-1
j = j-1
else
if i>0 && a[i][j] = a[i-1][j] + g()
u = s[i-1..i-1] + u
v = "-" + v
i = i-1
end
end
end
end
[u,v]
end
0 件のコメント:
コメントを投稿