放牧9日目:まだまだ使ってみる...

今日は、Rocheの454 Life Sciencesが開発しているシーケンサで解析した結果を扱う論文からDBIDを抽出する作業をした.
http://454.com/publications-and-resources/all-publications.asp
から、PudMedのアクセッション番号を探し,PudMedCentalを引いて他DBのアクセッション番号を取ってくる。


これだけなら前回までと全く同じなので何の苦労もなく、さっさとデータを揃えられたはずが...途中で動かなくなってしまったり...


454のシーケンサを使いましたよと↑に公開されているPudMedのアクセッション番号は707件分あった。加えてこの行程ではPudMedCentralへもアクセスする。(707件中、いくつかはアクセッション番号ではない、ただの数字列を取ってきてしまっているとしても、707回アクセスすることには変わりない。そして、EFetchのお世話になる回数は、PMCIDが毎件必ず見つかるわけではないので単純に707x2回ではないとしても......)
EFetchの注意書きには、
100件以上のリクエストは空いてそうな時にやってくれ、
1秒間に3リクエスト以上しないでくれ、
とあり、これにひっかかってしまったのか、大体150件目くらいで途中でプログラムが停止してしまう。
(今思えば...本当にそうなんだろうか...?もしやPCの問題...?)
ので、100件ごとに5秒sleepすると無事動いた。


わーいできたハイおしまい、では芸がないなと思い...
家に帰ってちょっと作業&調べてみたこと。
707件分からは、187個のDBIDが抽出できた。
707件のうち、何らかのDBIDを記載したものは82件だった。
そのDBIDのうち、頭文字の分布は以下の通りになった。
(PMIDとDBIDの頭文字のuniqをとった。番号を連番で記載している場合もあり、187個の各DBIDの頭文字をとった単純な合計数よりも、純粋に、ある論文が取得して記載したDBIDの頭文字の種類を調べるほうが比較するには妥当なのではと考えたため(本当は頭文字でなくてDBの種類が良かったが..))
まぁ...気休め程度に...Rって便利ですね。

ERA ERR SRR SRS SRX GPL SRP GSM SRA GSE
1 1 2 2 5 6 6 9 25 45 102
DBIDの種類ってなんだっけ...と調べると近いところに発見。
http://motdb.dbcls.jp/?AJACS12%2Ftheclaを参考にしつつ...
・ERA..EBI。次世代シーケンサのデータのIDの頭
・SRA..NCBI。次世代シーケンサのデータのIDの頭
GPL,GSM,GSEはGEOデータベースのIDで、データを何区切りで見るかでIDが別らしい(プラットフォームごと、サンプルごと、など)
ERR,SRR,SRS,SRX,SRPは...調べ中。
GPL,GSM,GSEは、同じデータでもそれぞれ発行されて...いたりするのか...?これも随時調べよう...?と、まぁ、...よくわかっていない。(以前習った気がするので資料を見つけてまとめます。)
現段階での感覚としては、
宣伝のページに載っている論文の1割にしか使われたデータに行き着く方法(ID)がないということになるのだがそれは...ありなのか...?
が一番大きい。
論文とDBの公開時期については色々考えや作戦やしがらみがあるらしく、論文を登録するときにDBの番号が取得出来ているわけではない、といえど、論文を見てどのデータを使ったんだろう?と思ったときに、データを辿る術がないということではないのか?
それとも、知らない方法があるのか?
それとも、多くは使われてるデータなんてどうでもいいのか?
分からないが...そういうものなのだろうか?
(上のテーブルは...何か思えるほど知識があるわけではなかった...GPL,GSM,GSEは同じデータにそれぞれ発行されているような予感がするので一概に多いからどうだとも言えそうにない)
まぁもう一つの結論としては、芸がないものはなかったなということか...orz


事のついでに、DBIDの周辺文字も出力するようにしてみた。
眺めてみると、割と本文に
 [SRRxxxxxx] to [SRRxxxxxx]
といった番号が連番であるのを省略した表記がされているようだった。
今は、この前と後のSRRxxxxxxをピンポイントで取っているだけなのでこのさき変更していくことに...なるはず...


しかし、他DBのアクセッション番号を取るだけ(この作業)では、本筋には合わないはずで、次は他DBからPudMedのアブストに行き着けるかを調べることができるようにするんだろうなと思っている...が、それは次回...?


そしてアクセッション番号だのIDだの表記がまちまちでごめんなさい...

追記
・ERA..EMBL
・SRA..NCBI
GPL,GSM,GSE..GEO
・SRP,SRX,SRS,SRR...DDBJ

放牧:7,8日目 使ってみる

ズルズル書かなくなっちゃいそうなので、とりあえずやったことだけは...

