アミノ酸の条件付き生起確率を調べる

2011-02-06 (日) 11:46:21 (4821d) | Topic path: Top / バイオ・データ・マイニング / アミノ酸の条件付き生起確率を調べる

はじめに

こちらで,シロイヌナズナにのたんぱく質における開始アミノ酸の生起確率を調べました.

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

プログラム

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

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

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

グラフ

amino_cond_probs.jpg

コメント

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

参考情報

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS