Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

RCSB PDB の search API を使う

More than 5 years have passed since last update.

初めに

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だとは思いますが、そのへんのこともわかりやすく書いておいて欲しかった…。
(もし書いてあったら教えて下さい)

yamazaki_sensei
車椅子ユーザーなウェブエンジニアでReactとかRailsとかで開発していますが、一番得意なのはiOS開発です。 タンパク質のことがちょっとだけわかります。
https://yamazaki-sensei.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away