DDBJ data Overviewer

Look at the values in each field of DDBJ =W-DDBJ データを把握できるようにする= KAZUO HARA

現状と問題点
一億枚を超える集合からの探し物には　多くの場合　複数の制約条件の組み合わせが必要ですがそれぞれの要素条件の有効性を確認するすべがありません
 * ARSA http://arsa.ddbj.nig.ac.jp/html/QuickSearchや「DDBJ データベース 総覧と検索」http://lifesciencedb.jp/ddbj/ により，パターンマッチと「生物群区分」「研究の型別分類」で絞込みで検索ができます.
 * 確認は例示とともに集計が必要だと思います.
 * 現在あるパターンを持った配列票集合を得て　それを集計する　ことができません
 * 探し主の意図を精度感度ともに間違いなく反映するパターンがわかりません
 * まずコマンドラインでOga-parsed w-DDBJを誰でも分析できるようにしませんか？

DISTANT GOAL
キーワード検索の結果を，ユーザがブレークダウンしやすくする．すなわち，検索結果を細分化してグループ表示しておき，さらに，各々のグループ表示をクリックすると，そのグループをさらに細分化して表示できるようにする． これを「on the fly」で行う．

検索結果のクラスタリングを行う既存の試み
http://www.websearchguide.ca/research/metalist.htm

http://www.refseek.com/directory/search_engines.html

=その前に，まず，DDBJ_parsed データの特徴を調べる= MATERIAL= /home/o0gasawa/data/DDBJ_parsed/parsed/ddbj.88

登録データ数（accession 番号の数）
実行方法: qsub -cwd num_accession.sh

ただし，この方法だと約7時間かかる．数分程度で実行できる方法（細かく qsub 投入する方法）もある．

結果: num_accession.txt 152763467

スクリプト num_accession.sh:

フィールドの種類と出現回数
実行方法（at fieldcount ディレクトリ）: for file in `ls $OGAD`; do  qsub -cwd fieldcount.sh $file done qsub -cwd total_fieldcount.rb

結果: total_fieldcount.txt

https://docs.google.com/spreadsheet/ccc?key=0ArLKE-W2VTcgdHRxeHlma24zTklGYmRueTVsd014eGc

スクリプト fieldcount.sh: OGAD=/home/o0gasawa/data/DDBJ_parsed/parsed/ddbj.88 cat $OGAD/$1 | cut -f2 | sort | uniq -c > fieldcount_result/$1
 * 1) $ -S /bin/bash

スクリプト total_fieldcount.rb: fieldcount = Hash.new(0) Dir.glob("fieldcount_result/*").each do |file| File.open(file, "r").each_line do |line| a = line.chomp.split(" ") fieldcount[a[1]] += a[0].to_i end end out = File.open("total_fieldcount.txt", "w") fieldcount.to_a.sort{|a, b| a[0]<=>b[0]}.each do |x| out.print x.join("\t"), "\n" end
 * 1) $ -S /usr/local/pkg/ruby/1.8.7-p352/bin/ruby

フィールドペアの共起出現回数
実行方法（at accession ディレクトリ）: for file in `ls $OGAD`; do  qsub -cwd accession.rb $file done for file in `ls $OGAD`; do  qsub -cwd fieldpaircount.rb $file done qsub -cwd total_fieldpair.rb

結果: total_fieldpair.txt

https://docs.google.com/spreadsheet/ccc?key=0ArLKE-W2VTcgdHZKdFN5R1FHcUtGTUxXeHYybnhKZ2c

division(hum, est, gss等)と，accession数，および，平均 basecount との関係
実行方法（at accession ディレクトリ）: OGAD=/home/o0gasawa/data/DDBJ_parsed/parsed/ddbj.88 ls $OGAD | ruby datadivision.rb > datadivision.txt qsub -cwd basecount.rb

結果: basecount.txt

https://docs.google.com/spreadsheet/ccc?key=0ArLKE-W2VTcgdDJDUi1wOGg1QmN1am1BWURPanJzREE

スクリプト datadivision.rb: types = [] STDIN.each_line do |line| line.chomp =~ /ddbj([a-z]+)/ types << $1 end print types.sort.uniq.join("\n"), "\n"

