『情報科学入門 Rubyを使って学ぶ』の練習問題の解答例の他、授業スライドの練習問題の解答例や、プログラミングのポイント等を掲載します。他クラスの方の利用歓迎。改良・訂正箇所ありましたらご指摘ください。

2011/01/28

[ス]練習問題(第七章)

授業スライド「07パターン認識入門」の練習問題の解答例です。


•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





•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 件のコメント:

コメントを投稿