doc/Tutorial.rd.ja in bio-1.4.3.0001 vs doc/Tutorial.rd.ja in bio-1.5.0

- old
+ new

@@ -3,255 +3,255 @@ # $Id:$ Copyright (C) 2001-2003, 2005, 2006 Toshiaki Katayama <k@bioruby.org> Copyright (C) 2005, 2006 Naohisa Goto <ng@bioruby.org> -= BioRuby λȤ += BioRuby の使い方 -BioRuby Ϲ񻺤ιⵡǽ֥Ȼظץȸ Ruby Τ -ץ󥽡ʥХեޥƥѥ饤֥Ǥ +BioRuby は国産の高機能オブジェクト指向スクリプト言語 Ruby のための +オープンソースなバイオインフォマティクス用ライブラリです。 -Ruby Perl 椺ζϤʥƥȽȡ -ץʬ䤹ʸˡꥢʥ֥Ȼظǽˤꡢ -Ȥ褦ˤʤޤRuby ˤĤƾܤϡ֥ -((<URL:http://www.ruby-lang.org/>)) Τν򻲾ȤƤ +Ruby 言語は Perl 言語ゆずりの強力なテキスト処理と、 +シンプルで分かりやすい文法、クリアなオブジェクト指向機能により、 +広く使われるようになりました。Ruby について詳しくは、ウェブサイト +((<URL:http://www.ruby-lang.org/>)) や市販の書籍等を参照してください。 -== Ϥ +== はじめに -BioRuby Ѥˤ Ruby BioRuby 򥤥󥹥ȡ뤹ɬפޤ +BioRuby を使用するには Ruby と BioRuby をインストールする必要があります。 -=== Ruby Υ󥹥ȡ +=== Ruby のインストール -Ruby Mac OS X Ƕ UNIX ˤ̾磻󥹥ȡ뤵Ƥޤ -Windows ξ⣱å󥹥ȡ ActiveScriptRuby ʤɤ -ѰդƤޤޤ󥹥ȡ뤵Ƥʤ +Ruby は Mac OS X や最近の UNIX には通常インストールされています。 +Windows の場合も1クリックインストーラや ActiveScriptRuby などが +用意されています。まだインストールされていない場合は * ((<URL:http://jp.rubyist.net/magazine/?0002-FirstProgramming>)) * ((<URL:http://jp.rubyist.net/magazine/?FirstStepRuby>)) -ʤɤ򻲹ͤˤƥ󥹥ȡ뤷ޤ礦 +などを参考にしてインストールしましょう。 -ʤΥԥ塼ˤɤΥС Ruby 󥹥ȡ뤵Ƥ뤫 -åˤ +あなたのコンピュータにどのバージョンの Ruby がインストールされているかを +チェックするには % ruby -v -ȥޥɤϤƤȡȤ +とコマンドを入力してください。すると、たとえば ruby 1.8.2 (2004-12-25) [powerpc-darwin7.7.0] -Τ褦ʴǥСɽޤС 1.8.5 ʹߤ򤪴ᤷޤ +のような感じでバージョンが表示されます。バージョン 1.8.5 以降をお勧めします。 -Ruby ɸΥ饹᥽åɤˤĤƤϡRuby Υե󥹥ޥ˥奢 -ȤƤ +Ruby 標準装備のクラスやメソッドについては、Ruby のリファレンスマニュアルを +参照してください。 * ((<URL:http://www.ruby-lang.org/ja/man/>)) * ((<URL:http://doc.okkez.net/>)) -ޥɥ饤ǥإפ򻲾ȤˤϡRuby ɸźդ ri ޥɤ䡢 -ܸǤ refe ޥɤǤ +コマンドラインでヘルプを参照するには、Ruby 標準添付の ri コマンドや、 +日本語版の refe コマンドが便利です。 * ((<URL:http://i.loveruby.net/ja/prog/refe.html>)) -=== RubyGems Υ󥹥ȡ +=== RubyGems のインストール -RubyGems ΥڡǿǤɤޤ +RubyGems のページから最新版をダウンロードします。 * ((<URL:http://rubyforge.org/projects/rubygems/>)) -Ÿƥ󥹥ȡ뤷ޤ +展開してインストールします。 % tar zxvf rubygems-x.x.x.tar.gz % cd rubygems-x.x.x % ruby setup.rb -=== BioRuby Υ󥹥ȡ +=== BioRuby のインストール -BioRuby Υ󥹥ȡˡ ((<URL:http://bioruby.org/archive/>)) -ǿǤưʲΤ褦˹Ԥޤ(1)ƱƤ README եˤ -ܤ̤ĺΤǤʤȣˤʤ BioPerl ٤ -BioRuby Υ󥹥ȡϤ˽ϤǤ +BioRuby のインストール方法は ((<URL:http://bioruby.org/archive/>)) から +最新版を取得して以下のように行います(※1)。同梱されている README ファイルにも +目を通して頂きたいのですが、慣れないと1日がかりになる BioPerl と比べて +BioRuby のインストールはすぐに終わるはずです。 % wget http://bioruby.org/archive/bioruby-x.x.x.tar.gz % tar zxvf bioruby-x.x.x.tar.gz % cd bioruby-x.x.x % su # ruby setup.rb -RubyGems ȤĶǤ +RubyGems が使える環境であれば % gem install bio -ǥ󥹥ȡǤޤΤ README ե˽񤫤Ƥ褦 +だけでインストールできます。このあと README ファイルに書かれているように bioruby-x.x.x/etc/bioinformatics/seqdatabase.ini -Ȥեۡǥ쥯ȥ ~/.bioinformatics ˥ԡ -Ȥ褤Ǥ礦RubyGems ξ +というファイルをホームディレクトリの ~/.bioinformatics にコピーして +おくとよいでしょう。RubyGems の場合は /usr/local/lib/ruby/gems/1.8/gems/bio-x.x.x/ -ʤɤˤϤǤ +などにあるはずです。 % mkdir ~/.bioinformatics % cp bioruby-x.x.x/etc/bioinformatics/seqdatabase.ini ~/.bioinformatics -ޤEmacs ǥȤͤ Ruby ΥƱƤ -misc/ruby-mode.el 򥤥󥹥ȡ뤷ƤȤ褤Ǥ礦 +また、Emacs エディタを使う人は Ruby のソースに同梱されている +misc/ruby-mode.el をインストールしておくとよいでしょう。 % mkdir -p ~/lib/lisp/ruby % cp ruby-x.x.x/misc/ruby-mode.el ~/lib/lisp/ruby -ʤɤȤƤơ~/.emacs ˰ʲ­ޤ +などとしておいて、~/.emacs に以下の設定を書き足します。 - ; subdirs + ; subdirs の設定 (let ((default-directory "~/lib/lisp")) (normal-top-level-add-subdirs-to-load-path) - ; ruby-mode + ; ruby-mode の設定 (autoload 'ruby-mode "ruby-mode" "Mode for editing ruby source files") (add-to-list 'auto-mode-alist '("\\.rb$" . rd-mode)) (add-to-list 'interpeter-mode-alist '("ruby" . ruby-mode)) -== BioRuby +== BioRuby シェル -BioRuby С 0.7 ʹߤǤϡñ BioRuby ȶ˥󥹥ȡ뤵 -bioruby ޥɤǹԤȤǤޤbioruby ޥɤ Ruby ¢Ƥ -󥿥饯ƥ֥ irb ѤƤꡢRuby BioRuby ˤǤ뤳Ȥ -ͳ˼¹Ԥ뤳ȤǤޤ +BioRuby バージョン 0.7 以降では、簡単な操作は BioRuby と共にインストールされる +bioruby コマンドで行うことができます。bioruby コマンドは Ruby に内蔵されている +インタラクティブシェル irb を利用しており、Ruby と BioRuby にできることは全て +自由に実行することができます。 % bioruby project1 -ǻꤷ̾Υǥ쥯ȥ꤬졢DzϤԤޤ -嵭ξ project1 Ȥǥ쥯ȥ꤬졢˰ʲ -֥ǥ쥯ȥե뤬ޤ +引数で指定した名前のディレクトリが作成され、その中で解析を行います。 +上記の例の場合 project1 というディレクトリが作成され、さらに以下の +サブディレクトリやファイルが作られます。 - data/ 桼βϥե֤ - plugin/ ɬפ˱ɲäΥץ饰֤ - session/ 䥪֥ȡҥȥʤɤ¸ - session/config 桼¸ե - session/history 桼ϤޥɤΥҥȥ¸ե - session/object ³줿֥ȤγǼե + data/ ユーザの解析ファイルを置く場所 + plugin/ 必要に応じて追加のプラグインを置く場所 + session/ 設定やオブジェクト、ヒストリなどが保存される場所 + session/config ユーザの設定を保存したファイル + session/history ユーザの入力したコマンドのヒストリを保存したファイル + session/object 永続化されたオブジェクトの格納ファイル -Τdata ǥ쥯ȥϥ桼ͳ˽񤭴ƹޤ -ޤsession/history ե򸫤ȡĤɤΤ褦Ԥä -ǧ뤳ȤǤޤ +このうち、data ディレクトリはユーザが自由に書き換えて構いません。 +また、session/history ファイルを見ると、いつどのような操作を行ったかを +確認することができます。 -ܰʹߤϡƱͤ +2回目以降は、初回と同様に % bioruby project1 -ȤƵưƤ⹽ޤ󤷡줿ǥ쥯ȥ˰ư +として起動しても構いませんし、作成されたディレクトリに移動して % cd project1 % bioruby -Τ褦˰ʤǵư뤳ȤǤޤ +のように引数なしで起動することもできます。 -¾script ޥɤǺ륹ץȥե䡢 -web ޥɤǺ Rails Τեʤɤޤ -ˤĤƤɬפ˱ƸҤޤ +この他、script コマンドで作成されるスクリプトファイルや、 +web コマンドで作成される Rails のための設定ファイルなどがありますが、 +それらについては必要に応じて後述します。 -BioRuby ǤϥǥեȤǤĤʥ饤֥ɤ߹Ǥޤ -㤨 readline 饤֥꤬ȤĶǤ Tab ǥ᥽å̾ѿ̾ -䴰ϤǤopen-uri, pp, yaml ʤɤǽ餫ɤ߹ޤƤޤ +BioRuby シェルではデフォルトでいくつかの便利なライブラリを読み込んでいます。 +例えば readline ライブラリが使える環境では Tab キーでメソッド名や変数名が +補完されるはずです。open-uri, pp, yaml なども最初から読み込まれています。 -=== , ߥλ +=== 塩基, アミノ酸の配列を作る --- getseq(str) -getseq ޥ(2)Ȥäʸ󤫤䥢ߥλ뤳Ȥ -Ǥޤȥߥλ ATGC δ̤ 90% ʾ夫ɤǼưȽꤵޤ -ǤϡǤ dna Ȥѿޤ +getseq コマンド(※2)を使って文字列から塩基配列やアミノ酸配列を作ることが +できます。塩基とアミノ酸は ATGC の含量が 90% 以上かどうかで自動判定されます。 +ここでは、できた塩基配列を dna という変数に代入します。 bioruby> dna = getseq("atgcatgcaaaa") -ѿȤǧˤ Ruby puts ᥽åɤȤޤ +変数の中身を確認するには Ruby の puts メソッドを使います。 bioruby> puts dna atgcatgcaaaa -ե̾Ϳȼ긵ˤե뤫뤳ȤǤޤ -GenBank, EMBL, UniProt, FASTA ʤɼפեޥåȤϼưȽ̤ޤ -ʳĥҤʤɤΥե̾ǤϤʤȥȤȽꤷޤˡ -ʲ UniProt եޥåȤΥȥե뤫ɤ߹Ǥޤ -ˡǤϡʣΥȥ꤬ǽΥȥɤ߹ޤޤ +ファイル名を引数に与えると手元にあるファイルから配列を得ることもできます。 +GenBank, EMBL, UniProt, FASTA など主要な配列フォーマットは自動判別されます +(拡張子などのファイル名ではなくエントリの中身で判定します)。 +以下は UniProt フォーマットのエントリをファイルから読み込んでいます。 +この方法では、複数のエントリがある場合最初のエントリだけが読み込まれます。 bioruby> cdc2 = getseq("p04551.sp") bioruby> puts cdc2 - MENYQKVEKIGEGTYGVVYKARHKLSGRIVAMKKIRLEDESEGVPSTAIREISLLKEVNDENNRSN...(ά) + MENYQKVEKIGEGTYGVVYKARHKLSGRIVAMKKIRLEDESEGVPSTAIREISLLKEVNDENNRSN...(略) -ǡ١̾ȥȥ̾ʬäƤС󥿡ͥåȤ̤ -ưŪ˼뤳ȤǤޤ +データベース名とエントリ名が分かっていれば、インターネットを通じて +配列を自動的に取得することができます。 bioruby> psaB = getseq("genbank:AB044425") bioruby> puts psaB - actgaccctgttcatattcgtcctattgctcacgcgatttgggatccgcactttggccaaccagca...(ά) + actgaccctgttcatattcgtcctattgctcacgcgatttgggatccgcactttggccaaccagca...(略) -ɤΥǡ١ɤΤ褦ˡǥȥ뤫ϡBioPerl -ʤɤȶ̤ OBDA ե ~/.bioinformatics/seqdatabase.ini -Ѥƥǡ١Ȥ˻ꤹ뤳ȤǤޤʸҡˡ -ޤEMBOSS seqret ޥɤˤˤбƤޤΤǡ -EMBOSS USA ɽǤ⥨ȥǤޤEMBOSS Υޥ˥奢򻲾Ȥ -~/.embossrc ŬڤꤷƤ +どこのデータベースからどのような方法でエントリを取得するかは、BioPerl +などと共通の OBDA 設定ファイル ~/.bioinformatics/seqdatabase.ini +を用いてデータベースごとに指定することができます(後述)。 +また、EMBOSS の seqret コマンドによる配列取得にも対応していますので、 +EMBOSS の USA 表記でもエントリを取得できます。EMBOSS のマニュアルを参照し +~/.embossrc を適切に設定してください。 -ɤˡǼ⡢getseq ޥɤˤä֤ϡ -Ѥ󥯥饹 Bio::Sequence ˤʤޤ(3) +どの方法で取得した場合も、getseq コマンドによって返される配列は、 +汎用の配列クラス Bio::Sequence になります(※3)。 -󤬱ȥߥλΤɤȽꤵƤΤϡ -moltype ᥽åɤѤ +配列が塩基配列とアミノ酸配列のどちらと判定されているのかは、 +moltype メソッドを用いて bioruby> p cdc2.moltype Bio::Sequence::AA bioruby> p psaB.moltype Bio::Sequence::NA -Τ褦Ĵ٤뤳ȤǤޤưȽְ꤬äƤʤɤˤ -na, aa ᥽åɤǶŪѴǤޤʤΥ᥽åɤ -Υ֥ȤŪ˽񤭴ޤ +のように調べることができます。自動判定が間違っている場合などには +na, aa メソッドで強制的に変換できます。なお、これらのメソッドは +元のオブジェクトを強制的に書き換えます。 bioruby> dna.aa bioruby> p dna.moltype Bio::Sequence::AA bioruby> dna.na bioruby> p dna.moltype Bio::Sequence::NA -ޤϡto_naseq, to_aaseq ᥽åɤǶŪѴ뤳ȤǤޤ +または、to_naseq, to_aaseq メソッドで強制的に変換することもできます。 bioruby> pep = dna.to_aaseq -to_naseq, to_aaseq ᥽åɤ֤֥Ȥϡ줾졢 -DNA Τ Bio::Sequence::NA 饹ߥλΤ -Bio::Sequence::AA 饹Υ֥Ȥˤʤޤ -󤬤ɤΥ饹°뤫 Ruby class ᥽åɤѤ +to_naseq, to_aaseq メソッドの返すオブジェクトは、それぞれ、 +DNA 配列のための Bio::Sequence::NA クラス、アミノ酸配列のための +Bio::Sequence::AA クラスのオブジェクトになります。 +配列がどちらのクラスに属するかは Ruby の class メソッドを用いて bioruby> p pep.class Bio::Sequence::AA -Τ褦Ĵ٤뤳ȤǤޤ +のように調べることができます。 -ŪѴˡBio::Sequence::NA 饹ޤ Bio::sequence::AA 饹 -Τɤ餫Υ֥Ȥˤ seq ᥽åɤȤޤ(4) +強制的に変換せずに、Bio::Sequence::NA クラスまたは Bio::sequence::AA クラス +のどちらかのオブジェクトを得たい場合には seq メソッドを使います(※4)。 bioruby> pep2 = cdc2.seq bioruby> p pep2.class Bio::Sequence::AA -ޤʲDz⤹ complement translate ʤɤΥ᥽åɤη̤ϡ -֤ȤԤ᥽åɤ Bio::Sequence::NA 饹 -ߥλ֤ȤԤ᥽åɤ Bio::sequence::AA 饹 -Υ֥Ȥˤʤޤ +また、以下で解説する complement や translate などのメソッドの結果は、 +塩基配列を返すことが期待されるメソッドは Bio::Sequence::NA クラス、 +アミノ酸配列を返すことが期待されるメソッドは Bio::sequence::AA クラス +のオブジェクトになります。 -䥢ߥλΥ饹 Ruby ʸ󥯥饹Ǥ String -ѾƤޤޤBio::Sequence 饹Υ֥Ȥ String -֥ȤȸƱͤƯ褦˹פƤޤΤᡢ -length ĹĴ٤ꡢ+ ­碌ꡢ* Ƿ֤ʤɡ -Ruby ʸФƹԤѲǽǤ -Τ褦ħϥ֥ȻظζϤ¦̤ΰĤȸǤ礦 +塩基配列やアミノ酸配列のクラスは Ruby の文字列クラスである String を +継承しています。また、Bio::Sequence クラスのオブジェクトは String の +オブジェクトと見かけ上同様に働くように工夫されています。このため、 +length で長さを調べたり、+ で足し合わせたり、* で繰り返したりなど、 +Ruby の文字列に対して行える操作は全て利用可能です。 +このような特徴はオブジェクト指向の強力な側面の一つと言えるでしょう。 bioruby> puts dna.length 12 bioruby> puts dna + dna @@ -260,46 +260,46 @@ bioruby> puts dna * 5 atgcatgcaaaaatgcatgcaaaaatgcatgcaaaaatgcatgcaaaaatgcatgcaaaa :complement -亿ˤϱ complement ᥽åɤƤӤޤ +塩基配列の相補鎖配列を得るには塩基配列の complement メソッドを呼びます。 bioruby> puts dna.complement ttttgcatgcat :translate -򥢥ߥλˤ translate ᥽åɤȤޤ -줿ߥλ pep ȤѿƤߤޤ +塩基配列をアミノ酸配列に翻訳するには translate メソッドを使います。 +翻訳されたアミノ酸配列を pep という変数に代入してみます。 bioruby> pep = dna.translate bioruby> puts pep MHAK -ե졼Ѥˤ +フレームを変えて翻訳するには bioruby> puts dna.translate(2) CMQ bioruby> puts dna.translate(3) ACK -ʤɤȤޤ +などとします。 :molecular_weight -ʬ̤ molecular_weight ᥽åɤɽޤ +分子量は molecular_weight メソッドで表示されます。 bioruby> puts dna.molecular_weight 3718.66444 bioruby> puts pep.molecular_weight 485.605 --- seqstat(seq) -seqstat ޥɤȤȡʤɤξ٤ɽޤ +seqstat コマンドを使うと、組成などの情報も一度に表示されます。 bioruby> seqstat(dna) * * * Sequence statistics * * * @@ -348,11 +348,11 @@ Molecular weight : 3718.66444 Protein weight : 485.605 // -ߥλξϰʲΤ褦ˤʤޤ +アミノ酸配列の場合は以下のようになります。 bioruby> seqstat(pep) * * * Sequence statistics * * * @@ -365,152 +365,152 @@ Protein weight : 485.605 // :composition -seqstat ɽƤ composition ᥽åɤ뤳ȤǤޤ -̤ʸǤϤʤ Hash ֤ΤǡȤꤢɽƤߤˤ -puts p ޥɤȤɤǤ礦 +seqstat の中で表示されている組成は composition メソッドで得ることができます。 +結果が文字列ではなく Hash で返されるので、とりあえず表示してみる場合には +puts の代わりに p コマンドを使うと良いでしょう。 bioruby> p dna.composition {"a"=>6, "c"=>2, "g"=>2, "t"=>2} -==== 󡢥ߥλΤ¾Υ᥽å +==== 塩基配列、アミノ酸配列のその他のメソッド -¾ˤ󡢥ߥλФƹԤϿȤޤ +他にも塩基配列、アミノ酸配列に対して行える操作は色々とあります。 :subseq(from, to) -ʬФˤ subseq ᥽åɤȤޤ +部分配列を取り出すには subseq メソッドを使います。 bioruby> puts dna.subseq(1, 3) atg -Ruby ʤ¿Υץߥ󥰸ʸ 1 ʸܤ 0 ޤ -subseq ᥽åɤ 1 ڤФ褦ˤʤäƤޤ +Ruby など多くのプログラミング言語の文字列は 1 文字目を 0 から数えますが、 +subseq メソッドは 1 から数えて切り出せるようになっています。 bioruby> puts dna[0, 3] atg -Ruby String 饹 slice ᥽å str[] ŬȤʬ -褤Ǥ礦 +Ruby の String クラスが持つ slice メソッド str[] と適宜使い分けると +よいでしょう。 :window_search(len, step) -window_search ᥽åɤȤĹʬη֤ -ñ˹ԤȤǤޤDNA 򥳥ɥ˽硢 -ʸĤ餷ʤ飳ʸڤФФ褤ΤǰʲΤ褦ˤʤޤ +window_search メソッドを使うと長い配列の部分配列毎の繰り返しを +簡単に行うことができます。DNA 配列をコドン毎に処理する場合、 +3文字ずつずらしながら3文字を切り出せばよいので以下のようになります。 bioruby> dna.window_search(3, 3) do |codon| bioruby+ puts "#{codon}\t#{codon.translate}" bioruby+ end atg M cat H gca A aaa K -Υü 1000bp 򥪡Сåפʤ 11000bp Ȥ -֥ڤˤ FASTA եޥåȤϰʲΤ褦ˤʤޤ +ゲノム配列を、末端 1000bp をオーバーラップさせながら 11000bp ごとに +ブツ切りにし FASTA フォーマットに整形する場合は以下のようになります。 bioruby> seq.window_search(11000, 10000) do |subseq| bioruby+ puts subseq.to_fasta bioruby+ end -Ǹ 10000bp ʤ 3' ü;֤ͤȤΤǡ -ɬפʾӼäɽޤ +最後の 10000bp に満たない 3' 端の余り配列は返り値として得られるので、 +必要な場合は別途受け取って表示します。 bioruby> i = 1 bioruby> remainder = seq.window_search(11000, 10000) do |subseq| bioruby+ puts subseq.to_fasta("segment #{i*10000}", 60) bioruby+ i += 1 bioruby+ end bioruby> puts remainder.to_fasta("segment #{i*10000}", 60) :splicing(position) - GenBank position ʸˤڤФ splicing -᥽åɤǹԤޤ +塩基配列の GenBank 等の position 文字列による切り出しは splicing +メソッドで行います。 bioruby> puts dna atgcatgcaaaa bioruby> puts dna.splicing("join(1..3,7..9)") atggca :randomize -randomize ᥽åɤϡ¸ޤޥޤ +randomize メソッドは、配列の組成を保存したままランダム配列を生成します。 bioruby> puts dna.randomize agcaatagatac :to_re -to_re ᥽åɤϡۣʱɽޤ atgc -ѥ󤫤ʤɽѴޤ +to_re メソッドは、曖昧な塩基の表記を含む塩基配列を atgc だけの +パターンからなる正規表現に変換します。 bioruby> ambiguous = getseq("atgcyatgcatgcatgc") bioruby> p ambiguous.to_re /atgc[tc]atgcatgcatgc/ bioruby> puts ambiguous.to_re (?-mix:atgc[tc]atgcatgcatgc) -seq ᥽åɤ ATGC δ̤ͭ 90% ʲȥߥλȤߤʤΤǡ -ۣʱ¿ޤޤξ to_naseq ᥽åɤȤä -Ū Bio::Sequence::NA ֥ȤѴɬפޤ +seq メソッドは ATGC の含有量が 90% 以下だとアミノ酸配列とみなすので、 +曖昧な塩基が多く含まれる配列の場合は to_naseq メソッドを使って +明示的に Bio::Sequence::NA オブジェクトに変換する必要があります。 bioruby> s = getseq("atgcrywskmbvhdn").to_naseq bioruby> p s.to_re /atgc[ag][tc][at][gc][tg][ac][tgc][agc][atc][atg][atgc]/ bioruby> puts s.to_re (?-mix:atgc[ag][tc][at][gc][tg][ac][tgc][agc][atc][atg][atgc]) :names -ޤȤȤϤޤ󤬡̾䥢ߥλ̾Ѵ -᥽åɤǤ +あまり使うことはありませんが、配列を塩基名やアミノ酸名に変換する +メソッドです。 bioruby> p dna.names ["adenine", "thymine", "guanine", "cytosine", "adenine", "thymine", "guanine", "cytosine", "adenine", "adenine", "adenine", "adenine"] bioruby> p pep.names ["methionine", "histidine", "alanine", "lysine"] :codes -ߥλʸɤѴ names Ȼ᥽åɤǤ +アミノ酸配列を3文字コードに変換する names と似たメソッドです。 bioruby> p pep.codes ["Met", "His", "Ala", "Lys"] :gc_percent - GC ̤ gc_percent ᥽åɤޤ +塩基配列の GC 含量は gc_percent メソッドで得られます。 bioruby> p dna.gc_percent 33 :to_fasta -FASTA եޥåȤѴˤ to_fasta ᥽åɤȤޤ +FASTA フォーマットに変換するには to_fasta メソッドを使います。 bioruby> puts dna.to_fasta("dna sequence") >dna sequence aaccggttacgt -=== 䥢ߥλΥɡɥɽ򤢤Ĥ +=== 塩基やアミノ酸のコード、コドン表をあつかう -ߥλ𡢥ɥơ֥뤿 aminoacids, nucleicacids, -codontables, codontable ޥɤҲ𤷤ޤ +アミノ酸、塩基、コドンテーブルを得るための aminoacids, nucleicacids, +codontables, codontable コマンドを紹介します。 --- aminoacids -ߥλΰ aminoacids ޥɤɽǤޤ +アミノ酸の一覧は aminoacids コマンドで表示できます。 bioruby> aminoacids ? Pyl pyrrolysine A Ala alanine B Asx asparagine/aspartic acid @@ -534,21 +534,21 @@ V Val valine W Trp tryptophan Y Tyr tyrosine Z Glx glutamine/glutamic acid -֤ͤûɽбĹɽΥϥåˤʤäƤޤ +返り値は短い表記と対応する長い表記のハッシュになっています。 bioruby> aa = aminoacids bioruby> puts aa["G"] Gly bioruby> puts aa["Gly"] glycine --- nucleicacids -ΰ nucleicacids ޥɤɽǤޤ +塩基の一覧は nucleicacids コマンドで表示できます。 bioruby> nucleicacids a a Adenine t t Thymine g g Guanine @@ -564,19 +564,19 @@ v [agc] not T h [atc] not G d [atg] not C n [atgc] -֤ͤϱΣʸɽȳΥϥåˤʤäƤޤ +返り値は塩基の1文字表記と該当する塩基のハッシュになっています。 bioruby> na = nucleicacids bioruby> puts na["r"] [ag] --- codontables -ɥơ֥ΰ codontables ޥɤɽǤޤ +コドンテーブルの一覧は codontables コマンドで表示できます。 bioruby> codontables 1 Standard (Eukaryote) 2 Vertebrate Mitochondrial 3 Yeast Mitochondorial @@ -593,19 +593,19 @@ 16 Chlorophycean Mitochondrial 21 Trematode Mitochondrial 22 Scenedesmus obliquus mitochondrial 23 Thraustochytrium Mitochondrial -֤ͤϥơֹ֥̾ΥϥåˤʤäƤޤ +返り値はテーブル番号と名前のハッシュになっています。 bioruby> ct = codontables bioruby> puts ct[3] Yeast Mitochondorial --- codontable(num) -ɥɽΤ codontable ޥɤɽǤޤ +コドン表自体は codontable コマンドで表示できます。 bioruby> codontable(11) = Codon table 11 : Bacteria @@ -637,375 +637,271 @@ | G GGG | Val V | Ala A | Glu E | Gly G | a | | GG G | Val V | Ala A | Glu E | Gly G | g | *---------------------------------------------* -֤ͤ Bio::CodonTable 饹Υ֥Ȥǡɥȥߥλ -ѴǤǤʤʲΤ褦ʥǡ뤳ȤǤޤ +返り値は Bio::CodonTable クラスのオブジェクトで、コドンとアミノ酸の +変換ができるだけでなく、以下のようなデータも得ることができます。 bioruby> ct = codontable(2) bioruby> p ct["atg"] "M" :definition -ɥɽ +コドン表の定義の説明 bioruby> puts ct.definition Vertebrate Mitochondrial :start -ϥɥ +開始コドン一覧 bioruby> p ct.start ["att", "atc", "ata", "atg", "gtg"] :stop -ߥɥ +終止コドン一覧 bioruby> p ct.stop ["taa", "tag", "aga", "agg"] :revtrans -ߥλ򥳡ɤ륳ɥĴ٤ +アミノ酸をコードするコドンを調べる bioruby> p ct.revtrans("V") ["gtc", "gtg", "gtt", "gta"] -=== եåȥեΥȥ +=== フラットファイルのエントリ -ǡ١Υȥȡեåȥե뤽ΤΤ򰷤ˡҲ𤷤ޤ -GenBank ǡ١ǤϡեΥȥ꤬ޤޤ gbphg.seq -ե륵ΤǡΥեȤƻȤޤ +データベースのエントリと、フラットファイルそのものを扱う方法を紹介します。 +GenBank データベースの中では、ファージのエントリが含まれる gbphg.seq の +ファイルサイズが小さいので、このファイルを例として使います。 % wget ftp://ftp.hgc.jp/pub/mirror/ncbi/genbank/gbphg.seq.gz % gunzip gbphg.seq.gz --- getent(str) -getseq ޥɤޤǤʤȥΤ -ˤ getent ޥ(2)Ȥޤgetseq ޥƱ͡getent ޥɤǤ -OBDA, EMBOSS, NCBI, EBI, TogoWS, KEGG API Υǡ١ѲǽǤ(5) -ˤĤƤ getseq ޥɤ򻲾ȤƤ +getseq コマンドは配列を取得しましたが、配列だけでなくエントリ全体を取得する +には getent コマンド(※2)を使います。getseq コマンド同様、getent コマンドでも +OBDA, EMBOSS, NCBI, EBI, TogoWS のデータベースが利用可能です(※5)。 +設定については getseq コマンドの説明を参照してください。 bioruby> entry = getent("genbank:AB044425") bioruby> puts entry LOCUS AB044425 1494 bp DNA linear PLN 28-APR-2001 DEFINITION Volvox carteri f. kawasakiensis chloroplast psaB gene for photosystem I P700 chlorophyll a apoprotein A2, strain:NIES-732. - (ά) + (略) -getent ޥɤΰˤ db:entry_id ʸEMBOSS USA -ե롢IO Ϳ졢ǡ١Σȥʬʸ֤ޤ -ǡ١˸¤餺¿Υǡ١ȥбƤޤ +getent コマンドの引数には db:entry_id 形式の文字列、EMBOSS の USA、 +ファイル、IO が与えられ、データベースの1エントリ分の文字列が返されます。 +配列データベースに限らず、数多くのデータベースエントリに対応しています。 --- flatparse(str) -ȥѡߤǡȤˤ flatparse -ޥɤȤޤ +取得したエントリをパースして欲しいデータをとりだすには flatparse +コマンドを使います。 bioruby> entry = getent("gbphg.seq") bioruby> gb = flatparse(entry) bioruby> puts gb.entry_id AB000833 bioruby> puts gb.definition Bacteriophage Mu DNA for ORF1, sheath protein gpL, ORF2, ORF3, complete cds. bioruby> puts psaB.naseq acggtcagacgtttggcccgaccaccgggatgaggctgacgcaggtcagaaatctttgtgacgacaaccgtatcaat - (ά) + (略) --- getobj(str) -getobj ޥ(2)ϡgetent ǥȥʸȤƼ flatparse -ѡ֥ȤѴΤƱǤgetent ޥɤƱ -դޤ getseqȥ getent -ѡ֥Ȥ getobj ȤȤˤʤޤ +getobj コマンド(※2)は、getent でエントリを文字列として取得し flatparse で +パースしたオブジェクトに変換するのと同じです。getent コマンドと同じ引数を +受け付けます。配列を取得する時は getseq、エントリを取得する時は getent、 +パースしたオブジェクトを取得する時は getobj を使うことになります。 bioruby> gb = getobj("gbphg.seq") bioruby> puts gb.entry_id AB000833 --- flatfile(file) -getent ޥɤϣȥꤷʤᡢΥե򳫤 -ƥȥ˽Ԥˤ flatfile ޥɤȤޤ +getent コマンドは1エントリしか扱えないため、ローカルのファイルを開いて +各エントリ毎に処理を行うには flatfile コマンドを使います。 bioruby> flatfile("gbphg.seq") do |entry| bioruby+ # do something on entry bioruby+ end -֥åꤷʤϡեκǽΥȥޤ +ブロックを指定しない場合は、ファイル中の最初のエントリを取得します。 bioruby> entry = flatfile("gbphg.seq") bioruby> gb = flatparse(entry) bioruby> puts gb.entry_id --- flatauto(file) -ƥȥ flatparse Ʊͤ˥ѡ֤ǽ֤˽뤿ˤϡ -flatfile ޥɤ flatauto ޥɤȤޤ +各エントリを flatparse と同様にパースした状態で順番に処理するためには、 +flatfile コマンドの代わりに flatauto コマンドを使います。 bioruby> flatauto("gbphg.seq") do |entry| bioruby+ print entry.entry_id bioruby+ puts entry.definition bioruby+ end -flatfile Ʊ֥͡åꤷʤϡեκǽΥȥ -ѡ֥Ȥ֤ޤ +flatfile 同様、ブロックを指定しない場合は、ファイル中の最初のエントリを +取得し、パースしたオブジェクトを返します。 bioruby> gb = flatfile("gbphg.seq") bioruby> puts gb.entry_id -=== եåȥեΥǥ +=== フラットファイルのインデクシング -EMBOSS dbiflat ˻ǽȤơBioRuby, BioPerl ʤɤ˶̤ BioFlat -ȤǥåȤߤޤ٥ǥå -ƤȥȥμФ®ưפ˹Ԥޤ -ˤ꼫ʬѤΥǡ١ڤ˺뤳ȤǤޤ +EMBOSS の dbiflat に似た機能として、BioRuby, BioPerl などに共通の BioFlat +というインデックスを作成する仕組みがあります。一度インデックスを +作成しておくとエントリの取り出しが高速かつ容易に行えます。 +これにより自分専用のデータベースを手軽に作ることができます。 --- flatindex(db_name, *source_file_list) -GenBank Υեե gbphg.seq äƤ륨ȥФ -mydb Ȥǡ١̾ǥǥåޤ +GenBank のファージの配列ファイル gbphg.seq に入っているエントリに対して +mydb というデータベース名でインデックスを作成します。 bioruby> flatindex("mydb", "gbphg.seq") Creating BioFlat index (.bioruby/bioflat/mydb) ... done --- flatsearch(db_name, entry_id) - mydb ǡ١饨ȥȤФˤ flatsearch ޥɤ -Ȥޤ +作成した mydb データベースからエントリをとり出すには flatsearch コマンドを +使います。 bioruby> entry = flatsearch("mydb", "AB004561") bioruby> puts entry LOCUS AB004561 2878 bp DNA linear PHG 20-MAY-1998 DEFINITION Bacteriophage phiU gene for integrase, complete cds, integration site. ACCESSION AB004561 - (ά) + (略) -=== ͡ DB FASTA եޥåȤѴ¸ +=== 様々な DB の配列を FASTA フォーマットに変換して保存 -FASTA եޥåȤǡɸŪѤƤեޥåȤǤ ->׵ǤϤޤ룱ܤꡢܰʹߤ󤬤ĤŤޤ -ζʸ̵뤵ޤ +FASTA フォーマットは配列データで標準的に用いられているフォーマットです。 +「>」記号ではじまる1行目に配列の説明があり、2行目以降に配列がつづきます。 +配列中の空白文字は無視されます。 >entry_id definition ... ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT -Ԥϡǽñ줬 ID ˤʤäƤ뤳Ȥ¿ΤǤ -NCBI BLAST ѥǡ١ǤϤ˹٤ʹ¤ʤƤޤ +配列の説明行は、最初の単語が配列の ID になっていることが多いのですが、 +NCBI の BLAST 用データベースではさらに高度な構造化がおこなわれています。 * ((<URL:ftp://ftp.ncbi.nih.gov/blast/documents/README.formatdb>)) * ((<URL:http://blast.wustl.edu/doc/FAQ-Indexing.html#Identifiers>)) * FASTA format (Wikipedia) ((<URL:http://en.wikipedia.org/wiki/Fasta_format>)) -BioRuby Υǡ١ȥΥ饹ˤϥȥIDˤĤ -̤Υ᥽åɤѰդƤޤ +BioRuby のデータベースエントリのクラスにはエントリID、配列、定義について +共通のメソッドが用意されています。 -* entry_id - ȥ ID -* definition - ʸ -* seq - +* entry_id - エントリ ID を取得 +* definition - 定義文を取得 +* seq - 配列を取得 -ζ̥᥽åɤȤȡɤǡ١ȥǤ -FASTA եޥåȤѴǤץबñ˺ޤ +これらの共通メソッドを使うと、どんな配列データベースエントリでも +FASTA フォーマットに変換できるプログラムが簡単に作れます。 entry.seq.to_fasta("#{entry.entry_id} #{entry.definition}", 60) -ˡBioRuby Ǥϥǡ١ηưȽ̤ǤޤΤǡ -GenBank, UniProt ʤ¿μפǡ١Ǥ -ե̾ꤹ FASTA եޥåȤѴǤޤ +さらに、BioRuby では入力データベースの形式を自動判別できますので、 +GenBank, UniProt など多くの主要な配列データベースでは +ファイル名を指定するだけで FASTA フォーマットに変換できます。 --- flatfasta(fasta_file, *source_file_list) -ϥǡ١Υե̾ΥꥹȤ顢ꤷ FASTA եޥåȤ -ե륳ޥɤǤǤϤĤ GenBank Υե -FASTA եޥåȤѴmyfasta.fa Ȥե¸Ƥޤ +入力データベースのファイル名のリストから、指定した FASTA フォーマットの +ファイルを生成するコマンドです。ここではいくつかの GenBank のファイルを +FASTA フォーマットに変換し、myfasta.fa というファイルに保存しています。 bioruby> flatfasta("myfasta.fa", "gbphg.seq", "gbvrl1.seq", "gbvrl2.seq") Saving fasta file (myfasta.fa) ... converting -- gbphg.gbk converting -- gbvrl1.gbk converting -- gbvrl2.gbk done -=== KEGG API +=== スクリプト生成 -BioRuby Ǥ KEGG API Υ֥ӥñѤǤޤ +作業手順をスクリプト化して保存しておくこともできます。 ---- keggdbs - -ΥͥåȤ KEGG API ̤Ѳǽʥǡ١ΥꥹȤɽޤ - - bioruby> keggdbs - nt: Non-redundant nucleic acid sequence database - aa: Non-redundant protein sequence database - gb: GenBank nucleic acid sequence database - (ά) - ---- keggorgs - -KEGG ˼ϿƤʪΥꥹȤɽޤ - - bioruby> keggorgs - aae: Aquifex aeolicus - aci: Acinetobacter sp. ADP1 - afu: Archaeoglobus fulgidus - (ά) - ---- keggpathways - -KEGG ˼ϿƤѥΥꥹȤɽޤ - - bioruby> keggpathways - path:map00010: Glycolysis / Gluconeogenesis - Reference pathway - path:map00020: Citrate cycle (TCA cycle) - Reference pathway - path:map00030: Pentose phosphate pathway - Reference pathway - (ά) - -ˣʸ KEGG ʪﵭ򤢤ȡʪѤǤ -ѥΰ֤ޤIJ eco ξʲΤ褦ˤʤޤ - - bioruby> keggpathways("eco") - path:eco00010: Glycolysis / Gluconeogenesis - Escherichia coli K-12 MG1655 - path:eco00020: Citrate cycle (TCA cycle) - Escherichia coli K-12 MG1655 - path:eco00030: Pentose phosphate pathway - Escherichia coli K-12 MG1655 - (ά) - ---- keggapi - -ʳ KEGG API Υ᥽åɤϡkeggapi ³ƸƤӽФȤ -ѤǤޤ - - bioruby> p keggapi.get_genes_by_pathway("path:eco00010") - ["eco:b0114", "eco:b0115", "eco:b0116", "eco:b0356", "eco:b0688", (ά) - -Ѳǽʥ᥽åɤΰ KEGG API Υޥ˥奢򻲾ȤƤ - -* ((<URL:http://www.genome.jp/kegg/soap/doc/keggapi_manual_ja.html>)) - -=== DBGET - -ΥͥåȤ DBGET ΥޥɤǤ binfo, bfind, bget, btit, bconv -KEGG API ѤƤΤޤ޼¹ԤǤ褦ˤʤäƤޤ - ---- binfo - - bioruby> binfo - *** Last database updates *** - Date Database Release #Entries #Residues - -------- ------------- ------------------------ ------------ ---------------- - 05/12/06 nr-nt 05-12-04 (Dec 05) 63,078,043 111,609,773,616 - 05/12/06 nr-aa 05-12-05 (Dec 05) 2,682,790 890,953,839 - 05/10/25 genbank 150.0 (Oct 05) 49,152,445 53,655,236,500 - 05/12/06 genbank-upd 150.0+/12-04 (Dec 05) 7,470,976 6,357,888,366 - (ά) - -binfo ޥɤ³ƥǡ١̾ꤹ뤳ȤǤܺ٤ʾ -ɽޤ - - bioruby> binfo "genbank" - genbank GenBank nucleic acid sequence database - gb Release 150.0, Oct 05 - National Center for Biotechnology Information - 49,152,445 entries, 53,655,236,500 bases - Last update: 05/10/25 - <dbget> <fasta> <blast> - ---- bfind(keyword) - -bfind ޥɤǥǡ١Ф륭ɥԤȤǤޤ -ǡ١̾ȸɤʸϤޤ - - bioruby> list = bfind "genbank ebola human" - bioruby> puts list - gb:BD177378 [BD177378] A monoclonal antibody recognizing ebola virus. - gb:BD177379 [BD177379] A monoclonal antibody recognizing ebola virus. - (ά) - ---- bget(entry_id) - -bget ޥɤǻꤷ db:entry_id Υǡ١ȥǤޤ - - bioruby> entry = bget "gb:BD177378" - bioruby> puts entry - LOCUS BD177378 24 bp DNA linear PAT 16-APR-2003 - DEFINITION A monoclonal antibody recognizing ebola virus. - (ά) - -=== ץ - -ȼ򥹥ץȲ¸ƤȤǤޤ - bioruby> script -- 8< -- 8< -- 8< -- Script -- 8< -- 8< -- 8< -- bioruby> seq = getseq("gbphg.seq") bioruby> p seq bioruby> p seq.translate bioruby> script -- >8 -- >8 -- >8 -- Script -- >8 -- >8 -- >8 -- Saving script (script.rb) ... done -줿 script.rb ϰʲΤ褦ˤʤޤ +生成された script.rb は以下のようになります。 #!/usr/bin/env bioruby seq = getseq("gbphg.seq") p seq p seq.translate -ΥץȤ bioruby ޥɤǼ¹Ԥ뤳ȤǤޤ +このスクリプトは bioruby コマンドで実行することができます。 % bioruby script.rb -=== ʰץ뵡ǽ +=== 簡易シェル機能 --- cd(dir) -ȥǥ쥯ȥѹޤ +カレントディレクトリを変更します。 bioruby> cd "/tmp" "/tmp" -ۡǥ쥯ȥˤϰĤ cd ¹Ԥޤ +ホームディレクトリに戻るには引数をつけずに cd を実行します。 bioruby> cd "/home/k" --- pwd -ȥǥ쥯ȥɽޤ +カレントディレクトリを表示します。 bioruby> pwd "/home/k" --- dir -ȥǥ쥯ȥΥեɽޤ +カレントディレクトリのファイルを一覧表示します。 bioruby> dir UGO Date Byte File ------ ---------------------------- ----------- ------------ 40700 Tue Dec 06 07:07:35 JST 2005 1768 "Desktop" 40755 Tue Nov 29 16:55:20 JST 2005 2176 "bin" 100644 Sat Oct 15 03:01:00 JST 2005 42599518 "gbphg.seq" - (ά) + (略) bioruby> dir "gbphg.seq" UGO Date Byte File ------ ---------------------------- ----------- ------------ 100644 Sat Oct 15 03:01:00 JST 2005 42599518 "gbphg.seq" --- head(file, lines = 10) -ƥȥե䥪֥ȤƬ 10 Ԥɽޤ +テキストファイルやオブジェクトの先頭 10 行を表示します。 bioruby> head "gbphg.seq" GBPHG.SEQ Genetic Sequence Data Bank October 15 2005 @@ -1013,152 +909,152 @@ Phage Sequences 2713 loci, 16892737 bases, from 2713 reported sequences -ɽԿꤹ뤳ȤǤޤ +表示する行数を指定することもできます。 bioruby> head "gbphg.seq", 2 GBPHG.SEQ Genetic Sequence Data Bank October 15 2005 -ƥȤäƤѿƬ򸫤뤳ȤǤޤ +テキストの入っている変数の先頭を見ることもできます。 bioruby> entry = getent("gbphg.seq") bioruby> head entry, 2 GBPHG.SEQ Genetic Sequence Data Bank October 15 2005 --- disp(obj) -ƥȥե䥪֥ȤȤڡ㡼ɽޤ -ǻѤڡ㡼 pager ޥɤѹ뤳ȤǤޤʸҡˡ +テキストファイルやオブジェクトの中身をページャーで表示します。 +ここで使用するページャーは pager コマンドで変更することができます(後述)。 bioruby> disp "gbphg.seq" bioruby> disp entry bioruby> disp [1, 2, 3] * 4 -=== ѿ +=== 変数 --- ls -å˺ѿʥ֥ȡˤΰɽޤ +セッション中に作成した変数(オブジェクト)の一覧を表示します。 bioruby> ls ["entry", "seq"] bioruby> a = 123 ["a", "entry", "seq"] --- rm(symbol) -ѿõޤ +変数を消去します。 bioruby> rm "a" bioruby> ls ["entry", "seq"] --- savefile(filename, object) -ѿ¸ƤƤƥȥե¸ޤ +変数に保存されている内容をテキストファイルに保存します。 bioruby> savefile "testfile.txt", entry Saving data (testfile.txt) ... done bioruby> disp "testfile.txt" -=== Ƽ +=== 各種設定 -³λȤߤȤ BioRuby 뽪λ session ǥ쥯ȥ -ҥȥꡢ֥ȡĿ꤬ͤ¸졢ư˼ưŪ -ɤ߹ޤޤ +永続化の仕組みとして BioRuby シェル終了時に session ディレクトリ内に +ヒストリ、オブジェクト、個人の設定が保存され、次回起動時に自動的に +読み込まれます。 --- config -BioRuby γƼɽޤ +BioRuby シェルの各種設定を表示します。 bioruby> config message = "...BioRuby in the shell..." marshal = [4, 8] color = false pager = nil echo = false -echo ɽ뤫ɤڤؤޤon ξϡputs p ʤɤ -ĤʤƤɾ̤ͤɽޤ -irb ޥɤξϽ꤬ on ˤʤäƤޤbioruby ޥɤǤ -Ĺ䥨ȥʤĹʸ򰷤Ȥ¿ᡢǤ -off ˤƤޤ +echo 表示するかどうかを切り替えます。on の場合は、puts や p などを +つけなくても評価した値が画面に表示されます。 +irb コマンドの場合は初期設定が on になっていますが、bioruby コマンドでは +長い配列やエントリなど長大な文字列を扱うことが多いため、初期設定では +off にしています。 bioruby> config :echo Echo on ==> nil bioruby> config :echo Echo off -ɥɽʤɡǽʾ˥顼ɽ뤫ɤڤؤޤ -顼ɽξ硢ץץȤˤ⿧ĤޤΤȽ̤Ǥޤ +コドン表など、可能な場合にカラー表示するかどうかを切り替えます。 +カラー表示の場合、プロンプトにも色がつきますので判別できます。 bioruby> config :color bioruby> codontable - (դ) + (色付き) -¹Ԥ뤿Ӥ꤬ڤؤޤ +実行するたびに設定が切り替わります。 bioruby> config :color bioruby> codontable - (ʤ) + (色なし) -BioRuby 뵯ưɽ륹ץåå㤦ʸ -ѹޤβϥץѤΥǥ쥯ȥ꤫ꤷƤΤ -褤Ǥ礦 +BioRuby シェル起動時に表示されるスプラッシュメッセージを違う文字列に +変更します。何の解析プロジェクト用のディレクトリかを指定しておくのも +よいでしょう。 bioruby> config :message, "Kumamushi genome project" K u m a m u s h i g e n o m e p r o j e c t Version : BioRuby 0.8.0 / Ruby 1.8.4 -ǥեȤʸ᤹ˤϡʤǼ¹Ԥޤ +デフォルトの文字列に戻すには、引数なしで実行します。 bioruby> config :message -BioRuby 뵯ưɽ륹ץååݥ -˥᡼ɽ뤫ɤڤؤޤ -¹Ԥ뤿Ӥ꤬ڤؤޤ +BioRuby シェル起動時に表示されるスプラッシュメッセ−ジを +アニメーション表示するかどうかを切り替えます。 +こちらも実行するたびに設定が切り替わります。 bioruby> config :splash Splash on --- pager(command) -disp ޥɤǼºݤѤڡ㡼ڤؤޤ +disp コマンドで実際に利用するページャーを切り替えます。 bioruby> pager "lv" Pager is set to 'lv' bioruby> pager "less -S" Pager is set to 'less -S' -ڡ㡼ѤʤˤϰʤǼ¹Ԥޤ +ページャーを使用しない設定にする場合は引数なしで実行します。 bioruby> pager Pager is set to 'off' -ڡ㡼 off λ˰ʤǼ¹ԤȴĶѿ PAGER ͤѤޤ +ページャーが off の時に引数なしで実行すると環境変数 PAGER の値を利用します。 bioruby> pager Pager is set to 'less' -=== ҥ +=== 遺伝子アスキーアート --- doublehelix(sequence) -DNA 򥢥Ȥɽ륪ޥǽޤ -Ŭʱ seq äݤɽƤߤޤ礦 +DNA 配列をアスキーアートで表示するオマケ機能があります。 +適当な塩基配列 seq を二重螺旋っぽく表示してみましょう。 bioruby> dna = getseq("atgc" * 10).randomize bioruby> doublehelix dna ta t--a @@ -1171,263 +1067,263 @@ gc a--t g---c c----g c----g - (ά) + (略) -=== Ҳ +=== 遺伝子音楽 --- midifile(midifile, sequence) -DNA MIDI եѴ륪ޥǽޤ -Ŭʱ seq Ȥä midifile.mid -MIDI ץ쥤䡼DZդƤߤޤ礦 +DNA 配列を MIDI ファイルに変換するオマケ機能があります。 +適当な塩基配列 seq を使って生成した midifile.mid を +MIDI プレイヤーで演奏してみましょう。 bioruby> midifile("midifile.mid", seq) Saving MIDI file (midifile.mid) ... done -ʾ BioRuby β򽪤ꡢʲǤ BioRuby 饤֥꼫Τ -Ԥޤ +以上で BioRuby シェルの解説を終わり、以下では BioRuby ライブラリ自体の +解説を行います。 -== 𡦥ߥλ (Bio::Sequence 饹) +== 塩基・アミノ酸配列を処理する (Bio::Sequence クラス) -Bio::Sequence 饹ϡФ͡ԤȤǤޤ -ñȤơû atgcatgcaaaa ȤäơؤѴ -ʬڤФη׻ߥλؤʬ̷׻ʤɤ -ԤʤäƤߤޤߥλؤǤϡɬפ˱Ʋܤ -Ϥ뤫ե졼ꤷꡢcodontable.rb Ƥ륳ɥơ -֥椫ѤΤꤷꤹǤޤʥɥơ֥ -ֹ ((<URL:http://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi>)) -򻲾ȡˡ +Bio::Sequence クラスは、配列に対する様々な操作を行うことができます。 +簡単な例として、短い塩基配列 atgcatgcaaaa を使って、相補配列への変換、 +部分配列の切り出し、塩基組成の計算、アミノ酸への翻訳、分子量計算などを +行なってみます。アミノ酸への翻訳では、必要に応じて何塩基目から翻訳を開 +始するかフレームを指定したり、codontable.rb で定義されているコドンテー +ブルの中から使用するものを指定したりする事ができます(コドンテーブルの +番号は ((<URL:http://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi>)) +を参照)。 #!/usr/bin/env ruby require 'bio' seq = Bio::Sequence::NA.new("atgcatgcaaaa") - puts seq # - puts seq.complement # (Bio::Sequence::NA) - puts seq.subseq(3,8) # 3 ܤ 8 ܤޤ + puts seq # 元の配列 + puts seq.complement # 相補配列 (Bio::Sequence::NA) + puts seq.subseq(3,8) # 3 塩基目から 8 塩基目まで - p seq.gc_percent # GC γ (Integer) - p seq.composition # (Hash) + p seq.gc_percent # GC 塩基の割合 (Integer) + p seq.composition # 全塩基組成 (Hash) - puts seq.translate # (Bio::Sequence::AA) - puts seq.translate(2) # ʸܤ̤ϣ - puts seq.translate(1,9) # ֤Υɥơ֥ + puts seq.translate # 翻訳配列 (Bio::Sequence::AA) + puts seq.translate(2) # 2文字目から翻訳(普通は1から) + puts seq.translate(1,9) # 9番のコドンテーブルを使用 - p seq.translate.codes # ߥλʸɤɽ (Array) - p seq.translate.names # ߥλ̾ɽ (Array) - p seq.translate.composition # ߥλ (Hash) - p seq.translate.molecular_weight # ʬ̤׻ (Float) + p seq.translate.codes # アミノ酸を3文字コードで表示 (Array) + p seq.translate.names # アミノ酸を名前で表示 (Array) + p seq.translate.composition # アミノ酸組成 (Hash) + p seq.translate.molecular_weight # 分子量を計算 (Float) - puts seq.complement.translate # + puts seq.complement.translate # 相補配列の翻訳 -print, puts, p Ƥ̤ɽ뤿 Ruby ɸ᥽åɤǤ -ܤȤʤ print ٤ơputs ϲԤưǤĤƤ롢 -p ʸʳΥ֥Ȥʹ֤䤹褦ɽƤ롢 -ȤħޤΤŬȤʬޤˡ +print, puts, p は内容を画面に表示するための Ruby 標準メソッドです。 +基本となる print と比べて、puts は改行を自動でつけてくれる、 +p は文字列や数字以外のオブジェクトも人間が見やすいように表示してくれる、 +という特徴がありますので適宜使い分けます。さらに、 require 'pp' -ȤлȤ褦ˤʤ pp ᥽åɤϡp ɽ䤹ʤޤ +とすれば使えるようになる pp メソッドは、p よりも表示が見やすくなります。 - Bio::Sequence::NA 饹Ρߥλ Bio::Sequence::AA -饹Υ֥Ȥˤʤޤ줾 Bio::Sequence 饹Ѿ -Ƥ뤿ᡢ¿Υ᥽åɤ϶̤Ǥ +塩基配列は Bio::Sequence::NA クラスの、アミノ酸配列は Bio::Sequence::AA +クラスのオブジェクトになります。それぞれ Bio::Sequence クラスを継承し +ているため、多くのメソッドは共通です。 - Bio::Sequence::NA, AA 饹 Ruby String 饹ѾƤΤ -String 饹ĥ᥽åɤȤǤޤ㤨ʬڤФˤ -Bio::Sequence 饹 subseq(from,to) ᥽åɤ¾ˡString 饹 -[] ᥽åɤȤȤǤޤ +さらに Bio::Sequence::NA, AA クラスは Ruby の String クラスを継承しているので +String クラスが持つメソッドも使う事ができます。例えば部分配列を切り出すには +Bio::Sequence クラスの subseq(from,to) メソッドの他に、String クラスの +[] メソッドを使うこともできます。 -Ruby ʸ 1 ʸܤ 0 ܤȤƿˤդɬפǤȤС +Ruby の文字列は 1 文字目を 0 番目として数える点には注意が必要です。たとえば、 puts seq.subseq(1, 3) puts seq[0, 3] -Ϥɤ seq κǽΣʸ atg ɽޤ +はどちらも seq の最初の3文字 atg を表示します。 -Τ褦ˡString Υ᥽åɤȤϡʪؤ̻Ѥ 1 ʸܤ -1 ܤȤƿ 1 ɬפޤsubseq ᥽åɤ -ǤäƤޤޤfrom, to Τɤ餫Ǥ 0 ʲξ -㳰ȯ褦ˤʤäƤޤˡ +このように、String のメソッドを使う場合は、生物学で普通使用される 1 文字目を +1 番目として数えた数字からは 1 を引く必要があります(subseq メソッドは +これを内部でやっています。また、from, to のどちらかでも 0 以下の場合は +例外が発生するようになっています)。 -ޤǤν BioRuby ǻȰʲΤ褦ˤʤޤ +ここまでの処理を BioRuby シェルで試すと以下のようになります。 - # ιԤ seq = seq("atgcatgcaaaa") Ǥ褤 + # 次の行は seq = seq("atgcatgcaaaa") でもよい bioruby> seq = Bio::Sequence::NA.new("atgcatgcaaaa") - # ɽ + # 生成した配列を表示 bioruby> puts seq atgcatgcaaaa - # ɽ + # 相補配列を表示 bioruby> puts seq.complement ttttgcatgcat - # ʬɽʣܤ飸ܤޤǡ + # 部分配列を表示(3塩基目から8塩基目まで) bioruby> puts seq.subseq(3,8) gcatgc - # GC% ɽ + # 配列の GC% を表示 bioruby> p seq.gc_percent 33 - # ɽ + # 配列の組成を表示 bioruby> p seq.composition {"a"=>6, "c"=>2, "g"=>2, "t"=>2} - # ߥλؤ + # アミノ酸配列への翻訳 bioruby> puts seq.translate MHAK - # 򳫻ϱȤ + # 2塩基を開始塩基として翻訳 bioruby> puts seq.translate(2) CMQ - # ֤Υɥơ֥Ѥ + # 9番のコドンテーブルを使用して翻訳 bioruby> puts seq.translate(1,9) MHAN - # 줿ߥλʸɤɽ + # 翻訳されたアミノ酸配列を3文字コードで表示 bioruby> p seq.translate.codes ["Met", "His", "Ala", "Lys"] - # 줿ߥλ򥢥ߥλ̾ɽ + # 翻訳されたアミノ酸配列をアミノ酸の名前で表示 bioruby> p seq.translate.names ["methionine", "histidine", "alanine", "lysine"] - # 줿ߥλɽ + # 翻訳されたアミノ酸配列の組成を表示 bioruby> p seq.translate.composition {"K"=>1, "A"=>1, "M"=>1, "H"=>1} - # 줿ߥλʬ̤ɽ + # 翻訳されたアミノ酸配列の分子量を表示 bioruby> p seq.translate.molecular_weight 485.605 - # + # 相補配列を翻訳 bioruby> puts seq.complement.translate FCMH - # ʬʣܤ飳ܤޤǡ + # 部分配列(1塩基目から3塩基目まで) bioruby> puts seq.subseq(1, 3) atg - # ʬʣܤ飳ܤޤǡ + # 部分配列(1塩基目から3塩基目まで) bioruby> puts seq[0, 3] atg -window_search(window_size, step_size) ᥽åɤȤȡФƥ -ɥ򤺤餷ʤ餽줾ʬФԤȤǤޤ -Ruby ĹΤҤȤĤǤ֥֥åפˤäơ֤줾Фפ -ʷ餫Ƥ˽񤯤ȤǽǤʲǤϡsubseq Ȥѿˤ줾 -ʬʤ֥å򷫤֤¹Ԥ뤳Ȥˤʤޤ +window_search(window_size, step_size) メソッドを使うと、配列に対してウィ +ンドウをずらしながらそれぞれの部分配列に対する処理を行うことができます。 +Ruby の特長のひとつである「ブロック」によって、「それぞれに対する処理」を +簡潔かつ明瞭に書くことが可能です。以下の例では、subseq という変数にそれぞれ +部分配列を代入しながらブロックを繰り返し実行することになります。 -* 100 𤴤Ȥˡ1𤺤Ĥ餷ʤʿ GC% ׻ɽ +* 100 塩基ごとに(1塩基ずつずらしながら)平均 GC% を計算して表示する seq.window_search(100) do |subseq| puts subseq.gc_percent end -֥åǼʬ⡢Ʊ Bio::Sequence::NA ޤ -Bio::Sequence::AA 饹Υ֥ȤʤΤǡ󥯥饹λƤΥ -åɤ¹Ԥ뤳ȤǤޤ +ブロックの中で受け取る部分配列も、元と同じ Bio::Sequence::NA または +Bio::Sequence::AA クラスのオブジェクトなので、配列クラスの持つ全てのメ +ソッドを実行することができます。 -ޤܤΰ˰ưꤹ뤳Ȥ褦ˤʤäƤΤǡ +また、2番目の引数に移動幅を指定することが出来るようになっているので、 -* ɥñ̤Ǥ餷ʤ 15 5 ĴΥڥץɤɽ +* コドン単位でずらしながら 15 塩基を 5 残基のペプチドに翻訳して表示する seq.window_search(15, 3) do |subseq| puts subseq.translate end -ȤäȤǤޤ˰ưʤüʬ᥽å -Τ֤ͤȤ᤹褦ˤʤäƤΤǡ +といったことができます。さらに移動幅に満たない右端の部分配列をメソッド +自体の返り値として戻すようになっているので、 -* Υ 10000bp Ȥ˥֥ڤˤ FASTA եޥåȤ - ΤȤü 1000bp ϥСåפ10000bp ʤ 3' ü - Ӽäɽ +* ゲノム配列を 10000bp ごとにブツ切りにして FASTA フォーマットに整形、 + このとき末端 1000bp はオーバーラップさせ、10000bp に満たない 3' 端は + 別途受け取って表示する i = 1 remainder = seq.window_search(10000, 9000) do |subseq| puts subseq.to_fasta("segment #{i}", 60) i += 1 end puts remainder.to_fasta("segment #{i}", 60) -Τ褦ʻȴñˤǤޤ +のような事もわりと簡単にできます。 -ɥȰưƱˤȥСåפʤɥ -ǤΤǡ +ウィンドウの幅と移動幅を同じにするとオーバーラップしないウィンドウサー +チができるので、 -* ɥ٤ +* コドン頻度を数える codon_usage = Hash.new(0) seq.window_search(3, 3) do |subseq| codon_usage[subseq] += 1 end -* 10 Ĵ𤺤ʬ̤׻ +* 10 残基ずつ分子量を計算 seq.window_search(10, 10) do |subseq| puts subseq.molecular_weight end -ȤäѤͤޤ +といった応用も考えられます。 -ºݤˤ Bio::Sequence::NA ֥Ȥϥե뤫ɤ߹ʸ -ꡢǡ١ΤȤäꤷޤȤС +実際には Bio::Sequence::NA オブジェクトはファイルから読み込んだ文字列か +ら生成したり、データベースから取得したものを使ったりします。たとえば、 #!/usr/bin/env ruby require 'bio' - input_seq = ARGF.read # Ϳ줿եԤɤ߹ + input_seq = ARGF.read # 引数で与えられたファイルの全行を読み込む my_naseq = Bio::Sequence::NA.new(input_seq) my_aaseq = my_naseq.translate puts my_aaseq -Υץ na2aa.rb Ȥơʲα +このプログラムを na2aa.rb として、以下の塩基配列 gtggcgatctttccgaaagcgatgactggagcgaagaaccaaagcagtgacatttgtctg atgccgcacgtaggcctgataagacgcggacagcgtcgcatcaggcatcttgtgcaaatg tcggatgcggcgtga -񤤤ե my_naseq.txt ɤ߹ +を書いたファイル my_naseq.txt を読み込んで翻訳すると % ./na2aa.rb my_naseq.txt VAIFPKAMTGAKNQSSDICLMPHVGLIRRGQRRIRHLVQMSDAA* -Τ褦ˤʤޤʤߤˡΤ餤ʤûȣԤǽ񤱤ޤ +のようになります。ちなみに、このくらいの例なら短くすると1行で書けます。 % ruby -r bio -e 'p Bio::Sequence::NA.new($<.read).translate' my_naseq.txt -եΤݤʤΤǡϥǡ١ɬפ -Ƥߤޤ +しかし、いちいちファイルを作るのも面倒なので、次はデータベースから必要な +情報を取得してみます。 -== GenBank Υѡ (Bio::GenBank 饹) +== GenBank のパース (Bio::GenBank クラス) -GenBank ΥեѰդƤʼ긵ˤʤϡ -ftp://ftp.ncbi.nih.gov/genbank/ .seq եɤޤˡ +GenBank 形式のファイルを用意してください(手元にない場合は、 +ftp://ftp.ncbi.nih.gov/genbank/ から .seq ファイルをダウンロードします)。 % wget ftp://ftp.hgc.jp/pub/mirror/ncbi/genbank/gbphg.seq.gz % gunzip gbphg.seq.gz -ޤϡƥȥ꤫ ID ʸФ FASTA Ѵ -ߤޤ礦 +まずは、各エントリから ID と説明文、配列を取り出して FASTA 形式に変換して +みましょう。 -Bio::GenBank::DELIMITER GenBank 饹Ƥǡ -ǡ١Ȥ˰ۤʤ륨ȥζڤʸʤȤ GenBank ξ // -ФƤʤƤɤ褦ˤʤäƤޤ +Bio::GenBank::DELIMITER は GenBank クラスで定義されている定数で、 +データベースごとに異なるエントリの区切り文字(たとえば GenBank の場合は //) +を覚えていなくても良いようになっています。 #!/usr/bin/env ruby require 'bio' while entry = gets(Bio::GenBank::DELIMITER) - gb = Bio::GenBank.new(entry) # GenBank ֥ + gb = Bio::GenBank.new(entry) # GenBank オブジェクト - print ">#{gb.accession} " # ACCESSION ֹ - puts gb.definition # DEFINITION - puts gb.naseq # Sequence::NA ֥ȡ + print ">#{gb.accession} " # ACCESSION 番号 + puts gb.definition # DEFINITION 行 + puts gb.naseq # 塩基配列(Sequence::NA オブジェクト) end -νǤ GenBank եΥǡ¤˰¸Ƥޤ -ե뤫ΥǡϤ򰷤饹 Bio::FlatFile Ѥ뤳Ȥǡ -ʲΤ褦˶ڤʸʤɤ򵤤ˤ񤯤ȤǤޤ +しかし、この書き方では GenBank ファイルのデータ構造に依存しています。 +ファイルからのデータ入力を扱うクラス Bio::FlatFile を使用することで、 +以下のように区切り文字などを気にせず書くことができます。 #!/usr/bin/env ruby require 'bio' @@ -1435,11 +1331,11 @@ ff.each_entry do |gb| definition = "#{gb.accession} #{gb.definition}" puts gb.naseq.to_fasta(definition, 60) end -ΰ㤦ǡȤFASTAեޥåȤΥեɤ߹ȤǤ⡢ +形式の違うデータ、たとえばFASTAフォーマットのファイルを読み込むときでも、 #!/usr/bin/env ruby require 'bio' @@ -1448,13 +1344,13 @@ puts "definition : " + f.definition puts "nalen : " + f.nalen.to_s puts "naseq : " + f.naseq end -Τ褦ˡƱ褦ʽǺѤޤޤ +のように、同じような書き方で済ませられます。 -ˡ Bio::DB 饹 open ᥽åɤƱͤΤȤǤޤȤС +さらに、各 Bio::DB クラスの open メソッドで同様のことができます。たとえば、 #!/usr/bin/env ruby require 'bio' @@ -1462,461 +1358,461 @@ ff.each_entry do |gb| definition = "#{gb.accession} #{gb.definition}" puts gb.naseq.to_fasta(definition, 60) end -ʤɤȽ񤯤ȤǤޤʤνϤޤȤƤޤ) +などと書くことができます(ただし、この書き方はあまり使われていません)。 -ˡGenBank ʣ FEATURES ѡɬפʾФޤ -ޤ /tranlation="ߥλ" Ȥ Qualifier -ߥλФɽƤߤޤ +次に、GenBank の複雑な FEATURES の中をパースして必要な情報を取り出します。 +まずは /tranlation="アミノ酸配列" という Qualifier がある場合だけ +アミノ酸配列を抽出して表示してみます。 #!/usr/bin/env ruby require 'bio' ff = Bio::FlatFile.new(Bio::GenBank, ARGF) - # GenBank ΣȥꤴȤ + # GenBank の1エントリごとに ff.each_entry do |gb| - # FEATURES ǤĤĽ + # FEATURES の要素を一つずつ処理 gb.features.each do |feature| - # Feature ˴ޤޤ Qualifier ƥϥåѴ + # Feature に含まれる Qualifier を全てハッシュに変換 hash = feature.to_hash - # Qualifier translation + # Qualifier に translation がある場合だけ if hash['translation'] - # ȥΥåֹɽ + # エントリのアクセッション番号と翻訳配列を表示 puts ">#{gb.accession} puts hash['translation'] end end end -ˡFeature Υݥ˽񤫤Ƥ󤫤饨ȥα -ץ饤󥰤Τ /translation= ˽񤫤Ƥ -ξɽ٤Ƥߤޤ礦 +さらに、Feature のポジションに書かれている情報からエントリの塩基配列を +スプライシングし、それを翻訳したものと /translation= に書かれていた配列を +両方表示して比べてみましょう。 #!/usr/bin/env ruby require 'bio' ff = Bio::FlatFile.new(Bio::GenBank, ARGF) - # GenBank ΣȥꤴȤ + # GenBank の1エントリごとに ff.each_entry do |gb| - # ACCESSION ֹʪ̾ɽ + # ACCESSION 番号と生物種名を表示 puts "### #{gb.accession} - #{gb.organism}" - # FEATURES ǤĤĽ + # FEATURES の要素を一つずつ処理 gb.features.each do |feature| - # Feature position (join ...ʤ) Ф + # Feature の position (join ...など) を取り出す position = feature.position - # Feature ˴ޤޤ Qualifier ƥϥåѴ + # Feature に含まれる Qualifier を全てハッシュに変換 hash = feature.to_hash - # /translation= ʤХå + # /translation= がなければスキップ next unless hash['translation'] - # /gene=, /product= ʤɤ Qualifier ̾ʤɤξ򽸤 + # /gene=, /product= などの Qualifier から遺伝子名などの情報を集める gene_info = [ hash['gene'], hash['product'], hash['note'], hash['function'] ].compact.join(', ') puts "## #{gene_info}" - # position ξˤäƥץ饤󥰡 + # 塩基配列(position の情報によってスプライシング) puts ">NA splicing('#{position}')" puts gb.naseq.splicing(position) - # ߥλʥץ饤󥰤󤫤 + # アミノ酸配列(スプライシングした塩基配列から翻訳) puts ">AA translated by splicing('#{position}').translate" puts gb.naseq.splicing(position).translate - # ߥλ/translation= ˽񤫤ƤΤΡ + # アミノ酸配列(/translation= に書かれていたのもの) puts ">AA original translation" puts hash['translation'] end end -⤷ѤƤ륳ɥơ֥뤬ǥե (universal) Ȱäꡢ -ǽΥɥ "atg" ʳäꡢΥƥ󤬴ޤޤƤꡢ -뤤 BioRuby ˥ХСɽ룲ĤΥߥλ -ۤʤˤʤޤ +もし、使用されているコドンテーブルがデフォルト (universal) と違ったり、 +最初のコドンが "atg" 以外だったり、セレノシステインが含まれていたり、 +あるいは BioRuby にバグがあれば、上の例で表示される2つのアミノ酸配列は +異なる事になります。 -ǻѤƤ Bio::Sequence#splicing ᥽åɤϡGenBank, EMBL, -DDBJ եޥåȤǻȤƤ Location ɽ򸵤ˡ󤫤 -ʬڤФϤʥ᥽åɤǤ +この例で使用されている Bio::Sequence#splicing メソッドは、GenBank, EMBL, +DDBJ フォーマットで使われている Location の表記を元に、塩基配列から +部分配列を切り出す強力なメソッドです。 - splicing ᥽åɤΰˤ GenBank Location ʸʳ -BioRuby Bio::Locations ֥ȤϤȤǽǤ -̾ϸƤ Location ʸʬ䤹Τޤ -Location ʸΥեޥåȤ Bio::Locations ˤĤƾܤΤꤿ -BioRuby bio/location.rb 򸫤Ƥ +この splicing メソッドの引数には GenBank 等の Location の文字列以外に +BioRuby の Bio::Locations オブジェクトを渡すことも可能ですが、 +通常は見慣れている Location 文字列の方が分かりやすいかも知れません。 +Location 文字列のフォーマットや Bio::Locations について詳しく知りたい場合は +BioRuby の bio/location.rb を見てください。 -* GenBank Υǡ Feature ǻȤƤ Location ʸ +* GenBank 形式のデータの Feature で使われていた Location 文字列の例 naseq.splicing('join(2035..2050,complement(1775..1818),13..345') -* 餫 Locations ֥ȤѴƤϤƤ褤 +* あらかじめ Locations オブジェクトに変換してから渡してもよい locs = Bio::Locations.new('join((8298.8300)..10206,1..855)') naseq.splicing(locs) -ʤߤˡߥλ (Bio::Sequence::AA) ˤĤƤ splicing ᥽å -ѤʬФȤǽǤ +ちなみに、アミノ酸配列 (Bio::Sequence::AA) についても splicing メソッド +を使用して部分配列を取り出すことが可能です。 -* ߥλʬڤФʥʥڥץɤʤɡ +* アミノ酸配列の部分配列を切り出す(シグナルペプチドなど) aaseq.splicing('21..119') -=== GenBank ʳΥǡ١ +=== GenBank 以外のデータベース -BioRuby ǤϡGenBank ʳΥǡ١ˤĤƤŪʰƱǡ -ǡ١Σȥʬʸбǡ١Υ饹ϤС -ѡ줿̤֥Ȥˤʤä֤äƤޤ +BioRuby では、GenBank 以外のデータベースについても基本的な扱い方は同じで、 +データベースの1エントリ分の文字列を対応するデータベースのクラスに渡せば、 +パースされた結果がオブジェクトになって返ってきます。 -ǡ١Υեåȥե뤫飱ȥꤺļФƥѡ줿 -֥ȤФˤϡˤФƤ Bio::FlatFile Ȥޤ -Bio::FlatFile.new ΰˤϥǡ١б BioRuby ǤΥ饹 -̾ (Bio::GenBank Bio::KEGG::GENES ʤ) ꤷޤ +データベースのフラットファイルから1エントリずつ取り出してパースされた +オブジェクトを取り出すには、先にも出てきた Bio::FlatFile を使います。 +Bio::FlatFile.new の引数にはデータベースに対応する BioRuby でのクラス +名 (Bio::GenBank や Bio::KEGG::GENES など) を指定します。 - ff = Bio::FlatFile.new(Bio::ǡ١饹̾, ARGF) + ff = Bio::FlatFile.new(Bio::データベースクラス名, ARGF) -Ф餷Ȥˡ¤ FlatFile 饹ϥǡ١μưǧ -ǤޤΤǡ +しかし、すばらしいことに、実は FlatFile クラスはデータベースの自動認識が +できますので、 ff = Bio::FlatFile.auto(ARGF) -ȤΤִñǤ +を使うのが一番簡単です。 #!/usr/bin/env ruby require 'bio' ff = Bio::FlatFile.auto(ARGF) ff.each_entry do |entry| - p entry.entry_id # ȥ ID - p entry.definition # ȥʸ - p entry.seq # ǡ١ξ + p entry.entry_id # エントリの ID + p entry.definition # エントリの説明文 + p entry.seq # 配列データベースの場合 end ff.close -ˡǡ١Ĥ˺ʤˤ Ruby Υ֥å -ѤưʲΤ褦˽񤯤Τ褤Ǥ礦 +さらに、開いたデータベースの閉じ忘れをなくすためには Ruby のブロックを +活用して以下のように書くのがよいでしょう。 #!/usr/bin/env ruby require 'bio' Bio::FlatFile.auto(ARGF) do |ff| ff.each_entry do |entry| - p entry.entry_id # ȥ ID - p entry.definition # ȥʸ - p entry.seq # ǡ١ξ + p entry.entry_id # エントリの ID + p entry.definition # エントリの説明文 + p entry.seq # 配列データベースの場合 end end -ѡ줿֥Ȥ顢ȥΤ줾ʬФ -᥽åɤϥǡ١˰ۤʤޤ褯ܤˤĤƤ +パースされたオブジェクトから、エントリ中のそれぞれの部分を取り出すための +メソッドはデータベース毎に異なります。よくある項目については - * entry_id ᥽å ȥ ID ֹ椬֤ - * definition ᥽å ȥԤ֤ - * reference ᥽å ե󥹥֥Ȥ֤ - * organism ᥽å ʪ̾ - * seq naseq aaseq ᥽å б󥪥֥Ȥ֤ + * entry_id メソッド → エントリの ID 番号が返る + * definition メソッド → エントリの定義行が返る + * reference メソッド → リファレンスオブジェクトが返る + * organism メソッド → 生物種名 + * seq や naseq や aaseq メソッド → 対応する配列オブジェクトが返る -ʤɤΤ褦˶̲褦ȤƤޤƤΥ᥽åɤƤ -ǤϤޤʶ̲λؿˤ bio/db.rb ȡˡޤ٤ʬϳ -ǡ١ѡ˰ۤʤΤǡ줾ΥɥȤ˽ޤ +などのように共通化しようとしていますが、全てのメソッドが実装されているわ +けではありません(共通化の指針は bio/db.rb 参照)。また、細かい部分は各 +データベースパーザ毎に異なるので、それぞれのドキュメントに従います。 -§Ȥơ᥽å̾ʣξϡ֥ȤȤ֤ޤ -Ȥ references ᥽åɤĥ饹ʣ Bio::Reference ֥ -Ȥ Array ˤ֤ޤ̤Υ饹Ǥñ reference ᥽å -ʤĤ Bio::Reference ֥Ȥ֤ȤäǤ +原則として、メソッド名が複数形の場合は、オブジェクトが配列として返ります。 +たとえば references メソッドを持つクラスは複数の Bio::Reference オブジェ +クトを Array にして返しますが、別のクラスでは単数形の reference メソッド +しかなく、1つの Bio::Reference オブジェクトだけを返す、といった感じです。 -== PDB Υѡ (Bio::PDB 饹) +== PDB のパース (Bio::PDB クラス) -Bio::PDB ϡPDB ɤ߹िΥ饹ǤPDB ǡ١ -PDB, mmCIF, XML (PDBML) ΣΥեޥåȤ󶡤Ƥޤ -Τ BioRuby бƤΤ PDB եޥåȤǤ +Bio::PDB は、PDB 形式を読み込むためのクラスです。PDB データベースは +PDB, mmCIF, XML (PDBML) の3種類のフォーマットで提供されていますが、 +これらのうち BioRuby で対応しているのは PDB フォーマットです。 -PDB եޥåȤλͤϡʲ Protein Data Bank Contents Guide -ȤƤ +PDB フォーマットの仕様は、以下の Protein Data Bank Contents Guide を +参照してください。 * ((<URL:http://www.rcsb.org/pdb/file_formats/pdb/pdbguide2.2/guide2.2_frame.html>)) -=== PDB ǡɤ߹ +=== PDB データの読み込み -PDB Σȥ꤬ 1bl8.pdb Ȥե˳ǼƤϡ -Ruby Υեɤ߹ߵǽȤä +PDB の1エントリが 1bl8.pdb というファイルに格納されている場合は、 +Ruby のファイル読み込み機能を使って entry = File.read("1bl8.pdb") -Τ褦ˤ뤳ȤǡȥƤʸȤ entry Ȥѿ -뤳ȤǤޤȥƤѡˤ +のようにすることで、エントリの内容を文字列として entry という変数に +代入することができます。エントリの内容をパースするには pdb = Bio::PDB.new(entry) -Ȥޤǥȥ꤬ Bio::PDB ֥ȤȤʤꡢǤդΥǡ -Ф褦ˤʤޤ +とします。これでエントリが Bio::PDB オブジェクトとなり、任意のデータを +取り出せるようになります。 -PDB եޥåȤ Bio::FlatFile ˤ뼫ưǧǽǤߤ -եʣȥޤˤбƤޤ -Bio::FlatFile Ȥäƣȥʬɤ߹ˤϡ +PDB フォーマットは Bio::FlatFile による自動認識も可能ですが、現在は +1ファイルに複数エントリを含む場合には対応していません。 +Bio::FlatFile を使って1エントリ分だけ読み込むには、 pdb = Bio::FlatFile.auto("1bl8.pdb") { |ff| ff.next_entry } -ȤޤɤˡǤѿ pdb ˤƱ̤ޤ +とします。どちらの方法でも変数 pdb には同じ結果が得られます。 -=== ֥Ȥγع¤ +=== オブジェクトの階層構造 - PDB ȥϡѿʸʤ ID դƤޤ -Bio::PDB ֥Ȥ ID Фˤ entry_id ᥽åɤȤޤ +各 PDB エントリは、英数字4文字からなる ID が付けられています。 +Bio::PDB オブジェクトから ID を取リ出すには entry_id メソッドを使います。 p pdb.entry_id # => "1BL8" -ȥγפ˴ؤб᥽åɤǼФȤǤޤ +エントリの概要に関する情報も対応するメソッドで取り出すことができます。 p pdb.definition # => "POTASSIUM CHANNEL (KCSA) FROM STREPTOMYCES LIVIDANS" p pdb.keywords # => ["POTASSIUM CHANNEL", "INTEGRAL MEMBRANE PROTEIN"] -¾ˡϿԤʸ¸ˡʤɤξǤޤʤ줾 -authors, jrnl, method ᥽åɡˡ +他に、登録者や文献、実験方法などの情報も取得できます(それぞれ +authors, jrnl, method メソッド)。 -PDB ǡϡŪˤϣԤĤΥ쥳ɤƤޤ -Ԥ꤭ʤǡʣԤ˳Ǽ continuation Ȥ -ȤߤѰդƤޤܤϣԣ쥳ɤǤ +PDB データは、基本的には1行が1つのレコードを形成しています。 +1行に入りきらないデータを複数行に格納する continuation という +仕組みも用意されていますが、基本は1行1レコードです。 -ƹԤƬʸιԤΥǡμ򼨤̾ʥ쥳ɡˤˤʤޤ -BioRuby ǤϡHEADER 쥳ɤФƤ Bio::PDB::Record::HEADER 饹 -TITLE 쥳ɤФƤ Bio::PDB::Record::TITLE 饹Ȥ褦 -Ūˤϳƥ쥳ɤб륯饹򣱤ѰդƤޤ -REMARK JRNL 쥳ɤ˴ؤƤϡ줾ʣΥեޥåȤ -¸ߤ뤿ᡢʣΥ饹ѰդƤޤ +各行の先頭6文字がその行のデータの種類を示す名前(レコード)になります。 +BioRuby では、HEADER レコードに対しては Bio::PDB::Record::HEADER クラス、 +TITLE レコードに対しては Bio::PDB::Record::TITLE クラス、というように +基本的には各レコードに対応するクラスを1つ用意しています。 +ただし、REMARK と JRNL レコードに関しては、それぞれ複数のフォーマットが +存在するため、複数のクラスを用意しています。 -ƥ쥳ɤ˥äȤñˡ record ᥽åɤǤ +各レコードにアクセスするもっとも単純な方法は record メソッドです。 pdb.record("HELIX") -Τ褦ˤȡ PDB ȥ˴ޤޤƤ HELIX 쥳ɤ -Bio::PDB::Record::HELIX 饹Υ֥ȤȤƼǤޤ +のようにすると、その PDB エントリに含まれる全ての HELIX レコードを +Bio::PDB::Record::HELIX クラスのオブジェクトの配列として取得できます。 -ΤȤդޤʲǤϡPDB ȥΥᥤƤǤΩι¤ -ؤǡ¤ΰ򸫤Ƥޤ +このことをふまえ、以下では、PDB エントリのメインな内容である立体構造に +関するデータ構造の扱い方を見ていきます。 -==== : Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM 饹 +==== 原子: Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM クラス -PDB ȥϡѥ˻DNA,RNAˤ䤽¾ʬҤΩι¤ -ŪˤϸҤΣɸޤǤޤ +PDB エントリは、タンパク質、核酸(DNA,RNA)やその他の分子の立体構造、 +具体的には原子の3次元座標を含んでいます。 -ѥޤϳ˻θҤκɸϡATOM 쥳ɤ˳ǼƤޤ -б륯饹ϡBio::PDB::Record::ATOM 饹Ǥ +タンパク質または核酸の原子の座標は、ATOM レコードに格納されています。 +対応するクラスは、Bio::PDB::Record::ATOM クラスです。 -ѥ˻ʳθҤκɸϡHETATM 쥳ɤ˳ǼƤޤ -б륯饹ϡBio::PDB::Record::HETATM 饹Ǥ +タンパク質・核酸以外の原子の座標は、HETATM レコードに格納されています。 +対応するクラスは、Bio::PDB::Record::HETATM クラスです。 -HETATM饹 ATOM 饹ѾƤ뤿ᡢATOM HETATM -᥽åɤλȤϤޤäƱǤ +HETATM クラスは ATOM クラスを継承しているため、ATOM と HETATM の +メソッドの使い方はまったく同じです。 -==== ߥλĴʤޤϱ: Bio::PDB::Residue 饹 +==== アミノ酸残基(または塩基): Bio::PDB::Residue クラス -ߥλޤϣñ̤ǸҤޤȤ᤿Τ Bio::PDB::Residue Ǥ -Bio::PDB::Residue ֥Ȥϡİʾ Bio::PDB::Record::ATOM -֥Ȥޤߤޤ +1アミノ酸または1塩基単位で原子をまとめたのが Bio::PDB::Residue です。 +Bio::PDB::Residue オブジェクトは、1個以上の Bio::PDB::Record::ATOM +オブジェクトを含みます。 -==== ʪ: Bio::PDB::Heterogen 饹 +==== 化合物: Bio::PDB::Heterogen クラス -ѥ˻ʳʬҤθҤϡŪˤʬñ̤ -Bio::PDB::Heterogen ˤޤȤƤޤ -Bio::PDB::Heterogen ֥Ȥϡİʾ -Bio::PDB::Record::HETATM ֥Ȥޤߤޤ +タンパク質・核酸以外の分子の原子は、基本的には分子単位で +Bio::PDB::Heterogen にまとめられています。 +Bio::PDB::Heterogen オブジェクトは、1個以上の +Bio::PDB::Record::HETATM オブジェクトを含みます。 -==== ʥ: Bio::PDB::Chain 饹 +==== 鎖(チェイン): Bio::PDB::Chain クラス -Bio::PDB::Chain ϡʣ Bio::PDB::Residue ֥Ȥʤ -ĤΥѥޤϳ˻ȡʣ Bio::PDB::Heterogen ֥ -ʤ룱İʾΤʳʬҤǼǡ¤Ǥ +Bio::PDB::Chain は、複数の Bio::PDB::Residue オブジェクトからなる +1個のタンパク質または核酸と、複数の Bio::PDB::Heterogen オブジェクト +からなる1個以上のそれ以外の分子を格納するデータ構造です。 -ʤȾξϡѥ˻Bio::PDB::Residueˤ -ʳʬҡBio::PDB::HeterogenˤΤɤ餫षޤ -Chain ҤȤĤޤޤʤ PDB ȥǤξľ礬褦Ǥ +なお、大半の場合は、タンパク質・核酸(Bio::PDB::Residue)か、 +それ以外の分子(Bio::PDB::Heterogen)のどちらか一種類しか持ちません。 +Chain をひとつしか含まない PDB エントリでは両方持つ場合があるようです。 - Chain ˤϡѿʸ ID դƤޤChain ҤȤĤ -ޤޤʤ PDB ȥξ϶ʸΤȤ⤢ޤˡ +各 Chain には、英数字1文字の ID が付いています(Chain をひとつしか +含まない PDB エントリの場合は空白文字のときもあります)。 -==== ǥ: Bio::PDB::Model +==== モデル: Bio::PDB::Model -İʾ Bio::PDB::Chain ޤäΤ Bio::PDB::Model Ǥ -뾽¤ξ硢Model ̾ĤǤNMR ¤ξ硢 -ʣ Model ¸ߤ뤳Ȥޤ -ʣ Model ¸ߤ硢 Model ˤϥꥢֹ椬դޤ +1個以上の Bio::PDB::Chain が集まったものが Bio::PDB::Model です。 +X線結晶構造の場合、Model は通常1個だけですが、NMR 構造の場合、 +複数の Model が存在することがあります。 +複数の Model が存在する場合、各 Model にはシリアル番号が付きます。 -ơİʾ Model ޤäΤBio::PDB ֥Ȥˤʤޤ +そして、1個以上の Model が集まったものが、Bio::PDB オブジェクトになります。 -=== Ҥ˥᥽å +=== 原子にアクセスするメソッド -Bio::PDB#each_atom Ƥ ATOM ֤ˣĤé륤ƥ졼Ǥ +Bio::PDB#each_atom は全ての ATOM を順番に1個ずつ辿るイテレータです。 pdb.each_atom do |atom| p atom.xyz end - each_atom ᥽åɤ Model, Chain, Residue ֥ȤФƤ -Ѥ뤳ȤǤ줾졢 Model, Chain, Residue Τ٤Ƥ -ATOM 򤿤ɤ륤ƥ졼ȤƯޤ +この each_atom メソッドは Model, Chain, Residue オブジェクトに対しても +使用することができ、それぞれ、その Model, Chain, Residue 内部のすべての +ATOM をたどるイテレータとして働きます。 -Bio::PDB#atoms Ƥ ATOM Ȥ֤᥽åɤǤ +Bio::PDB#atoms は全ての ATOM を配列として返すメソッドです。 - p pdb.atoms.size # => 2820 Ĥ ATOM ޤޤ뤳Ȥ狼 + p pdb.atoms.size # => 2820 個の ATOM が含まれることがわかる -each_atom Ʊͤ atoms ᥽åɤ Model, Chain, Residue ֥ -ФƻѲǽǤ +each_atom と同様に atoms メソッドも Model, Chain, Residue オブジェクト +に対して使用可能です。 pdb.chains.each do |chain| - p chain.atoms.size # => Chain ATOM ɽ + p chain.atoms.size # => 各 Chain 毎の ATOM 数が表示される end -Bio::PDB#each_hetatm ϡƤ HETATM ֤ˣĤé륤ƥ졼Ǥ +Bio::PDB#each_hetatm は、全ての HETATM を順番に1個ずつ辿るイテレータです。 pdb.each_hetatm do |hetatm| p hetatm.xyz end -Bio::PDB#hetatms Ƥ HETATM Ȥ֤Τ hetatms ᥽åɤǤ +Bio::PDB#hetatms 全ての HETATM を配列として返すのは hetatms メソッドです。 p pdb.hetatms.size - atoms ξƱͤˡModel, Chain, Heterogen ֥Ȥ -ФƻѲǽǤ +これらも atoms の場合と同様に、Model, Chain, Heterogen オブジェクトに +対して使用可能です。 -==== Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM 饹λȤ +==== Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM クラスの使い方 -ATOM ϥѥ˻DNARNAˤ븶ҡHETATM Ϥʳ -ҤǼ뤿Υ饹ǤHETATM ATOM 饹ѾƤ뤿 -Υ饹ǥ᥽åɤλȤϤޤäƱǤ +ATOM はタンパク質・核酸(DNA・RNA)を構成する原子、HETATM はそれ以外の +原子を格納するためのクラスですが、HETATM が ATOM クラスを継承しているため +これらのクラスでメソッドの使い方はまったく同じです。 - p atom.serial # ꥢֹ - p atom.name # ̾ + p atom.serial # シリアル番号 + p atom.name # 名前 p atom.altLoc # Alternate location indicator - p atom.resName # ߥλ̾ޤϲʪ̾ - p atom.chainID # Chain ID - p atom.resSeq # ߥλĴΥֹ + p atom.resName # アミノ酸・塩基名または化合物名 + p atom.chainID # Chain の ID + p atom.resSeq # アミノ酸残基のシーケンス番号 p atom.iCode # Code for insertion of residues - p atom.x # X ɸ - p atom.y # Y ɸ - p atom.z # Z ɸ + p atom.x # X 座標 + p atom.y # Y 座標 + p atom.z # Z 座標 p atom.occupancy # Occupancy p atom.tempFactor # Temperature factor p atom.segID # Segment identifier p atom.element # Element symbol p atom.charge # Charge on the atom -Υ᥽å̾ϡ§Ȥ Protein Data Bank Contents Guide -ܤ˹碌Ƥޤ᥽å̾ resName resSeq Ȥä̾ˡ -CamelCaseˤѤƤΤϤΤǤ -줾Υ᥽åɤ֤ǡΰ̣ϡͽ򻲹ͤˤƤ +これらのメソッド名は、原則として Protein Data Bank Contents Guide の +記載に合わせています。メソッド名に resName や resSeq といった記名法 +(CamelCase)を採用しているのはこのためです。 +それぞれのメソッドの返すデータの意味は、仕様書を参考にしてください。 -¾ˤ⡢Ĥʥ᥽åɤѰդƤޤ -xyz ᥽åɤϡɸ򣳼Υ٥ȥȤ֤᥽åɤǤ -Υ᥽åɤϡRuby Vector 饹ѾƣΥ٥ȥ -ò Bio::PDB::Coordinate 饹Υ֥Ȥ֤ޤ -: VectorѾ饹ΤϤޤ侩ʤ褦ʤΤǡ -衢Vector饹Υ֥Ȥ֤褦ѹ뤫⤷ޤˡ +この他にも、いくつかの便利なメソッドを用意しています。 +xyz メソッドは、座標を3次元のベクトルとして返すメソッドです。 +このメソッドは、Ruby の Vector クラスを継承して3次元のベクトルに +特化させた Bio::PDB::Coordinate クラスのオブジェクトを返します +(注: Vectorを継承したクラスを作成するのはあまり推奨されないようなので、 +将来、Vectorクラスのオブジェクトを返すよう仕様変更するかもしれません)。 p atom.xyz -٥ȥʤΤǡ­Ѥʤɤ뤳ȤǤޤ +ベクトルなので、足し算、引き算、内積などを求めることができます。 - # Ҵ֤εΥ - p (atom1.xyz - atom2.xyz).r # r ϥ٥ȥͤ᥽å + # 原子間の距離を求める + p (atom1.xyz - atom2.xyz).r # r はベクトルの絶対値を求めるメソッド - # Ѥ + # 内積を求める p atom1.xyz.inner_product(atom2.xyz) -¾ˤϡθҤб TER, SIGATM, ANISOU 쥳ɤ -ter, sigatm, anisou ᥽åɤѰդƤޤ +他には、その原子に対応する TER, SIGATM, ANISOU レコードを取得する +ter, sigatm, anisou メソッドも用意されています。 -=== ߥλĴ (Residue) ˥᥽å +=== アミノ酸残基 (Residue) にアクセスするメソッド -Bio::PDB#each_residue ϡƤ Residue ֤é륤ƥ졼Ǥ -each_residue ᥽åɤϡModel, Chain ֥ȤФƤ -Ѥ뤳ȤǤ줾 Model, Chain ˴ޤޤƤ -Residue é륤ƥ졼ȤƯޤ +Bio::PDB#each_residue は、全ての Residue を順番に辿るイテレータです。 +each_residue メソッドは、Model, Chain オブジェクトに対しても +使用することができ、それぞれの Model, Chain に含まれる全ての +Residue を辿るイテレータとして働きます。 pdb.each_residue do |residue| p residue.resName end -Bio::PDB#residues ϡƤ Residue Ȥ֤᥽åɤǤ -each_residue ƱͤˡModel, Chain ֥ȤФƤѲǽǤ +Bio::PDB#residues は、全ての Residue を配列として返すメソッドです。 +each_residue と同様に、Model, Chain オブジェクトに対しても使用可能です。 p pdb.residues.size -=== ʪ (Heterogen) ˥᥽å +=== 化合物 (Heterogen) にアクセスするメソッド -Bio::PDB#each_heterogen Ƥ Heterogen ֤ˤɤ륤ƥ졼 -Bio::PDB#heterogens Ƥ Heterogen Ȥ֤᥽åɤǤ +Bio::PDB#each_heterogen は全ての Heterogen を順番にたどるイテレータ、 +Bio::PDB#heterogens は全ての Heterogen を配列として返すメソッドです。 pdb.each_heterogen do |heterogeon| p heterogen.resName end p pdb.heterogens.size -Υ᥽åɤ Residue Ʊͤ Model, Chain ֥ȤФƤ -ѲǽǤ +これらのメソッドも Residue と同様に Model, Chain オブジェクトに対しても +使用可能です。 -=== Chain, Model ˥᥽å +=== Chain, Model にアクセスするメソッド -ƱͤˡBio::PDB#each_chain Ƥ Chain ֤ˤɤ륤ƥ졼 -Bio::PDB#chains Ƥ Chain Ȥ֤᥽åɤǤ -Υ᥽åɤ Model ֥ȤФƤѲǽǤ +同様に、Bio::PDB#each_chain は全ての Chain を順番にたどるイテレータ、 +Bio::PDB#chains は全ての Chain を配列として返すメソッドです。 +これらのメソッドは Model オブジェクトに対しても使用可能です。 -Bio::PDB#each_model Ƥ Model ֤ˤɤ륤ƥ졼 -Bio::PDB#models Ƥ Model Ȥ֤᥽åɤǤ +Bio::PDB#each_model は全ての Model を順番にたどるイテレータ、 +Bio::PDB#models は全ての Model を配列として返すメソッドです。 -=== PDB Chemical Component Dictionary Υǡɤ߹ +=== PDB Chemical Component Dictionary のデータの読み込み -Bio::PDB::ChemicalComponent 饹ϡPDB Chemical Component Dictionary -ʵ̾ HET Group DictionaryˤΥѡǤ +Bio::PDB::ChemicalComponent クラスは、PDB Chemical Component Dictionary +(旧名称 HET Group Dictionary)のパーサです。 -PDB Chemical Component Dictionary ˤĤƤϰʲΥڡ򻲾ȤƤ +PDB Chemical Component Dictionary については以下のページを参照してください。 * ((<URL:http://deposit.pdb.org/cc_dict_tut.html>)) -ǡϰʲǥɤǤޤ +データは以下でダウンロードできます。 * ((<URL:http://deposit.pdb.org/het_dictionary.txt>)) -Υ饹ϡRESIDUE ϤޤäƶԤǽ룱ȥѡޤ -PDB եޥåȤˤΤбƤޤˡ +このクラスは、RESIDUE から始まって空行で終わる1エントリをパースします +(PDB フォーマットにのみ対応しています)。 -Bio::FlatFile ˤեưȽ̤бƤޤ -Υ饹Τ ID 鲽ʪ򸡺ꤹ뵡ǽϻäƤޤ -br_bioflat.rb ˤ륤ǥåˤбƤޤΤǡ -ɬפʤ餽ѤƤ +Bio::FlatFile によるファイル形式自動判別に対応しています。 +このクラス自体は ID から化合物を検索したりする機能は持っていません。 +br_bioflat.rb によるインデックス作成には対応していますので、 +必要ならそちらを使用してください。 Bio::FlatFile.auto("het_dictionary.txt") |ff| ff.each do |het| p het.entry_id # ID - p het.hetnam # HETNAM 쥳ɡʲʪ̾Ρ - p het.hetsyn # HETSYM 쥳ɡʲʪ̾ - p het.formul # FORMUL 쥳ɡʲʪ - p het.conect # CONECT 쥳 + p het.hetnam # HETNAM レコード(化合物の名称) + p het.hetsyn # HETSYM レコード(化合物の別名の配列) + p het.formul # FORMUL レコード(化合物の組成式) + p het.conect # CONECT レコード end end -Ǹ conect ᥽åɤϡʪη Hash Ȥ֤ޤ -ȤСΡΥȥϼΤ褦ˤʤޤ +最後の conect メソッドは、化合物の結合を Hash として返します。 +たとえば、エタノールのエントリは次のようになりますが、 RESIDUE EOH 9 CONECT C1 4 C2 O 1H1 2H1 CONECT C2 4 C1 1H2 2H2 3H2 CONECT O 2 C1 HO @@ -1929,11 +1825,11 @@ END HET EOH 9 HETNAM EOH ETHANOL FORMUL EOH C2 H6 O1 -ΥȥФ conect ᥽åɤƤ֤ +このエントリに対して conect メソッドを呼ぶと { "C1" => [ "C2", "O", "1H1", "2H1" ], "C2" => [ "C1", "1H2", "2H2", "3H2" ], "O" => [ "C1", "HO" ], "1H1" => [ "C1" ], @@ -1941,424 +1837,424 @@ "2H1" => [ "C1" ], "2H2" => [ "C2" ], "3H2" => [ "C2" ], "HO" => [ "O" ] } -Ȥ Hash ֤ޤ +という Hash を返します。 -ޤǤν BioRuby ǻȰʲΤ褦ˤʤޤ +ここまでの処理を BioRuby シェルで試すと以下のようになります。 - # PDB ȥ 1bl8 ͥåȥͳǼ + # PDB エントリ 1bl8 をネットワーク経由で取得 bioruby> ent_1bl8 = getent("pdb:1bl8") - # ȥȤǧ + # エントリの中身を確認 bioruby> head ent_1bl8 - # ȥե¸ + # エントリをファイルに保存 bioruby> savefile("1bl8.pdb", ent_1bl8) - # ¸줿եȤǧ + # 保存されたファイルの中身を確認 bioruby> disp "data/1bl8.pdb" - # PDB ȥѡ + # PDB エントリをパース bioruby> pdb_1bl8 = flatparse(ent_1bl8) - # PDB Υȥ ID ɽ + # PDB のエントリ ID を表示 bioruby> pdb_1bl8.entry_id - # getent("pdb:1bl8") flatparse ˡʲǤOK + # getent("pdb:1bl8") して flatparse する代わりに、以下でもOK bioruby> obj_1bl8 = getobj("pdb:1bl8") bioruby> obj_1bl8.entry_id - # HETEROGEN Ȥ˻Ĵ̾ɽ + # 各 HETEROGEN ごとに残基名を表示 bioruby> pdb_1bl8.each_heterogen { |heterogen| p heterogen.resName } - # PDB Chemical Component Dictionary + # PDB Chemical Component Dictionary を取得 bioruby> het_dic = open("http://deposit.pdb.org/het_dictionary.txt").read - # եΥХȿǧ + # 取得したファイルのバイト数を確認 bioruby> het_dic.size - # ե¸ + # 取得したファイルを保存 bioruby> savefile("data/het_dictionary.txt", het_dic) - # եȤǧ + # ファイルの中身を確認 bioruby> disp "data/het_dictionary.txt" - # Τ˥ǥå het_dic Ȥǡ١ + # 検索のためにインデックス化し het_dic というデータベースを作成 bioruby> flatindex("het_dic", "data/het_dictionary.txt") - # ID EOH ΥΡΥȥ򸡺 + # ID が EOH のエタノールのエントリを検索 bioruby> ethanol = flatsearch("het_dic", "EOH") - # ȥѡ + # 取得したエントリをパース bioruby> osake = flatparse(ethanol) - # Ҵ֤ηơ֥ɽ + # 原子間の結合テーブルを表示 bioruby> sake.conect -== 饤 (Bio::Alignment 饹) +== アライメント (Bio::Alignment クラス) -Bio::Alignment 饹Υ饤ȤǼ뤿ΥƥʤǤ -Ruby Hash Array ˻ǽǡBioPerl Bio::SimpleAlign -ˤʤäƤޤʲ˴ñʻȤ򼨤ޤ +Bio::Alignment クラスは配列のアライメントを格納するためのコンテナです。 +Ruby の Hash や Array に似た操作が可能で、BioPerl の Bio::SimpleAlign に +似た感じになっています。以下に簡単な使い方を示します。 require 'bio' seqs = [ 'atgca', 'aagca', 'acgca', 'acgcg' ] seqs = seqs.collect{ |x| Bio::Sequence::NA.new(x) } - # 饤ȥ֥Ȥ + # アライメントオブジェクトを作成 a = Bio::Alignment.new(seqs) - # 󥻥󥵥ɽ + # コンセンサス配列を表示 p a.consensus # ==> "a?gc?" - # IUPAC ɸۣʱѤ󥻥󥵥ɽ + # IUPAC 標準の曖昧な塩基を使用したコンセンサス配列を表示 p a.consensus_iupac # ==> "ahgcr" - # ˤĤƷ֤ + # 各配列について繰り返す a.each { |x| p x } # ==> # "atgca" # "aagca" # "acgca" # "acgcg" - # ƥȤˤĤƷ֤ + # 各サイトについて繰り返す a.each_site { |x| p x } # ==> # ["a", "a", "a", "a"] # ["t", "a", "c", "c"] # ["g", "g", "g", "g"] # ["c", "c", "c", "c"] # ["a", "a", "a", "g"] - # Clustal W Ѥƥ饤ȤԤ - # 'clustalw' ޥɤƥ˥󥹥ȡ뤵Ƥɬפ롣 + # Clustal W を使用してアライメントを行う。 + # 'clustalw' コマンドがシステムにインストールされている必要がある。 factory = Bio::ClustalW.new a2 = a.do_align(factory) -== FASTA ˤƱԤBio::Fasta 饹 +== FASTA による相同性検索を行う(Bio::Fasta クラス) -FASTA ե query.pep ФơʬΥޥ()뤤 -󥿡ͥåȾΥ(⡼) FASTA ˤƱԤˡǤ -ξ SSEARCH ʤɤƱͤ˻ȤȤǤޤ +FASTA 形式の配列ファイル query.pep に対して、自分のマシン(ローカル)あるいは +インターネット上のサーバ(リモート)で FASTA による相同性検索を行う方法です。 +ローカルの場合は SSEARCH なども同様に使うことができます。 -=== ξ +=== ローカルの場合 -FASTA 󥹥ȡ뤵Ƥ뤳ȤǧƤʲǤϡ -ޥ̾ fasta34 ǥѥ̤äǥ쥯ȥ˥󥹥ȡ -ƤꤷƤޤ +FASTA がインストールされていることを確認してください。以下の例では、 +コマンド名が fasta34 でパスが通ったディレクトリにインストール +されている状況を仮定しています。 * ((<URL:ftp://ftp.virginia.edu/pub/fasta/>)) -оݤȤ FASTA Υǡ١ե target.pep ȡFASTA -䤤碌󤬤Ĥäե query.pep ޤ +検索対象とする FASTA 形式のデータベースファイル target.pep と、FASTA +形式の問い合わせ配列がいくつか入ったファイル query.pep を準備します。 -Ǥϡ䤤碌󤴤Ȥ FASTA ¹ԤҥåȤ -evalue 0.0001 ʲΤΤɽޤ +この例では、各問い合わせ配列ごとに FASTA 検索を実行し、ヒットした配列の +evalue が 0.0001 以下のものだけを表示します。 #!/usr/bin/env ruby require 'bio' - # FASTA ¹ԤĶ֥Ȥssearch ʤɤǤɤ + # FASTA を実行する環境オブジェクトを作る(ssearch などでも良い) factory = Bio::Fasta.local('fasta34', ARGV.pop) - # եåȥեɤ߹ߡFastaFormat ֥ȤΥꥹȤˤ + # フラットファイルを読み込み、FastaFormat オブジェクトのリストにする ff = Bio::FlatFile.new(Bio::FastaFormat, ARGF) - # ȥꤺĤ FastaFormat ֥ȤФ + # 1エントリずつの FastaFormat オブジェクトに対し ff.each do |entry| - # '>' ǻϤޤ륳ȹԤƤʹԾɸ२顼Ϥɽ + # '>' で始まるコメント行の内容を進行状況がわりに標準エラー出力に表示 $stderr.puts "Searching ... " + entry.definition - # FASTA ˤƱ¹ԡ̤ Fasta::Report ֥ + # FASTA による相同性検索を実行、結果は Fasta::Report オブジェクト report = factory.query(entry) - # ҥåȤΤ줾Ф + # ヒットしたものそれぞれに対し report.each do |hit| - # evalue 0.0001 ʲξ + # evalue が 0.0001 以下の場合 if hit.evalue < 0.0001 - # evalue ȡ̾Сåΰɽ + # その evalue と、名前、オーバーラップ領域を表示 print "#{hit.query_id} : evalue #{hit.evalue}\t#{hit.target_id} at " p hit.lap_at end end end - factory Ϸ֤ FASTA ¹Ԥ뤿ˡ餫äƤ -¹ԴĶǤ +ここで factory は繰り返し FASTA を実行するために、あらかじめ作っておく +実行環境です。 -嵭ΥץȤ search.rb Ȥȡ䤤碌ȥǡ١ -ե̾ˤơʲΤ褦˼¹Ԥޤ +上記のスクリプトを search.rb とすると、問い合わせ配列とデータベース配列の +ファイル名を引数にして、以下のように実行します。 % ruby search.rb query.pep target.pep > search.out -FASTA ޥɤ˥ץͿ硢ܤΰ FASTA -ޥɥ饤󥪥ץ񤤤Ϥޤktup ͤ -᥽åɤȤäƻꤹ뤳ȤˤʤäƤޤ -Ȥ ktup ͤ 1 ˤơȥå 10 ̰ΥҥåȤ -ץϡʲΤ褦ˤʤޤ +FASTA コマンドにオプションを与えたい場合、3番目の引数に FASTA の +コマンドラインオプションを書いて渡します。ただし、ktup 値だけは +メソッドを使って指定することになっています。 +たとえば ktup 値を 1 にして、トップ 10 位以内のヒットを得る場合の +オプションは、以下のようになります。 factory = Bio::Fasta.local('fasta34', 'target.pep', '-b 10') factory.ktup = 1 -Bio::Fasta#query ᥽åɤʤɤ֤ͤ Bio::Fasta::Report ֥ -Ǥ Report ֥Ȥ顢͡ʥ᥽åɤ FASTA νϷ̤ -ۤƤͳ˼Ф褦ˤʤäƤޤȤСҥåȤ˴ؤ -ʤɤμʾϡ +Bio::Fasta#query メソッドなどの返り値は Bio::Fasta::Report オブジェクト +です。この Report オブジェクトから、様々なメソッドで FASTA の出力結果の +ほぼ全てを自由に取り出せるようになっています。たとえば、ヒットに関する +スコアなどの主な情報は、 report.each do |hit| puts hit.evalue # E-value - puts hit.sw # Smith-Waterman (*) + puts hit.sw # Smith-Waterman スコア (*) puts hit.identity # % identity - puts hit.overlap # СåפƤΰĹ - puts hit.query_id # 䤤碌 ID - puts hit.query_def # 䤤碌Υ - puts hit.query_len # 䤤碌Ĺ - puts hit.query_seq # 䤤碌 - puts hit.target_id # ҥåȤ ID - puts hit.target_def # ҥåȤΥ - puts hit.target_len # ҥåȤĹ - puts hit.target_seq # ҥåȤ - puts hit.query_start # Ʊΰ䤤碌ǤγϻĴ - puts hit.query_end # Ʊΰ䤤碌ǤνλĴ - puts hit.target_start # ƱΰΥåǤγϻĴ - puts hit.target_end # ƱΰΥåǤνλĴ - puts hit.lap_at # 嵭֤οͤ + puts hit.overlap # オーバーラップしている領域の長さ + puts hit.query_id # 問い合わせ配列の ID + puts hit.query_def # 問い合わせ配列のコメント + puts hit.query_len # 問い合わせ配列の長さ + puts hit.query_seq # 問い合わせ配列 + puts hit.target_id # ヒットした配列の ID + puts hit.target_def # ヒットした配列のコメント + puts hit.target_len # ヒットした配列の長さ + puts hit.target_seq # ヒットした配列 + puts hit.query_start # 相同領域の問い合わせ配列での開始残基位置 + puts hit.query_end # 相同領域の問い合わせ配列での終了残基位置 + puts hit.target_start # 相同領域のターゲット配列での開始残基位置 + puts hit.target_end # 相同領域のターゲット配列での終了残基位置 + puts hit.lap_at # 上記4位置の数値の配列 end -ʤɤΥ᥽åɤǸƤӽФޤΥ᥽åɤ¿ϸ -Bio::Blast::Report 饹ȶ̤ˤƤޤ嵭ʳΥ᥽åɤ -FASTA ͭͤФ᥽åɤɬפʾϡBio::Fasta::Report -饹ΥɥȤ򻲾ȤƤ +などのメソッドで呼び出せます。これらのメソッドの多くは後で説明する +Bio::Blast::Report クラスと共通にしてあります。上記以外のメソッドや +FASTA 特有の値を取り出すメソッドが必要な場合は、Bio::Fasta::Report +クラスのドキュメントを参照してください。 -⤷ѡμäƤʤ fasta ޥɤμ¹Է̤ɬפ -ˤϡ +もし、パースする前の手を加えていない fasta コマンドの実行結果が必要な +場合には、 report = factory.query(entry) puts factory.output -Τ褦ˡquery ᥽åɤ¹Ԥ factory ֥Ȥ output -᥽åɤȤäƼФȤǤޤ +のように、query メソッドを実行した後で factory オブジェクトの output +メソッドを使って取り出すことができます。 -=== ⡼Ȥξ +=== リモートの場合 -ΤȤ GenomeNet (fasta.genome.jp) ǤθΤߥݡȤƤޤ -⡼ȤξϻѲǽʸоݥǡ١ޤäƤޤ -ˤĤƤ Bio::Fasta.remote Bio::Fasta.local Ʊ褦˻Ȥ -ȤǤޤ +今のところ GenomeNet (fasta.genome.jp) での検索のみサポートしています。 +リモートの場合は使用可能な検索対象データベースが決まっていますが、それ以 +外の点については Bio::Fasta.remote と Bio::Fasta.local は同じように使う +ことができます。 -GenomeNet ǻѲǽʸоݥǡ١ +GenomeNet で使用可能な検索対象データベース: - * ߥλǡ١ + * アミノ酸配列データベース * nr-aa, genes, vgenes.pep, swissprot, swissprot-upd, pir, prf, pdbstr - * ǡ١ + * 塩基配列データベース * nr-nt, genbank-nonst, gbnonst-upd, dbest, dbgss, htgs, dbsts, embl-nonst, embnonst-upd, genes-nt, genome, vgenes.nuc -ޤ椫鸡ǡ١򤷤ޤ䤤碌μ -ȸǡ١μˤäƥץϷޤޤ +まず、この中から検索したいデータベースを選択します。問い合わせ配列の種類 +と検索するデータベースの種類によってプログラムは決まります。 - * 䤤碌󤬥ߥλΤȤ - * оݥǡ١ߥλǡ١ξ硢program 'fasta' - * оݥǡ١˻ǡ١ξ硢program 'tfasta' + * 問い合わせ配列がアミノ酸のとき + * 対象データベースがアミノ酸配列データベースの場合、program は 'fasta' + * 対象データベースが核酸配列データベースの場合、program は 'tfasta' - * 䤤碌󤬳˻ΤȤ - * оݥǡ١˻ǡ١ξ硢program 'fasta' - * (оݥǡ١ߥλǡ١ξϸǽ?) + * 問い合わせ配列が核酸配列のとき + * 対象データベースが核酸配列データベースの場合、program は 'fasta' + * (対象データベースがアミノ酸配列データベースの場合は検索不能?) -ץȥǡ١Ȥ߹礻ޤä +プログラムとデータベースの組み合せが決まったら program = 'fasta' database = 'genes' factory = Bio::Fasta.remote(program, database) -Ȥƥեȥ꡼ꡢξƱ褦 factory.query ʤ -Υ᥽åɤǸ¹Ԥޤ +としてファクトリーを作り、ローカルの場合と同じように factory.query など +のメソッドで検索を実行します。 -== BLAST ˤƱԤBio::Blast 饹 +== BLAST による相同性検索を行う(Bio::Blast クラス) -BLAST GenomeNet (blast.genome.jp) Ǥθ򥵥ݡȤ -ޤǤ Bio::Fasta API ̤ˤƤޤΤǡ嵭 -Bio::Blast Ƚ񤭴Ǥפʾ礬¿Ǥ +BLAST もローカルと GenomeNet (blast.genome.jp) での検索をサポートして +います。できるだけ Bio::Fasta と API を共通にしていますので、上記の例を +Bio::Blast と書き換えただけでも大丈夫な場合が多いです。 -ȤС f_search.rb +たとえば、先の f_search.rb は - # BLAST ¹ԤĶ֥Ȥ + # BLAST を実行する環境オブジェクトを作る factory = Bio::Blast.local('blastp', ARGV.pop) -ѹƱ褦˼¹ԤǤޤ +と変更するだけで同じように実行できます。 -ƱͤˡGenomeNet ѤBLASTԤˤ Bio::Blast.remote Ȥޤ -ξ硢programλƤ FASTA Ȱۤʤޤ +同様に、GenomeNet を使用してBLASTを行う場合には Bio::Blast.remote を使います。 +この場合、programの指定内容が FASTA と異なります。 - * 䤤碌󤬥ߥλΤȤ - * оݥǡ١ߥλǡ١ξ硢program 'blastp' - * оݥǡ١˻ǡ١ξ硢program 'tblastn' + * 問い合わせ配列がアミノ酸のとき + * 対象データベースがアミノ酸配列データベースの場合、program は 'blastp' + * 対象データベースが核酸配列データベースの場合、program は 'tblastn' - * 䤤碌󤬱ΤȤ - * оݥǡ١ߥλǡ١ξ硢program 'blastx' - * оݥǡ١ǡ١ξ硢program 'blastn' - * (䤤碌ǡ١6ե졼Ԥ 'tblastx') + * 問い合わせ配列が塩基配列のとき + * 対象データベースがアミノ酸配列データベースの場合、program は 'blastx' + * 対象データベースが塩基配列データベースの場合、program は 'blastn' + * (問い合わせ・データベース共に6フレーム翻訳を行う場合は 'tblastx') -򤽤줾ꤷޤ +をそれぞれ指定します。 -ȤǡBLAST Ǥ "-m 7" ץˤ XML ϥեޥååȤ -˭٤ʤᡢBio::Blast Ruby Ѥ XML 饤֥Ǥ -XMLParser ޤ REXML ѲǽʾϡXML ϤѤޤ -ξѲǽʾ硢XMLParser Τۤ®ʤΤͥŪ˻Ѥޤ -ʤRuby 1.8.0 ʹߤǤ REXML Ruby ΤɸźդƤޤ -⤷ XML 饤֥꤬󥹥ȡ뤵Ƥʤ "-m 8" Υֶڤ -Ϸ򰷤褦ˤƤޤΥեޥåȤǤ -ǡ¤Τǡ"-m 7" XML νϤȤȤ򤪴ᤷޤ +ところで、BLAST では "-m 7" オプションによる XML 出力フォーマッットの方が +得られる情報が豊富なため、Bio::Blast は Ruby 用の XML ライブラリである +XMLParser または REXML が使用可能な場合は、XML 出力を利用します。 +両方使用可能な場合、XMLParser のほうが高速なので優先的に使用されます。 +なお、Ruby 1.8.0 以降では REXML は Ruby 本体に標準添付されています。 +もし XML ライブラリがインストールされていない場合は "-m 8" のタブ区切りの +出力形式を扱うようにしています。しかし、このフォーマットでは得られる +データが限られるので、"-m 7" の XML 形式の出力を使うことをお勧めします。 -Ǥ˸褦 Bio::Fasta::Report Bio::Blast::Report Hit ֥ -ȤϤĤ̤Υ᥽åɤäƤޤBLAST ͭΥ᥽åɤɤ -ʤΤˤ bit_score midline ʤɤޤ +すでに見たように Bio::Fasta::Report と Bio::Blast::Report の Hit オブジェ +クトはいくつか共通のメソッドを持っています。BLAST 固有のメソッドで良く使 +いそうなものには bit_score や midline などがあります。 report.each do |hit| - puts hit.bit_score # bit (*) - puts hit.query_seq # 䤤碌 - puts hit.midline # 饤Ȥ midline ʸ (*) - puts hit.target_seq # ҥåȤ + puts hit.bit_score # bit スコア (*) + puts hit.query_seq # 問い合わせ配列 + puts hit.midline # アライメントの midline 文字列 (*) + puts hit.target_seq # ヒットした配列 puts hit.evalue # E-value puts hit.identity # % identity - puts hit.overlap # СåפƤΰĹ - puts hit.query_id # 䤤碌 ID - puts hit.query_def # 䤤碌Υ - puts hit.query_len # 䤤碌Ĺ - puts hit.target_id # ҥåȤ ID - puts hit.target_def # ҥåȤΥ - puts hit.target_len # ҥåȤĹ - puts hit.query_start # Ʊΰ䤤碌ǤγϻĴ - puts hit.query_end # Ʊΰ䤤碌ǤνλĴ - puts hit.target_start # ƱΰΥåǤγϻĴ - puts hit.target_end # ƱΰΥåǤνλĴ - puts hit.lap_at # 嵭֤οͤ + puts hit.overlap # オーバーラップしている領域の長さ + puts hit.query_id # 問い合わせ配列の ID + puts hit.query_def # 問い合わせ配列のコメント + puts hit.query_len # 問い合わせ配列の長さ + puts hit.target_id # ヒットした配列の ID + puts hit.target_def # ヒットした配列のコメント + puts hit.target_len # ヒットした配列の長さ + puts hit.query_start # 相同領域の問い合わせ配列での開始残基位置 + puts hit.query_end # 相同領域の問い合わせ配列での終了残基位置 + puts hit.target_start # 相同領域のターゲット配列での開始残基位置 + puts hit.target_end # 相同領域のターゲット配列での終了残基位置 + puts hit.lap_at # 上記4位置の数値の配列 end -FASTAȤAPI̲ΤȴؤΤᡢʤɤĤξ1ܤ -Hsp (High-scoring segment pair) ͤHit֤褦ˤƤޤ +FASTAとのAPI共通化のためと簡便のため、スコアなどいくつかの情報は1番目の +Hsp (High-scoring segment pair) の値をHitで返すようにしています。 -Bio::Blast::Report ֥Ȥϡʲ˼褦ʡBLASTη̽Ϥ -ǡ¤򤽤ΤޤȿǤŪʥǡ¤äƤޤŪˤ +Bio::Blast::Report オブジェクトは、以下に示すような、BLASTの結果出力の +データ構造をそのまま反映した階層的なデータ構造を持っています。具体的には - * Bio::Blast::Report ֥Ȥ @iteratinos - * Bio::Blast::Report::Iteration ֥Ȥ Array äƤ - Bio::Blast::Report::Iteration ֥Ȥ @hits - * Bio::Blast::Report::Hits ֥Ȥ Array äƤ - Bio::Blast::Report::Hits ֥Ȥ @hsps - * Bio::Blast::Report::Hsp ֥Ȥ Array äƤ + * Bio::Blast::Report オブジェクトの @iteratinos に + * Bio::Blast::Report::Iteration オブジェクトの Array が入っており + Bio::Blast::Report::Iteration オブジェクトの @hits に + * Bio::Blast::Report::Hits オブジェクトの Array が入っており + Bio::Blast::Report::Hits オブジェクトの @hsps に + * Bio::Blast::Report::Hsp オブジェクトの Array が入っている -Ȥع¤ˤʤäƤꡢ줾줬ͤФΥ᥽åɤ -äƤޤΥ᥽åɤξܺ٤䡢BLAST ¹Ԥ׾ʤɤͤ -ɬפʾˤϡ bio/appl/blast/*.rb ΥɥȤƥȥɤ -ȤƤ +という階層構造になっており、それぞれが内部の値を取り出すためのメソッドを +持っています。これらのメソッドの詳細や、BLAST 実行の統計情報などの値が +必要な場合には、 bio/appl/blast/*.rb 内のドキュメントやテストコードを +参照してください。 -=== ¸ BLAST ϥեѡ +=== 既存の BLAST 出力ファイルをパースする -BLAST ¹Ԥ̥ե뤬Ǥ¸ƤäơϤ -ˤϡBio::Blast ֥Ȥ餺ˡ Bio::Blast::Report ֥ -ȤꤿȤȤˤʤޤˤ Bio::Blast.reports ᥽å -ȤޤбƤΤ ǥեȽϥեޥå("-m 0") ޤ -"-m 7" ץ XML եޥåȽϤǤ +BLAST を実行した結果ファイルがすでに保存してあって、これを解析したい場合 +には(Bio::Blast オブジェクトを作らずに) Bio::Blast::Report オブジェク +トを作りたい、ということになります。これには Bio::Blast.reports メソッド +を使います。対応しているのは デフォルト出力フォーマット("-m 0") または +"-m 7" オプションの XML フォーマット出力です。 #!/usr/bin/env ruby require 'bio' - # BLASTϤ˥ѡ Bio::Blast::Report ֥Ȥ֤ + # BLAST出力を順にパースして Bio::Blast::Report オブジェクトを返す Bio::Blast.reports(ARGF) do |report| puts "Hits for " + report.query_def + " against " + report.db report.each do |hit| print hit.target_id, "\t", hit.evalue, "\n" if hit.evalue < 0.001 end end -Τ褦ʥץ hits_under_0.001.rb 񤤤ơ +のようなスクリプト hits_under_0.001.rb を書いて、 % ./hits_under_0.001.rb *.xml -ʤɤȼ¹ԤСͿ BLAST η̥ե *.xml ֤˽ +などと実行すれば、引数に与えた BLAST の結果ファイル *.xml を順番に処理で +きます。 -Blast ΥС OS ʤɤˤäƽϤ XML ηۤʤǽ -ꡢ XML ΥѡޤȤʤȤ褦Ǥξ -Blast 2.2.5 ʹߤΥС򥤥󥹥ȡ뤹뤫 -D -m ʤɤΥץ -Ȥ߹礻ѤƻƤߤƤ +Blast のバージョンや OS などによって出力される XML の形式が異なる可能性 +があり、時々 XML のパーザがうまく使えないことがあるようです。その場合は +Blast 2.2.5 以降のバージョンをインストールするか -D や -m などのオプショ +ンの組み合せを変えて試してみてください。 -=== ⡼ȸȤɲäˤ +=== リモート検索サイトを追加するには -: ΥϾ桼ǤǽǤ SOAP ʤɤˤ -֥ӥѤ褤Ǥ礦 +注: このセクションは上級ユーザ向けです。可能であれば SOAP などによる +ウェブサービスを利用する方がよいでしょう。 -Blast NCBI Ϥ͡ʥȤǥӥƤޤΤȤ - BioRuby Ǥ GenomeNet ʳˤбƤޤ󡣤ΥȤϡ +Blast 検索は NCBI をはじめ様々なサイトでサービスされていますが、今のとこ +ろ BioRuby では GenomeNet 以外には対応していません。これらのサイトは、 - * CGI ƤӽФʥޥɥ饤󥪥ץϤΥѤ˽ - * -m 8 ʤ BioRuby ѡäƤϥեޥåȤ blast - ϤФ + * CGI を呼び出す(コマンドラインオプションはそのサイト用に処理する) + * -m 8 など BioRuby がパーザを持っている出力フォーマットで blast の + 出力を取り出す -ȤǤСquery äƸ̤ Bio::Blast::Report.new -Ϥ褦ʥ᥽åɤǻȤ褦ˤʤޤŪˤϡ -᥽åɤexec_̾פΤ褦̾ Bio::Blast private ᥽å -ȤϿȡܤΰˡ֥̾פꤷ +ことさえできれば、query を受け取って検索結果を Bio::Blast::Report.new に +渡すようなメソッドを定義するだけで使えるようになります。具体的には、この +メソッドを「exec_サイト名」のような名前で Bio::Blast の private メソッド +として登録すると、4番目の引数に「サイト名」を指定して - factory = Bio::Blast.remote(program, db, option, '̾') + factory = Bio::Blast.remote(program, db, option, 'サイト名') -Τ褦˸ƤӽФ褦ˤʤäƤޤ BioRuby ץȤ -äƤ館мޤĺޤ +のように呼び出せるようになっています。完成したら BioRuby プロジェクトま +で送ってもらえれば取り込ませて頂きます。 -== PubMed ưʸꥹȤ (Bio::PubMed 饹) +== PubMed を引いて引用文献リストを作る (Bio::PubMed クラス) -ϡNCBI ʸǡ١ PubMed 򸡺ưʸꥹȤǤ +次は、NCBI の文献データベース PubMed を検索して引用文献リストを作成する例です。 #!/usr/bin/env ruby require 'bio' ARGV.each do |id| - entry = Bio::PubMed.query(id) # PubMed 륯饹᥽å - medline = Bio::MEDLINE.new(entry) # Bio::MEDLINE ֥ - reference = medline.reference # Bio::Reference ֥ - puts reference.bibtex # BibTeX եޥåȤǽ + entry = Bio::PubMed.query(id) # PubMed を取得するクラスメソッド + medline = Bio::MEDLINE.new(entry) # Bio::MEDLINE オブジェクト + reference = medline.reference # Bio::Reference オブジェクト + puts reference.bibtex # BibTeX フォーマットで出力 end -ΥץȤ pmfetch.rb ʤɹ̾¸ +このスクリプトを pmfetch.rb など好きな名前で保存し、 % ./pmfetch.rb 11024183 10592278 10592173 -ʤɰѤʸ PubMed ID (PMID) ¤٤ NCBI ˥ - MEDLINE եޥåȤѡ BibTeX եޥåȤѴƽϤ -ϤǤ +など引用したい論文の PubMed ID (PMID) を引数に並べると NCBI にアクセスし +て MEDLINE フォーマットをパースし BibTeX フォーマットに変換して出力して +くれるはずです。 -¾ˡɤǸ뵡ǽ⤢ޤ +他に、キーワードで検索する機能もあります。 #!/usr/bin/env ruby require 'bio' - # ޥɥ饤ͿɤΥꥹȤ򣱤Ĥʸˤ + # コマンドラインで与えたキーワードのリストを1つの文字列にする keywords = ARGV.join(' ') - # PubMed 򥭡ɤǸ + # PubMed をキーワードで検索 entries = Bio::PubMed.search(keywords) entries.each do |entry| - medline = Bio::MEDLINE.new(entry) # Bio::MEDLINE ֥ - reference = medline.reference # Bio::Reference ֥ - puts reference.bibtex # BibTeX եޥåȤǽ + medline = Bio::MEDLINE.new(entry) # Bio::MEDLINE オブジェクト + reference = medline.reference # Bio::Reference オブジェクト + puts reference.bibtex # BibTeX フォーマットで出力 end -ΥץȤ pmsearch.rb ʤɹ̾¸ +このスクリプトを pmsearch.rb など好きな名前で保存し % ./pmsearch.rb genome bioinformatics -ʤɸɤ¤٤Ƽ¹ԤȡPubMed 򥭡 -ƥҥåȤʸΥꥹȤ BibTeX եޥåȤǽϤޤ +など検索したいキーワードを引数に並べて実行すると、PubMed をキーワード +検索してヒットした論文のリストを BibTeX フォーマットで出力します。 -ǶǤϡNCBI E-Utils Ȥ֥ץꥱȤȤ -侩ƤΤǡ Bio::PubMed.esearch ᥽åɤ -Bio::PubMed.efetch ᥽åɤȤɤǤ礦 +最近では、NCBI は E-Utils というウェブアプリケーションを使うことが +推奨されているので、今後は Bio::PubMed.esearch メソッドおよび +Bio::PubMed.efetch メソッドを使う方が良いでしょう。 #!/usr/bin/env ruby require 'bio' @@ -2375,62 +2271,62 @@ medline = Bio::MEDLINE.new(entry) reference = medline.reference puts reference.bibtex end -ΥץȤǤϡ嵭 pmsearch.rb ȤۤƱ褦ưޤˡ -NCBI E-Utils Ѥ뤳Ȥˤꡢоݤդҥåȷʤɤ -Ǥ褦ˤʤäƤΤǡⵡǽǤץͿ -ˤĤƤ ((<E-Utils Υإץڡ|URL:http://eutils.ncbi.nlm.nih.gov/entrez/query/static/eutils_help.html>)) 򻲾ȤƤ +このスクリプトでは、上記の pmsearch.rb とほぼ同じように動きます。さらに、 +NCBI E-Utils を活用することにより、検索対象の日付や最大ヒット件数などを +指定できるようになっているので、より高機能です。オプションに与えられる +引数については ((<E-Utils のヘルプページ|URL:http://eutils.ncbi.nlm.nih.gov/entrez/query/static/eutils_help.html>)) を参照してください。 -ʤߤˡǤ bibtex ᥽åɤ BibTeX եޥåȤѴƤޤ -ҤΤ褦 bibitem ᥽åɤȤ¾ʶĴ䥤åʤ -ʸνϤǤޤ󤬡nature ᥽åɤ nar ʤɡĤλ -եޥåȤˤбƤޤ +ちなみに、ここでは bibtex メソッドで BibTeX フォーマットに変換しています +が、後述のように bibitem メソッドも使える他、(強調やイタリックなど +文字の修飾はできませんが)nature メソッドや nar など、いくつかの雑誌の +フォーマットにも対応しています。 -=== BibTeX λȤΥ +=== BibTeX の使い方のメモ -嵭ǽ᤿ BibTeX եޥåȤΥꥹȤ TeX ǻȤˡñˤ -ȤƤޤѤʸ +上記の例で集めた BibTeX フォーマットのリストを TeX で使う方法を簡単にま +とめておきます。引用しそうな文献を % ./pmfetch.rb 10592173 >> genoinfo.bib % ./pmsearch.rb genome bioinformatics >> genoinfo.bib -ʤɤȤ genoinfo.bib ե˽¸Ƥ +などとして genoinfo.bib ファイルに集めて保存しておき、 \documentclass{jarticle} \begin{document} \bibliographystyle{plain} - ۤˤ KEGG ǡ١~\cite{PMID:10592173}ϤդۤǤ롣 + ほにゃらら KEGG データベース~\cite{PMID:10592173}はふがほげである。 \bibliography{genoinfo} \end{document} -Ȥե hoge.tex 񤤤ơ +というファイル hoge.tex を書いて、 % platex hoge - % bibtex hoge # genoinfo.bib ν - % platex hoge # ʸꥹȤκ - % platex hoge # ʸֹ + % bibtex hoge # → genoinfo.bib の処理 + % platex hoge # → 文献リストの作成 + % platex hoge # → 文献番号 -Ȥ̵ hoge.dvi Ǥޤ +とすると無事 hoge.dvi ができあがります。 -=== bibitem λȤΥ +=== bibitem の使い方のメモ -ʸѤ̤ .bib եꤿʤ Reference#bibitem ᥽ -ɤνϤȤޤ嵭 pmfetch.rb pmsearch.rb +文献用に別の .bib ファイルを作りたくない場合は Reference#bibitem メソッ +ドの出力を使います。上記の pmfetch.rb や pmsearch.rb の puts reference.bibtex -ιԤ +の行を puts reference.bibitem -˽񤭴ʤɤơϷ̤ +に書き換えるなどして、出力結果を \documentclass{jarticle} \begin{document} - ۤˤ KEGG ǡ١~\cite{PMID:10592173}ϤդۤǤ롣 + ほにゃらら KEGG データベース~\cite{PMID:10592173}はふがほげである。 \begin{thebibliography}{00} \bibitem{PMID:10592173} Kanehisa, M., Goto, S. @@ -2438,196 +2334,196 @@ {\em Nucleic Acids Res}, 28(1):27--30, 2000. \end{thebibliography} \end{document} -Τ褦 \begin{thebibliography} ǰϤߤޤ hoge.tex Ȥ +のように \begin{thebibliography} で囲みます。これを hoge.tex とすると - % platex hoge # ʸꥹȤκ - % platex hoge # ʸֹ + % platex hoge # → 文献リストの作成 + % platex hoge # → 文献番号 -ȣФǤǤ +と2回処理すればできあがりです。 = OBDA -OBDA (Open Bio Database Access) ȤϡOpen Bioinformatics Foundation -ˤäꤵ줿ǡ١ؤζ̥ˡǤϡ -2002 ǯ12 Arizona Cape Town ˤƳŤ줿 BioHackathon -ˤơBioPerl, BioJava, BioPython, BioRuby ʤɤγƥץȤ -Сäƺޤ +OBDA (Open Bio Database Access) とは、Open Bioinformatics Foundation +によって制定された、配列データベースへの共通アクセス方法です。これは、 +2002 年の1月と2月に Arizona と Cape Town にて開催された BioHackathon +において、BioPerl, BioJava, BioPython, BioRuby などの各プロジェクトの +メンバーが参加して作成されました。 * BioRegistry (Directory) - * ǡ١ɤˤɤΤ褦˼˹ԤꤹȤ + * データベース毎に配列をどこにどのように取りに行くかを指定する仕組み * BioFlat - * եåȥե 2 ʬڤޤ BDB Ȥäǥå + * フラットファイルの 2 分木または BDB を使ったインデックス作成 * BioFetch - * HTTP ͳǥǡ١饨ȥ륵Фȥ饤 + * HTTP 経由でデータベースからエントリを取得するサーバとクライアント * BioSQL - * MySQL PostgreSQL ʤɤδطǡ١ǡǼ - schema ȡȥФΥ᥽å + * MySQL や PostgreSQL などの関係データベースに配列データを格納する + ための schema と、エントリを取り出すためのメソッド -ܺ٤ ((<URL:http://obda.open-bio.org/>)) 򻲾ȤƤ -줾λͽ cvs.open-bio.org CVSݥȥ֤Ƥޤ -ޤϡ((<URL:http://cvs.open-bio.org/cgi-bin/viewcvs/viewcvs.cgi/obda-specs/?cvsroot=obf-common>)) 黲ȤǤޤ +詳細は ((<URL:http://obda.open-bio.org/>)) を参照してください。 +それぞれの仕様書は cvs.open-bio.org の CVSレポジトリに置いてあります。 +または、((<URL:http://cvs.open-bio.org/cgi-bin/viewcvs/viewcvs.cgi/obda-specs/?cvsroot=obf-common>)) から参照できます。 == BioRegistry -BioRegistryȤϡեˤäƳƥǡ١Υȥˡ -ꤹ뤳ȤˤꡢɤˡȤäƤ뤫ۤȤɰռǡ -뤳ȤǽȤ뤿λȤߤǤ -ե̤ͥ +BioRegistryとは、設定ファイルによって各データベースのエントリ取得方法を +指定することにより、どんな方法を使っているかをほとんど意識せずデータを +取得することを可能とするための仕組みです。 +設定ファイルの優先順位は - * (᥽åɤΥѥ᡼)ꤷե + * (メソッドのパラメータで)指定したファイル * ~/.bioinformatics/seqdatabase.ini * /etc/bioinformatics/seqdatabase.ini * http://www.open-bio.org/registry/seqdatabase.ini -Ǹ open-bio.org ϡե뤬Ĥʤ -Ȥޤ +最後の open-bio.org の設定は、ローカルな設定ファイルが見つからない場合に +だけ参照します。 -BioRuby θߤμǤϡ٤ƤΥեɤ߹ߡ -Ʊ꤬̾ʣ¸ߤϡǽ˸ĤäѤޤ -ѤȡȤСƥԤ /etc/bioinformatics/ ֤ -ΤĿŪѹΤ ~/.bioinformatics/ Ǿ񤭤뤳Ȥ -Ǥޤץ seqdatabase.ini ե뤬 bioruby Υ˴ޤޤ -ޤΤǻȤƤ +BioRuby の現在の実装では、すべてのローカルな設定ファイルを読み込み、 +同じ名前の設定が複数存在した場合は、最初に見つかった設定だけが使用されます。 +これを利用すると、たとえば、システム管理者が /etc/bioinformatics/ に置いた +設定のうち個人的に変更したいものだけ ~/.bioinformatics/ で上書きすることが +できます。サンプルの seqdatabase.ini ファイルが bioruby のソースに含まれて +いますので参照してください。 -եȤ stanza եޥåȤȸƤФ񼰤ǵҤޤ +設定ファイルの中身は stanza フォーマットと呼ばれる書式で記述します。 - [ǡ١̾] - protocol=ץȥ̾ - location=̾ + [データベース名] + protocol=プロトコル名 + location=サーバ名 -Τ褦ʥȥƥǡ١ˤĤƵҤ뤳Ȥˤʤޤ -ǡ١̾ϡʬѤ뤿Υ٥ʤΤʬ䤹Τ -ĤɤºݤΥǡ١̾ȰۤʤäƤƤ⹽ʤ褦Ǥ -Ʊ̾Υǡ١ʣȤϺǽ˽񤫤ƤΤ -³褦˻ͽǤƤƤޤΤȤ BioRuby Ǥ -ˤбƤޤ +このようなエントリを各データベースについて記述することになります。 +データベース名は、自分が使用するためのラベルなので分かりやすいものを +つければ良く、実際のデータベースの名前と異なっていても構わないようです。 +同じ名前のデータベースが複数あるときは最初に書かれているものから順に +接続を試すように仕様書では提案されていますが、今のところ BioRuby では +それには対応していません。 -ޤץȥμˤäƤ location ʳˤMySQL Υ桼̾ʤɡ -ɲäΥץ򵭽ҤɬפޤߤΤȤͽǵꤵ -Ƥ protocol ȤƤϰʲΤΤޤ +また、プロトコルの種類によっては location 以外にも(MySQL のユーザ名など) +追加のオプションを記述する必要があります。現在のところ、仕様書で規定され +ている protocol としては以下のものがあります。 * index-flat * index-berkeleydb * biofetch * biosql * bsane-corba * xembl -ΤȤ BioRuby ǻѲǽʤΤ index-flat, index-berkleydb, biofetch - biosql ǤޤBioRegistryƥץȥλͤѹ뤳 -ޤBioRubyϤɽǤƤʤ⤷ޤ +今のところ BioRuby で使用可能なのは index-flat, index-berkleydb, biofetch +と biosql だけです。また、BioRegistryや各プロトコルの仕様は変更されること +がありますが、BioRubyはそれに追従できていないかもしれません。 -BioRegistry Ȥˤϡޤ Bio::Registry֥Ȥޤ -ȡե뤬ɤ߹ޤޤ +BioRegistry を使うには、まず Bio::Registryオブジェクトを作成します。 +すると、設定ファイルが読み込まれます。 reg = Bio::Registry.new - # ե˽񤤤ǡ١̾ǥФ³ + # 設定ファイルに書いたデータベース名でサーバへ接続 serv = reg.get_database('genbank') - # ID ꤷƥȥ + # ID を指定してエントリを取得 entry = serv.get_by_id('AA2CG') - serv ե [genbank] ǻꤷ protocol ץȥ -б륵Х֥ȤǡBio::SQL Bio::Fetch ʤɤΥ󥹥 -󥹤֤äƤϤǤʥǡ١̾Ĥʤä nilˡ +ここで serv は設定ファイルの [genbank] の欄で指定した protocol プロトコ +ルに対応するサーバオブジェクトで、Bio::SQL や Bio::Fetch などのインスタ +ンスが返っているはずです(データベース名が見つからなかった場合は nil)。 -Ȥ OBDA ̤Υȥ᥽å get_by_id ƤꡢХ -֥˸ͭΥ᥽åɤƤ֤ȤˤʤޤΤǡʲ BioFetch -BioSQL β򻲾ȤƤ +あとは OBDA 共通のエントリ取得メソッド get_by_id を呼んだり、サーバオ +ブジェクト毎に固有のメソッドを呼ぶことになりますので、以下の BioFetch や +BioSQL の解説を参照してください。 == BioFlat -BioFlat ϥեåȥեФƥǥåȥ® -ФȤߤǤǥåμϡRUbyγĥ饤֥˰¸ʤ -index-flat Berkeley DB (bdb) Ȥä index-berkeleydb 2ब¸ -ޤʤindex-berkeleydb ѤˤϡBDB Ȥ Ruby γĥ -饤֥ӥ󥹥ȡ뤹ɬפޤǥåκˤ -bioruby ѥå° br_bioflat.rb ޥɤȤäơ +BioFlat はフラットファイルに対してインデックスを作成し、エントリを高速に +取り出す仕組みです。インデックスの種類は、RUbyの拡張ライブラリに依存しない +index-flat と Berkeley DB (bdb) を使った index-berkeleydb の2種類が存在 +します。なお、index-berkeleydb を使用するには、BDB という Ruby の拡張 +ライブラリを別途インストールする必要があります。インデックスの作成には +bioruby パッケージに付属する br_bioflat.rb コマンドを使って、 - % br_bioflat.rb --makeindex ǡ١̾ [--format 饹̾] ե̾ + % br_bioflat.rb --makeindex データベース名 [--format クラス名] ファイル名 -Τ褦ˤޤBioRubyϥǡեޥåȤμưǧǽܤƤ -Τ --format ץϾάǽǤ줦ޤǧʤä -BioRuby γƥǡ١Υ饹̾ꤷƤϡ +のようにします。BioRubyはデータフォーマットの自動認識機能を搭載している +ので --format オプションは省略可能ですが、万一うまく認識しなかった場合は +BioRuby の各データベースのクラス名を指定してください。検索は、 - % bioflat ǡ١̾ ȥID + % bioflat データベース名 エントリID -ȤޤŪ GenBank gbbct*.seq ե˥ǥå -Ƹ硢 +とします。具体的に GenBank の gbbct*.seq ファイルにインデックスを作成し +て検索する場合、 % bioflat --makeindex my_bctdb --format GenBank gbbct*.seq % bioflat my_bctdb A16STM262 -Τ褦ʴˤʤޤ +のような感じになります。 -Ruby bdb ĥ⥸塼(ܺ٤ http://raa.ruby-lang.org/project/bdb/ ) -󥹥ȡ뤵Ƥ Berkeley DB Ѥƥǥå -ȤǤޤξ硢 +Ruby の bdb 拡張モジュール(詳細は http://raa.ruby-lang.org/project/bdb/ 参照) +がインストールされている場合は Berkeley DB を利用してインデックスを作成する +ことができます。この場合、 - % bioflat --makeindex-bdb ǡ١̾ [--format 饹̾] ե̾ + % bioflat --makeindex-bdb データベース名 [--format クラス名] ファイル名 -Τ褦 "--makeindex" Τ "--makeindex-bdb" ꤷޤ +のように "--makeindex" のかわりに "--makeindex-bdb" を指定します。 == BioFetch -BioFetch CGI ͳƥФǡ١Υȥ -ǡФ CGI Υץ̾顼ɤʤɤƤ -ޤ饤Ȥ HTTP Ȥäƥǡ١IDեޥåȤʤɤ -ꤷȥޤ +BioFetch は CGI を経由してサーバからデータベースのエントリを取得する仕様 +で、サーバが受け取る CGI のオプション名、エラーコードなどが決められてい +ます。クライアントは HTTP を使ってデータベース、ID、フォーマットなどを指 +定し、エントリを取得します。 -BioRuby ץȤǤ GenomeNet DBGET ƥХåɤȤ -BioFetch ФƤꡢbioruby.org DZѤƤޤΥФ -ɤ BioRuby sample/ ǥ쥯ȥäƤޤߤΤȤ -BioFetch ФϤ bioruby.org ΤΤ EBI 󤫽ꤷޤ +BioRuby プロジェクトでは GenomeNet の DBGET システムをバックエンドとした +BioFetch サーバを実装しており、bioruby.org で運用しています。このサーバの +ソースコードは BioRuby の sample/ ディレクトリに入っています。現在のところ +BioFetch サーバはこの bioruby.org のものと EBI の二か所しかありません。 -BioFetch ȤäƥȥˤϡĤˡޤ +BioFetch を使ってエントリを取得するには、いくつかの方法があります。 -(1) ֥֥饦鸡ˡʰʲΥڡ򳫤 +(1) ウェブブラウザから検索する方法(以下のページを開く) http://bioruby.org/cgi-bin/biofetch.rb -(2) BioRuby° br_biofetch.rb ޥɤѤˡ +(2) BioRuby付属の br_biofetch.rb コマンドを用いる方法 % br_biofetch.rb db_name entry_id -(3) ץȤ椫 Bio::Fetch 饹ľܻȤˡ +(3) スクリプトの中から Bio::Fetch クラスを直接使う方法 serv = Bio::Fetch.new(server_url) entry = serv.fetch(db_name, entry_id) -(4) ץȤ BioRegistry ͳ Bio::Fetch 饹Ū˻Ȥˡ +(4) スクリプトの中で BioRegistry 経由で Bio::Fetch クラスを間接的に使う方法 reg = Bio::Registry.new serv = reg.get_database('genbank') entry = serv.get_by_id('AA2CG') -⤷ (4) Ȥ seqdatabase.ini +もし (4) を使いたい場合は seqdatabase.ini で [genbank] protocol=biofetch location=http://bioruby.org/cgi-bin/biofetch.rb biodbname=genbank -ʤɤȻꤷƤɬפޤ +などと指定しておく必要があります。 -=== BioFetch Bio::KEGG::GENES, Bio::AAindex1 Ȥ߹碌 +=== BioFetch と Bio::KEGG::GENES, Bio::AAindex1 を組み合わせた例 -ΥץϡBioFetch Ȥä KEGG GENES ǡ١źٶ -Halobacterium ΥХƥꥢɥץ (VNG1467G) äƤơƱ -褦˥ߥλɸǡ١Ǥ AAindex إå -ɸ (BURA740101) Ȥäơ 15 ĴΥɥ򤹤Ǥ +次のプログラムは、BioFetch を使って KEGG の GENES データベースから古細菌 +Halobacterium のバクテリアロドプシン遺伝子 (VNG1467G) を取ってきて、同じ +ようにアミノ酸指標データベースである AAindex から取得したαヘリックスの +指標 (BURA740101) を使って、幅 15 残基のウィンドウサーチをする例です。 #!/usr/bin/env ruby require 'bio' @@ -2644,63 +2540,63 @@ score = subseq.total(helix) puts [ position, score ].join("\t") position += 1 end -ǻȤäƤ륯饹᥽å Bio::Fetch.query ϰۤ bioruby.org -BioFetch ФȤѤΥ硼ȥåȤǤʤΥФŪˤ -ΥͥåȤǡƤޤKEGG/GENES ǡ١ hal -AAindex ǡ١ aax1 Υȥϡ¾ BioFetch ФǤϼǤ -ʤȤ⤢äơ query ᥽åɤȤäƤޤ +ここで使っているクラスメソッド Bio::Fetch.query は暗黙に bioruby.org の +BioFetch サーバを使う専用のショートカットです。(このサーバは内部的には +ゲノムネットからデータを取得しています。KEGG/GENES データベースの hal や +AAindex データベース aax1 のエントリは、他の BioFetch サーバでは取得でき +ないこともあって、あえて query メソッドを使っています。) == BioSQL to be written... -== BioRuby ΥץץλȤ +== BioRuby のサンプルプログラムの使い方 -BioRuby Υѥåˤ samples/ ǥ쥯ȥʲˤĤΥץ -बޤޤƤޤŤΤ⺮äƤޤ̤ȤƤ⽽ʬȤ -ʤΤǡŪ򤤥ץ󶡤ϴޤǤ +BioRuby のパッケージには samples/ ディレクトリ以下にいくつかのサンプルプ +ログラムが含まれています。古いものも混じっていますし、量もとても十分とは +言えないので、実用的で面白いサンプルの提供は歓迎です。 to be written... -== ʤ +== さらなる情報 -¾Υ塼ȥꥢŪʥɥȤȤƤϡBioRuby Wiki֤Ƥ -BioRuby in Anger ޤ +他のチュートリアル的なドキュメントとしては、BioRuby Wikiに置いてある +BioRuby in Anger があります。 -== +== 脚注 -* (1) BioRuby 1.2.1 ΥСǤϡsetup.rb Τ install.rb - ѤޤޤʲΤ褦3ʳƧɬפޤ +* (※1) BioRuby 1.2.1 以前のバージョンでは、setup.rb のかわりに install.rb + を使用します。また、以下のように3段階を踏む必要があります。 % ruby install.rb config % ruby install.rb setup # ruby install.rb install -* (2) BioRuby 1.0.0 ΥСǤϡgetseq, getent, getobj - γƥޥɤΤˡseq, ent, obj γƥޥɤѤƤ +* (※2) BioRuby 1.0.0 以前のバージョンでは、getseq, getent, getobj + の各コマンドのかわりに、seq, ent, obj の各コマンドを使用してください。 -* (3) BioRuby 0.7.1 ΥСǤϡBio::Sequence::NA 饹 - Bio::sequence::AA 饹Τɤ餫Υ֥Ȥˤʤޤ - 󤬤ɤΥ饹°뤫 Ruby class ᥽åɤѤ +* (※3) BioRuby 0.7.1 以前のバージョンでは、Bio::Sequence::NA クラスか、 + Bio::sequence::AA クラスのどちらかのオブジェクトになります。 + 配列がどちらのクラスに属するかは Ruby の class メソッドを用いて bioruby> p cdc2.class Bio::Sequence::AA bioruby> p psaB.class Bio::Sequence::NA - Τ褦Ĵ٤뤳ȤǤޤưȽְ꤬äƤʤɤˤ - to_naseq, to_aaseq ᥽åɤǶŪѴǤޤ + のように調べることができます。自動判定が間違っている場合などには + to_naseq, to_aaseq メソッドで強制的に変換できます。 -* (4) seq ᥽åɤϡɤ߹ǡμˤäƤϡ𡦥ߥλ - ɤˤƤϤޤʤΤ Bio::Sequence::Generic 饹 - String 饹Υ֥Ȥ֤礬뤫⤷ޤ +* (※4) seq メソッドは、読み込んだデータの種類によっては、塩基・アミノ酸の + どちらにも当てはまらない配列のための Bio::Sequence::Generic クラスや + String クラスのオブジェクトを返す場合があるかもしれません。 -* (5) NCBI, EBI, TogoWS ̵̤ getseq, getent, getobj ޥ - ѲǽȤʤäΤ BioRuby 1.3.0 ʹߤǤ +* (※5) NCBI, EBI, TogoWS が特別な設定無しに getseq, getent, getobj コマンド + から利用可能となったのは BioRuby 1.3.0 以降です。 =end