49
g. p r o d u c t i o n 0 Institute for Advanced Biosciences, Keio University Graduate School of Media and Governance Expertise: Bioinformatics, Systems Biology Kazuharu Arakawa

OB9-G-language-Arakawa

Embed Size (px)

Citation preview

Page 1: OB9-G-language-Arakawa

g.

pr

od

uc

ti

on

0Institute for Advanced Biosciences, Keio UniversityGraduate School of Media and GovernanceExpertise: Bioinformatics, Systems Biology

Kazuharu Arakawa

Page 2: OB9-G-language-Arakawa

G-language GAE v.2に向けてオープンバイオ9 / SIG-BMK 2008.03.07 荒川和晴

Page 3: OB9-G-language-Arakawa

バイオインフォマティクスと生物学

生物生物データ

仮説

データ解析

データ処理

実験

必要なデータの示唆

データマイニング

シミュレーション

解釈

思考

観察・解釈

実験による検証

遺伝的改変・合成

Page 4: OB9-G-language-Arakawa

研究の流れ(実際の手順)

問題発見

プログラミング・プロトコル/ワークフロー設定

プログラムの実行・実験

結果の解釈

Page 5: OB9-G-language-Arakawa

研究の流れ(バイオインフォマティクス)

問題発見

プログラミング・プロトコル/ワークフロー設定

プログラムの実行・実験

結果の解釈

Page 6: OB9-G-language-Arakawa

研究の流れ(バイオインフォマティクス)

問題発見

プログラミング・プロトコル/ワークフロー設定

プログラムの実行・実験

結果の解釈

Page 7: OB9-G-language-Arakawa

研究の流れ(バイオインフォマティクス)

問題発見

プログラミング・プロトコル/ワークフロー設定

プログラムの実行・実験

結果の解釈

“君たち,いくら大問題を瞬時に計算できたところで,プログラムの設定に何日もかかっていては意味がない” von Neumann

Page 8: OB9-G-language-Arakawa

Bio*

研究の流れ(バイオインフォマティクス)

問題発見

プログラミング・ワークフロー設定

プログラムの実行

結果の解釈

Page 9: OB9-G-language-Arakawa

Bio*

研究の流れ(バイオインフォマティクス)

問題発見

プログラミング・ワークフロー設定

プログラムの実行

結果の解釈

Page 10: OB9-G-language-Arakawa

G-language GAE v.1

• 非常に簡単に使えるライブラリ

• 100以上の解析アプリケーション(多くがグラフィカルな出力を持つ)

• GUIによるワークフロー作成

• BioPerlの3倍程度高速

• BioPerlと高い親和性

2002.6月リリース

http://www.g-language.org/wiki/publications

Page 11: OB9-G-language-Arakawa

G-language GAE v.1

• 非常に簡単に使えるライブラリ

• 100以上の解析アプリケーション(多くがグラフィカルな出力を持つ)

• GUIによるワークフロー作成

• BioPerlの3倍程度高速

• BioPerlと高い親和性

2002.6月リリース

プログラミング

プログラミング ワークフロー設定 結果の解釈

プログラムの実行 ワークフロー設定

プログラムの実行

プログラミング

http://www.g-language.org/wiki/publications

Page 12: OB9-G-language-Arakawa

バージョン1はβ版。バージョン2から正式版。

• 100個も関数があってもドキュメントがない。

• インストールが死ぬほど大変。(RedHatの特定バージョン, Windows以外)

• Windowsをサポート。(開発コストが数倍)

• use Gだけですむけれど、全部読むから重い。

• 拡張性が低い(クラス設計が未熟)

• (BioPerlよりはマシとはいえ)まだまだ気が利いてない。

Page 13: OB9-G-language-Arakawa

Bio*

研究の流れ(バイオインフォマティクス)

問題発見

プログラミング・ワークフロー設定

プログラムの実行

結果の解釈

Page 14: OB9-G-language-Arakawa

Bio*

研究の流れ(バイオインフォマティクス)

問題発見

プログラミング・ワークフロー設定

プログラムの実行

結果の解釈

試行錯誤のプロセスが一番時間がかかる

Page 15: OB9-G-language-Arakawa

G-language GAE v.2

