Hatena::Grouplifesciencedb

ゲノム周辺 このページをアンテナに追加 RSSフィード

2010-06-22

DDBJやPDBjやMEDLINEやUniProtのRDFのトリプル数

| 16:07 |  DDBJやPDBjやMEDLINEやUniProtのRDFのトリプル数 - ゲノム周辺 を含むブックマーク はてなブックマーク -  DDBJやPDBjやMEDLINEやUniProtのRDFのトリプル数 - ゲノム周辺  DDBJやPDBjやMEDLINEやUniProtのRDFのトリプル数 - ゲノム周辺 のブックマークコメント

最近扱っているデータのスケールを調べました。

規模感

トリプル数の計算は、rapper -c を利用した。

データベースファイル数ファイルサイズトリプル数
DDBJ 299 ~300GB 6.6G
PDBj 65378 ~133G 1.4G
MEDLINE 617 ~12G 0.7G
uniprot-rdf 12 133G 2.4G

まとめ

  1. メジャーな公共データベースではギガオーダーのトリプルが存在している。
  2. ファイルサイズは100G越えもあたりまえ。
  3. rapper -c の計算だけでも数時間かかる。(並列化で短縮は可能)
  4. 参考として、Bio2rdf にあるデータのトリプル数は http://sourceforge.net/apps/mediawiki/bio2rdf/index.php?title=Namespace にある。
トラックバック - http://lifesciencedb.g.hatena.ne.jp/nakao_mitsuteru/20100622

2010-05-30

HCLS の最近の活動から箇条書き

| 20:18 |  HCLS の最近の活動から箇条書き - ゲノム周辺 を含むブックマーク はてなブックマーク -  HCLS の最近の活動から箇条書き - ゲノム周辺  HCLS の最近の活動から箇条書き - ゲノム周辺 のブックマークコメント

5月14日のエントリ HCLS trends and NCBO's SPARQL endpoint! から箇条書きで抜粋してみます。

  1. Electronic Health Records (EHRs) のデモを作ろうとしている。そのために、Semantic Web デモに利用可能な臨床データをさがしている。
  2. 2月のC-SHALS 以降、由来(provenance)がキーテーマになりつつある。
  3. BioRDFタスクフォースは、マイクロアレイデータ(遺伝子リスト、実験条件など)のモデル化のよい方法を模索している。
  4. Scientific Discourse タスクフォースは、myExperiment.org にストアされているような計算機実験やグループでの議論をかたちづくる文をどのようにモデル化するかを調べている。
  5. Translational Medicine Ontology タスクフォースも由来問題を調べはじめた。
  6. NCBO が実験的にSPARQLエンドポイントから直接つながった Linked Data のプロジェクトをはじめた。
  7. ブラウザ用UI http://sparql.bioontology.org/webui/ とアプリ用エンドポイント http://sparql.bioontology.org/sparql/
  8. これによって、OBO のすべてをふくむリソースに直接アクセスしたアプリケーションを作る事が出来る。

とのこと。

screenshot screenshot screenshot

補足

  1. NCBI の SPARQL エンドポイントのチュートリアルはこちら:http://sparql.bioontology.org/tutorial/
  2. RDFストアは Mulgara を使用。

screenshot

トラックバック - http://lifesciencedb.g.hatena.ne.jp/nakao_mitsuteru/20100530

2010-05-26

Trackstar を試してみた

| 01:31 |  Trackstar を試してみた - ゲノム周辺 を含むブックマーク はてなブックマーク -  Trackstar を試してみた - ゲノム周辺  Trackstar を試してみた - ゲノム周辺 のブックマークコメント

Galaxy の最近の新機能のひとつ、UCSC ゲノムブラウザライクにゲノム座標データの可視化 Trackstar を試してみた。自分のデータを手軽に可視化できるのがポイント。

Trackstar はゲノム座標系データの可視化機能

ゲノム座標系データをそのゲノム配列のうえに表示する。表示する形は UCSC ゲノムブラウザのフィーチャーと似ている。表示範囲のスケールにあわせてうまく描画の粒度をかえている。

WIG 形式の数値データも表示できる。折れ線グラフ、ヒストグラム、密度表示の三種類の可視化の形をもっている。色の指定が可能。

ゲノム上の表示は、マウスでの左右上下ドラッグによるスクロール、ホイールによるスクロール、ダブルクリックによる拡大が可能。表示するデータは、ゲノム配列(dbkey)が一致すれば自動的に選択リストにはいるようになっている。このへんのデータのメタデータによるマッチングは Galaxy の得意なところ。

