[BioRuby-ja] PDB (Re: はじめまして)

GOTO Naohisa ngoto @ gen-info.osaka-u.ac.jp
2004年 11月 21日 (日) 23:03:50 EST


こんにちは。

> PDBに登録されているタンパク質の座標データをWebサービス
> を用いて呼び出したいのですが、どなたかやり方を
> ご存知でしたら教えて下さい。

GenomeNetの提供するウェブサービス KEGG API を使えば取得できます。
(KEGG API 自体については http://www.genome.jp/kegg/soap/ 参照)

BioRubyでは

  require 'bio'
  api = Bio::KEGG::API.new
  pdbtxt = api.bget('pdb:155C')

のようにすると、PDB形式のテキストデータとして取得できます。

(PDB形式についての詳細な仕様は
http://www.rcsb.org/pdb/docs/format/pdbguide2.2/guide2.2_frame.html
を参照してください。)

BioRubyでさらに処理をしたいなら、

  pdb = Bio::PDB.new(pdbtxt)

として、Bio::PDBオブジェクトを作成してください。その後、たとえば、

  pdb.each_atom do |a|
    p a.xyz.inspect
  end

みたいな感じにすると、原子の座標がRubyのVectorオブジェクトとして
取得できます。これはほんの一例であり、やりたいことに応じて処理の
内容や使うべきメソッドは変わってきます。

あるいは、別の方法もあります。
PDBj ( http://www.pdbj.org/ ) が提供している、PDBのXMLフォーマットを
取得・検索するサービス xPSSS ( http://www.pdbj.org/xpsss/ )では、
SOAPによるウェブサービスも提供しているので、これを利用する手もあります。

ただし、私が試してみたところ、ここで提供されているWSDLをRubyで読むと
エラーになってしまいました。"Example Page" で提供されているJavaやPerlの
サンプルのようにWSDLを使わずにアクセスすれば大丈夫なのかもしれませんが、
試していません。

あるいは、さらに別の方法もあります。
同じくPDBjの提供している別のサービスでは、PDBjMLという形式のXMLデータを
ウェブサービス(SOAP)経由で取得できます。
  http://pdbj.protein.osaka-u.ac.jp/SOAP/

ここに置いてあるWSDLは、Rubyでも使用できました。
(ただし、一部のSOAP methodは、Rubyではデータの型の問題?でエラーになって
しまいました。単なるデータの取得だけなら問題なく使えます。)
たとえば、PDBのエントリ 155C をPDBjML形式で取得するには、

  require 'soap/wsdlDriver'
  wsdl = 'http://pdbj.protein.osaka-u.ac.jp/SOAP/PDBjSoapService.wsdl'
  driver = SOAP::WSDLDriverFactory.new(wsdl).create_driver
  print driver.getXMLString('155C')

ただし、PDBjML形式は、PDBの公式なXMLであるpdbMLが決定する以前に
PDBjが独自に策定したフォーマットであり、今後は徐々にフェードアウト
してゆく運命にあるようです。しばらくはデータの更新も続くようですが、
今から新たに使い始めるのはやめたほうがよいと思います。

-- 
後藤 直久  ngoto @ gen-info.osaka-u.ac.jp
大阪大学 遺伝情報実験センター  ゲノム情報解析分野 (安永研究室)
         (理学研究科 生物科学専攻 D3)


BioRuby-ja メーリングリストの案内