バイオ・データ・マイニング/人工的なたんぱく質データを生成する
をテンプレートにして作成
開始行:
*はじめに [#n431f325]
開発中の相同性検索ツール(配列が類似しているたんぱく質を...
たんぱく質の数は30,000,長さはすべて1,000としています.
*生起確率のみに基づく生成プログラム [#c9a7cdf6]
FASTAフォーマットで保存されている''At_GB_all_prot.gz''を...
Ruby 1.9用です.
#geshi(ruby){{
require 'zlib'
h = Hash.new # ハッシュ
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c|
h[c] = 0 # カウントを0に初期化
end
sum = 0 # 合計
Zlib::GzipReader.open('At_GB_all_prot.gz') do |gz| # 入力...
gz.each do |l|
next if (l[0] == '>') # ヘッダ行はスキップ
l.chomp!.each_char do |c| # データ行から一文字ずつ取...
h[c] += 1
sum += 1
end
end
end
h.each do |key,value|
h[key] /= sum.to_f # 確率に変換
end
orig_name = "At_GB_all_prot_art" # 出力ファイルの名前
Zlib::GzipWriter.open(orig_name+".gz", Zlib::BEST_COMPRES...
gz.mtime = Time.now
gz.orig_name = orig_name
30000.times do |i| # たんぱく質の数
gz.printf(">id|%08d\n", i);
1000.times do |j| # たんぱく質の長さ
r = rand
sum = 0
h.each do |key, value|
sum += value
if r <= sum then
gz.print key # アミノ酸を出力
gz.print "\n" if j % 80 == 79 # 80アミノ酸ごと...
break
end
end
end
gz.print "\n"
end
end
}}
*開始アミノ酸の生起確率と条件付き生起確率に基づく生成プロ...
FASTAフォーマットで保存されている''At_GB_all_prog.gz''を...
これも,Ruby 1.9用です.
#geshi(ruby){{
require 'zlib'
# 初期化
h = Hash.new # ハッシュ
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c1|
h[c1] = 0 # カウントを0に初期化
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
h[c1+c2] = 0 # カウントを0に初期化
end
end
# カウント
sum = 0 # 合計
first = false;
Zlib::GzipReader.open('At_GB_all_prot.gz') do |gz|
gz.each do |l|
c = l[0]
if (c == '>') # ヘッダ行はスキップ
first = true
next
end
if first then # ヘッダ行の次の行
h[c] += 1 # 開始アミノ酸のカウント
sum += 1
first = false
end
for i in 0..(l.chomp!.length-2) do
token = l[i]+l[i+1] # バイグラムのトークン
h[token] += 1
end
end
end
# 確率計算
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c|
h[c] /= sum.to_f # 開始アミノ酸の生起確率に変換
end
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c1|
sum = 0 # 合計
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
sum += h[c1+c2] # 合計
end
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
h[c1+c2] /= sum.to_f # 条件付き確率に変換
end
end
# データ生成
orig_name = "At_GB_all_prot_art" # 出力ファイルの名前
Zlib::GzipWriter.open(orig_name+".gz", Zlib::BEST_COMPRES...
gz.mtime = Time.now
gz.orig_name = orig_name
30000.times do |i| # たんぱく質の数
gz.printf(">id|%08d\n", i);
r = rand
sum = 0
c1 = "c"
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c|
sum += h[c]
if r <= sum then
gz.print c # 開始アミノ酸を出力
c1 = c
break
end
end
999.times do |j| # たんぱく質の長さ(開始アミノ酸を...
r = rand
sum = 0
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
sum += h[c1+c2]
if r <= sum then
gz.print c2 # アミノ酸を出力
c1 = c2
gz.print "\n" if j % 80 == 78 # 80アミノ酸ごと...
break
end
end
end
gz.print "\n"
end
end
}}
*参考情報 [#kfde024e]
-[[アミノ酸の生起確率を調べる>バイオ・データ・マイニング/...
-[[アミノ酸の条件付き生起確率を調べる>バイオ・データ・マ...
終了行:
*はじめに [#n431f325]
開発中の相同性検索ツール(配列が類似しているたんぱく質を...
たんぱく質の数は30,000,長さはすべて1,000としています.
*生起確率のみに基づく生成プログラム [#c9a7cdf6]
FASTAフォーマットで保存されている''At_GB_all_prot.gz''を...
Ruby 1.9用です.
#geshi(ruby){{
require 'zlib'
h = Hash.new # ハッシュ
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c|
h[c] = 0 # カウントを0に初期化
end
sum = 0 # 合計
Zlib::GzipReader.open('At_GB_all_prot.gz') do |gz| # 入力...
gz.each do |l|
next if (l[0] == '>') # ヘッダ行はスキップ
l.chomp!.each_char do |c| # データ行から一文字ずつ取...
h[c] += 1
sum += 1
end
end
end
h.each do |key,value|
h[key] /= sum.to_f # 確率に変換
end
orig_name = "At_GB_all_prot_art" # 出力ファイルの名前
Zlib::GzipWriter.open(orig_name+".gz", Zlib::BEST_COMPRES...
gz.mtime = Time.now
gz.orig_name = orig_name
30000.times do |i| # たんぱく質の数
gz.printf(">id|%08d\n", i);
1000.times do |j| # たんぱく質の長さ
r = rand
sum = 0
h.each do |key, value|
sum += value
if r <= sum then
gz.print key # アミノ酸を出力
gz.print "\n" if j % 80 == 79 # 80アミノ酸ごと...
break
end
end
end
gz.print "\n"
end
end
}}
*開始アミノ酸の生起確率と条件付き生起確率に基づく生成プロ...
FASTAフォーマットで保存されている''At_GB_all_prog.gz''を...
これも,Ruby 1.9用です.
#geshi(ruby){{
require 'zlib'
# 初期化
h = Hash.new # ハッシュ
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c1|
h[c1] = 0 # カウントを0に初期化
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
h[c1+c2] = 0 # カウントを0に初期化
end
end
# カウント
sum = 0 # 合計
first = false;
Zlib::GzipReader.open('At_GB_all_prot.gz') do |gz|
gz.each do |l|
c = l[0]
if (c == '>') # ヘッダ行はスキップ
first = true
next
end
if first then # ヘッダ行の次の行
h[c] += 1 # 開始アミノ酸のカウント
sum += 1
first = false
end
for i in 0..(l.chomp!.length-2) do
token = l[i]+l[i+1] # バイグラムのトークン
h[token] += 1
end
end
end
# 確率計算
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c|
h[c] /= sum.to_f # 開始アミノ酸の生起確率に変換
end
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c1|
sum = 0 # 合計
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
sum += h[c1+c2] # 合計
end
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
h[c1+c2] /= sum.to_f # 条件付き確率に変換
end
end
# データ生成
orig_name = "At_GB_all_prot_art" # 出力ファイルの名前
Zlib::GzipWriter.open(orig_name+".gz", Zlib::BEST_COMPRES...
gz.mtime = Time.now
gz.orig_name = orig_name
30000.times do |i| # たんぱく質の数
gz.printf(">id|%08d\n", i);
r = rand
sum = 0
c1 = "c"
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c|
sum += h[c]
if r <= sum then
gz.print c # 開始アミノ酸を出力
c1 = c
break
end
end
999.times do |j| # たんぱく質の長さ(開始アミノ酸を...
r = rand
sum = 0
"ABCDEFGHIKLMNPQRSTUVWXYZ".each_char do |c2|
sum += h[c1+c2]
if r <= sum then
gz.print c2 # アミノ酸を出力
c1 = c2
gz.print "\n" if j % 80 == 78 # 80アミノ酸ごと...
break
end
end
end
gz.print "\n"
end
end
}}
*参考情報 [#kfde024e]
-[[アミノ酸の生起確率を調べる>バイオ・データ・マイニング/...
-[[アミノ酸の条件付き生起確率を調べる>バイオ・データ・マ...
ページ名: