Hatena::Groupkdri

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

2009-02-03

Gendoo を Galaxy のツールにしてみた

|  Gendoo を Galaxy のツールにしてみた - KazusaAPI開発日誌 を含むブックマーク はてなブックマーク -  Gendoo を Galaxy のツールにしてみた - KazusaAPI開発日誌  Gendoo を Galaxy のツールにしてみた - KazusaAPI開発日誌 のブックマークコメント

http://kdri.g.hatena.ne.jp/nakao_mitsuteru/20090131/gendoo でつかった GendooGalaxy のツールにしてみました。

Galaxy i18n 環境で動作中。ツール/DBCLS Tools/Gendoo で利用可能です。

f:id:nakao_mitsuteru:20090203131610j:image

例として、シアノバクテリアの slr1311 遺伝子で検索してみます。

f:id:nakao_mitsuteru:20090203132041j:image

遺伝子名を入力、データソースを選択し、Execute

f:id:nakao_mitsuteru:20090203132042j:image

実行がうまくいっています。

f:id:nakao_mitsuteru:20090203132043j:image

右のヒストリで取得データの確認をします。目のアイコンボタンで内容を表示することができます。センターフレームに表示してある内容は、「save」リンクでダウンロードするか、センターフレーム内を別タブや別ページで表示することができます。

ここから、ソートしたりカラムやタームで選択したりできます。たが、数値がEを使った表記なので、ソートがうまくいかないです。


ソースコード

tools_conf.xml の追加分
  <section name="DBCLS Tools" id="dbcls_tools">
   <tool file="dbcls/gendoo.xml" />
  </section> 

tools/dbcls/gendoo.xml
<?xml version="1.0"?>
<tool name="Gendoo" id="gendoo">
  <description>Gene-to-PMIDs-to-MeSH terms relation table.</description>
  <command interpreter='ruby'>gendoo_client.rb $query $dsn $output</command>
  <inputs>
    <param name='query' type='text'>
      <label>Gene symbol/ID/Name</label>
    </param>
    <param name='dsn' type='select'>
      <label>Data Source Name (DSN)</label>
      <option value='human'>Homo sapiense</option>
      <option value='synecho'>Synechocystis sp. PCC 6803</option>
      <option value='lotus'>Lotus japonicas</option>
    </param>
  </inputs>
  <outputs>
    <data name="output" format="tabular" />
  </outputs>
  <help>
Gendoo provides keywords (diseases, drugs and so on) related to genes and diseases of interests. 

http://gendoo.dbcls.jp/pre/

-----

**Gene List**

* http://gendoo.dbcls.jp/pre/data/id2name.human.tab -- Human Gene ID List
* http://genome.kazusa.or.jp/cyanobase/Synechocystis/genes -- Synechocystis sp. PCC 6803
* http://www.kazusa.or.jp/lotus/ -- Miyakogusa

  </help>
</tool>

tools/dbcls/gendoo_client.rb
require 'open-uri'

class Matcher
  def self.ig_and_pvalue
    /<td class="\S+" title="IG=(\d.*?), p-value=(\d.*?)">/
  end

  def self.meshid_and_term(dsn)
    /gendoo.cgi\?meshid=(D\d+)\&taxonomy=#{dsn}">(\w+.*?\w+)<\/a>/
  end
  
  def self.aspect
    /<h2><a name="\w+">(\w+.*?\w+)<\/a><\/h2>/
  end
end


query, dsn, output = ARGV
# http://gendoo.dbcls.jp/pre/cgi-bin/gendoo.cgi?geneid=slr1311&taxonomy=synecho
url = "http://gendoo.dbcls.jp/pre/cgi-bin/gendoo.cgi?geneid=#{query}&taxonomy=#{dsn}"
text = open(url).read
File.open(output, 'w') do |f|                     
  aspect = ''
  meshid = ''
  term = ''
  text.split("\n").each do |line|
    case line
    when Matcher.ig_and_pvalue
      ig = $1
      pvalue = $2
      f.puts [dsn, query, meshid, aspect, term, ig, pvalue].join("\t")
    when Matcher.meshid_and_term(dsn)
      meshid = $1
      term = $2
    when Matcher.aspect
      aspect = $1
    end
  end
end
puts "Gendoo: #{query} related diseases, drugs, ..."

まとめ

  1. Gendoo を Galaxy に追加した。
  2. ツールの追加は簡単。output の format だけよく考えないと再利用性が上がらない。
  3. 数値のソートがうまくいかない。
  4. JOIN したい。
  5. 作って動かすとおもしろい。