座標系データは、その特性にあわせたインデクス化がおこなわれているので、比較的高速に動作する。さらに、表示に必要なデータだけをとりだすように非同期通信を利用している。

表示は、HTML5 Canvas エレメントと Javascript を利用したブラウザサイドレンダリングで実装。データはJSONで交換されている。

screenshot

インストール

Trackstar の設定は galaxy / galaxy-central / wiki / Visualization — Bitbucket をなぞる。Galaxy のインストール galaxy / galaxy-central / wiki / GetGalaxy — Bitbucket を参照。

ソースの取得。

hg clone http://bitbucket.org/galaxy/galaxy-central

python 2.5 を使うように設定。ここでは Mac OS X 10.6 での場合。

ln -s /usr/bin/python2.5 python
export PATH=./:$PATH

セットアップ。

sh setup.sh

universe_wsgi.ini を編集。最低限必要なのは enable_tracks = True を有効にすること。

$ diff universe_wsgi.ini universe_wsgi.ini.sample
28c28
< enable_tracks = True
---
> # enable_tracks = True

トラック用のデータをUCSCから取得。hg18 などの buildの名前(dbkey)や長さが含まれる。

mkdir ./tool-data/shared/ucsc/chrom/
python ./cron/build_chrom_db.py ./tool-data/shared/ucsc/chrom/

起動確認。

sh run.sh

ブラウザhttp://localhost:8080/ を開いて、ヘッダに Visualization メニューが追加されていることを確認。


つかってみる

ブラウザの動作確認。

  1. ヘッダの Visualization → New Track Browser を選択。
  2. 出て来たダイアログの「Reference genome build (dbkey):」メニューで「Human Mar. 2006 (NCBI36/hg18) (hg18)」を選択。
  3. Continue ボタンをクリック。
  4. ゲノムブラウザが表示される。
  5. 下の染色体選択メニューで「chr1」を選択。
  6. データセットをたしてみる。Add Tracks ボタンをクリック。でもいまは選択できるデータがない。
  7. とりあえず、ここまでの状態を保存するために、右のConfigurationペインの Save ボタンをクリック。

データをとってくる。

  1. ヘッダの Analyze Data を選択。
  2. 左ペインの Tools → Get Data → UCSC Main を選択。
  3. NCBI36/hg18 アッセンブリのデータをなにか取得。たとえば group: Genes ... で table: knownGene
  4. output format: の Galaxy チェックボックスを有効にする。
  5. get output ボタンをクリック。つぎの画面で Send query to Galaxy ボタンをクリック。しばし待つ。
  6. UCSC Main on Human: knownGene (genome)」のようなタイトルのヒストリが追加される。

ブラウザにもどる。

  1. ヘッダの Visualization → Saved Visualizations を選択。
  2. さっき作ったもの(おそらく Unnamed)を選択。
  3. ゲノムブラウザが表示される。
  4. 下の染色体選択メニューで「chr1」を選択。
  5. データセットをたしてみる。Add Tracks ボタンをクリック。
  6. データセットを選択して、insert ボタンをクリック。
  7. インデクスがはじまる。しばし待つ。
  8. スクロールや縮小拡大をためしてみる。
  9. 最後にここまでの状態を保存するために、右のConfigurationペインの Save ボタンをクリック。

うごかないときには

  1. galaxy / galaxy-central / wiki / Visualization — Bitbucket を読み直す。
  2. ソースは正しくて、手順がまちがっていると信じてもう一度ソースから入れ直してみる。

まとめ

  1. Trackstar を有効にしてみた。
  2. gbrowse や UCSC ゲノムブラウザなどのローカルのセットアップ無しに、手前の座標系データを可視化するための新しい方法。わりと簡単。
  3. Trackstar はモダンな実装。
  4. テキストでGUIを説明するのは難しい。状態に名前が無いと特に難しい。
トラックバック - http://lifesciencedb.g.hatena.ne.jp/nakao_mitsuteru/20100526

2010-01-30

TogoWS REST API JSON 形式の利用例

|  TogoWS REST API JSON 形式の利用例 - ゲノム周辺 を含むブックマーク はてなブックマーク -  TogoWS REST API JSON 形式の利用例 - ゲノム周辺  TogoWS REST API JSON 形式の利用例 - ゲノム周辺 のブックマークコメント

TogoWS REST APIJSON 形式の出力形式に対応しています。これを利用するとかんたんにウェブページにデータを追加表示できます。この利用例では、HTML書類にレンダリング時にAjaxで取得したPubMedアブストラクトのデータを表示します。

REST APIJSON 形式

PubMed アブストラクトのタイトルの取得 URI は次のようになります。ti フィールドがタイトルです。