• G::IO• 気の利いたコア• 圧倒的な高速化• 仮想メモリ• Plugin機能

• Shell

• G::DB::BDB

• G::Infinity

• G::Inspire

2008年リリース予定(現在1.8.2)

• 全体• 200以上のアプリ• コード最適化• CPAN型インストーラ• ドキュメント整備• 新ウェブサイト• GUI/Shell/Perlのシームレスな連携

• プラットフォーム• Windowsサポート終了• MacOS Xがメイン• KNOB

Page 16: OB9-G-language-Arakawa

G::IO (コアクラス - codename Skyline)• モジュールロードの遅延処理により、起動が10倍以上高速化(ほぼ起動時のオーバーヘッドはなしに)

• 効率的なデータキャッシュにより、ゲノムファイルのロードを5~10倍高速化

• 大量のアクセッサー追加、データ構造アクセスの最適化

• 対応ファイル形式の大幅増(GenBank, EMBL, Fasta, swiss, SCF, PIR, GCG, raw, ace)、ネットワークファイルをUniform Sequence Accessで取得可(embl, genbank, genpept, swiss, refseq)。

• ~/Plug-in(あるいは$ENV{GLANG_PLUGIN})以下におかれた全.pmファイルの@EXPORTを自動的にロード。Gと同名のモジュールがあればオーバーライド。

• メンテナンスしやすいクラス構造

Page 17: OB9-G-language-Arakawa

スピード大腸菌ゲノム(4.6Mbp)のGenBankファイルを読み込むと・・・

Page 18: OB9-G-language-Arakawa

スピード

0 2.5 5.0 7.5 10.0

Bioperl

G

大腸菌ゲノム(4.6Mbp)のGenBankファイルを読み込むと・・・

Page 19: OB9-G-language-Arakawa

スピード

0 2.5 5.0 7.5 10.0

Bioperl

G 0.200

7.100

大腸菌ゲノム(4.6Mbp)のGenBankファイルを読み込むと・・・

Page 20: OB9-G-language-Arakawa

スピード

0 2.5 5.0 7.5 10.0

Bioperl

G 0.200

7.100

大腸菌ゲノム(4.6Mbp)のGenBankファイルを読み込むと・・・

バクテリア661種(1130 GenBankファイル)を対象:Intel Core 2 Duo Extreme 3 GHz Dual / 8GB RAM

全データをパース:86秒生物種毎にtRNA遺伝子のアノテーションを出力:130秒

BioPerlなら数時間かかる

Page 21: OB9-G-language-Arakawa

コード比較:BioPerl vs Guse Bio::SeqIO;

$in = Bio::SeqIO->new(-file=>"ecoli.gbk", '-format'=>'GenBank');$seq = $in->next_seq();

foreach $feat ($seq->all_SeqFeatures()){next unless($feat->primary_tag eq ‘CDS’);print $feat->each_tag_value(“note”), “¥n”;

}

use G;

$gb = load ecoli;

foreach $cds ($gb->cds()){ say $gb->{$cds}->{note};}

Page 22: OB9-G-language-Arakawa

コード比較:BioPerl vs Guse Bio::SeqIO;

$in = Bio::SeqIO->new(-file=>"ecoli.gbk", '-format'=>'GenBank');$seq = $in->next_seq();

foreach $feat ($seq->all_SeqFeatures()){next unless($feat->primary_tag eq ‘CDS’);print $feat->each_tag_value(“note”), “¥n”;

}

use G;

$gb = load ecoli;

foreach $cds ($gb->cds()){ say $gb->{$cds}->{note};}

use Bio::DB::GenBank;use Bio::Seq;

$gb = new Bio::DB::GenBank;$seq = $gb->get_Seq_by_acc(“NC_000913”);

# $gb = load(“genbank:NC_000913”);

Page 23: OB9-G-language-Arakawa

Shell• UNIXコマンド、Perlが一行単位で扱えるシェル

• タブ補完(ファイル名・関数名)、Emacsキーバインド、ヒストリー

• 作業ログ(そのままPerlスクリプトとして実行可能)

• 永続ワークスペース

• ヘルプ機能(G, BioPerlのドキュメント)

• Pubmed, Entrez検索

