Hatena::Groupkdri

KazusaAPI開発日誌 このページをアンテナに追加 RSSフィード

2008-05-08

TogoWS 統合ウェブサービス REST API をつかってみた。

|  TogoWS 統合ウェブサービス REST API をつかってみた。 - KazusaAPI開発日誌 を含むブックマーク はてなブックマーク -  TogoWS 統合ウェブサービス REST API をつかってみた。 - KazusaAPI開発日誌  TogoWS 統合ウェブサービス REST API をつかってみた。 - KazusaAPI開発日誌 のブックマークコメント

統合ウェブサービスのREST APIがすてきなので、つかってみた。

screenshot

TogoWS とは、ウェブサービスによって DDBJ, KEGG, PDBj, CBRC の4センターバーチャルに統合し、国内の主要データベースと解析サービスを透過的に利用可能にする取り組みです。これまで4センターで独自に開発されてきたウェブサービスAPI を、ライフサイエンス統合データベースセンターにおいて一元的に利用できるようにし、相互に連携するために必要な追加機能を提供することで、ワークフローを容易に構築できる環境ユーザに提供します。

TogoWS

TogoWS 自体がクエリキャッシュをしているので、繰り返しアクセスしても、サーバ側の負荷にならないので、各サービスを直接アクセスするよりいろいろリソースに優しい設計になっている、とのこと。

利用シーン

文献の PubMed ID (PMID) だけもっているときに、その文献のタイトル、著者名、雑誌名を知りたい。→それTogoWSでできるよ。

タイトルの取得

From genomics to chemical genomics: new developments in KEGG.

http://togows.dbcls.jp/entry/pubmed/16381885/ti

著者名の取得

Kanehisa, M.

Goto, S.

Hattori, M.

Aoki-Kinoshita, K. F.

Itoh, M.

Kawashima, S.

Katayama, T.

Araki, M.

Hirakawa, M.

http://togows.dbcls.jp/entry/pubmed/16381885/authors

掲載雑誌名の取得

Nucleic Acids Res. 2006 Jan 1;34(Database issue):D354-7.

http://togows.dbcls.jp/entry/pubmed/16381885/so

文献の PubMed ID だけもっているときに、その文献のMeSHタームを知りたい。→それTogoWSでできるよ。

*Biotransformation
*Chemistry
*Databases, Factual
*Databases, Genetic
Environment
Enzymes/chemistry/genetics
*Genomics
Humans
Internet
Ligands
Pharmaceutical Preparations/chemistry/classification
Signal Transduction
Systems Integration
User-Computer Interface
http://togows.dbcls.jp/entry/pubmed/16381885/mesh

タンパク質知識ベース UniProt の ID だけもっているときに、その機能ドメインをしりたい。→それTogoWSでできるよ。


クロスドメインなのでAJAX.Update できない

嬉々として、開発中のサービスに次のようなコードを埋め込んでみるが、いっこうに表示されないし、通信が発生しない。

<script type='text/javascript'>
new Ajax.Updater({success: 'pmid-title'}, 
                 'http://togows.dbcls.jp/entry/pubmed/<%= pmid %>/ti',
                 {method: 'get'}); 
</script>
<div id='pmid-title'></div>

クロスドメインなのでコントローラを経由する

<script type='text/javascript'>
new Ajax.Updater({success: 'pmid-title'}, 
                 '/togows?db=pubmed&id=<%= pmid %>&field=ti',
                 {method: 'get'}); 
</script>
<div id='pmid-title'></div>

というようなに利用できる togows コントローラーを用意した。

app/controllers/togows_controller.rb

class TogowsController < ApplicationController
  require 'open-uri'

  def entry
    if uri = build_uri
      text = open(uri).read
    else
      text = '...'
    end
    render :text => text
  end

  private

  def build_uri
    base_uri = 'http://togows.dbcls.jp/entry'
    if params[:db] and params[:id] 
      uri = [base_uri, params[:db], params[:id]] * '/'
      uri += "/#{params[:field]}" if params[:field]
    else
      nil
    end
  end
end

表示されるようになった。

実際使っているサイト例: http://a.kazusa.or.jp/tags/pmid%3A8932316

screenshot

かずさアノテーションは PMID しか保持していない。

まとめ

  1. TogoWS REST API をつかってみた。
  2. /entry/{db_name}/{entry_id} は良い形式
  3. クロスドメイン問題はコントローラー経由で回避した。
  4. JSON 形式の返り値があると、コントローラー無くてもクロスドメインで取得できる。
トラックバック - http://kdri.g.hatena.ne.jp/nakao_mitsuteru/20080508