Comments
Description
Transcript
ウェブサービスによる 国内外データベースの統合的な利用
DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 ウェブサービスによる 国内外データベースの統合的な利用 片山 俊明 東京大学医科学研究所ヒトゲノム解析センター ゲノムデータベース分野 助教(金久研究室) [email protected] 2008/11/28 DDBJing & KEGGing & PDBjing @ 京都大学バイオインフォマティクスセンター 自己紹介 片山俊明 <[email protected]> • KEGG • ウェブサービス KEGG API (SOAP/WSDL) • 分散ゲノムアノテーション KEGG DAS • オーソログクラスタ • BioRuby • オープンバイオ研究会 • IPA未踏ソフトウェア創造事業採択 • ライフサイエンス統合データベースプロジェクト • TogoDB, TogoWS, BioHackathon http://www.genome.jp/kegg/ http://das.hgc.jp/ http://oc.hgc.jp/ http://bioruby.org/ http://open-bio.jp/ http://togodb.dbcls.jp/ http://togows.dbcls.jp/ http://hackathon.dbcls.jp/ http://kumamushi.org/ http://kumamushi.net/ • クマムシゲノムプロジェクト • ゲノム特定「比較ゲノム」 4-2-1 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 トピックス • ライフサイエンス統合データベースプロジェクト - DBCLS • 統合のための方法 • 埋もれているデータベースの受け入れと横断検索 - TogoDB • 大規模データベース (DDBJ, KEGG, PDBj など) の連携 - TogoWS • ウェブサービスによる統合 • BioHackathon • SOAP と REST • マニフェスト • ユースケース、今後の方針 とは? • 文部科学省委託研究開発事業 • ライフサイエンス分野におけるデータベース統合化の拠点形成を目指す • 中核機関 • ライフサイエンス統合データベースセンター • 2007/4/1 情報・システム研究機構内に設立 • 研究参画機関 • JST, CBRC, かずさDNA研, 九大, 奈良先端, 長浜バイオ, 東大, お茶女 • 研究分担機関 • 京大, 東京医科歯科大, 阪大, 東大, 東海大, 日立 4-2-2 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 情報・システム研究機構 (ROIS) MEXT http://www.mext.go.jp/ ROIS http://www.rois.ac.jp/ http://www.dbcls.jp/ DBCLS http://www.nig.ac.jp/ NIG GenBank DDBJ NIPR EMBL NII http://www.nipr.ac.jp/ http://www.nii.ac.jp/ ISM http://www.ism.ac.jp/ ライフサイエンス統合DBセンター (DBCLS) • 中核機関 • センター長 高木利久 教授 • 実は東大内に存在 • この春、本郷→浅野に移転した 4-2-3 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 ライフサイエンス統合データベースセンター 共通基盤技術開発チーム 2007年度活動計画 より抜粋 + 更新 DBCLS: 高木, 山口, 山本 かずさ: 中尾 HGC: 川島, 片山 + 辻井研, 松本研, CBRC 2007/9/12@DBCLS CBRC 共通基盤技術開発チーム計画概要 2007年度∼ 2008年度∼ マッシュアップ ユーザー グリッド ウィジェット ワークフロー 認証 Kazusa DBCLS 外部サービス ポータル ウェブサービス SOAP/WSDL REST 受け入れDB用テンプレート なんでもGFF 整理棚検索 文献検索 OReFiL 統合DB検索 スキーマ設計 ユーザープロファイル 検索API コトノハDB 文献 WebリソースDB 4-2-4 独自DB 受け入れDB DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 基盤整備の4本柱 ● 次世代検索技術開発 1. 文献検索 ● 受け入れDB支援 TogoDB 2. DB構築テンプレート ● サービス統合支援 TogoWS 3. 統合ウェブサービス ● ポータル連携支援 4. OpenID ユーザ認証 ● 1. 文献検索 • フルペーパー取得システム開発 • 生物学ターム検出システム開発 • 既存システムのAPI標準化(ウェブサービス)-- BOB, BioTermnet, GENA • オンライン資源検索サービス -- OReFiL • 文献中の図表を検索するシステム開発 • 生物学者が満足できるレベルの文献検索技術の実現を目指す • 特定テーマのDBを構築するために必要なデータを論文から自動抽出 • マニュアルキュレーションによるフィードバック、ノウハウの蓄積 4-2-5 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 ● 2. DB構築テンプレート - TogoDB • DBの受け入れ作業には定型化できることが多いはず • 典型的なデータ型と、対応するスキーマの設計 • 統一感のある見た目と使いやすさを併せ持つウェブアプリ化 • 統合DBの横断検索用エンジンへの対応 • ウェブサービスによるAPI提供 • 多様な受け入れDBの和集合から必要な機能を抽象化し受け入れ業務を省力化 • まずは統合DB内で独自に新規作成するDBで利用可能に • 将来的には研究者がDBを構築したい場合に最初から受け入れる仕組みに • 現在は研究者が各自で科研費などを使ってどれも同じようなものを外注している • 使いやすいものが出来ているかどうかは発注者・受注者のセンスに依存して多様 • 研究者単位では永続的なデータベース提供は困難 ● 3. 統合ウェブサービス - TogoWS • DDBJ, PDBj, KEGG, CBRC, Riken など + EBI, NCBI etc. • 統合DBに移設して統合することは事実上無理 • ウェブサービスにより統合し、共通の SOAP/WSDL + REST API を提供 • 受け入れDBのウェブサービス対応による利用率向上を図る • TogoDB 内のデータをユーザのワークフローに組み込み可能 • 文献検索など、統合DB独自開発ツールのウェブサービス化 • マッシュアップ (Galaxy), ウィジェットの開発 4-2-6 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 ● 4. OpenID ユーザ認証 • 統合DBのサービスには、なんらかのユーザ認証システムが必要 • パーソナライズド・ポータル • ユーザの行動や好みをインターフェイスや検索結果の向上に反映 • アノテーション • 誰が何をやったかの記録が必要なサービス • OpenID:サイト間、サブドメイン間で共通に認証できる技術 • サービスが増えてもユーザは1つのパスワードだけ覚えておけば良い • http://***.dbcls.jp/ で共通なログインシステム • かずさや CBRC でも統合DBの OpenID 認証を信頼し利用 TogoDB + TogoWS => ? ● TogoDB DBの受け入れから統合的な検索サービス公開までの技術的な支援 ● TogoWS 必要なツールやワークフローのウェブサービスによる提供 ウェブサービスの相互提供によるワークフロー構築支援 ● OpenID ユーザ認証 DBCLS の OpenID アカウントを1つ取得すれば TogoDB も利用可能 ● + ● => MVC (Model, View, Controller) における M, C を提供 ユーザが View で活用 (ゲノムブラウザ, Wiki, ウィジェット, ワークフロー) 4-2-7 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 TogoDB - 誰でもデータベースを作製・公開できるサイトとツール • 表形式のデータを登録 • 1分で公開完了 • 並べ替え • 絞り込み検索 • ウェブ上で編集 • ダウンロード可能 • QuickLook 機能搭載 • OpenID 対応 • ウェブサービス対応 • 受け入れDBを運用 • オープンソースで公開 http://togodb.dbcls.jp/ TogoDB の使い方 • CSV 形式のデータをアップロードするだけ • カスタマイズ • カラムごとに検索対象にするかどうかなどを設定 • テーブルの JOIN • 公開範囲の設定 • ヘッダなどの加工 • 機能 • 並べ替え • 絞り込みフィールド検索 • クイックルック • ダウンロード 4-2-8 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 TogoWS - 国内外のウェブサービスを統合し透過的に利用 • SOAP/WSDL 統合 • DDBJ • KEGG • PDBj • CBRC • BioMOBY • REST 統合 • NCBI 試してみよう: RESTパーザ • EBI • TogoDB • BioRuby内蔵 • ワークフロー化 http://togows.dbcls.jp/ データベースアクセスを TogoWS で共通化 • 各サービスの使い勝手を統一(言語非依存) • ドキュメントを充実(サンプルコードなど) • 稼働状況の確認 DDBJ KEGG NCBI PDBj Internet TogoWS 4-2-9 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 ウェブサービス • プログラムからサーバの機能を呼び出して機械的に利用 IE FireFox Safari ブラウザからの利用 • 従来のウェブブラウザでの操作 • ゲノム規模での解析など大量処理が困難 プログラムからの利用 KEGG API • 代わりにプログラムで実行 SOAP/WSDL • 全遺伝子について繰り返し処理を行うなど • 解析ステップを連結してワークフローを構築 Ruby Perl Java • プログラミング言語には非依存 • Java, Perl, Ruby, Python etc. #!/usr/bin/env ruby require 'bio' serv = Bio::KEGG::API.new genes = serv.get_genes_by_pathway("pa genes.each do |gene| : SOAP/WSDL • HTTPを流用しプログラム等からサーバの機能を利用 • プログラムがSOAP規格のXMLをやり取りする • Service Oriented Architecture Protocol (Simple Object Access Protocol) • Web Service Description Language Server Server XML (SOAP message) over HTTP Client Client Client 4-2-10 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 SOAP メッセージを盗聴してみよう(問い合せ) bioruby> keggapi.log = STDERR ==> #<IO:0x1f07c0> bioruby> keggapi.binfo("genbank") Wire dump: = Request ! CONNECT TO soap.genome.jp:80 ! CONNECTION ESTABLISHED POST /keggapi/request_v6.2.cgi HTTP/1.1 SOAPAction: "SOAP/KEGG#binfo" Content-Type: text/xml; charset=utf-8 User-Agent: SOAP4R/1.5.5 (http-access2.rb/1.1.1.1, ruby 1.8.6 (2007-03-13) [i686-darwin8.8.5]) Date: Fri Aug 31 14:16:22 +0900 2007 Content-Length: 425 Host: soap.genome.jp <?xml version="1.0" encoding="utf-8" ?> <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <env:Body> <n1:binfo xmlns:n1="SOAP/KEGG" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <db xsi:type="xsd:string">genbank</db> </n1:binfo> </env:Body> </env:Envelope> SOAP メッセージを盗聴してみよう(お返事) = Response HTTP/1.1 200 OK Date: Fri, 31 Aug 2007 05:16:23 GMT Server: Apache/1.3.37 (Unix) mod_fastcgi/2.4.2 SOAPServer: SOAP::Lite/Perl/0.60 Content-Length: 809 Content-Type: text/xml; charset=utf-8 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <namesp1:binfoResponse xmlns:namesp1="SOAP/KEGG"> <return xsi:type="xsd:string"> genbank GenBank nucleic acid sequence database gb Release 160.0, Jun 07 National Center for Biotechnology Information 73,078,143 entries, 77,248,690,945 bases Last update: 07/08/31 <dbget> <fasta> <blast> </return> </namesp1:binfoResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 4-2-11 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 試してみよう KEGG API の場合 bioruby> kegg = Bio::KEGG::API.new ==> #<Bio::KEGG::API:0x3b90f34 @wsdl="http://soap.genome.jp/KEGG.wsdl", @driver=#<SOAP::RPC::Driver: #<SOAP::RPC::Proxy:http://soap.genome.jp/keggapi/request_v6.1.cgi>>> bioruby> kegg.list_methods ==> ["get_glycans_by_pathway", "get_motifs_by_gene", "get_reactions_by_enzyme", "list_organisms", "get_best_best_neighbors_by_gene", "color_pathway_by_elements", "search_compounds_by_subcomp", "get_pathways_by_kos", "get_linked_pathways", "binfo", "get_enzymes_by_glycan", "search_drugs_by_mass", "list_databases", "get_elements_by_pathway", "get_linkdb_by_entry", "search_glycans_by_mass", "mark_pathway_by_objects", "get_compounds_by_enzyme", "convert_mol_to_kcf", "get_pathways_by_compounds", "get_enzymes_by_pathway", "get_html_of_colored_pathway_by_objects", "search_drugs_by_name", "get_enzymes_by_compound", "bconv", "get_genes_by_ko", "get_genes_by_organism", "search_compounds_by_composition", "get_pathways_by_genes", "get_glycans_by_reaction", "get_html_of_colored_pathway_by_elements", "search_glycans_by_kcam", "color_pathway_by_objects", "get_reactions_by_compound", "bfind", "list_ko_classes", "search_compounds_by_name", "get_ko_by_gene", "get_genes_by_enzyme", "get_paralogs_by_gene", "get_pathways_by_glycans", "search_drugs_by_subcomp", "get_reactions_by_pathway", "get_compounds_by_reaction", "bget", "get_element_relations_by_pathway", "search_glycans_by_composition", "get_pathways_by_reactions", "get_kos_by_pathway", "search_drugs_by_composition", "get_compounds_by_pathway", "get_reverse_best_neighbors_by_gene", "get_reactions_by_glycan", "search_compounds_by_mass", "get_enzymes_by_reaction", "get_genes_by_ko_class", "get_genes_by_motifs", "get_glycans_by_enzyme", "get_pathways_by_enzymes", "list_pathways", "get_best_neighbors_by_gene", "get_html_of_marked_pathway_by_objects", "get_linkdb_between_databases", "get_genes_by_pathway", "get_number_of_genes_by_organism", "search_glycans_by_name", "get_ko_by_ko_class", "btit", "get_enzymes_by_gene"] bioruby> kegg.get_genes_by_pathway("path:hsa00010") ==> ["hsa:10327", "hsa:124", "hsa:125", "hsa:126", "hsa:127", "hsa:128", "hsa:130", "hsa:130589", "hsa:131", "hsa:137872", "hsa:160287", "hsa:1737", "hsa:1738", "hsa: 2023", "hsa:2026", "hsa:2027", "hsa:217", "hsa:218", "hsa:219", "hsa:220", "hsa:2203", "hsa:221", "hsa:222", "hsa:223", "hsa:224", "hsa:226", "hsa:229", "hsa:230", "hsa: 2538", "hsa:2597", "hsa:2645", "hsa:2821", "hsa:3098", "hsa:3099", "hsa:3101", "hsa:3939", "hsa:3945", "hsa:3948", "hsa:441531", "hsa:501", "hsa:5160", "hsa:5161", "hsa: 5162", "hsa:5211", "hsa:5213", "hsa:5214", "hsa:5223", "hsa:5224", "hsa:5230", "hsa:5232", "hsa:5236", "hsa:5238", "hsa:5313", "hsa:5315", "hsa:55902", "hsa:669", "hsa: 7167", "hsa:84532", "hsa:8789", "hsa:92483", "hsa:97", "hsa:98"] bioruby> puts kegg.bget("hsa:10327") ENTRY NAME DEFINITION ORTHOLOGY PATHWAY POSITION 10327 CDS H.sapiens AKR1A1 aldo-keto reductase family 1, member A1 (aldehyde reductase) [EC:1.1.1.2] KO: K00002 alcohol dehydrogenase (NADP+) PATH: hsa00010 Glycolysis / Gluconeogenesis PATH: hsa00561 Glycerolipid metabolism PATH: hsa00930 Caprolactam degradation 1p33-p32 4-2-12 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 KEGG API の場合 - BioRuby との連携 bioruby> entry = kegg.bget("hsa:10327") ENTRY NAME DEFINITION : AASEQ NTSEQ 10327 CDS H.sapiens AKR1A1 aldo-keto reductase family 1, member A1 (aldehyde reductase) [EC:1.1.1.2] 325 MAASCVLLHTGQKMPLIGLGTWKSEPGQVKAAVKYALSVGYRHIDCAAIYGNEPEIGEAL KEDVGPGKAVPREELFVTSKLWNTKHHPEDVEPALRKTLADLQLEYLDLYLMHWPYAFER GDNPFPKNADGTICYDSTHYKETWKALEALVAKGLVQALGLSNFNSRQIDDILSVASVRP AVLQVECHPYLAQNELIAHCQARGLEVTAYSPLGSSDRAWRDPDEPVLLEEPVVLALAEK YGRSPAQILLRWQVQRKVICIPKSITPSRILQNIKVFDFTFSPEEMKQLNALNKNWRYIV PMLTVDGKRVPRDAGHPLYPFNDPY 978 atggcggcttcctgtgttctactgcacactgggcagaagatgcctctgattggtctgggt : bioruby> gene = Bio::KEGG::GENES.new(entry) bioruby> gene.name ==> "AKR1A1" bioruby> gene.definition ==> "aldo-keto reductase family 1, member A1 (aldehyde reductase) [EC:1.1.1.2]" bioruby> gene.eclinks ==> ["1.1.1.2"] bioruby> gene.aaseq ==> "MAASCVLLHTGQKMPLIGLGTWKSEPGQVKAAVKYALSVGYRHIDCAAIYGNEPEIGEALKEDVGPGKAVPREELFVTSKLWNTKHHPEDVEPALRKTLADLQLEYLDL DDBJ XML の場合 - BLAST の場合 bioruby> ddbj = Bio::DDBJ::XML::Blast.new ==> #<Bio::DDBJ::XML::Blast:0x3dc5bb0 @wsdl="http://xml.nig.ac.jp/wsdl/Blast.wsdl", @driver=#<SOAP::RPC::Driver: #<SOAP::RPC::Proxy:http://xml.nig.ac.jp/xddbj/Blast>>> bioruby> result = ddbj.searchSimple("tblastn", "DDBJ", gene.aaseq) ==> "The search and analysis service is very busy now. Please try it again.\n" ... そんな日もあるさ ...(サーバが混んでいる時はこのメッセージが出るそうです) bioruby> result= ddbj.searchSimple("blastp", "SWISS", gene.aaseq) /usr/local/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::Error) from /usr/local/lib/ruby/1.8/timeout.rb:56:in `timeout' : ... そんなこともあるさ ...(今日は大丈夫でした∼) sp|P51635|AK1A1_RAT Alcohol dehydrogenase [NADP+] (EC 1.1.1.2) (... sp|P50578|AK1A1_PIG Alcohol dehydrogenase [NADP+] (EC 1.1.1.2) (... sp|Q3ZCJ2|AK1A1_BOVIN Alcohol dehydrogenase [NADP+] (EC 1.1.1.2)... sp|Q9JII6|AK1A1_MOUSE Alcohol dehydrogenase [NADP+] (EC 1.1.1.2)... sp|O70473|AK1A1_CRIGR Alcohol dehydrogenase [NADP+] (EC 1.1.1.2)... : BLASTP 2.2.15 [Oct-15-2006] Reference: Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402. Query= query (325 letters) >sp|P14550|AK1A1_HUMAN Alcohol dehydrogenase [NADP+] (EC 1.1.1.2) (Aldehyde reductase) (Aldo- keto reductase family 1 member A1). Length = 325 Database: SWISS: SWISS sequence taken from the header [Last update Aug/16/2007] 276,256 sequences; 101,466,996 total letters Score = 629 bits (1623), Expect = e-180 Identities = 307/325 (94%), Positives = 307/325 (94%) Searching..................................................done Sequences producing significant alignments: 597 593 593 592 407 Score E (bits) Value Query: 1 Sbjct: 1 sp|P14550|AK1A1_HUMAN Alcohol dehydrogenase [NADP+] (EC 1.1.1.2)... 629 e-180 4-2-13 MAASCVLLHTGQKMPLIGLGTWKSEPGQVKAAVKYALSVGYRHIDCAAIYGNEPEIGEAL 60 MAASCVLLHTGQKMPLIGLGTWKSEPGQVKAAVKYALSVGYRHIDCAAIYGNEPEIGEAL MAASCVLLHTGQKMPLIGLGTWKSEPGQVKAAVKYALSVGYRHIDCAAIYGNEPEIGEAL 60 e-170 e-169 e-169 e-169 e-113 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 EBI の場合 - Dbfetch の例 bioruby> ebi = Bio::EBI::SOAP.new ==> #<Bio::EBI::SOAP:0x26ba678 @wsdl="http://www.ebi.ac.uk/Tools/webservices/wsdl/WSDbfetch.wsdl", @driver=#<SOAP::RPC::Driver: #<SOAP::RPC::Proxy:http://www.ebi.ac.uk/ws/services/WSDbfetch>>> bioruby> ebi.list_methods ==> ["getFormatStyles", "fetchData", "getSupportedDBs", "getDbFormats", "getSupportedFormats", "getSupportedStyles", "fetchBatch"] bioruby> ebi.getSupportedDBs ==> ["embl", "emblann", "emblcds", "emblcon", "emblsva", "epo_prt", "genomereviews", "hgvbase", "interpro", "ipi", "jpo_prt", "medline", "pdb", "refseq", "refseqp", "uniparc", "uniprotkb", "uniref100", "uniref50", "uniref90", "unisave", "uspto_prt"] bioruby> puts ebi.fetchData("embl:BUM", "embl", "raw") ID XX AC XX DT DT XX DE XX KW XX OS OC XX RN J02231; SV 1; linear; genomic RNA; STD; VRL; 200 BP. J02231; 29-AUG-2003 (Rel. 77, Created) 29-AUG-2003 (Rel. 77, Last updated, Version 1) La Crosse virus isolate l74 m-rna 3' sequence. . La Crosse virus Viruses; ssRNA negative-strand viruses; Bunyaviridae; Orthobunyavirus. [1] EBI の場合 - EMBOSS の例 bioruby> emboss = Bio::EBI::SOAP::Emboss.new ==> #<Bio::EBI::SOAP::Emboss:0x3ca7198 @wsdl="http://www.ebi.ac.uk/Tools/webservices/wsdl/WSEmboss.wsdl", @driver=#<SOAP::RPC::Driver: #<SOAP::RPC::Proxy:http://www.ebi.ac.uk/cgi-bin/webservices/WSEmboss>>> bioruby> emboss.list_methods ==> ["poll", "run", "checkStatus", "getResults", "getTools", "getInfo"] bioruby> hash = { "tool" "asequence" "bsequence" "email" } => => => => "water", "uniprot:alk1_human", "uniprot:alk1_mouse", "[email protected]" bioruby> poll = emboss.run(hash, []) ==> "emboss-20070322-17172499" bioruby> emboss.checkStatus(poll) ==> "RUNNING" ... 待てど暮らせど終わらなかったり ... bioruby> base = emboss.poll(poll, "tooloutput") bioruby> puts Base64.decode64(base) 4-2-14 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 NCBI の場合 - EUtils の例 bioruby> ncbi = Bio::NCBI::SOAP.new ignored element: {http://www.w3.org/2001/XMLSchema}sequence of WSDL::XMLSchema::Sequence ignored element: {http://www.w3.org/2001/XMLSchema}choice of WSDL::XMLSchema::Sequence : ==> #<Bio::NCBI::SOAP:0x2458100 @wsdl="http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/eutils.wsdl", @driver=#<SOAP::RPC::Driver: #<SOAP::RPC::Proxy:http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/soap_adapter_1_5.cgi>>> bioruby> ncbi.list_methods ==> ["run_eSpell", "run_eFetch", "run_eSummary", "run_eInfo", "run_eSearch", "run_eGquery", "run_eLink"] bioruby> result = ncbi.run_eSearch(“db” => “protein”, “term” => “pparg human”) ==> #<SOAP::Mapping::Object:0x1220fdc {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Count="94" {http://www.ncbi.nlm.nih.gov/soap/eutils/ esearch}RetMax="20" {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}RetStart="0" {http://www.ncbi.nlm.nih.gov/soap/eutils/ esearch}IdList=#<SOAP::Mapping::Object:0x121fc72 {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Id=["13432234", "116284373", "116284370", "116284368", "20336229", "13905056", "50871915", "47678891", "119584529", "119584528", "119584527", "86451955", "66471678", "17978516", "66471844", "66471842", "48762805", "109157724", "109157723", "99031685"]> {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}TranslationSet=#<SOAP::Mapping::Object:0x121c158 {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Translation=#<SOAP::Mapping::Object:0x121bf78 {http://www.ncbi.nlm.nih.gov/soap/eutils/ esearch}From="human" {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}To="(\"Homo sapiens\"[Organism:__txid9606] OR human)">> {http:// www.ncbi.nlm.nih.gov/soap/eutils/esearch}TranslationStack=#<SOAP::Mapping::Object:0x121aa7e {http://www.ncbi.nlm.nih.gov/soap/eutils/ esearch}TermSet=[#<SOAP::Mapping::Object:0x121a808 {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Term="pparg[All Fields]" {http://www.ncbi.nlm.nih.gov/ soap/eutils/esearch}Field="All Fields" {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Count="165" {http://www.ncbi.nlm.nih.gov/soap/eutils/ esearch}Explode="Y">, #<SOAP::Mapping::Object:0x1218634 {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Term="\"Homo sapiens\"[Organism]" {http:// www.ncbi.nlm.nih.gov/soap/eutils/esearch}Field="Organism" {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Count="393224" {http://www.ncbi.nlm.nih.gov/ soap/eutils/esearch}Explode="Y">, #<SOAP::Mapping::Object:0x1216ad2 {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Term="human[All Fields]" {http:// www.ncbi.nlm.nih.gov/soap/eutils/esearch}Field="All Fields" {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}Count="1190298" {http://www.ncbi.nlm.nih.gov/ soap/eutils/esearch}Explode="Y">] {http://www.ncbi.nlm.nih.gov/soap/eutils/esearch}OP=["OR", "GROUP", "AND", "GROUP"]> {http://www.ncbi.nlm.nih.gov/soap/ eutils/esearch}QueryTranslation="pparg[All Fields] AND (\"Homo sapiens\"[Organism] OR human[All Fields])"> ... なんじゃこりゃ ... bioruby> result.__xmlele[3][1].__xmlele[0][1].first ==> "13432234" caCORE の場合 bioruby> wsdl = "http://cabio.nci.nih.gov/cacore32/ws/caCOREService?wsdl" ==> "http://cabio.nci.nih.gov/cacore32/ws/caCOREService?wsdl" bioruby> cabio = Bio::SOAPWSDL.new(wsdl) ==> #<Bio::SOAPWSDL:0x2407fd4 @wsdl="http://cabio.nci.nih.gov/cacore32/ws/caCOREService?wsdl", @driver=#<SOAP::RPC::Driver: #<SOAP::RPC::Proxy:http://cabio.nci.nih.gov/cacore32/ws/caCOREService>>> bioruby> cabio.list_methods ==> ["query", "getProcessOntology", "getDataObject", "getMaximumRecordsPerQuery", "exist", "getRecordsPerQuery", "getVersion", "getTotalNumberOfRecords", "queryObject"] ... ここでマニュアルを読む ... bioruby> cabio.queryObject("IL*") SOAP::Mapping::MappingError: nil not allowed: targetClassName from /usr/local/lib/ruby/1.8/soap/mapping/wsdlliteralregistry.rb:133:in `complexobj2soap' from /usr/local/lib/ruby/1.8/wsdl/xmlSchema/complexType.rb:56:in `each_element' : 挫折 4-2-15 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 BRENDA の場合 bioruby> wsdl = "http://www.brenda.uni-koeln.de/soap/brenda.wsdl" ==> "http://www.brenda.uni-koeln.de/soap/brenda.wsdl" bioruby> brenda = Bio::SOAPWSDL.new(wsdl) ignored element: {http://www.w3.org/2001/XMLSchema}complexType RuntimeError: part: id cannot be resolved from /usr/local/lib/ruby/1.8/wsdl/soap/methodDefCreator.rb:144:in `rpcdefinedtype' from /usr/local/lib/ruby/1.8/wsdl/soap/methodDefCreator.rb:49:in `collect_rpcparameter' from /usr/local/lib/ruby/1.8/wsdl/soap/methodDefCreator.rb:47:in `collect' from /usr/local/lib/ruby/1.8/wsdl/soap/methodDefCreator.rb:47:in `collect_rpcparameter' from /usr/local/lib/ruby/1.8/soap/wsdlDriver.rb:130:in `create_param_def' from /usr/local/lib/ruby/1.8/soap/wsdlDriver.rb:101:in `add_operation' from /usr/local/lib/ruby/1.8/xsd/namedelements.rb:58:in `each' from /usr/local/lib/ruby/1.8/xsd/namedelements.rb:57:in `each' from /usr/local/lib/ruby/1.8/soap/wsdlDriver.rb:96:in `add_operation' from /usr/local/lib/ruby/1.8/soap/wsdlDriver.rb:40:in `create_rpc_driver' from /Users/k/lib/ruby/bio/io/soapwsdl.rb:63:in `create_driver' from /Users/k/lib/ruby/bio/io/soapwsdl.rb:57:in `initialize' from (irb):22:in `new' from (irb):22 : ... WSDL が読み込めない ... 流しましょう まぁ、Ruby だけの問題かもしれないし 4-2-16 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 SOAP の統合 • 課題:サーバ毎に使い方や命名規則が異なる • 統一的なユーザーインターフェイス(メソッド名、引数)を整備 -- プロキシ的メタサーバ • 課題:多くのサーバは使い方がよく分からない • 統合DBのサービスで全機能を吸収し、分かりやすいドキュメントを整備 • 課題:サービス間でデータの受け渡しが出来ない • 共通のデータフォーマットを整備しワークフローの構築を実現 -- BioMOBY, Taverna • 課題:サービスが必ずしも安定ではない • 統合DBのサービスでタイムアウトやエラーの検出などを行い、使い勝手を向上 • 国内ウェブサービスの稼働状況をチェック • http://togows.dbcls.jp/status/ • 国内ウェブサービスのサンプルプログラム集 • http://togodb.dbcls.jp/togows_domestic_method • 国内外サービスの API 一覧 このあたり • http://togodb.dbcls.jp/togows_world_method • http://togodb.dbcls.jp/ws_service 主要センターのウェブサービスと BioMoby • • • • • NCBI SOAP EBI Web Service DDBJ XML (WABI/SABI) KEGG API PDBj SOAP • 全て独自に開発実装、特に標準化はされていない • 使われているデータ型もバラバラ • サービスの命名規則もバラバラ • 非同期通信などの仕様もバラバラ • BioMoby • 植物ゲノム関係などを中心に数十サイトが対応 • 共通のデータ型(ただし独自XML) • スペインの MOWServ などでグリッド化の実例 4-2-17 <Object namespace="GenBank/ AC" ID="AY070397.1"/> <Sequence namespace="GenBank/ AC" ID="AY070397.1"/> <Length>960</Length> <SequenceString> aacaaaaagattaaacaagagag... </SequenceString> </Sequence> DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 BioMOBY plan • BioMOBY (Model Organism Bring Your own) • 2001年∼ • http://biomoby.org/ • バイオインフォで使われるデータ型のオントロジーを構築 • オントロジーのシリアライズ方法を規定 • オントロジーを利用したAPIを作成 • ウェブサービスのI/Oとオントロジーの対応 • オントロジーに応じてサービスをレジストリに登録 • これにより: • コンピュータが適切なサービスを見つけることができる • Machines can execute that service anattended • オントロジーはコミュニティによって拡張可能 BioMoby/MOWServ object ontology 主要なデータベース形式とソフトウェアの 出力フォーマットが 'text-formatted' の カテゴリに一緒くた → これではワークフローが作れない t xt-formatted te BLAST_Text, NCBI_BLAST_Text, BL BLAS LAS AST_XML, ... FASTA,, FASTA_Text, FASTA_pep, FASTA_AA, ... Clus Cl ustta alw lw_T Tex xt, t New e ick_Text, Phylip_Text, ... RefSeq_Text, SwissProt_Text, ... 4-2-18 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 分野間の連携 ウェブサービスの プロバイダ Open Bio* ライブラリの 開発者 交換データ フォーマットの 標準化 ウェブサービスの クライアント開発者 者 BioMoby の 開発チーム BioHackathon 2008 participants EMBRACE Taverna BioMoby EuroCarbDB NEXML GLYDE-II BioSQL MOWServ DIP Cytoscape G-language BioJava BioPerl Japan Organizations Participants World 8 20 25 32 4-2-19 BioRuby DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 BioHackathon 2008 - program • 2/11 morning session - presentations • • • • • • From Web API for Biology (WABI) to Semantic Web API for Biology (SABI) - Hideaki Sugawara Current status of the BioMOBY project and vision for the future directions - Mark Wilkinson The EMBRACE project and WS-I standard - Jan Christian Bryne Soaplab2 project to wrap up command line packages - Martin Senger Proxying legacy applications and CGIs into BioMOBY - Paul Gordon Generation Challenge Program effort at building interoperability - Richard Bruskiewich • 2/11 afternoon session - open space • • • • • • • • • ServiceProvider_workgroup OpenBio_workgroup Workflow_workgroup BioMOBY_workgroup Exchangeformat_workgroup Semanticweb_workgroup PhyloWS_workgroup Distributed storage - initiative (BIO.SLURP) Distributed services - initiative (BIO.ORG.ANISM) • 2/12-15 hack, hack, hack • We will have banquet on 2/12 18:30- @CBRC 4-2-20 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 BioHackathon 2008 action items Exchange format standardization Ontology for data types, service types and model APIs Domain models (INSDC, PSI-MI, GLYDE-II, NEXML, …) BioMoby, XML Schema, UML Open Bio* Common platform with BioSQL including PhyloDB support (BioPerl, BioJava, BioRuby, …) BioMoby compliant functionality in libraries and clients (BioRuby, G-language, …) Workflows Test interoperability of Japanese web services with Taverna Missing functionality in current web services (parsers, converters, bifurcation, …) Service description & discovery Scalability Async service – how to treat time consuming tasks with web services Large data – how to manage huge amount of data within a workflow Security – how to protect shared resources REST – light weight protocol to access resources, WSDL 2.0 オントロジーと交換データ型の標準化 • Open Bio Semantics 共通データ型 • バイオインフォの WS で交換される全データ型の標準化が望ましい • 少なくともドメイン毎のデータモデルは必須 • 個別ドメイン • Glycoinformatics (糖鎖) • 糖鎖データ解析フローの BioMoby/Taverna による実現 • 相互作用ネットワーク • PSI-MI を採用し IntAct などで共通の WS を構築、Cytoscape で利用 • Phyloinformatics (系統解析) • NEXML の利用促進、入出力型の整理と対応する解析 WS のデザイン • テキストマイニング • UIMA とバイオインフォの融合、iHOP は BioMoby 上に載っている 4-2-21 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 交換データ型の標準化の流れ • BioMoby のオブジェクトオントロジー • 似たようなオブジェクトが大量に登録されている (>500) • BLAST の出力など主要なデータ型はフラットに formatted-text 下 • BioMoby サーバの構築が Perl/Java 以外では困難 • SOAP/WSDL (complexType) - XML schema • 標準データ型で定義し .xsd ファイルを共有(open-bio.org でホスト?) • 同じオブジェクトモデルを Open Bio* とウェブサービス間で利用 • UML (BioUML?) • BioPerl, BioRuby, BioPython, BioJava で共通のモデルを設計 • 相互運用性のあるオブジェクトモデルからコードを生成 • もしくは Bio* は共通の C ライブラリに対するバインディングを使用 非同期通信 (Async service) • バイオインフォの解析フローでは時間のかかるステップも多い • サーバにリクエスト→ジョブIDを発行→終わっているかポーリング • 双方に WS サーバ機能があれば、WS-Addressing などで通知 • BioMoby は WSRF を採用(時代遅れになりつつある技術とも) • WSRF は OGSA でも利用されている • 実装が無く Ruby では利用できない • Soaplab にも非同期実装がある • → WS-I に準拠してほしい(WS-* などのスタックが必要) • WSO2 (http://wso2.org/) の実装が良くなれば? 4-2-22 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 大規模データ (Large data)とセキュリティ • SOAP では MIME アタッチメントで送られがち • Base64 エンコードされ一段と巨大化、全部届くまで解凍できない • データに対するリファレンスを渡して DL は REST や bittreorrent 等で? • リファレンスにはデータ型の情報がつけられない • クライアントが解析のためのデータを一時的における場所の提供 • データの生存期間の指定 • 解析ワークフローではクライアントを介さずサーバ間で受け渡す • セキュリティ • X509 電子署名 • ユーザのデータ保護、サーバのデータ秘匿、計算機資源 の割当などを管理 BioHackathon で残された課題 • 現状の様々な問題点が提示された • Standard data types and workflow • Large data • Async service • Security • Error handling • ..... • Publication • Manifesto 標準化の指標 • Journal article 成果のレビュー • 継続的な会議の開催ができれば • BOSC session for web service Slide by Prof. Trelles (INB/MOWServ) • annual BioHackathon 4-2-23 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 相互運用性のあるワークフローの構築 • DDBJ/PDBj/KEGG を利用するワークフローの構築 • Taverna を利用 • 条件分岐が出来ない • 連携するためのプログラミングが必要 • 現状の WS では解析のための機能が不足 • それぞれのサービスで何が可能か、何が不足しているか • 必要とされているワークフローの洗い出しと実装 • 定期的なミーティングによる統合のための協力 • 各サービスの品質向上 • DDBJing, PDBjing, KEGGing などの講習会 統合にはほど遠く • データ型と解析ソフトウェアの数は増加し続けている • それらに我々の標準化提案を強制することは現実的には困難 • ウェブサービスにはスケールしない部分がある • Large data - 生物学データの量は指数関数的に増加中 • Async service - 計算機資源はサーバに依存し限られている • Workflow - プログラミングなしでパイプライン化することは困難 • 反省と課題 • 個別技術要素の問題点は洗い出せたが、グローバルな結論はでていない • 個々の技術についてはグリッドなどでもすでに議論されていた点が多い • データやサービスの統一化には強力なイニシアチブと人員が必要 • 全体の分かる人が long term な目的を持って方向性を決めるべき • 今のインフラは圧倒的に力不足→サイエンスのできるウェブサービスへ 4-2-24 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 今後の統合にむけて何が可能か • 相互運用性の実現には継続的な国際コミュニティの努力が必要 • 主要なサービスプロバイダは相互運用性の高い API を提供すべき • EBI, NCBI, DDBJ, KEGG, PDBj, CBRC, ... • BioMoby • 非標準のサービスもクライアント側のソフトウェアで統合可能 • Open Bio* ライブラリ (BioPerl, BioRuby, BioJava, BioPython) • Taverna, Seahawk, MOWServ, jORCA, ... • 日本では DBCLS において国内のサービスを統合する TogoWS を始動 • データベースやソフトウェア出力のパーザやコンバータなどを提供 • BioMoby に対して WS-I 準拠のプロキシサーバを提供 • 国内外のサービスを統合したワークフローを集積、ドキュメント化 REST の統合 • 問題点 • CGI ではクエリの方法が非統一、HTML のデザイン変更で破綻 • 検索の仕方が様々(and/or 検索だけでも多様な方言) • エントリを取得しても HTML で装飾されていることが多い • 取得後プログラムで加工するのが困難 4-2-25 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 BioMoby service ontology 日本のウェブサービスの9割は は データベース ース検索 検索にバ にバ に バイアス バイア ス 解析サー サ ビスが不足 DDBJ, KEGG, PDBj services Analysis Database Alignment Converter Structure REST 向きのサービス • データベースのエントリ検索と取得は一元化できそう • エントリは URL と 1 対 1 対応しやすい - パーマネントなリソース • 解析サービスは SOAP/WSDL の方がよさそう • 複雑な入出力データ • 時間のかかるサービス • BLAST から系統樹作成まで、PDB で類似構造を検索 etc. 4-2-26 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 http://togows.dbcls.jp/entry/ddbj/AB000100 http://togows.dbcls.jp/entry/ddbj/AB000100.xml http://togows.dbcls.jp/entry/ddbj/AB000100.gff http://togows.dbcls.jp/entry/ddbj/AB000100/definition http://togows.dbcls.jp/entry/ddbj/AB000100/organism REST TogoWS + BioRuby SOAP/WSDL or REST エントリの取得 /entry/database/entry_id[,entry_id2,...]/field[.format] http://togows.dbcls.jp/entry/uniprot/A1AG1_HUMAN,A1AG1_MOUSE http://togows.dbcls.jp/entry/uniprot/A1AG1_HUMAN,A1AG1_MOUSE.fasta http://togows.dbcls.jp/entry/uniprot/A1AG1_HUMAN,A1AG1_MOUSE.gff http://togows.dbcls.jp/entry/pubmed/16381885 http://togows.dbcls.jp/entry/pubmed/16381885/authors http://togows.dbcls.jp/entry/pubmed/16381885/authors.json database: KEGG: gene, orthology, enzyme, compound, drug, glycan, reaction DDBJ: ddbj, dad PDBj: pdb NCBI: gene, genome, genomeprj, geo, journals, mesh, nucleotide, omim, pmc, protein, pubmed, taxonomy, cdd, popset, snp, unigene, homologene, nuccore, nucest, nucgss, unists EBI: biomodels, chebi, ensembl, go, interpro, reactome, uniprot, uniparc, uniref100, uniref90, uniref50, msdchem, msdpdb format: xml, json, gff, fasta etc. /entry/ 対応データベース一覧 /entry/database/ パース対応フィールド一覧 4-2-27 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 エントリの検索 /search/database/query+string[.format][/offset,limit[.format]] http://togows.dbcls.jp/search/uniprot/lung+cancer/count http://togows.dbcls.jp/search/uniprot/lung+cancer/1,10 クエリ文字列の共通フォーマットには、 Common Query Language を導入予定 データ型の変換 /convert/source.format http://togows.dbcls.jp/convert/blast.gff source: genbank, blast, fasta, psl, sim4, hmmer, exonerate, wise etc. 塩基やアミノ酸配列の座標に対する アノテーションとみなせるもの GenBank BLAST FASTA PSL Sim4 HMMER Exonerate GeneWise Pfam GFF (Generic Feature Format) * DAS (Distributed annotation system) * Protein DAS GFF を入力として利用可能なサービスと連携可能に そのほかの標準データ型 相互作用データ PSI-MI 糖鎖データ GLYDE 各ドメインで標準フォーマットが決まれば採用 系統樹データ NEXML 4-2-28 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 ユースケース • DDBJ の definition や配列を取得 • http://togows.dbcls.jp/entry/ddbj/AB000100,AB000101/definition • http://togows.dbcls.jp/entry/ddbj/AB000100,AB000101.fasta • KEGG から COMPOUND の名前や組成式を抽出 • http://togows.dbcls.jp/entry/compound/C01234/name • http://togows.dbcls.jp/entry/compound/C01234/formula • かずさ DNA 研の藍藻ゲノムブラウザに PMID で対応文献の情報を表示 • http://togows.dbcls.jp/entry/pubmed/PMID/abstract Taverna • ワークフロー構築の GUI • http://taverna.sf.net 4-2-29 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 Galaxy - バイオインフォのリソースをマッシュアップ マニフェスト 4-2-30 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 ガイドライン - REST ガイドライン - SOAP 4-2-31 DDBJing & KEGGing & PDBjing 講習会 in 京都 (2008.11.27-28) ウェブサービスによる国内外データベースの統合的な活用 To be integrated ... • TogoDB • http://togodb.dbcls.jp/ • TogoWS • http://togows.dbcls.jp/ • TogoDB (Model) + TogoWS (Controller) • Under development (Rails 2.1 w/ ActiveResource) 4-2-32