• $gb->find() • 試行錯誤を行う上で最高のツール

Page 24: OB9-G-language-Arakawa
Page 25: OB9-G-language-Arakawa
Page 26: OB9-G-language-Arakawa

BDB: Bluebird/Orochi (ActiveRecord/OR mapper)

• ActiveRecordソフトウェアデザインパターン(Martin Fowler, 2002)

• データベースの1つのビュー(テーブル)が1つのクラスにORマッピングされ、ドメインロジックが自動生成されるパターン。

• BDBではこれをPerlData(多次元ハッシュ構造体)に対応させるので厳密にはActiveRecordではない。ただし、G::IO(Skyline)型構造体は例外的にG::IOクラスにマッピングされる。

• 無限次元ハッシュ構造体に対応。

• SQLiteをバックエンドに使用。が、ありとあらゆるDBで利用可能。(DBI)

• SQLiteはGと一緒に勝手にインストールされ、一緒にセットアップされる。設定などは一切不要。

• 効率的なデータキャッシュにより、DBへのアクセスは最小になっている

Page 27: OB9-G-language-Arakawa

Virtual Memory

G-language GAE v.1

Pre

lud

e

Od

ysse

y

Perl Interpreter

Flatfile Database

GenBank EMBL SWISS

Syste

ms

file

stdin

RAM

outfile

Virtual Memory

G-language GAE v.2

Skylin

e

Od

ysse

y

Perl Interpreter

Flatfile Database

GenBank EMBL SWISS

Syste

ms

file

stdin

RAM

outfile

DB

D

DB

I

RDBMS

PostgreSQL

mySQL

Oracle

Sybase

Informix

Before Bluebird…

With Bluebird…

Bluebird

DBMS

Bluebird DBMS

Page 28: OB9-G-language-Arakawa

BDB: Bluebird• APIはSDBと類似。

• データはViewでもOK。(事前にSQLにてcreate viewは当然必要)

• データは当然リモートでもOK。

$gb = load("ecoli");db_save($gb, "ecoli");         #データベース作成

$gb = db_load("ecoli");         #ActiveRecord生成say $gb->cds();       #データベースから取得say $gb->{thrA}->{translation};     #データベースから取得$gb->{recA}->{note} .= “ appending comment to DB”;   #データベースに代入

$gb = db_load("ecoli", "clone");     #メモリに再取り込み

$db = db_load("gene", -driver=>"mysql", -database=>"mus_musculus_core_46_36g", -host=>"ensembldb.ensembl.org", -port=>3306, -primarykey=>"gene_id" );say $db->{239967}->{status};

Page 29: OB9-G-language-Arakawa

BDB: Bluebird ユーズケース• 一部分しか利用しない大規模データを扱う

• UniProt KB (Swiss-Prot + TrEMBL)を全部メモリに入れるのは現実的ではないが、BDBなら必要なエントリを必要なときにだけ、メモリで扱うのと同じ使い勝手でとってこれる。

• データベースクエリの利点を使う

• create viewにより目的に応じてデータベース結合をしたり、 $bdb->search()によりSQL文で検索ができる。

• 複数のプログラムから同じ構造体をリアルタイムに編集しながら扱う

• Infinityとの連携(後述)

• データベースを扱いたいような場合に簡単にPerlDataとして扱える

• ウェブとの連携、EnsEMBLのような外部DBの利用

Page 30: OB9-G-language-Arakawa

Infinity: (疑似共有メモリ分散コンピューティング)

• PCクラスタ環境は通常Beowulf構成(共有ハードドライブ、非共有メモリ)

• スーパーコンピュータのように共有メモリではない

• 共有メモリ環境(スーパーコンピュータ)上でプログラムを共有するにはCORBA通信やスレッディングを考慮する必要がある

• グリッドコンピューティングの効率的な付加分散などの手軽さがない

• InfinityはPerlにおけるイテレータクロージャ単位の分散がコード中で可能

• 分散方法はグリッドコンピューティング

• メモリの共有は定数はSDB、変数はBDBで実現

Page 31: OB9-G-language-Arakawa

Flatfile DatabaseGenBank EMBL SWISS

G-language GAE v.2 core

Skyli