スクリプト basecount.rb: types = [] File.open("datadivision.txt", "r").each_line do |line| types << line.chomp end type_totalbase = Hash.new(0) type_num_accession = Hash.new(0) Dir.glob("accession_result/*").each do |file| file =~ /accession_result\/ddbj([a-z]+)/ type = $1 File.open(file, "r").each_line do |line| a = line.chomp.split(" ") type_num_accession[type] += 1 type_totalbase[type] += a[1].to_i end end out = File.open("basecount.txt", "w") types.each do |type| out.print [type, type_num_accession[type], type_totalbase[type].to_f / type_num_accession[type].to_f].join("\t"), "\n" end
 * 1) $ -S /usr/local/pkg/ruby/1.8.7-p352/bin/ruby

フィールドの種類と出現回数：division(hum, est, gss等)による細分化
実行方法（at fieldcount ディレクトリ）: qsub -cwd division_fieldcount.rb

結果: division_fieldcount.txt

https://docs.google.com/spreadsheet/ccc?key=0ArLKE-W2VTcgdFdyS1ZHRzZOeGFwX1RzYV9MRUZkQVE

フラットファイルあたりの Feature/Qualifier 出現頻度分布
実行方法（at FeatureQual ディレクトリ @kahara）: qsub -cwd -l month -l medium -l s_vmem=400G,mem_req=400G mk_table_lists.rb

実行時間は約3日間

結果:

http://133.39.115.67/~kazuo-h/DDBJ_parsed/table.html

新しいバージョン http://133.39.115.67/~kazuo-h/DDBJ_parsed/FeatureQualMax/table.html

Feed back from Jun Mashima
今回は「valueless qualifier が複数回使用されている」といった不自然さもありませんでした. また、DDBJ のツールに関しては、登録時の制限がわかっていますので、「正解」として DDBJ の結果を評価することができますが、その点でも矛盾はありませんでした.

また、意味的に不自然と感じた結果も実際のデータが不自然であるようです. 例えば、chromosome が複数記載されているのは GenBank の１件のみですが、これは非常に不自然です. 何らかの間違いが GenBank 側で起きているようです. http://133.39.115.67/~kazuo-h/DDBJ_parsed/FeatureQualMax/lists/GenBank/02/source_chromosome.html

少しだけ気になる点がありましたが、結果は概ね正しいはずですので、傾向として知りたかったことを把握することができました.

DDBJ、GenBank、EMBL の３つに絞り、どの qualifier を複数回使用可能と設定しているか、 比較した結果を添付のファイルにまとめています. ３つの bank 間での一致、不一致の傾向が把握できました.

また、DDBJ では仕様上、複数回の記載を許しているにも関わらず、実際には使われていないなどの 結果もあり、興味深いところです. このようなことが、GenBank、EMBL にもあるかもしれません.

もし、再解析が可能ならば、次の点をご検討ください.

・最初に明確にしていなかったのですが、表中の数値は entry 数でしょうか？ この解析では feature 数も把握できますと、更にありがたいです.

・件数の各 link 先に結果の一部と実データのリンクをいただいていますが、先頭を抜き出しているでしょうか？ division が偏り、アクセッションが連続したデータが抽出される傾向のため、多数検出されたケースで 実体を把握するには、再検索が必要となります. もし、実データの代表を ランダム抽出にしたならば、更に良いと思います.

いくつか代表的なデータを見ていて１つ気になった点ですが、フラットファイルを要素毎に １行にしていく過程で qualifier を誤検出しているらしいケースを発見しました.

下記などに見られますが、 http://getentry.ddbj.nig.ac.jp/getentry/na/AC068294

-   misc_feature    complement(15224..15958) /note="Region similar to Mus musculus 18 days embryo cDNA,                   RIKEN full-length enriched library, clone:1110025O06, full                    insert sequence /cds=(51,497) /gb=AK003926 /gi=12834884                    /ug=Mm.142095 /len=742" -

といった、qualifier に類似した /note の値を qualifier と扱ってしまうようです. 「/cds=」「/gb=」なども qualifier として抽出していました. この例では qualifier は /note のみになります.

double quote で囲まれる構造、indent なども parse すべきかもしれません. ただ、value を double quote 囲まない qualifier もありますので、難しいでしょうか？

もし、何らかの改善が可能であれば、お願いいたします.