ipa未踏ソフトウェア ruby言語による生物化学 情報基盤ライブラ...
TRANSCRIPT
2005年度上期IPA未踏ソフトウェア キックオフセミナー
Ruby言語による生物化学情報基盤ライブラリの開発
::: BioRuby + ChemRuby :::
片山 俊明 <[email protected]>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
全てはクマゲのために