ne

Ody

ssey

Perl Interpreter

Syst

emsfile

stdin

Virtual Memory

RAM

outfile

DBD

DBI

RDBMSPostgreSQL mySQLOracle SybaseInformix

Bluebird DBMS

user

G s

erve

rap

ache

G client

browser

HTML

dynamic TCP/IP

static CGI

Internet

DBD

DBI

RDBMSPostgreSQL DB2mySQL informixOracle sybase

Bluebird DBMS TCP/IP

Infinity

Page 32: OB9-G-language-Arakawa

Infinity: コード例sdb_save($gb, “gb”);

my $init_sub = '$gb = sdb_load($gb);';

my $loop_sub = ‘ my $seq = translate( $gb->get_geneseq( $_ ) ); next if ( length $seq < 300 ); to_fasta($seq, -name=>”$gb->{$_}->{gene}|$gb->{$_}->{product}”, -output=>”f”, -filename=>”/tmp/$_.fst); system( "blastall -p blastp". " -d /db/sp_blast/sp". " -i /tmp/$_.fst". " -o /home/gaou/tmp/$_.rst" ); ‘;

my $end_sub = 'system( "rm -r /tmp/*.fst" );';

$gb = load “ecoli”;my @cds = $gb->cds();

distribute( $init_sub, $loop_sub, $end_sub, ¥@cds );

Page 33: OB9-G-language-Arakawa

2Genome Analysis EnvironmentSimulation Environment

e

benchmark kevin & samaguchi

Server & CPU Speed

kevin 1cpu 1.00

kevin 2cpu 1.63

kevin 1cpu + samaguchi 1 cpu 1.97

kevin 4cpu 2.30

kevin 2cpu + samaguchi 2cpu 3.22

kevin 4cpu + samaguchi 4cpu 4.61

CPU: Pentium 4 Xeon Dual 2.8GHz + Hyper Threading Technology

Memory: 4GB

computational time (s)

Page 34: OB9-G-language-Arakawa

Inspire: WebベースGUIフレームワーク• GUIの開発は非常にコストがかかり、専門知識がないと難しい

• HTMLベースであれば、容易にマルチメディアを駆使したものが誰でも簡単に作れる

• AJAXの浸透により、ウェブアプリケーションはデスクトップアプリケーションと比較して遜色なくなってきている。

• Google Docs、iPhone/iPod Touchアプリケーション

• Windowsは、Internet ExplorerをOSの基盤に融合したために、インタフェース上の限界がウェブと同等になってしまった。結果的に、少しでも 洒落たウェブのインタフェースはWindowsのアプリケーションに勝る。

• ウェブ上の無限のリソースと連携可能

Page 35: OB9-G-language-Arakawa

ajax - asynchronous javascript and xml

javascript + xmlHttpRequest

ブロードバンド

高速CPU

XML

Page 36: OB9-G-language-Arakawa

Adobe AIR

Flash/Flex, HTML/AJAXベースのウェブアプリを

簡単にデスクトップアプリに

Apple DashboardWindows GadgetSlingshot (Rails)

etc...

Page 37: OB9-G-language-Arakawa

Inspire: WebベースGUIフレームワーク• GUIの開発は非常にコストがかかり、専門知識がないと難しい

• HTMLベースであれば、容易にマルチメディアを駆使したものが誰でも簡単に作れる

• AJAXの浸透により、ウェブアプリケーションはデスクトップアプリケーションと比較して遜色なくなってきている。

• Google Docs、iPhone/iPod Touchアプリケーション

• Windowsは、Internet ExplorerをOSの基盤に融合したために、インタフェース上の限界がウェブと同等になってしまった。結果的に、少しでも 洒落たウェブのインタフェースはWindowsのアプリケーションに勝る。

• 一方で、ウェブアプリケーションはローカルファイルにアクセスできない

• ウェブサーバを含めてしまえばいい!

• ウェブ上の無限のリソースと連携可能

Page 38: OB9-G-language-Arakawa

Inspire: WebベースGUIフレームワーク

HTML

JavaScript

FLASH QuickTime

Plug-in CSS

HTTP Server

CGI

G-language

Client

Local File

Ext-JS/YUIBDB