その返り値

["From genomics to chemical genomics: new developments in KEGG."]

この返り値JSONJavaScriptで値としてつかうには eval を使用します。TogoWS REST APIJSON 形式を利用する際に配列の一個目の要素を取り出す必要があります。

var data = eval(ti_in_json)[0]

図はイメージ

次のようなウェブページを、TogoWS からデータ取得し作成できます。JavaScript による Ajax でデータは JSON 形式としてクロスドメインに取得されて、そのまま DOM 操作で表示しています。表示しているデータは、タイトル(ti)、著者(au)、書誌情報(so)、アブストラクト(ab)、MeSHターム(mh)です。

http://img.skitch.com/20100130-1xar76tyru7m6waqssdxmw2h3m.jpg


HTML ソース

Ajaxprototype.js をつかいます。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html><head>
<title></title>
<script src="http://genome.kazusa.or.jp/javascripts/prototype.js" type="text/javascript"></script>
</head>
<body>
<div id='ti'></div>
<div id='au'></div>
<div id='so'></div>
<hr/>
<div id='ab'></div>
<hr/>
<div id='mh'></div>
<hr/>
<script type="text/javascript">
var ti = function(transport) {
  if (transport.responseText !== undefined) {
    $('ti').innerHTML = "<h1>" + eval(transport.responseText)[0] + '</h1>'
}
}
var so = function(transport) {
  if (transport.responseText !== undefined) {
    $('so').innerHTML = eval(transport.responseText)[0]
  }
}
var au = function(transport) {
  if (transport.responseText !== undefined) {
    $('au').innerHTML = eval(transport.responseText)[0].replace(/\n/g, ', ')
  }
}
var ab = function(transport) {
  if (transport.responseText !== undefined) {
    $('ab').innerHTML = eval(transport.responseText)[0];
  }
}
var mh = function(transport) {
  if (transport.responseText !== undefined) {
    var data = eval(transport.responseText)[0]
    data.each(function(e, i) {
      $('mh').innerHTML = $('mh').innerHTML + '<li>' + e + '</li>'
    })
  }
}
function failure(transport) {  alert(transport.responseText); }

new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/ti.json", { onSuccess: ti,  onFailure: failure})
new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/so.json", { onSuccess: so,  onFailure: failure})
new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/ab.json", { onSuccess: ab,  onFailure: failure})
new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/au.json", { onSuccess: au,  onFailure: failure})
new Ajax.Request("http://togows.dbcls.jp/entry/ncbi-pubmed/16381885/mh.json", { onSuccess: mh,  onFailure: failure})
</script>
</body> </html>

まとめ

  • TogoWS REST APIJSON 形式を Ajax で利用する例です。
  • 返り値は配列がいっこ余分にみえます。
  • PubMed アブストラクトから書誌情報とMeSHタームだけを表示するページをつくりました。
  • PMID だけを持っているページに、その文献のタイトルを表示追加するのは簡単なお仕事です。
トラックバック - http://lifesciencedb.g.hatena.ne.jp/nakao_mitsuteru/20100130

2010-01-06

インストールした 4store の動作確認をした。

| 00:30 |  インストールした 4store の動作確認をした。 - ゲノム周辺 を含むブックマーク はてなブックマーク -  インストールした 4store の動作確認をした。 - ゲノム周辺  インストールした 4store の動作確認をした。 - ゲノム周辺 のブックマークコメント

SPARQLのつかえるスケーラブルRDFストア 4store をSnow LeopardのMacにインストールしてみた。 - ゲノム周辺 - lifesciencedbグループインストールした 4store の動作確認をなぞった。

はじめに http://4store.org/trac/wiki/GettingStarted でざっと全体の動作をみておく。4s-backend-setup、4s-backend、4s-httpd などコマンド名にオプション込なかんじ。http://4store.org/trac/wiki/Documentation の Usage の各項目をなぞる。

/Application/4store.app を起動すると、適切に環境設定された Terminal.app のウィンドウが一つでてくる。4store コマンド群は /Applications/4store.app/Contents/MacOS/bin/4s-backend にある。

コマンド群は 4s-からはじまっている

$ ls /Applications/4store.app/Contents/MacOS/bin/
4s-backend*          4s-cluster-create*               4s-httpd*
4s-backend-copy*     4s-cluster-destroy*              4s-import*
4s-backend-destroy*  4s-cluster-file-backup*          4s-info*
4s-backend-info*     4s-cluster-info*                 4s-query*
4s-backend-passwd*   4s-cluster-replication-disable*  4s-resolve*
4s-backend-setup*    4s-cluster-start*                4s-restore*
4s-bind*             4s-cluster-stop*                 4s-reverse-bind*
4s-cluster-cache*    4s-delete-model*                 4s-size*
4s-cluster-copy*     4s-dump*                         4s-update*

