文献データから,SRAやGEOのアクセッションデータを抽出する.

今年最後の勤務ということでまとめ

 PubMed*1PubMed Central*2などの文献データベースから,SRA*3やGEO*4などの実験データなどを保存した別のデータベースとの関連情報を抽出することを中心に活動しました.#細々と枝分かれな作業はやっていましたが...大枠をまとめます.

少しふわふわしている動機

  • SRAは次世代シーケンサデータを対象としたデータベースです.次世代シーケンサデータが公開され始めた当初は,GEOにとりあえず登録されていっていました.後にSRAが作られて,GEOに登録されていた次世代シーケンサデータは徐々にSRAに移されていっています.SRAへ移されたGEOのデータを見ると,移動先のアクセッション番号が確認出来ますが,論文投稿時にGEOのアクセッション番号が割り当てられてそれを登録し,後にSRAへ移動されると,...ややこしいです.
  • 論文投稿時に,解析データのデータベースでの公開が間に合わなかったなどで,文献データベースから文献を見るだけでは,解析データへのアクセス方法が分からないことがあります(検索すれば良いですが..).
  • 加えて,データを初めに解析した論文でない論文(そのデータを使用して解析した,など)は,文献を読まないとその事実が分かりません.
  • PubMedには,解析データのデータベースのアクセッションデータを記録するタグがありますが,PubMed Centralにはありません.

 このように,文献データと解析データとの引用が十分でないことがあります.

作業の流れ

上記の点をふまえ,以下の方法で,SRAに関する文献データからSRAデータへのアノテーション情報を作成してみました.

1. Web上で公開されている文献リスト(html形式)を取得
 今回は,illumina社の文献リスト*5,Rocheの454 Life Sciencesのシーケンサの文献リスト*6 ,Applied Biosystems社の文献リスト*7の3社の文献リストをSRAに関する文献データとして使用しました.
2. PudMedのURLのみ抜き出す
3. URLから,PudMedに登録されているアクセッション番号を抜き出す
4. IDを使って,EFetch経由でアブスト(XML形式)データ取得
 PubMedや,PubMed Centralのデータを機械的に取得するのは,Entrez Programming Utilities*8で用意されている,EFetchやESearchを使うのが便利です.
