*はじめに [#xb53f0b2]

[[こちら>バイオ・データ・マイニング/アミノ酸の生起確率を調べる]]で,シロイヌナズナにのたんぱく質における開始アミノ酸の生起確率を調べました.

ここで,バイグラムによる分析(二文字ずつの分析)を行い,直前のアミノ酸によってアミノ酸の生起確率に違いがあるかどうか,つまり,条件付き生起確率を調べ,直前のアミノ酸ごとに比べます.

*プログラム [#u0e752f4]

前回作成したRuby 1.9のプログラムを基にして,次のようなプログラムを作りました.

#geshi(ruby){{
require 'zlib'

h = Hash.new  # カウントを保存するハッシュ
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c1|
  "ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
    h[c1+c2] = 0  # カウントを0に初期化
  end
end

Zlib::GzipReader.open('At_GB_all_prot.gz') do |gz|
  gz.each do |l|
    c = l[0]
    next if c == '>'  # ヘッダ行はスキップ
    for i in 0..(l.chomp!.length-2) do
      token = l[i]+l[i+1]  # バイグラムのトークン
      h[token] += 1
    end
  end
end

# 列見出し
print ","
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c|
  print "#{c},"
end
print "\n"

"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c1|
  sum = 0  # 合計
  "ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
    sum += h[c1+c2]  # 合計
  end
  print "#{c1},"  # 行見出し
  "ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
    print "#{h[c1+c2]/sum.to_f},"  # 条件付き確率の計算と出力
  end
  print "\n"
end
}}

行の最後に余分なコンマが付きますが,ここでは気にしないことにします.


*グラフ [#o9a17a0b]

#ref(http://xn--p8ja5bwe1i.jp/blog/images/2011/02/amino_cond_probs.jpg,nolink);


*コメント [#u86d9e7b]

特殊なB, U, X, Zは別としても,他のと結構違うアミノ酸もありますね.


*参考情報 [#yae4c455]

-[[アミノ酸の生起確率を調べる>バイオ・データ・マイニング/アミノ酸の生起確率を調べる]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS