Hatena::Groupkdri

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

2008-10-30KazusaAPI

あたらしい CyanoBase のウェブサービス API

|  あたらしい CyanoBase のウェブサービス API - KazusaAPI開発日誌 を含むブックマーク はてなブックマーク -  あたらしい CyanoBase のウェブサービス API - KazusaAPI開発日誌  あたらしい CyanoBase のウェブサービス API - KazusaAPI開発日誌 のブックマークコメント

シアノバクテリアのゲノムデータベース CyanoBase の更新をしています。あたらしい CyanoBase では、リソース指向で URL と表示コンテンツの関係を明快にして、再利用性の向上を目指しています。

screenshot screenshot


データソース

/cyanobase には CyanoBase に含まれる登録生物種名(個々のゲノムプロジェクトにほぼ対応)がリストされています。

screenshot

このページでは、生物種名リストの CSV とテキストフォーマットの取得 API を提供しています。

CSV/cyanobase.csv
タブ切りテキスト/cyanobase.txt

CSV フォーマット。

f:id:nakao_mitsuteru:20081031160449j:image

テキストフォーマット。タブで値を分離している。

f:id:nakao_mitsuteru:20081031160450j:image


ゲノム

データソース /cyanobase/Synechocystis には、シアノバクテリアの一種 Synechocystis sp. PCC 6803 ゲノムの情報がふくまれます。

screenshot

染色体分子リスト

まだ実装していません。染色体名、サイズ、遺伝子数などのリストを提供すると良いと考えています。

リスト/cyanobase/Synechocystis.csv
遺伝子リスト

遺伝子ID、遺伝子名、ポジション、アノテーションのリストです。

CSV/cyanobase/Synechocystis/genes.csv
テキスト/cyanobase/Synechocystis/genes.txt
遺伝子カテゴリーリスト

遺伝子IDと遺伝子機能分類のリストです。

CSV/cyanobase/Synechocystis/genes/category.csv
テキスト/cyanobase/Synechocystis/genes/category.txt
遺伝子アノテーション単語頻度

404 Not Foundのヘッダとフッタ無しのビューを提供しています。

plain表示/cyanobase/Synechocystis/genes/word_cloud?style=plain
コンティグ

作成中です。次のような URL を想定しています。

リスト/cyanobase/Synechocystis/contigs.csv
リストGFF3/cyanobase/Synechocystis/contigs/{ContigID}.gff
個別コンティグ/cyanobase/Synechocystis/contigs/{ContigID}
塩基配列/cyanobase/Synechocystis/contigs/{ContigID}.fna
GFF3/cyanobase/Synechocystis/contigs/{ContigID}.gff

遺伝子

/cyanobase/Synechocystis/genes/slr1311 は遺伝子ID slr1311 のページを提供しています。遺伝子ページでは染色体での位置、遺伝子産物(RNA産物、タンパク質産物)の情報や、文献情報、機能アノテーションや相同性検索、オーソログ解析の結果が提供されています。

screenshot

配列
塩基配列/cyanobase/Synechocystis/genes/slr1311.fna
アミノ酸配列/cyanobase/Synechocystis/genes/slr1311.faa
BLAST ヒット

いくつかのデータベースへのblast検索の結果です。

テーブル/cyanobase/Synechocystis/blast_hits/slr1311
GFF3/cyanobase/Synechocystis/blast_hits/slr1311.gff3
BLASTによる CyanoBase オーソログ

CyanoBase に含まれる配列集合での、BLAST双方向ベストヒットとしてのオーソログです。

テーブル/cyanobase/Synechocystis/orthologs/slr1311
GFF3/cyanobase/Synechocystis/orthologs/slr1311.gff3
InterProScan マッチ

InterProScan の結果です。GOアノテーションも含まれています。

テーブル/cyanobase/Synechocystis/iprscan_matches/slr1311
GFF3/cyanobase/Synechocystis/iprscan_matches/slr1311.gff3
PNG画像/cyanobase/Synechocystis/iprscan_matches/slr1311.png
遺伝子エントリ

