第12回オープンバイオ研究会に参加してきました

ネタを3つ持っていきました.

3Dといっても目で見るものは2Dへの写像.その写像画でどういうものを可視化したいのか明確にすべき,という的確なアドバイスを頂けてよかったです.

Biorubyに関しては今後はBiorubyそのものをいじるのではなく,CytoscapeプラグインとしてBiorubyを使うようなものを作っていこうと思ってます.

生意気にスライド作っておきながらまだ全然翻訳できていないです... やるやる詐欺にならないようにします...

他の方の発表としては

がありました.

relfinderはProteopediaとかSubtiWikiとかに適用して何か面白いことできないかな,などと思いました.

スーパーグラフプラグインについては仰る相関の概念が普通の相関係数とかの相関と異なっており,よく理解できませんでした.(もっと質問すべきでした.)

本来のg2sはスクロールと共にゲノムの塩基を読んでいき遺伝子の領域にくるとその遺伝子情報に応じて出現する敵を倒すシューティングゲームです.ぐるなび版は飲食店に応じて敵を出現させていると思うんですが地図情報をお店に応じてどう読んでるんでしょうか.

昔に比べるとオープンバイオ研究会の元気が若干無くなり気味らしいので我こそはという方,次のオープンバイオ研究会JAISTであるそうなので是非何か発表されてみてはどうでしょうか.

RubyでCytoscapeのプラグインを作ってみる

最近Cytoscapeのコアデベロッパー、UCSDの大野さんが作成されたScript Engine プラグインがアップデートされ、Rubyで簡単なプラグインを書く方法を示してくれています。

http://cytoscape.wodaklab.org/wiki/RubyPlugin

この雛形を使わせて頂いてノードに化合物と反応のID情報のみがついているKEGG代謝反応ネットワークに、その他の情報をノードアトリビュートとして付加するプラグインを書いてみました。(勢いで書いて、まだテストできてません。)

require 'java'
require 'set'
require 'bio'

include_class 'cytoscape.Cytoscape'
include_class 'cytoscape.plugin.CytoscapePlugin'
include_class 'cytoscape.view.CyMenus'
include_class 'cytoscape.util.CytoscapeAction'
include_class 'cytoscape.data.CyAttributes'
include_class 'cytoscape.CyNode'
include_class 'cytoscape.CyEdge'
include_class 'cytoscape.CyNetwork'

include_class 'java.util.ArrayList'
include_class 'java.awt.event.ActionEvent'
include_class 'javax.swing.JOptionPane'

class RubyAction < CytoscapeAction
  def initialize()
    super("Plugin written in Ruby")
    setPreferredMenu("Plugins")
  end

  def actionPerformed(evt)
    JOptionPane.showMessageDialog(
    nil, "Start retrieving reaction and compound attribute", "JRuby on Cytoscape",
    JOptionPane::INFORMATION_MESSAGE)

    nodes = Cytoscape.getCyNodeList
    attrs = Cytoscape.getNodeAttributes
    serv  = Bio::KEGG::API.new

    node_id_for = Hash.new
    reaction_ids = ""
    compound_ids = ""

    nodes.each do |node|
      kegg_id = attrs.getAttribute(node.getIdentifier, "canonicalName")
      node_id_for[kegg_id] = node.getIdentifier

      case kegg_id
      when /^R/
        reaction_ids.concat(" " + kegg_id.sub("R", "rn:R")) 
      when /^C/
        compound_ids.concat(" " + kegg_id.sub("C", "cpd:C"))
      end

    end

    reaction_entries = serv.bget(reaction_ids)
    compound_entries = serv.bget(compound_ids)

    reaction_entries.split("\n///\n").each do |reaction_entry|
      rn = Bio::KEGG::REACTION.new(reaction_entry)
      node_id = node_id_for[rn.entry_id]
      attrs.setAttribute(node_id, "enzymes", rn.enzymes.join(', '))
      attrs.setAttribute(node_id, "equation", rn.equation)
      attrs.setAttribute(node_id, "pathways", rn.pathways.join(', '))
    end

    compound_entries.split("\n///\n").each do |compound_entry|
      cpd = Bio::KEGG::COMPOUND.new(compound_entry)
      node_id = node_id_for[cpd.entry_id]
      attrs.setAttribute(node_id, "formula", cpd.formula)
      attrs.setAttribute(node_id, "name", cpd.name)
      attrs.setAttribute(node_id, "mass", cpd.mass)
      attrs.setAttribute(node_id, "pathways", cpd.pathways.join(', '))
    end

    JOptionPane.showMessageDialog(
    nil, "Finished", "JRuby on Cytoscape",
    JOptionPane::INFORMATION_MESSAGE)
    )
  end
end

class RubyPlugin < CytoscapePlugin
  def register_menu
    cyMenus = Cytoscape.getDesktop().getCyMenus()
    cyMenus.addAction(RubyAction.new)
  end
end

RubyPlugin.new.register_menu()

GithubCytoscape用のrubyとかpythonスクリプトを貯めていこうと思います。よろしくお願いします。
http://github.com/kozo2/rubyKEGGplugin

最近のbiopython環境構築方法について

最近はbiopythonもcvs以外にgithubでソース管理してるみたいです。そこで最近なりのbiopython環境構築方法まとめてみます。
biopythonのdependenciesにはnumpy, reportlab, MySQLdb, flexといったものがありますが、とりあえずnumpy以外のは絶対必要ってわけではないので省略します。もしグラフィックス関係とかやりたいならnumpy以外のも入れてください。
もしヘッダいれてなかったらsudo aptitude install python-dev的なこと事前にしておいてください。
それじゃ書いてみる。

とりあえずソースをとってくる

  • virtualenv, numpy
cd
mkdir sources
cd sources
svn co http://svn.colorstudy.com/virtualenv/trunk virtualenv
svn co http://svn.scipy.org/svn/numpy/trunk numpy
git clone git@github.com:kozo-ni/biopython.git

virtualenv環境を作るアンドactivate

cd
cp sources/virtualenv/virtualenv.py ./
python virtualenv.py ENV
source ENV/bin/activate

installしてく

  • まずはnumpy
cd sources/numpy
python setup.py build
python setup.py install
  • 次にbiopython
cd ../biopython
python setup.py build
python setup.py test
python setup.py install

buildとtest飛ばして最初にinstallしてもいけると思いますけどね。一応インタラクティブシェルとかで

from Bio.Seq import Seq

とかやってみてください。
このやり方でうまくいかんかったら教えてください。
以上。

hdparmコマンドでHDDの情報を取得する

最近1TのHDDが売れてるようなので、自分のサーバのHDDはどんなもんかなと思い調べてみた。

sudo hdparm -I /dev/sda                                   

/dev/sda:

ATA device, with non-removable media
	Model Number:       WDC WD1601ABYS-18C0A0                   
	Serial Number:      WD-WCAS2C304244
	Firmware Revision:  06.06H05
	Transport:          Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5

Western Digital の160Gらしい。