データベースのセットアップは 4s-backend-setup

データベース名(Knowledge Base名; KB名)demo として作成。

$ 4s-backend-setup demo
4store[39388]: backend-setup.c:176 erased files for KB demo
4store[39388]: backend-setup.c:301 created RDF metadata for KB demo

データベースの実体は /var/lib/4store/demo に作成される。

$ ls /var/lib/4store/demo
0000/  0001/  metadata.nt

クラスタの設定はこんなかんじ。

$ 4s-backend-setup --node 0 --cluster 1 --segments 4 demo
4store[39394]: backend-setup.c:176 erased files for KB demo
4store[39394]: backend-setup.c:301 created RDF metadata for KB demo

node 引数cluster 引数、segments 引数は後ほどしらべる。


起動は 4s-backend

4s-backend demo

デーモンとして起動する。


データインポートは 4s-import

ソース配布物のdataの中から一つインポートしてみる。

$ 4s-import -v demo data/tiger/tiger_features.rdf
removing old data
Reading <file:///Users/nakao/Applications/4store/4store/data/tiger/tiger_features.rdf>;
Pass 1, processed 748 triples (748)
Pass 2, processed 748 triples, 90250 triples/s
Updating index
Index update took 1.469478 seconds
Imported 748 triples, average 505 triples/s

コマンドラインクエリインターフェイスは 4s-query

対話的に起動。

$ 4s-query demo4store> SELECT * WHERE {?s ?p ?o}
#EOQ
?s     ?p     ?o
<http://www.census.gov/tiger/2002/CFCC/D85>;     <http://www.w3.org/2000/01/rdf-schema#subClassOf>;     <http://www.census.gov/tiger/2002/CFCC/D8>;
<http://www.census.gov/tiger/2002/CFCC/F40>;     <http://www.w3.org/2000/01/rdf-schema#subClassOf>;     <http://www.census.gov/tiger/2002/CFCC/F4>;
<http://www.census.gov/tiger/2002/CFCC/E0>;     <http://www.w3.org/2000/01/rdf-schema#subClassOf>;     <http://www.census.gov/tiger/2002/CFCC/E>;

実行区切り文字列は #EOQ\n

SPARQLクエリコマンドラインでも実行可。

$ 4s-query demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">;
  <head>
    <variable name="s"/>
    <variable name="p"/>
    <variable name="o"/>
  </head>
  <results>
    <result>
      <binding name="s"><uri>http://www.census.gov/tiger/2002/CFCC/D85</uri></binding>;
      <binding name="p"><uri>http://www.w3.org/2000/01/rdf-schema#subClassOf</uri></binding>;
      <binding name="o"><uri>http://www.census.gov/tiger/2002/CFCC/D8</uri></binding>;
    </result>
  </results>
</sparql>

選べる出力形式。

JSON形式

$ 4s-query -f json demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
{"head":{"vars":["s","p","o"]},
 "results": {
  "bindings":[
   {"s":{"type":"uri","value":"http://www.census.gov/tiger/2002/CFCC/D85";},
    "p":{"type":"uri","value":"http://www.w3.org/2000/01/rdf-schema#subClassOf";},
    "o":{"type":"uri","value":"http://www.census.gov/tiger/2002/CFCC/D8";}}
  ]
 }}

SPARQL-RESULTS 形式

$ 4s-query -f sparql demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">;
  <head>
    <variable name="s"/>
    <variable name="p"/>
    <variable name="o"/>
  </head>
  <results>
    <result>
      <binding name="s"><uri>http://www.census.gov/tiger/2002/CFCC/D85</uri></binding>;
      <binding name="p"><uri>http://www.w3.org/2000/01/rdf-schema#subClassOf</uri></binding>;
      <binding name="o"><uri>http://www.census.gov/tiger/2002/CFCC/D8</uri></binding>;
    </result>
  </results>
</sparql>

テキスト形式。

$ 4s-query -f text demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
?s     ?p     ?o
<http://www.census.gov/tiger/2002/CFCC/D85>;     <http://www.w3.org/2000/01/rdf-schema#subClassOf>;     <http://www.census.gov/tiger/2002/CFCC/D8>;

テストケース(Turtle)形式。

$ 4s-query -f testcase demo 'SELECT * WHERE { ?s ?p ?o } LIMIT 1'
@prefix rs: <http://www.w3.org/2001/sw/DataAccess/tests/result-set#>; .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>; .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>; .