RDB

Perl

Remote File

Adobe AIRブラウザ、Flex/FlashJavaScript/Ext-JS:YUI

+ ApacheCGI/Perl - G-language

Page 39: OB9-G-language-Arakawa

Inspire例• Genome Projector

• 次に河野君から発表

• Document Center

• G自体のGUIも作りたい。

http://www.g-language.org/gdoc/

Page 40: OB9-G-language-Arakawa

ウェブサービスとの連携• BioHackathon 2008

• BioMOBYのウェブサービスを検索可能に

• help -w

• ws()でサービスを実行可能

Page 41: OB9-G-language-Arakawa

ウェブサービスとの連携• BioHackathon 2008

• BioMOBYのウェブサービスを検索可能に

• help -w

• ws()でサービスを実行可能

Page 42: OB9-G-language-Arakawa

今後の課題(1)アプリケーション• KNOBはやはり使いやすい。アプリケーションインストールの手間は無視できない

• G-language Mac版は既にEMBOSSやRを同梱

• これを押し進めて、ワンパッケージでなんでも動く環境を。次期リリースでは早速EMBOSSをより使いやすく設定し、BLASTなどを含める予定。

• ウェブサービスとの連携

• help -w にMOBY以外のウェブサービスも追加

• 類似サービスでの分散

• ローカルにインストールされている場合はローカルアプリを、ない場合はウェブサービスを使うような、気の利いた自動判別を行えるインタフェースを。

Page 43: OB9-G-language-Arakawa

今後の課題(2)新しいGUI• まずインストールで問題の多いGDやChart::Graph::GnuplotをInspireに移行

• その場でコマンドを打ちながら、リアルタイムに結果が変わり、同じ事をGUIでも操作できる新GUIを開発する

• イメージ的にはApple Motion。タイムラインにオブジェクトが存在し、「ビヘイビア」に相当する解析をかぶせていくことで解析を実現

• リアルタイムにtoggle可能なパラメータ、「ゆらぎ」をもたせた結果オブジェクトなどもできれば実現したい。(勝手に近傍のパラメータでバックグラウンドでデータを出し、結果がたまにこれらのパラメータで「ゆらいで」見える)

• LayerKit(CoreAnimation)?

Page 44: OB9-G-language-Arakawa

今後の課題(3)ドキュメンテーション

• 新ウェブサイト

• 英語・日本語のチュートリアルやマニュアル

• AJAX Document Center

• 解析に重点を置いたレビュー投稿中

• オープンバイオ本!

• 徹底的なドキュメント作成

• 目的別の用例集

• チュートリアル

• tutorial / exampleコマンド?

Page 45: OB9-G-language-Arakawa

今後の課題(4)ファジーな解析機能

• ファジーな解析機能

• たとえば、localAlignment()という関数が、速度重視の時はBLATで、細かくみたいときはssearchで(当然Infinity使って)、通常はBLATで初期フィルタ、次にBLAST、その次にssearchなど、勝手に使い分けてくれると非常に嬉しい。

• multipleAlignment()でMAFFT, ClustalW、T-COFFEE、MUSCLEなども同様。

Page 46: OB9-G-language-Arakawa

今後の課題(5)データキャッシュ• データキャッシュ

• ほとんどの解析は、世界中のバイオインフォマティシャン総体でみたときに、重複が多いはず。例えばヒトゲノムをUniProtにあてるなど。こういう結果をキャッシュを使ってすぐに返せるようにしたい。

• ウェブサービスの新しい形態?

• あらかじめデータをキャッシュしておけば、類似する結果とかをだしてあげることができるので、「ゆらぎ」のあるGUIと連携できるんじゃないか。

Page 47: OB9-G-language-Arakawa

ロードマップ

• ~1.8.10• 新インストーラ• G::Seq::, G::Tools::, G::SystemsBiology::クラス群リファクタリング、ドキュメント整備

• ~1.8.20• G::IO::, G::DB::クラス群リファクタリング

• ~1.9.x• 新GUI

• なるべく年内に2.0を目指す

Page 48: OB9-G-language-Arakawa

鶴岡市Tsuruoka City

山形県

Page 49: OB9-G-language-Arakawa

Thank you.