上記のGFF3出力をすべてコンパイルしています。

GFF3/cyanobase/Synechocystis/genes/slr1311.gff3

利用例

CyanoBase の全遺伝子の塩基配列を取得

Ruby スクリプトです。いくつか塩基配列が存在していないようなので、エラー処理を行っています。

require 'open-uri'
cb_url = "http://bacteria-genome.kazusa.or.jp/cyanobase"
dsns = open("#{cb_url}.txt").read.split("\n").map {|x| x.split("\t")[0] }
dsns.each do |dsn|
  dsn_url = "#{cb_url}/#{dsn}"
  open("#{dsn_url}/genes.txt").read.split("\n").each do |x|
    gene_id = x.split("\t")[1]
    begin
      puts open("#{dsn_url}/genes/#{gene_id}.fna").read 
    rescue OpenURI::HTTPError
    end
  end
end
遺伝子IDさえわかればビューを直接参照できる


データの階層性と名前空間の提供

ゲノムデータベースは、ゲノム配列を中心にして、ゲノム配列の手続き的構成要素(クローン配列やコンティグ)、ゲノム配列の概念的構成要素(遺伝子など)のデータからなります。新しい CyanoBase では、それらのもつ階層構造と URL が対応するように設計しています。そうすることによって、ブラウズ時の操作に沿ってウェブサービス API を説明や理解することができます。

生物学的概念(生物種、ゲノム、遺伝子)とそれらに属する概念(遺伝子セット、遺伝子産物など)は、概念側が属するものの名前空間を既定しています。たとえば、Synechocystis の遺伝子セット、や、遺伝子ID slr1311 の塩基配列、などです。遺伝子セットや塩基配列はそれ自体は一般的な(特定の実体を指し示さない)概念ですが、名前空間を限定すると、特定の実体を指し示すことになります。

ゲノムデータベースは、非常に多くの概念と実体を扱う必要があるので、データへ到達する経路はできる限りそのような概念と名前空間にそったかたちであるべきだと、考えています。ゲノムデータのブラウザという観点で、階層的にデータをブラウズできるビューを提供しています。


フォーマット

出力フォーマットは、CSV、テキストフォーマット、塩基配列、塩基配列、画像などがあります。XML は未実装です。

拡張子
HTMLYUI DataTable)なし
CSV.csv
タブ切りテキストフォーマット.txt
塩基配列fastaフォーマット.fna
アミノ酸配列fastaフォーマット.faa
PNG 画像.png

CSV やテキストフォーマットは一行一レコードの表形式のデータをあつかっています。それぞれカラムの意味が欠落しているので、それらを知る術を提供する必要があるといえます。たとえば、.col でカラム名を返す、もしくは、コメントアウトを定義して出力にくわえるなどが考えられます。このような観点では、XML のほうがポータブルであるといえます。

一方で、カラム名のようなセマンティクスやオントロジーにかかわるところを追求すると、大変な作業がまちかまえています。しかし、目前にあるおおくの解析の局面では、カラムの値は人の目には自明であり、利用するたびにそれを対応づけることで解析はすすんでしまうという現実があります。たとえば、Galaxy のデータの結合には典型的データ以外はユーザが対応するカラムを指定してワークフローを組み立てます。それが意外とつかわれています。その一方で、TavernaやMyGRIDでのセマンティックウェブ的な解析ツールは利用されていません。利用するまでの導入時の(知るべきことの)障壁が高いのが原因でしょうか。


URL

リソース指向の REST アーキテクチャを参考にして URL やページを設計しています。


まとめ

  1. 新しい CyanoBase ではウェブサービス APIREST として提供しつつある。
  2. データの概念と階層にそった URL 設計をおこなっている。
  3. REST でベタにスクリプトを組むと WSDL のようなものがあるといいなという気持ちになるけど、いばらの道なのでこらえる。
  4. 表形式のファイルのカラム名を取得できるようにするべき。
トラックバック - http://kdri.g.hatena.ne.jp/nakao_mitsuteru/20081030