ipa未踏ソフトウェア ruby言語による生物化学 情報基盤ライブラ...

Post on 31-Jul-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2005年度上期IPA未踏ソフトウェア キックオフセミナー

Ruby言語による生物化学情報基盤ライブラリの開発

::: BioRuby + ChemRuby :::

片山 俊明 <k@bioruby.org>http://bioruby.org/

東京大学医科学研究所ヒトゲノム解析センター

+ BioRuby: 中尾 光輝(産総研), 後藤 直久(阪大)

+ ChemRuby: 田中 伸也(京大)

http://bioruby.org/国際交流:O|B|F (http://open-bio.org)BioPerl, BioPython, BioJava, ..

国内普及:オープンバイオ研究会(http://open-bio.jp)

開発メンバー

後藤直久BioRuby

中尾光輝BioRuby

片山俊明BioRuby

田中伸也ChemRuby

Ewan BirneyBioPerl

ハッシュ蓮珠

アレイ藍鈴

-ATGCTTCAG-:::::::::-TACGAAGTC-

ゲノム日々更新される膨大な配列情報と

アノテーション情報 (TB)

2004年までに200種以上のゲノム解読が完了

0

50

100

150

200

250

1995199619971998199920002001200220032004

ヒトゲノム完了2000 / 1 / 27

生物種数

RefSeq

PDB

PubMed

PubChem

GenPept

EMBL

UniProt

GenBankDNA(ゲノム,遺伝子)タンパク質配列DB GENES

ENZYME

PATHWAY

COMPOUND

タンパク質立体構造

遺伝子発現

UCSC

文献情報

Ensembl

KEGGDAS

化学計算ソフトウェア

解析ソフトウェア

HMMER

TINKER

各種フォーマット

酵素,化合物DB

LIGAND

ポストゲノム時代

遺伝子 病気 薬

ヒトゲノムはわかったがまだ

よくわからないな~

• 回路図 ( パスウェイ )

• I/Oデータ ( 化学物質 )

• リバースエンジニアリング( マイクロアレイ、遺伝子チップ )

遺伝子はコンピュータでいうと部品の一つ

ポストゲノムだ!

ポストゲノム:Bio + Chem

遺伝子ネットワーク

代謝パスウェイ

ケミカルコンパウンド

ゲノム(Bio)と化学物質(Chem)のつながり(パスウェイ)がポストゲノムの課題

BOSC2005

配列解析だけの時代は終わった→パイプライン、グリッド

バイオインフォマティクス分子生物学計算生物学

* 配列解析 * 立体構造 * シミュレーション

* 遺伝コード * ゲノム

* 分子進化

インターフェースBioRuby

実装

生命の情報表現MMEILRGSPALSAFRINKLLARFQAARLPVHNIYAEYVHFADLNAPLNDDEHAQLERLLKYGPALASHAPQGKLLLVTPRPGTISPWSSKATDIAHNCGLQQVNRLERGVAYYIEAGTLTNEQWQQVTAELHDRMMETVFFALDDAEQLFAHHQPTPVTSVDLLGQGRQALIDANLRLGLALAEDEIDYLQDAFTKLGRNPNDIELYMFAQANSEHCRHKIFNADWVIDGEQQPKSLFKMIKNTFETTPDHVLSAYKDNAAVMEGSEVGRYFADHETGRYDFHQEPAHILMKVETHNHPTAISPWPGAATGSGGEIRDEGATGRGAKPKAGLVGFSVSNLRIPGFEQPWEEDFGKPERIVTALDIMTEGPLGGAAFNNEFGRPALNGYFRTYEEKVNSHNGEELRGYHK

配列データ (GenBank, UniProt,......)

立体構造 (PDB,......)HEADER LIGASE 15-DEC-04 1VQ3 TITLE CRYSTAL STRUCTURE OF PHOSPHORIBOSYLFORMYLGLYCINAMIDINE TITLE 2 SYNTHASE, PURS SUBUNIT (EC 6.3.5.3) (TM1244) FROM TITLE 3 THERMOTOGA MARITIMA AT 1.90 A RESOLUTION :ATOM 1 N HIS A -3 70.636 28.979 8.146 1.00 32.07 N ATOM 2 CA HIS A -3 70.436 29.954 7.050 1.00 28.18 C ATOM 3 C HIS A -3 69.098 30.657 7.163 1.00 26.01 C ATOM 4 O HIS A -3 68.684 31.308 6.214 1.00 29.86 O ATOM 5 CB HIS A -3 70.492 29.234 5.702 1.00 33.52 C

Affymetrix:CompositeSequence:HG_U95Av2:AFFX-HUMGAPDH/M33197_5_at AFFX-HUMGAPDH/M33197_5_at IPB000173 1.4.1.16 M33197 ENSG00000111640 7Affymetrix:CompositeSequence:HG_U95Av2:AFFX-HUMGAPDH/M33197_M_at AFFX-HUMGAPDH/M33197_M_at IPB000173 1.4.1.16 M33197 ENSG00000111640 7Affymetrix:CompositeSequence:HG_U95Av2:AFFX-HUMGAPDH/M33197_3_at AFFX-HUMGAPDH/M33197_3_at IPB000173 1.4.1.16 M33197 ENSG00000111640 7

発現データ (ArrayExpress,.......)<?xml version="1.0" standalone="yes"?><!DOCTYPE DASGFF SYSTEM "http://www.biodas.org/dtd/dasgff.dtd"><DASGFF><GFF version="1.01" href="http://das.hgc.jp/cgi-bin/das/eco/features?segment=eco%3A2671072%2C2721071"><SEGMENT id="eco" start="2671072" stop="2721071" version="1.0"> <FEATURE id="EC:1.14.12.17/7199" label="1.14.12.17"> <TYPE id="enzyme:KEGG" category="enzyme">enzyme:KEGG</TYPE> <METHOD id="enzyme">enzyme</METHOD> <START>2683857</START> <END>2685047</END>

XML (DAS, KGML,......)

BioRubyの必要性• バイオインフォマティクスの広がり(新規参入者増加)

• バイオ系から(利用者) >> インフォ系から(開発者)

• 扱うデータは大規模(TB)かつ多種多様(>700DB)• バイオ系ではデータフォーマットの変換でさえハードル

• プログラミングは避けがたく Perl は広く使われている

• PCR, 制限酵素 ⇔ my, $_, @ISA, デリファレンス???

• 先行する BioPerl はプロ仕様、日本のユーザは少ない

• バイオ系利用者でも日常のツールとして使えるものを• Perlと同様にパワフルで記述の分かりやすいRubyで• 国内のニーズ、日本語によるドキュメンテーション

NAR DB issue

The 2005 update includes

719 databases

ケモインフォマティクス情報化学計算化学

* 量子化学計算 * 分子力学 * 確率論的計算

* 薬っぽさ * 部分構造マッチ * 対称性 * データ検索

インターフェースChemRuby

実装

化学物質の情報表現CC1C(C(CC(O1)OC2C(C(C(OC2OC3=C4C=C5C=C3OC6=C(C=C(C=C6)C(C(C(=O)NC(C(=O)NC5C(=O)NC7C8=CC(=C(C=C8)O)C9=C(C=C(C=C9C(NC(=O)C(C(C1=CC(=C(O4)C=C1)Cl)O)NC7=O)C(=O)O)O)O)CC(=O)N)NC(=O)C(CC(C)C)NC)O)Cl)CO)O)O)(C)N)O

線形化学表現 (SMILES, InChI,......)

結合表 (MDL, Tinker,......) ISISHOST03240423012D 1 1.00000 0.00000 9

5 4 0 0 0 999 V2000 -0.0414 0.1586 0.0000 P 0 0 3 0 0 0 0 0 0 -0.7621 -0.2517 0.0000 O 0 0 0 0 0 0 0 0 0 0.6759 -0.2517 0.0000 O 0 0 0 0 0 0 0 0 0 0.1724 -0.6414 0.0000 O 0 0 0 0 0 0 0 0 0 -0.0414 0.9897 0.0000 O 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 1 3 1 0 0 0 1 4 1 0 0 0 1 5 2 0 0 0M END

00000000: 0d6a 4344 3031 3030 0403 0201 0000 0000 .jCD0100........00000010: 0000 0000 0000 0000 0000 0000 0300 0e00 ................00000020: 0000 4368 656d 4472 6177 2037 2e30 0800 ..ChemDraw 7.0..00000030: 0f00 0000 6879 7065 7269 6369 6e2e 6364 ....hypericin.cd00000040: 7800 0332 0008 00ff ffff ffff ff00 0000 x..2............00000050: 0000 00ff ff00 0000 00ff ffff ff00 0000 ................00000060: 00ff ff00 0000 00ff ffff ff00 0000 00ff ................

バイナリ (CDX,.......)<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE CDXML SYSTEM "http://www.cambridgesoft.com/xml/cdxml.dtd" ><CDXML CreationProgram="ChemDraw 7.0" Name="hypericin.mol" BoundingBox="67.44 97.35 301.63 315.25"

XML (CML, CDXML,......)

化学物質の性質水素結合?

芳香族性?

環の数は?

似た化学物質?

部分構造?キラル中心?

• 部分構造検索DBエンジン

• 分子力学計算

グラフアルゴリズム

ChemRubyの必要性

• 化合物のDBと表現フォーマットはこれまた多種多様

• ChemRuby では kcf, sdf, rdf, rxn, mol, msi, g98, cdx に対応

• フォーマット変換、EPSなど画像での出力も可能

• OpenBabel (sf.net) - 不完全なフォーマット変換ツールは存在

• 計算科学ソフトウェアへのインターフェイス• 分子モデリング (tinker)

• 化合物の構造検索アルゴリズム

• 部分構造検索 (subcomp), グラフとしての幅優先探索

ゲノム創薬

遺伝子チップ

代謝マップ

Innovation & Business Architecture Inc.

ロボット化学実験

BioRuby ChemRuby

化学物質遺伝情報

新しい実験手法

RefSeq

PDB

PubMed

PubChem

GenPept

EMBL

UniProt

GenBankDNA(ゲノム,遺伝子)タンパク質配列DB GENES

ENZYME

PATHWAY

COMPOUND

タンパク質立体構造

遺伝子発現

UCSC

文献情報

Ensembl

KEGGDAS

Bio::DAS(REST CGI)

Bio::Flat(BDB)Bio::Fetch(HTTP)Bio::SQL(RDB)

Bio::KEGG::API(SOAP/WSDL)

Bio::GenBank,Bio::EMBL etc.

E-Utils(CGI)

Bio::Pathway化学計算ソフトウェア

解析ソフトウェア

Bio::Sequence

Bio::Reference

Bio::BLAST,Bio::HMMER etc.

HMMER

TINKER

各種フォーマット

酵素,化合物DB

LIGAND

BioRuby + ChemRuby

KEGG 京大で開発され、世界的に広く利用されている代謝パスウェイ中心のDB

BioRuby + KEGG API発現変化パスウェイの探索定期的な作業の自動化

ChemRuby + subcomp類似構造検索創薬ターゲット

片山:KEGG API (SOAP サーバ), KEGG DAS (ゲノムブラウザ) 等の開発

田中:類似構造検索アルゴリズム開発

# 枯草菌のパスウェイ106枚中の1枚(アミノ酸合成経路)に# 栄養源枯渇時の遺伝子発現データを色でマッピング

# process KEGG Expression data here...

serv = Bio::KEGG::API.newlist = serv.list_pathways(org)list.each do |path| pathway = path.entry_id fg_list = Array.new bg_list = Array.new genes = serv.get_genes_by_pathway(pathway) genes.each do |gene| fg_list << "#000000" bg_list << hash[gene] || "#cccccc" end url = serv.color_pathway_by_objects(pathway, genes, fg_list, bg_list) serv.save_image(url)end

Connectseamlessly..

Rubyの優位点• ユーザ:生物系、化学系の実験屋さんにも敷居が低い• 開発者:アイデアの実現が早い

• オブジェクト指向• バイオインフォで扱うモノ(遺伝子、化合物、グラフ)→複雑なデータ構造

• 標準添付ライブラリが充実(CGI~SOAPまで)

• インストール手順がとても簡単に• 国産である

ユースケース• 必要なデータをネットから取得• ローカルでデータを加工• ネット経由で計算を投げる• 統計処理• ビジュアライズ

実行速度より実装速度

Rubyは遅い!?

• BioPerlより20倍速い• ややこしい計算はCで拡張

• YARVが49倍速くしてくれる

• 7月末 BioRuby 0.6.3 リリース(肉の日)

• Ruby1.8 用の BioRuby 0.7 開発開始

• 9月末 API見直し、UnitTest

• 英文ドキュメントの整備開始• 11月 チュートリアルのドキュメント完成

• 12月 講習会、OpenBio研究会の開催

• 2月 BioRuby 1.0 ChemRuby 1.0

BioRuby/ChemRuby組の課題

1. ドキュメント整備2. 普及促進3. 機能追加4. 生物情報学+化学情報学5. 高品質化6. 開発の促進 - 地理的隔離

BioRuby/ChemRuby組の課題

1. API の RDoc 化、チュートリアル文書2. 普及促進3. 機能追加4. 生物情報学+化学情報学5. 高品質化6. 開発の促進 - 地理的隔離

BioRuby/ChemRuby組の課題

1. API の RDoc 化、チュートリアル文書2. 学会発表、講習会の開催3. 機能追加4. 生物情報学+化学情報学5. 高品質化6. 開発の促進 - 地理的隔離

BioRuby/ChemRuby組の課題

1. API の RDoc 化、チュートリアル文書2. 学会発表、講習会の開催3. インタラクティブなシェル4. 生物情報学+化学情報学5. 高品質化6. 開発の促進 - 地理的隔離

BioRuby/ChemRuby組の課題

1. API の RDoc 化、チュートリアル文書2. 学会発表、講習会の開催3. インタラクティブなシェル4. BioRuby + ChemRuby 融合5. 高品質化6. 開発の促進 - 地理的隔離

BioRuby/ChemRuby組の課題

1. API の RDoc 化、チュートリアル文書2. 学会発表、講習会の開催3. インタラクティブなシェル4. BioRuby + ChemRuby 融合5. Test::Unit を利用6. 開発の促進 - 地理的隔離

BioRuby/ChemRubyで解決!

1. API の RDoc 化、チュートリアル文書2. 学会発表、講習会の開催3. インタラクティブなシェル4. BioRuby + ChemRuby 融合5. Test::Unit を利用6. 旅費問題が解決 - 合宿

(1)

ドキュメントせいび

チュートリアル

日本語版更新!

英語版新規!

Thank you, Pjotr!(たぶん、どっちか)

http://bioruby.org/rdoc/

• RDoc 化で、これまで眠っていたドキュメントが表舞台に。

開発ガイドライン

• README.DEV ファイルを書いた

• コントリビュートの方針• LGPL ライセンスについて

• コーディングスタイル• 名前空間、Test::Unit、autoload など

書籍でも紹介「BioPerlが提供している機能は多いですが、各モジュールがばらばらで開発されているように感じます。その点、プログラミングのしやすさとソースコードの読みやすさではBioRubyに軍配が上がると思います。」

(2)

普及促進

BOSC2005

• Bioinformatics Open Source Coference

• 2005/06/23

• @デトロイト

BioPerl

第4回関西Ruby

勉強会• 河野信さん• ユースケース

• 後藤直久• 概要

かずさDNA研究所で発表

BioRuby/ChemRuby実習• 科学技術振興調整費 ゲノム情報科学教育機構の人材養成講義

(3)

機能追加

autoload 化

• 起動時間 ruby -r bio -e 0 が 30 倍高速に

% repeat 10 { time ruby -r bio -e 0 }-------------------------------------------------------------0.6.4: 0.74s user 0.16s system 1.082 total0.7.0 (9/10): 0.01s user 0.01s system 0.033 total

シェルの開発

• エンドユーザがスクリプトを書かなくて良いように• bioruby コマンド -- irb を流用

• ヒストリ• オブジェクト保存• スクリプト生成• 配列操作、DB入出力などのショートカット

追加ライブラリ• パスウェイ関係• Bio::KEGG::KGML

• 遺伝子発現データ• Bio::KEGG::EXPRESSION

• 表示系• Bio::ColorScheme

(4)

イヒ学

ゲノム創薬

遺伝子チップ

代謝マップ

Innovation & Business Architecture Inc.

ロボット化学実験

BioRuby ChemRuby

化学物質遺伝情報

新しい実験手法

ChemRuby

化学物質の情報表現

CC1C(C(CC(O1)OC2C(C(C(OC2OC3=C4C=C5C=C3OC6=C(C=C(C=C6)C(C(C(=O)NC(C(=O)NC5C(=O)NC7C8=CC(=C(C=C8)O)C9=C(C=C(C=C9C(NC(=O)C(C(C1=CC(=C(O4)C=C1)Cl)O)NC7=O)C(=O)O)O)O)CC(=O)N)NC(=O)C(CC(C)C)NC)O)Cl)CO)O)O)(C)N)O

線形化学表現 (SMILES, InChI,......)

結合表 (MDL, Tinker,......) ISISHOST03240423012D 1 1.00000 0.00000 9

5 4 0 0 0 999 V2000 -0.0414 0.1586 0.0000 P 0 0 3 0 0 0 0 0 0 -0.7621 -0.2517 0.0000 O 0 0 0 0 0 0 0 0 0 0.6759 -0.2517 0.0000 O 0 0 0 0 0 0 0 0 0 0.1724 -0.6414 0.0000 O 0 0 0 0 0 0 0 0 0 -0.0414 0.9897 0.0000 O 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 1 3 1 0 0 0 1 4 1 0 0 0 1 5 2 0 0 0M END

00000000: 0d6a 4344 3031 3030 0403 0201 0000 0000 .jCD0100........00000010: 0000 0000 0000 0000 0000 0000 0300 0e00 ................00000020: 0000 4368 656d 4472 6177 2037 2e30 0800 ..ChemDraw 7.0..00000030: 0f00 0000 6879 7065 7269 6369 6e2e 6364 ....hypericin.cd00000040: 7800 0332 0008 00ff ffff ffff ff00 0000 x..2............00000050: 0000 00ff ff00 0000 00ff ffff ff00 0000 ................00000060: 00ff ff00 0000 00ff ffff ff00 0000 00ff ................

バイナリ (CDX,.......)<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE CDXML SYSTEM "http://www.cambridgesoft.com/xml/cdxml.dtd" ><CDXML CreationProgram="ChemDraw 7.0" Name="hypericin.mol" BoundingBox="67.44 97.35 301.63 315.25"

XML (CML, CDXML,......)

化学的性質

• 水素結合の数• LogP

• 分子量• ケミカルオントロジー

特徴

Graph

性質を推定

毒類似

化合物の類似性から

グラフマッチ

• NP困難

• スパコン10 CPUでタイムアウト

• 実装がない• Boost Graph Library、VF

Adjacency Matrix

Adjacency Matrix

Finding Match Matrix

Match Matrix

ビット演算int numofbits(int bits) { int num = 0; int mask = 1; for( ; mask != 0 ; mask = mask << 1 ){ if( bits & mask ) num++ ; } return num;}

int numofbits(long bits) { bits = (bits & 0x55555555) + (bits >> 1 & 0x55555555); bits = (bits & 0x33333333) + (bits >> 2 & 0x33333333); bits = (bits & 0x0f0f0f0f) + (bits >> 4 & 0x0f0f0f0f); bits = (bits & 0x00ff00ff) + (bits >> 8 & 0x00ff00ff); return (bits & 0x0000ffff) + (bits >>16 & 0x0000ffff);}

http://www.hackersdelight.org/

融合

生化学情報はグラフが多い代謝経路 化学物質

タンパク相互作用

汎用グラフライブラリで API を共通化

• 遺伝子間相互作用のグラフ表現• 化合物のグラフ表現

(5)

テスト

Test::Unit

• 開発が平行して進んでいる• 当初予定より後回しに• 仕様の固まったものを中心に• 新規開発はテストファーストで• 現在、51.6% のファイルで完了

Test::Unit

• 困っている点• いろいろあったけどほぼ解決• ノウハウの蓄積

• ruby install.rb test

(6)

合宿

開発に専念

7回の合宿

地理的隔離を解消

おまけ

• KEGG API

24,24024,81528,52956,98658,125173,408248,281261,866

734,855

767,830

1,348,470

2,688,317

SOAP::Lite/Perl/0.60SOAP4R/1.5.3-ruby1.8.2Axis/1.2RC2SOAP4R/1.5.2SOAPpy/0.11.6Axis/1.2RC1SOAP::Lite/Perl/0.55Axis/1.1SOAPpy/0.12.0SOAP4R/1.5.3-ruby1.8.2-http-access2.rb/1.39Axis/1.2RC3Axis/1.2beta

KEGG API v3.2

KEGG API v4.0

24,26729,95371,742341,802367,343

433,063

619,851

1,422,207 1,536,014

1,840,929 SOAP4R/1.5.2SOAP4R/1.5.3-ruby1.8.2SOAP::Lite/Perl/0.60SOAPpy/0.12.0SOAP::Lite/Perl/0.55SOAPpy/0.11.6Axis/1.2.1Axis/1.2alphaAxis/1.2RC2SOAPpy/0.11.3

今後の予定

• 11 月 ドキュメント整備 - ほぼ完了

• 12 月 KAST 講習会、オープンバイオ研究会

• 1 月 シェル, Test::Unit 完成, YARV で試す?

• 2 月 BioRuby, ChemRuby 1.0 リリース

• 書籍(SciRuby, オープンバイオ本)、論文

デモ

• BioRubyシェル

• ChemRubyデモサイト

曲目一覧• 01_cpd_C00103

• 02_bsu_BG10189

• 03_cpd_C00668

• 04_bsu_BG12366

• 05_cpd_C05345

• 06_bsu_BG12644

• 07_cpd_C05378

• 08_bsu_BG10412

• 09_cpd_C00118

• 10_bsu_BG10827

• 11_cpd_C00236

• 12_bsu_BG12947

• 13_cpd_C00197

• 14_bsu_BG10898

• 15_cpd_C00631

• 16_bsu_BG10899

• 17_cpd_C00074

全てはクマゲのために

top related