FlyBaseからのデータ取得(などなど4)
をテンプレートにして作成
開始行:
2012年9月11日から15日に掛けての作業メモを整理したものです
#contents
* FlyBaseの文献情報を手掛りにしてコンストラクトの記述など...
FlyBaseにある文献の情報のページ(FBrf*******.html)には、
abstract などように文献には当然ある情報に加え、
その論文で使われた遺伝子、allele、コンストラクト、挿入の...
整理され、掲出されています。
そこで、文献にあるコンストラクトや挿入の情報を取得するた...
作業をしたので、記録を残します。
今回は、コンストラクトがどのようなものか、つまり、コンス...
使われた allele がどのようなものかが、業務で必要になり行...
文献情報
↓
コンストラクトや挿入情報
↓
コンストラクトのページから使われた allele 情報を抽出
が基本戦略です。
★ FlyBase の [[precomputed files>http://flybase.org/stati...
かといって、FlyBaseの全情報を取得してデータベースを構築す...
手間が掛かりすぎ。
そこで、htmlファイルとしてデータを取得し、
必要な情報を抽出することにした。
2012年9月22日追記
** 文献情報取得 [#gc0dad87]
*** FlyBaseより fbrf_pmid_fb_2012_05.tsv を取得 [#uf12a8dd]
Files → Current Release からダウンロード~
具体的にはココ:http://flybase.org/static_pages/downloads...
*** FBrfファイル(文献)の取得 [#qae5392b]
fbrf_pmid_fb_2012_05.tsv から 「FBrf******」とあるものを...
runreference_all.sh: 56526 行
wget http://flybase.org/reports/FBrf0003114.html
wget http://flybase.org/reports/FBrf0011208.html
wget http://flybase.org/reports/FBrf0012780.html
...
$ cd FBrf
$ sh runreference_all.sh
2度止まったので、3階に分けて実行(詳細省略)。~
すべてが取得できたわけではないようだ。~
56,495 files~
sh fileでは、56,526 取得のつもりだった。
**コンストラクト、挿入情報の取得 [#d8cd0dba]
*** FBrfファイルから、FBti、FBtpの情報を抽出 [#a9297d10]
- FBti: 挿入の情報
- FBtp: コンストラクトの情報
$ cd ..
$ grep FBti ./FBrf/* > grep_ti.txt
$ grep FBtp ./FBrf/* > grep_tp.txt
FBfr と FBti、因子 の対応にエディタを使って編集する(タブ...
grep_ti.txt: 37069 行
LEFT:
,FBrf0037054.html,FBti0014771.html,I{}w<sup>IR1</sup>
,FBrf0037612.html,FBti0002823.html,3S18{}w<sup>a4</sup>
,FBrf0037612.html,FBti0002388.html,copia{}w<sup>a</sup>
,...,,
grep_tp.txt: 71224 行
LEFT:
,FBrf0038720.html,FBtp0000035.html,P{6.1}
,FBrf0038720.html,FBtp0000036.html,P{ry1}
,FBrf0038720.html,FBtp0000037.html,P{ry3}
,...,,
*** FBtiファイル(挿入)の取得 [#r9802807]
FBti を取得するために、grep_ti.txt を加工し .sh ファイル...
FBti*******.html が取得できていないものがあるので、少なく...
runti_temp.sh: 37055行
wget http://flybase.org/reports/FBti0014771.html
wget http://flybase.org/reports/FBti0002823.html
wget http://flybase.org/reports/FBti0002388.html
...
複数の文献で同一の挿入が扱われることがある~
FBtiファイルはひとつ取得すればよい~
そこで、重複を除く~
shファイルを作る前のFBtiファイル名から重複を除いてももち...
(作業手順はほとんど同じ)
unique.pl
#!perl
open(IFILE, $ARGV[0]);
@myline = <IFILE>;
# http://ameblo.jp/debugme/entry-10505621785.html
my %hash = map { $_, 1 } @myline;
my @unique = keys %hash;
print @unique;
$ perl unique.pl runti_temp.sh > runti.sh
runti.sh: 20373 行
wget http://flybase.org/reports/FBti0003892.html
wget http://flybase.org/reports/FBti0014868.html
wget http://flybase.org/reports/FBti0114075.html
...
$ cp runti.sh ./FBti
$ cd FBti
$ sh runti.sh
ファイル数: 20373
$ cd ..
$ grep FBtp ./FBti/* | grep -v ".png" > grep_ti2tp.txt
FBti と 因子 の対応にエディタを使って編集する
grepが複数拾って来たので、重複を除く
$ perl unique.pl grep_ti2tp.txt > grep_ti2tp_uniq.txt
ソートしてFBtiの順にしておく
grep_ti2tp_uniq.txt: 18869行
LEFT:
,FBti0000040.html,FBtp0000078.html,P{hsneo}
,FBti0000046.html,FBtp0000078.html,P{hsneo}
,FBti0000124.html,FBtp0000242.html,P{?2-3} ← デルタが文...
,...,,
*** FBtpファイル(コンストラクト)の取得 [#ica8b31c]
grep_ti2tp_uniq.txt と grep_tp.txt から
FBtp*******.html
だけを抜き出し、重複を取り除き(上のperlプログラムを使っ...
wget でページを取得するshファイルを作る
runtp.sh: 33605行
wget http://flybase.org/reports/FBtp0000001.html
wget http://flybase.org/reports/FBtp0000002.html
wget http://flybase.org/reports/FBtp0000003.html
...
$ cp runtp.sh ./FBtp
$ cd FBtp
$ sh runtp.sh
1度止まったので、2度に分けて実行(詳細省略)
33604 files
**コンストラクトのファイルから必要な記述を取得、編集 [#n8...
*** FBtpファイルに記述のある「FlyBaseに登録されている系統...
「Stocks Listed in FlyBase」とある表示の下の1行下(改行...
系統数が記述されている~
また、「Stocks」との語はここしかない~
そこで、「Stocks」を含む行ともう1行取得し、「Stocks」を...
$ grep -A 1 Stocks ./FBtp/* | grep -v Stocks | grep -v "...
33654 行
FBtp と 系統数の対応にエディタを使って編集、念のためソー...
tp_num_stocks.txt: 33654 行
LEFT:
,FBtp0000001.html,0
,FBtp0000002.html,0
,FBtp0000003.html,0
,...,
*** コンストラクトの説明を取り出す [#z0471232]
FBtp*******.html ファイルの中の記述で、Component Alles の...
Molecular data の内容を取り出す~
因子の説明が書いてあるのはここ~
人間が読むにはこれが適切だと思う~
ひとつのファイルの中に情報がひとつとは限らないので、取り...
まとめる必要がある
Molecular data と書いてある3行下に記述がある
(grep で余分に5行ずつ取って来ている)~
その記述は「[空白]<div class="twocol_c_item_one">」に続く
$ grep -A 4 "Molecular data" ./FBtp/* | grep "twocol_c_i...
FBtp と 系統数の対応にエディタを使って編集、念のためソー...
grep_tp_Molecular_data.txt: 45544 行
LEFT:
,FBtp0000002.html,Construct: 2.1kb SalI-BglII fragment in...
,FBtp0000002.html,Construct: 8.1kb SalI fragment that con...
,FBtp0000003.html,Construct: Included in 2.7kb genomic Ba...
,...,
FBtp*******.html ファイルに2つ以上の Molecular data があ...
htmlのタグを残したままので、ふたつ以上つなげるときには、<...
merge_md.pl
#!perl
open(IFILE, $ARGV[0]);
$num=0;
# 各行をそれぞれ配列に入れる
while(<IFILE>){
chop;
split /[\t]/;
$fbtp[$num] = $_[0];
$moldata[$num] = $_[1];
$num++;
}
$total = $num;
# ひとつ下の行とFBtp*******.htmlが同じならば、ひとつ下の...
# にまとめてしまう
# 上側のFBtp*******.html(の情報) は取る(""を代入する)
# ひとつのファイルにはMolecular dataはたくさんないので、...
# けにする(スピードアップのため)
for($num1=0; $num1<$total; $num1++){
for($num2=($num1+1); $num2<($num1+10); $num2++){
if( !($fbtp[$num1] cmp $fbtp[$num2])){
$moldata[$num2] = $moldata[$num1] . "<br>" . $molda...
$fbtp[$num1] = "";
}
}
}
# FBtp*******.html が書いてあるものだけ出力する
for($num1=0; $num1<$total; $num1++){
if( $fbtp[$num1] cmp "" ){
print $fbtp[$num1];
print "\t";
print $moldata[$num1];
print "\n";
}
}
$ perl merge_md.pl grep_tp_Molecular_data.txt > tp_Molec...
tp_Molecular_data.txt: 32485 行
LEFT:
,FBtp0000002.html,Construct: 2.1kb SalI-BglII fragment in...
,FBtp0000003.html,Construct: 2.7kb BamHI-SalI fragment in...
,FBtp0000004.html,Construct: 7.2kb HindIII fragment that ...
,...,
**データのまとめ [#t4ce9510]
*** 役者が揃ったので、データをひとつにまとめる [#t5632716]
挿入のデータ(FBti)がreferenceにあったものは、Molecular ...
に FBtp (コンストラクト)を得たが、コンストラクトのデー...
あったものはFbti(挿入)を得ていない~
また、名前は、コンストラクトと挿入と両方が参照できるとよい
そこで、grep_ti.txt と grep_ti2tp_uniq.txt から
FBtr[tab]FBtp[tab]Name_tp[tab]FBti[tab]Name_ti
となったファイルを作る
merge_ti_tp.pl
#!perl
open(REFTIFILE, "grep_ti.txt");
open(TI2TPFILE, "grep_ti2tp_uniq.txt");
$num=0;
# 各行をそれぞれ配列に入れる
while(<REFTIFILE>){
chop;
split /[\t]/;
$fbrf[$num] = $_[0];
$fbti[$num] = $_[1];
$nameti[$num] = $_[2];
$num++;
}
$total = $num;
while(<TI2TPFILE>){
chop;
split /[\t]/;
$hashti2tp{$_[0]} = ($_[1] . "\t" . $_[2]);
}
for($num=0; $num<$total; $num++){
print $fbrf[$num];
print "\t";
# FBtp*******.html がないと hash が空白を返すので\t...
# そうしないと、桁がずれてしまう
if( $hashti2tp{$fbti[$num]} ne ''){
print $hashti2tp{$fbti[$num]};
} else {
print "\t";
}
print "\t";
print $fbti[$num];
print "\t";
print $nameti[$num];
print "\n";
}
$ perl merge_ti_tp.pl > merged_ti_tp.txt
merged_ti_tp.txt: 37069 行
LEFT:
,FBrf0037054.html,,,FBti0014771.html, I{}w<sup>IR1</sup>
,FBrf0037612.html,,,FBti0002823.html,3S18{}w<sup>a4</sup>
,FBrf0037612.html,,,FBti0002388.html,copia{}w<sup>a</sup>
,...(中略)...,,,,
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001356.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001357.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001359.htm...
,...,,,,
grep_tp.txt と merged_ti_tp.txtをひとつのファイルにする
$ cat grep_tp.txt merged_ti_tp.txt > ref_tp_ti.txt
ref_tp_ti.txt: 108293 行
LEFT:
,FBrf0038720.html,FBtp0000035.html,P{6.1},,
,FBrf0038720.html,FBtp0000036.html,P{ry1},,
,FBrf0038720.html,FBtp0000037.html,P{ry3},,
,...(中略)...,,,,
,FBrf0037054.html,,,FBti0014771.html,I{}w<sup>IR1</sup>
,FBrf0037612.html,,,FBti0002823.html,3S18{}w<sup>a4</sup>
,FBrf0037612.html,,,FBti0002388.html,copia{}w<sup>a</sup>
,FBrf0037612.html,,,FBti0002387.html,FB{}w<sup>DZL</sup>
,FBrf0037612.html,,,FBti0002389.html,roo{}w<sup>bf</sup>
,FBrf0037612.html,,,FBti0002390.html,roo{}w<sup>sp1</sup>
,FBrf0038659.html,,,FBti0014154.html,HMS-Beagle{}Lcp3<sup...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001356.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001357.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001359.htm...
,...,,,,
このファイルにストックの数、Molecular data を追加する
merge_all.pl
#!perl
open(REFTPTI, "ref_tp_ti.txt");
open(MOLDAT, "tp_Molecular_data.txt");
open(NUMSTOCKS, "tp_num_stocks.txt");
$num=0;
# 各行をそれぞれ配列に入れる
while(<REFTPTI>){
chop;
split /[\t]/;
# データがない場合に備え、初期化しておく
$fbrf[$num] = "";
$fbtp[$num] = "";
$nametp[$num] = "";
$fbti[$num] = "";
$nameti[$num] = "";
$fbrf[$num] = $_[0];
$fbtp[$num] = $_[1];
$nametp[$num] = $_[2];
$fbti[$num] = $_[3];
$nameti[$num] = $_[4];
$num++;
}
$total = $num;
while(<MOLDAT>){
chop;
split /[\t]/;
$hashmoldat{$_[0]} = $_[1];
}
while(<NUMSTOCKS>){
chop;
split /[\t]/;
$hashnumstocks{$_[0]} = $_[1];
}
# 見出し
print "FBrf";
print "\t";
print "FBtp";
print "\t";
print "Name_tp";
print "\t";
print "FBti";
print "\t";
print "Name_ti";
print "\t";
print "Stocks";
print "\t";
print "Molecular_data";
print "\n";
for($num=0; $num<$total; $num++){
print $fbrf[$num];
print "\t";
print $fbtp[$num];
print "\t";
print $nametp[$num];
print "\t";
print $fbti[$num];
print "\t";
print $nameti[$num];
print "\t";
print $hashnumstocks{$fbtp[$num]};
print "\t";
print $hashmoldat{$fbtp[$num]};
print "\n";
}
$ perl merge_all.pl > ref_tp_ti_st_md.txt
ref_tp_ti_st_md.txt: 108293 行(見出し含む)
LEFT:
,FBrf,FBtp,Name_tp,FBti,Name_ti,Stocks,Molecular_data
,FBrf0038720.html,FBtp0000035.html,P{6.1},,,0,
,FBrf0038720.html,FBtp0000036.html,P{ry1},,,1,Construct: ...
,FBrf0038720.html,FBtp0000037.html,P{ry3},,,0,Construct: ...
,FBrf0038720.html,FBtp0000167.html,P{S11.4},,,0,Construct...
,FBrf0038720.html,FBtp0000168.html,P{?25.1},,,0,Fragment...
,FBrf0038720.html,FBtp0000166.html,P{?25.7},,,0,Fragment...
,FBrf0038996.html,FBtp0000169.html,P{?12.20},,,0,Constru...
,FBrf0038996.html,FBtp0000168.html,P{?25.1},,,0,Fragment...
,FBrf0038998.html,FBtp0000217.html,P{Ddc1/4},,,,
,...,,,,,,
(「?」はShift-JISでは文字化けするのでここでは書き替えた)
$ sort ref_tp_ti_st_md.txt > ref_tp_ti_st_md_sorted.txt
ref_tp_ti_st_md_sorted.txt: 108293 行(見出し含む)
LEFT:
,FBrf,FBtp,Name_tp,FBti,Name_ti,Stocks,Molecular_data
,FBrf0037054.html,,,FBti0014771.html,I{}w<sup>IR1</sup>,,
,FBrf0037612.html,,,FBti0002387.html,FB{}w<sup>DZL</sup>,,
,FBrf0037612.html,,,FBti0002388.html,copia{}w<sup>a</sup>,,
,FBrf0037612.html,,,FBti0002389.html,roo{}w<sup>bf</sup>,,
,FBrf0037612.html,,,FBti0002390.html,roo{}w<sup>sp1</sup>,,
,FBrf0037612.html,,,FBti0002823.html,3S18{}w<sup>a4</sup>,,
,FBrf0038659.html,,,FBti0014154.html,HMS-Beagle{}Lcp3<sup...
,FBrf0038720.html,FBtp0000035.html,P{6.1},,,0,
,FBrf0038720.html,FBtp0000036.html,P{ry1},,,1,Construct: ...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0000963.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001356.htm...
,...,,,,,,
一応の完成だが、ファイルが大きくて見づらい……
エクセル2007ならそのまま扱えるので、まいっか
|Today:&counter(today);|Yesterday:&counter(yesterday);|To...
終了行:
2012年9月11日から15日に掛けての作業メモを整理したものです
#contents
* FlyBaseの文献情報を手掛りにしてコンストラクトの記述など...
FlyBaseにある文献の情報のページ(FBrf*******.html)には、
abstract などように文献には当然ある情報に加え、
その論文で使われた遺伝子、allele、コンストラクト、挿入の...
整理され、掲出されています。
そこで、文献にあるコンストラクトや挿入の情報を取得するた...
作業をしたので、記録を残します。
今回は、コンストラクトがどのようなものか、つまり、コンス...
使われた allele がどのようなものかが、業務で必要になり行...
文献情報
↓
コンストラクトや挿入情報
↓
コンストラクトのページから使われた allele 情報を抽出
が基本戦略です。
★ FlyBase の [[precomputed files>http://flybase.org/stati...
かといって、FlyBaseの全情報を取得してデータベースを構築す...
手間が掛かりすぎ。
そこで、htmlファイルとしてデータを取得し、
必要な情報を抽出することにした。
2012年9月22日追記
** 文献情報取得 [#gc0dad87]
*** FlyBaseより fbrf_pmid_fb_2012_05.tsv を取得 [#uf12a8dd]
Files → Current Release からダウンロード~
具体的にはココ:http://flybase.org/static_pages/downloads...
*** FBrfファイル(文献)の取得 [#qae5392b]
fbrf_pmid_fb_2012_05.tsv から 「FBrf******」とあるものを...
runreference_all.sh: 56526 行
wget http://flybase.org/reports/FBrf0003114.html
wget http://flybase.org/reports/FBrf0011208.html
wget http://flybase.org/reports/FBrf0012780.html
...
$ cd FBrf
$ sh runreference_all.sh
2度止まったので、3階に分けて実行(詳細省略)。~
すべてが取得できたわけではないようだ。~
56,495 files~
sh fileでは、56,526 取得のつもりだった。
**コンストラクト、挿入情報の取得 [#d8cd0dba]
*** FBrfファイルから、FBti、FBtpの情報を抽出 [#a9297d10]
- FBti: 挿入の情報
- FBtp: コンストラクトの情報
$ cd ..
$ grep FBti ./FBrf/* > grep_ti.txt
$ grep FBtp ./FBrf/* > grep_tp.txt
FBfr と FBti、因子 の対応にエディタを使って編集する(タブ...
grep_ti.txt: 37069 行
LEFT:
,FBrf0037054.html,FBti0014771.html,I{}w<sup>IR1</sup>
,FBrf0037612.html,FBti0002823.html,3S18{}w<sup>a4</sup>
,FBrf0037612.html,FBti0002388.html,copia{}w<sup>a</sup>
,...,,
grep_tp.txt: 71224 行
LEFT:
,FBrf0038720.html,FBtp0000035.html,P{6.1}
,FBrf0038720.html,FBtp0000036.html,P{ry1}
,FBrf0038720.html,FBtp0000037.html,P{ry3}
,...,,
*** FBtiファイル(挿入)の取得 [#r9802807]
FBti を取得するために、grep_ti.txt を加工し .sh ファイル...
FBti*******.html が取得できていないものがあるので、少なく...
runti_temp.sh: 37055行
wget http://flybase.org/reports/FBti0014771.html
wget http://flybase.org/reports/FBti0002823.html
wget http://flybase.org/reports/FBti0002388.html
...
複数の文献で同一の挿入が扱われることがある~
FBtiファイルはひとつ取得すればよい~
そこで、重複を除く~
shファイルを作る前のFBtiファイル名から重複を除いてももち...
(作業手順はほとんど同じ)
unique.pl
#!perl
open(IFILE, $ARGV[0]);
@myline = <IFILE>;
# http://ameblo.jp/debugme/entry-10505621785.html
my %hash = map { $_, 1 } @myline;
my @unique = keys %hash;
print @unique;
$ perl unique.pl runti_temp.sh > runti.sh
runti.sh: 20373 行
wget http://flybase.org/reports/FBti0003892.html
wget http://flybase.org/reports/FBti0014868.html
wget http://flybase.org/reports/FBti0114075.html
...
$ cp runti.sh ./FBti
$ cd FBti
$ sh runti.sh
ファイル数: 20373
$ cd ..
$ grep FBtp ./FBti/* | grep -v ".png" > grep_ti2tp.txt
FBti と 因子 の対応にエディタを使って編集する
grepが複数拾って来たので、重複を除く
$ perl unique.pl grep_ti2tp.txt > grep_ti2tp_uniq.txt
ソートしてFBtiの順にしておく
grep_ti2tp_uniq.txt: 18869行
LEFT:
,FBti0000040.html,FBtp0000078.html,P{hsneo}
,FBti0000046.html,FBtp0000078.html,P{hsneo}
,FBti0000124.html,FBtp0000242.html,P{?2-3} ← デルタが文...
,...,,
*** FBtpファイル(コンストラクト)の取得 [#ica8b31c]
grep_ti2tp_uniq.txt と grep_tp.txt から
FBtp*******.html
だけを抜き出し、重複を取り除き(上のperlプログラムを使っ...
wget でページを取得するshファイルを作る
runtp.sh: 33605行
wget http://flybase.org/reports/FBtp0000001.html
wget http://flybase.org/reports/FBtp0000002.html
wget http://flybase.org/reports/FBtp0000003.html
...
$ cp runtp.sh ./FBtp
$ cd FBtp
$ sh runtp.sh
1度止まったので、2度に分けて実行(詳細省略)
33604 files
**コンストラクトのファイルから必要な記述を取得、編集 [#n8...
*** FBtpファイルに記述のある「FlyBaseに登録されている系統...
「Stocks Listed in FlyBase」とある表示の下の1行下(改行...
系統数が記述されている~
また、「Stocks」との語はここしかない~
そこで、「Stocks」を含む行ともう1行取得し、「Stocks」を...
$ grep -A 1 Stocks ./FBtp/* | grep -v Stocks | grep -v "...
33654 行
FBtp と 系統数の対応にエディタを使って編集、念のためソー...
tp_num_stocks.txt: 33654 行
LEFT:
,FBtp0000001.html,0
,FBtp0000002.html,0
,FBtp0000003.html,0
,...,
*** コンストラクトの説明を取り出す [#z0471232]
FBtp*******.html ファイルの中の記述で、Component Alles の...
Molecular data の内容を取り出す~
因子の説明が書いてあるのはここ~
人間が読むにはこれが適切だと思う~
ひとつのファイルの中に情報がひとつとは限らないので、取り...
まとめる必要がある
Molecular data と書いてある3行下に記述がある
(grep で余分に5行ずつ取って来ている)~
その記述は「[空白]<div class="twocol_c_item_one">」に続く
$ grep -A 4 "Molecular data" ./FBtp/* | grep "twocol_c_i...
FBtp と 系統数の対応にエディタを使って編集、念のためソー...
grep_tp_Molecular_data.txt: 45544 行
LEFT:
,FBtp0000002.html,Construct: 2.1kb SalI-BglII fragment in...
,FBtp0000002.html,Construct: 8.1kb SalI fragment that con...
,FBtp0000003.html,Construct: Included in 2.7kb genomic Ba...
,...,
FBtp*******.html ファイルに2つ以上の Molecular data があ...
htmlのタグを残したままので、ふたつ以上つなげるときには、<...
merge_md.pl
#!perl
open(IFILE, $ARGV[0]);
$num=0;
# 各行をそれぞれ配列に入れる
while(<IFILE>){
chop;
split /[\t]/;
$fbtp[$num] = $_[0];
$moldata[$num] = $_[1];
$num++;
}
$total = $num;
# ひとつ下の行とFBtp*******.htmlが同じならば、ひとつ下の...
# にまとめてしまう
# 上側のFBtp*******.html(の情報) は取る(""を代入する)
# ひとつのファイルにはMolecular dataはたくさんないので、...
# けにする(スピードアップのため)
for($num1=0; $num1<$total; $num1++){
for($num2=($num1+1); $num2<($num1+10); $num2++){
if( !($fbtp[$num1] cmp $fbtp[$num2])){
$moldata[$num2] = $moldata[$num1] . "<br>" . $molda...
$fbtp[$num1] = "";
}
}
}
# FBtp*******.html が書いてあるものだけ出力する
for($num1=0; $num1<$total; $num1++){
if( $fbtp[$num1] cmp "" ){
print $fbtp[$num1];
print "\t";
print $moldata[$num1];
print "\n";
}
}
$ perl merge_md.pl grep_tp_Molecular_data.txt > tp_Molec...
tp_Molecular_data.txt: 32485 行
LEFT:
,FBtp0000002.html,Construct: 2.1kb SalI-BglII fragment in...
,FBtp0000003.html,Construct: 2.7kb BamHI-SalI fragment in...
,FBtp0000004.html,Construct: 7.2kb HindIII fragment that ...
,...,
**データのまとめ [#t4ce9510]
*** 役者が揃ったので、データをひとつにまとめる [#t5632716]
挿入のデータ(FBti)がreferenceにあったものは、Molecular ...
に FBtp (コンストラクト)を得たが、コンストラクトのデー...
あったものはFbti(挿入)を得ていない~
また、名前は、コンストラクトと挿入と両方が参照できるとよい
そこで、grep_ti.txt と grep_ti2tp_uniq.txt から
FBtr[tab]FBtp[tab]Name_tp[tab]FBti[tab]Name_ti
となったファイルを作る
merge_ti_tp.pl
#!perl
open(REFTIFILE, "grep_ti.txt");
open(TI2TPFILE, "grep_ti2tp_uniq.txt");
$num=0;
# 各行をそれぞれ配列に入れる
while(<REFTIFILE>){
chop;
split /[\t]/;
$fbrf[$num] = $_[0];
$fbti[$num] = $_[1];
$nameti[$num] = $_[2];
$num++;
}
$total = $num;
while(<TI2TPFILE>){
chop;
split /[\t]/;
$hashti2tp{$_[0]} = ($_[1] . "\t" . $_[2]);
}
for($num=0; $num<$total; $num++){
print $fbrf[$num];
print "\t";
# FBtp*******.html がないと hash が空白を返すので\t...
# そうしないと、桁がずれてしまう
if( $hashti2tp{$fbti[$num]} ne ''){
print $hashti2tp{$fbti[$num]};
} else {
print "\t";
}
print "\t";
print $fbti[$num];
print "\t";
print $nameti[$num];
print "\n";
}
$ perl merge_ti_tp.pl > merged_ti_tp.txt
merged_ti_tp.txt: 37069 行
LEFT:
,FBrf0037054.html,,,FBti0014771.html, I{}w<sup>IR1</sup>
,FBrf0037612.html,,,FBti0002823.html,3S18{}w<sup>a4</sup>
,FBrf0037612.html,,,FBti0002388.html,copia{}w<sup>a</sup>
,...(中略)...,,,,
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001356.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001357.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001359.htm...
,...,,,,
grep_tp.txt と merged_ti_tp.txtをひとつのファイルにする
$ cat grep_tp.txt merged_ti_tp.txt > ref_tp_ti.txt
ref_tp_ti.txt: 108293 行
LEFT:
,FBrf0038720.html,FBtp0000035.html,P{6.1},,
,FBrf0038720.html,FBtp0000036.html,P{ry1},,
,FBrf0038720.html,FBtp0000037.html,P{ry3},,
,...(中略)...,,,,
,FBrf0037054.html,,,FBti0014771.html,I{}w<sup>IR1</sup>
,FBrf0037612.html,,,FBti0002823.html,3S18{}w<sup>a4</sup>
,FBrf0037612.html,,,FBti0002388.html,copia{}w<sup>a</sup>
,FBrf0037612.html,,,FBti0002387.html,FB{}w<sup>DZL</sup>
,FBrf0037612.html,,,FBti0002389.html,roo{}w<sup>bf</sup>
,FBrf0037612.html,,,FBti0002390.html,roo{}w<sup>sp1</sup>
,FBrf0038659.html,,,FBti0014154.html,HMS-Beagle{}Lcp3<sup...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001356.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001357.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001359.htm...
,...,,,,
このファイルにストックの数、Molecular data を追加する
merge_all.pl
#!perl
open(REFTPTI, "ref_tp_ti.txt");
open(MOLDAT, "tp_Molecular_data.txt");
open(NUMSTOCKS, "tp_num_stocks.txt");
$num=0;
# 各行をそれぞれ配列に入れる
while(<REFTPTI>){
chop;
split /[\t]/;
# データがない場合に備え、初期化しておく
$fbrf[$num] = "";
$fbtp[$num] = "";
$nametp[$num] = "";
$fbti[$num] = "";
$nameti[$num] = "";
$fbrf[$num] = $_[0];
$fbtp[$num] = $_[1];
$nametp[$num] = $_[2];
$fbti[$num] = $_[3];
$nameti[$num] = $_[4];
$num++;
}
$total = $num;
while(<MOLDAT>){
chop;
split /[\t]/;
$hashmoldat{$_[0]} = $_[1];
}
while(<NUMSTOCKS>){
chop;
split /[\t]/;
$hashnumstocks{$_[0]} = $_[1];
}
# 見出し
print "FBrf";
print "\t";
print "FBtp";
print "\t";
print "Name_tp";
print "\t";
print "FBti";
print "\t";
print "Name_ti";
print "\t";
print "Stocks";
print "\t";
print "Molecular_data";
print "\n";
for($num=0; $num<$total; $num++){
print $fbrf[$num];
print "\t";
print $fbtp[$num];
print "\t";
print $nametp[$num];
print "\t";
print $fbti[$num];
print "\t";
print $nameti[$num];
print "\t";
print $hashnumstocks{$fbtp[$num]};
print "\t";
print $hashmoldat{$fbtp[$num]};
print "\n";
}
$ perl merge_all.pl > ref_tp_ti_st_md.txt
ref_tp_ti_st_md.txt: 108293 行(見出し含む)
LEFT:
,FBrf,FBtp,Name_tp,FBti,Name_ti,Stocks,Molecular_data
,FBrf0038720.html,FBtp0000035.html,P{6.1},,,0,
,FBrf0038720.html,FBtp0000036.html,P{ry1},,,1,Construct: ...
,FBrf0038720.html,FBtp0000037.html,P{ry3},,,0,Construct: ...
,FBrf0038720.html,FBtp0000167.html,P{S11.4},,,0,Construct...
,FBrf0038720.html,FBtp0000168.html,P{?25.1},,,0,Fragment...
,FBrf0038720.html,FBtp0000166.html,P{?25.7},,,0,Fragment...
,FBrf0038996.html,FBtp0000169.html,P{?12.20},,,0,Constru...
,FBrf0038996.html,FBtp0000168.html,P{?25.1},,,0,Fragment...
,FBrf0038998.html,FBtp0000217.html,P{Ddc1/4},,,,
,...,,,,,,
(「?」はShift-JISでは文字化けするのでここでは書き替えた)
$ sort ref_tp_ti_st_md.txt > ref_tp_ti_st_md_sorted.txt
ref_tp_ti_st_md_sorted.txt: 108293 行(見出し含む)
LEFT:
,FBrf,FBtp,Name_tp,FBti,Name_ti,Stocks,Molecular_data
,FBrf0037054.html,,,FBti0014771.html,I{}w<sup>IR1</sup>,,
,FBrf0037612.html,,,FBti0002387.html,FB{}w<sup>DZL</sup>,,
,FBrf0037612.html,,,FBti0002388.html,copia{}w<sup>a</sup>,,
,FBrf0037612.html,,,FBti0002389.html,roo{}w<sup>bf</sup>,,
,FBrf0037612.html,,,FBti0002390.html,roo{}w<sup>sp1</sup>,,
,FBrf0037612.html,,,FBti0002823.html,3S18{}w<sup>a4</sup>,,
,FBrf0038659.html,,,FBti0014154.html,HMS-Beagle{}Lcp3<sup...
,FBrf0038720.html,FBtp0000035.html,P{6.1},,,0,
,FBrf0038720.html,FBtp0000036.html,P{ry1},,,1,Construct: ...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0000963.htm...
,FBrf0038720.html,FBtp0000036.html,P{ry1},FBti0001356.htm...
,...,,,,,,
一応の完成だが、ファイルが大きくて見づらい……
エクセル2007ならそのまま扱えるので、まいっか
|Today:&counter(today);|Yesterday:&counter(yesterday);|To...
ページ名: