初めに
http://www.rcsb.org/pdb/software/rest.do の、Advanced Search を使おうとして少しはまったのでメモ。
用途
PDBコードとかタンパク質のシーケンスとかを入れると、マッチしたPDBへのリンクを返してくれたりする。
基本的な使い方
http://www.rcsb.org/pdb/rest/search に、以下の様な xml を HTTP POST するだけ。認証とかは不要。
<orgPdbQuery>
<queryType>org.pdb.query.simple.SequenceQuery</queryType>
<sequence>VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR</sequence>
<searchTool>blast</searchTool>
<sequenceIdentityCutoff>70</sequenceIdentityCutoff>
</orgPdbQuery>
こんな感じでマッチしたPDBコード一覧が返ってくる。
1A00:1 1A01:1 1A0U:1 1A0Z:1 1A3N:1 1A3O:1 1A9W:1 1ABW:1 1ABY:1 1AJ9:1 1B86:1 1BAB:1 1BBB:1 1BIJ:1 1BUW:1 (中略) 6HBW:1
ハマったこと
以下の2点を守らないと、トップページ?のHTMLが返ってくる。
- POSTするxmlは、実際にはこんな感じでエンコードしないといけない。
%3CorgPdbQuery%3E%0D%0A%3CqueryType%3Eorg.pdb.query.simple.SequenceQuery%3C%2FqueryType%3E%0D%0A%3Csequence%3EVLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR%3C%2Fsequence%3E%0D%0A%3CsearchTool%3Eblast%3C%2FsearchTool%3E%0D%0A%3CsequenceIdentityCutoff%3E70%3C%2FsequenceIdentityCutoff%3E%0D%0A%3C%2ForgPdbQuery%3E
- そのことをHTTPのヘッダに書いてやらないといけない。
content-type : application/x-www-form-urlencoded; charset=UTF-8
終わりに
xmlをエンコードするとかWebAPIでは常識なんでしょうか…。
だいぶ使う人が限られるAPIだとは思いますが、そのへんのこともわかりやすく書いておいて欲しかった…。
(もし書いてあったら教えて下さい)