[] rdf:type rs:ResultSet ;
   rs:resultVariable "s", "p", "o" ;
   rs:solution [
      rs:binding [ rs:variable "s" ;
                   rs:value <http://www.census.gov/tiger/2002/CFCC/D85> ] ;
      rs:binding [ rs:variable "p" ;
                   rs:value <http://www.w3.org/2000/01/rdf-schema#subClassOf> ] ;
      rs:binding [ rs:variable "o" ;
                   rs:value <http://www.census.gov/tiger/2002/CFCC/D8> ]
   ] .

SPARQL HTTPインターフェイスは 4s-httpd

8000ポートで起動

$ 4s-httpd -p 8000 demo

SPARQLエンドポイントは http://localhost:8000/sparql/ になる。

http://localhost:8000 にウェブブラウザアクセス

http://img.skitch.com/20100106-ey6gcjsu42qsege2gimq316ia6.jpg

ステータスページ。

http://img.skitch.com/20100106-nsq5ir2j1c6ynbkmif43t5a9p8.jpg

バックエンドサイズ情報。

http://img.skitch.com/20100106-cb9dq16jare8b33q82exaq12c.jpg

テストクエリ

http://img.skitch.com/20100106-x8hfwfdjt3xkexyn9nwcg346nh.jpg

クエリ結果

http://img.skitch.com/20100106-8g2w2r4tsycy8sdwrnxa6966hp.jpg


RESTful インターフェイス

PUT

$ curl -T file.rdf http://localhost:8000/sparql/file.rdf

DELETE

$ curl -X DELETE http://localhost:8000/sparql/file.rdf

注意する点として、グラフ単位(ファイル単位)でしか追加/削除できない。http://4store.org/trac/wiki/TODO

クライアントからの接続

php、phtyon、rubyJavaクライアントがある。Perlさん。。。

ruby クライアントの場合。インストールしてみる。

$ gem build 4store-ruby.gemspec
WARNING:  no rubyforge_project specified
  Successfully built RubyGem
  Name: 4store-ruby
  Version: 0.0.3
  File: 4store-ruby-0.0.3.gem
$ sudo gem install 4store-ruby-0.0.3.gem

使ってみる。

>> require 'rubygems'
=> true
>> gem '4store-ruby'   
=> true
>> FourStore
=> FourStore
>> FourStore::Store
=> FourStore::Store
>> FourStore::Store.new("http://localhost:8000/sparql/";)
=> #<FourStore::Store:0x10176a000 @endpoint=#<URI::HTTP:0x101769c90 URL:http://localhost:8000/sparql/>>;
>> ep = FourStore::Store.new("http://localhost:8000/sparql/";)
=> #<FourStore::Store:0x101763890 @endpoint=#<URI::HTTP:0x101763548 URL:http://localhost:8000/sparql/>>;
>> res = ep.select("SELECT * WHERE { ?s ?p ?o } LIMIT 10");
?> "
"
=> "\n"
>> require 'pp'
=> true
>> pp res
[{"o"=>"http://www.census.gov/tiger/2002/CFCC/D8";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/D85";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/F4";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/F40";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/E";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/E0";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/B";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/B4";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/D2";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/D27";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/A";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/A5";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/A2";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/A21";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/H7";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/H70";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/B5";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/B52";},
 {"o"=>"http://www.census.gov/tiger/2002/CFCC/D4";,
  "p"=>"http://www.w3.org/2000/01/rdf-schema#subClassOf";,
  "s"=>"http://www.census.gov/tiger/2002/CFCC/D43";}]
=> nil

メソッド一覧。

>> FourStore::Store.instance_methods - Object.methods
=> ["delete", "add", "set", "select", "load"]

ドキュメントが無いので、ソース読め、とのこと。

rubyクライアントはREXMLをつかっているのが気になるところ。大規模用途に備えて nokogiri で高速化出来るかな?


まとめ

  1. Mac OS X 10.6で動作確認した。
  2. セットアップ、バックエンド起動、データインポートクエリインターフェイスhttpインターフェイスクライアントの利用をなぞった。
  3. RDFのストア、クエリが簡単にできた。
  4. HTTP SPARQL endpoint がある。
  5. RESTful APIがある。
  6. phppythonrubyJava クライアントがある。

DavSnusaDavSnusa2017/05/11 18:13Cytotec 200pg Pharmacie En Ligne <a href=http://byuvaigranonile.com>viagra</a> Priligy En Valencia Finasteride 10mg Skin Health Lowest Price Flagyl Low Price

トラックバック - http://lifesciencedb.g.hatena.ne.jp/nakao_mitsuteru/20100106