5. アブストからPudMed Centralのアクセッション番号を(あれば)抜き出す
6. IDを使って,EFetch経由で本文(XML形式)データ取得
7. 本文から,他DBのアクセッション番号(SRA)を抜き出す
 ここまでで,PudMedIDとPudMed CentralIDとSRAのアクセッション番号が得られました.
 しかし,途中で,xml形式の本文データが取得できなかった文献がある(しかも多い...)ことが分かりました.(#アブストや著者情報などのxmlデータは取得出来ます.本文データは取得出来ません.ブラウザ経由で見る分には本文が読むことができます)多くは,ジャーナルに掲載されているor掲載予定のため,xml形式で本文を取得出来ないようにしているようです.
8. xmlで本文が取得できなかった文献が、どの雑誌が多いのかを見てみた.
 取得できたxmlデータに雑誌名や掲載号,ページがあったので,これを使うことにしました.
 下記は,roche 454の文献データのうち,xmlで本文が取得出来なかった文献の雑誌名とその件数です.

雑誌名
Proceedings of the National Academy of Sciences of the United States of America 47
Genome Research 39
Applied and Environmental Microbiology 18
Journal of Bacteriology 13
Journal of Virology 11
Nature 9

 多いので以下略.

9. 雑誌名や掲載号,ページから直接URLを叩いて本文データを取得する&他DBのアクセッション番号(SRA)を抜き出す
 PNASとGenome Researchが多そうだったので,本文データのページのURLを見て,xmlデータのデータを組み合わせて叩きました.
 ここまでで,PudMedIDとPudMed CentralIDとSRAのアクセッション番号が得られました.

以上の作業の結果は...

theclaさん*9がまとめていらっしゃる、SRAs:Survey of Read Archives*10という次世代シーケンサデータを対象としたデータベースの、ホームの一番下にある『Search by publications - 文献から探す』から参照できます.

pdf文書をjavaで扱う.

今やっていることの詳細は..
http://d.hatena.ne.jp/i_87/20101003/1286327328
にまとめて書いてくださっていますのでご覧下さい...

前回は、EFetch経由でpubmed centralの本文情報を取ろうとして取れない...という問題に悩んで(?)いました.
ここを掘り下げていく戦略は若干微妙ですが..やれるならやってみようということで、xmlのなかに、本文のpdf名(パスではない)があるのを利用して,xmlで公開されていない本文はpdf頼みに...そのpdf文書の本文をjavaで扱ってみたいと思います。

xml中のタグ
ファイル名であってパスではないので、使えるかもうちょっと考えてみないと駄目だと思いますが..大量にアクセスすることにならないようにしないといけないとか..

PDF

pdfをjavaで扱うのに、
http://itextpdf.com/
iTextというライブラリが良さそうです.
日本語を扱うには、”日本語フォント”が必要だそうです。
http://allabout.co.jp/gm/gc/80691/
http://itextpdf.sourceforge.net/
上記でダウンロードできるようです。
今回は、英語で書かれた論文を対象にしているので、これはダウンロードなし.

追記:
色々見ていると,生成に特化したライブラリ...なのかな..という印象.
読み込みが出来なくはなさそうですが、ちょっと茨の道っぽいので違う方法を探します.

  • 以下ちょっと見たメモ..MeSHについて

http://www.nlm.nih.gov/mesh/meshhome.html
Obtaining MeSH -> Download
http://www.nlm.nih.gov/mesh/filelist.html
2011 MeSH in XML format
他には、ASCII format,木構造のformat

放牧27日目:this article does not allow downloading...

引き続き,文献データからあれこれ取り出そうということをやっています.
今は,PCR法で用いるプライマーの塩基配列を文献データから取って来ようとしています.
(その後,例えばBLASTにかけて色々したり...を想定)

まずは,目的の塩基配列を抜き出せることを目指します.
そこで文献を見ていったところ,
(5'-[ATGC..]-3')
のような形式で記述されることが(まぁ.. )多そうなことを把握.
(他には細々、'が大文字だったり(本文は英語のくせに..)
スペースが入っていたりします.)

そこで初めはあまり難しく考えず,
(5'-[ATGC..]-3')
文章中からこんな形式の部分を取り出せるようにしました.

pubmedのアクセッション番号を入力にし,
pubmedとpubmedcentral(以下pmc)のアブスト,本文データから抽出することを考えました.
アクセスに,EFetch(http://eutils.ncbi.nlm.nih.gov/)を使います.

テストデータには以前の作業で作成したroche,illumina,abiの文献データ(pubmedのアクセッション番号.そのうち,pubmedのタグにGENBANKのアクセッション番号が登録されているもの)を用意しました.
そこからいくつか,手で上記の配列が含まれているものもチェックして...

いたのですが,(pmcの本文のXMLに)

The publisher of this article does not allow downloading of the full text in XML form.


しかもコメントアウト付き!?
PMCのアクセッション番号があっても,xmlで本文が取れない...場合もあるようです.
ブラウザで見る分には(普通に全文を)見られるし,XMLデータとして返ってくるのが空でなく,著者情報,アブスト付きなので本文がないことにしばらく気付きませんでした...意地悪....

用意したデータがほぼ↑で,XML形式では(むしろ,EFetch経由では、か?)本文は手に入れられなさそうだと思ったところで...今週は座礁
企業の文献データにあるくらいの文献は,雑誌に載ってるってことですね....

放牧19日目:GEOからSRAに再登録されたデータたち

書かねば忘れることを思い知ったので、書きます...orz

・次世代シーケンサでの解析結果は、
世に出てきた当初は専用のDBなどが整備されていなかったので,
GEOに混じって登録されていた.
・現在は,NCBIなら,SRA(Sequence Read Archive)
http://www.ncbi.nlm.nih.gov/sra
が整備され、以前GEOにとりあえず登録されていたものが,再登録しなおされている.
・再登録されたものはSRAのデータの方に,これはGEOのGSExxxのデータですよと何らかの記述がある.(はず)

今日までの作業で,GEOから,次世代シーケンサの結果(だと思われるもの)を抽出してみた.
方法は,
・GEOのデータを全てなぞり,PMIDや,GPL(PL->プラットフォーム)の情報を抜き出す.
・SRAのデータを全てなぞり,データにGEOのアクセッション番号の頭文字+数字を抜き出す.
・上の二つのファイルをGEOの番号で合わせる.
(これで,得たテーブルのGPL情報は次世代シーケンサのものと考えられる)
・得たテーブルにあるGPLと同じ番号を持つGEOのデータを抽出

 ..結果は追記します

放牧12-13日目:GEO,SRAの登録データからPudMedのIDを得る

12日目(6/9)は、GEOのデータからPudMedのIDを抽出した。
具体的には、soft形式のデータを見て、
!Series_geo_accession = xxxx
!Series_pubmed_id = xxxxx
の部分から、GEOのアクセッション番号とPudMedのアクセッション番号を抜いた。
結果は16960個のGEOのデータのうち、
PudMed番号がみつかったものは11744個(無かったのは5216個)
(結局...見つからなかったファイルは、見つからない、でいいのか、データの種類が違う?とか、見れていないので、確認しておきたい。)


13日目(6/16)は、SRAのデータからGEOのアクセッション番号を抽出した。
SRAのXMLファイルから、GEOに関連のありそうな、タグを見つける、アクセッション番号を拾うのが目的。
これは、ベタにファイル内の文字列を上からさらっていった。
(何をしたいのかを書きたいけれど...なんだか、はっきりしないところが出てきてしまったので後日...。)

放牧10-11日目:データ集め

随分、間が空いてしまった...
ここへ書きこむテンションをまだ模索中です...。

現段階?はデータ集めのフェーズで、
作業内容は、文献の本文データからGEOやSRAなどのデータベースへのアクセッション番号(とPubMed,PubMedCentralのID)を抽出してくるというもの。
これまでは、illumina社とRoche 454で紹介されている文献リストを見てきた。

そして、10日目(5/26)、11日目(6/2)は、
Applied Biosystems社の文献リスト
http://www.appliedbiosystems.com/absite/us/en/home/applications-technologies/solid-next-generation-sequencing/publications-literature.html
の文献から、DBIDを見つける作業をした。
この文献リストは、リンク先がアブスト又は本文で統一はされておらず、リンク先もillumina社とRoche 454のようにPubMed一色ではなく、多くが各論文誌サイトの該当ページへのリンクだったので、まずはベタにリンク先を眺めていった。

▼そして眺めて得た、(わりとどうでもいい)情報
アブストのURLと本文のURLの違い #順番は適当です。

論文誌,DB名アブスト→本文
The NEW ENGRAND JOURNAL of MEDICINEabstractをfullに
Nature Protocolsabsをfullに
nature methodsabsをfullに
Science最後に.fullをつける
nature geneticsabsをfullに
Nucleic Acids Research OXFORD JOURNALSabstructをfullに
Journal of Experimental Botany OXFORD JOURNALSabstructをfullに
そもそも文献数が少なかったので、これを使うことなく、
本文ページのURLだけを見ることにして、DBIDを探した。


次に、PudMedのXMLタグには

xxxx # DB名
xxxx #アクセッション番号


がある。
これまでは(アブストの文章、本文込みでこのタグ内も見ていたが)SRAとGEOの番号しか取っていなかった。
そこで、このタグで表記されているDB名とアクセッション番号を全て抽出してみるということになった。
illumina社、Roche 454、Applied Biosystems社の文献リストに対し行った。(Applied Biosystems社の文献リストは、上記のようにPudMedのものではないが多くがPudMedへのリンク先も表記していたため&検索して、さらった。)

▼結果は、全部合わせて、170文献中、DBが4種、アクセッション番号は22410個見つかった。
DB4種は、GDBGENBANK、GEO、RefSeq。
DBごとのアクセッション番号の内訳は

GDBGENBANKGEORefSeq
14222927826
(単位は個数.文献、アクセッション番号に重複はない)
のようだった。