7日目:これまで作ったものを使ってみる
(これまで作ったもの↓
pubmedのID(以降PMID)があれば、
EFetch経由で論文のアブストデータをとってくる.
アブストデータからPubMedCentralのID(以降PMCID)があれば抽出する.
アブストデータから他のDBのID (実験のデータを保存しているDBなど)(以降DBID)をPubMedCentralのIDがあれば、EFetch経由で論文の本文データをとる.
本文内でDBIDらしきものがあれば抽出する.)
PMID\tPMCID\tDBID
のフォーマットで出力.

上記の処理を、用意されたPMIDリストを用いて、答え合わせかつ動作確認.

8日目:これまで作ったものを使ってみる
今度は、実験データのDBの本文データ?からPMIDを抽出したものを
用意してくださっていたので、(詳細は把握していない)
前回と同じように、PMIDからPMCID,DBIDを得る作業を行った.

これまでは、
[ 文献DB ]→[ 実験DBID ]
でPMID,PMCID,DBIDのセットを得ていたのに対し、 今回は
[ 実験DB ]→[ PMID ]
の流れで、PMID,(PMCID),DBIDセットを用意している.
最終的にどちらもPMID,(PMCID),DBIDのセットが得られているが、
実験DBに実験データを登録するときに、文献DBのIDを知っているとは限らないし、文献DBに文献データを登録するときに、実験DBのIDを知っているとは限らないから、どちらのセットも同じであるとは限らない。

事実、[ 実験DB ]→[ PMID ]で得られた267個のデータに対し、
(実験データはDRA/ERA/SRAの..次世代シーケンサの結果..?のみ
249種類、文献データは202種類)
そのPMID、202件分を用いて[ 文献DB ]→[ 実験DBID ]で得られるデータは41個で、
(*アクセッション番号がDRA/ERA/SRAで始まるもののみ出力している)
[ 実験DB ]→[ PMID ]で得られた267個のデータとマージしてPMIDとDBIDが同じになるものは26個だった.
(メモ:idは全てSt)
([ 文献DB ]→[ 実験DBID ]で得られるデータ41個が若干怪しい気がする...)
ここまでミスや勘違いがないとすると、
つまり、PMID,(PMCID),DBID,267セットのうち、文献で使われているデータのDBIDをひくことができ、かつ、実験DBのデータだけを見たとき、そのデータについての文献データをひくことができる関係を持つのは、26セットだったということになる.

ただ、文献データの中でのDBIDの記述方法に連番のDBIDに対して
DRAxxxx1-xxxx20と書いているケースがあったりして、
そういうのは取れていないので、対応予定...?

...なんだかどこかが間違ってそう(特に最後)なので、
確認して追記します。

放牧6日目:今まで作ったものを組み合わせる

1.Web上で公開されている文献リスト(html形式)を取得
2.PudMedのURLのみ抜き出す
3.URLから,PudMedに登録されている文献のアブストのIDを抜き出す
4.IDを使って,EFetch経由でアブスト(XML形式)取得
5.アブストからPudMedCentralのIDを(あれば)抜き出す
6.IDを使って,EFetch経由で本文(XML形式)取得
7.本文から,他DBのID(特にシーケンスデータのID)を抜き出す
8.PudMedIDとPudMedCentralIDと他DBのIDが得られた


せっかくこの場所にいる権利をいただいているので
何かアイディアを出したいなぁとぐるぐる考えるも...
うーん...

放牧5日目:XMLを扱うライブラリと、PMCのデータからDBのIDを抽出する

(先週の続き)
JAVAXMLを扱うライブラリを使って,
目的のタグのデータを取ってくるための準備をした.
ライブラリを探したところ,
・DOM
・SAX
XPath
を使う方法が見つかった.
DOMとSAXはAPIXPathは構文らしいので,
こうして並べて挙げるのは間違っている気がするが,
考え方というニュアンスで...。(?なんか違うな...)
他にもあるのかもしれないが,とりあえず3例.

DOMで実装した.
しかし,後になってXPathを扱うライブラリの方が
コードは簡潔になったようだと知る.orz

これまでの作業の流れ
NCBIのESearch,EFetchを使って,PubMedに集積されている文献データを取得
↓文献データ(XML形式)から,目的のタグのデータを抽出
(PudMedCentralのIDも抽出している)
↓pmcidを使い,PubMedCentralに集積されている,文献データを取得.
↓次に,この文献データから,文献で扱われた塩基配列などの
実験結果を保存,登録している他のDBのIDを抽出した.
(今のところ,ここまで)

放牧4日目:XMLから欲しいデータを抜き出す

今日は,前回EFetchから取ってきたXMLデータから
特定のデータを抽出した.
・EFetchから落としたXMLデータのタグの種類,意味の把握.
・ファイルを読み込み,タグを拾い,データ抽出.

今回の実装では,文字列をべたっと読んで,目的のタグか,
調べるというだけのものだったので,
来週は,XPathの仕様を見ながら実際に使ってごにょごにょする予定.