[DRE-commits] [ruby-bio] 01/04: Imported Upstream version 1.5.0

zeha at debian.org zeha at debian.org
Sun Nov 8 22:28:40 UTC 2015


This is an automated email from the git hooks/post-receive script.

zeha pushed a commit to branch master
in repository ruby-bio.

commit a94ce20e824c2902c1e59143ea6467e43d3f2539
Author: Christian Hofstaedtler <zeha at debian.org>
Date:   Sun Nov 8 22:15:02 2015 +0000

    Imported Upstream version 1.5.0
---
 .travis.yml                                        |   72 +-
 BSDL                                               |   22 +
 COPYING                                            |    4 +-
 COPYING.ja                                         |   72 +-
 ChangeLog                                          | 3429 ++++++++++++++------
 KNOWN_ISSUES.rdoc                                  |   70 +-
 README.rdoc                                        |   40 +-
 RELEASE_NOTES.rdoc                                 |  429 +--
 Rakefile                                           |    5 +-
 bin/br_biofetch.rb                                 |   34 +-
 bioruby.gemspec                                    |   47 +-
 bioruby.gemspec.erb                                |   30 +-
 ChangeLog => doc/ChangeLog-1.4.3                   |  310 +-
 doc/KEGG_API.rd                                    | 1843 -----------
 doc/KEGG_API.rd.ja                                 | 1834 -----------
 RELEASE_NOTES.rdoc => doc/RELEASE_NOTES-1.4.3.rdoc |   18 -
 doc/Tutorial.rd                                    |    6 -
 doc/Tutorial.rd.html                               |   19 +-
 doc/Tutorial.rd.ja                                 | 2024 ++++++------
 doc/Tutorial.rd.ja.html                            | 2044 ++++++------
 extconf.rb                                         |    2 -
 gemfiles/Gemfile.travis-jruby1.8                   |    3 +-
 gemfiles/Gemfile.travis-jruby1.9                   |    6 +-
 gemfiles/Gemfile.travis-rbx                        |   13 +
 gemfiles/Gemfile.travis-ruby1.8                    |    3 +-
 gemfiles/Gemfile.travis-ruby1.9                    |    6 +-
 gemfiles/Gemfile.travis-ruby2.2                    |    9 +
 lib/bio.rb                                         |   53 +-
 lib/bio/alignment.rb                               |   22 +-
 lib/bio/appl/blast.rb                              |    3 +-
 lib/bio/appl/blast/ddbj.rb                         |  131 -
 lib/bio/appl/blast/format0.rb                      |   25 +-
 lib/bio/appl/blast/remote.rb                       |    9 -
 lib/bio/appl/blast/report.rb                       |    2 +-
 lib/bio/appl/clustalw/report.rb                    |    4 +-
 lib/bio/appl/genscan/report.rb                     |    3 +-
 lib/bio/appl/iprscan/report.rb                     |    3 +-
 lib/bio/appl/meme/mast.rb                          |    8 +-
 lib/bio/appl/meme/mast/report.rb                   |    2 +-
 lib/bio/appl/paml/codeml.rb                        |    4 +-
 lib/bio/appl/paml/codeml/report.rb                 |    1 +
 lib/bio/appl/paml/common.rb                        |    2 +-
 lib/bio/appl/sosui/report.rb                       |    3 +-
 lib/bio/command.rb                                 |   64 +-
 lib/bio/data/aa.rb                                 |   44 +-
 lib/bio/data/codontable.rb                         |    3 +-
 lib/bio/db/biosql/biosql_to_biosequence.rb         |    1 +
 lib/bio/db/biosql/sequence.rb                      |    2 +-
 lib/bio/db/embl/common.rb                          |    2 +-
 lib/bio/db/embl/embl.rb                            |    9 +-
 lib/bio/db/embl/format_embl.rb                     |    6 +-
 lib/bio/db/embl/sptr.rb                            | 1453 +--------
 lib/bio/db/embl/swissprot.rb                       |   41 +-
 lib/bio/db/embl/trembl.rb                          |   43 +-
 lib/bio/db/embl/uniprot.rb                         |   41 +-
 lib/bio/db/embl/{sptr.rb => uniprotkb.rb}          |  152 +-
 lib/bio/db/fasta.rb                                |   17 +
 lib/bio/db/fasta/defline.rb                        |    4 +-
 lib/bio/db/fastq.rb                                |    2 +-
 lib/bio/db/genbank/ddbj.rb                         |   14 +-
 lib/bio/db/genbank/refseq.rb                       |   14 +-
 lib/bio/db/gff.rb                                  |    7 +-
 lib/bio/db/go.rb                                   |   11 +-
 lib/bio/db/kegg/module.rb                          |    9 +-
 lib/bio/db/kegg/pathway.rb                         |    9 +-
 lib/bio/db/kegg/reaction.rb                        |    2 +-
 lib/bio/db/kegg/taxonomy.rb                        |  280 --
 lib/bio/db/nexus.rb                                |    5 +-
 lib/bio/db/pdb/pdb.rb                              |    4 +-
 lib/bio/db/phyloxml/phyloxml_elements.rb           |  141 +-
 lib/bio/db/phyloxml/phyloxml_parser.rb             |    4 +-
 lib/bio/db/phyloxml/phyloxml_writer.rb             |    3 +-
 lib/bio/db/sanger_chromatogram/chromatogram.rb     |    3 +-
 lib/bio/db/transfac.rb                             |    2 +-
 lib/bio/io/das.rb                                  |   81 +-
 lib/bio/io/dbget.rb                                |  194 --
 lib/bio/io/ddbjrest.rb                             |  344 --
 lib/bio/io/ddbjxml.rb                              |  458 ---
 lib/bio/io/ebisoap.rb                              |  158 -
 lib/bio/io/ensembl.rb                              |  229 --
 lib/bio/io/fastacmd.rb                             |   16 -
 lib/bio/io/fetch.rb                                |  166 +-
 lib/bio/io/flatfile/buffer.rb                      |    9 +-
 lib/bio/io/higet.rb                                |   73 -
 lib/bio/io/hinv.rb                                 |    5 +-
 lib/bio/io/keggapi.rb                              |  363 ---
 lib/bio/io/ncbirest.rb                             |   49 +-
 lib/bio/io/ncbisoap.rb                             |  156 -
 lib/bio/io/pubmed.rb                               |  157 +-
 lib/bio/io/soapwsdl.rb                             |  119 -
 lib/bio/io/togows.rb                               |   43 +-
 lib/bio/map.rb                                     |    2 +-
 lib/bio/pathway.rb                                 |    2 +-
 lib/bio/sequence/compat.rb                         |    2 +-
 lib/bio/sequence/na.rb                             |   75 +-
 lib/bio/shell.rb                                   |    2 -
 lib/bio/shell/core.rb                              |   11 +-
 lib/bio/shell/interface.rb                         |    7 +-
 lib/bio/shell/irb.rb                               |    3 +-
 lib/bio/shell/plugin/entry.rb                      |    5 +-
 lib/bio/shell/plugin/keggapi.rb                    |  181 --
 lib/bio/shell/plugin/seq.rb                        |   13 +-
 lib/bio/shell/plugin/soap.rb                       |   87 -
 lib/bio/shell/setup.rb                             |    3 +-
 lib/bio/tree.rb                                    |    4 +-
 lib/bio/util/contingency_table.rb                  |    2 -
 .../restriction_enzyme/range/sequence_range.rb     |    4 +-
 lib/bio/util/sirna.rb                              |   92 +-
 lib/bio/version.rb                                 |   17 +-
 metadata.yml                                       | 2086 ++++--------
 sample/benchmark_clustalw_report.rb                |   47 +
 sample/biofetch.rb                                 |  399 ++-
 sample/dbget                                       |   37 -
 sample/demo_ddbjxml.rb                             |  212 --
 sample/demo_kegg_taxonomy.rb                       |   92 -
 sample/demo_keggapi.rb                             |  502 ---
 sample/psortplot_html.rb                           |  214 --
 setup.rb                                           |   13 +-
 test/data/clustalw/example1-seqnos.aln             |   58 +
 test/network/bio/appl/blast/test_remote.rb         |   16 +-
 test/network/bio/appl/test_blast.rb                |   12 -
 test/network/bio/io/test_ddbjrest.rb               |   47 -
 test/network/bio/io/test_ensembl.rb                |  230 --
 test/network/bio/io/test_pubmed.rb                 |   49 +
 test/network/bio/io/test_soapwsdl.rb               |   53 -
 test/network/bio/io/test_togows.rb                 |    1 -
 test/network/bio/test_command.rb                   |   67 +-
 test/unit/bio/appl/bl2seq/test_report.rb           |    1 -
 test/unit/bio/appl/blast/test_report.rb            |  158 +-
 test/unit/bio/appl/clustalw/test_report.rb         |  118 +-
 test/unit/bio/appl/sim4/test_report.rb             |   63 +-
 test/unit/bio/appl/test_blast.rb                   |    4 +-
 test/unit/bio/db/embl/test_embl.rb                 |    1 -
 test/unit/bio/db/embl/test_embl_rel89.rb           |    1 -
 .../db/embl/{test_sptr.rb => test_uniprotkb.rb}    |  226 +-
 ...prot_new_part.rb => test_uniprotkb_new_part.rb} |   22 +-
 test/unit/bio/db/genbank/test_genbank.rb           |   14 +-
 test/unit/bio/db/pdb/test_pdb.rb                   |   22 +-
 test/unit/bio/db/test_fasta.rb                     |   42 +-
 test/unit/bio/db/test_fastq.rb                     |   18 +-
 test/unit/bio/db/test_gff.rb                       |    4 +-
 test/unit/bio/db/test_phyloxml.rb                  |   60 +-
 test/unit/bio/db/test_phyloxml_writer.rb           |    4 +-
 test/unit/bio/io/flatfile/test_autodetection.rb    |    3 +-
 test/unit/bio/io/flatfile/test_buffer.rb           |    8 +-
 test/unit/bio/io/flatfile/test_splitter.rb         |    2 +-
 test/unit/bio/io/test_ddbjxml.rb                   |   81 -
 test/unit/bio/io/test_ensembl.rb                   |  111 -
 test/unit/bio/io/test_soapwsdl.rb                  |   33 -
 test/unit/bio/io/test_togows.rb                    |    5 +-
 test/unit/bio/sequence/test_dblink.rb              |    2 +-
 test/unit/bio/sequence/test_na.rb                  |    4 +-
 test/unit/bio/test_alignment.rb                    |    3 +-
 test/unit/bio/test_command.rb                      |    9 +-
 test/unit/bio/test_db.rb                           |    6 +-
 test/unit/bio/test_pathway.rb                      |   35 +-
 test/unit/bio/util/test_sirna.rb                   |   44 +-
 157 files changed, 7491 insertions(+), 15941 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 3af125d..0788d10 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,56 +1,62 @@
 language: ruby
 rvm:
+  - 2.1.6
+  - 2.0.0
   - 1.9.3
-  - 1.8.7
-  - rbx-18mode
+env:
+  - TESTOPTS=-v
 gemfile:
   - gemfiles/Gemfile.travis-ruby1.9
-  - gemfiles/Gemfile.travis-ruby1.8
 before_install:
+  - gem update --system 2.1.11
+  - gem --version
   - mkdir /tmp/bioruby
   - ruby gemfiles/modify-Gemfile.rb
   - ruby gemfiles/prepare-gemspec.rb
 matrix:
   include:
-    - rvm: 1.9.2
-      gemfile: gemfiles/Gemfile.travis-ruby1.9
-    - rvm: rbx-19mode
-      gemfile: gemfiles/Gemfile.travis-jruby1.9
-    - rvm: jruby-19mode
-      gemfile: gemfiles/Gemfile.travis-jruby1.9
-      env: TMPDIR=/tmp/bioruby
-    - rvm: 1.9.3
-      gemfile: gemfiles/Gemfile.travis-ruby1.9
-      env: BIORUBY_RAKE_DEFAULT_TASK=tar-integration-test
-    - rvm: 1.9.3
-      gemfile: gemfiles/Gemfile.travis-ruby1.9
-      env: BIORUBY_RAKE_DEFAULT_TASK=gem-test
-    - rvm: jruby-18mode
-      gemfile: gemfiles/Gemfile.travis-jruby1.8
-      env: TMPDIR=/tmp/bioruby BIORUBY_RAKE_DEFAULT_TASK=tar-integration-test
+    - rvm: 1.8.7
+      gemfile: gemfiles/Gemfile.travis-ruby1.8
+      env: TESTOPTS=-v
+    - rvm: rbx-2.2.3
+      gemfile: gemfiles/Gemfile.travis-rbx
+      env: TESTOPTS=-v
     - rvm: jruby-18mode
       gemfile: gemfiles/Gemfile.travis-jruby1.8
-      env: TMPDIR=/tmp/bioruby BIORUBY_RAKE_DEFAULT_TASK=gem-test
-  exclude:
-    - rvm: 1.8.7
+      env: TMPDIR=/tmp/bioruby TESTOPTS=-v
+    - rvm: jruby-19mode
+      gemfile: gemfiles/Gemfile.travis-jruby1.9
+      env: TMPDIR=/tmp/bioruby TESTOPTS=-v
+    - rvm: 2.2.2
+      gemfile: gemfiles/Gemfile.travis-ruby2.2
+    - rvm: 2.1.6
       gemfile: gemfiles/Gemfile.travis-ruby1.9
-    - rvm: 1.9.3
-      gemfile: gemfiles/Gemfile.travis-ruby1.8
-    - rvm: rbx-18mode
+      env: BIORUBY_RAKE_DEFAULT_TASK=tar-integration-test TESTOPTS=-v
+    - rvm: 2.1.6
       gemfile: gemfiles/Gemfile.travis-ruby1.9
-  allow_failures:
-    - rvm: rbx-19mode
+      env: BIORUBY_RAKE_DEFAULT_TASK=gem-test TESTOPTS=-v
+    - rvm: jruby-19mode
       gemfile: gemfiles/Gemfile.travis-jruby1.9
+      env: TMPDIR=/tmp/bioruby BIORUBY_RAKE_DEFAULT_TASK=tar-integration-test TESTOPTS=-v
     - rvm: jruby-19mode
       gemfile: gemfiles/Gemfile.travis-jruby1.9
-      env: TMPDIR=/tmp/bioruby
-    - rvm: jruby-18mode
-      gemfile: gemfiles/Gemfile.travis-jruby1.8
-      env: TMPDIR=/tmp/bioruby BIORUBY_RAKE_DEFAULT_TASK=tar-integration-test
+      env: TMPDIR=/tmp/bioruby BIORUBY_RAKE_DEFAULT_TASK=gem-test TESTOPTS=-v
+  allow_failures:
+    - rvm: rbx-2.2.3
+      gemfile: gemfiles/Gemfile.travis-rbx
+      env: TESTOPTS=-v
     - rvm: jruby-18mode
       gemfile: gemfiles/Gemfile.travis-jruby1.8
-      env: TMPDIR=/tmp/bioruby BIORUBY_RAKE_DEFAULT_TASK=gem-test
-
+      env: TMPDIR=/tmp/bioruby TESTOPTS=-v
+    - rvm: jruby-19mode
+      gemfile: gemfiles/Gemfile.travis-jruby1.9
+      env: TMPDIR=/tmp/bioruby TESTOPTS=-v
+    - rvm: jruby-19mode
+      gemfile: gemfiles/Gemfile.travis-jruby1.9
+      env: TMPDIR=/tmp/bioruby BIORUBY_RAKE_DEFAULT_TASK=tar-integration-test TESTOPTS=-v
+    - rvm: jruby-19mode
+      gemfile: gemfiles/Gemfile.travis-jruby1.9
+      env: TMPDIR=/tmp/bioruby BIORUBY_RAKE_DEFAULT_TASK=gem-test TESTOPTS=-v
 
 # uncomment this line if your project needs to run something other than `rake`:
 # script: bundle exec rspec spec
diff --git a/BSDL b/BSDL
new file mode 100644
index 0000000..a009cae
--- /dev/null
+++ b/BSDL
@@ -0,0 +1,22 @@
+Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/COPYING b/COPYING
index 97482b3..dbe19f5 100644
--- a/COPYING
+++ b/COPYING
@@ -1,6 +1,6 @@
 BioRuby is copyrighted free software by Toshiaki Katayama <k at bioruby.org>.
-You can redistribute it and/or modify it under either the terms of the GPL
-version 2 (see the file GPL), or the conditions below:
+You can redistribute it and/or modify it under either the terms of the
+2-clause BSDL (see the file BSDL), or the conditions below:
 
   1. You may make and give away verbatim copies of the source form of the
      software without restriction, provided that you duplicate all of the
diff --git a/COPYING.ja b/COPYING.ja
index aa2a163..e50d01c 100644
--- a/COPYING.ja
+++ b/COPYING.ja
@@ -1,51 +1,51 @@
-$BK\%W%m%0%i%`$O%U%j!<%=%U%H%&%'%"$G$9!%(BGPL (the GNU General
-Public License)$B%P!<%8%g%s(B2$B$^$?$O0J2<$K<($9>r7o$GK\%W%m%0%i%`(B
-$B$r:FG[I[$G$-$^$9!%(BGPL$B$K$D$$$F$O(BGPL$B%U%!%$%k$r;2>H$7$F2<$5$$!%(B
+本プログラムはフリーソフトウェアです.2-clause BSDL
+または以下に示す条件で本プログラムを再配布できます
+2-clause BSDLについてはBSDLファイルを参照して下さい.
 
-  1. $BJ#@=$O@)8B$J$/<+M3$G$9!%(B
+  1. 複製は制限なく自由です.
 
-  2. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$N%=!<%9$r(B
-     $B<+M3$KJQ99$G$-$^$9!%(B
+  2. 以下の条件のいずれかを満たす時に本プログラムのソースを
+     自由に変更できます.
 
-     (a) $B%M%C%H%K%e!<%:$K%]%9%H$7$?$j!$:n<T$KJQ99$rAwIU$9$k(B
-         $B$J$I$NJ}K!$G!$JQ99$r8x3+$9$k!%(B
+     (a) ネットニューズにポストしたり,作者に変更を送付する
+         などの方法で,変更を公開する.
 
-     (b) $BJQ99$7$?K\%W%m%0%i%`$r<+J,$N=jB0$9$kAH?%FbIt$@$1$G(B
-         $B;H$&!%(B
+     (b) 変更した本プログラムを自分の所属する組織内部だけで
+         使う.
 
-     (c) $BJQ99E@$rL@<($7$?$&$(!$%=%U%H%&%'%"$NL>A0$rJQ99$9$k!%(B
-         $B$=$N%=%U%H%&%'%"$rG[I[$9$k;~$K$OJQ99A0$NK\%W%m%0%i(B
-         $B%`$bF1;~$KG[I[$9$k!%$^$?$OJQ99A0$NK\%W%m%0%i%`$N%=!<(B
-         $B%9$NF~<jK!$rL@<($9$k!%(B
+     (c) 変更点を明示したうえ,ソフトウェアの名前を変更する.
+         そのソフトウェアを配布する時には変更前の本プログラ
+         ムも同時に配布する.または変更前の本プログラムのソー
+         スの入手法を明示する.
 
-     (d) $B$=$NB>$NJQ99>r7o$r:n<T$H9g0U$9$k!%(B
+     (d) その他の変更条件を作者と合意する.
 
-  3. $B0J2<$N>r7o$N$$$:$l$+$rK~$?$9;~$KK\%W%m%0%i%`$r%3%s%Q%$(B
-     $B%k$7$?%*%V%8%'%/%H%3!<%I$d<B9T7A<0$G$bG[I[$G$-$^$9!%(B
+  3. 以下の条件のいずれかを満たす時に本プログラムをコンパイ
+     ルしたオブジェクトコードや実行形式でも配布できます.
 
-     (a) $B%P%$%J%j$r<u$1<h$C$??M$,%=!<%9$rF~<j$G$-$k$h$&$K!$(B
-         $B%=!<%9$NF~<jK!$rL@<($9$k!%(B
+     (a) バイナリを受け取った人がソースを入手できるように,
+         ソースの入手法を明示する.
 
-     (b) $B5!3#2DFI$J%=!<%9%3!<%I$rE:IU$9$k!%(B
+     (b) 機械可読なソースコードを添付する.
 
-     (c) $BJQ99$r9T$C$?%P%$%J%j$OL>A0$rJQ99$7$?$&$(!$%*%j%8%J(B
-         $B%k$N%=!<%9%3!<%I$NF~<jK!$rL@<($9$k!%(B
+     (c) 変更を行ったバイナリは名前を変更したうえ,オリジナ
+         ルのソースコードの入手法を明示する.
 
-     (d) $B$=$NB>$NG[I[>r7o$r:n<T$H9g0U$9$k!%(B
+     (d) その他の配布条件を作者と合意する.
 
-  4. $BB>$N%W%m%0%i%`$X$N0zMQ$O$$$+$J$kL\E*$G$"$l<+M3$G$9!%$?(B
-     $B$@$7!$K\%W%m%0%i%`$K4^$^$l$kB>$N:n<T$K$h$k%3!<%I$O!$$=(B
-     $B$l$>$l$N:n<T$N0U8~$K$h$k@)8B$,2C$($i$l$k>l9g$,$"$j$^$9!%(B
+  4. 他のプログラムへの引用はいかなる目的であれ自由です.た
+     だし,本プログラムに含まれる他の作者によるコードは,そ
+     れぞれの作者の意向による制限が加えられる場合があります.
 
-     $B$=$l$i%U%!%$%k$N0lMw$H$=$l$>$l$NG[I[>r7o$J$I$KIU$$$F$O(B
-     LEGAL$B%U%!%$%k$r;2>H$7$F$/$@$5$$!%(B
+     それらファイルの一覧とそれぞれの配布条件などに付いては
+     LEGALファイルを参照してください.
 
-  5. $BK\%W%m%0%i%`$X$NF~NO$H$J$k%9%/%j%W%H$*$h$S!$K\%W%m%0%i(B
-     $B%`$+$i$N=PNO$N8"Mx$OK\%W%m%0%i%`$N:n<T$G$O$J$/!$$=$l$>(B
-     $B$l$NF~=PNO$r at 8@.$7$??M$KB0$7$^$9!%$^$?!$K\%W%m%0%i%`$K(B
-     $BAH$_9~$^$l$k$?$a$N3HD%%i%$%V%i%j$K$D$$$F$bF1MM$G$9!%(B
+  5. 本プログラムへの入力となるスクリプトおよび,本プログラ
+     ムからの出力の権利は本プログラムの作者ではなく,それぞ
+     れの入出力を生成した人に属します.また,本プログラムに
+     組み込まれるための拡張ライブラリについても同様です.
 
-  6. $BK\%W%m%0%i%`$OL5J]>Z$G$9!%:n<T$OK\%W%m%0%i%`$r%5%]!<%H(B
-     $B$9$k0U;V$O$"$j$^$9$,!$%W%m%0%i%`<+?H$N%P%0$"$k$$$OK\%W(B
-     $B%m%0%i%`$N<B9T$J$I$+$iH/@8$9$k$$$+$J$kB;32$KBP$7$F$b at U(B
-     $BG$$r;}$A$^$;$s!%(B
+  6. 本プログラムは無保証です.作者は本プログラムをサポート
+     する意志はありますが,プログラム自身のバグあるいは本プ
+     ログラムの実行などから発生するいかなる損害に対しても責
+     任を持ちません.
diff --git a/ChangeLog b/ChangeLog
index db89148..9e6924c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,1540 +1,2919 @@
-commit 960497899e75c0fe36ef662ec4a0159559c836b1
+commit 01ac93ca3b341716c85c571f1194834db0a68e52
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 25 03:41:51 2013 +0900
+Date:   Wed Jul 1 02:21:26 2015 +0900
 
-    regenerate bioruby.gemspec with rake regemspec
+    update ChangeLog by rake rechangelog
 
- bioruby.gemspec |    4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ ChangeLog |   28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
 
-commit e8fa160e158970259d915abc6113cb425537b8d6
+commit cac63ff501df6a71afead77175db9fb491c2985b
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 25 03:38:17 2013 +0900
+Date:   Wed Jul 1 01:31:21 2015 +0900
 
-    Bio::BIORUBY_EXTRA_VERSION set to ".0001" (Release version with patches)
+    .travis.yml: use Ruby 2.1.6 for tar and gem integration tests
 
- lib/bio/version.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ .travis.yml |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit 9d84d408479aa261b239e3f371f60262782bfb76
+commit 5318c99249f34dacc788b82c658ea0e256770db0
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 25 03:37:55 2013 +0900
+Date:   Wed Jul 1 00:43:39 2015 +0900
 
-    Added release notes for 1.4.3.0001 release
+    known issues added about new BLAST XML format and BLAST+ text format
 
- RELEASE_NOTES.rdoc |   18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
+ KNOWN_ISSUES.rdoc  |   11 +++++++++++
+ RELEASE_NOTES.rdoc |   11 +++++++++++
+ 2 files changed, 22 insertions(+)
 
-commit 1d3530cd1424f2cc0123057424b5c892f45dc93b
+commit b61d8df0300ef366539e1154c9a2dac2f1f4ff18
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 25 02:46:32 2013 +0900
+Date:   Tue Jun 30 23:57:01 2015 +0900
 
-    Ruby 2.0 support: not to add ChangeLog and LEGAL to rdoc_files
-    
-     * Ruby 2.0 support: not to add ChangeLog and LEGAL to rdoc_files.
-       Because ChangeLog is not rdoc format, rdoc bundled with Ruby 2.0
-       raises error during parsing.
+    update ChangeLog with rake rechangelog
 
- bioruby.gemspec.erb |    4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ ChangeLog |   47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 47 insertions(+)
 
-commit be72602cb42e6d09d465b9636257335dccb278a4
+commit 75cf6c31c57239b2e39a171e536ad5dddcaec94a
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jan 10 01:27:03 2013 +0900
+Date:   Tue Jun 30 23:56:08 2015 +0900
 
-    Ruby 2.0 support: Set script encoding to US-ASCII for gff.rb.
+    regenerate bioruby.gemspec with rake regemspec
 
- lib/bio/db/gff.rb |    1 +
+ bioruby.gemspec |    1 +
  1 file changed, 1 insertion(+)
 
-commit 091f6951d23c5ed2418981b2cf94733b1ee7a8b1
+commit 608850beb33f3f7333f05307202b766adb350eb9
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Oct 1 21:11:14 2012 +0900
+Date:   Tue Jun 30 23:54:59 2015 +0900
 
-    Bug fix: parse error when subject sequence contains spaces
-    
-     * Bug fix: parse error when subject sequence contains spaces.
-       Thanks to Edward Rice who reports the bug. (Bug #3385)
-       (https://redmine.open-bio.org/issues/3385)
+    description about updating of Ruby's License
 
- lib/bio/appl/blast/format0.rb |   38 +++++++++++++++++++-------------------
- 1 file changed, 19 insertions(+), 19 deletions(-)
+ RELEASE_NOTES.rdoc |    9 +++++++++
+ 1 file changed, 9 insertions(+)
 
-commit ad0d7a1712d8b02358763233d38e67a0fff54917
+commit f54bcfc20d20935db4e342e5988c0b7f59c131b3
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Aug 22 00:18:14 2012 +0900
+Date:   Tue Jun 30 23:16:51 2015 +0900
 
-    BioRuby 1.4.3 is re-released
+    BSDL is referred in COPYING and COPYING.ja
 
- ChangeLog |    9 +++++++++
- 1 file changed, 9 insertions(+)
+ BSDL |   22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+ create mode 100644 BSDL
 
-commit 51ab2dec144c99a14ca9009c7b589b500f1cad5f
+commit d1cbfb699259fd57af02181f4374d562dda3abe1
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Aug 22 00:12:47 2012 +0900
+Date:   Tue Jun 30 23:14:42 2015 +0900
 
-    Preparation to re-release BioRuby 1.4.3
+    changes of Ruby's License is reflected.
 
- ChangeLog |   22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
+ COPYING    |    4 ++--
+ COPYING.ja |   72 ++++++++++++++++++++++++++++++------------------------------
+ 2 files changed, 38 insertions(+), 38 deletions(-)
 
-commit 5ff159d12252393ff04afe52b59a315d15c63d18
+commit 2d9de9a0e2abe7fa9f193e54af0cbfc24bf2c37b
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Aug 22 00:00:40 2012 +0900
+Date:   Tue Jun 30 22:50:37 2015 +0900
 
-    Bug fix: bin/bioruby failed to save object
-    
-     * Bug fix: bin/bioruby: Failed to save object with error message
-       "can't convert Symbol into String" on Ruby 1.9.
+    ChangeLog is regenerated by using "rake rechangelog"
 
- RELEASE_NOTES.rdoc    |    2 ++
- lib/bio/shell/core.rb |    1 +
- 2 files changed, 3 insertions(+)
+ ChangeLog | 2786 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 2780 insertions(+), 6 deletions(-)
 
-commit 74c6ce09413e7ddde1431d74e10cc9c4cdbb95ba
+commit 70665a69a79d569d7bb37ef6d8c238534e6dae3a
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Aug 21 22:35:18 2012 +0900
+Date:   Tue Jun 30 22:49:55 2015 +0900
 
-    BioRuby 1.4.3 is released.
+    KNOWN_ISSUES.rdoc: change ruby versions and add descriptions
 
- ChangeLog |   21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
+ KNOWN_ISSUES.rdoc |   14 +++++++++-----
+ 1 file changed, 9 insertions(+), 5 deletions(-)
 
-commit 61af85b6cfc7bb1f3668ed68232113eb0751e7ea
+commit 1054106f93b973b5a92f993c5b83b1444f96fffe
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Aug 21 22:33:30 2012 +0900
+Date:   Tue Jun 30 22:48:51 2015 +0900
 
-    preparation for BioRuby 1.4.3 release version
+    prepare to release BioRuby 1.5.0
 
  bioruby.gemspec    |    2 +-
  lib/bio/version.rb |    2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
-commit 1ec68beac42a06e9ef0a9c953650ef4d599e4e65
+commit 0f150586904f7e423455615313992ccf77d7e123
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Aug 21 20:53:04 2012 +0900
+Date:   Tue Jun 30 22:44:58 2015 +0900
 
-    ChangeLog modified; release candidate version 1.4.3-rc2
+    RELEASE_NOTES.rdoc: update many
 
- ChangeLog          | 1353 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- bioruby.gemspec    |    2 +-
- lib/bio/version.rb |    4 +-
- 3 files changed, 1356 insertions(+), 3 deletions(-)
+ RELEASE_NOTES.rdoc |  151 +++++++++++++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 132 insertions(+), 19 deletions(-)
 
-commit e0d570b237a8b96ae0c1e7b1ad72c7333be07c52
+commit 2924ca0b977da13d42f232f880fd2df0b2995677
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Aug 20 20:35:58 2012 +0900
+Date:   Tue Jun 30 21:55:52 2015 +0900
 
-    version changed to 1.4.3-rc1
+    Bug fix: Bio::UniProtKB#gene_name should not raise NoMethodError
+    
+     * Bug fix: Bio::UniProtKB#gene_name raised NoMethodError when
+       gene_names method returns nil. It should return nil.
+       Thanks to Jose Irizarry who reports and sends suggested fix.
+       (https://github.com/bioruby/bioruby/pull/83 )
 
- bioruby.gemspec    |    3 ++-
- lib/bio/version.rb |    2 +-
- 2 files changed, 3 insertions(+), 2 deletions(-)
+ lib/bio/db/embl/uniprotkb.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 511c81ba67f7b8dc9cff85cf68db654d2feaf52e
+commit 9bf9022007a0ff31a870b1ea08e423aebc487c17
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Aug 20 20:17:14 2012 +0900
+Date:   Tue Jun 30 18:45:51 2015 +0900
 
-    document JRUBY-5678 (resolved) and related issue with the workaround.
+    regenerate bioruby.gemspec with rake regemspec
 
- KNOWN_ISSUES.rdoc  |    9 +++++++++
- RELEASE_NOTES.rdoc |    9 +++++++++
- 2 files changed, 18 insertions(+)
+ bioruby.gemspec |    1 +
+ 1 file changed, 1 insertion(+)
 
-commit 2fdd7a3b3555a33dead31181c9526af22f24916f
+commit a151e51a44b3dd93e5d075d71954f639eaec339e
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Aug 20 19:44:39 2012 +0900
+Date:   Tue Jun 30 18:10:55 2015 +0900
 
-    update recommended Ruby versions and the year in copyright lines
+    update docs; change recommended Ruby versions
 
- README.rdoc |    7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
+ README.rdoc |    9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
 
-commit b156227749e5ada74330e837c9ce48a16e6a6a2f
+commit e86e745c8a6c666c446fe2f9f47818140999e2db
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Aug 20 19:16:25 2012 +0900
+Date:   Tue Jun 30 18:08:53 2015 +0900
 
-    Bug fix: Bio::EMBL#os raises error, with incompatible change
-    
-     * Bug fix: Bio::EMBL#os raises error. The bug is reported by
-       Marc P. Hoeppner in the BioRuby mailing list
-       (https://redmine.open-bio.org/issues/3294).
-     * Incompatible change: Bio::EMBL#os no longer splits the content with
-       comma, and it no longer raises error even if the OS line is not in
-       the "Genus species (name)" format. The changes may affect the parsing
-       of old EMBL files which contain two or more species names in an OS line.
-     * Unit tests are modified to catch up the above incompatible changes.
+    delete description about SOAP4R
 
- RELEASE_NOTES.rdoc                       |   14 ++++++
- lib/bio/db/embl/embl.rb                  |   74 ++++++++++++++++++++++++++++++
- test/unit/bio/db/embl/test_embl.rb       |    9 +---
- test/unit/bio/db/embl/test_embl_rel89.rb |    9 +---
- 4 files changed, 92 insertions(+), 14 deletions(-)
+ README.rdoc |    5 -----
+ 1 file changed, 5 deletions(-)
 
-commit 31c8b4cb6ce2364aacee8137ddec3aa5f7d2d0d8
+commit 7e4bfb6b3757872691487b080bfd87363a4f9480
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Aug 20 19:04:50 2012 +0900
+Date:   Tue Jun 30 03:22:35 2015 +0900
 
-    Workaround for jruby-1.7.0.preview2 bugs JRUBY-6195, JRUBY-6818
+    .travis.yml: test/unit no longer bundled with Ruby 2.2
     
-     * Workaroud for jruby-1.7.0.preview2 bugs JRUBY-6195 and JRUBY-6818.
-     * Refactoring of call_command_popen: split _call_command_popen_ruby18
-       and _call_command_popen_ruby19, add _call_command_popen_jruby19.
-       Note that _call_command_popen_jruby19 will be removed in the future
-       after the bugs are fixed.
+     * For Ruby 2.2, use a new Gemfile named Gemfile.travis-ruby2.2
+       that include 'gem "test-unit"' line because test/unit have been
+       provided by bundled gem since Ruby 2.2.
 
- lib/bio/command.rb |   98 ++++++++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 88 insertions(+), 10 deletions(-)
+ .travis.yml                     |    7 ++++---
+ gemfiles/Gemfile.travis-ruby2.2 |    9 +++++++++
+ 2 files changed, 13 insertions(+), 3 deletions(-)
+ create mode 100644 gemfiles/Gemfile.travis-ruby2.2
 
-commit 05f51fa2e871e71c2b20559eb05e456768a4f7d6
+commit cac85ca215ed781c80d49a5bf3d5d37d808c783b
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat Aug 18 00:32:31 2012 +0900
+Date:   Tue Jun 30 02:51:16 2015 +0900
 
-    New default etc/bioinformatics/seqdatabase.ini
+    bump up version to 1.5.0-dev; simplify the versioning rules
     
-     * New default etc/bioinformatics/seqdatabase.ini, with currently
-       available services.
+     * Bump up version to 1.5.0-dev (1.5.0.20150630)
+     * Simplify the versioning rules.
+     * We will adopt the Semantic Versioning since BioRuby 1.5.1.
 
- etc/bioinformatics/seqdatabase.ini |   27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
- create mode 100644 etc/bioinformatics/seqdatabase.ini
+ bioruby.gemspec     |    2 +-
+ bioruby.gemspec.erb |   21 ++++-----------------
+ lib/bio/version.rb  |   17 ++++++++---------
+ 3 files changed, 13 insertions(+), 27 deletions(-)
 
-commit a4264cc3667b98289c09efc7ccba9c8e86f6d89c
+commit 1a24fb6840932499be833b5ec3bb36184b1334a1
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat Aug 18 00:31:10 2012 +0900
+Date:   Tue Jun 30 02:14:01 2015 +0900
 
-    etc/bioinformatics/seqdatabase.ini is moved to sample/
+    Bug fix: update Bio::Hinv::BASE_URI
+    
+     * Bug fix: update Bio::Hinv::BASE_URI to follow the server URI change.
+     * Update official documentation URL.
 
- etc/bioinformatics/seqdatabase.ini |  210 ------------------------------------
- sample/seqdatabase.ini             |  210 ++++++++++++++++++++++++++++++++++++
- 2 files changed, 210 insertions(+), 210 deletions(-)
- delete mode 100644 etc/bioinformatics/seqdatabase.ini
- create mode 100644 sample/seqdatabase.ini
+ lib/bio/io/hinv.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
-commit 04b7a27b557576f5325b3ee420262922ab66ca3b
+commit a9a12fff70ca287aa098d1331a3146e2899cb709
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat Aug 18 00:30:38 2012 +0900
+Date:   Tue Jun 30 02:08:40 2015 +0900
 
-    known issue about http://bioruby.org/cgi-bin/biofetch.rb server down
+    delete $Id:$ line
 
- KNOWN_ISSUES.rdoc |    9 +++++++++
- 1 file changed, 9 insertions(+)
+ lib/bio/io/hinv.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 4a8193f7b91ff703c8f3dc6e6a6ae0c981a404e6
+commit 2bfa0f41969003f17c4b894b5279347616c8f187
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Aug 17 23:45:41 2012 +0900
+Date:   Tue Jun 30 01:58:01 2015 +0900
 
-    Update descriptions about JRuby and Rubinius bugs
+    delete sections about SOAP4R issues
 
- KNOWN_ISSUES.rdoc  |   14 ++++++++++----
- RELEASE_NOTES.rdoc |   14 ++++++++++----
- 2 files changed, 20 insertions(+), 8 deletions(-)
+ KNOWN_ISSUES.rdoc |   12 ------------
+ 1 file changed, 12 deletions(-)
 
-commit a2d8dd8ccebde84e91f82c59e531cc08fbf0f3fe
+commit 9dbd83aa00acc5f78b5da68f000c305da9f31b66
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Aug 17 17:19:22 2012 +0900
+Date:   Tue Jun 30 01:54:16 2015 +0900
 
-    Remove the suffix .rb in require, to avoid potential multiple loading.
+    remove commented-out lines of soap4r-ruby1.9
 
- test/unit/bio/db/fasta/test_defline.rb        |    2 +-
- test/unit/bio/db/genbank/test_genpept.rb      |    2 +-
- test/unit/bio/db/kegg/test_drug.rb            |    2 +-
- test/unit/bio/db/kegg/test_genome.rb          |    2 +-
- test/unit/bio/db/kegg/test_glycan.rb          |    2 +-
- test/unit/bio/util/test_restriction_enzyme.rb |    2 +-
- 6 files changed, 6 insertions(+), 6 deletions(-)
+ gemfiles/Gemfile.travis-jruby1.9 |    3 ---
+ gemfiles/Gemfile.travis-rbx      |    3 ---
+ gemfiles/Gemfile.travis-ruby1.9  |    3 ---
+ 3 files changed, 9 deletions(-)
 
-commit 1d2e8b02db3699c2cd4f4890abc078ffd2b503aa
-Author: Ben J. Woodcroft <donttrustben near gmail.com>
-Date:   Wed Aug 8 09:41:20 2012 +1000
+commit 14d2f3e2fa15f94faeff4d28c957f581461eac82
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Jun 30 01:50:30 2015 +0900
 
-    fill in missing piece of documentation in FastaFormat
+    .travis.yml: update ruby versions, remove ruby 1.9.2
 
- lib/bio/db/fasta.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ .travis.yml |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit 83bf09d4d81803c8d06e0d45ca25e7c09016161c
+commit 89f9b1fe2332584b5d63b1539b8e470d853478a3
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Aug 8 00:08:26 2012 +0900
+Date:   Tue Jun 30 00:36:42 2015 +0900
 
-    RELEASE_NOTE.rdoc modified to reflect recent changes
+    about removal of Bio::SOAPWSDL, Bio::EBI::SOAP, Bio::HGC::HiGet
 
- RELEASE_NOTES.rdoc |  107 ++++++++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 92 insertions(+), 15 deletions(-)
+ RELEASE_NOTES.rdoc |   20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
 
-commit c3afb1eb98cf8777ee021624c3d2eab92b3543f2
+commit 29516d3d6d2f907f65822bcf4146e95785773a3a
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Aug 8 00:06:09 2012 +0900
+Date:   Tue Jun 30 00:50:47 2015 +0900
 
-    Descriptions about JRuby, Rubinius, DDBJ Web API, SOAP4R etc.
+    regenerate bioruby.gemspec with rake regemspec
 
- KNOWN_ISSUES.rdoc |   45 +++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 43 insertions(+), 2 deletions(-)
+ bioruby.gemspec |    6 ------
+ 1 file changed, 6 deletions(-)
 
-commit 01da7401a011aa519c43a021f89f6e7f769b4649
+commit 357a1afc5ef457326179142c163968aa5cd94864
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Aug 7 23:55:09 2012 +0900
+Date:   Tue Jun 30 00:49:42 2015 +0900
 
-    regenerate bioruby.gemspec with rake regemspec
+    not to load deleted file lib/bio/shell/plugin/soap.rb
 
- bioruby.gemspec |    3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ lib/bio/shell.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 9f70c27d9b75408fddae8384a2a09715b959dcb5
+commit 956e475da52ea17f1022493f589489a3e7c06f93
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Aug 7 23:51:56 2012 +0900
+Date:   Mon Jun 29 23:43:24 2015 +0900
 
-    improve documentation; version changed to 1.4.3-pre1
+    deleted lib/bio/shell/plugin/soap.rb
+    
+     * deleted lib/bio/shell/plugin/soap.rb because Bio::SOAPWSDL and
+       all SOAP client classes in BioRuby are removed.
 
- lib/bio/version.rb |   13 +++++++++++--
- 1 file changed, 11 insertions(+), 2 deletions(-)
+ lib/bio/shell/plugin/soap.rb |   50 ------------------------------------------
+ 1 file changed, 50 deletions(-)
+ delete mode 100644 lib/bio/shell/plugin/soap.rb
 
-commit c11f12c8aa56b8509cd082f3478e96374210e5d7
+commit 00acae3c3a8066891e08dc225eae2c22c3415191
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Aug 7 23:31:41 2012 +0900
+Date:   Mon Jun 29 23:41:20 2015 +0900
 
-    Remove autorequire which have been deprecated
+    not to load removed Bio::EBI::SOAP from lib/bio/io/ebisoap.rb
 
- bioruby.gemspec.erb |    1 -
- 1 file changed, 1 deletion(-)
+ lib/bio.rb |    4 ----
+ 1 file changed, 4 deletions(-)
 
-commit 7792b092033d2c819f2bcad0e206f27608481db5
-Author: Ben J Woodcroft <donttrustben at gmail.com>
-Date:   Mon Aug 6 09:40:55 2012 +1000
+commit d4844b38b5ddaec7ec15b56ef66f6930f0e6cfc0
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Jun 29 23:38:26 2015 +0900
 
-    flesh out FastaFormat documentation
+    remove Bio::EBI::SOAP (lib/bio/io/ebisoap.rb)
+    
+     * Bio::EBI::SOAP (lib/bio/io/ebisoap.rb) is removed because
+       Bio::SOAPWSDL is removed.
 
- lib/bio/db/fasta.rb         |  102 ++++++++++++++++++++++++-------------------
- lib/bio/db/fasta/defline.rb |    2 +-
- 2 files changed, 58 insertions(+), 46 deletions(-)
+ lib/bio/io/ebisoap.rb |  158 -------------------------------------------------
+ 1 file changed, 158 deletions(-)
+ delete mode 100644 lib/bio/io/ebisoap.rb
 
-commit 9a2fe67c247cdc7c9ddc9f8b8de771515ba76ac1
+commit 79b4705bac82fe17b12c649172a629d3de41cbdf
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Aug 3 22:36:12 2012 +0900
+Date:   Tue Jun 30 00:12:36 2015 +0900
 
-    .travis.yml: restructure matrix, add allow_failures lines
-    
-     * Add allow_failures lines
-     * Restructure matrix: remove many exclude lines and add some
-       include lines.
-     * When running jruby, Set TMPDIR to avoid known issue about
-       FileUtils#remove_entry_secure.
+    not to load removed Bio::SOAPWSDL from lib/bio/io/soapwsdl.rb
 
- .travis.yml |   52 ++++++++++++++++++----------------------------------
- 1 file changed, 18 insertions(+), 34 deletions(-)
+ lib/bio.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 553fd102c533c42675f93895557e3e00d36fd3e7
+commit 03ced6a70973557532517c70dac183775bd11fa7
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Aug 3 22:05:39 2012 +0900
+Date:   Mon Jun 29 23:59:28 2015 +0900
 
-    Improve tests for BLAST "-m 8" tabular format parser
+    remove Bio::SOAPWSDL (lib/bio/io/soapwsdl.rb) and tests
+    
+     * Bio::SOAPWSDL is removed because SOAP4R (SOAP/WSDL library in Ruby)
+       is no longer bundled with Ruby since Ruby 1.9. For Ruby 1.9 or later,
+       some gems of SOAP4R are available, but we think they are not
+       well-maintained. Moreover, many SOAP servers have been retired
+       (see previous commits). So, we give up maintaining Bio::SOAPWSDL.
 
- test/unit/bio/appl/blast/test_report.rb |  119 +++++++++++++++++++++++++++++++
- 1 file changed, 119 insertions(+)
+ lib/bio/io/soapwsdl.rb               |  119 ----------------------------------
+ test/network/bio/io/test_soapwsdl.rb |   53 ---------------
+ test/unit/bio/io/test_soapwsdl.rb    |   33 ----------
+ 3 files changed, 205 deletions(-)
+ delete mode 100644 lib/bio/io/soapwsdl.rb
+ delete mode 100644 test/network/bio/io/test_soapwsdl.rb
+ delete mode 100644 test/unit/bio/io/test_soapwsdl.rb
 
-commit 3e1c062dbc168bd558ca8408a6da115aa570f3a7
+commit d927652e9f5d241e3c1b13b7d760f5a190b72e50
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Aug 3 22:05:07 2012 +0900
+Date:   Mon Jun 29 23:35:38 2015 +0900
 
-    Improve test and suppress warning: assigned but unused variable
+    delete old comment-out lines about Bio::DDBJ::XML
 
- test/unit/bio/io/flatfile/test_buffer.rb |    1 +
- 1 file changed, 1 insertion(+)
+ lib/bio.rb |    5 -----
+ 1 file changed, 5 deletions(-)
 
-commit 7e29ce1f050e9e5b23299372d8ddfae781447dc3
+commit b995251bf96b8983def36e77bc94d6f0c0f2c78c
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Aug 3 22:02:21 2012 +0900
+Date:   Mon Jun 29 23:29:47 2015 +0900
 
-    Improve test and suppress warning: assigned but unused variable
+    do not load Bio::HGC::HiGet from deleted lib/bio/io/higet.rb
 
- test/unit/bio/db/test_newick.rb |    2 ++
- 1 file changed, 2 insertions(+)
+ lib/bio.rb |    4 ----
+ 1 file changed, 4 deletions(-)
 
-commit 1053b62069df74f336934e4ed0f3f217e4ad3312
+commit 6191020ed1e150f9e70de687375528a899fcf8ef
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Jul 27 13:56:53 2012 +0900
+Date:   Mon Jun 29 23:27:41 2015 +0900
 
-    Suppress warnings: shadowing outer local variable
-    
-     * Suppress warnings: shadowing outer local variable.
-       Thanks to Andrew Grimm: https://github.com/bioruby/bioruby/pull/64
+    remove lib/bio/io/higet.rb because of the server down for a long time
 
- lib/bio/db/gff.rb |    8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
+ lib/bio/io/higet.rb |   73 ---------------------------------------------------
+ 1 file changed, 73 deletions(-)
+ delete mode 100644 lib/bio/io/higet.rb
 
-commit e55794f65b3fb45c99e61d45220fe42f718426a3
+commit 5a527c5cdd513d72ad5817c66ac87e7613395e26
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 25 23:29:17 2012 +0900
+Date:   Sat Jun 27 02:33:46 2015 +0900
 
-    Suppress warnings in lib/bio/alignment.rb:2322
-    
-     * A space is inserted to suppress warnings in lib/bio/alignment.rb:2322.
-       * warning: :' after local variable is interpreted as binary operator
-       * warning: even though it seems like symbol literal
+    add/modify about removed features and incompatible changes
 
- lib/bio/alignment.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ RELEASE_NOTES.rdoc |   71 +++++++++++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 67 insertions(+), 4 deletions(-)
 
-commit 174a38ea8c4ecea70724bf6ec8e72b2e4259853b
+commit 1886314d2b8dd7d4b3e86c7b93134facd881127a
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 25 23:12:51 2012 +0900
+Date:   Sat Jun 27 01:24:36 2015 +0900
 
-    Modified to follow changes of GenomeNet BLAST site
+    regenerate bioruby.gemspec with rake regemspec
 
- lib/bio/appl/blast/genomenet.rb |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ bioruby.gemspec |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 93e24935840dcdec76984313719700134d69daf2
+commit 724e9c1c039dcc7fa19fb15de0313218a87f9868
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 25 15:21:32 2012 +0900
+Date:   Thu Jun 25 23:34:44 2015 +0900
 
-    suppress warnings: instance variable @comment not initialized
+    extconf.rb is deleted because no native extensions are included
+    
+     * extconf.rb is deleted because no native extensions are included in
+       BioRuby and to avoid potential confusions. Nowadays, extconf.rb is
+       usually used only for building native extensions. Use gem or
+       setup.rb to install BioRuby.
 
- lib/bio/db/gff.rb |    6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ extconf.rb |    2 --
+ 1 file changed, 2 deletions(-)
+ delete mode 100644 extconf.rb
 
-commit 0ad3818fedb707a26e849877bde1f8dab006b848
+commit d42a1cb1df17e0c11ca0407dc05e1271cd74a0d7
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 25 00:54:02 2012 +0900
+Date:   Wed Jun 24 22:29:28 2015 +0900
 
-    suppress warnings: URI.escape/URI.unescape is obsolete
+    Ruby 2.3 support: IO#close to closed IO object is allowed without error.
 
- lib/bio/db/gff.rb |   39 +++++++++++++++++++++++++++++++++------
- 1 file changed, 33 insertions(+), 6 deletions(-)
+ test/unit/bio/io/flatfile/test_buffer.rb |    8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
 
-commit 1263938742e7eeedb4a877aff7314e304320eca9
+commit 5ea39188ac3cc2609397b2d8864a2019ea6b93d2
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Jul 23 21:15:52 2012 +0900
+Date:   Fri May 1 23:42:39 2015 +0900
 
-    Added link to blastall options reference
+    s.license = "Ruby"
     
-     * Added link to blastall options reference.
-       Thanks to Gareth Rees who sent a pull request.
-       (https://github.com/bioruby/bioruby/pull/49)
+     * bioruby.gemspec.erb, bioruby.gemspec: s.license = "Ruby"
+       Thanks to Peter Cock who reports a patch.
+       (https://github.com/bioruby/bioruby/issues/101 )
 
- lib/bio/appl/blast/genomenet.rb |    5 +++++
- 1 file changed, 5 insertions(+)
+ bioruby.gemspec     |    1 +
+ bioruby.gemspec.erb |    1 +
+ 2 files changed, 2 insertions(+)
 
-commit 2ec5f4fd5abd0db7ec79ab3a9fd4adde7c9384a8
+commit 2b18ae005a592ea4ae7b632f7e658d4bbf153fd8
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Jul 23 17:26:45 2012 +0900
+Date:   Fri May 1 23:39:36 2015 +0900
 
-    Next bioruby release version will be 1.4.3.
+    remove deprecated Gem::Specification#rubyforge_project
 
- RELEASE_NOTES.rdoc |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ bioruby.gemspec     |    2 +-
+ bioruby.gemspec.erb |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
 
-commit 6cf1318507a5d82bb93acdfe33e96723a2e742fc
+commit 3a1d89bde9af44793c850b1cde950e3e3042fb8d
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Jul 23 17:25:35 2012 +0900
+Date:   Sat Mar 28 01:52:31 2015 +0900
 
-    fix typo
+    delete obsolete $Id:$ line
 
- README.rdoc |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ lib/bio/db/gff.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 2fd71cac315affe6e4d90b03dadac782f11553a5
+commit 165ebf29ba192c7a7e7f1633809d34966c2aeed1
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Jul 23 17:21:57 2012 +0900
+Date:   Sat Mar 28 01:51:47 2015 +0900
 
-    Bug fix: Genomenet remote blast: catch up changes of the server
+    suppress "character class has duplicated range" warnings
 
- lib/bio/appl/blast/genomenet.rb |   33 +++++++++++++++++++++++----------
- 1 file changed, 23 insertions(+), 10 deletions(-)
+ lib/bio/db/gff.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
-commit 69d9717da11b2fe81a8f840bbafcc5fbb0dbe688
+commit 715ee5aa3a797737d390365b2c202cc9a0effea5
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Jul 20 11:24:37 2012 +0900
+Date:   Sat Mar 28 01:37:35 2015 +0900
 
-    regenerate bioruby.gemspec with rake regemspec
+    delete obsolete $Id:$ line
 
- bioruby.gemspec |    2 ++
- 1 file changed, 2 insertions(+)
+ lib/bio/appl/sosui/report.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 9683da186579dbfa5da1bb1a32edc49cfdc026b8
+commit 71e34938f1228911657ebf00720712a17bc89ea9
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 18 23:19:33 2012 +0900
+Date:   Sat Mar 28 01:36:44 2015 +0900
 
-    Incompatible changes in Bio::KEGG::KGML are documented.
-    
-     * Incompatible changes in Bio::KEGG::KGML are documented.
-     * Next BioRuby release version will be 1.4.3.
+    comment out a line to suppress warning: assigned but unused variable - tmh
 
- RELEASE_NOTES.rdoc |   44 +++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 41 insertions(+), 3 deletions(-)
+ lib/bio/appl/sosui/report.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 6cab377ae760d1abfda06caafe4a04ecd549e21d
+commit fc518f3826bf60d70ebdbd70acdba512f1462c6f
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 18 22:56:00 2012 +0900
+Date:   Sat Mar 28 01:34:22 2015 +0900
 
-    Incompatible changes: Bio::KEGG::KGML::Reaction#substrates, products
-    
-     * Incompatible changes: Bio::KEGG::KGML::Reaction#substrates and
-       Bio::KEGG::KGML::Reaction#products are changed to return an array
-       containing Bio::KEGG::KGML::Substrate and Bio::KEGG::KGML::Product
-       objects, respectively. The aim of these changes are to store ID
-       of substrates and products that were thrown away in the previous
-       versions.
+    delete obsolete $Id:$ line
 
- lib/bio/db/kegg/kgml.rb            |   48 ++++++++++++++---
- test/unit/bio/db/kegg/test_kgml.rb |  104 +++++++++++++++++++++++++++++++++++-
- 2 files changed, 144 insertions(+), 8 deletions(-)
+ lib/bio/db/sanger_chromatogram/chromatogram.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 3cb1e09709d3c6b934028e28f9cafed149c9c751
+commit 516c467dfb245d99c4f7f77e251c77ffc5d274ca
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 18 22:16:46 2012 +0900
+Date:   Sat Mar 28 01:33:19 2015 +0900
 
-    Bio::KEGG::KGML#parse_* :use new attribute names
-    
-     * In Bio::KEGG::KGML#parse_* (private methods) new attribute method
-       names should be used instead of deprecated old names.
+    suppress warning: instance variable @aqual not initialized
 
- lib/bio/db/kegg/kgml.rb |   18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
+ lib/bio/db/sanger_chromatogram/chromatogram.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit c5ef981db6add98dc6778cd9809aff38a7071593
+commit 56d2e472196ba03ba6aa2a2bdf8d3de81272fa15
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 18 22:14:33 2012 +0900
+Date:   Sat Mar 28 01:30:26 2015 +0900
 
-    modified documentation for Bio::KEGG::KGML
+    delete obsolete $Id:$ line
 
- lib/bio/db/kegg/kgml.rb |   73 +++++++++++++++++++++++++++--------------------
- 1 file changed, 42 insertions(+), 31 deletions(-)
+ lib/bio/db/kegg/module.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 5416b84eaa37b5abf15f905586a5eee65c4026f0
+commit fb6b9b6578d08a87c1974e58f6d1f231b4ad52c0
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 18 15:01:58 2012 +0900
+Date:   Sat Mar 28 01:28:05 2015 +0900
 
-    New class Bio::KEGG::KGML::Graphics with tests for Bio::KEGG::KGML
-    
-     * New class Bio::KEGG::KGML::Graphics for storing a graphics element.
-       This fixes https://github.com/bioruby/bioruby/issues/51.
-     * Unit tests for Bio::KEGG::KGML are added with mock test data.
-     * Improve rdoc documentation for Bio::KEGG::KGML.
-     * New method Bio::KEGG::KGML::Reaction#id
-     * Attribute methods that were different from the KGML attribute
-       names are renamed to the names of the KGML attribute names.
-       Old method names are deprecated and are changed to aliases
-       and will be removed in the future.
-        * Bio::KEGG::KGML::Entry#id (old name: entry_id)
-        * Bio::KEGG::KGML::Entry#type (old name: category)
-        * Bio::KEGG::KGML::Entry#entry1 (old name: node1)
-        * Bio::KEGG::KGML::Entry#entry2 (old name: node2)
-        * Bio::KEGG::KGML::Entry#type (old name: rel)
-        * Bio::KEGG::KGML::Reaction#name (old name: entry_id)
-        * Bio::KEGG::KGML::Reaction#type (old name: direction)
-     * Following attribute methods are deprecated because two or more
-       graphics elements may exist in an entry element. They will be
-       removed in the future.
-        * Bio::KEGG::KGML::Entry#label
-        * Bio::KEGG::KGML::Entry#shape
-        * Bio::KEGG::KGML::Entry#x
-        * Bio::KEGG::KGML::Entry#y
-        * Bio::KEGG::KGML::Entry#width
-        * Bio::KEGG::KGML::Entry#height
-        * Bio::KEGG::KGML::Entry#fgcolor
-        * Bio::KEGG::KGML::Entry#bgcolor
+    suppress "instance variable @XXX not initialized" warnings
 
- lib/bio/db/kegg/kgml.rb            |  321 ++++++++++---
- test/data/KEGG/test.kgml           |   37 ++
- test/unit/bio/db/kegg/test_kgml.rb |  922 ++++++++++++++++++++++++++++++++++++
- 3 files changed, 1223 insertions(+), 57 deletions(-)
- create mode 100644 test/data/KEGG/test.kgml
- create mode 100644 test/unit/bio/db/kegg/test_kgml.rb
+ lib/bio/db/kegg/module.rb |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit e5478363ef6969ec14c4e09c2bd7c6d27c12cf5b
+commit 9f70b8d54abd9adbd50d46a3176f23f51af01cc7
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Jul 17 22:23:28 2012 +0900
+Date:   Sat Mar 28 01:25:50 2015 +0900
 
-    rdoc documentation for Bio::KEGG::KGML
+    delete obsolete $Id:$ line
 
- lib/bio/db/kegg/kgml.rb |  166 ++++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 157 insertions(+), 9 deletions(-)
+ lib/bio/db/kegg/pathway.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 4a97e7034cae835b3bbc8ef918b9c6c48910dec5
+commit 3844b9bb69e1f657c9b85bb20a4d209828b78b12
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 11 15:16:49 2012 +0900
+Date:   Sat Mar 28 01:25:03 2015 +0900
 
-    autoload should not be used for libraries outside bio
+    suppress "instance variable @XXX not initialized" warnings
 
- lib/bio/db/kegg/kgml.rb |    3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ lib/bio/db/kegg/pathway.rb |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit 338d4cd9913d70041349c5201f80f7a65e7135a6
+commit 8d857e246eacb6c9f8fbbceaa2fba7f1211e2b86
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Jul 6 00:50:01 2012 +0900
+Date:   Sat Mar 28 01:20:13 2015 +0900
 
-    remove unnecessary require "bio/db" in lib/bio/db/pdb.rb
+    delete obsolete $Id:$ line
 
- lib/bio/db/pdb.rb |    5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
+ lib/bio/db/fasta/defline.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 87c806a480fcacb0fc610c9669de19e4cb661a9c
+commit aadf285bc9e618b7813b42fd39e0b1966a04385c
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Jul 6 00:47:20 2012 +0900
+Date:   Sat Mar 28 01:18:43 2015 +0900
 
-    workaround to avoid circular require about Bio::PDB
+    suppress defline.rb:393: warning: character class has duplicated range
 
- lib/bio/db/pdb/atom.rb              |    5 +++--
- lib/bio/db/pdb/chain.rb             |    5 ++---
- lib/bio/db/pdb/chemicalcomponent.rb |    5 +++--
- lib/bio/db/pdb/model.rb             |    4 ++--
- lib/bio/db/pdb/pdb.rb               |    3 ++-
- lib/bio/db/pdb/residue.rb           |    4 ++--
- lib/bio/db/pdb/utils.rb             |   11 +++++++----
- 7 files changed, 21 insertions(+), 16 deletions(-)
+ lib/bio/db/fasta/defline.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 874f35c3930506fa029b419aa84677d1fea6681a
+commit 5297db11eb165885c4f15b914c2132c4122ae5a9
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Jul 6 00:24:24 2012 +0900
+Date:   Sat Mar 28 01:11:43 2015 +0900
 
-    regenerate bioruby.gemspec with rake regemspec
+    delete obsolete $Id:$ line
 
- bioruby.gemspec |    1 +
- 1 file changed, 1 insertion(+)
+ test/unit/bio/test_db.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 090d4edb5698135f87df450a963ef35a307349c4
+commit 20381ad45c674c0844a92891cb8ae71edaa6e333
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Jul 6 00:19:54 2012 +0900
+Date:   Sat Mar 28 01:08:04 2015 +0900
 
-    Tree output (formatter) methods moved to lib/bio/tree/output.rb
+    suppress "warning: instance variable @tagsize not initialized"
     
-     * To avoid circular require about bio/tree, phylogenetic tree output
-      (formatter) methods are moved to lib/bio/tree/output.rb.
+     * test/unit/bio/test_db.rb: to suppress "warning: instance variable
+       @tagsize not initialized" when executing Bio::TestDB#test_fetch,
+       @tagsize is set in setup.
 
- lib/bio/db/newick.rb   |  244 --------------------------------------------
- lib/bio/tree.rb        |    3 +-
- lib/bio/tree/output.rb |  264 ++++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 265 insertions(+), 246 deletions(-)
- create mode 100644 lib/bio/tree/output.rb
+ test/unit/bio/test_db.rb |    5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
 
-commit b3d12b63097a5141b029bbfb3690870cd1935a60
+commit d194edfc68bc10fde11f2cf014a59113ddc63b24
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Jul 6 00:18:44 2012 +0900
+Date:   Sat Mar 28 00:59:21 2015 +0900
 
-    Workaround to avoid circular require for Bio::Blast
+    delete obsolete $Id:$ line
 
- lib/bio/appl/bl2seq/report.rb     |    6 +++---
- lib/bio/appl/blast/ddbj.rb        |    3 ---
- lib/bio/appl/blast/format0.rb     |    3 +++
- lib/bio/appl/blast/genomenet.rb   |    2 --
- lib/bio/appl/blast/ncbioptions.rb |   11 ++++++++---
- lib/bio/appl/blast/remote.rb      |   11 ++++++-----
- lib/bio/appl/blast/report.rb      |   16 ++++++++++------
- lib/bio/appl/blast/rpsblast.rb    |    5 +++--
- lib/bio/appl/blast/wublast.rb     |    6 +++---
- 9 files changed, 36 insertions(+), 27 deletions(-)
+ lib/bio/data/codontable.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 8f6c906c7b0d65b93ebf0a1e1307259e6eab8465
+commit fac51f540dc7b33cd3ec51f97b5cb1ea587a461e
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jul 5 23:29:42 2012 +0900
+Date:   Sat Mar 28 00:57:28 2015 +0900
 
-    remove old require lines that are commented out
+    suppress warning: instance variable @reverse not initialized
 
- lib/bio/appl/blast/format0.rb |    5 -----
- 1 file changed, 5 deletions(-)
+ lib/bio/data/codontable.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit c632fbf2d0320860eadfacb196d51d80ed3a2b34
+commit 4e85315f03e374157f832c8435d0d2f43cd969af
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jul 5 23:16:49 2012 +0900
+Date:   Sat Mar 28 00:55:25 2015 +0900
 
-    Remove old workaround of strscan.so for Ruby 1.7 or earlier
+    delete obsolete $Id:$ line
 
- lib/bio/appl/blast/format0.rb |   18 +-----------------
- 1 file changed, 1 insertion(+), 17 deletions(-)
+ lib/bio/appl/iprscan/report.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit c81dce87f53d3ea7c7d2335e077fa609f2737779
+commit dafa7ce62378ff1605a295f8c620eb3a0a4a3c57
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jul 5 23:03:40 2012 +0900
+Date:   Sat Mar 28 00:54:37 2015 +0900
 
-    .travis.yml: include ruby 1.9.2 test
+    suppress warning: instance variable @ipr_ids not initialized
 
- .travis.yml |    2 ++
- 1 file changed, 2 insertions(+)
+ lib/bio/appl/iprscan/report.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 34709d114089c722b5da796028ffb91021761fdd
+commit 52b6073997c1b26fea9d4aae3154b37575944d4d
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jul 5 23:00:37 2012 +0900
+Date:   Sat Mar 28 00:50:43 2015 +0900
 
-    Remove old comment lines
+    suppress "method redefined" warnings and fill RDoc for some methods
 
- lib/bio/sequence/format.rb |    6 ------
- 1 file changed, 6 deletions(-)
+ lib/bio/db/phyloxml/phyloxml_elements.rb |   46 +++++++++++++++++++++++-------
+ 1 file changed, 35 insertions(+), 11 deletions(-)
 
-commit e0d5ed61e0101e2e72ad024dccd58c8c90def2b9
+commit 3d2e99fe993d76d5ece5bdbcd2e9541fa098c4dd
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jul 5 22:42:17 2012 +0900
+Date:   Sat Mar 28 00:36:51 2015 +0900
 
-    Finalizer for Bio::Command::Tmpdir is changed to suppress test failure
-    
-     * New class Bio::Command::Tmpdir::Remover for removing temporary
-       directory in finilizer. This class is BioRuby internal use only.
-       Users should not use this class.
-     * Finalizer for Bio::Command::Tmpdir is changed from a Proc object
-       to an instance of the Remover class.
-     * Test failure fix: In some environment, with Ruby 1.9.2,
-       test_output_embl(Bio::FuncTestSequenceOutputEMBL) was failed with
-       "<#<ArgumentError: wrong number of arguments (1 for 0)>" that was
-       raised in the finalizer callback of Bio::Command::Tmpdir. This
-       commit fixes the problem.
+    suppress "instance variable @XXX not initialized" warnings
 
- lib/bio/command.rb |   56 ++++++++++++++++++++++++++++------------------------
- 1 file changed, 30 insertions(+), 26 deletions(-)
+ lib/bio/db/phyloxml/phyloxml_elements.rb |   88 +++++++++++++++---------------
+ 1 file changed, 44 insertions(+), 44 deletions(-)
 
-commit cca98d1378ce66d6db84cc9c1beadd39ed0e0fee
+commit 02d4f98eae3934d8ad9c950b41132eb14653fe27
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jul 5 22:21:34 2012 +0900
+Date:   Thu Mar 26 20:33:35 2015 +0900
 
-    Workaround to avoid circular require and JRuby autoload bug
-    
-     * "require" lines are modified to avoid circular require.
-     * In files that would be required directly from outside bio/sequence
-       (aa.rb, adapter.rb, common.rb, compat.rb, dblink.rb, generic.rb,
-       na.rb, quality_score.rb, sequence_masker.rb), because of avoiding
-       potential mismatch of superclass and/or lack of some methods,
-       bio/sequence.rb is required when Bio::Sequence is not defined.
-     * workaround to avoid JRuby autoload bug
+    suppress warning: instance variable @uri not initialized
 
- lib/bio/sequence.rb                 |   10 ++++++----
- lib/bio/sequence/aa.rb              |    8 +++-----
- lib/bio/sequence/adapter.rb         |   12 ++++++------
- lib/bio/sequence/common.rb          |    2 ++
- lib/bio/sequence/compat.rb          |    9 ++-------
- lib/bio/sequence/dblink.rb          |   11 ++++++-----
- lib/bio/sequence/generic.rb         |    7 +++----
- lib/bio/sequence/na.rb              |   10 ++++------
- lib/bio/sequence/quality_score.rb   |    2 ++
- lib/bio/sequence/sequence_masker.rb |    3 +++
- 10 files changed, 37 insertions(+), 37 deletions(-)
+ lib/bio/db/phyloxml/phyloxml_elements.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit d2915c33ae7f330837688195a58c1e60fe78402a
+commit 94277712e9dd000c2d9bf5b6ebfd84d0f2fc3b59
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jul 5 21:04:28 2012 +0900
+Date:   Thu Mar 26 01:47:45 2015 +0900
 
-    workaround to avoid circular require in Bio::RestrictionEnzyme
-    
-     * Workaround to avoid circular require in Bio::RestrictionEnzyme
-     * Special care was needed for Bio::RestrictionEnzyme::Analysis
-       because its method definitions are divided into two files:
-       analysis.rb, analysis_basic.rb.
+    suppress warning: instance variable @format not initialized
 
- lib/bio/util/restriction_enzyme/analysis.rb               |   13 ++++++++-----
- lib/bio/util/restriction_enzyme/analysis_basic.rb         |    7 ++++---
- lib/bio/util/restriction_enzyme/cut_symbol.rb             |    5 +++--
- lib/bio/util/restriction_enzyme/dense_int_array.rb        |    3 +++
- lib/bio/util/restriction_enzyme/double_stranded.rb        |    7 +++----
- .../restriction_enzyme/double_stranded/aligned_strands.rb |    7 +++----
- .../double_stranded/cut_location_pair.rb                  |    7 +++----
- .../cut_location_pair_in_enzyme_notation.rb               |    7 +++----
- .../restriction_enzyme/double_stranded/cut_locations.rb   |    7 +++----
- .../double_stranded/cut_locations_in_enzyme_notation.rb   |    7 +++----
- lib/bio/util/restriction_enzyme/range/cut_range.rb        |    7 +++----
- lib/bio/util/restriction_enzyme/range/cut_ranges.rb       |    7 +++----
- .../util/restriction_enzyme/range/horizontal_cut_range.rb |    7 +++----
- lib/bio/util/restriction_enzyme/range/sequence_range.rb   |    7 +++----
- .../range/sequence_range/calculated_cuts.rb               |    7 +++----
- .../restriction_enzyme/range/sequence_range/fragment.rb   |    7 +++----
- .../restriction_enzyme/range/sequence_range/fragments.rb  |    7 +++----
- .../util/restriction_enzyme/range/vertical_cut_range.rb   |    7 +++----
- lib/bio/util/restriction_enzyme/single_strand.rb          |    6 +++---
- .../single_strand/cut_locations_in_enzyme_notation.rb     |    7 +++----
- .../util/restriction_enzyme/single_strand_complement.rb   |    7 +++----
- lib/bio/util/restriction_enzyme/sorted_num_array.rb       |    3 +++
- lib/bio/util/restriction_enzyme/string_formatting.rb      |    7 +++----
- 23 files changed, 75 insertions(+), 81 deletions(-)
+ lib/bio/db/fastq.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 7df4843288ffde6d7132a5651fe978301f8ebd2b
+commit e61e1071e4bb7dd9ee995c3a7f864c2ef4384edd
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jul 5 20:18:08 2012 +0900
+Date:   Thu Mar 26 01:40:33 2015 +0900
 
-    workaround to avoid JRuby autoload bug
+    suppress "instance variable not initialized" warnings
+    
+     * suppress warning: instance variable @sc_match not initialized
+     * suppress warning: instance variable @sc_mismatch not initialized
+     * suppress warning: instance variable @gaps not initialized
+     * suppress warning: instance variable @hit_frame not initialized
+     * suppress warning: instance variable @query_frame not initialized
 
- lib/bio/util/restriction_enzyme.rb |    4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ lib/bio/appl/blast/format0.rb |   13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
 
-commit 97d95f2b400006d4229a7ce69d7d8a5cdce42764
+commit 08c458c74a7a34e340e09053cbc0f9c071e27395
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 4 22:00:27 2012 +0900
+Date:   Thu Mar 26 01:09:16 2015 +0900
 
-    changed require to autoload for the workaround of JRuby autoload bug
+    suppress warning: instance variable @pattern not initialized
 
- lib/bio/feature.rb |    5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
+ lib/bio/appl/blast/format0.rb |    8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
 
-commit 530b82a45731c2a71a110826341be425de1271e0
+commit 33d7eed180fd601972724f4b992f1a17c689ef62
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 4 22:00:06 2012 +0900
+Date:   Thu Mar 26 00:57:02 2015 +0900
 
-    workaround to avoid JRuby autoload bug
+    Test bug fix: fix typo of test target method
 
- lib/bio/sequence/common.rb |    4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ test/network/bio/test_command.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 8614f31b36fb93d6e49d109268d646ff3032cd1a
+commit 76a98bce1affac03483c08f803d4314b42a0a3d3
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Jul 4 21:28:52 2012 +0900
+Date:   Thu Mar 26 00:32:25 2015 +0900
 
-    workaround to avoid JRuby autoload bug
+    Incompatible Change: Bio::Command.make_cgi_params rejects single String
     
-     * Workaround to avoid JRuby autoload bug.
-     * Changed to require bio/db.rb because it is always loaded.
+     * Incompatible Change: Bio::Command.make_cgi_params no longer accepts a
+       single String as a form. Use Hash or Array containing key-value pairs
+       as String objects. This change also affects Bio::Command.post_form
+       and Bio::Command.http_post_form which internally use this method.
 
- lib/bio/db/kegg/genes.rb |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ lib/bio/command.rb            |    2 +-
+ test/unit/bio/test_command.rb |    9 +++++----
+ 2 files changed, 6 insertions(+), 5 deletions(-)
 
-commit ea500006ed56857139c858bdfeb98773e5ca541e
+commit b1612545a7516befd850a6d5925aa73bbaa4b4b0
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 21:36:35 2012 +0900
+Date:   Wed Mar 25 02:36:41 2015 +0900
 
-    Rakefile: use own mktmpdir
+    delete obsolete $Id:$ line
 
- Rakefile |   59 +++++++++++++++++++++++++++++++++++++++++++----------------
- 1 file changed, 43 insertions(+), 16 deletions(-)
+ lib/bio/io/togows.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 452fadcab61083dcb9d01ee05d300eae5cb23fee
+commit 4d5a419cc78ff2a79cff2812adc6f16f286204e8
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 20:37:59 2012 +0900
+Date:   Wed Mar 25 02:35:45 2015 +0900
 
-    .travis.yml: remove "rake regemspec" from after_install
+    delete obsolete $Id:$ line
 
- .travis.yml |    2 --
- 1 file changed, 2 deletions(-)
+ test/network/bio/io/test_togows.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 3fad822af3d7e558a58b71fd8ec2a7061b49f9f2
+commit a8d2c4cac665b4bb8140df329a9cc1d6e5e2d02d
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 20:36:59 2012 +0900
+Date:   Wed Mar 25 02:35:03 2015 +0900
 
-    regenerate bioruby.gemspec with rake regemspec
+    delete obsolete $Id:$ line
 
- bioruby.gemspec |    2 ++
- 1 file changed, 2 insertions(+)
+ test/unit/bio/io/test_togows.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit ea6e96fc654c797664b118a6326a84e4f9b1a8a3
+commit dd0967db3743789ea5aa48623df8d97f93062694
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 20:35:49 2012 +0900
+Date:   Wed Mar 25 02:33:49 2015 +0900
 
-    print message when doing Dir.chdir
+    test_make_path: add test data using Symbol objects
 
- Rakefile |   17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
+ test/unit/bio/io/test_togows.rb |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
 
-commit c2fcd5e8cc71da38dc3c6d1f8c8d0233e47398b3
+commit e07158a60ca666b5d625408bcf8fa602fd8114a8
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 20:28:41 2012 +0900
+Date:   Wed Mar 25 02:22:31 2015 +0900
 
-    In tar-install, removed dependency to regemspec
+    Bio::TogoWS::REST#entry: comma between IDs should NOT be escaped to %2C
 
- Rakefile |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ lib/bio/io/togows.rb |   11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
 
-commit 67a7e83d516aab5d60f8263525b359be8b0ffc0b
+commit 98546289b2f2da2dc7f9586fd5e2942da4d8f3a8
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 20:23:24 2012 +0900
+Date:   Wed Mar 25 02:00:17 2015 +0900
 
-    Rakefile: give up using Dir.mktmpdir because of JRuby's behavior
+    Bug fix: search with offset did not work due to TogoWS server change
     
-     * Rakefile: give up using Dir.mktmpdir because of JRuby's behavior
-       that may be related with http://jira.codehaus.org/browse/JRUBY-5678
+     * lib/bio/io/togows.rb: Bug fix: Bio::TogoWS::REST#search with offset
+       and limit did not work due to TogoWS server change about URI escape.
+       For example,
+       http://togows.org/search/nuccore/Milnesium+tardigradum/2%2C3 fails,
+       http://togows.org/search/nuccore/Milnesium+tardigradum/2,3 works fine.
 
- Rakefile |   61 ++++++++++++++++++++++++++++++++++++++++++++++---------------
- 1 file changed, 46 insertions(+), 15 deletions(-)
+ lib/bio/io/togows.rb |   24 +++++++++++++++++++++---
+ 1 file changed, 21 insertions(+), 3 deletions(-)
 
-commit cff098034a338bbe9579d6c7b4380c7132a38ef5
+commit 7097f80e315a0a6332e7a76a5bb261649e8dcc1a
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 19:23:57 2012 +0900
+Date:   Wed Mar 25 01:33:26 2015 +0900
 
-    gem-integration-test, gem-install and gem-install-nodoc are removed
+    Bug fix due to TogoWS convert method spec change
     
-     * gem-integration-test, gem-install and gem-install-nodoc are removed
-       because they are useless with Bundler
+     * lib/bio/io/togows.rb: Bug fix: Bio::TogoWS::REST#convert did not work
+       because of the spec change of TogoWS REST API.
 
- Rakefile |   13 -------------
- 1 file changed, 13 deletions(-)
+ lib/bio/io/togows.rb |    7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
 
-commit d5c054265af4f80318cbfa5a5bbdee6125219de2
+commit 1a9b1063af4c0b32cd287d4a2c2466343aeddb98
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 18:10:05 2012 +0900
+Date:   Wed Mar 25 01:30:34 2015 +0900
 
-    .travis.yml: .gemspec is needed to install local gem
+    improve tests for bio/command.rb for methods using http protocol
 
- .travis.yml                 |    1 +
- gemfiles/prepare-gemspec.rb |   25 +++++++++++++++++++++++++
- 2 files changed, 26 insertions(+)
- create mode 100644 gemfiles/prepare-gemspec.rb
+ test/network/bio/test_command.rb |   67 ++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 65 insertions(+), 2 deletions(-)
 
-commit 05b6172123f42a1d8d46668d8a3d5f698c371704
+commit c63920e4d8569e3eaef201d4d60fcddfa15f1f34
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 17:51:43 2012 +0900
+Date:   Wed Mar 25 01:30:06 2015 +0900
 
-    remove 1.9.2; add tar/gem integration tests
-    
-     * Remove ruby version 1.9.2 from matrix for reducing builds
-     * Add tar/gem integration tests
-     * Add a new helper script gemfiles/modify-Gemfile.rb,
-       modifying gemfile when running gem integration test.
-     * Remove jruby version comments
+    delete obsolete $Id:$ line
+
+ lib/bio/command.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit 1683edac0e9ecbf819ffcd332a6db2d25c2d596a
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Wed Mar 25 01:28:28 2015 +0900
+
+    new methods Bio::Command.http_post and Bio::Command.post to post raw data
 
- .travis.yml                |   26 +++++++++++++++++---------
- gemfiles/modify-Gemfile.rb |   28 ++++++++++++++++++++++++++++
- 2 files changed, 45 insertions(+), 9 deletions(-)
- create mode 100644 gemfiles/modify-Gemfile.rb
+ lib/bio/command.rb |   61 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 61 insertions(+)
 
-commit 6813f91893e7ddc3000047357c9ed2dafb32a722
+commit a40157205282e148bf3a2e43aed1e08d713fb598
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jun 28 17:06:28 2012 +0900
+Date:   Tue Mar 24 00:46:23 2015 +0900
 
-    descriptions are modified for danger operations
+    suppress warnings "instance variable @circular not initialized"
 
- Rakefile |    4 ++--
+ lib/bio/util/restriction_enzyme/range/sequence_range.rb |    4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
-commit a209688952c922d9ba45c227874990bccd3da7c0
+commit abcac8de85c9606f6a1879fe9d2ae559911708c9
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Jun 25 23:25:51 2012 +0900
+Date:   Tue Mar 24 00:29:42 2015 +0900
 
-    regenerate bioruby.gemspec with rake regemspec
+    delete obsolete $Id:$ line
 
- bioruby.gemspec |    5 +++++
- 1 file changed, 5 insertions(+)
+ test/unit/bio/io/flatfile/test_autodetection.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 8f6459497be0e9ca7dc3eb2eb9606e42d97ad60c
+commit 1b5bf586af238b712a9f640087421fd299376c2d
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Jun 25 21:01:06 2012 +0900
+Date:   Tue Mar 24 00:28:38 2015 +0900
 
-    rake tasks added and default task is changed
-    
-     * New tasks:
-       * gem-install: build gem and install it
-       * gem-install-nodoc: build gem and install it with --no-ri --no-rdoc.
-       * gem-test: test installed bioruby gem installed with gem-install
-         (or gem-install-nodoc)
-       * gem-integration-test: build gem, install and run test (with --no-ri
-         --no-rdoc)
-       * tar-install: DANGER: build tar and install by using setup.rb
-       * installed-test: test installed bioruby
-       * tar-integration-test: DANGER: build tar, install and run test
-       * see-env: see BIORUBY_RAKE_DEFAULT_TASK environment variable and
-         invoke the specified task. If the variable did not exist, it
-         invokes "test" which is previously the default task. It is added
-         for selecting task on Travis-ci. It is not recommended to invoke
-         the task explicitly by hand.
-     * Default task is changed from "test" to "see-env".
+    suppress warning: assigned but unused variable - length
 
- Rakefile |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 107 insertions(+), 3 deletions(-)
+ test/unit/bio/io/flatfile/test_autodetection.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 3b400042cd361e1ab6d0fb0d8c8cce14a6c2ae10
+commit 5497068d17c2794ab2b6ef1e603e5478a86537c6
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Jun 25 20:58:13 2012 +0900
+Date:   Tue Mar 24 00:22:54 2015 +0900
 
-    BIORUBY_TEST_LIB is always added on the top of $LOAD_PATH
-    
-     * When BIORUBY_TEST_LIB is specified, the specified directory name
-       is always added on the top of $LOAD_PATH even if it is already
-       included in the middle of $LOAD_PATH.
+    add/modify assertions to suppress "unused variable" warnings
 
- test/bioruby_test_helper.rb |    4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ test/unit/bio/db/genbank/test_genbank.rb |   12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
 
-commit 848304b6f90310f8fa15c80ba06655ae5cae5053
+commit d5bafd8b7ee28ab0418b09fd6dd47abcb9eb1ee5
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Jun 25 20:42:07 2012 +0900
+Date:   Mon Mar 23 23:57:56 2015 +0900
 
-    New env BIORUBY_TEST_GEM and BIORUBY_TEST_LIB behavior changed
-    
-     * New environment variable BIORUBY_TEST_GEM for testing installed
-       bio-X.X.X gem. Version number can be specified.
-       Example with version number:
-        % env BIORUBY_TEST_GEM=1.4.2.5000 ruby test/runner.rb
-       Example without version number:
-        % env BIORUBY_TEST_GEM="" ruby test/runner.rb
-     * When BIORUBY_TEST_LIB is empty, it no longer add an empty string to
-       $LOAD_PATH. Moreover, when BIORUBY_TEST_GEM is set, the variable is
-       ignored.
+    delete obsolete $Id:$ line
 
- test/bioruby_test_helper.rb |   49 ++++++++++++++++++++++++++++++++-----------
- 1 file changed, 37 insertions(+), 12 deletions(-)
+ lib/bio/appl/blast.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 9453a6773c24f866698370195fd8e767443a38b9
-Author: Tomoaki NISHIYAMA <tomoakin at kenroku.kanazawa-u.ac.jp>
-Date:   Fri Jun 1 18:06:40 2012 +0900
+commit bbd60d1aae7c894f914b7265d2de22fea5eb3faf
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Mar 23 23:56:42 2015 +0900
 
-    broader FASTQ file recognition
-    
-     * Because PacBio RS sequencer may produce kilobases long reads and
-       read buffer size (default 31 lines) for file format detection
-       may not be sufficient to find the second id line starting with "+",
-       the regular expression for FASTQ is truncated only to check the
-       first id line starting with "@".
-     * Test code is added.
+    suppress warning: assigned but unused variable - dummy
 
- lib/bio/io/flatfile/autodetection.rb            |    2 +-
- test/unit/bio/io/flatfile/test_autodetection.rb |    6 ++++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
+ lib/bio/appl/blast.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 120e780c023cba06b83899c2f8a17c8fc1de4faa
+commit 4a91502ccf14ab8655645144120aa97d0c8313a5
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Jun 8 15:36:29 2012 +0900
+Date:   Mon Mar 23 20:32:59 2015 +0900
 
-    Retry sequence randomize test up to 10 times when fails
-    
-     * To suppress rare failure of chi-square equiprobability tests for
-       Bio::Sequence::Common#randomize, test code changed to retry
-       up to 10 times if the chi-square test fails.  The assertion fails
-       if the chi-square test fails 10 consecutive times, and this
-       strongly suggests bugs in codes or in the random number generator.
-     * The chi-square equiprobability tests are separated into a new
-       test class.
+    delete obsolete $Id:$ line
 
- test/unit/bio/sequence/test_common.rb |   40 +++++++++++++++++++++++++++++----
- 1 file changed, 36 insertions(+), 4 deletions(-)
+ lib/bio/shell/setup.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 20dde52f7da784d4d9ac551957700cd96e842ef6
+commit c437a4078ff8e2869b9c1ab3543022db373a93c3
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 19 18:14:19 2012 +0900
+Date:   Mon Mar 23 20:32:20 2015 +0900
 
-    libxml-ruby is disabled because of build error on Travis-ci
+    suppress warning: instance variable @mode not initialized
 
- gemfiles/Gemfile.travis-jruby1.8 |    3 ++-
- gemfiles/Gemfile.travis-jruby1.9 |    3 ++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
+ lib/bio/shell/setup.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 3c5c1cc277d30737815c7e44a2abbb308f5324b0
-Author: Clayton Wheeler <cswh at umich.edu>
-Date:   Mon May 14 21:48:41 2012 -0400
+commit 8967cf280d5ca8491d57a11e4f3ffab7369c4ea8
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Mar 23 20:28:50 2015 +0900
 
-    Use libxml-ruby instead of libxml-jruby to fix JRuby test failures.
-    
-    The travis-ci Gemfiles currently call for libxml-jruby; this appears
-    not to support the same API as libxml-ruby, resulting in several tests
-    in test/unit/bio/db/test_phyloxml.rb failing with "NameError:
-    uninitialized constant LibXMLJRuby::XML::Parser::Options". Switching
-    to the C libxml-ruby library allows these tests to pass under JRuby in
-    1.8 mode.
-    
-    JRuby in 1.9 mode still fails a few PhyloXML tests due to
-    https://jira.codehaus.org/browse/JRUBY-6662.
+    delete obsolete $Id:$ line
 
- gemfiles/Gemfile.travis-jruby1.8 |    2 +-
- gemfiles/Gemfile.travis-jruby1.9 |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+ lib/bio/shell/irb.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 01a618242d67f0d00fe681dfd85e68bb393513fc
-Author: Clayton Wheeler <cswh at umich.edu>
-Date:   Thu May 10 23:13:56 2012 -0400
+commit 42b5f030067be4bc9c53ccb4c06ccfc5e8d9df03
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Mar 23 20:28:27 2015 +0900
 
-    test_tree.rb: to use %f instead of %g to prevent odd behavior.
+    change deprecated method File.exists? to File.exist?
 
- test/unit/bio/test_tree.rb |   22 +++++++++++-----------
- 1 file changed, 11 insertions(+), 11 deletions(-)
+ lib/bio/shell/irb.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 5e80e4394bf2a5e4ee472fe84ab76239b293e1b5
-Author: Clayton Wheeler <cswh at umich.edu>
-Date:   Thu May 10 23:04:55 2012 -0400
+commit 389ad2f311f161f235db2373aeb2f5500b1ea65f
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Mar 23 20:27:01 2015 +0900
 
-    Fixed spurious JRuby failures in test_tree.rb due to floating point differences.
+    delete obsolete $Id:$ line
 
- test/unit/bio/test_tree.rb |   14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
+ lib/bio/shell/interface.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 459d4da894e9a9b9db0d793e3711dc45bae2089b
-Author: Artem Tarasov <lomereiter at gmail.com>
-Date:   Thu May 10 16:23:13 2012 +0400
+commit de5949798d66c16d2b5e2cf8ba7192049ec99c5b
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Mar 23 20:26:37 2015 +0900
 
-    Test bug fix: order of hash keys are not guaranteed
-    
-     * Test bug fix: Bio::TestSOFT#test_dataset: order of hash keys are
-       not guaranteed.
+    change deprecated method File.exists? to File.exist?
 
- test/unit/bio/db/test_soft.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ lib/bio/shell/interface.rb |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
-commit 7e730691d6ec597a610dc0d4665db3598fcfde59
+commit c8907059a716a8778e333755c8fb53bb2a0c7158
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu May 10 00:06:19 2012 +0900
+Date:   Mon Mar 23 20:24:58 2015 +0900
 
-    removed potential circular require about Bio::Sequence::Format
+    delete obsolete $Id:$ line
 
- lib/bio/db/embl/format_embl.rb       |    4 ----
- lib/bio/db/fasta/format_fasta.rb     |    4 ----
- lib/bio/db/fasta/format_qual.rb      |    5 -----
- lib/bio/db/fastq/format_fastq.rb     |    1 -
- lib/bio/db/genbank/format_genbank.rb |    4 ----
- lib/bio/sequence/format_raw.rb       |    4 ----
- 6 files changed, 22 deletions(-)
+ lib/bio/shell/core.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit f1c398fdc3488bd18bd13ac864920ce6db4dab9e
+commit 1fe5903f8acd8045d203465a099a45218e7e3891
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed May 9 15:54:20 2012 +0900
+Date:   Mon Mar 23 20:24:25 2015 +0900
 
-    .travis.yml: comment out apt-get lines
-    
-     * .travis.yml: comment out apt-get lines because libxml2-dev
-       and libexpat1-dev are already installed.
+    change deprecated method File.exists? to File.exist?
 
- .travis.yml |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ lib/bio/shell/core.rb |   10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
 
-commit bc5ef4959e51f4a199d9f740b07812e9b8216255
+commit 929207c6f186c81f076fab9b1bbbd23c4b966f4e
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed May 9 15:47:11 2012 +0900
+Date:   Mon Mar 23 20:20:05 2015 +0900
 
-    travis-ci: comment out soap4r-ruby1.9 in Gemfile because of error
-    
-     * travis-ci: soap4r-ruby1.9 gem in Gemfile.travis-ruby1.9 and
-       Gemfile.travis-jruby1.9 is commented out because of an error
-       "uninitialized constant XML::SaxParser".
+    delete obsolete $Id:$ line
 
- gemfiles/Gemfile.travis-jruby1.9 |    4 +++-
- gemfiles/Gemfile.travis-ruby1.9  |    4 +++-
- 2 files changed, 6 insertions(+), 2 deletions(-)
+ test/unit/bio/db/pdb/test_pdb.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 7e8153c09660c31d6286c1924680b8c5073a10b6
+commit e75c57fcd7abc56ba6fcbf1996e491aca890f5b1
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue May 1 18:11:09 2012 +0900
+Date:   Mon Mar 23 20:19:30 2015 +0900
 
-    config files for Travis CI continuous integration service
+    suppress "assigned but unused variable" warnings
 
- .travis.yml                      |   73 ++++++++++++++++++++++++++++++++++++++
- gemfiles/Gemfile.travis-jruby1.8 |    6 ++++
- gemfiles/Gemfile.travis-jruby1.9 |    7 ++++
- gemfiles/Gemfile.travis-ruby1.8  |    7 ++++
- gemfiles/Gemfile.travis-ruby1.9  |    8 +++++
- 5 files changed, 101 insertions(+)
- create mode 100644 .travis.yml
- create mode 100644 gemfiles/Gemfile.travis-jruby1.8
- create mode 100644 gemfiles/Gemfile.travis-jruby1.9
- create mode 100644 gemfiles/Gemfile.travis-ruby1.8
- create mode 100644 gemfiles/Gemfile.travis-ruby1.9
+ test/unit/bio/db/pdb/test_pdb.rb |   21 ++++++++++++++-------
+ 1 file changed, 14 insertions(+), 7 deletions(-)
 
-commit f1ecae7763648cb735a885ddb6c46d71c59b0694
+commit b458301f47322c265fce27efd0ed71443c17d9d7
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Mar 23 01:36:59 2012 +0900
+Date:   Mon Mar 23 18:34:12 2015 +0900
 
-    Test bug fix: tests affected by the bug of Bio::NucleicAcid.to_re("s")
+    delete obsolete $Id:$ line
 
- test/unit/bio/data/test_na.rb     |    2 +-
- test/unit/bio/sequence/test_na.rb |    2 +-
- test/unit/bio/test_sequence.rb    |    4 ++--
- 3 files changed, 4 insertions(+), 4 deletions(-)
+ lib/bio/shell/plugin/entry.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 3fd9384b1b59140a929c81dcc4b07cb3c2e47525
-Author: Trevor Wennblom <trevor at well.com>
-Date:   Sat Feb 25 15:26:27 2012 -0600
+commit c3f909fe06b82b3cbd4bdcbcdef668fc0727be9d
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Mar 23 18:33:30 2015 +0900
 
-    Bug fix: Bio::NucleicAcid.to_re("s") typo
+    change deprecated method File.exists? to File.exist?
 
- lib/bio/data/na.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ lib/bio/shell/plugin/entry.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
-commit c552aa3a6773139b14ae95e79e0fb43a2f91c6fb
+commit 7ba6349c2446aa03b843a2a8fb49505c8f63c6ca
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jan 12 22:24:37 2012 +0900
+Date:   Mon Mar 23 18:20:44 2015 +0900
 
-    Bug fix: GenomeNet BLAST server URI changed.
-    
-     * Bug fix: GenomeNet BLAST server URI changed.
-       Reported by joaocardoso via GitHub.
-       ( https://github.com/bioruby/bioruby/issues/44 )
+    change deprecated method File.exists? to File.exist?
 
- lib/bio/appl/blast/genomenet.rb |    3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ lib/bio/appl/meme/mast.rb |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit f33abf9bbd90c3c1e320f06447fdb54ffd094c5d
-Author: peterjc <p.j.a.cock at googlemail.com>
-Date:   Fri Nov 25 11:20:08 2011 +0000
+commit e7f78ea3c3fb1b78adcc6ae13f450cf2cda361cd
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Mar 23 18:10:27 2015 +0900
 
-    Mark echoarg2.bat and echoarg2.sh as world executable
+    delete obsolete $Id:$ line
 
- 0 files changed
- mode change 100644 => 100755 test/data/command/echoarg2.bat
- mode change 100644 => 100755 test/data/command/echoarg2.sh
+ lib/bio/db/phyloxml/phyloxml_writer.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit d2d66f833d0b20647e8d761d2a240b99b206eaa8
+commit b32eae0050a73bd5a2931c17a6694f494ad00bb2
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Nov 24 13:32:37 2011 +0900
+Date:   Mon Mar 23 18:07:54 2015 +0900
 
-    Bug fix: rake aborted without git
+    suppress warning: mismatched indentations at 'end' with 'def' at 166
 
- bioruby.gemspec.erb |    2 +-
+ lib/bio/db/phyloxml/phyloxml_writer.rb |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit c2139739988ef731d61bf1a8cdba2dc5c48393bd
+commit bd735347283ce5d332245d0349186f300800a43f
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Nov 24 13:07:10 2011 +0900
+Date:   Sat Mar 21 12:57:03 2015 +0900
 
-    regenerate bioruby.gemspec with rake regemspec.
+    remove duplicated line and suppress Ruby 2.2 warning
 
- bioruby.gemspec |   18 ++++++++++--------
- 1 file changed, 10 insertions(+), 8 deletions(-)
+ setup.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 6213b45d28bfea2cc8c838813b524d48c369266b
+commit 68ad10e178594691c77ba4b97c2449fecf0ac9de
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Nov 24 13:05:07 2011 +0900
+Date:   Sat Mar 21 12:50:46 2015 +0900
 
-    Added workaround for changes of a module name and file names to require.
+    Ruby 1.9 support: suppress "shadowing outer local variable" warnings
 
- Rakefile |   21 +++++++++++++++++++--
- 1 file changed, 19 insertions(+), 2 deletions(-)
+ setup.rb |   10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
 
-commit 39f847cf8d453476275361078b831da43d400816
+commit 2343482078aec8373f7a2eb8ed4d7c44119f809c
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Nov 24 12:08:47 2011 +0900
+Date:   Sat Mar 21 12:16:45 2015 +0900
 
-    Use binary mode to open files.
+    Ruby 2.2 support: Config was renamed to RbConfig
 
- Rakefile |    6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ setup.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 688779e71a27e861fb01e07f816384561b8cfe45
+commit d512712745142d6c6ebe9a6ef51c8c4773bd7c2c
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Nov 24 11:49:30 2011 +0900
+Date:   Sat Mar 21 11:52:47 2015 +0900
 
-    Rakefile: new tasks: test-all to run all tests, etc.
-    
-     * Rakefile: new tasks: test-all to run all tests, and test-network
-       to run tests in test/network.
+    Ruby 1.9 support: suppress "shadowing outer local variable" warnings
+
+ lib/bio/db/embl/format_embl.rb |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
- Rakefile |   10 ++++++++++
- 1 file changed, 10 insertions(+)
+commit bfa75df9047ab6855c931558f6bf9fdbb1c3c288
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Mar 21 11:36:01 2015 +0900
+
+    delete obsolete $Id:$ line
+
+ lib/bio/io/flatfile/buffer.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 53719535defcb0fefb3cf8bebe3fad6716bf7de2
+commit d6fbaa0c555117ebadd46e284ae357586856102d
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Nov 24 11:28:38 2011 +0900
+Date:   Sat Mar 21 11:35:07 2015 +0900
 
-    test/runner.rb: Run tests only in test/unit and test/functional.
+    Ruby 1.9 support: suppress warning: shadowing outer local variable - fobj
 
- test/runner.rb |   22 ++++++++++++++++------
- 1 file changed, 16 insertions(+), 6 deletions(-)
+ lib/bio/io/flatfile/buffer.rb |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
 
-commit fb9ee403db6b447aee73ebb7f12ff5a5b73d6c52
+commit 0083d3284ec181f4bcc3144f76b12f9d52e3eff6
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Nov 23 20:36:36 2011 +0900
+Date:   Sat Mar 21 11:29:39 2015 +0900
 
-    A test class using network connection is moved under test/network/.
+    delete obsolete $Id:$ line
 
- test/functional/bio/test_command.rb |   16 ----------------
- test/network/bio/test_command.rb    |   35 +++++++++++++++++++++++++++++++++++
- 2 files changed, 35 insertions(+), 16 deletions(-)
- create mode 100644 test/network/bio/test_command.rb
+ lib/bio/io/fastacmd.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit a6dda2215aa686a9ca4af7484aa190f726d51e69
+commit d4909c0e80e572a639edba07388e430c7f5d6ce8
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Nov 23 20:28:58 2011 +0900
+Date:   Sat Mar 21 11:29:01 2015 +0900
 
-    Tests using network connections are moved to test/network/
-    
-     * Tests using network connections are moved to test/network/.
-       * renamed: test/functional/bio/appl -> test/network/bio/appl
-       * renamed: test/functional/bio/io   -> test/network/bio/io
+    remove old sample script in "if $0 == __FILE__" block
 
- test/functional/bio/appl/blast/test_remote.rb |   93 ---------
- test/functional/bio/appl/test_blast.rb        |   61 ------
- test/functional/bio/appl/test_pts1.rb         |  117 -----------
- test/functional/bio/io/test_ddbjrest.rb       |   47 -----
- test/functional/bio/io/test_ensembl.rb        |  230 ---------------------
- test/functional/bio/io/test_pubmed.rb         |  135 -------------
- test/functional/bio/io/test_soapwsdl.rb       |   53 -----
- test/functional/bio/io/test_togows.rb         |  268 -------------------------
- test/network/bio/appl/blast/test_remote.rb    |   93 +++++++++
- test/network/bio/appl/test_blast.rb           |   61 ++++++
- test/network/bio/appl/test_pts1.rb            |  117 +++++++++++
- test/network/bio/io/test_ddbjrest.rb          |   47 +++++
- test/network/bio/io/test_ensembl.rb           |  230 +++++++++++++++++++++
- test/network/bio/io/test_pubmed.rb            |  135 +++++++++++++
- test/network/bio/io/test_soapwsdl.rb          |   53 +++++
- test/network/bio/io/test_togows.rb            |  268 +++++++++++++++++++++++++
- 16 files changed, 1004 insertions(+), 1004 deletions(-)
- delete mode 100644 test/functional/bio/appl/blast/test_remote.rb
- delete mode 100644 test/functional/bio/appl/test_blast.rb
- delete mode 100644 test/functional/bio/appl/test_pts1.rb
- delete mode 100644 test/functional/bio/io/test_ddbjrest.rb
- delete mode 100644 test/functional/bio/io/test_ensembl.rb
- delete mode 100644 test/functional/bio/io/test_pubmed.rb
- delete mode 100644 test/functional/bio/io/test_soapwsdl.rb
- delete mode 100644 test/functional/bio/io/test_togows.rb
- create mode 100644 test/network/bio/appl/blast/test_remote.rb
- create mode 100644 test/network/bio/appl/test_blast.rb
- create mode 100644 test/network/bio/appl/test_pts1.rb
- create mode 100644 test/network/bio/io/test_ddbjrest.rb
- create mode 100644 test/network/bio/io/test_ensembl.rb
- create mode 100644 test/network/bio/io/test_pubmed.rb
- create mode 100644 test/network/bio/io/test_soapwsdl.rb
- create mode 100644 test/network/bio/io/test_togows.rb
+ lib/bio/io/fastacmd.rb |   15 ---------------
+ 1 file changed, 15 deletions(-)
 
-commit ec747aa33d06e08a6469dfd330360161d1b0f8e2
+commit 8171162d0a3991d5f0d9a8bccee57250248d6d3d
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Nov 23 15:03:08 2011 +0900
+Date:   Sat Mar 21 11:15:10 2015 +0900
 
-    Test bug fix: use binmode to disable CR/LF conversion (fail on Windows)
+    delete obsolete $Id:$ line
 
- test/unit/bio/appl/blast/test_rpsblast.rb |    1 +
- test/unit/bio/io/flatfile/test_buffer.rb  |    1 +
- 2 files changed, 2 insertions(+)
+ lib/bio/db/go.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 07ce32da009baa2c4e81f6d96f45e3dac49da183
+commit ed7c9a5335ef59399f3098311f47b8dec519281a
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Nov 23 14:47:33 2011 +0900
+Date:   Sat Mar 21 11:14:19 2015 +0900
 
-    Test bug fix: Read Sanger chromatogram files with binary mode
-    
-     * Test bug fix: Read Sanger chromatogram files with binary mode.
-       Fix error/failure on Windows due to default text mode reading.
+    Ruby 1.9 support: suppress warnings: "shadowing outer local variable - goid"
 
- test/unit/bio/db/sanger_chromatogram/test_abif.rb |    3 ++-
- test/unit/bio/db/sanger_chromatogram/test_scf.rb  |    6 ++++--
- 2 files changed, 6 insertions(+), 3 deletions(-)
+ lib/bio/db/go.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
-commit 20d9068643214e3482d18c36028e50b3c9109755
+commit dd543068b046c9a0c2a40159c830c92b680244f1
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Wed Nov 23 14:17:25 2011 +0900
+Date:   Sat Mar 21 11:03:08 2015 +0900
 
-    Incompatible change: Bio::FlatFile.open and auto use binary mode
-    
-     * Incompatible change: Bio::FlatFile.open and auto use binary mode
-       (binmode) unless text mode option is explicitly given.
+    delete obsolete $Id:$ line
 
- RELEASE_NOTES.rdoc                       |    7 ++
- lib/bio/io/flatfile/buffer.rb            |   84 ++++++++++++++++++
- test/unit/bio/io/flatfile/test_buffer.rb |  139 ++++++++++++++++++++++++++++++
- 3 files changed, 230 insertions(+)
+ lib/bio/db/phyloxml/phyloxml_elements.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 48bd150a6180d59879872bd85dd95c7ddf1a19c0
+commit 4c74a6e3aeca30820b0be61e867c9201445542ec
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Nov 22 17:32:23 2011 +0900
+Date:   Sat Mar 21 10:24:40 2015 +0900
 
-    Test bug fix: fixed incomplete Windows platform detection.
+    suppress warning: mismatched indentations at 'end' with 'class'
 
- test/unit/bio/test_command.rb |   13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
+ lib/bio/db/phyloxml/phyloxml_elements.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
 
-commit d499bcee7956b1a0a4c04aeb106e50a0839167b0
+commit ee4ffdc748c1f9f45e97ff7f0da8350c5468c333
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Nov 22 16:15:05 2011 +0900
+Date:   Sat Mar 21 10:08:30 2015 +0900
 
-    FuncTestCommandCall is changed to test various command-lines.
-    
-     * New file test/data/command/echoarg2.sh shell script, which acts
-       like echoarg2.bat for Windows.
-     * FuncTestCommandCall is changed to test various command-lines.
+    delete obsolete $Id:$ line
+
+ lib/bio/db/phyloxml/phyloxml_parser.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit 46a4edc8729ff836ae28d11f1503c9923275b9f6
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Mar 21 10:00:04 2015 +0900
+
+    Ruby 1.9 support: suppress warning "shadowing outer local variable - flag"
 
- test/data/command/echoarg2.sh       |    4 ++
- test/functional/bio/test_command.rb |   70 +++++++++++++++++++++++++++++------
- 2 files changed, 62 insertions(+), 12 deletions(-)
- create mode 100644 test/data/command/echoarg2.sh
+ lib/bio/db/phyloxml/phyloxml_parser.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit d45e311c09ad2f4116770dd903f81e652a63ca2a
+commit db3552c683edf79adbfa5ed897f5ef91e8417585
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Nov 22 14:21:34 2011 +0900
+Date:   Fri Mar 20 16:33:45 2015 +0900
 
-    Test bug fix: Opened files should be closed.
+    Bug fix: Bio::PhyloXML::Parser.open_uri did not return block return value
     
-     * Test bug fix: Opened files should be closed.  When finalizing writer
-       tests, temporary files are not properly closed after verify reading,
-       and removing the temporary files raise erro on Windows.
+     * Bug fix: Bio::PhyloXML::Parser.open_uri did not return block
+       return value when giving block.
+     * Suppress warning "assigned but unused variable - ret"
 
- test/unit/bio/db/test_phyloxml_writer.rb |   24 +++++++++++++++---------
- 1 file changed, 15 insertions(+), 9 deletions(-)
+ lib/bio/db/phyloxml/phyloxml_parser.rb |    1 +
+ 1 file changed, 1 insertion(+)
 
-commit a9022c61b98746e98a83f1cfd902e0e6b11c7bbb
+commit 84c2c4e94352cc9cef982d3b505b4f439617e01e
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Nov 22 13:55:15 2011 +0900
+Date:   Fri Mar 20 16:21:49 2015 +0900
 
-    New method Bio::PhyloXML::Parser#closed?, and Bio::PhyloXML::Parser.open with block.
-    
-     * New method Bio::PhyloXML::Parser#closed? to check if it is closed
-       or not.
-     * Bio::PhyloXML::Parser.open and open_uri now can get a block.
-       When a block is given, a Bio::PhyloXML::Parser object is passed
-       to the block as an argument. When the block terminates, the object
-       is closed.
-     * Added tests about the above changes.
+    delete obsolete $Id:$ line
 
- lib/bio/db/phyloxml/phyloxml_parser.rb |   57 +++++++++++++++++++++++++++++---
- test/unit/bio/db/test_phyloxml.rb      |   56 +++++++++++++++++++++++++++++--
- 2 files changed, 106 insertions(+), 7 deletions(-)
+ lib/bio/appl/genscan/report.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 893cbe6ca993eca08427074059c2ba03621ea889
+commit 05c55d0aaf1dc130ac04155622ccebb3394fc3c0
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat Nov 5 00:49:10 2011 +0900
+Date:   Fri Mar 20 16:21:06 2015 +0900
 
-    Ruby 1.9 should be fully supported, and optional requirements are revised.
+    Ruby 1.9 support: suppress warning "shadowing outer local variable - i"
 
- README.rdoc |   48 +++++++++++++++++++++++++++++++++---------------
- 1 file changed, 33 insertions(+), 15 deletions(-)
+ lib/bio/appl/genscan/report.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 38b1715c2d6bad39560e0846781ca903b1c16eda
+commit 5edcc1c97ca7c292fa6551509570daf68ac36837
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Nov 4 22:12:38 2011 +0900
+Date:   Fri Mar 20 16:13:57 2015 +0900
 
-    Added REFERENCE.
+    Ruby 1.9 support: suppress warning "shadowing outer local variable - y"
 
- README.rdoc |   12 ++++++++++++
- 1 file changed, 12 insertions(+)
+ lib/bio/appl/blast/format0.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 9a766cd17236bbe1e28d6972001dd5e3ed596123
+commit 813d53a06258244a47784697e8fc95f1f15db8da
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Nov 4 21:39:20 2011 +0900
+Date:   Fri Mar 20 16:03:19 2015 +0900
 
-    Removed "setup.rb test" and added about running tests.
+    delete obsolete $Id:$ line
 
- README.rdoc |   39 ++++++++++++++++++++++++++++++++++-----
- 1 file changed, 34 insertions(+), 5 deletions(-)
+ lib/bio/io/das.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 39737179b06366e1d5acf2e5ac930e41b3a4ee38
-Author: Pjotr Prins <pjotr.public01 at thebird.nl>
-Date:   Fri Oct 14 08:58:01 2011 +0200
+commit b6ae4a423dd763969c8e18ca6a578fd0600d6159
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Mar 20 16:02:20 2015 +0900
 
-    Tutorial: added info on biogems
+    Ruby 1.9 support: suppress "warning: shadowing outer local variable - e"
 
- doc/Tutorial.rd      |   16 ++++++++++++++++
- doc/Tutorial.rd.html |   23 +++++++++++++++--------
- 2 files changed, 31 insertions(+), 8 deletions(-)
+ lib/bio/io/das.rb |   80 ++++++++++++++++++++++++++---------------------------
+ 1 file changed, 40 insertions(+), 40 deletions(-)
 
-commit e84400c5e9e94d95d6a8d3c4b72388b94d204766
-Author: Pjotr Prins <pjotr.public01 at thebird.nl>
-Date:   Fri Oct 14 08:49:41 2011 +0200
+commit 7fa75a644167dd8c189f681e29c1cf5f1bf2fe0b
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Mar 20 15:36:00 2015 +0900
 
-    Tutorial: small updates
+    delete obsolete $Id:$ line
 
- doc/Tutorial.rd      |    8 +++++---
- doc/Tutorial.rd.html |    9 +++++----
- 2 files changed, 10 insertions(+), 7 deletions(-)
+ lib/bio/shell/plugin/seq.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 9fe07345b3b7be890d5baad9a51f0752af5e0ac4
+commit 051aba1519d71f1205363c4421feb6c06881ab0c
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Sep 13 23:05:39 2011 +0900
+Date:   Fri Mar 20 15:29:02 2015 +0900
 
-    README_DEV.rdoc: added git tips and policies, etc.
+    Bug fix: Ruby 1.9 support: did not yield the last part of the string
     
-     * Added Git tips about sending a patch or a pull request.
-     * Added Git management policies for the blessed repository.
-     * Added some coding styles.
-     * Added descriptions about Ruby versions and OS.
+     * lib/bio/shell/plugin/seq.rb: Bug fix: Ruby 1.9 support:
+       String#step and #skip (extended by bioruby-shell) did not yield
+       the last part of the string due to a change from Ruby 1.8 to 1.9.
+     * Suppress warning message "shadowing outer local variable - i"
 
- README_DEV.rdoc |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 93 insertions(+), 2 deletions(-)
+ lib/bio/shell/plugin/seq.rb |   12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
 
-commit 3c952c4a782501b21f36ece5bcab672dab12fc6d
+commit a9f2bff92de58c2ab4cefc67e721d3ad69e9de98
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Sep 13 13:21:20 2011 +0900
+Date:   Fri Mar 20 15:09:16 2015 +0900
 
-    README.rdoc: for release notes and changelog, about sample files.
+    Ruby 2.2 support: suppress a "shadowing outer local variable" warning
 
- README.rdoc |   10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
+ lib/bio/alignment.rb |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
 
-commit fba9a6c0f1f79dd567ca54ba085b6258ac8efb31
+commit d0bcc8766d91eb7cacea2a6d5b32b3e0b3c5ce56
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Tue Sep 13 13:20:05 2011 +0900
+Date:   Fri Mar 20 14:31:04 2015 +0900
 
-    RELEASE_NOTES.rdoc: mentioned about removal of rdoc.zsh.
+    delete obsolete $Id:$ line
 
- RELEASE_NOTES.rdoc |    6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ test/unit/bio/test_alignment.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 685b6bb7b98083e1b50e73baf4e7fa71bc9a39fa
+commit 0c8fa8fd558088822a98e11b6fa4bec9b37ebec7
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Sep 12 21:23:34 2011 +0900
+Date:   Fri Mar 20 14:26:38 2015 +0900
 
-    bioruby.gemspec.erb: LEGAL is added to rdoc files
+    Ruby 2.2 support: comment out duplicated line to suppress warning
     
-     * bioruby.gemspec.erb: LEGAL is added to rdoc files.
-     * bioruby.gemspec is updated by "rake regemspec".
+     * Ruby 2.2 support: test/unit/bio/test_alignment.rb:
+       Suppress warning: duplicated key at line 182 ignored: "t"
 
- bioruby.gemspec     |    9 ++++++---
- bioruby.gemspec.erb |    6 +++++-
- 2 files changed, 11 insertions(+), 4 deletions(-)
+ test/unit/bio/test_alignment.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 414a6331f40fc99f554042e9a031689ea6d76da4
+commit ab17c40e1ce492dc924205e8e2f90d31adae4464
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Sep 12 20:54:06 2011 +0900
+Date:   Fri Mar 20 14:18:08 2015 +0900
 
-    deleted rdoc.zsh which is obsolete and unused
+    Ruby 2.2 support: some tests did not run with test-unit gem
     
-     * Deleted rdoc.zsh which is obsolete and unused.
-       To generate rdoc html, "rake rdoc" or "rake rerdoc".
-       See "rake -T" for more information.
+     * Ruby 2.2 support: test/unit/bio/db/test_fastq.rb
+       Support for test-unit gem bundled in Ruby 2.2.
+       See commit log b9488a64abb780c5e9b6cd28e8264bad399fa749 for details.
 
- rdoc.zsh |    8 --------
- 1 file changed, 8 deletions(-)
- delete mode 100644 rdoc.zsh
+ test/unit/bio/db/test_fastq.rb |   18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
 
-commit 272d9106cec43b0f219edd92a6f7bd3f9875a761
+commit ea668d73c18e3df33625cba4352ad5f6966e0eb4
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Sep 12 20:35:47 2011 +0900
+Date:   Fri Mar 20 14:03:43 2015 +0900
 
-    Added new ChangeLog, showing changes after 1.4.2 release.
-    
-     * Added new ChangeLog, showing changes after 1.4.2 release.
-       For the changes before 1.4.2, see doc/ChangeLog-before-1.4.2.
-       For the changes before 1.3.1, see doc/ChangeLog-before-1.3.1.
+    delete obsolete $Id:$ line
 
- ChangeLog |   64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 64 insertions(+)
- create mode 100644 ChangeLog
+ test/unit/bio/appl/sim4/test_report.rb |    1 -
+ 1 file changed, 1 deletion(-)
 
-commit 941493378f9884978c81d5f63ee4ed5c175d4bea
+commit 1abb8d362a0f2443b48923bcccba3d7d0caa1f1d
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Sep 12 20:28:28 2011 +0900
+Date:   Fri Mar 20 13:57:33 2015 +0900
 
-    Rakefile: add new task :rechangelog to update ChangeLog using git log.
+    Ruby 2.2 support: some tests did not run with test-unit gem
     
-     * Rakefile: add new task :rechangelog to update ChangeLog using
-       git log. Note that the tag name (currently 1.4.2) is hardcoded
-       in Rakefile.
+     * Ruby 2.2 support: test/unit/bio/appl/sim4/test_report.rb
+       Support for test-unit gem bundled in Ruby 2.2.
+       See commit log b9488a64abb780c5e9b6cd28e8264bad399fa749 for details.
 
- Rakefile |    9 +++++++++
- 1 file changed, 9 insertions(+)
+ test/unit/bio/appl/sim4/test_report.rb |   62 +++++++++++++++++++++++---------
+ 1 file changed, 46 insertions(+), 16 deletions(-)
 
-commit 1c89e6546223c3c05ea79b8ade4b493580851efa
+commit b9488a64abb780c5e9b6cd28e8264bad399fa749
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Sep 12 20:24:49 2011 +0900
+Date:   Fri Mar 20 13:13:28 2015 +0900
 
-    renamed ChangeLog to doc/ChangeLog-before-1.4.2
+    Ruby 2.2 support: some tests did not run with test-unit gem
+    
+     *  Ruby 2.2 support: test/unit/bio/appl/blast/test_report.rb:
+        With test-unit gem bundled in Ruby 2.2, test methods inherited
+        from a parent class and executed in the parent class do not
+        run in the child class. To avoid the behavior, test methods
+        are moved to modules and test classes are changed to include
+        the modules.
 
- ChangeLog                  | 5013 --------------------------------------------
- doc/ChangeLog-before-1.4.2 | 5013 ++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 5013 insertions(+), 5013 deletions(-)
- delete mode 100644 ChangeLog
- create mode 100644 doc/ChangeLog-before-1.4.2
+ test/unit/bio/appl/blast/test_report.rb |  156 ++++++++++++++++++++++---------
+ 1 file changed, 110 insertions(+), 46 deletions(-)
 
-commit 2233fbada55034bd16fb5b9c642292b4b6ccca83
+commit febe8bbf614e530f597d7306d33df5f5f4ee6699
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Sep 12 20:22:49 2011 +0900
+Date:   Thu Mar 19 00:55:09 2015 +0900
 
-    ChangeLog updated: add log about 1.4.2 release
+    try to use bio-old-biofetch-emulator gem
+    
+     * bin/br_biofetch.rb: try to use bio-old-biofetch-emulator gem.
+       Without bio-old-biofetch-emulator, the program exits with error
+       message when default BioRuby BioFetch server is specified.
 
- ChangeLog |    9 +++++++++
- 1 file changed, 9 insertions(+)
+ bin/br_biofetch.rb |   19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
 
-commit 1c02ab0488e4097a2cf5c16180c3179c78e3d572
+commit 08450e0a35cbf5596dd30238d23aa7a7296c8f67
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Sep 12 19:40:54 2011 +0900
+Date:   Thu Mar 19 00:36:10 2015 +0900
 
-    New RELEASE_NOTES.rdoc for next release version.
+    do not repeat default_url and another_url
 
- RELEASE_NOTES.rdoc |   47 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 47 insertions(+)
- create mode 100644 RELEASE_NOTES.rdoc
+ bin/br_biofetch.rb |   14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
 
-commit 4e63e69e98c0c440ec476ef3407fcc8fd2411056
+commit 8e39d3411405b09cc6ea55ba31e5206536ebf59d
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Sep 12 19:32:48 2011 +0900
+Date:   Wed Mar 18 23:57:59 2015 +0900
 
-    renamed RELEASE_NOTES.rdoc to doc/RELEASE_NOTES-1.4.2.rdoc
+    Revert e29fc5fadbe0dae6528cf49637496dc2df3ec0dc
+    
+     * bin/br_biofetch.rb: revert e29fc5fadbe0dae6528cf49637496dc2df3ec0dc
+       because the old deprecated bioruby biofetch server can be emulated
+       by bio-old-biofetch-emulator gem package.
 
- RELEASE_NOTES.rdoc           |  132 ------------------------------------------
- doc/RELEASE_NOTES-1.4.2.rdoc |  132 ++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 132 insertions(+), 132 deletions(-)
- delete mode 100644 RELEASE_NOTES.rdoc
- create mode 100644 doc/RELEASE_NOTES-1.4.2.rdoc
+ bin/br_biofetch.rb |   15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+commit 849c38931a64b7ff2ba7ec46a495e65a99a869fb
+Author: Ben J. Woodcroft <donttrustben near gmail.com>
+Date:   Wed Aug 8 09:44:09 2012 +1000
 
-commit 9c5c8cafc3ec372ef80aa20d01d13034f94d5af2
+    add FastaFormat#first_name method
+
+ lib/bio/db/fasta.rb            |   17 ++++++++++++++++
+ test/unit/bio/db/test_fasta.rb |   42 +++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 58 insertions(+), 1 deletion(-)
+
+commit 888a70508c0392cae89021feba5c4a6a62228a11
 Author: Naohisa Goto <ng at bioruby.org>
-Date:   Fri Sep 2 12:02:41 2011 +0900
+Date:   Fri Nov 14 15:08:35 2014 +0900
 
-    Bio::BIORUBY_EXTRA_VERSION set to ".5000" (unstable version).
+    fix typo
+    
+     * fix typo. Thanks to Iain Barnett who reported the bug in
+       https://github.com/bioruby/bioruby/pull/93
+       (c4843d65447f6a434da523c9c313f34d025f36f8)
 
- lib/bio/version.rb |    2 +-
+ lib/bio/sequence/compat.rb |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit afc6df190109649e8eb11b2af1184ddfcf5327d3
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Nov 14 14:29:42 2014 +0900
+
+    add documentation when gc_percent is not enough
+
+ lib/bio/sequence/na.rb |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit bb63f67f2dfe6dba5c70ada033ca0cc1ecaa7783
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Nov 13 21:43:00 2014 +0900
+
+    Add tests for Bio::PubMed#search, query, pmfetch
+    
+     * Add tests for Bio::PubMed#search, query, pmfetch, although
+       they will be deprecated in the future.
+     * This commit and commit bfe4292c51bba5c4032027c36c35e98f28a9605a
+       are inspired by https://github.com/bioruby/bioruby/pull/76
+       (though the pull request have not been merged), and the commits
+       fix the issue https://github.com/bioruby/bioruby/issues/75.
+       Thanks to Paul Leader who reported the issue and the pull request.
+
+ test/network/bio/io/test_pubmed.rb |   49 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 49 insertions(+)
+
+commit 74edba100da83c27f2edb7a9edc9ec98265a7cff
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Nov 13 12:05:12 2014 +0900
+
+    Change default tool and email values
+    
+     * Default "tool" and "email" values are changed to "bioruby" and
+       "staff at bioruby.org" respectively. Now, the author of a script
+       do not need to set his/her email address unless the script makes
+       excess traffic to NCBI.
+     * Update RDoc documentation
+
+ lib/bio/io/ncbirest.rb |   48 +++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 43 insertions(+), 5 deletions(-)
+
+commit bfe4292c51bba5c4032027c36c35e98f28a9605a
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Nov 13 11:54:53 2014 +0900
+
+    Bug fix: use NCBI E-Utilities instead of old deprecated API
+    
+     * Bio::PubMed#search, query, pmfetch: remove old code using deprecated
+       and/or unofficial web API, and change use esearch or efetch methods
+       which use NCBI E-utilities. These methods will be deprecated in the
+       future. To indicate this, show warning message if $VERBOSE is true.
+     * Update RDoc documentation
+
+ lib/bio/io/pubmed.rb |  157 ++++++++++++++++++++++++--------------------------
+ 1 file changed, 76 insertions(+), 81 deletions(-)
+
+commit d78173a6eb6d8177e733decc0b8137fac067aa82
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 17:41:32 2014 +0900
+
+    remove unused $Id:$ line
+
+ bin/br_biofetch.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit e29fc5fadbe0dae6528cf49637496dc2df3ec0dc
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 17:31:38 2014 +0900
+
+    Change default server to EBI Dbfetch server; remove BioRuby BioFetch server
+    
+     * Change default server to EBI Dbfetch server.
+     * The BioRuby BioFetch server is removed. When "-r" option (force to use
+       BioRuby server) is specified, warning message is shown, and the program
+       exits with code 1 (abnormal exit).
+     * Usage message is also changed.
+
+ bin/br_biofetch.rb |   15 +++++++--------
+ 1 file changed, 7 insertions(+), 8 deletions(-)
+
+commit 94ecac33e87e444d9fe991340c2d8f3709bc6d90
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 17:19:30 2014 +0900
+
+    fix documentation reflecting recent changes of Bio::Fetch
+
+ lib/bio/io/fetch.rb |   33 ++++++++++++++++++++-------------
+ 1 file changed, 20 insertions(+), 13 deletions(-)
+
+commit 06a9db014614818ef35108928415ef18e8c8ae2c
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 16:41:26 2014 +0900
+
+    documentation about incompatible changes of Bio::Fetch
+
+ RELEASE_NOTES.rdoc |   22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+commit 6d94e949b6d325f27b45b816a8305f828d049ec6
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 16:35:50 2014 +0900
+
+    Issue about Bio::Fetch and BioRuby BioFetch server is resolved
+    
+     * Issue about Bio::Fetch is resolved by recent commits.
+    
+     * The BioRuby BioFetch server is deprecated. There is no hope to restart
+       the service again. EBI Dbfetch server is an alternative.
+
+ KNOWN_ISSUES.rdoc |    9 ---------
+ 1 file changed, 9 deletions(-)
+
+commit 699cd3ff136310a551d30e0ddd7fbe66e483b5be
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 15:27:11 2014 +0900
+
+    update RDoc documents for Bio::Fetch
+
+ lib/bio/io/fetch.rb |   61 +++++++++++++++++++++++++++++++++------------------
+ 1 file changed, 40 insertions(+), 21 deletions(-)
+
+commit c7837f8e5ee2cc1c3085da74567a2b25280bbb8f
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 14:48:48 2014 +0900
+
+    Incompatibile change: remove Bio::Fetch.query; add Bio::Fetch::EBI.query
+    
+     * Incompatible change: remove a class method Bio::Fetch.query because
+       default server URL in Bio::Fetch is deprecated.
+    
+     * New class method: Bio::Fetch::EBI.query. This can be used as an
+       alternative method of deprecated Bio::Fetch.query method.
+
+ lib/bio/io/fetch.rb |   35 ++++++++++++++++++-----------------
+ 1 file changed, 18 insertions(+), 17 deletions(-)
+
+commit f9048684acaff0fcd00b458a946d5f692706325b
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 14:24:22 2014 +0900
+
+    Incompatible change: Default server in Bio::Fetch.new is deperecated
+    
+     * Incompatible change: Default server URL in Bio::Fetch.new is deprecated.
+       Users must explicitly specify the URL. Alternatively, users must change
+       their code to use Bio::Fetch::EBI.
+    
+     * New class Bio::Fetch::EBI, EBI Dbfetch client. This acts the same as
+       Bio::Fetch.new(Bio::Fetch::EBI::URL) with default database name
+       "ena_sequence".
+
+ lib/bio/io/fetch.rb |   36 +++++++++++++++++++++++++++++++++---
+ 1 file changed, 33 insertions(+), 3 deletions(-)
+
+commit e8919f4f57fc545ca194bebb08c11159b36071cb
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 13:43:28 2014 +0900
+
+    removed unused variables
+
+ lib/bio/io/fetch.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit faec95656b846a7a17cd6a1dbc633dda63cb5b6e
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Nov 11 11:44:00 2014 +0900
+
+    Updated URL of EMBL-EBI Dbfetch
+
+ lib/bio/io/fetch.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 85be893655f68aafbf7e13badd20bf7f26cd7328
+Author: Jose Irizarry <protechpr at gmail.com>
+Date:   Mon Dec 24 12:30:55 2012 -0400
+
+    Update lib/bio/io/fetch.rb
+    
+    Use EBI's dbfetch endpoint as default since BioRuby's endpoint has been disabled for a while now.
+
+ lib/bio/io/fetch.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 163cc06547beed653e19b8c6e71e829d85f2f99c
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Oct 21 16:42:30 2014 +0900
+
+    Doc bug fix: wrong sample code
+
+ lib/bio/appl/paml/codeml.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 97143139d2d4a66366576a8e62518e93fa5afccf
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Oct 21 15:47:52 2014 +0900
+
+    Prevent to repeat calculations of total bases
+    
+     * Bio::Sequence::NA#gc_content, at_content, gc_skew, at_skew: Prevent to
+       repeat calculations of total bases.
+
+ lib/bio/sequence/na.rb |   20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+commit b5dbd882e000842fef65e10290b379bfafdddf06
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Oct 21 15:41:13 2014 +0900
+
+    Documentation bug fix: Return value is Rational or Float.
+    
+     * Bio::Sequence::NA#gc_content, at_content, gc_skew, at_skew: Return value
+       is Rational or Float in recent versions of Ruby. Documentation added for
+       the treatment of "u" and to return 0.0 if there are no bases.
+       Reported by ctSkennerton (https://github.com/bioruby/bioruby/issues/73 ).
+
+ lib/bio/sequence/na.rb |   47 +++++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 43 insertions(+), 4 deletions(-)
+
+commit 3ba98d52ce57488e604dd7ac388a874e5b40ae9d
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Aug 12 00:58:38 2014 +0900
+
+    regenerate bioruby.gemspec with rake regemspec
+
+ bioruby.gemspec |   14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+commit a9724d339582952b40c928beccf91376d4e63315
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Aug 5 19:20:42 2014 +0900
+
+    Update URIs
+    
+     * Update URIs.
+     * Remove links to RubyForge and RAA which have already been closed.
+     * Add some words for Ruby 1.9 or later.
+
+ README.rdoc |   24 +++++++++++-------------
+ 1 file changed, 11 insertions(+), 13 deletions(-)
+
+commit 5f3569faaf89ebcd2b2cf9cbe6b3c1f0544b2679
+Author: Iain Barnett <iainspeed at gmail.com>
+Date:   Wed Mar 5 02:11:07 2014 +0000
+
+    Refactor Bio::AminoAcid#weight: Early return clearer and idiomatic.
+
+ lib/bio/data/aa.rb |   26 ++++++++++++--------------
+ 1 file changed, 12 insertions(+), 14 deletions(-)
+
+commit c229a20887fcb6df9a7ba49ad5a23e175056fa8d
+Author: Iain Barnett <iainspeed at gmail.com>
+Date:   Wed Mar 5 02:02:45 2014 +0000
+
+    Fixed the stack level too deep errors by using Hash#invert.
+
+ lib/bio/data/aa.rb |   18 +-----------------
+ 1 file changed, 1 insertion(+), 17 deletions(-)
+
+commit 08dd928df30f5b39c255f9f70dbed8410d395cdf
+Author: Iain Barnett <iainspeed at gmail.com>
+Date:   Tue Mar 4 01:22:51 2014 +0000
+
+    Refactored to shorten, remove rescues, and clarify.
+
+ lib/bio/alignment.rb |   19 +++++++------------
+ 1 file changed, 7 insertions(+), 12 deletions(-)
+
+commit 112aa284cb1ebecc1d5de186edf2b385649a7268
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Wed Mar 19 14:48:32 2014 +0900
+
+    Bug fix: SEQRES serNum digits were extended in PDB v3.2 (2008)
+    
+    * Bug fix: SEQRES serNum digits were extended in PDB v3.2 (2008).
+      Thanks to a researcher who reports the patch via email.
+
+ lib/bio/db/pdb/pdb.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit ecd5e0c86b04aa918b71c859568425fa39ebbde5
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Jan 18 04:22:51 2014 +0900
+
+    suppress "source :rubygems is deprecated" warning
+
+ gemfiles/Gemfile.travis-jruby1.8 |    2 +-
+ gemfiles/Gemfile.travis-jruby1.9 |    2 +-
+ gemfiles/Gemfile.travis-ruby1.8  |    2 +-
+ gemfiles/Gemfile.travis-ruby1.9  |    2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 4bda345fe3de9cf1b64c26f3dca1cb3727c946d0
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Jan 18 04:22:03 2014 +0900
+
+    gemfiles/Gemfile.travis-rbx: Gemfile for rbx (Rubinius) on Travis-ci
+    
+     * gemfiles/Gemfile.travis-rbx: Gemfile for rbx (Rubinius) on Travis-ci
+     * .travis.yml is modified to use gemfile/Gemfile.travis-rbx for rbx.
+
+ .travis.yml                 |    4 ++--
+ gemfiles/Gemfile.travis-rbx |   16 ++++++++++++++++
+ 2 files changed, 18 insertions(+), 2 deletions(-)
+ create mode 100644 gemfiles/Gemfile.travis-rbx
+
+commit dcff544d6d0a967eb853b97ba9faa30eaa6fd9dc
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Jan 18 04:13:50 2014 +0900
+
+    .travis.yml: fix mistakes
+
+ .travis.yml |    8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+commit f0f67f295f05a5e1e30c479621c25498e2c8f6f2
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Jan 18 03:56:54 2014 +0900
+
+    Ruby 2.1 workaround: Array#uniq does not always choose the first item
+    
+     * Ruby 2.1 workaround: Array#uniq does not always choose the first item.
+       Thanks to Andrew Grimm who reported the issue.
+       (https://github.com/bioruby/bioruby/issues/92 )
+       Note that the behavior change is also regarded as a bug in Ruby and
+       is fixed. (https://bugs.ruby-lang.org/issues/9340 )
+
+ test/unit/bio/test_pathway.rb |   35 +++++++++++++++++++++++++----------
+ 1 file changed, 25 insertions(+), 10 deletions(-)
+
+commit e92e09edf5904f51d3e73e61d13fce4159a543c5
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Jan 18 03:32:05 2014 +0900
+
+    .travis.yml: workaround to avoid error in Ruby 1.8.7 and jruby-18mode
+    
+     * workaround to avoid error in Ruby 1.8.7 and jruby-18mode
+       (reference: https://github.com/rubygems/rubygems/pull/763 )
+
+ .travis.yml |    2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 655a675096962710896fb458afcac9b5deb1fa5f
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Jan 18 03:22:44 2014 +0900
+
+    .travis.yml: rbx version is changed to 2.2.3
+    
+     * rbx version is changed to 2.2.3
+     * add dependent gems for rbx platforms, described in
+       http://docs.travis-ci.com/user/languages/ruby/
+
+ .travis.yml |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit d2f5b882d5e2acf35d0c783a56aa47533b9f2bd5
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Jan 11 03:46:45 2014 +0900
+
+    .travis.yml: change ruby versions for tar and gem integration tests
+    
+     * In tar and gem integration tests, Ruby versions are changed to
+       MRI 2.0.0 and jruby-19mode.
+     * Add jruby-18mode
+     * Add rbx-2.1.1
+
+ .travis.yml |   32 ++++++++++++++++++++++----------
+ 1 file changed, 22 insertions(+), 10 deletions(-)
+
+commit 71991af394b937d35e2bbbc84a21e65ffba7714d
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 9 00:57:25 2014 +0900
+
+    .travis.yml: Add 2.1.0 and 2.0.0, remove rbx-XXmode
+    
+     * Add 2.1.0 and 2.0.0
+     * Remove rbx-18mode and rbx-19mode
+     * 1.9.2 is moved from "include" to "rvm".
+     * 1.8.7 is moved from "rvm" to "include", and remove
+       "gemfiles/Gemfile.travis-ruby1.8" line from "gemfile".
+     * Remove "exclude" and simplify build matrix.
+     * Suggested by agrimm in https://github.com/bioruby/bioruby/pull/91
+
+ .travis.yml |   27 +++++----------------------
+ 1 file changed, 5 insertions(+), 22 deletions(-)
+
+commit 80966bc875cc6e01978b6c9272f6ddd8f344aa62
+Author: Brynjar Smari Bjarnason <binni at binnisb.com>
+Date:   Mon Dec 9 14:57:42 2013 +0100
+
+    Bug fix: Only do gsub on bio_ref.reference.authors if it exists.
+    
+     * Bug fix: Only do gsub on bio_ref.reference.authors if it exists.
+       Fix https://github.com/bioruby/bioruby/issues/89
+
+ lib/bio/db/biosql/sequence.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3337bbd3be2affcef44202a0c924b3e22dafd856
+Author: Brynjar Smari Bjarnason <binni at binnisb.com>
+Date:   Mon Dec 9 14:55:24 2013 +0100
+
+    Bug fix: Missing require when generating genbank output for BioSQL sequence
+    
+     * Bug fix: Missing require when generating genbank output for BioSQL
+       sequence. Partly fix https://github.com/bioruby/bioruby/issues/89
+
+ lib/bio/db/biosql/biosql_to_biosequence.rb |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 1f829ae8e8c89c5c24e7bc7aa8ed5fa25e8ef6c2
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Nov 23 18:17:43 2013 +0900
+
+    Benchmark example1-seqnos.aln in addition to example1.aln
+    
+     * sample/benchmark_clustalw_report.rb: Benchmark parsing speed of
+       example1-seqnos.aln in addition to example1.aln.
+
+ sample/benchmark_clustalw_report.rb |   28 ++++++++++++++++++++++------
+ 1 file changed, 22 insertions(+), 6 deletions(-)
+
+commit c5d3e761859fa72c18f9301d84c31070f35e733e
+Author: Andrew Grimm <andrew.j.grimm at gmail.com>
+Date:   Tue Sep 17 21:15:56 2013 +1000
+
+    Add benchmark script for Bio::ClustalW::Report.
+
+ sample/benchmark_clustalw_report.rb |   31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+ create mode 100644 sample/benchmark_clustalw_report.rb
+
+commit 07c14e94cdb94cf9ba8a2bf050572ae1cbf24cff
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Nov 23 17:49:54 2013 +0900
+
+    Bio::ClustalW::Report#do_parse speed optimization
+    
+     * Bio::ClustalW::Report#do_parse speed optimization. Thanks to
+       Andrew Grimm who indicates the optimization point.
+       (https://github.com/bioruby/bioruby/pull/86 )
+     * "$" in the regular expression is changed to "\z". In this context,
+       the "$" was intended to be matched with only the end of the string.
+
+ lib/bio/appl/clustalw/report.rb |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 6a78028d4f595ecb5b4600d0f238b07a2d80bdd5
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Nov 23 15:52:15 2013 +0900
+
+    New test data: ClustalW with -SEQNOS=ON option
+    
+     * test/data/clustalw/example1-seqnos.aln: New test data: ClustalW
+       running with -SEQNOS=ON option.
+     * Bio::TestClustalWReport::TestClustalWReportSeqnos: new test class
+       that parses the above data.
+
+ test/data/clustalw/example1-seqnos.aln     |   58 ++++++++++++++++++++++++++++
+ test/unit/bio/appl/clustalw/test_report.rb |   11 ++++++
+ 2 files changed, 69 insertions(+)
+ create mode 100644 test/data/clustalw/example1-seqnos.aln
+
+commit f5da0bbb4b1639616bb8c63ff8c58840e140ef8b
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Nov 23 15:35:31 2013 +0900
+
+    Simplify test data path in setup
+    
+     * Bio::TestClustalWReport::TestClustalWReport#setup: simplify test data
+       filename path.
+     * Modify indentes and void lines.
+
+ test/unit/bio/appl/clustalw/test_report.rb |   10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+commit 8f0bea1d3252d0de9e2d91dc31ef8a9552c2d758
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat Nov 23 15:21:38 2013 +0900
+
+    Common test methods are moved to a module
+    
+     * New namespace module Bio::TestClustalWReport.
+     * Common test methods are moved to CommonTestMethods,
+       and test classes using the methods include it.
+     * The test_sequences method is split into two methods
+       CommonTestMethods#test_sequence0 and test_sequence1.
+
+ test/unit/bio/appl/clustalw/test_report.rb |   97 +++++++++++++++-------------
+ 1 file changed, 53 insertions(+), 44 deletions(-)
+
+commit edda65b8fb32c2eee6b0652074981c31aa68b0eb
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Aug 23 23:51:59 2013 +0900
+
+    Test bug fix: Read test file with binary mode to avoid encoding error
+    
+     * Test bug fix: Read test file with binary mode to avoid string encoding
+       error. Thanks to nieder (github.com/nieder) who reports the bug.
+       (https://github.com/bioruby/bioruby/issues/84)
+
+ test/unit/bio/db/test_phyloxml.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 011d6fe5f016408891c5da3143c83e2564ccbf27
+Author: meso_cacase <y-naito at dbcls.rois.ac.jp>
+Date:   Fri Apr 5 01:13:27 2013 +0900
+
+    Modified siRNA design rules by Ui-Tei and Reynolds
+    
+     * Ui-Tei rule: Avoided contiguous GCs 10 nt or more.
+     * Reynolds rule: Total score of eight criteria is calculated.
+       * Returns numerical score for functional siRNA instead of returning 'true'.
+       * Returns 'false' for non-functional siRNA, as usual.
+     * Unit tests are modified to reflect these changes.
+
+ lib/bio/util/sirna.rb            |   92 +++++++++++++++++++++++++++++++-------
+ test/unit/bio/util/test_sirna.rb |   44 +++++++++---------
+ 2 files changed, 98 insertions(+), 38 deletions(-)
+
+commit b6e7953108ebf34d61bc79ee4bdae1092cfe339f
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jun 28 15:40:57 2013 +0900
+
+    Use Bio::UniProtKB instead of Bio::UniProt
+    
+     * Use Bio::UniProtKB instead of Bio::UniProt.
+     * Test class names are also changed from UniProt to UniProtKB.
+
+ test/unit/bio/db/embl/test_uniprotkb_new_part.rb |   22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+commit cddd35cf8d64abfff8bd6a8372d019fc4c32848c
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jun 28 15:26:20 2013 +0900
+
+    rename test/unit/bio/db/embl/test_uniprot_new_part.rb to test_uniprotkb_new_part.rb
+
+ test/unit/bio/db/embl/test_uniprot_new_part.rb   |  208 ----------------------
+ test/unit/bio/db/embl/test_uniprotkb_new_part.rb |  208 ++++++++++++++++++++++
+ 2 files changed, 208 insertions(+), 208 deletions(-)
+ delete mode 100644 test/unit/bio/db/embl/test_uniprot_new_part.rb
+ create mode 100644 test/unit/bio/db/embl/test_uniprotkb_new_part.rb
+
+commit 1b51d0940712a6f144f8268dc77048bc7ec7d983
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jun 28 15:21:36 2013 +0900
+
+    Reflect the rename of Bio::UniProtKB from SPTR to UniProtKB.
+    
+     * Reflect the rename of Bio::UniProtKB from SPTR to UniProtKB.
+     * Test class names are also changed.
+
+ test/unit/bio/db/embl/test_uniprotkb.rb |  223 +++++++++++++++----------------
+ 1 file changed, 111 insertions(+), 112 deletions(-)
+
+commit 68494aa862c3495def713e6cad6fc478f223416f
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jun 28 15:01:15 2013 +0900
+
+    test_sptr.rb is renamed to test_uniprotkb.rb
+
+ test/unit/bio/db/embl/test_sptr.rb      | 1807 -------------------------------
+ test/unit/bio/db/embl/test_uniprotkb.rb | 1807 +++++++++++++++++++++++++++++++
+ 2 files changed, 1807 insertions(+), 1807 deletions(-)
+ delete mode 100644 test/unit/bio/db/embl/test_sptr.rb
+ create mode 100644 test/unit/bio/db/embl/test_uniprotkb.rb
+
+commit e1ed7fab4c0350e6866dd420a93e950c53063f38
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jun 28 14:52:08 2013 +0900
+
+    Add autoload of Bio::UniProtKB, and modify comments of deprecated classes.
+
+ lib/bio.rb |   18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+commit 7c78cb1b275a845e215f9a6da67026836efc5807
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jun 28 14:28:02 2013 +0900
+
+    Bio::SwissProt and Bio::TrEMBL are deprecated
+    
+     * Bio::SwissProt and Bio::TrEMBL are deprecated.
+     * Show warning messages when using these classes.
+
+ lib/bio/db/embl/swissprot.rb |   41 ++++++++++++----------------------------
+ lib/bio/db/embl/trembl.rb    |   43 +++++++++++++-----------------------------
+ 2 files changed, 25 insertions(+), 59 deletions(-)
+
+commit b998ad13849ff7f1d69ed0c640a2e1bafe3fc957
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jun 28 14:27:36 2013 +0900
+
+    Bio::UniProt is changed to be an alias of Bio::UniProtKB.
+
+ lib/bio/db/embl/uniprot.rb |   41 ++++++++++++-----------------------------
+ 1 file changed, 12 insertions(+), 29 deletions(-)
+
+commit f46324e2fb6a2bc3e4680c8064dc0fc3d89e6f24
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jun 28 14:21:56 2013 +0900
+
+    Bio::SPTR is renamed as Bio::UniProtKB and changed to an alias
+    
+     * Bio::SPTR is renamed to Bio::UniProtKB.
+     * For older programs which use Bio::SPTR, set Bio::SPTR as an alias of
+       Bio::UniProtKB.
+
+ lib/bio/db/embl/sptr.rb      |   20 ++++++
+ lib/bio/db/embl/uniprotkb.rb |  147 +++++++++++++++++++++---------------------
+ 2 files changed, 93 insertions(+), 74 deletions(-)
+ create mode 100644 lib/bio/db/embl/sptr.rb
+
+commit 70816d90a6ef290c7ca7f50d492e7c4f836aadd8
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jun 27 18:16:38 2013 +0900
+
+    Rename lib/bio/db/embl/sptr.rb to uniprotkb.rb
+
+ lib/bio/db/embl/sptr.rb      | 1456 ------------------------------------------
+ lib/bio/db/embl/uniprotkb.rb | 1456 ++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 1456 insertions(+), 1456 deletions(-)
+ delete mode 100644 lib/bio/db/embl/sptr.rb
+ create mode 100644 lib/bio/db/embl/uniprotkb.rb
+
+commit 2a10ded8e1502e0db5ec3b2e060f658ee53aafd0
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jun 27 16:36:58 2013 +0900
+
+    Bio::RefSeq and Bio::DDBJ are deprecated. Show warnings.
+    
+     * Bio::RefSeq and Bio::DDBJ are deprecated because they were only
+       an alias of Bio::GenBank. Please use Bio::GenBank instead.
+     * Show warning message when loading the classes and initializing
+       a new instance.
+     * Changed to require genbank.rb only when GenBank is not defined.
+       This might reduce the possibility of circular require.
+
+ lib/bio/db/genbank/ddbj.rb   |   11 +++++++++--
+ lib/bio/db/genbank/refseq.rb |   14 +++++++++++---
+ 2 files changed, 20 insertions(+), 5 deletions(-)
+
+commit 118d0bff58b48f69505eef5dcc2f961ac6e0d9de
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jun 27 16:08:55 2013 +0900
+
+    Remove descriptions about DDBJ Web API (WABI)
+
+ KNOWN_ISSUES.rdoc |    8 --------
+ 1 file changed, 8 deletions(-)
+
+commit fe8f976c7ced4d525a4eabd728269f71326cf001
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jun 27 13:41:19 2013 +0900
+
+    Remove ddbjsoap method that uses Bio::DDBJ::XML
+
+ lib/bio/shell/plugin/soap.rb |   28 ----------------------------
+ 1 file changed, 28 deletions(-)
+
+commit 54bef3fc48bb48eb198537a9fba6379f33f036cc
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jun 27 13:39:42 2013 +0900
+
+    Remove Bio::Blast::Remote::DDBJ from the comment line
+
+ test/network/bio/appl/blast/test_remote.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a7c5a656dab1bb8ada6b36ec003a89aec9e26671
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Jun 25 18:34:46 2013 +0900
+
+    Delete sample/demo_ddbjxml.rb which uses Bio::DDBJ::XML
+
+ sample/demo_ddbjxml.rb |  212 ------------------------------------------------
+ 1 file changed, 212 deletions(-)
+ delete mode 100644 sample/demo_ddbjxml.rb
+
+commit e55293b67d305382cfb30b45aa30af82a574b580
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Jun 25 18:29:54 2013 +0900
+
+    Remove Bio::Blast::Remote::DDBJ, Bio::Blast.ddbj and related components
+    
+     * Remove Bio::Blast::Remote::DDBJ, Bio::Blast.ddbj and related components
+       which use Bio::DDBJ::XML or Bio::DDBJ::REST.
+
+ lib/bio/appl/blast/ddbj.rb                 |  131 ----------------------------
+ lib/bio/appl/blast/remote.rb               |    9 --
+ test/network/bio/appl/blast/test_remote.rb |   14 ---
+ test/network/bio/appl/test_blast.rb        |   12 ---
+ 4 files changed, 166 deletions(-)
+ delete mode 100644 lib/bio/appl/blast/ddbj.rb
+
+commit 19a5c992096a68a26f8684ee2ae128d17f2a49fd
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Jun 25 16:52:05 2013 +0900
+
+    Remove Bio::DDBJ::XML and REST due to suspension of DDBJ Web API (WABI)
+    
+     * Remove Bio::DDBJ::XML and Bio::DDBJ::REST due to suspension of
+       DDBJ Web API (WABI). DDBJ says that it is now under reconstruction
+       and the API will be completely changed. Thus, I've decided to throw
+       away current API client in Ruby and to implement new one with the new
+       API.
+     * Autoload lines in lib/bio/db/genbank/ddbj.rb are removed.
+     * Tests are also removed.
+
+ lib/bio/db/genbank/ddbj.rb           |    3 -
+ lib/bio/io/ddbjrest.rb               |  344 -------------------------
+ lib/bio/io/ddbjxml.rb                |  458 ----------------------------------
+ test/network/bio/io/test_ddbjrest.rb |   47 ----
+ test/unit/bio/io/test_ddbjxml.rb     |   81 ------
+ 5 files changed, 933 deletions(-)
+ delete mode 100644 lib/bio/io/ddbjrest.rb
+ delete mode 100644 lib/bio/io/ddbjxml.rb
+ delete mode 100644 test/network/bio/io/test_ddbjrest.rb
+ delete mode 100644 test/unit/bio/io/test_ddbjxml.rb
+
+commit 1f852e0bf3c830aaa40dc7fc2bd535418af8dfd1
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat May 25 03:00:08 2013 +0900
+
+    regenerate bioruby.gemspec with rake regemspec
+
+ bioruby.gemspec |    2 --
+ 1 file changed, 2 deletions(-)
+
+commit 5b90959ab399f961823a7c4453392c75cf971333
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat May 25 02:58:50 2013 +0900
+
+    Update files and directories used to create package without git
+
+ bioruby.gemspec.erb |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit df29f057ded6ac73fbdce7ae04a70ead28f4cc9f
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Sat May 25 02:46:32 2013 +0900
+
+    Ruby 2.0 support: not to add ChangeLog and LEGAL to rdoc_files
+    
+     * Ruby 2.0 support: not to add ChangeLog and LEGAL to rdoc_files.
+       Because ChangeLog is not rdoc format, rdoc bundled with Ruby 2.0
+       raises error during parsing.
+
+ bioruby.gemspec.erb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 930a5fcf5e38ae2bdfeee62eed9a46db1c519fae
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:29:33 2013 +0900
+
+    Remove unused variable in lib/bio/util/contingency_table.rb
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/util/contingency_table.rb |    2 --
+ 1 file changed, 2 deletions(-)
+
+commit 490b3f7ca3b987c1a17852b641aad3125fc565cd
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:28:30 2013 +0900
+
+    Rename unused variable in lib/bio/tree.rb
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/tree.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit c024fb972edb52e213165149273fc7ac4bec2f6e
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu May 16 21:26:44 2013 +0900
+
+    Refactoring to suppress "warning: assigned but unused variable"
+
+ lib/bio/pathway.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b3b2a268d6118307eed88fce1d805a61c6fb843d
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:18:44 2013 +0900
+
+    Remove unused variable in lib/bio/db/transfac.rb
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/db/transfac.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit dd8abf1f95af4a70cf0b86b0e719e3dcfd8abecf
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu May 16 21:13:34 2013 +0900
+
+    Refactoring to suppress warnings "assigned but unused variable"
+
+ lib/bio/db/nexus.rb |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit b37512fb8028cf30bb2f813928aed49a5b39dce3
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:15:59 2013 +0900
+
+    Rename unused variable in lib/bio/db/kegg/reaction.rb
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/db/kegg/reaction.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a81fca3b1247ae4a3e05bfa912c8181efdfca81b
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:15:09 2013 +0900
+
+    Remove unused variable in lib/bio/db/go.rb
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/db/go.rb |    6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 69b0c433e76faffba6a48dfc38dcc2b1444ce2b7
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:13:24 2013 +0900
+
+    Rename unused variable in lib/bio/db/gff.rb
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/db/gff.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 88c214fe3183c161cda94a3a4cda442b3a769965
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu May 9 23:46:28 2013 +0900
+
+    add a dummy line to suppress "warning: assigned but unused variable"
+
+ lib/bio/db/embl/sptr.rb |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 1ead12f9c951a983c6775f79ca1b6944f95a61b9
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu May 9 23:41:54 2013 +0900
+
+    Refactoring to suppress warnings "assigned but unused variable"
+
+ lib/bio/db/embl/embl.rb |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+commit 8d0eb5105eb2f419f5b4f4fbb191b8fb2032664b
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:01:27 2013 +0900
+
+    Remove unused variable in lib/bio/appl/paml/common
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/appl/paml/common.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c6cf0d2e2a3a0b9062f9464dba0e363f460d04e4
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu May 9 23:27:54 2013 +0900
+
+    suppress warning "assigned but unused variable"
+
+ lib/bio/appl/paml/codeml/report.rb |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 8834d50544b03a92a3ca816704b179e4333d1dfc
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 16:59:18 2013 +0900
+
+    Remove unused variable in lib/bio/appl/meme/mast/report
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/appl/meme/mast/report.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fe51a49ee68c41a3ce0c48c39db6e8a28d1689ee
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 16:57:44 2013 +0900
+
+    Remove unused variable in lib/bio/appl/blast/report
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ lib/bio/appl/blast/report.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 622497ff309412fb986c5315d55d41c3ca48d362
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:25:29 2013 +0900
+
+    Fix indent in lib/bio/map
+    
+    This commit removes below interpreter warning.
+    
+    * warning: mismatched indentations at ...
+
+ lib/bio/map.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3ea6bcaf229fd1a71a0192253cc47e817bb64b82
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 18:05:04 2013 +0900
+
+    Remove unused variable in test/unit/bio/appl/blast/test_report
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ test/unit/bio/appl/blast/test_report.rb |    2 --
+ 1 file changed, 2 deletions(-)
+
+commit 178ca9e5244cc3aa7f0507c7d5528bb57b0858be
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 18:03:46 2013 +0900
+
+    Remove unused variable in test/unit/bio/appl/bl2seq/test_report
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ test/unit/bio/appl/bl2seq/test_report.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit b8a5c1cb9f54d9199200b406f77e8152eef96f02
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu May 9 21:20:10 2013 +0900
+
+    Add assertions and suppress "unused variable" warnings
+    
+     * Add assertions to check object id returned by forward_complement
+       and reverse_complement methods. This change also aims to suppress
+       "assigned but unused variable" warnings.
+
+ test/unit/bio/sequence/test_na.rb |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit bd8fc9b197c54c108d74fea9161c8f0dd3b041fc
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:59:09 2013 +0900
+
+    Remove unused variable in test/unit/bio/io/flatfile/test_splitter
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ test/unit/bio/io/flatfile/test_splitter.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 0a87c9e265c4560453faf84fc009b60319c75416
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:57:51 2013 +0900
+
+    Remove unused variable in test/unit/bio/db/test_phyloxml_writer
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ test/unit/bio/db/test_phyloxml_writer.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 95b2614eb32eb12428df29360d0c1f146f39a469
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu May 9 20:56:43 2013 +0900
+
+    Comment out some lines to suppress "unused variable" warnings
+
+ test/unit/bio/db/test_gff.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit b8917841559fbd506c73fdf374a8097f23a1bc37
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:51:11 2013 +0900
+
+    Remove unused variable in test/unit/bio/db/embl/test_sptr.rb
+    
+     * Remove warnings "warning: assigned but unused variable"
+     * Note that the sequence in TestSPTRUniProtRel7_6#test_10000aa is
+       a fragment of human p53 protein, and is not related with Q09165.
+
+ test/unit/bio/db/embl/test_sptr.rb |    3 ---
+ 1 file changed, 3 deletions(-)
+
+commit 6b46d324a545f509bbd238ae7ec009d586469314
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:45:47 2013 +0900
+
+    Remove unused variable in test/unit/bio/db/embl/test_embl_rel89
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ test/unit/bio/db/embl/test_embl_rel89.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit f36eeb0107e7a8315c66888ec8292ed33bd959cc
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:45:21 2013 +0900
+
+    Remove unused variable in test/unit/bio/db/embl/test_embl
+    
+    This commit removes below interpreter warning.
+    
+    * warning: assigned but unused variable
+
+ test/unit/bio/db/embl/test_embl.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit a1a2ad9b963d9bb2da8d07ae7b182bd339bea88e
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:36:59 2013 +0900
+
+    Fix indent in test/unit/bio/sequence/test_dblink
+    
+    This commit removes below interpreter warning.
+    
+    * warning: mismatched indentations at ...
+
+ test/unit/bio/sequence/test_dblink.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 345a8eb4408ca241c13c410a578490c905eb7391
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:36:21 2013 +0900
+
+    Fix indent in test/unit/bio/db/test_phyloxml
+    
+    This commit removes below interpreter warning.
+    
+    * warning: mismatched indentations at ...
+
+ test/unit/bio/db/test_phyloxml.rb |   58 ++++++++++++++++++-------------------
+ 1 file changed, 29 insertions(+), 29 deletions(-)
+
+commit ae8c7a6705a30c0c18c57df9869979a968aa63ac
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:35:07 2013 +0900
+
+    Fix indent in test/unit/bio/db/genbank/test_genbank
+    
+    This commit removes below interpreter warning.
+    
+    * warning: mismatched indentations at ...
+
+ test/unit/bio/db/genbank/test_genbank.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 872d8954e1351251fbace20e331035251ae5f806
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Thu Apr 4 17:33:23 2013 +0900
+
+    Fix indent in test/unit/bio/appl/test_blast
+    
+    This commit removes below interpreter warning.
+    
+    * warning: mismatched indentations at ...
+
+ test/unit/bio/appl/test_blast.rb |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit bd973e084695c4d777c8ecf6d566788838158165
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Wed Mar 27 03:03:49 2013 +0900
+
+    .travis.yml: rbx-18mode is moved to allow_failures
+
+ .travis.yml |    8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+commit 63e93faba74a8143a0be9595fdf87329f3015745
+Author: Andrew Grimm <andrew.j.grimm at gmail.com>
+Date:   Tue Mar 26 20:20:11 2013 +1100
+
+    Squash warning in alignment.rb: assigned but unused variable - oldkeys
+
+ lib/bio/alignment.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit bd735d6f9d6edfd1550a4279167ac06b372f847a
+Author: Andrew Grimm <andrew.j.grimm at gmail.com>
+Date:   Tue Mar 26 20:14:46 2013 +1100
+
+    Squash warning in alignment.rb: assigned but unused variable - lines
+
+ lib/bio/alignment.rb |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3e7b27f96a901a3abfc338572f98d60a9e3be498
+Author: Andrew Grimm <andrew.j.grimm at gmail.com>
+Date:   Tue Mar 26 19:44:49 2013 +1100
+
+    Squash warning in defline.rb: assigned but unused variable - idtype
+
+ lib/bio/db/fasta/defline.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit aafc03330fa79243cfa4097d356a7c304ddb7980
+Author: Kenichi Kamiya <kachick1 at gmail.com>
+Date:   Sat Feb 16 21:22:55 2013 +0900
+
+    Simplify some regular expressions
+    
+    * /\w/ including /\d/
+    * /\s/ including [/\r/, /\t/, /\n/]
+
+ lib/bio/appl/blast/format0.rb |    2 +-
+ lib/bio/db/embl/common.rb     |    2 +-
+ lib/bio/db/embl/embl.rb       |    2 +-
+ lib/bio/db/embl/sptr.rb       |    2 +-
+ lib/bio/db/gff.rb             |    2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 623ad4011fa8b56f3c9f50a859d1fa26f6570700
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jan 11 16:41:12 2013 +0900
+
+    Improvement of parameter checks and error output
+    
+     * Improvement of parameter checks
+     * To avoid potential XSS in old MSIE which ignores content-type,
+       always do CGI.escapeHTML for parameters in error messages
+
+ sample/biofetch.rb |   91 ++++++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 63 insertions(+), 28 deletions(-)
+
+commit 03d48c43f1de7ebc9104b9aa972f226774a0bf49
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jan 11 15:32:05 2013 +0900
+
+    Add metadata cache
+    
+     * Add metadata cache. It caches the list of databases and a list of
+       available formats for each database. Database entries are not cached.
+     * charset=utf-8 in CGI header.
+
+ sample/biofetch.rb |  110 +++++++++++++++++++++++++++++++++++++++++-----------
+ 1 file changed, 87 insertions(+), 23 deletions(-)
+
+commit 114d29d4bdfc328f5e91adee9bea465622248e0d
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jan 11 09:10:08 2013 +0900
+
+    remove excess double quotations in html part
+
+ sample/biofetch.rb |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 949311648b92d51a2596f896fdae8d74ac0608a3
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jan 11 08:59:18 2013 +0900
+
+    add magic comment: coding utf-8
+
+ sample/biofetch.rb |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 4ae509273134c5deca7910847063ed07c56150db
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 10 23:27:09 2013 +0900
+
+    Rewrite to use TogoWS REST API instead of SOAP-based KEGG API.
+    
+     * Rewrite to use TogoWS REST API instead of deprecated SOAP-based
+       KEGG API.
+     * Examples are changed to fit with current TogoWS.
+     * Now, the script does not depend on any non-standard libraries
+       including BioRuby. This means that one can put this script on
+       a server without installing BioRuby.
+     * New constans SCRIPT_NAME and BASE_URL for easy customizing.
+     * Many changes. See "git diff" for details.
+
+ sample/biofetch.rb |  265 ++++++++++++++++++++++++++--------------------------
+ 1 file changed, 131 insertions(+), 134 deletions(-)
+
+commit bc98bc54c59be98425d66c64b19a3b9612993beb
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 10 15:17:42 2013 +0900
+
+    Add 'gem "rdoc"' to avoid "ERROR: 'rake/rdoctask' is obsolete..."
+
+ gemfiles/Gemfile.travis-ruby1.9 |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit dfe54b2fbe303f56a868404173fe346724b7aa4a
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 10 14:06:45 2013 +0900
+
+    Add 'gem "rdoc"' to avoid "ERROR: 'rake/rdoctask' is obsolete..."
+
+ gemfiles/Gemfile.travis-jruby1.8 |    1 +
+ gemfiles/Gemfile.travis-jruby1.9 |    1 +
+ 2 files changed, 2 insertions(+)
+
+commit f07ec6ac326d51c055496983abba54afd00c35d4
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 10 01:38:00 2013 +0900
+
+    Add 'gem "rdoc"' to avoid "ERROR: 'rake/rdoctask' is obsolete..."
+
+ gemfiles/Gemfile.travis-ruby1.8 |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 4221d52055087f85daa1c23349d10ecdb4d01a31
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 10 01:27:03 2013 +0900
+
+    Ruby 2.0 support: Set script encoding to US-ASCII for gff.rb.
+
+ lib/bio/db/gff.rb |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit 1526df8273e9d2283fd4a921d4cf8c0c664fe71c
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 10 00:45:36 2013 +0900
+
+    Convert encoding of the Japanese tutorial files to UTF-8
+
+ doc/Tutorial.rd.ja      | 1920 +++++++++++++++++++++++------------------------
+ doc/Tutorial.rd.ja.html | 1918 +++++++++++++++++++++++-----------------------
+ 2 files changed, 1919 insertions(+), 1919 deletions(-)
+
+commit 3215570185a46dd0d6c4cd96d583b2487636b483
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 10 00:41:51 2013 +0900
+
+    updated doc/Tutorial.rd.html and doc/Tutorial.rd.ja.html
+
+ doc/Tutorial.rd.html    |   19 ++---
+ doc/Tutorial.rd.ja.html |  202 +++++++++++++----------------------------------
+ 2 files changed, 63 insertions(+), 158 deletions(-)
+
+commit 8db12935a9cc15bae92bdb7183476cfea9e1f819
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 10 00:38:18 2013 +0900
+
+    Set html title when generating tutorial html
+
+ Rakefile |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 644d438decceb072475877a749435fba543ff8ea
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jan 4 03:19:00 2013 +0900
+
+    regenerate bioruby.gemspec with rake regemspec
+
+ bioruby.gemspec |    6 ------
+ 1 file changed, 6 deletions(-)
+
+commit 54dc9b9f68ee2de9ee005a772ce000277a073d97
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jan 4 02:35:01 2013 +0900
+
+    Remove sample/psortplot_html.rb which depend on Bio::KEGG::API.
+    
+     * Remove sample/psortplot_html.rb because it strongly depend on
+       removed Bio::KEGG::API and discontinued SOAP-based KEGG API.
+       It is hard to re-write by using new REST-based KEGG API because
+       the new API seems to lack color_pathway_by_objects that returns
+       image URL. Moreover, there is no one-by-one API migration guide.
+
+ sample/psortplot_html.rb |  214 ----------------------------------------------
+ 1 file changed, 214 deletions(-)
+ delete mode 100644 sample/psortplot_html.rb
+
+commit dbdf2dad3dec9d10141b891a481b9b05e1561708
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jan 4 02:34:05 2013 +0900
+
+    Remove descriptions about KEGG API and Bio::KEGG::API.
+
+ doc/Tutorial.rd    |    6 ---
+ doc/Tutorial.rd.ja |  106 +---------------------------------------------------
+ 2 files changed, 1 insertion(+), 111 deletions(-)
+
+commit 3ca725dc1e07f794344c9fcae43d4972ed2895da
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Jan 4 02:33:09 2013 +0900
+
+    Remove description about KEGG API and Bio::KEGG::API.
+
+ README.rdoc |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+commit d4568788069f2d998a78ad72b1d906aae13e85f4
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 3 23:55:58 2013 +0900
+
+    Remove KEGG API plugin of BioRuby Shell, due to the removal of Bio::KEGG::API.
+
+ lib/bio/shell.rb                |    1 -
+ lib/bio/shell/plugin/keggapi.rb |  181 ---------------------------------------
+ 2 files changed, 182 deletions(-)
+ delete mode 100644 lib/bio/shell/plugin/keggapi.rb
+
+commit 22c8f4945d622f8f22c08b262c6caf81a0261284
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 3 23:52:36 2013 +0900
+
+    Delete autoload lines for removed Bio::KEGG::API
+
+ lib/bio.rb |    4 ----
+ 1 file changed, 4 deletions(-)
+
+commit b56ec0984d5001c3a4d3b4f0ba8fbbbf79835747
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Jan 3 23:51:24 2013 +0900
+
+    Remove Bio::KEGG::API and its sample code and documentation files.
+    
+     * Remove Bio::KEGG::API and its sample code and documentation files.
+       * deleted: lib/bio/io/keggapi.rb
+       * deleted: doc/KEGG_API.rd
+       * deleted: doc/KEGG_API.rd.ja
+       * deleted: sample/demo_keggapi.rb
+
+ doc/KEGG_API.rd        | 1843 ------------------------------------------------
+ doc/KEGG_API.rd.ja     | 1834 -----------------------------------------------
+ lib/bio/io/keggapi.rb  |  363 ----------
+ sample/demo_keggapi.rb |  502 -------------
+ 4 files changed, 4542 deletions(-)
+ delete mode 100644 doc/KEGG_API.rd
+ delete mode 100644 doc/KEGG_API.rd.ja
+ delete mode 100644 lib/bio/io/keggapi.rb
+ delete mode 100644 sample/demo_keggapi.rb
+
+commit 63af413c122b4531193153fbfee034deaf0a9606
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Mon Oct 1 21:11:14 2012 +0900
+
+    Bug fix: parse error when subject sequence contains spaces
+    
+     * Bug fix: parse error when subject sequence contains spaces.
+       Thanks to Edward Rice who reports the bug. (Bug #3385)
+       (https://redmine.open-bio.org/issues/3385)
+
+ lib/bio/appl/blast/format0.rb |   38 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+commit 9f2f682ec6624ff356bea7aca76365ba95d33549
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Sep 7 16:50:44 2012 +0900
+
+    add an env line to be recognized in allow_failures
+
+ .travis.yml |    1 +
+ 1 file changed, 1 insertion(+)
+
+commit fead6dda526081db09c56c2262f111338b7d8cd7
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Fri Sep 7 16:08:57 2012 +0900
+
+    environment variable TESTOPTS=-v for verbose output of rake test
+
+ .travis.yml |   22 ++++++++++++++--------
+ 1 file changed, 14 insertions(+), 8 deletions(-)
+
+commit 3de19895140502898c77fc83d9ad6fae47331763
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Sep 6 18:17:22 2012 +0900
+
+    Remove Bio.method_missing because it is broken.
+    
+     * Bio.method_missing, the hook of undefined methods, providing
+       shortcut of Bio::Shell methods, is now removed, because it does
+       not work correctly, and because the use of method_missing should
+       normally be avoided unless it is really necessary. Alternatively,
+       use Bio::Shell.xxxxx (xxxxx is a method name).
+
+ lib/bio.rb |   13 -------------
+ 1 file changed, 13 deletions(-)
+
+commit a358584c4a76be6a38ab38a18e6dc66840030450
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Sep 6 16:48:51 2012 +0900
+
+    Delete autoload line of a removed class Bio::NCBI::SOAP.
+
+ lib/bio/io/ncbirest.rb |    1 -
+ 1 file changed, 1 deletion(-)
+
+commit 340d665775b862da638e4d12751b84d2ccd83e82
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Sep 6 16:47:03 2012 +0900
+
+    Delete autoload lines of removed classes.
+
+ lib/bio.rb |    4 ----
+ 1 file changed, 4 deletions(-)
+
+commit c7c29a672b38d2182cf4afc9a970b854af1149a7
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Sep 6 16:43:25 2012 +0900
+
+    regenerate bioruby.gemspec with rake regemspec
+
+ bioruby.gemspec |    3 ---
+ 1 file changed, 3 deletions(-)
+
+commit 09bb4b8a8b7e01a36dbe0cf44a5c2a6a6b5750f1
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Sep 6 16:23:17 2012 +0900
+
+    Remove Bio::Shell#ncbisoap which uses removed Bio::NCBI::SOAP.
+
+ lib/bio/shell/plugin/soap.rb |    9 ---------
+ 1 file changed, 9 deletions(-)
+
+commit a5e46acdaf06568bea6cb773200bbf3881b5670e
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Sep 6 16:02:32 2012 +0900
+
+    Remove issues about removed classes Bio::NCBI::SOAP and Bio::KEGG::Taxonomy
+
+ KNOWN_ISSUES.rdoc |   10 ----------
+ 1 file changed, 10 deletions(-)
+
+commit 529815acb1b57486bd506b81eec6be80277cbae7
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Wed Sep 5 11:33:27 2012 +0900
+
+    Remove Bio::KEGG::Taxonomy which is old and broken
+    
+     * Remove Bio::KEGG::Taxonomy because it raises error or the data
+       structure in the return value seems to be broken. In addition,
+       running the sample script sample/demo_kegg_taxonomy.rb shows
+       error or falls into infinite loop. Moreover, KEGG closes public
+       FTP site and the target data file of the class ("taxonomy")
+       can only be obtained by paid subscribers. From the above reasons,
+       it seems there are no users of this class now.
+     * Deleted files: lib/bio/db/kegg/taxonomy.rb,
+       sample/demo_kegg_taxonomy.rb
+
+ lib/bio/db/kegg/taxonomy.rb  |  280 ------------------------------------------
+ sample/demo_kegg_taxonomy.rb |   92 --------------
+ 2 files changed, 372 deletions(-)
+ delete mode 100644 lib/bio/db/kegg/taxonomy.rb
+ delete mode 100644 sample/demo_kegg_taxonomy.rb
+
+commit dc47fb46e86bba15ba43de31075eaba3cf811fa3
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Wed Sep 5 11:26:00 2012 +0900
+
+    Remove Bio::NCBI::SOAP which is broken
+    
+     * Remove Bio::NCBI::SOAP in lib/bio/io/ncbisoap.rb, because it always
+       raises error during the parsing of WSDL files provided by NCBI, both
+       with Ruby 1.8.X (with bundled SOAP4R) and Ruby 1.9.X (with
+       soap4r-ruby1.9 gem). To solve the error, modifying SOAP4R may be
+       needed, that seems very difficult. The alternative is Bio::NCBI::REST,
+       REST client class for the NCBI EUtil web services.
+
+ lib/bio/io/ncbisoap.rb |  156 ------------------------------------------------
+ 1 file changed, 156 deletions(-)
+ delete mode 100644 lib/bio/io/ncbisoap.rb
+
+commit 314e06e54603bb238015c391904f414b3da48752
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Sep 4 11:13:47 2012 +0900
+
+    regenerate bioruby.gemspec with rake regemspec
+
+ bioruby.gemspec |   10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+commit e929d5d23a9b489ef42f30b33959f059baf1e185
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Sep 4 11:09:36 2012 +0900
+
+    Remove issues about removed classes Bio::Ensembl and Bio::DBGET.
+
+ KNOWN_ISSUES.rdoc |   16 ----------------
+ 1 file changed, 16 deletions(-)
+
+commit 550a5440490012f73b6d38d84238cd498f2ebb02
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Sep 4 10:57:20 2012 +0900
+
+    Remove Bio::Ensembl because it does not work
+    
+     * Remove Bio::Ensembl because it does not work after the renewal of
+       the Ensembl web site in 2008.
+     * Alternative is io-ensembl gem which supports current Ensembl API.
+       http://rubygems.org/gems/bio-ensembl
+     * Deleted files: lib/bio/io/ensembl.rb,
+       test/network/bio/io/test_ensembl.rb, test/unit/bio/io/test_ensembl.rb.
+
+ lib/bio/io/ensembl.rb               |  229 ----------------------------------
+ test/network/bio/io/test_ensembl.rb |  230 -----------------------------------
+ test/unit/bio/io/test_ensembl.rb    |  111 -----------------
+ 3 files changed, 570 deletions(-)
+ delete mode 100644 lib/bio/io/ensembl.rb
+ delete mode 100644 test/network/bio/io/test_ensembl.rb
+ delete mode 100644 test/unit/bio/io/test_ensembl.rb
+
+commit 61301a8ec252f3623f994edd59f597360f73448b
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Tue Sep 4 10:47:52 2012 +0900
+
+    Remove obsolete Bio::DBGET
+    
+     * Remove Bio::DBGET because it uses old original protocol that was
+       discontinued about 8 years ago.
+     * Remove lib/bio/io/dbget.rb and sample/dbget.
+
+ lib/bio/io/dbget.rb |  194 ---------------------------------------------------
+ sample/dbget        |   37 ----------
+ 2 files changed, 231 deletions(-)
+ delete mode 100644 lib/bio/io/dbget.rb
+ delete mode 100755 sample/dbget
+
+commit 3c5e288a8685ba3279a3ba73f1b31056c1b6f7a8
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Aug 23 00:25:43 2012 +0900
+
+    Refresh ChangeLog, showing changes after 1.4.3 release.
+    
+     * Refresh to the new ChangeLog, showing changes after 1.4.3 release.
+       For the changes before 1.4.3, see doc/ChangeLog-1.4.3.
+       For the changes before 1.4.2, see doc/ChangeLog-before-1.4.2.
+       For the changes before 1.3.1, see doc/ChangeLog-before-1.3.1.
+
+ ChangeLog |   61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 61 insertions(+)
+ create mode 100644 ChangeLog
+
+commit 63c13ad8516b9dcacbe001137666c3468968542b
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Aug 23 00:25:07 2012 +0900
+
+    Rakefile: Update hardcoded git tag name for updating of ChangeLog.
+
+ Rakefile |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b10c7ad2db24d88726ffb8c63078baa217aeac43
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Aug 23 00:20:01 2012 +0900
+
+    renamed ChangeLog to doc/ChangeLog-1.4.3
+
+ ChangeLog           | 1478 ---------------------------------------------------
+ doc/ChangeLog-1.4.3 | 1478 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 1478 insertions(+), 1478 deletions(-)
+ delete mode 100644 ChangeLog
+ create mode 100644 doc/ChangeLog-1.4.3
+
+commit 0c20cb62ba6b253098e7198c14de1829f72474f5
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Aug 23 00:18:50 2012 +0900
+
+    ChangeLog updated: add log about 1.4.3 release.
+
+ ChangeLog |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 5e88ccbe0fefdd4d57f144aaf9073f5e7d93281c
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Aug 23 00:16:25 2012 +0900
+
+    New RELEASE_NOTES.rdoc for the next release version.
+
+ RELEASE_NOTES.rdoc |   47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 47 insertions(+)
+ create mode 100644 RELEASE_NOTES.rdoc
+
+commit e3d40b90d88ab0d0a91d8e32ebf97c16097f0996
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Aug 23 00:12:40 2012 +0900
+
+    Renamed RELEASE_NOTES.rdoc to doc/RELEASE_NOTES-1.4.3.rdoc
+
+ RELEASE_NOTES.rdoc           |  204 ------------------------------------------
+ doc/RELEASE_NOTES-1.4.3.rdoc |  204 ++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 204 insertions(+), 204 deletions(-)
+ delete mode 100644 RELEASE_NOTES.rdoc
+ create mode 100644 doc/RELEASE_NOTES-1.4.3.rdoc
+
+commit 08bcabecccb271385d38a0f807e8c408def5a128
+Author: Naohisa Goto <ng at bioruby.org>
+Date:   Thu Aug 23 00:00:15 2012 +0900
+
+    Bio::BIORUBY_EXTRA_VERSION set to ".5000" (unstable version).
+
+ bioruby.gemspec    |    2 +-
+ lib/bio/version.rb |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/KNOWN_ISSUES.rdoc b/KNOWN_ISSUES.rdoc
index 28db269..22d79c9 100644
--- a/KNOWN_ISSUES.rdoc
+++ b/KNOWN_ISSUES.rdoc
@@ -30,10 +30,10 @@ Encoding::CompatibilityError or "ArgumentError: invalid byte sequence in
 (WONT_FIX) Ruby 1.9.0 is NOT supported because it isn't a stable release.
 Use Ruby 1.9.1 or later.
 
-==== Ruby 1.8.5 or earlier
+==== Ruby 1.8.6 or earlier
 
-(WONT_FIX) Problems observed only with Ruby 1.8.5 or earlier will not be
-fixed. Note that Ruby 1.8.5 or earlier is no longer supported, as described
+(WONT_FIX) Problems observed only with Ruby 1.8.6 or earlier will not be
+fixed. Note that Ruby 1.8.6 or earlier is no longer supported, as described
 in README.rdoc.
 
 ==== Ruby 1.8.2 or earlier
@@ -41,12 +41,6 @@ in README.rdoc.
 (WONT_FIX) In some cases, temporary files and directories may not be
 removed because of the lack of FileUtils.remove_entry_secure.
 
-=== Issues about SOAP/WSDL
-
-SOAP4R (SOAP and WSDL implementation) is no longer bundled with Ruby 1.9.
-In addition, because of the API changes in recent SOAP4R, some
-classes/modules using SOAP4R may not work.
-
 === Problem with REXML DoS vulnerability patch before 09-Nov-2008
 
 (WONT_FIX) If you have applied a patch taken from
@@ -146,53 +140,25 @@ Windows 95/98/98SE/ME because of the limitation of COMMAND.COM.
 
 == 3. Known issues and bugs in BioRuby
 
-=== DDBJ Web API related classes (Bio::DDBJ::*, Bio::BLAST::Remote::DDBJ)
-
-The DDBJ Web API is stopping after their system replacement in March 2012.
-(See the announcement though it is written only in Japanese:
-http://www.ddbj.nig.ac.jp/replace/rp120601-j.html)
-Due to the stop of the DDBJ Web API, Bio::DDBJ::* and Bio::BLAST::Remote::DDBJ
-which are using the web API can not be used.
-
-=== Bio::Ensembl
-
-Due to the renewal of Ensembl web site, Bio::Ensembl does not work for
-the latest Ensembl. For a workaround, use an archive server. For example,
-"jul2008.archive.ensembl.org" seems to be the last server before the renewal.
-  human = Bio::Ensembl.new("Homo_sapiens", "jul2008.archive.ensembl.org")
-
-Alternatively, consider using Ruby Ensembl API.
-* http://github.com/jandot/ruby-ensembl-api
-
-=== Bio::DBGET and sample/dbget
+=== Bio::UniProtKB
 
-(WONT_FIX) Because the DBGET service have not been publically available for
-a long time, we give up support for Bio::DBGET and sample/dbget. Instead,
-using Bio::TogoWS or Bio::KEGG::API is recommended.
-
-=== Bio::NCBI::SOAP
-
-It seems that Bio::NCBI::SOAP (in lib/bio/io/ncbisoap.rb) does not work
-correctly, even running on Ruby 1.8.x. Instead, use Bio::NCBI::REST.
+Bio::UniProtKB should be updated to follow UniProtKB format changes described
+in http://www.uniprot.org/docs/sp_news.htm .
 
-=== Bio::KEGG::Taxonomy and sample/demo_kegg_taxonomy.rb
+=== Bio::PDB
 
-Bio::KEGG::Taxonomy fails to parse current KEGG taxonomy data file probably
-because of the growth of the data size.
+Bio::PDB should be updated to follow PDB format version 3.3.
 
-=== Bio::SPTR
+=== Bio::Blast::Report
 
-Bio::SPTR should be updated to follow UniProtKB format changes described
-in http://www.uniprot.org/docs/sp_news.htm .
+NCBI announces that that they are makeing a new version of BLAST XML data
+format. BioRuby should support it.
 
-=== http://bioruby.org/cgi-bin/biofetch.rb and Bio::Fetch.query
+=== Bio::Blast::Default::Report
 
-BioRuby's default BioFetch server http://bioruby.org/cgi-bin/biofetch.rb is
-down for years. Please use other server, such as EBI Dbfetch
-(http://www.ebi.ac.uk/Tools/dbfetch/dbfetch).
-
-Due to the stop of the http://bioruby.org/cgi-bin/biofetch.rb service,
-Bio::Fetch.query always raises error.
+Bio::Blast::Default::Report currently supports legacy BLAST only.
+It may be better to support BLAST+ text output format, although NCBI
+do not recommend to do so because the format is unstable.
 
 == 4. Compatibility issues with other libraries/extensions
 
@@ -206,12 +172,6 @@ know which version is suitable.
 BioRuby Shell on Web uses Ruby on Rails, but the author of the document does
 not know which version is suitable.
 
-==== SOAP4R with Ruby 1.9
-
-soap4r-ruby1.9 may raise "ununitialized constant XML::SaxParser" error with
-some combinations of XML parser libraries. It seems this is a bug of
-soap4r-ruby1.9.
-
 == 5. Historical descriptions
 
 === CVS
diff --git a/README.rdoc b/README.rdoc
index bbb6399..7addf6c 100644
--- a/README.rdoc
+++ b/README.rdoc
@@ -2,7 +2,7 @@
 = README.rdoc - README for BioRuby
 Copyright:: Copyright (C) 2001-2007 Toshiaki Katayama <k at bioruby.org>,
             Copyright (C) 2008      Jan Aerts <jandot at bioruby.org>
-            Copyright (C) 2011-2012 Naohisa Goto <ng at bioruby.org>
+            Copyright (C) 2011-2015 Naohisa Goto <ng at bioruby.org>
 License::   The Ruby License
 * The above statement is limited to this file. See below about BioRuby's
   copyright and license.
@@ -31,7 +31,7 @@ analysis can be executed within the BioRuby script, and the results
 can be fully parsed to extract the portion you need.  BioRuby supports
 major biological database formats and provides many ways for accessing
 them through flatfile indexing, SQL, web services etc.  Various web
-services including KEGG API can be easily utilized by BioRuby.
+services can be easily utilized by BioRuby.
 
 
 == FOR MORE INFORMATION
@@ -45,6 +45,7 @@ See RELEASE_NOTES.rdoc for news and important changes in this version.
 README.rdoc:: This file. General information and installation procedure.
 RELEASE_NOTES.rdoc:: News and important changes in this release.
 KNOWN_ISSUES.rdoc:: Known issues and bugs in BioRuby.
+doc/RELEASE_NOTES-1.4.3.rdoc:: News and incompatible changes from 1.4.2 to 1.4.3.
 doc/RELEASE_NOTES-1.4.2.rdoc:: News and incompatible changes from 1.4.1 to 1.4.2.
 doc/RELEASE_NOTES-1.4.1.rdoc:: News and incompatible changes from 1.4.0 to 1.4.1.
 doc/RELEASE_NOTES-1.4.0.rdoc:: News and incompatible changes from 1.3.1 to 1.4.0.
@@ -55,11 +56,11 @@ doc/Changes-0.7.rd:: News and incompatible changes from 0.6.4 to 1.2.1.
 
 doc/Tutorial.rd:: BioRuby Tutorial.
 doc/Tutorial.rd.html:: HTML version of Tutorial.rd.
-doc/KEGG_API.rd:: Documents about KEGG API, including usage of Bio::KEGG::API.
 
 ==== BioRuby development
 
 ChangeLog:: History of changes.
+doc/ChangeLog-1.4.3:: changes from 1.4.2 to 1.4.3.
 doc/ChangeLog-before-1.4.2:: changes before 1.4.2.
 doc/ChangeLog-before-1.3.1:: changes before 1.3.1.
 README_DEV.rdoc:: Describes ways to contribute to the BioRuby project, including coding styles and documentation guidelines.
@@ -68,7 +69,6 @@ README_DEV.rdoc:: Describes ways to contribute to the BioRuby project, including
 
 doc/Tutorial.rd.ja:: BioRuby Tutorial written in Japanese.
 doc/Tutorial.rd.ja.html:: HTML version of Tutorial.rd.ja.
-doc/KEGG_API.rd.ja:: Japanese translation of KEGG_API.rd.
 
 ==== Sample codes
 
@@ -99,13 +99,13 @@ The stable release is freely available from the BioRuby website.
 {RubyGems (packaging system for Ruby)}[http://rubygems.org/] version of
 the BioRuby package is also available for easy installation.
 
-* http://rubyforge.org/projects/bioruby/
+* https://rubygems.org/gems/bio
 
 === git
 
 If you need the latest development version, this is provided at
 
-* http://github.com/bioruby/bioruby
+* https://github.com/bioruby/bioruby
 
 and can be obtained by the following procedure:
 
@@ -114,8 +114,9 @@ and can be obtained by the following procedure:
 
 == REQUIREMENTS
 
-* Ruby 1.8.6 or later (except Ruby 1.9.0) -- http://www.ruby-lang.org/
-  * Ruby 1.9.3-p194 or later, or Ruby 1.8.7-p358 or later is recommended.
+* Ruby 1.8.7 or later (except Ruby 1.9.0) -- http://www.ruby-lang.org/
+  * Ruby 2.1.6 or later, or Ruby 2.2.2 or later is recommended.
+  * This is the final version running on Ruby 1.8, tested with Ruby1.8.7-p374.
   * See KNOWN_ISSUES.rdoc for Ruby version specific problems.
 
 
@@ -123,22 +124,20 @@ and can be obtained by the following procedure:
 
 Some optional libraries can be utilized to extend BioRuby's functionality.
 If your needs meets the following conditions, install them by using RubyGems,
-or download and install from the "Ruby Application Archive" (RAA) at
-http://raa.ruby-lang.org/, RubyForge at http://rubyforge.org/, GitHub at
-http://github.com/, or the following web sites.
+or download and install from the following web sites.
 
 For faster parsing of the BLAST XML output format:
 
-* {RAA:xmlparser}[http://raa.ruby-lang.org/project/xmlparser/]
+* {xmlparser}[https://rubygems.org/gems/xmlparser]
   * For Ruby 1.8: {gem install xmlparser}[http://rubygems.org/gems/xmlparser]
-  * For Ruby 1.9: http://www.yoshidam.net/Ruby.html#xmlparser
+  * For Ruby 1.9 or later: http://www.yoshidam.net/Ruby.html#xmlparser
   * In both cases, {The Expat XML Parser}[http://expat.sourceforge.net/]
     and C compiler will be required.
 
 Creating faster flatfile index using Berkley DB:
 
 * {GitHub:ruby-bdb}[https://github.com/knu/ruby-bdb]
-  (which took over {RAA:bdb}[http://raa.ruby-lang.org/project/bdb/])
+  (which took over {bdb}[https://github.com/ruby-bdb/bdb])
   (No RubyGems available)
   * {Oracle Berkeley DB}[http://www.oracle.com/technetwork/database/berkeleydb/index.html] and C compiler will be required.
   
@@ -159,11 +158,6 @@ For parsing PhyloXML format files:
   * {GNOME Libxml2 XML toolkit}[http://xmlsoft.org/] and C compiler will be
     required.
 
-(Only for Ruby 1.9.x) For using SOAP web services e.g. KEGG API:
-
-* {gem install soap4r-ruby1.9}[https://rubygems.org/gems/soap4r-ruby1.9]
-  * For Ruby 1.8.x, SOAP4R is bundled within the Ruby 1.8.x release.
-
 
 == INSTALL
 
@@ -174,7 +168,7 @@ If you are using RubyGems, just type
   % gem install bio
 
 Alternatively, manually download bio-X.X.X.gem from 
-http://rubyforge.org/projects/bioruby/ and install it by using gems command.
+http://bioruby.org/archive/ and install it by using gems command.
 
 RubyGems is bundled with Ruby 1.9.1 or later. For Ruby 1.8.7 or earlier,
 download and install RubyGems from http://rubygems.org/ .
@@ -303,9 +297,9 @@ BioRuby can be freely distributed under the same terms as Ruby.
 See the file COPYING (or COPYING.ja written in Japanese).
 
 As written in the file COPYING, see the file LEGAL for files distributed
-under different license. For example, setup.rb which comes from
-{RAA:setup}[http://raa.ruby-lang.org/project/setup/] developed by Minero Aoki
-(http://i.loveruby.net/en/projects/setup/) is licensed under LGPL 2.1.
+under different license. For example, setup.rb which comes from "setup"
+developed by Minero Aoki (http://i.loveruby.net/en/projects/setup/) is
+licensed under LGPL 2.1.
 
 
 == REFERENCE
diff --git a/RELEASE_NOTES.rdoc b/RELEASE_NOTES.rdoc
index 7fd8473..44e60cb 100644
--- a/RELEASE_NOTES.rdoc
+++ b/RELEASE_NOTES.rdoc
@@ -1,222 +1,285 @@
-= BioRuby 1.4.3.0001 RELEASE NOTES
+= BioRuby 1.5.0 RELEASE NOTES
 
-Some bug fixes have been made to the BioRuby 1.4.3.0001 after the version
-1.4.3 is released.
+A lot of changes have been made to the BioRuby 1.5.0 after the version 1.4.3
+is released. This document describes important and/or incompatible changes
+since the BioRuby 1.4.3 release.
 
-== Bug fixes
+For known problems, see KNOWN_ISSUES.rdoc.
 
-=== Ruby 2.0 support
+== NEWS
 
-* "gem install bio" failed with Ruby 2.0 or later versions.
-* lib/bio/db/gff.rb: Set script encoding to US-ASCII.
+=== Full support of Ruby 2.0.0, 2.1, and 2.2
 
-=== Other bug fixes
+Ruby 2.0.0, 2.1, and 2.2 are now recommended Ruby versions for running
+BioRuby codes.
 
-* Bio::BLAST::Default::Report parse error when subject sequence contains
-  spaces. (https://redmine.open-bio.org/issues/3385)
+=== Support of Ruby 1.8 will be stopped
 
+This release is the final BioRuby version that can be run on Ruby 1.8.
 
-= BioRuby 1.4.3 RELEASE NOTES
+=== License is updated to the new Ruby's License
 
-A lot of changes have been made to the BioRuby 1.4.3 after the version 1.4.2
-is released. This document describes important and/or incompatible changes
-since the BioRuby 1.4.2 release.
+BioRuby is distributed under the same license as Ruby's. In October 2011,
+Ruby's License was changed from a dual license with GPLv2 to a dual license
+with 2-clause BSDL.available. Since BioRuby 1.5.0, we have updated to the
+new version of Ruby's License. For details about the license, see COPYING
+or COPYING.ja and BSDL. In addition, please do not forget to see LEGAL for
+exception files that are subjected to different licenses.
 
-For known problems, see KNOWN_ISSUES.rdoc.
+=== Semantic Versioning will be introduced
+
+We will adopt the Semantic Versioning since the next release version, which
+will be BioRuby 1.5.1. This means that BioRuby 1.5.0 are NOT subject to the
+Semantic Versioning.
+
+
+== New features and improvements
+
+=== New method Bio::FastaFormat#first_name
 
-== New features
+Bio::FastaFormat#first_name method is added to get the first word in the
+definition line. This method was proposed by Ben J. Woodcroft.
 
-=== Bio::KEGG::KGML
+=== Accuracy of Bio::SiRNA
 
-* New class Bio::KEGG::KGML::Graphics for storing a graphics element.
-  In the instance of the class, "coords" attribute is now available.
-* New class Bio::KEGG::KGML::Substrate for storing a substrate element.
-* New class Bio::KEGG::KGML::Product for storing a product element.
-* New method Bio::KEGG::KGML::Reaction#id.
-* Improve RDoc documentation.
-* Unit tests are added.
-* There are incompatible changes. See Incompatible changes below.
+Accuracy of siRNA designing algorithms in Bio::SiRNA is improved,
+contributed by meso_cacase.
 
-== Improvements
+=== Speed up of Bio::ClustalW::Report
 
-=== Portability running on JRuby and Rubinius
+Running speed of Bio::ClustalW::Report is optimized, contributed by
+Andrew Grimm.
 
-Many failures and errors running on JRuby and Rubinius are resolved.
-Some of them are due to BioRuby bugs, and some of them are due to JRuby or
-Rubinius bugs. Artem Tarasov reported bugs in BioRuby and submitted bug
-reports to Rubinius. Clayton Wheeler and Naohisa Goto fixed bugs in BioRuby
-and submitted bug reports to JRuby.
+=== Many warning messages are squashed
 
-=== Testing on Travis CI
+Most warning messages when running ruby with "-w" option, e.g. "assigned
+but unused variable", "instance variable @xxx not initialized", are
+suppressed. Fixes are contributed by Kenichi Kamiya, Andrew Grimm, and
+BioRuby core members.
+
+=== Refactoring of codes
+
+Many existing codes are reviewed and refactored. Patches are contributed
+by Iain Barnett, Kenichi Kamiya, and BioRuby core members.
 
-BioRuby is now using Travis CI (http://travis-ci.org/), a hosted continuous
-integration service for the open source community.
 
 == Bug fixes
 
-=== Strange behavior related with "circular require" is fixed
-
-Fixed: In previous versions, some bioruby files may be required more than
-two times, and this sometimes causes strange behavior, depending on the
-order of files in the disk.  In particular, unit tests running on JRuby
-sometimes crashes with strange errors. In BioRuby 1.4.3, almost all require
-and autoload lines are revised and are changed to avoid circular require.
-This also fixes crash on JRuby due to JRuby's autoload bug.
-
-=== Other bug fixes
-
-* Fixed: Genomenet remote BLAST does not work.
-* Fixed: Bio::KEGG::KGML ignores "coords" field.
-* Fixed: Bio::NucleicAcid.to_re("s") typo
-* To suppress rare failure of chi-square equiprobability tests for
-  Bio::Sequence::Common#randomize, test code changed to retry up to 10 times
-  if the chi-square test fails.  The assertion fails if the chi-square test
-  fails 10 consecutive times, and this strongly suggests bugs in codes or in
-  the random number generator.
-* Fixed: Bio::EMBL#os raises RuntimeError. The fix includes incompatible
-  change. See below "Incompatible changes".
-* Fixed: bin/bioruby: Failed to save object with error message "can't convert
-  Symbol into String" on Ruby 1.9.
-
-== Incompatible changes and removed features
-
-=== Bio::FlatFile use binmode (binary mode) when opening a file
-
-In Bio::FlatFile.open and Bio::FlatFile.auto, binmode (binary mode) is used
-by default when opening a file, unless text mode is explicitly specified
-with open mode string or with options. Due to the change, files using CR+LF
-line separator might not be read correctly.
-
-=== Broader FASTQ file recognition
-
-Because PacBio RS sequencer may produce kilobases long reads and read buffer
-size (default 31 lines) for file format detection may not be sufficient to
-find the second id line starting with "+", the regular expression for FASTQ
-is truncated only to check the first id line starting with "@".
-
-=== Bio::KEGG::KGML
-
-* Bio::KEGG::KGML::Reaction#substrates and Bio::KEGG::KGML::Reaction#products
-  are changed to return an array containing Bio::KEGG::KGML::Substrate and
-  Bio::KEGG::KGML::Product objects, respectively. The changes enables us to
-  get ID of substrates and products that were thrown away in the previous
-  versions.
-* Most attribute methods that were different from the KGML attribute names
-  are renamed to the names compatible with the KGML attribute names. Old
-  method names are changed to aliases of them and marked as deprecated.
-  The old names will be removed in the future.
-  * Bio::KEGG::KGML::Entry#id (old name: entry_id)
-  * Bio::KEGG::KGML::Entry#type (old name: category)
-  * Bio::KEGG::KGML::Entry#entry1 (old name: node1)
-  * Bio::KEGG::KGML::Entry#entry2 (old name: node2)
-  * Bio::KEGG::KGML::Entry#type (old name: rel)
-  * Bio::KEGG::KGML::Reaction#name (old name: entry_id)
-  * Bio::KEGG::KGML::Reaction#type (old name: direction)
-* Following attribute methods are deprecated because two or more graphics
-  elements may exist in an entry element. They will be removed in the future.
-  Instead, please use instance methods of Bio::KEGG::KGML::Graphics, which
-  can be obtained from Bio::KEGG::KGML::Entry#graphics attribute.
-  * Bio::KEGG::KGML::Entry#label
-  * Bio::KEGG::KGML::Entry#shape
-  * Bio::KEGG::KGML::Entry#x
-  * Bio::KEGG::KGML::Entry#y
-  * Bio::KEGG::KGML::Entry#width
-  * Bio::KEGG::KGML::Entry#height
-  * Bio::KEGG::KGML::Entry#fgcolor
-  * Bio::KEGG::KGML::Entry#bgcolor
-
-=== Bio::EMBL#os
-
-Bio::EMBL#os, returns parser result of the EMBL OS line, no longer splits
-the content with comma, and it no longer raises error even if the OS line
-is not in the "Genus species (name)" format. The changes may affect the
-parsing of old EMBL files which contain two or more species names in an
-OS line.
-
-Note that Bio::EMBL#os returns an Array containing several Hash objects,
-and the argument is always ignored. The return value type and the meaning
-of the argument might be changed in the future.
-
-=== Tests
-
-* Tests using network connections are moved under test/network/.
-  To invoke these tests, run "rake test-network".
-* BIORUBY_TEST_LIB environment variable
-  * The directory name specified with BIORUBY_TEST_LIB is always added on the
-    top of $LOAD_PATH even if it is already included in the middle of
-    $LOAD_PATH.
-  * When BIORUBY_TEST_LIB is empty, it no longer add an empty string to
-    $LOAD_PATH.
-  * BIORUBY_TEST_LIB is ignored when BIORUBY_TEST_GEM is set.
-* BIORUBY_TEST_GEM environment variable
-  * New environment variable BIORUBY_TEST_GEM for testing installed
-    bio-X.X.X gem. Version number can be specified.
-    See the following examples with/without the version number:
-    * % env BIORUBY_TEST_GEM=1.4.2.5000 ruby test/runner.rb
-    * % env BIORUBY_TEST_GEM="" ruby test/runner.rb
-
-=== Other removed features
-
-* rdoc.zsh is removed because it have not been used for a long time.
+=== Bugs due to remote server changes
 
-== Known issues
+==== Bio::PubMed
+
+Bio::PubMed#search, query, and pmfetch are re-implemented by using NCBI
+E-Utilities. They were broken because unofficial API was used.
+Paul Leader reported the bug and gave discussion.
+
+==== Bio::Hinv
+
+Bio::Hinv did not work because of the API server URL is changed.
+
+==== Bio::TogoWS::REST
+
+* Bio::TogoWS::REST#search with offset and limit did not work due to
+  TogoWS server spec change about URI escape.
+* Bio::TogoWS::REST#convert did not work because of the spec change of
+  TogoWS REST API.
+
+=== Bio::Fetch
+
+Bio::Fetch with default parameters did not work because BioRuby's default
+BioFetch server had been down. We have decided not to restore the service.
+For smooth migration of codes using BioRuby's BioFetch server, we provide
+"bio-old-biofetch-emulator" gem. See below "Imcompatible changes" for details.
+
+The bug was reported and discussed by Jose Irizarry, Robert A. Heiler, and
+others.
+
+=== BioSQL
+
+* Only do gsub on bio_ref.reference.authors if it exists.
+* Missing require when generating genbank output for BioSQL sequence.
+
+Contributed by Brynjar Smari Bjarnason.
+
+=== Bugs found in data format parsers
+
+* Bio::PDB#seqres SEQRES serNum digits were extended in PDB v3.2 (2008).
+  Thanks to a researcher who sent the patch.
+* Bio::Blast::Default::Report parse error when subject sequence contains
+  spaces. Edward Rice reported the bug.
+* Bio::UniProtKB#gene_name raised NoMethodError when gene_names method
+  returns nil. It should return nil. Candidate fix sent by Jose Irizarry.
+* Bio::PhyloXML::Parser.open_uri did not return block return value when
+  giving a block.
+
+=== Other bugs
+
+* lib/bio/shell/plugin/seq.rb: String#step and #skip (extended by bioruby
+  shell) did not yield the last part of the string due to a change from
+  Ruby 1.8 to 1.9.
+* Documentation and typo fixes. Contributed by many persons, including
+  Iain Barnett and ctSkennerton.
+
+
+== Renamed features
+
+=== Bio::SPTR, Bio::UniProt, Bio::SwissProt, and Bio::TrEMBL => Bio::UniProtKB
+
+The classes for parsing UniProtKB (former SwissProt and TrEMBL) data,
+Bio::SPTR, Bio::UniProt, Bio::SwissProt, and Bio::TrEMBL, are unified into
+the new class name Bio::UniProtKB, and old names are deprecated.
+
+For keeping backward compatibility, old class names Bio::SPTR, Bio::UniProt,
+Bio::SwissProt, and Bio::TrEMBL are still available, but warning message
+will be shown when using the old class names. These old class names will be
+deleted in the future.
+
+The file contatining Bio::UniProtKB class definition is also changed to
+lib/bio/db/embl/uniprotkb.rb. For keeping backward compatibility, old
+files sptr.rb, uniprot.rb, tremble.rb are still kept, but they will be
+removed in the future.
 
-The following issues are added or updated. See KNOWN_ISSUES.rdoc for other
-already known issues.
 
-=== JRuby
+== Deprecated features
 
-On JRuby, errors may be raised due to the following unfixed bugs in JRuby.
+=== Bio::RefSeq, Bio::DDBJ
 
-* {JRUBY-6195}[http://jira.codehaus.org/browse/JRUBY-6195] Process.spawn
-  (and related methods) ignore option hash
-* {JRUBY-6818}[http://jira.codehaus.org/browse/JRUBY-6818] Kernel.exec,
-  Process.spawn (and IO.popen etc.) raise error when program is an array
-  containing two strings
+Bio::RefSeq and Bio::DDBJ are deprecated because they are only an alias of
+Bio::GenBank. Warning message will be shown when loading the classes and
+initializing new instances. Please use Bio::GenBank instead.
 
-With older version of JRuby, you may be bothered by the following bugs that
-have already been fixed in the head of JRuby.
+lib/bio/db/genbank/ddbj.rb and lib/bio/db/genbank/refseq.rb which contain
+Bio::DDBJ and Bio::RefSeq, respectively, are also deprecated. For keeping
+backward compatibility, old file are still kept, but they will be removed
+in the future.
 
-* {JRUBY-6658}[http://jira.codehaus.org/browse/JRUBY-6658] Problem when
-  setting up an autoload entry, defining a class via require, then redefining
-  the autoload entry
-* {JRUBY-6666}[http://jira.codehaus.org/browse/JRUBY-6666] Open3.popen3
-  failing due to missing handling for [path, argv[0]] array
-* {JRUBY-6819}[http://jira.codehaus.org/browse/JRUBY-6819]
-  java.lang.ArrayIndexOutOfBoundsException in String#each_line
 
-Due to JRUBY-5678 (resolved issue) and the difference of behavior between
-CRuby and JRuby written in the comments of the issue tracking page,
-when running BioRuby on JRuby with sudo or root rights, TMPDIR environment
-variable should be set to a directory that is not world-writable. Currently,
-the workaround is needed for running BioRuby tests with JRuby on Travis-CI.
+== Removed features
 
-* {JRUBY-5678}[http://jira.codehaus.org/browse/JRUBY-5678] tmpdir cannot
-  be delete when jruby has sudo/root rights
+=== Bio::SOAPWSDL
 
-=== Rubinius
+Bio::SOAPWSDL (lib/bio/io/soapwsdl.rb) is removed because SOAP4R
+(SOAP/WSDL library in Ruby) is no longer bundled with Ruby since Ruby 1.9.
+For Ruby 1.9 or later, some gems of SOAP4R are available, but we think they
+are not well-maintained. Moreover, many SOAP servers have been retired
+(see below). So, we give up maintaining Bio::SOAPWSDL and all SOAP client
+classes in BioRuby.
 
-According to Travis-CI, unit tests have failed on 1.9 mode of Rubinius.
+=== Bio::EBI::SOAP
+
+Bio::EBI::SOAP (lib/bio/io/ebisoap.rb) is removed because Bio::SOAPWSDL
+is removed.
+
+=== Bio::KEGG::API
+
+Bio::KEGG::API is removed because KEGG API SOAP service was discontinued in
+December 31, 2012. See http://www.kegg.jp/kegg/rest/ for the announcement
+of service discontinuation.
+
+=== Bio::DBGET
+
+Bio::DBGET is removed because it only supports old original DBGET protocols
+that was discontinued in 2004. Note that the DBGET is still available via
+the web. See http://www.genome.jp/en/gn_dbget.html for details.
+
+=== Bio::Ensembl
+
+Bio::Ensembl is removed because it does not work after the renewal of Ensembl
+web site in 2008. Instead, bio-ensembl gem which supports recent ensembl API
+is available.
+
+=== Bio::DDBJ::XML, Bio::DDBJ::REST
+
+Bio::DDBJ::XML and Bio::DDBJ::REST are removed because DDBJ Web API (WABI)
+web services were suspended in 2012 and then they were completely renewed
+with incompatible APIs in 2013.
+
+=== Bio::HGC::HiGet
+
+Bio::HGC::HiGet (lib/bio/io/higet.rb) is removed because the HiGet web server
+http://higet.hgc.jp/ have been down since 2011, and we think that the server
+will not be restored again.
+
+=== Bio::NCBI::SOAP
+
+Bio::NCBI::SOAP is removed because it always raises error during the parsing
+of WSDL files provided by NCBI. In addition, NCBI announced that the SOAP
+web service for the E-utilities will be terminated on July 1, 2015. Instead,
+Bio::NCBI::REST, REST client for the NCBI E-utility web service, is available.
+
+=== Bio::KEGG::Taxonomy
+
+Bio::KEGG::Taxonomy is removed because it does not work correctly. It raises
+error, it falls into infinite loop, or it returns apparently broken data.
+Moreover, KEGG closed public FTP site and the file "taxonomy" could only be
+obtained by paid subscribers.
+
+=== Bio.method_missing
+
+Bio.method_missing, that aims to provide shortcuts of Bio::Shell methods
+with shorter name without typing "Shell", is removed because most of the
+methods raises error mainly due to bypassing of initialization procedure.
+In addition, we now think that the use of method_missing should generally
+be avoid unless it is really necessary.
+
+=== extconf.rb
+
+extconf.rb, an alternative way to install BioRuby to the system, is removed
+because of avoiding potential confusions. Nowadays, extconf.rb is usually
+only used for building native extensions, but no native extensions are
+included in this release. Use gem or setup.rb to install BioRuby.
+
+
+== Incompatible changes
+
+Also see the above "Renamed features", "Deprecated features", and
+"Removed features" sections.
+
+=== Bio::Fetch
+
+The BioRuby default BioFetch server http://bioruby.org/cgi-bin/biofetch.rb,
+that was the default server for Bio::Fetch before BioRuby 1.4, is deprecated.
+Due to the service stop, default server URL in Bio::Fetch is removed, and
+we decide not to give any server URL by default for Bio::Fetch.
+
+As an alternative, new class Bio::Fetch::EBI which uses the EBI Dbfetch
+server is added. When changing codes form Bio::Fetch to Bio::Fetch::EBI,
+be careful of the differences of database names, default and available
+data formats between the former BioRuby BioFetch server and the EBI Dbfetch
+server.
+
+Methods directly affected are:
+
+* Bio::Fetch.new (Bio::Fetch#initialize) does not have default server URL,
+  and URL of a server must always be explicitly given as the first argument.
+* Bio::Fetch.query is removed.
+
+For the purpose running old codes, it is recommended to install
+bio-old-biofetch-emulator gem. The bio-old-biofetch-emulator gem emulates
+old BioRuby's default BioFetch server by using other existing web services.
+See https://rubygems.org/gems/bio-old-biofetch-emulator for details.
+We think many codes can run with no changes by simply installing the gem and
+adding "-r bio-old-biofetch-emulator" into the command-line when executing
+ruby.
+
+
+== Known issues
+
+The following issues are added or updated. See KNOWN_ISSUES.rdoc for other
+already known issues.
 
-With older version of Rubinius, you may be bothered by the following bugs that
-have already been fixed in the head of Rubinius.
+=== Bio::PDB
 
-* {Rubinius Issue #1693}[https://github.com/rubinius/rubinius/issues/1693]
-  String#split gives incorrect output when splitting by /^/
-* {Rubinius Issue #1724}[https://github.com/rubinius/rubinius/issues/1724]
-  Creating Struct class with length attribute
+Bio::PDB should be updated to follow PDB format version 3.3.
 
-=== DDBJ Web API related classes (Bio::DDBJ::*, Bio::BLAST::Remote::DDBJ)
+=== Bio::Blast::Report
 
-DDBJ Web API is stopping after their system replacement in March 2012.
-(See the announcement though it is written only in Japanese:
-http://www.ddbj.nig.ac.jp/replace/rp120601-j.html)
-Due to the stop of the DDBJ Web API, Bio::DDBJ::* and Bio::BLAST::Remote::DDBJ
-which are using the web API can not be used.
+NCBI announces that that they are makeing a new version of BLAST XML data
+format. BioRuby should support it.
 
-=== SOAP4R with Ruby 1.9
+=== Bio::Blast::Default::Report
 
-soap4r-ruby1.9 may raise "ununitialized constant XML::SaxParser" error with
-some combinations of XML parser libraries. It seems this is a bug of
-soap4r-ruby1.9.
+Bio::Blast::Default::Report currently supports legacy BLAST only.
+It may be better to support BLAST+ text output format, although NCBI
+do not recommend to do so because the format is unstable.
 
diff --git a/Rakefile b/Rakefile
index 2904025..54a4c11 100644
--- a/Rakefile
+++ b/Rakefile
@@ -157,7 +157,8 @@ HTMLFILES_TUTORIAL = [ TUTORIAL_RD_HTML, TUTORIAL_RD_JA_HTML ]
 
 # Formatting RD to html.
 def rd2html(src, dst)
-  sh "rd2 -r rd/rd2html-lib.rb --with-css=bioruby.css #{src} > #{dst}"
+  title = File.basename(src)
+  sh "rd2 -r rd/rd2html-lib.rb --with-css=bioruby.css --html-title=#{title} #{src} > #{dst}"
 end
 
 # Tutorial.rd to Tutorial.rd.html
@@ -187,7 +188,7 @@ task :rechangelog do
   # The tag name in the command line should be changed
   # after releasing new version, updating ChangeLog,
   # and doing "git mv ChangeLog doc/ChangeLog-X.X.X".
-  sh "git log --stat --summary 1.4.2..HEAD > ChangeLog"
+  sh "git log --stat --summary 1.4.3..HEAD > ChangeLog"
 end
 
 # define mktmpdir
diff --git a/bin/br_biofetch.rb b/bin/br_biofetch.rb
index 40319cf..004c19f 100755
--- a/bin/br_biofetch.rb
+++ b/bin/br_biofetch.rb
@@ -6,14 +6,35 @@
 #               Toshiaki Katayama <k at bioruby.org>
 # License::     The Ruby License
 #
-# $Id: br_biofetch.rb,v 1.4 2007/04/05 23:35:39 trevor Exp $
 #
 
+begin
+  require 'rubygems'
+rescue LoadError
+end
+
 require 'bio/io/fetch'
 
+def require_bio_old_biofetch_emulator(mandatory = true)
+  begin
+    require 'bio-old-biofetch-emulator'
+  rescue LoadError
+    if mandatory then
+      $stderr.puts "Error: please install bio-old-biofetch-emulator gem."
+      exit 1
+    end
+  end
+end
+
+def default_url
+  'http://bioruby.org/cgi-bin/biofetch.rb'
+end
+
+def another_url
+  'http://www.ebi.ac.uk/cgi-bin/dbfetch'
+end
+
 def usage
-  default_url = 'http://bioruby.org/cgi-bin/biofetch.rb'
-  another_url = 'http://www.ebi.ac.uk/cgi-bin/dbfetch'
   puts "#{$0} [-s[erver] #{another_url}] db id [style] [format]"
   puts "  server : URL of the BioFetch CGI (default is #{default_url})"
   puts "      db : database name (embl, genbank, etc.)"
@@ -29,18 +50,21 @@ end
 
 case ARGV[0]
 when /^--?s/				# User specified server
+  require_bio_old_biofetch_emulator(false)
   ARGV.shift
   serv = Bio::Fetch.new(ARGV.shift)
   puts serv.fetch(*ARGV)
 when /^--?e/				# EBI server
   ARGV.shift
-  serv = Bio::Fetch.new('http://www.ebi.ac.uk/cgi-bin/dbfetch')
+  serv = Bio::Fetch.new(another_url)
   puts serv.fetch(*ARGV)
 when /^--?r/				# BioRuby server
+  require_bio_old_biofetch_emulator
   ARGV.shift
-  serv = Bio::Fetch.new('http://bioruby.org/cgi-bin/biofetch.rb')
+  serv = Bio::Fetch.new(default_url)
   puts serv.fetch(*ARGV)
 else					# Default server
+  require_bio_old_biofetch_emulator
   puts Bio::Fetch.query(*ARGV)
 end
 
diff --git a/bioruby.gemspec b/bioruby.gemspec
index 006920b..d99b508 100644
--- a/bioruby.gemspec
+++ b/bioruby.gemspec
@@ -3,18 +3,20 @@
 # 
 Gem::Specification.new do |s|
   s.name = 'bio'
-  s.version = "1.4.3.0001"
+  s.version = "1.5.0"
 
   s.author = "BioRuby project"
   s.email = "staff at bioruby.org"
   s.homepage = "http://bioruby.org/"
-  s.rubyforge_project = "bioruby"
+  s.license = "Ruby"
+
   s.summary = "Bioinformatics library"
   s.description = "BioRuby is a library for bioinformatics (biology + information science)."
 
   s.platform = Gem::Platform::RUBY
   s.files = [
     ".travis.yml",
+    "BSDL",
     "COPYING",
     "COPYING.ja",
     "ChangeLog",
@@ -33,33 +35,33 @@ Gem::Specification.new do |s|
     "bin/br_pmfetch.rb",
     "bioruby.gemspec",
     "bioruby.gemspec.erb",
+    "doc/ChangeLog-1.4.3",
     "doc/ChangeLog-before-1.3.1",
     "doc/ChangeLog-before-1.4.2",
     "doc/Changes-0.7.rd",
     "doc/Changes-1.3.rdoc",
-    "doc/KEGG_API.rd",
-    "doc/KEGG_API.rd.ja",
     "doc/RELEASE_NOTES-1.4.0.rdoc",
     "doc/RELEASE_NOTES-1.4.1.rdoc",
     "doc/RELEASE_NOTES-1.4.2.rdoc",
+    "doc/RELEASE_NOTES-1.4.3.rdoc",
     "doc/Tutorial.rd",
     "doc/Tutorial.rd.html",
     "doc/Tutorial.rd.ja",
     "doc/Tutorial.rd.ja.html",
     "doc/bioruby.css",
     "etc/bioinformatics/seqdatabase.ini",
-    "extconf.rb",
     "gemfiles/Gemfile.travis-jruby1.8",
     "gemfiles/Gemfile.travis-jruby1.9",
+    "gemfiles/Gemfile.travis-rbx",
     "gemfiles/Gemfile.travis-ruby1.8",
     "gemfiles/Gemfile.travis-ruby1.9",
+    "gemfiles/Gemfile.travis-ruby2.2",
     "gemfiles/modify-Gemfile.rb",
     "gemfiles/prepare-gemspec.rb",
     "lib/bio.rb",
     "lib/bio/alignment.rb",
     "lib/bio/appl/bl2seq/report.rb",
     "lib/bio/appl/blast.rb",
-    "lib/bio/appl/blast/ddbj.rb",
     "lib/bio/appl/blast/format0.rb",
     "lib/bio/appl/blast/format8.rb",
     "lib/bio/appl/blast/genomenet.rb",
@@ -128,6 +130,7 @@ Gem::Specification.new do |s|
     "lib/bio/db/embl/swissprot.rb",
     "lib/bio/db/embl/trembl.rb",
     "lib/bio/db/embl/uniprot.rb",
+    "lib/bio/db/embl/uniprotkb.rb",
     "lib/bio/db/fantom.rb",
     "lib/bio/db/fasta.rb",
     "lib/bio/db/fasta/defline.rb",
@@ -163,7 +166,6 @@ Gem::Specification.new do |s|
     "lib/bio/db/kegg/orthology.rb",
     "lib/bio/db/kegg/pathway.rb",
     "lib/bio/db/kegg/reaction.rb",
-    "lib/bio/db/kegg/taxonomy.rb",
     "lib/bio/db/lasergene.rb",
     "lib/bio/db/litdb.rb",
     "lib/bio/db/medline.rb",
@@ -195,11 +197,6 @@ Gem::Specification.new do |s|
     "lib/bio/io/biosql/biosql.rb",
     "lib/bio/io/biosql/config/database.yml",
     "lib/bio/io/das.rb",
-    "lib/bio/io/dbget.rb",
-    "lib/bio/io/ddbjrest.rb",
-    "lib/bio/io/ddbjxml.rb",
-    "lib/bio/io/ebisoap.rb",
-    "lib/bio/io/ensembl.rb",
     "lib/bio/io/fastacmd.rb",
     "lib/bio/io/fetch.rb",
     "lib/bio/io/flatfile.rb",
@@ -209,14 +206,10 @@ Gem::Specification.new do |s|
     "lib/bio/io/flatfile/index.rb",
     "lib/bio/io/flatfile/indexer.rb",
     "lib/bio/io/flatfile/splitter.rb",
-    "lib/bio/io/higet.rb",
     "lib/bio/io/hinv.rb",
-    "lib/bio/io/keggapi.rb",
     "lib/bio/io/ncbirest.rb",
-    "lib/bio/io/ncbisoap.rb",
     "lib/bio/io/pubmed.rb",
     "lib/bio/io/registry.rb",
-    "lib/bio/io/soapwsdl.rb",
     "lib/bio/io/sql.rb",
     "lib/bio/io/togows.rb",
     "lib/bio/location.rb",
@@ -247,13 +240,11 @@ Gem::Specification.new do |s|
     "lib/bio/shell/plugin/emboss.rb",
     "lib/bio/shell/plugin/entry.rb",
     "lib/bio/shell/plugin/flatfile.rb",
-    "lib/bio/shell/plugin/keggapi.rb",
     "lib/bio/shell/plugin/midi.rb",
     "lib/bio/shell/plugin/ncbirest.rb",
     "lib/bio/shell/plugin/obda.rb",
     "lib/bio/shell/plugin/psort.rb",
     "lib/bio/shell/plugin/seq.rb",
-    "lib/bio/shell/plugin/soap.rb",
     "lib/bio/shell/plugin/togows.rb",
     "lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/bioruby_generator.rb",
     "lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_classes.rhtml",
@@ -315,16 +306,15 @@ Gem::Specification.new do |s|
     "lib/bio/util/sirna.rb",
     "lib/bio/version.rb",
     "sample/any2fasta.rb",
+    "sample/benchmark_clustalw_report.rb",
     "sample/biofetch.rb",
     "sample/color_scheme_na.rb",
-    "sample/dbget",
     "sample/demo_aaindex.rb",
     "sample/demo_aminoacid.rb",
     "sample/demo_bl2seq_report.rb",
     "sample/demo_blast_report.rb",
     "sample/demo_codontable.rb",
     "sample/demo_das.rb",
-    "sample/demo_ddbjxml.rb",
     "sample/demo_fasta_remote.rb",
     "sample/demo_fastaformat.rb",
     "sample/demo_genbank.rb",
@@ -338,8 +328,6 @@ Gem::Specification.new do |s|
     "sample/demo_kegg_glycan.rb",
     "sample/demo_kegg_orthology.rb",
     "sample/demo_kegg_reaction.rb",
-    "sample/demo_kegg_taxonomy.rb",
-    "sample/demo_keggapi.rb",
     "sample/demo_litdb.rb",
     "sample/demo_locations.rb",
     "sample/demo_ncbi_rest.rb",
@@ -372,7 +360,6 @@ Gem::Specification.new do |s|
     "sample/na2aa.rb",
     "sample/pmfetch.rb",
     "sample/pmsearch.rb",
-    "sample/psortplot_html.rb",
     "sample/seqdatabase.ini",
     "sample/ssearch2tab.rb",
     "sample/tdiary.rb",
@@ -414,6 +401,7 @@ Gem::Specification.new do |s|
     "test/data/blast/b0002.faa.m7",
     "test/data/blast/b0002.faa.m8",
     "test/data/blast/blastp-multi.m7",
+    "test/data/clustalw/example1-seqnos.aln",
     "test/data/clustalw/example1.aln",
     "test/data/command/echoarg2.bat",
     "test/data/command/echoarg2.sh",
@@ -520,10 +508,7 @@ Gem::Specification.new do |s|
     "test/network/bio/appl/blast/test_remote.rb",
     "test/network/bio/appl/test_blast.rb",
     "test/network/bio/appl/test_pts1.rb",
-    "test/network/bio/io/test_ddbjrest.rb",
-    "test/network/bio/io/test_ensembl.rb",
     "test/network/bio/io/test_pubmed.rb",
-    "test/network/bio/io/test_soapwsdl.rb",
     "test/network/bio/io/test_togows.rb",
     "test/network/bio/test_command.rb",
     "test/runner.rb",
@@ -560,9 +545,9 @@ Gem::Specification.new do |s|
     "test/unit/bio/db/embl/test_embl.rb",
     "test/unit/bio/db/embl/test_embl_rel89.rb",
     "test/unit/bio/db/embl/test_embl_to_bioseq.rb",
-    "test/unit/bio/db/embl/test_sptr.rb",
     "test/unit/bio/db/embl/test_uniprot.rb",
-    "test/unit/bio/db/embl/test_uniprot_new_part.rb",
+    "test/unit/bio/db/embl/test_uniprotkb.rb",
+    "test/unit/bio/db/embl/test_uniprotkb_new_part.rb",
     "test/unit/bio/db/fasta/test_defline.rb",
     "test/unit/bio/db/fasta/test_defline_misc.rb",
     "test/unit/bio/db/fasta/test_format_qual.rb",
@@ -603,11 +588,8 @@ Gem::Specification.new do |s|
     "test/unit/bio/io/flatfile/test_autodetection.rb",
     "test/unit/bio/io/flatfile/test_buffer.rb",
     "test/unit/bio/io/flatfile/test_splitter.rb",
-    "test/unit/bio/io/test_ddbjxml.rb",
-    "test/unit/bio/io/test_ensembl.rb",
     "test/unit/bio/io/test_fastacmd.rb",
     "test/unit/bio/io/test_flatfile.rb",
-    "test/unit/bio/io/test_soapwsdl.rb",
     "test/unit/bio/io/test_togows.rb",
     "test/unit/bio/sequence/test_aa.rb",
     "test/unit/bio/sequence/test_common.rb",
@@ -660,7 +642,8 @@ Gem::Specification.new do |s|
     "doc/Changes-1.3.rdoc",
     "doc/RELEASE_NOTES-1.4.0.rdoc",
     "doc/RELEASE_NOTES-1.4.1.rdoc",
-    "doc/RELEASE_NOTES-1.4.2.rdoc"
+    "doc/RELEASE_NOTES-1.4.2.rdoc",
+    "doc/RELEASE_NOTES-1.4.3.rdoc"
   ]
   s.rdoc_options << '--main' << 'README.rdoc'
   s.rdoc_options << '--title' << 'BioRuby API documentation'
diff --git a/bioruby.gemspec.erb b/bioruby.gemspec.erb
index 4cdf163..20b74c7 100644
--- a/bioruby.gemspec.erb
+++ b/bioruby.gemspec.erb
@@ -12,25 +12,12 @@ Gem::Specification.new do |s|
       suffix = nil
     when /\A\.(\d+)\z/
       suffix = $1
-    when /\-alpha(\d+)/
-      decrement = true
-      suffix = 9000 + $1.to_i
-    when /\-pre(\d+)/
-      decrement = true
-      suffix = 9500 + $1.to_i
-    when /\-rc(\d+)/
-      decrement = true
-      suffix = 9900 + $1.to_i
+    when /\A\-dev\z/
+      suffix = Time.now.strftime("%Y%m%d")
     else
-      suffix = "0000"
+      raise "unsupported BIORUBY_EXTRA_VERSION"
     end
-    ver = Bio::BIORUBY_VERSION.reverse.collect do |i|
-            if decrement then
-              i -= 1
-              i < 0 ? (i += 10) : decrement = false
-            end
-            i
-          end.reverse
+    ver = Bio::BIORUBY_VERSION.dup
     ver.push suffix if suffix
     %><%= 
     (env_ver || ver.join('.'))
@@ -40,7 +27,8 @@ Gem::Specification.new do |s|
   s.author = "BioRuby project"
   s.email = "staff at bioruby.org"
   s.homepage = "http://bioruby.org/"
-  s.rubyforge_project = "bioruby"
+  s.license = "Ruby"
+
   s.summary = "Bioinformatics library"
   s.description = "BioRuby is a library for bioinformatics (biology + information science)."
 
@@ -55,10 +43,12 @@ Gem::Specification.new do |s|
       files =
         [ "README.rdoc", "README_DEV.rdoc", 
           "ChangeLog", "KNOWN_ISSUES.rdoc",
+          "RELEASE_NOTES.rdoc", 
           "Rakefile", "bioruby.gemspec.erb",
           "bioruby.gemspec", "setup.rb",
-          "extconf.rb", "rdoc.zsh"
-        ] + Dir.glob("{bin,doc,etc,lib,sample,test}/**/*").delete_if do |item|
+          "extconf.rb", "LEGAL",
+          "COPYING", "COPYING.ja", "GPL", "LGPL"
+        ] + Dir.glob("{bin,doc,etc,gemfiles,lib,sample,test}/**/*").delete_if do |item|
               case item
               when /(\A|\/)CVS(\z|\/)/, /(\A|\/)rdoc(\z|\/)/, /\~\z/
                 true
diff --git a/ChangeLog b/doc/ChangeLog-1.4.3
similarity index 85%
copy from ChangeLog
copy to doc/ChangeLog-1.4.3
index db89148..9c21d9a 100644
--- a/ChangeLog
+++ b/doc/ChangeLog-1.4.3
@@ -1,65 +1,3 @@
-commit 960497899e75c0fe36ef662ec4a0159559c836b1
-Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 25 03:41:51 2013 +0900
-
-    regenerate bioruby.gemspec with rake regemspec
-
- bioruby.gemspec |    4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-commit e8fa160e158970259d915abc6113cb425537b8d6
-Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 25 03:38:17 2013 +0900
-
-    Bio::BIORUBY_EXTRA_VERSION set to ".0001" (Release version with patches)
-
- lib/bio/version.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-commit 9d84d408479aa261b239e3f371f60262782bfb76
-Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 25 03:37:55 2013 +0900
-
-    Added release notes for 1.4.3.0001 release
-
- RELEASE_NOTES.rdoc |   18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-commit 1d3530cd1424f2cc0123057424b5c892f45dc93b
-Author: Naohisa Goto <ng at bioruby.org>
-Date:   Sat May 25 02:46:32 2013 +0900
-
-    Ruby 2.0 support: not to add ChangeLog and LEGAL to rdoc_files
-    
-     * Ruby 2.0 support: not to add ChangeLog and LEGAL to rdoc_files.
-       Because ChangeLog is not rdoc format, rdoc bundled with Ruby 2.0
-       raises error during parsing.
-
- bioruby.gemspec.erb |    4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-commit be72602cb42e6d09d465b9636257335dccb278a4
-Author: Naohisa Goto <ng at bioruby.org>
-Date:   Thu Jan 10 01:27:03 2013 +0900
-
-    Ruby 2.0 support: Set script encoding to US-ASCII for gff.rb.
-
- lib/bio/db/gff.rb |    1 +
- 1 file changed, 1 insertion(+)
-
-commit 091f6951d23c5ed2418981b2cf94733b1ee7a8b1
-Author: Naohisa Goto <ng at bioruby.org>
-Date:   Mon Oct 1 21:11:14 2012 +0900
-
-    Bug fix: parse error when subject sequence contains spaces
-    
-     * Bug fix: parse error when subject sequence contains spaces.
-       Thanks to Edward Rice who reports the bug. (Bug #3385)
-       (https://redmine.open-bio.org/issues/3385)
-
- lib/bio/appl/blast/format0.rb |   38 +++++++++++++++++++-------------------
- 1 file changed, 19 insertions(+), 19 deletions(-)
-
 commit ad0d7a1712d8b02358763233d38e67a0fff54917
 Author: Naohisa Goto <ng at bioruby.org>
 Date:   Wed Aug 22 00:18:14 2012 +0900
@@ -67,7 +5,7 @@ Date:   Wed Aug 22 00:18:14 2012 +0900
     BioRuby 1.4.3 is re-released
 
  ChangeLog |    9 +++++++++
- 1 file changed, 9 insertions(+)
+ 1 files changed, 9 insertions(+), 0 deletions(-)
 
 commit 51ab2dec144c99a14ca9009c7b589b500f1cad5f
 Author: Naohisa Goto <ng at bioruby.org>
@@ -76,7 +14,7 @@ Date:   Wed Aug 22 00:12:47 2012 +0900
     Preparation to re-release BioRuby 1.4.3
 
  ChangeLog |   22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
+ 1 files changed, 22 insertions(+), 0 deletions(-)
 
 commit 5ff159d12252393ff04afe52b59a315d15c63d18
 Author: Naohisa Goto <ng at bioruby.org>
@@ -89,7 +27,7 @@ Date:   Wed Aug 22 00:00:40 2012 +0900
 
  RELEASE_NOTES.rdoc    |    2 ++
  lib/bio/shell/core.rb |    1 +
- 2 files changed, 3 insertions(+)
+ 2 files changed, 3 insertions(+), 0 deletions(-)
 
 commit 74c6ce09413e7ddde1431d74e10cc9c4cdbb95ba
 Author: Naohisa Goto <ng at bioruby.org>
@@ -98,7 +36,7 @@ Date:   Tue Aug 21 22:35:18 2012 +0900
     BioRuby 1.4.3 is released.
 
  ChangeLog |   21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
+ 1 files changed, 21 insertions(+), 0 deletions(-)
 
 commit 61af85b6cfc7bb1f3668ed68232113eb0751e7ea
 Author: Naohisa Goto <ng at bioruby.org>
@@ -139,7 +77,7 @@ Date:   Mon Aug 20 20:17:14 2012 +0900
 
  KNOWN_ISSUES.rdoc  |    9 +++++++++
  RELEASE_NOTES.rdoc |    9 +++++++++
- 2 files changed, 18 insertions(+)
+ 2 files changed, 18 insertions(+), 0 deletions(-)
 
 commit 2fdd7a3b3555a33dead31181c9526af22f24916f
 Author: Naohisa Goto <ng at bioruby.org>
@@ -148,7 +86,7 @@ Date:   Mon Aug 20 19:44:39 2012 +0900
     update recommended Ruby versions and the year in copyright lines
 
  README.rdoc |    7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
+ 1 files changed, 3 insertions(+), 4 deletions(-)
 
 commit b156227749e5ada74330e837c9ce48a16e6a6a2f
 Author: Naohisa Goto <ng at bioruby.org>
@@ -183,8 +121,8 @@ Date:   Mon Aug 20 19:04:50 2012 +0900
        Note that _call_command_popen_jruby19 will be removed in the future
        after the bugs are fixed.
 
- lib/bio/command.rb |   98 ++++++++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 88 insertions(+), 10 deletions(-)
+ lib/bio/command.rb |   98 ++++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 files changed, 88 insertions(+), 10 deletions(-)
 
 commit 05f51fa2e871e71c2b20559eb05e456768a4f7d6
 Author: Naohisa Goto <ng at bioruby.org>
@@ -196,7 +134,7 @@ Date:   Sat Aug 18 00:32:31 2012 +0900
        available services.
 
  etc/bioinformatics/seqdatabase.ini |   27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
+ 1 files changed, 27 insertions(+), 0 deletions(-)
  create mode 100644 etc/bioinformatics/seqdatabase.ini
 
 commit a4264cc3667b98289c09efc7ccba9c8e86f6d89c
@@ -218,7 +156,7 @@ Date:   Sat Aug 18 00:30:38 2012 +0900
     known issue about http://bioruby.org/cgi-bin/biofetch.rb server down
 
  KNOWN_ISSUES.rdoc |    9 +++++++++
- 1 file changed, 9 insertions(+)
+ 1 files changed, 9 insertions(+), 0 deletions(-)
 
 commit 4a8193f7b91ff703c8f3dc6e6a6ae0c981a404e6
 Author: Naohisa Goto <ng at bioruby.org>
@@ -251,7 +189,7 @@ Date:   Wed Aug 8 09:41:20 2012 +1000
     fill in missing piece of documentation in FastaFormat
 
  lib/bio/db/fasta.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 commit 83bf09d4d81803c8d06e0d45ca25e7c09016161c
 Author: Naohisa Goto <ng at bioruby.org>
@@ -259,8 +197,8 @@ Date:   Wed Aug 8 00:08:26 2012 +0900
 
     RELEASE_NOTE.rdoc modified to reflect recent changes
 
- RELEASE_NOTES.rdoc |  107 ++++++++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 92 insertions(+), 15 deletions(-)
+ RELEASE_NOTES.rdoc |  107 ++++++++++++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 92 insertions(+), 15 deletions(-)
 
 commit c3afb1eb98cf8777ee021624c3d2eab92b3543f2
 Author: Naohisa Goto <ng at bioruby.org>
@@ -269,7 +207,7 @@ Date:   Wed Aug 8 00:06:09 2012 +0900
     Descriptions about JRuby, Rubinius, DDBJ Web API, SOAP4R etc.
 
  KNOWN_ISSUES.rdoc |   45 +++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 43 insertions(+), 2 deletions(-)
+ 1 files changed, 43 insertions(+), 2 deletions(-)
 
 commit 01da7401a011aa519c43a021f89f6e7f769b4649
 Author: Naohisa Goto <ng at bioruby.org>
@@ -278,7 +216,7 @@ Date:   Tue Aug 7 23:55:09 2012 +0900
     regenerate bioruby.gemspec with rake regemspec
 
  bioruby.gemspec |    3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ 1 files changed, 1 insertions(+), 2 deletions(-)
 
 commit 9f70c27d9b75408fddae8384a2a09715b959dcb5
 Author: Naohisa Goto <ng at bioruby.org>
@@ -287,7 +225,7 @@ Date:   Tue Aug 7 23:51:56 2012 +0900
     improve documentation; version changed to 1.4.3-pre1
 
  lib/bio/version.rb |   13 +++++++++++--
- 1 file changed, 11 insertions(+), 2 deletions(-)
+ 1 files changed, 11 insertions(+), 2 deletions(-)
 
 commit c11f12c8aa56b8509cd082f3478e96374210e5d7
 Author: Naohisa Goto <ng at bioruby.org>
@@ -296,7 +234,7 @@ Date:   Tue Aug 7 23:31:41 2012 +0900
     Remove autorequire which have been deprecated
 
  bioruby.gemspec.erb |    1 -
- 1 file changed, 1 deletion(-)
+ 1 files changed, 0 insertions(+), 1 deletions(-)
 
 commit 7792b092033d2c819f2bcad0e206f27608481db5
 Author: Ben J Woodcroft <donttrustben at gmail.com>
@@ -321,7 +259,7 @@ Date:   Fri Aug 3 22:36:12 2012 +0900
        FileUtils#remove_entry_secure.
 
  .travis.yml |   52 ++++++++++++++++++----------------------------------
- 1 file changed, 18 insertions(+), 34 deletions(-)
+ 1 files changed, 18 insertions(+), 34 deletions(-)
 
 commit 553fd102c533c42675f93895557e3e00d36fd3e7
 Author: Naohisa Goto <ng at bioruby.org>
@@ -330,7 +268,7 @@ Date:   Fri Aug 3 22:05:39 2012 +0900
     Improve tests for BLAST "-m 8" tabular format parser
 
  test/unit/bio/appl/blast/test_report.rb |  119 +++++++++++++++++++++++++++++++
- 1 file changed, 119 insertions(+)
+ 1 files changed, 119 insertions(+), 0 deletions(-)
 
 commit 3e1c062dbc168bd558ca8408a6da115aa570f3a7
 Author: Naohisa Goto <ng at bioruby.org>
@@ -339,7 +277,7 @@ Date:   Fri Aug 3 22:05:07 2012 +0900
     Improve test and suppress warning: assigned but unused variable
 
  test/unit/bio/io/flatfile/test_buffer.rb |    1 +
- 1 file changed, 1 insertion(+)
+ 1 files changed, 1 insertions(+), 0 deletions(-)
 
 commit 7e29ce1f050e9e5b23299372d8ddfae781447dc3
 Author: Naohisa Goto <ng at bioruby.org>
@@ -348,7 +286,7 @@ Date:   Fri Aug 3 22:02:21 2012 +0900
     Improve test and suppress warning: assigned but unused variable
 
  test/unit/bio/db/test_newick.rb |    2 ++
- 1 file changed, 2 insertions(+)
+ 1 files changed, 2 insertions(+), 0 deletions(-)
 
 commit 1053b62069df74f336934e4ed0f3f217e4ad3312
 Author: Naohisa Goto <ng at bioruby.org>
@@ -360,7 +298,7 @@ Date:   Fri Jul 27 13:56:53 2012 +0900
        Thanks to Andrew Grimm: https://github.com/bioruby/bioruby/pull/64
 
  lib/bio/db/gff.rb |    8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
+ 1 files changed, 4 insertions(+), 4 deletions(-)
 
 commit e55794f65b3fb45c99e61d45220fe42f718426a3
 Author: Naohisa Goto <ng at bioruby.org>
@@ -373,7 +311,7 @@ Date:   Wed Jul 25 23:29:17 2012 +0900
        * warning: even though it seems like symbol literal
 
  lib/bio/alignment.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 commit 174a38ea8c4ecea70724bf6ec8e72b2e4259853b
 Author: Naohisa Goto <ng at bioruby.org>
@@ -382,7 +320,7 @@ Date:   Wed Jul 25 23:12:51 2012 +0900
     Modified to follow changes of GenomeNet BLAST site
 
  lib/bio/appl/blast/genomenet.rb |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ 1 files changed, 3 insertions(+), 3 deletions(-)
 
 commit 93e24935840dcdec76984313719700134d69daf2
 Author: Naohisa Goto <ng at bioruby.org>
@@ -391,7 +329,7 @@ Date:   Wed Jul 25 15:21:32 2012 +0900
     suppress warnings: instance variable @comment not initialized
 
  lib/bio/db/gff.rb |    6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ 1 files changed, 4 insertions(+), 2 deletions(-)
 
 commit 0ad3818fedb707a26e849877bde1f8dab006b848
 Author: Naohisa Goto <ng at bioruby.org>
@@ -400,7 +338,7 @@ Date:   Wed Jul 25 00:54:02 2012 +0900
     suppress warnings: URI.escape/URI.unescape is obsolete
 
  lib/bio/db/gff.rb |   39 +++++++++++++++++++++++++++++++++------
- 1 file changed, 33 insertions(+), 6 deletions(-)
+ 1 files changed, 33 insertions(+), 6 deletions(-)
 
 commit 1263938742e7eeedb4a877aff7314e304320eca9
 Author: Naohisa Goto <ng at bioruby.org>
@@ -413,7 +351,7 @@ Date:   Mon Jul 23 21:15:52 2012 +0900
        (https://github.com/bioruby/bioruby/pull/49)
 
  lib/bio/appl/blast/genomenet.rb |    5 +++++
- 1 file changed, 5 insertions(+)
+ 1 files changed, 5 insertions(+), 0 deletions(-)
 
 commit 2ec5f4fd5abd0db7ec79ab3a9fd4adde7c9384a8
 Author: Naohisa Goto <ng at bioruby.org>
@@ -422,7 +360,7 @@ Date:   Mon Jul 23 17:26:45 2012 +0900
     Next bioruby release version will be 1.4.3.
 
  RELEASE_NOTES.rdoc |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 commit 6cf1318507a5d82bb93acdfe33e96723a2e742fc
 Author: Naohisa Goto <ng at bioruby.org>
@@ -431,7 +369,7 @@ Date:   Mon Jul 23 17:25:35 2012 +0900
     fix typo
 
  README.rdoc |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 commit 2fd71cac315affe6e4d90b03dadac782f11553a5
 Author: Naohisa Goto <ng at bioruby.org>
@@ -440,7 +378,7 @@ Date:   Mon Jul 23 17:21:57 2012 +0900
     Bug fix: Genomenet remote blast: catch up changes of the server
 
  lib/bio/appl/blast/genomenet.rb |   33 +++++++++++++++++++++++----------
- 1 file changed, 23 insertions(+), 10 deletions(-)
+ 1 files changed, 23 insertions(+), 10 deletions(-)
 
 commit 69d9717da11b2fe81a8f840bbafcc5fbb0dbe688
 Author: Naohisa Goto <ng at bioruby.org>
@@ -449,7 +387,7 @@ Date:   Fri Jul 20 11:24:37 2012 +0900
     regenerate bioruby.gemspec with rake regemspec
 
  bioruby.gemspec |    2 ++
- 1 file changed, 2 insertions(+)
+ 1 files changed, 2 insertions(+), 0 deletions(-)
 
 commit 9683da186579dbfa5da1bb1a32edc49cfdc026b8
 Author: Naohisa Goto <ng at bioruby.org>
@@ -461,7 +399,7 @@ Date:   Wed Jul 18 23:19:33 2012 +0900
      * Next BioRuby release version will be 1.4.3.
 
  RELEASE_NOTES.rdoc |   44 +++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 41 insertions(+), 3 deletions(-)
+ 1 files changed, 41 insertions(+), 3 deletions(-)
 
 commit 6cab377ae760d1abfda06caafe4a04ecd549e21d
 Author: Naohisa Goto <ng at bioruby.org>
@@ -476,7 +414,7 @@ Date:   Wed Jul 18 22:56:00 2012 +0900
        of substrates and products that were thrown away in the previous
        versions.
 
- lib/bio/db/kegg/kgml.rb            |   48 ++++++++++++++---
+ lib/bio/db/kegg/kgml.rb            |   48 ++++++++++++++--
  test/unit/bio/db/kegg/test_kgml.rb |  104 +++++++++++++++++++++++++++++++++++-
  2 files changed, 144 insertions(+), 8 deletions(-)
 
@@ -490,7 +428,7 @@ Date:   Wed Jul 18 22:16:46 2012 +0900
        names should be used instead of deprecated old names.
 
  lib/bio/db/kegg/kgml.rb |   18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
+ 1 files changed, 9 insertions(+), 9 deletions(-)
 
 commit c5ef981db6add98dc6778cd9809aff38a7071593
 Author: Naohisa Goto <ng at bioruby.org>
@@ -499,7 +437,7 @@ Date:   Wed Jul 18 22:14:33 2012 +0900
     modified documentation for Bio::KEGG::KGML
 
  lib/bio/db/kegg/kgml.rb |   73 +++++++++++++++++++++++++++--------------------
- 1 file changed, 42 insertions(+), 31 deletions(-)
+ 1 files changed, 42 insertions(+), 31 deletions(-)
 
 commit 5416b84eaa37b5abf15f905586a5eee65c4026f0
 Author: Naohisa Goto <ng at bioruby.org>
@@ -549,7 +487,7 @@ Date:   Tue Jul 17 22:23:28 2012 +0900
     rdoc documentation for Bio::KEGG::KGML
 
  lib/bio/db/kegg/kgml.rb |  166 ++++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 157 insertions(+), 9 deletions(-)
+ 1 files changed, 157 insertions(+), 9 deletions(-)
 
 commit 4a97e7034cae835b3bbc8ef918b9c6c48910dec5
 Author: Naohisa Goto <ng at bioruby.org>
@@ -558,7 +496,7 @@ Date:   Wed Jul 11 15:16:49 2012 +0900
     autoload should not be used for libraries outside bio
 
  lib/bio/db/kegg/kgml.rb |    3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
+ 1 files changed, 1 insertions(+), 2 deletions(-)
 
 commit 338d4cd9913d70041349c5201f80f7a65e7135a6
 Author: Naohisa Goto <ng at bioruby.org>
@@ -567,7 +505,7 @@ Date:   Fri Jul 6 00:50:01 2012 +0900
     remove unnecessary require "bio/db" in lib/bio/db/pdb.rb
 
  lib/bio/db/pdb.rb |    5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
+ 1 files changed, 1 insertions(+), 4 deletions(-)
 
 commit 87c806a480fcacb0fc610c9669de19e4cb661a9c
 Author: Naohisa Goto <ng at bioruby.org>
@@ -591,7 +529,7 @@ Date:   Fri Jul 6 00:24:24 2012 +0900
     regenerate bioruby.gemspec with rake regemspec
 
  bioruby.gemspec |    1 +
- 1 file changed, 1 insertion(+)
+ 1 files changed, 1 insertions(+), 0 deletions(-)
 
 commit 090d4edb5698135f87df450a963ef35a307349c4
 Author: Naohisa Goto <ng at bioruby.org>
@@ -632,7 +570,7 @@ Date:   Thu Jul 5 23:29:42 2012 +0900
     remove old require lines that are commented out
 
  lib/bio/appl/blast/format0.rb |    5 -----
- 1 file changed, 5 deletions(-)
+ 1 files changed, 0 insertions(+), 5 deletions(-)
 
 commit c632fbf2d0320860eadfacb196d51d80ed3a2b34
 Author: Naohisa Goto <ng at bioruby.org>
@@ -641,7 +579,7 @@ Date:   Thu Jul 5 23:16:49 2012 +0900
     Remove old workaround of strscan.so for Ruby 1.7 or earlier
 
  lib/bio/appl/blast/format0.rb |   18 +-----------------
- 1 file changed, 1 insertion(+), 17 deletions(-)
+ 1 files changed, 1 insertions(+), 17 deletions(-)
 
 commit c81dce87f53d3ea7c7d2335e077fa609f2737779
 Author: Naohisa Goto <ng at bioruby.org>
@@ -650,7 +588,7 @@ Date:   Thu Jul 5 23:03:40 2012 +0900
     .travis.yml: include ruby 1.9.2 test
 
  .travis.yml |    2 ++
- 1 file changed, 2 insertions(+)
+ 1 files changed, 2 insertions(+), 0 deletions(-)
 
 commit 34709d114089c722b5da796028ffb91021761fdd
 Author: Naohisa Goto <ng at bioruby.org>
@@ -659,7 +597,7 @@ Date:   Thu Jul 5 23:00:37 2012 +0900
     Remove old comment lines
 
  lib/bio/sequence/format.rb |    6 ------
- 1 file changed, 6 deletions(-)
+ 1 files changed, 0 insertions(+), 6 deletions(-)
 
 commit e0d5ed61e0101e2e72ad024dccd58c8c90def2b9
 Author: Naohisa Goto <ng at bioruby.org>
@@ -678,8 +616,8 @@ Date:   Thu Jul 5 22:42:17 2012 +0900
        raised in the finalizer callback of Bio::Command::Tmpdir. This
        commit fixes the problem.
 
- lib/bio/command.rb |   56 ++++++++++++++++++++++++++++------------------------
- 1 file changed, 30 insertions(+), 26 deletions(-)
+ lib/bio/command.rb |   56 +++++++++++++++++++++++++++------------------------
+ 1 files changed, 30 insertions(+), 26 deletions(-)
 
 commit cca98d1378ce66d6db84cc9c1beadd39ed0e0fee
 Author: Naohisa Goto <ng at bioruby.org>
@@ -718,29 +656,29 @@ Date:   Thu Jul 5 21:04:28 2012 +0900
        because its method definitions are divided into two files:
        analysis.rb, analysis_basic.rb.
 
- lib/bio/util/restriction_enzyme/analysis.rb               |   13 ++++++++-----
- lib/bio/util/restriction_enzyme/analysis_basic.rb         |    7 ++++---
- lib/bio/util/restriction_enzyme/cut_symbol.rb             |    5 +++--
- lib/bio/util/restriction_enzyme/dense_int_array.rb        |    3 +++
- lib/bio/util/restriction_enzyme/double_stranded.rb        |    7 +++----
- .../restriction_enzyme/double_stranded/aligned_strands.rb |    7 +++----
- .../double_stranded/cut_location_pair.rb                  |    7 +++----
- .../cut_location_pair_in_enzyme_notation.rb               |    7 +++----
- .../restriction_enzyme/double_stranded/cut_locations.rb   |    7 +++----
- .../double_stranded/cut_locations_in_enzyme_notation.rb   |    7 +++----
- lib/bio/util/restriction_enzyme/range/cut_range.rb        |    7 +++----
- lib/bio/util/restriction_enzyme/range/cut_ranges.rb       |    7 +++----
- .../util/restriction_enzyme/range/horizontal_cut_range.rb |    7 +++----
- lib/bio/util/restriction_enzyme/range/sequence_range.rb   |    7 +++----
- .../range/sequence_range/calculated_cuts.rb               |    7 +++----
- .../restriction_enzyme/range/sequence_range/fragment.rb   |    7 +++----
- .../restriction_enzyme/range/sequence_range/fragments.rb  |    7 +++----
- .../util/restriction_enzyme/range/vertical_cut_range.rb   |    7 +++----
- lib/bio/util/restriction_enzyme/single_strand.rb          |    6 +++---
- .../single_strand/cut_locations_in_enzyme_notation.rb     |    7 +++----
- .../util/restriction_enzyme/single_strand_complement.rb   |    7 +++----
- lib/bio/util/restriction_enzyme/sorted_num_array.rb       |    3 +++
- lib/bio/util/restriction_enzyme/string_formatting.rb      |    7 +++----
+ lib/bio/util/restriction_enzyme/analysis.rb        |   13 ++++++++-----
+ lib/bio/util/restriction_enzyme/analysis_basic.rb  |    7 ++++---
+ lib/bio/util/restriction_enzyme/cut_symbol.rb      |    5 +++--
+ lib/bio/util/restriction_enzyme/dense_int_array.rb |    3 +++
+ lib/bio/util/restriction_enzyme/double_stranded.rb |    7 +++----
+ .../double_stranded/aligned_strands.rb             |    7 +++----
+ .../double_stranded/cut_location_pair.rb           |    7 +++----
+ .../cut_location_pair_in_enzyme_notation.rb        |    7 +++----
+ .../double_stranded/cut_locations.rb               |    7 +++----
+ .../cut_locations_in_enzyme_notation.rb            |    7 +++----
+ lib/bio/util/restriction_enzyme/range/cut_range.rb |    7 +++----
+ .../util/restriction_enzyme/range/cut_ranges.rb    |    7 +++----
+ .../range/horizontal_cut_range.rb                  |    7 +++----
+ .../restriction_enzyme/range/sequence_range.rb     |    7 +++----
+ .../range/sequence_range/calculated_cuts.rb        |    7 +++----
+ .../range/sequence_range/fragment.rb               |    7 +++----
+ .../range/sequence_range/fragments.rb              |    7 +++----
+ .../restriction_enzyme/range/vertical_cut_range.rb |    7 +++----
+ lib/bio/util/restriction_enzyme/single_strand.rb   |    6 +++---
+ .../cut_locations_in_enzyme_notation.rb            |    7 +++----
+ .../restriction_enzyme/single_strand_complement.rb |    7 +++----
+ .../util/restriction_enzyme/sorted_num_array.rb    |    3 +++
+ .../util/restriction_enzyme/string_formatting.rb   |    7 +++----
  23 files changed, 75 insertions(+), 81 deletions(-)
 
 commit 7df4843288ffde6d7132a5651fe978301f8ebd2b
@@ -750,7 +688,7 @@ Date:   Thu Jul 5 20:18:08 2012 +0900
     workaround to avoid JRuby autoload bug
 
  lib/bio/util/restriction_enzyme.rb |    4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ 1 files changed, 1 insertions(+), 3 deletions(-)
 
 commit 97d95f2b400006d4229a7ce69d7d8a5cdce42764
 Author: Naohisa Goto <ng at bioruby.org>
@@ -759,7 +697,7 @@ Date:   Wed Jul 4 22:00:27 2012 +0900
     changed require to autoload for the workaround of JRuby autoload bug
 
  lib/bio/feature.rb |    5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
+ 1 files changed, 2 insertions(+), 3 deletions(-)
 
 commit 530b82a45731c2a71a110826341be425de1271e0
 Author: Naohisa Goto <ng at bioruby.org>
@@ -768,7 +706,7 @@ Date:   Wed Jul 4 22:00:06 2012 +0900
     workaround to avoid JRuby autoload bug
 
  lib/bio/sequence/common.rb |    4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
+ 1 files changed, 1 insertions(+), 3 deletions(-)
 
 commit 8614f31b36fb93d6e49d109268d646ff3032cd1a
 Author: Naohisa Goto <ng at bioruby.org>
@@ -780,7 +718,7 @@ Date:   Wed Jul 4 21:28:52 2012 +0900
      * Changed to require bio/db.rb because it is always loaded.
 
  lib/bio/db/kegg/genes.rb |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ 1 files changed, 3 insertions(+), 3 deletions(-)
 
 commit ea500006ed56857139c858bdfeb98773e5ca541e
 Author: Naohisa Goto <ng at bioruby.org>
@@ -789,7 +727,7 @@ Date:   Thu Jun 28 21:36:35 2012 +0900
     Rakefile: use own mktmpdir
 
  Rakefile |   59 +++++++++++++++++++++++++++++++++++++++++++----------------
- 1 file changed, 43 insertions(+), 16 deletions(-)
+ 1 files changed, 43 insertions(+), 16 deletions(-)
 
 commit 452fadcab61083dcb9d01ee05d300eae5cb23fee
 Author: Naohisa Goto <ng at bioruby.org>
@@ -798,7 +736,7 @@ Date:   Thu Jun 28 20:37:59 2012 +0900
     .travis.yml: remove "rake regemspec" from after_install
 
  .travis.yml |    2 --
- 1 file changed, 2 deletions(-)
+ 1 files changed, 0 insertions(+), 2 deletions(-)
 
 commit 3fad822af3d7e558a58b71fd8ec2a7061b49f9f2
 Author: Naohisa Goto <ng at bioruby.org>
@@ -807,7 +745,7 @@ Date:   Thu Jun 28 20:36:59 2012 +0900
     regenerate bioruby.gemspec with rake regemspec
 
  bioruby.gemspec |    2 ++
- 1 file changed, 2 insertions(+)
+ 1 files changed, 2 insertions(+), 0 deletions(-)
 
 commit ea6e96fc654c797664b118a6326a84e4f9b1a8a3
 Author: Naohisa Goto <ng at bioruby.org>
@@ -816,7 +754,7 @@ Date:   Thu Jun 28 20:35:49 2012 +0900
     print message when doing Dir.chdir
 
  Rakefile |   17 +++++++++++------
- 1 file changed, 11 insertions(+), 6 deletions(-)
+ 1 files changed, 11 insertions(+), 6 deletions(-)
 
 commit c2fcd5e8cc71da38dc3c6d1f8c8d0233e47398b3
 Author: Naohisa Goto <ng at bioruby.org>
@@ -825,7 +763,7 @@ Date:   Thu Jun 28 20:28:41 2012 +0900
     In tar-install, removed dependency to regemspec
 
  Rakefile |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 commit 67a7e83d516aab5d60f8263525b359be8b0ffc0b
 Author: Naohisa Goto <ng at bioruby.org>
@@ -837,7 +775,7 @@ Date:   Thu Jun 28 20:23:24 2012 +0900
        that may be related with http://jira.codehaus.org/browse/JRUBY-5678
 
  Rakefile |   61 ++++++++++++++++++++++++++++++++++++++++++++++---------------
- 1 file changed, 46 insertions(+), 15 deletions(-)
+ 1 files changed, 46 insertions(+), 15 deletions(-)
 
 commit cff098034a338bbe9579d6c7b4380c7132a38ef5
 Author: Naohisa Goto <ng at bioruby.org>
@@ -849,7 +787,7 @@ Date:   Thu Jun 28 19:23:57 2012 +0900
        because they are useless with Bundler
 
  Rakefile |   13 -------------
- 1 file changed, 13 deletions(-)
+ 1 files changed, 0 insertions(+), 13 deletions(-)
 
 commit d5c054265af4f80318cbfa5a5bbdee6125219de2
 Author: Naohisa Goto <ng at bioruby.org>
@@ -859,7 +797,7 @@ Date:   Thu Jun 28 18:10:05 2012 +0900
 
  .travis.yml                 |    1 +
  gemfiles/prepare-gemspec.rb |   25 +++++++++++++++++++++++++
- 2 files changed, 26 insertions(+)
+ 2 files changed, 26 insertions(+), 0 deletions(-)
  create mode 100644 gemfiles/prepare-gemspec.rb
 
 commit 05b6172123f42a1d8d46668d8a3d5f698c371704
@@ -886,7 +824,7 @@ Date:   Thu Jun 28 17:06:28 2012 +0900
     descriptions are modified for danger operations
 
  Rakefile |    4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ 1 files changed, 2 insertions(+), 2 deletions(-)
 
 commit a209688952c922d9ba45c227874990bccd3da7c0
 Author: Naohisa Goto <ng at bioruby.org>
@@ -895,7 +833,7 @@ Date:   Mon Jun 25 23:25:51 2012 +0900
     regenerate bioruby.gemspec with rake regemspec
 
  bioruby.gemspec |    5 +++++
- 1 file changed, 5 insertions(+)
+ 1 files changed, 5 insertions(+), 0 deletions(-)
 
 commit 8f6459497be0e9ca7dc3eb2eb9606e42d97ad60c
 Author: Naohisa Goto <ng at bioruby.org>
@@ -921,7 +859,7 @@ Date:   Mon Jun 25 21:01:06 2012 +0900
      * Default task is changed from "test" to "see-env".
 
  Rakefile |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 107 insertions(+), 3 deletions(-)
+ 1 files changed, 107 insertions(+), 3 deletions(-)
 
 commit 3b400042cd361e1ab6d0fb0d8c8cce14a6c2ae10
 Author: Naohisa Goto <ng at bioruby.org>
@@ -934,7 +872,7 @@ Date:   Mon Jun 25 20:58:13 2012 +0900
        included in the middle of $LOAD_PATH.
 
  test/bioruby_test_helper.rb |    4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ 1 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 848304b6f90310f8fa15c80ba06655ae5cae5053
 Author: Naohisa Goto <ng at bioruby.org>
@@ -952,8 +890,8 @@ Date:   Mon Jun 25 20:42:07 2012 +0900
        $LOAD_PATH. Moreover, when BIORUBY_TEST_GEM is set, the variable is
        ignored.
 
- test/bioruby_test_helper.rb |   49 ++++++++++++++++++++++++++++++++-----------
- 1 file changed, 37 insertions(+), 12 deletions(-)
+ test/bioruby_test_helper.rb |   49 ++++++++++++++++++++++++++++++++----------
+ 1 files changed, 37 insertions(+), 12 deletions(-)
 
 commit 9453a6773c24f866698370195fd8e767443a38b9
 Author: Tomoaki NISHIYAMA <tomoakin at kenroku.kanazawa-u.ac.jp>
@@ -970,7 +908,7 @@ Date:   Fri Jun 1 18:06:40 2012 +0900
 
  lib/bio/io/flatfile/autodetection.rb            |    2 +-
  test/unit/bio/io/flatfile/test_autodetection.rb |    6 ++++++
- 2 files changed, 7 insertions(+), 1 deletion(-)
+ 2 files changed, 7 insertions(+), 1 deletions(-)
 
 commit 120e780c023cba06b83899c2f8a17c8fc1de4faa
 Author: Naohisa Goto <ng at bioruby.org>
@@ -986,8 +924,8 @@ Date:   Fri Jun 8 15:36:29 2012 +0900
      * The chi-square equiprobability tests are separated into a new
        test class.
 
- test/unit/bio/sequence/test_common.rb |   40 +++++++++++++++++++++++++++++----
- 1 file changed, 36 insertions(+), 4 deletions(-)
+ test/unit/bio/sequence/test_common.rb |   40 +++++++++++++++++++++++++++++---
+ 1 files changed, 36 insertions(+), 4 deletions(-)
 
 commit 20dde52f7da784d4d9ac551957700cd96e842ef6
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1026,7 +964,7 @@ Date:   Thu May 10 23:13:56 2012 -0400
     test_tree.rb: to use %f instead of %g to prevent odd behavior.
 
  test/unit/bio/test_tree.rb |   22 +++++++++++-----------
- 1 file changed, 11 insertions(+), 11 deletions(-)
+ 1 files changed, 11 insertions(+), 11 deletions(-)
 
 commit 5e80e4394bf2a5e4ee472fe84ab76239b293e1b5
 Author: Clayton Wheeler <cswh at umich.edu>
@@ -1035,7 +973,7 @@ Date:   Thu May 10 23:04:55 2012 -0400
     Fixed spurious JRuby failures in test_tree.rb due to floating point differences.
 
  test/unit/bio/test_tree.rb |   14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
+ 1 files changed, 7 insertions(+), 7 deletions(-)
 
 commit 459d4da894e9a9b9db0d793e3711dc45bae2089b
 Author: Artem Tarasov <lomereiter at gmail.com>
@@ -1047,7 +985,7 @@ Date:   Thu May 10 16:23:13 2012 +0400
        not guaranteed.
 
  test/unit/bio/db/test_soft.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 commit 7e730691d6ec597a610dc0d4665db3598fcfde59
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1061,7 +999,7 @@ Date:   Thu May 10 00:06:19 2012 +0900
  lib/bio/db/fastq/format_fastq.rb     |    1 -
  lib/bio/db/genbank/format_genbank.rb |    4 ----
  lib/bio/sequence/format_raw.rb       |    4 ----
- 6 files changed, 22 deletions(-)
+ 6 files changed, 0 insertions(+), 22 deletions(-)
 
 commit f1c398fdc3488bd18bd13ac864920ce6db4dab9e
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1073,7 +1011,7 @@ Date:   Wed May 9 15:54:20 2012 +0900
        and libexpat1-dev are already installed.
 
  .travis.yml |    6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ 1 files changed, 3 insertions(+), 3 deletions(-)
 
 commit bc5ef4959e51f4a199d9f740b07812e9b8216255
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1096,11 +1034,11 @@ Date:   Tue May 1 18:11:09 2012 +0900
     config files for Travis CI continuous integration service
 
  .travis.yml                      |   73 ++++++++++++++++++++++++++++++++++++++
- gemfiles/Gemfile.travis-jruby1.8 |    6 ++++
+ gemfiles/Gemfile.travis-jruby1.8 |    6 +++
  gemfiles/Gemfile.travis-jruby1.9 |    7 ++++
  gemfiles/Gemfile.travis-ruby1.8  |    7 ++++
- gemfiles/Gemfile.travis-ruby1.9  |    8 +++++
- 5 files changed, 101 insertions(+)
+ gemfiles/Gemfile.travis-ruby1.9  |    8 ++++
+ 5 files changed, 101 insertions(+), 0 deletions(-)
  create mode 100644 .travis.yml
  create mode 100644 gemfiles/Gemfile.travis-jruby1.8
  create mode 100644 gemfiles/Gemfile.travis-jruby1.9
@@ -1125,7 +1063,7 @@ Date:   Sat Feb 25 15:26:27 2012 -0600
     Bug fix: Bio::NucleicAcid.to_re("s") typo
 
  lib/bio/data/na.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 commit c552aa3a6773139b14ae95e79e0fb43a2f91c6fb
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1138,7 +1076,7 @@ Date:   Thu Jan 12 22:24:37 2012 +0900
        ( https://github.com/bioruby/bioruby/issues/44 )
 
  lib/bio/appl/blast/genomenet.rb |    3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
+ 1 files changed, 2 insertions(+), 1 deletions(-)
 
 commit f33abf9bbd90c3c1e320f06447fdb54ffd094c5d
 Author: peterjc <p.j.a.cock at googlemail.com>
@@ -1146,7 +1084,7 @@ Date:   Fri Nov 25 11:20:08 2011 +0000
 
     Mark echoarg2.bat and echoarg2.sh as world executable
 
- 0 files changed
+ 0 files changed, 0 insertions(+), 0 deletions(-)
  mode change 100644 => 100755 test/data/command/echoarg2.bat
  mode change 100644 => 100755 test/data/command/echoarg2.sh
 
@@ -1157,7 +1095,7 @@ Date:   Thu Nov 24 13:32:37 2011 +0900
     Bug fix: rake aborted without git
 
  bioruby.gemspec.erb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
 
 commit c2139739988ef731d61bf1a8cdba2dc5c48393bd
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1166,7 +1104,7 @@ Date:   Thu Nov 24 13:07:10 2011 +0900
     regenerate bioruby.gemspec with rake regemspec.
 
  bioruby.gemspec |   18 ++++++++++--------
- 1 file changed, 10 insertions(+), 8 deletions(-)
+ 1 files changed, 10 insertions(+), 8 deletions(-)
 
 commit 6213b45d28bfea2cc8c838813b524d48c369266b
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1175,7 +1113,7 @@ Date:   Thu Nov 24 13:05:07 2011 +0900
     Added workaround for changes of a module name and file names to require.
 
  Rakefile |   21 +++++++++++++++++++--
- 1 file changed, 19 insertions(+), 2 deletions(-)
+ 1 files changed, 19 insertions(+), 2 deletions(-)
 
 commit 39f847cf8d453476275361078b831da43d400816
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1184,7 +1122,7 @@ Date:   Thu Nov 24 12:08:47 2011 +0900
     Use binary mode to open files.
 
  Rakefile |    6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
+ 1 files changed, 4 insertions(+), 2 deletions(-)
 
 commit 688779e71a27e861fb01e07f816384561b8cfe45
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1196,7 +1134,7 @@ Date:   Thu Nov 24 11:49:30 2011 +0900
        to run tests in test/network.
 
  Rakefile |   10 ++++++++++
- 1 file changed, 10 insertions(+)
+ 1 files changed, 10 insertions(+), 0 deletions(-)
 
 commit 53719535defcb0fefb3cf8bebe3fad6716bf7de2
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1205,7 +1143,7 @@ Date:   Thu Nov 24 11:28:38 2011 +0900
     test/runner.rb: Run tests only in test/unit and test/functional.
 
  test/runner.rb |   22 ++++++++++++++++------
- 1 file changed, 16 insertions(+), 6 deletions(-)
+ 1 files changed, 16 insertions(+), 6 deletions(-)
 
 commit fb9ee403db6b447aee73ebb7f12ff5a5b73d6c52
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1270,7 +1208,7 @@ Date:   Wed Nov 23 15:03:08 2011 +0900
 
  test/unit/bio/appl/blast/test_rpsblast.rb |    1 +
  test/unit/bio/io/flatfile/test_buffer.rb  |    1 +
- 2 files changed, 2 insertions(+)
+ 2 files changed, 2 insertions(+), 0 deletions(-)
 
 commit 07ce32da009baa2c4e81f6d96f45e3dac49da183
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1297,7 +1235,7 @@ Date:   Wed Nov 23 14:17:25 2011 +0900
  RELEASE_NOTES.rdoc                       |    7 ++
  lib/bio/io/flatfile/buffer.rb            |   84 ++++++++++++++++++
  test/unit/bio/io/flatfile/test_buffer.rb |  139 ++++++++++++++++++++++++++++++
- 3 files changed, 230 insertions(+)
+ 3 files changed, 230 insertions(+), 0 deletions(-)
 
 commit 48bd150a6180d59879872bd85dd95c7ddf1a19c0
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1306,7 +1244,7 @@ Date:   Tue Nov 22 17:32:23 2011 +0900
     Test bug fix: fixed incomplete Windows platform detection.
 
  test/unit/bio/test_command.rb |   13 +++++++++----
- 1 file changed, 9 insertions(+), 4 deletions(-)
+ 1 files changed, 9 insertions(+), 4 deletions(-)
 
 commit d499bcee7956b1a0a4c04aeb106e50a0839167b0
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1334,7 +1272,7 @@ Date:   Tue Nov 22 14:21:34 2011 +0900
        and removing the temporary files raise erro on Windows.
 
  test/unit/bio/db/test_phyloxml_writer.rb |   24 +++++++++++++++---------
- 1 file changed, 15 insertions(+), 9 deletions(-)
+ 1 files changed, 15 insertions(+), 9 deletions(-)
 
 commit a9022c61b98746e98a83f1cfd902e0e6b11c7bbb
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1351,7 +1289,7 @@ Date:   Tue Nov 22 13:55:15 2011 +0900
      * Added tests about the above changes.
 
  lib/bio/db/phyloxml/phyloxml_parser.rb |   57 +++++++++++++++++++++++++++++---
- test/unit/bio/db/test_phyloxml.rb      |   56 +++++++++++++++++++++++++++++--
+ test/unit/bio/db/test_phyloxml.rb      |   56 ++++++++++++++++++++++++++++++-
  2 files changed, 106 insertions(+), 7 deletions(-)
 
 commit 893cbe6ca993eca08427074059c2ba03621ea889
@@ -1361,7 +1299,7 @@ Date:   Sat Nov 5 00:49:10 2011 +0900
     Ruby 1.9 should be fully supported, and optional requirements are revised.
 
  README.rdoc |   48 +++++++++++++++++++++++++++++++++---------------
- 1 file changed, 33 insertions(+), 15 deletions(-)
+ 1 files changed, 33 insertions(+), 15 deletions(-)
 
 commit 38b1715c2d6bad39560e0846781ca903b1c16eda
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1370,7 +1308,7 @@ Date:   Fri Nov 4 22:12:38 2011 +0900
     Added REFERENCE.
 
  README.rdoc |   12 ++++++++++++
- 1 file changed, 12 insertions(+)
+ 1 files changed, 12 insertions(+), 0 deletions(-)
 
 commit 9a766cd17236bbe1e28d6972001dd5e3ed596123
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1379,7 +1317,7 @@ Date:   Fri Nov 4 21:39:20 2011 +0900
     Removed "setup.rb test" and added about running tests.
 
  README.rdoc |   39 ++++++++++++++++++++++++++++++++++-----
- 1 file changed, 34 insertions(+), 5 deletions(-)
+ 1 files changed, 34 insertions(+), 5 deletions(-)
 
 commit 39737179b06366e1d5acf2e5ac930e41b3a4ee38
 Author: Pjotr Prins <pjotr.public01 at thebird.nl>
@@ -1412,8 +1350,8 @@ Date:   Tue Sep 13 23:05:39 2011 +0900
      * Added some coding styles.
      * Added descriptions about Ruby versions and OS.
 
- README_DEV.rdoc |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 93 insertions(+), 2 deletions(-)
+ README_DEV.rdoc |   95 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 93 insertions(+), 2 deletions(-)
 
 commit 3c952c4a782501b21f36ece5bcab672dab12fc6d
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1422,7 +1360,7 @@ Date:   Tue Sep 13 13:21:20 2011 +0900
     README.rdoc: for release notes and changelog, about sample files.
 
  README.rdoc |   10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
+ 1 files changed, 9 insertions(+), 1 deletions(-)
 
 commit fba9a6c0f1f79dd567ca54ba085b6258ac8efb31
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1431,7 +1369,7 @@ Date:   Tue Sep 13 13:20:05 2011 +0900
     RELEASE_NOTES.rdoc: mentioned about removal of rdoc.zsh.
 
  RELEASE_NOTES.rdoc |    6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
+ 1 files changed, 5 insertions(+), 1 deletions(-)
 
 commit 685b6bb7b98083e1b50e73baf4e7fa71bc9a39fa
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1457,7 +1395,7 @@ Date:   Mon Sep 12 20:54:06 2011 +0900
        See "rake -T" for more information.
 
  rdoc.zsh |    8 --------
- 1 file changed, 8 deletions(-)
+ 1 files changed, 0 insertions(+), 8 deletions(-)
  delete mode 100644 rdoc.zsh
 
 commit 272d9106cec43b0f219edd92a6f7bd3f9875a761
@@ -1471,7 +1409,7 @@ Date:   Mon Sep 12 20:35:47 2011 +0900
        For the changes before 1.3.1, see doc/ChangeLog-before-1.3.1.
 
  ChangeLog |   64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 64 insertions(+)
+ 1 files changed, 64 insertions(+), 0 deletions(-)
  create mode 100644 ChangeLog
 
 commit 941493378f9884978c81d5f63ee4ed5c175d4bea
@@ -1485,7 +1423,7 @@ Date:   Mon Sep 12 20:28:28 2011 +0900
        in Rakefile.
 
  Rakefile |    9 +++++++++
- 1 file changed, 9 insertions(+)
+ 1 files changed, 9 insertions(+), 0 deletions(-)
 
 commit 1c89e6546223c3c05ea79b8ade4b493580851efa
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1506,7 +1444,7 @@ Date:   Mon Sep 12 20:22:49 2011 +0900
     ChangeLog updated: add log about 1.4.2 release
 
  ChangeLog |    9 +++++++++
- 1 file changed, 9 insertions(+)
+ 1 files changed, 9 insertions(+), 0 deletions(-)
 
 commit 1c02ab0488e4097a2cf5c16180c3179c78e3d572
 Author: Naohisa Goto <ng at bioruby.org>
@@ -1515,7 +1453,7 @@ Date:   Mon Sep 12 19:40:54 2011 +0900
     New RELEASE_NOTES.rdoc for next release version.
 
  RELEASE_NOTES.rdoc |   47 +++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 47 insertions(+)
+ 1 files changed, 47 insertions(+), 0 deletions(-)
  create mode 100644 RELEASE_NOTES.rdoc
 
 commit 4e63e69e98c0c440ec476ef3407fcc8fd2411056
@@ -1537,4 +1475,4 @@ Date:   Fri Sep 2 12:02:41 2011 +0900
     Bio::BIORUBY_EXTRA_VERSION set to ".5000" (unstable version).
 
  lib/bio/version.rb |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
+ 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/doc/KEGG_API.rd b/doc/KEGG_API.rd
deleted file mode 100644
index b80a09e..0000000
--- a/doc/KEGG_API.rd
+++ /dev/null
@@ -1,1843 +0,0 @@
-=begin
-
-  $Id: KEGG_API.rd,v 1.5 2006/12/27 13:40:45 k Exp $
-
-    Copyright (C) 2003-2006 Toshiaki Katayama <k at bioruby.org>
-
-= KEGG API
-
-KEGG API is a web service to use the KEGG system from your program via
-SOAP/WSDL.
-
-We have been making the ((<KEGG|URL:/kegg/>)) system available at
-((<GenomeNet|URL:/>)).  KEGG is a suite of databases including GENES,
-SSDB, PATHWAY, LIGAND, LinkDB, etc.  for genome research and related
-research areas in molecular and cellular biology.  These databases and
-associated computation services are available via WWW and the user
-interfaces are built on web browsers.  Thus, the interfaces are
-designed to be accessed by humans, not by machines, which means that
-it is troublesome for the researchers who want to use KEGG in an
-automated manner.  Besides, from the database developer's side, it is
-impossible to prepare all the CGI programs that satisfy a variety of
-users' needs.
-
-In recent years, the Internet technology for
-application-to-application communication referred to as the
-((<web service|URL:http://www.oreillynet.com/lpt/a/webservices/2002/02/12/webservicefaqs.html>))
-is improving at a rapid rate. For exmaple, Google, a popular Internet
-search engine, provides the web service called the
-((<Google Web API|URL:http://www.google.com/apis/>)).
-The service enables users to
-develop software that accesses and manipulates a massive amount of web
-documents that are constantly refreshed. In the field of genome
-research, a similar kind of web service called
-((<DAS|URL:http://www.biodas.org/>)) (distributed annotation system)
-has been used on several web sites, including
-((<Ensembl|URL:http://www.ensembl.org/>)),
-((<Wormbase|URL:http://www.wormbase.org/>)),
-((<Flybase|URL:http://www.flybase.org/>)),
-((<SGD|URL:http://www.yeastgenome.org/>)),
-((<TIGR|URL:http://www.tigr.org/>)).
-
-With the background and the trends noted above, we have started developing
-a new web service called KEGG API using 
-((<SOAP|URL:http://www.w3.org/TR/SOAP/>)) and
-((<WSDL|URL:http://www.w3.org/TR/wsdl20/>)).
-The service has been tested with
-((<Ruby|URL:http://www.ruby-lang.org/>))
-(Ruby 1.8.2 or Ruby 1.6.8 with
-((<SOAP4R|URL:http://raa.ruby-lang.org/project/soap4r/>))
-version 1.4.8.1) and
-((<Perl|URL:http://www.perl.org/>))
-(((<SOAP::Lite|URL:http://www.soaplite.com/>)) version 0.55) languages.
-Although the service has not been tested with clients written in other
-languages, it should work if the language can treat SOAP/WSDL.
-
-The ((<BioRuby|URL:http://bioruby.org/>)) project prepared a Ruby
-library to handle the KEGG API, so users of the Ruby language should
-check out the latest release of the BioRuby distribution.
-
-For the general information on KEGG API, see the following
-page at GenomeNet:
-
-  * ((<URL:http://www.genome.jp/kegg/soap/>))
-
-== Table of contents
-
-* ((<Introduction>))
-* ((<KEGG API Quick Start>))
-  * ((<Quick Start with Perl>))
-    * ((<Perl FAQ>))
-  * ((<Quick Start with Ruby>))
-  * ((<Quick Start with Python>))
-  * ((<Quick Start with Java>))
-* ((<KEGG API Reference>))
-  * ((<WSDL file>))
-  * ((<Terminology>))
-  * ((<Returned values>))
-    * ((<SSDBRelation>)), ((<ArrayOfSSDBRelation>))
-    * ((<MotifResult>)), ((<ArrayOfMotifResult>))
-    * ((<Definition>)), ((<ArrayOfDefinition>))
-    * ((<LinkDBRelation>)), ((<ArrayOfLinkDBRelation>))
-    * ((<PathwayElement>)), ((<ArrayOfPathwayElement>))
-    * ((<PathwayElementRelation>)), ((<ArrayOfPathwayElementRelation>))
-      * ((<Subtype>)), ((<ArrayOfSubtype>))
-    * ((<StructureAlignment>)), ((<ArrayOfStructureAlignment>))
-  * ((<Methods>))
-    * ((<Meta information>))
-      * ((<list_databases>))
-      * ((<list_organisms>))
-      * ((<list_pathways>))
-    * ((<DBGET>))
-      * ((<binfo>))
-      * ((<bfind>))
-      * ((<bget>))
-      * ((<btit>))
-      * ((<bconv>))
-    * ((<LinkDB>))
-      * ((<Database cross references>))
-        * ((<get_linkdb_by_entry>))
-        * ((<get_linkdb_between_databases>))
-      * ((<Relation among genes and enzymes>))
-        * ((<get_genes_by_enzyme>))
-        * ((<get_enzymes_by_gene>))
-      * ((<Relation among enzymes, compounds and reactions>))
-        * ((<get_enzymes_by_compound>))
-        * ((<get_enzymes_by_glycan>))
-        * ((<get_enzymes_by_reaction>))
-        * ((<get_compounds_by_enzyme>))
-        * ((<get_compounds_by_reaction>))
-        * ((<get_glycans_by_enzyme>))
-        * ((<get_glycans_by_reaction>))
-        * ((<get_reactions_by_enzyme>))
-        * ((<get_reactions_by_compound>))
-        * ((<get_reactions_by_glycan>))
-    * ((<SSDB>))
-      * ((<get_best_best_neighbors_by_gene>))
-      * ((<get_best_neighbors_by_gene>))
-      * ((<get_reverse_best_neighbors_by_gene>))
-      * ((<get_paralogs_by_gene>))
-    * ((<Motif>))
-      * ((<get_motifs_by_gene>))
-      * ((<get_genes_by_motifs>))
-    * ((<KO>))
-      * ((<get_ko_by_gene>))
-      * ((<get_ko_by_ko_class>))
-      * ((<get_genes_by_ko_class>))
-      * ((<get_genes_by_ko>))
-    * ((<PATHWAY>))
-      * ((<Coloring pathways>))
-        * ((<mark_pathway_by_objects>))
-        * ((<color_pathway_by_objects>))
-        * ((<color_pathway_by_elements>))
-        * ((<get_html_of_marked_pathway_by_objects>))
-        * ((<get_html_of_colored_pathway_by_objects>))
-        * ((<get_html_of_colored_pathway_by_elements>))
-      * ((<Relations of objects on the pathway>))
-        * ((<get_element_relations_by_pathway>))
-      * ((<Objects on the pathway>))
-        * ((<get_elements_by_pathway>))
-        * ((<get_genes_by_pathway>))
-        * ((<get_enzymes_by_pathway>))
-        * ((<get_compounds_by_pathway>))
-        * ((<get_glycans_by_pathway>))
-        * ((<get_reactions_by_pathway>))
-        * ((<get_kos_by_pathway>))
-      * ((<Pathways by objects>))
-        * ((<get_pathways_by_genes>))
-        * ((<get_pathways_by_enzymes>))
-        * ((<get_pathways_by_compounds>))
-        * ((<get_pathways_by_glycans>))
-        * ((<get_pathways_by_reactions>))
-        * ((<get_pathways_by_kos>))
-      * ((<Relation among pathways>))
-        * ((<get_linked_pathways>))
-    * ((<GENES>))
-      * ((<get_genes_by_organism>))
-    * ((<GENOME>))
-      * ((<get_number_of_genes_by_organism>))
-    * ((<LIGAND>))
-      * ((<convert_mol_to_kcf>))
-      * ((<search_compounds_by_name>))
-      * ((<search_drugs_by_name>))
-      * ((<search_glycans_by_name>))
-      * ((<search_compounds_by_composition>))
-      * ((<search_drugs_by_composition>))
-      * ((<search_glycans_by_composition>))
-      * ((<search_compounds_by_mass>))
-      * ((<search_drugs_by_mass>))
-      * ((<search_glycans_by_mass>))
-      * ((<search_compounds_by_subcomp>))
-      * ((<search_drugs_by_subcomp>))
-      * ((<search_glycans_by_kcam>))
-
-== Introduction
-
-This guide explains how to use the KEGG API in your programs for 
-searching and retrieving data from the KEGG database.
-
-== KEGG API Quick Start
-
-As always, the best way to become familar with it is by looking at an
-example.  In this document, sample codes written in several languages
-are shown.  After understanding the first exsample, try other APIs.
-
-Firstly, you have to install the SOAP related libraries for the
-programming language of your choice.
-
-=== Quick Start with Perl
-
-In the case of Perl, you need to install the following packages:
-
-  * ((<SOAP Lite|URL:http://www.soaplite.com/>)) (tested with 0.60)
-    * Note: SOAP Lite > 0.60 is reported to have errors in some methods for now.
-  * ((<MIME-Base64|URL:http://search.cpan.org/author/GAAS/MIME-Base64/>))
-  * ((<LWP|URL:http://search.cpan.org/author/GAAS/libwww-perl/>))
-  * ((<URI|URL:http://search.cpan.org/author/GAAS/URI/>))
-
-Here's a first example in Perl language.
-
-  #!/usr/bin/env perl
-  
-  use SOAP::Lite;
-  
-  $wsdl = 'http://soap.genome.jp/KEGG.wsdl';
-  
-  $serv = SOAP::Lite->service($wsdl);
-  
-  $offset = 1;
-  $limit = 5;
-  
-  $top5 = $serv->get_best_neighbors_by_gene('eco:b0002', $offset, $limit);
-  
-  foreach $hit (@{$top5}) {
-    print "$hit->{genes_id1}\t$hit->{genes_id2}\t$hit->{sw_score}\n";
-  }
-
-The output will be
-
-  eco:b0002       eco:b0002       5283
-  eco:b0002       ecj:JW0001      5283
-  eco:b0002       sfx:S0002       5271
-  eco:b0002       sfl:SF0002      5271
-  eco:b0002       ecc:c0003       5269
-
-showing that eco:b0002 has Smith-Waterman score 5271 with sfl:SF0002
-as a 4th hit among the entire KEGG/GENES database (here, "eco" means
-E. coli K-12 MG1655 and "sfl" means Shigella flexneri 2457T in the
-KEGG organism codes).
-
-The method internally searches the KEGG/SSDB (Sequence Similarity
-Database) database which contains information about the amino acid
-sequence similarities among all protein coding genes in the complete
-genomes, together with information about best hits and bidirectional
-best hits (best-best hits).  The relation of gene x in genome A and
-gene y in genome B is called bidirectional best hits, when x is the
-best hit of query y against all genes in A and vice versa, and it is
-often used as an operational definition of ortholog.
-
-Next example simply lists PATHWAYs for E. coli ("eco") in KEGG
-database.
-
-  #!/usr/bin/env perl
-
-  use SOAP::Lite;
-
-  $wsdl = 'http://soap.genome.jp/KEGG.wsdl';
-
-  $results = SOAP::Lite
-               -> service($wsdl)
-               -> list_pathways("eco");
-
-  foreach $path (@{$results}) {
-    print "$path->{entry_id}\t$path->{definition}\n";
-  }
-
-This example colors the boxes corresponding to the E. coli genes b1002
-and b2388 on a Glycolysis pathway of E. coli (path:eco00010).
-
-  #!/usr/bin/env perl
-  
-  use SOAP::Lite;
-  
-  $wsdl = 'http://soap.genome.jp/KEGG.wsdl';
-  
-  $serv = SOAP::Lite -> service($wsdl);
-
-  $genes = SOAP::Data->type(array => ["eco:b1002", "eco:b2388"]);
-
-  $result = $serv -> mark_pathway_by_objects("path:eco00010", $genes);
-
-  print $result;	# URL of the generated image
-
-=== Perl FAQ
-
-If you use the KEGG API methods which requires arguments in
-ArrayOfstring datatype, you must need following modifications
-depending on the version of SOAP::Lite.
-
-==== SOAP::Lite version <= 0.60
-
-As you see in the above example, you always need to convert a Perl's array
-into a SOAP object expicitly in SOAP::Lite by
-
-  SOAP::Data->type(array => [value1, value2, .. ])
-
-when you pass an array as the argument for any KEGG API method.
-
-==== SOAP::Lite version > 0.60
-
-You should use version >= 0.69 as the versions between 0.61-0.68 contain bugs.
-
-You need to add following code to your program to pass the array of
-string and/or int data to the SOAP server.
-
-  sub SOAP::Serializer::as_ArrayOfstring{
-    my ($self, $value, $name, $type, $attr) = @_;
-    return [$name, {'xsi:type' => 'array', %$attr}, $value];
-  }
-
-  sub SOAP::Serializer::as_ArrayOfint{
-    my ($self, $value, $name, $type, $attr) = @_;
-    return [$name, {'xsi:type' => 'array', %$attr}, $value];
-  }
-
-By adding the above, you can write
-
-  $genes = ["eco:b1002", "eco:b2388"];
-
-instead of the following (writing as follows is also permitted).
-
-  $genes = SOAP::Data->type(array => ["eco:b1002", "eco:b2388"]);
-
-==== Sample program
-
-You can test with the following script for the SOAP::Lite v0.69.
-If it works, a URL of the generated image will be returned.
-
-  #!/usr/bin/env perl
-  
-  use SOAP::Lite +trace => [qw(debug)];
-
-  print "SOAP::Lite = ", $SOAP::Lite::VERSION, "\n";
-
-  my $serv = SOAP::Lite -> service("http://soap.genome.jp/KEGG.wsdl");
-
-  my $genes = ["eco:b1002", "eco:b2388"];
-
-  my $result = $serv->mark_pathway_by_objects("path:eco00010", $genes);
-  print $result, "\n";
-
-  # sub routines implicitly used in the above code
-
-  sub SOAP::Serializer::as_ArrayOfstring{
-    my ($self, $value, $name, $type, $attr) = @_;
-    return [$name, {'xsi:type' => 'array', %$attr}, $value];
-  }
-
-  sub SOAP::Serializer::as_ArrayOfint{
-    my ($self, $value, $name, $type, $attr) = @_;
-    return [$name, {'xsi:type' => 'array', %$attr}, $value];
-  }
-
-=== Quick Start with Ruby
-
-If you are using Ruby 1.8.1 or later, you are ready to use KEGG API
-as Ruby already supports SOAP in its standard library.
-
-If your Ruby is 1.6.8 or older, you need to install followings:
-
-  * ((<SOAP4R|URL:http://raa.ruby-lang.org/list.rhtml?name=soap4r>)) 1.5.1 or later
-  * One of the following XML processing library
-    * ((<rexml|URL:http://raa.ruby-lang.org/list.rhtml?name=rexml>))
-    * ((<xmlparser|URL:http://raa.ruby-lang.org/list.rhtml?name=xmlparser>))
-    * ((<xmlscan|URL:http://raa.ruby-lang.org/list.rhtml?name=xmlscan>))
-  * ((<date2|URL:http://raa.ruby-lang.org/list.rhtml?name=date2>))
-  * ((<devel-logger|URL:http://raa.ruby-lang.org/list.rhtml?name=devel-logger>))
-  * ((<uconv|URL:http://raa.ruby-lang.org/list.rhtml?name=uconv>))
-  * ((<http-access2|URL:http://raa.ruby-lang.org/list.rhtml?name=http-access2>))
-
-Here's a sample code for Ruby having the same functionality with Perl's
-first example shown above.
-
-  #!/usr/bin/env ruby
-
-  require 'soap/wsdlDriver'
-
-  wsdl = "http://soap.genome.jp/KEGG.wsdl"
-  serv = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-  serv.generate_explicit_type = true
-  # if uncommented, you can see transactions for debug
-  #serv.wiredump_dev = STDERR
-  
-  offset = 1
-  limit = 5
-
-  top5 = serv.get_best_neighbors_by_gene('eco:b0002', offset, limit)
-  top5.each do |hit|
-    print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-  end
-
-You may need to iterate to obtain all the results by increasing offset
-and/or limit.
-
-  #!/usr/bin/env ruby
-  
-  require 'soap/wsdlDriver'
-  
-  wsdl = "http://soap.genome.jp/KEGG.wsdl"
-  serv = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-  serv.generate_explicit_type = true
-
-  offset = 1
-  limit = 100
-  
-  loop do
-    results = serv.get_best_neighbors_by_gene('eco:b0002', offset, limit)
-    break unless results
-    results.each do |hit|
-      print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-    end
-    offset += limit
-  end
-
-It is automatically done by using ((<BioRuby|URL:http://bioruby.org/>))
-library, which implements get_all_* methods for this.  BioRuby also
-provides filtering functionality for selecting needed fields from the
-complex data type.
-
-  #!/usr/bin/env ruby
-  
-  require 'bio'
-  
-  serv = Bio::KEGG::API.new
-  
-  results = serv.get_all_best_neighbors_by_gene('eco:b0002')
-
-  results.each do |hit|
-    print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-  end
-
-  # Same as above but using filter to select fields
-  fields = [:genes_id1, :genes_id2, :sw_score]
-  results.each do |hit|
-    puts hit.filter(fields).join("\t")
-  end
-
-  # Different filters to pick additional fields for each amino acid sequence
-  fields1 = [:genes_id1, :start_position1, :end_position1, :best_flag_1to2]
-  fields2 = [:genes_id2, :start_position2, :end_position2, :best_flag_2to1]
-  results.each do |hit|
-    print "> score: ", hit.sw_score, ", identity: ", hit.identity, "\n"
-    print "1:\t", hit.filter(fields1).join("\t"), "\n"
-    print "2:\t", hit.filter(fields2).join("\t"), "\n"
-  end
-
-The equivalent for the Perl's second example described above will be
-
-  #!/usr/bin/env ruby
-
-  require 'bio'
-
-  serv = Bio::KEGG::API.new
-
-  list = serv.list_pathways("eco")
-  list.each do |path|
-    print path.entry_id, "\t", path.definition, "\n"
-  end
-
-and equivalent for the last example is as follows.
-
-  #!/usr/bin/env ruby
-  
-  require 'bio'
-
-  serv = Bio::KEGG::API.new
-  
-  genes = ["eco:b1002", "eco:b2388"]
-
-  result = serv.mark_pathway_by_objects("path:eco00010", genes)
-
-  print result		# URL of the generated image
-
-=== Quick Start with Python
-
-In the case of Python, you have to install
-
-  * ((<SOAPpy|URL:http://pywebsvcs.sourceforge.net/>))
-
-plus some extra packages required for SOAPpy (
-((<fpconst|URL:http://www.analytics.washington.edu/Zope/projects/fpconst>)),
-((<PyXML|URL:http://pyxml.sourceforge.net/>)) etc.).
-
-Here's a sample code using KEGG API with Python.
-
-  #!/usr/bin/env python
-
-  from SOAPpy import WSDL
- 
-  wsdl = 'http://soap.genome.jp/KEGG.wsdl'
-  serv = WSDL.Proxy(wsdl)
-
-  results = serv.get_genes_by_pathway('path:eco00020')
-  print results
-
-=== Quick Start with Java
-
-In the case of Java, you need to obtain Apache Axis library version
-axis-1_2alpha or newer (axis-1_1 doesn't work properly for KEGG API)
-
-  * ((<Apache Axis|URL:http://ws.apache.org/axis/>))
-
-and put required jar files in an appropriate directory.
-
-For the binary distribution of the Apache axis-1_2alpha release, copy
-the jar files stored under the axis-1_2alpha/lib/ to the directory of
-your choice.
-
-  % cp axis-1_2alpha/lib/*.jar /path/to/lib/
-
-You can use WSDL2Java coming with Apache Axis to generate classes
-needed for the KEGG API automatically.
-
-To generate classes and documents for the KEGG API, download the script
-((<axisfix.pl|URL:http://www.genome.jp/kegg/soap/support/axisfix.pl>))
-and follow the steps below:
-
-  % java -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/commons-logging.jar:/path/to/lib/commons-discovery.jar:/path/to/lib/saaj.jar:/path/to/lib/wsdl4j.jar:. org.apache.axis.wsdl.WSDL2Java -p keggapi http://soap.genome.jp/KEGG.wsdl
-  % perl -i axisfix.pl keggapi/KEGGBindingStub.java
-  % javac -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/wsdl4j.jar:. keggapi/KEGGLocator.java
-  % jar cvf keggapi.jar keggapi/*
-  % javadoc -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar -d keggapi_javadoc keggapi/*.java
-
-This program will do the same job as the Python's example (extended to
-accept a pathway_id as the argument).
-
-  import keggapi.*;
-  
-  class GetGenesByPathway {
-          public static void main(String[] args) throws Exception {
-                  KEGGLocator  locator = new KEGGLocator();
-                  KEGGPortType serv    = locator.getKEGGPort();
-  
-                  String   query   = args[0];
-                  String[] results = serv.get_genes_by_pathway(query);
-  
-                  for (int i = 0; i < results.length; i++) {
-                          System.out.println(results[i]);
-                  }
-          }
-  }
-
-This is another example which uses ArrayOfSSDBRelation data type. 
-
-  import keggapi.*;
-  
-  class GetBestNeighborsByGene {
-          public static void main(String[] args) throws Exception {
-                  KEGGLocator    locator  = new KEGGLocator();
-                  KEGGPortType   serv     = locator.getKEGGPort();
-  
-                  String         query    = args[0];
-                  SSDBRelation[] results  = null;
-  
-                  results = serv.get_best_neighbors_by_gene(query, 1, 50);
-  
-                  for (int i = 0; i < results.length; i++) {
-                          String gene1  = results[i].getGenes_id1();
-                          String gene2  = results[i].getGenes_id2();
-                          int    score  = results[i].getSw_score();
-                          System.out.println(gene1 + "\t" + gene2 + "\t" + score);
-                  }
-          }
-  }
-
-Compile and execute this program (don't forget to include keggapi.jar file
-in your classpath) as follows:
-
-  % javac -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/wsdl4j.jar:/path/to/keggapi.jar GetBestNeighborsByGene.java
-
-  % java -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/commons-logging.jar:/path/to/lib/commons-discovery.jar:/path/to/lib/saaj.jar:/path/to/lib/wsdl4j.jar:/path/to/keggapi.jar:. GetBestNeighborsByGene eco:b0002
-
-You may wish to set the CLASSPATH environmental variable.
-
-bash/zsh:
-
-  % for i in /path/to/lib/*.jar
-  do
-    CLASSPATH="${CLASSPATH}:${i}"
-  done
-  % export CLASSPATH
-
-tcsh:
-
-  % foreach i ( /path/to/lib/*.jar )
-    setenv CLASSPATH ${CLASSPATH}:${i}
-  end
-
-For the other cases, consult the javadoc pages generated by WSDL2Java.
-
-  * ((<URL:http://www.genome.jp/kegg/soap/doc/keggapi_javadoc/>))
-
-== KEGG API Reference
-
-=== WSDL file
-
-Users can use a WSDL file to create a SOAP client driver.  The WSDL file for
-the KEGG API can be found at:
-
-  * ((<URL:http://soap.genome.jp/KEGG.wsdl>))
-
-=== Terminology
-
-  * 'org' is a three-letter (or four-letter) organism code used in KEGG.
-    The list can be found at (see the description of the list_organisms
-    method below):
-
-    * ((<URL:http://www.genome.jp/kegg/catalog/org_list.html>))
-
-  * 'db' is a database name used in GenomeNet service. See the
-    description of the list_databases method below.
-
-  * 'entry_id' is a unique identifier of which format is the combination of
-    the database name and the identifier of an entry joined by a colon sign
-    as 'database:entry' (e.g. 'embl:J00231' means an EMBL entry 'J00231').
-    'entry_id' includes 'genes_id', 'enzyme_id', 'compound_id', 'drug_id',
-    'glycan_id', 'reaction_id', 'pathway_id' and 'motif_id' described in below.
-
-  * 'genes_id' is a gene identifier used in KEGG/GENES which consists of
-    'keggorg' and a gene name (e.g. 'eco:b0001' means an E. coli gene 'b0001').
-
-  * 'enzyme_id' is an enzyme identifier consisting of database name 'ec'
-    and an enzyme code used in KEGG/LIGAND ENZYME database.
-    (e.g. 'ec:1.1.1.1' means an alcohol dehydrogenase enzyme)
-
-  * 'compound_id' is a compound identifier consisting of database name
-    'cpd' and a compound number used in KEGG COMPOUND / LIGAND database
-    (e.g. 'cpd:C00158' means a citric acid).  Note that some compounds
-    also have 'glycan_id' and both IDs are accepted and converted internally
-    by the corresponding methods.
-
-  * 'drug_id' is a drug identifier consisting of database name 'dr'
-    and a compound number used in KEGG DRUG / LIGAND database
-    (e.g. 'dr:D00201' means a tetracycline).
-
-  * 'glycan_id' is a glycan identifier consisting of database name 'gl'
-    and a glycan number used in KEGG GLYCAN database (e.g. 'gl:G00050'
-    means a Paragloboside).  Note that some glycans also have 'compound_id'
-    and both IDs are accepted and converted internally by the corresponding
-    methods.
-
-  * 'reaction_id' is a reaction identifier consisting of database name 'rn'
-    and a reaction number used in KEGG/REACTION (e.g. 'rn:R00959' is a
-    reaction which catalyze cpd:C00103 into cpd:C00668)
-
-  * 'pathway_id' is a pathway identifier consisting of 'path' and a pathway
-    number used in KEGG/PATHWAY. Pathway numbers prefixed by 'map' specify
-    the reference pathway and pathways prefixed by the 'keggorg' specify
-    pathways specific to the organism (e.g. 'path:map00020' means a reference
-    pathway for the cytrate cycle and 'path:eco00020' means a same pathway of
-    which E. coli genes are marked).
-
-  * 'motif_id' is a motif identifier consisting of motif database names
-    ('ps' for prosite, 'bl' for blocks, 'pr' for prints, 'pd' for prodom,
-    and 'pf' for pfam) and a motif entry name. (e.g. 'pf:DnaJ' means a Pfam
-    database entry 'DnaJ').
-
-  * 'ko_id' is a KO identifier consisting of 'ko' and a ko number used in 
-    KEGG/KO. KO (KEGG Orthology) is an classification of orthologous genes 
-    defined by KEGG (e.g. 'ko:K02598' means a KO group for nitrite transporter
-    NirC genes).
-
-  * 'ko_class_id' is a KO class identifier which is used to classify
-    'ko_id' hierarchically (e.g. '01110' means a 'Carbohydrate Metabolism'
-    class).
-
-    * ((<URL:http://www.genome.jp/dbget-bin/get_htext?KO>))
-
-  * 'offset' and 'limit' are both an integer and used to control the 
-    number of the results returned at once.  Methods having these arguments
-    will return first 'limit' results starting from 'offset'th.
-
-  * 'fg_color_list' is a list of colors for the foreground (corresponding
-    to the texts and borders of the objects on the KEGG pathway map).
-
-  * 'bg_color_list' is a list of colors for the background (corresponding
-    to the inside of the objects on the KEGG pathway map).
-
-Related site:
-  * ((<URL:http://www.genome.jp/kegg/kegg3.html>))
-
-=== Returned values
-
-Many of the KEGG API methods will return a set of values in a complex data
-structure as described below.  This section summarizes all kind of these
-data types.  Note that, the retuened values for the empty result will be
-  * an empty array -- for the methods which return ArrayOf'OBJ'
-  * an empty string -- for the methods which return String
-  * -1 -- for the methods which return int
-  * NULL -- for the methods which return any other 'OBJ'
-
-+ SSDBRelation
-
-SSDBRelation data type contains the following fields:
-
-  genes_id1         genes_id of the query (string)
-  genes_id2         genes_id of the target (string)
-  sw_score          Smith-Waterman score between genes_id1 and genes_id2 (int)
-  bit_score         bit score between genes_id1 and genes_id2 (float)
-  identity          identity between genes_id1 and genes_id2 (float)
-  overlap           overlap length between genes_id1 and genes_id2 (int)
-  start_position1   start position of the alignment in genes_id1 (int)
-  end_position1     end position of the alignment in genes_id1 (int)
-  start_position2   start position of the alignment in genes_id2 (int)
-  end_position2     end position of the alignment in genes_id2 (int)
-  best_flag_1to2    best flag from genes_id1 to genes_id2 (boolean)
-  best_flag_2to1    best flag from genes_id2 to genes_id1 (boolean)
-  definition1       definition string of the genes_id1 (string)
-  definition2       definition string of the genes_id2 (string)
-  length1           amino acid length of the genes_id1 (int)
-  length2           amino acid length of the genes_id2 (int)
-
-
-+ ArrayOfSSDBRelation
-
-ArrayOfSSDBRelation data type is a list of the SSDBRelation data type.
-
-+ MotifResult
-
-MotifResult data type contains the following fields:
-
-  motif_id          motif_id of the motif (string)
-  definition        definition of the motif (string)
-  genes_id          genes_id of the gene containing the motif (string)
-  start_position    start position of the motif match (int)
-  end_position      end position of the motif match (int)
-  score             score of the motif match for TIGRFAM and PROSITE (float)
-  evalue            E-value of the motif match for Pfam (double)
-
-Note: 'score' and/or 'evalue' is set to -1 if the corresponding value is
-not applicable.
-
-+ ArrayOfMotifResult
-
-ArrayOfMotifResult data type is a list of the MotifResult data type.
-
-+ Definition
-
-Definition data type contains the following fields:
-
-  entry_id          database entry_id (string)
-  definition        definition of the entry (string)
-
-+ ArrayOfDefinition
-
-ArrayOfDefinition data type is a list of the Definition data type.
-
-+ LinkDBRelation
-
-LinkDBRelation data type contains the following fields:
-
-  entry_id1         entry_id of the starting entry (string)
-  entry_id2         entry_id of the terminal entry (string)
-  type              type of the link as "direct" or "indirect" (string)
-  path              link path information across the databases (string)
-
-+ ArrayOfLinkDBRelation
-
-ArrayOfLinkDBRelation data type is a list of the LinkDBRelation data type.
-
-+ PathwayElement
-
-PathwayElement represents the object on the KEGG PATHWAY map.
-PathwayElement data type contains the following fields:
-
-  element_id        unique identifier of the object on the pathway (int)
-  type              type of the object ("gene", "enzyme" etc.) (string)
-  names             array of names of the object (ArrayOfstring)
-  components        array of element_ids of the group components (ArrayOfint)
-
-+ ArrayOfPathwayElement
-
-ArrayOfPathwayElement data type is a list of the PathwayElement data type.
-
-+ PathwayElementRelation
-
-PathwayElementRelation represents the relationship between PathwayElements.
-PathwayElementRelation data type contains the following fields:
-
-  element_id1       unique identifier of the object on the pathway (int)
-  element_id2       unique identifier of the object on the pathway (int)
-  type              type of relation ("ECrel", "maplink" etc.) (string)
-  subtypes          array of objects involved in the relation (ArrayOfSubtype)
-
-+ ArrayOfPathwayElementRelation
-
-ArrayOfPathwayElementRelation data type is a list of
-the PathwayElementRelation data type.
-
-++ Subtype
-
-Subtype is used in the PathwayElementRelation data type to represent
-the object involved in the relation.
-Subtype data type contains the following fields:
-
-  element_id        unique identifier of the object on the pathway (int)
-  relation          kind of relation ("compound", "inhibition" etc.) (string)
-  type              type of relation ("+p", "--|" etc.) (string)
-
-++ ArrayOfSubtype
-
-ArrayOfSubtype data type is a list of the Subtype data type.
-
-+ StructureAlignment
-
-StructureAlignment represents structural alignment of nodes between
-two molecules with score.
-StructureAlignment data type contains the following fields:
-
-  target_id         entry_id of the target (string)
-  score             alignment score (float)
-  query_nodes       indices of aligned nodes in the query molecule (ArrayOfint)
-  target_nodes      indices of aligned nodes in the target molecule (ArrayOfint)
-
-+ ArrayOfStructureAlignment
-
-ArrayOfStructureAlignment data type is a list of the StructureAlignment
-data type.
-
-=== Methods
-
-==== Meta information
-
-This section describes the APIs for retrieving the general information 
-concerning latest version of the KEGG database.
-
---- list_databases
-
-List of database names and its definitions available on the GenomeNet
-is returned.
-
-Return value:
-  ArrayOfDefinition (db, definition)
-
-Related site:
-  * ((<URL:http://www.genome.jp/dbget/>))
-  * ((<URL:http://www.genome.jp/about_genomenet/service.html>)) (section 2.2)
-
---- list_organisms
-
-List up the organisms in the KEGG/GENES database. 'org' code and the
-organism's full name is returned in the Definition data type.
-
-Return value:
-  ArrayOfDefinition (org, definition)
-
-Related site:
-  * ((<URL:http://www.genome.jp/kegg/catalog/org_list.html>))
-  * ((<URL:http://www.genome.jp/dbget-bin/get_htext?Organisms+-n>))
-
---- list_pathways(string:org)
-
-List up the pathway maps of the given organism in the KEGG/PATHWAY database.
-Passing the string "map" as its argument, this method returns a list of the 
-reference pathways.
-
-Return value:
-  ArrayOfDefinition (pathway_id, definition)
-
-Related site:
-  * ((<URL:http://www.genome.jp/kegg/pathway.html>))
-
-==== DBGET
-
-This section describes the wrapper methods for DBGET system developed
-at the GenomeNet.  For more details on DBGET system, see:
-
-Related site:
-  * ((<URL:http://www.genome.jp/dbget/dbget_manual.html>))
-  * ((<URL:http://www.genome.jp/dbget-bin/binfo>))
-
---- binfo(string:db)
-
-Show the version information of the specified database.
-Passing the string "all" as its argument, this method returns the version 
-information of all databases available on the GenomeNet.
-
-Return value:
-  string
-
-Example:
-  # Show the information of the latest GenBank database.
-  binfo("gb")
-
---- bfind(string:str)
-
-Wrapper method for bfind command. bfind is used for searching entries by 
-keywords. User need to specify a database from those which are supported 
-by DBGET system before keywords.  Number of keywords given at a time is
-restricted up to 100.
-
-Return value:
-  string
-
-Example:
-  # Returns the IDs and definitions of entries which have definition
-  # including the word 'E-cadherin' and 'human' from GenBank.
-  bfind("gb E-cadherin human")
-
---- bget(string:str)
-
-The bget command is used for retrieving database entries specified by a list
-of 'entry_id'.  This method accepts all the bget command line options as
-a string.  Number of entries retrieved at a time is restricted up to 100.
-
-Return value:
-  string
-
-Example:
-  # retrieve two KEGG/GENES entries
-  bget("eco:b0002 hin:tRNA-Cys-1")
-  # retrieve nucleic acid sequences in a FASTA format
-  bget("-f -n n eco:b0002 hin:tRNA-Cys-1")
-  # retrieve amino acid sequence in a FASTA format
-  bget("-f -n a eco:b0002")
-
---- btit(string:str)
-
-Wrapper method for btit command. btit is used for retrieving the definitions
-by given database entries.  Number of entries given at a time is restricted
-up to 100.
-
-Return value:
-  string
-
-Example:
-  # Returns the ids and definitions of four GENES entries "hsa:1798",
-  # "mmu:13478", "dme:CG5287-PA" and cel:Y60A3A.14".
-  btit("hsa:1798 mmu:13478 dme:CG5287-PA cel:Y60A3A.14")
-
---- bconv(string:str)
-
-The bconv command converts external IDs to KEGG IDs.
-Currently, following external databases are available.
-
-  External database  Database prefix
-  -----------------  ---------------
-  NCBI GI            ncbi-gi:
-  NCBI GeneID        ncbi-geneid:
-  GenBank            genbank:
-  UniGene            unigene:
-  UniProt            uniprot:
-  OMIM               omim:
-
-The result is a tab separated pair of the given ID and the converted ID
-in each line.
-
-Return value:
-  string
-
-Example:
-  # Convert NCBI GI and NCBI GeneID to KEGG genes_id
-  serv.bconv("ncbi-gi:10047086 ncbi-gi:10047090 ncbi-geneid:14751")
-
-Related site:
-  * ((<URL:http://www.genome.jp/kegg/genes.html>)) (Gene name conversion section)
-
-==== LinkDB
-
-+ Database cross references
-
---- get_linkdb_by_entry(string:entry_id, string:db, int:offset, int:limit)
-
-Retrieve the database entries linked from the user specified database entry.
-It can also be specified the targeted database.
-
-Return value:
-  ArrayOfLinkDBRelation
-
-Example:
-  # Get the entries of KEGG/PATHWAY database linked from the entry 'eco:b0002'.
-  get_linkdb_by_entry('eco:b0002', 'pathway', 1, 10)
-  get_linkdb_by_entry('eco:b0002', 'pathway', 11, 10)
-
-Related site:
-  * ((<URL:http://www.genome.jp/dbget-bin/www_linkdb>)) (Single entry to database)
-
---- get_linkdb_between_databases(string:from_db, string:to_db, int:offset, int:limit)
-
-Retrieve all links between entries among the given two databases.
-
-Return value:
-  ArrayOfLinkDBRelation
-
-Example:
-  # Get all links from "eco" (KEGG GENES) to "pathway" (KEGG PATHWAY)
-  # databases.
-  get_linkdb_between_databases("eco", "pathway", 1, 100)
-
-  # Print the contents of obtained links in Ruby language
-  links = get_linkdb_between_databases("eco", "pathway", 1, 100)
-  links.each do |link|
-    puts link.entry_id1  # => "eco:b0084"
-    puts link.entry_id2  # => "path:map00550"
-    puts link.type       # => "indirect"
-    puts link.path       # => "eco->ec->path"
-  end
-
-Related site:
-  * ((<URL:http://www.genome.jp/dbget-bin/www_linkdb>)) (Database to database)
-
-+ Relation among genes and enzymes
-
---- get_genes_by_enzyme(string:enzyme_id, string:org)
-
-Retrieve all genes of the given organism.
-
-Return value:
-  ArrayOfstring (genes_id)
-
-Example:
-  # Returns all the GENES entry IDs in E.coli genome which are assigned 
-  # EC number ec:1.2.1.1
-  get_genes_by_enzyme('ec:1.2.1.1', 'eco')
-
---- get_enzymes_by_gene(string:genes_id)
-
-Retrieve all the EC numbers which are assigned to the given gene.
-
-Return value:
-  ArrayOfstring (enzyme_id)
-
-Example:
-  # Returns the EC numbers which are assigned to E.coli genes b0002
-  get_enzymes_by_gene('eco:b0002')
-
-
-+ Relation among enzymes, compounds and reactions
-
---- get_enzymes_by_compound(string:compound_id)
-
-Retrieve all enzymes which have a link to the given compound_id.
-
-Return value:
-  ArrayOfstring (enzyme_id)
-
-Example:
-  # Returns the ENZYME entry IDs which have a link to the COMPOUND entry,
-  # 'cpd:C00345'
-  get_enzymes_by_compound('cpd:C00345')
-
---- get_enzymes_by_glycan(string:glycan_id)
-
-Retrieve all enzymes which have a link to the given glycan_id.
-
-Return value:
-  ArrayOfstring (enzyme_id)
-
-Example
-  # Returns the ENZYME entry IDs which have a link to the GLYCAN entry,
-  # 'gl:G00001'
-  get_enzymes_by_glycan('gl:G00001')
-
---- get_enzymes_by_reaction(string:reaction_id)
-
-Retrieve all enzymes which have a link to the given reaction_id.
-
-Return value:
-  ArrayOfstring (enzyme_id)
-
-Example:
-  # Returns the ENZYME entry IDs which have a link to the REACTION entry, 
-  # 'rn:R00100'.
-  get_enzymes_by_reaction('rn:R00100')
-
---- get_compounds_by_enzyme(string:enzyme_id)
-
-Retrieve all compounds which have a link to the given enzyme_id.
-
-Return value:
-  ArrayOfstring (compound_id)
-
-Example:
-  # Returns the COMPOUND entry IDs which have a link to the ENZYME entry, 
-  # 'ec:2.7.1.12'.
-  get_compounds_by_enzyme('ec:2.7.1.12')
- 
---- get_compounds_by_reaction(reaction_id)
-
-Retrieve all compounds which have a link to the given reaction_id.
-
-Return value:
-  ArrayOfstring (compound_id)
-
-Example:
-  # Returns the COMPOUND entry IDs which have a link to the REACTION entry, 
-  # 'rn:R00100'
-  get_compounds_by_reaction('rn:R00100')
-
---- get_glycans_by_enzyme(string:enzyme_id)
-
-Retrieve all glycans which have a link to the given enzyme_id.
-
-Return value:
-  ArrayOfstring (glycan_id)
-
-Example
-  # Returns the GLYCAN entry IDs which have a link to the ENZYME entry,
-  # 'ec:2.4.1.141'
-  get_glycans_by_enzyme('ec:2.4.1.141')
-
---- get_glycans_by_reaction(string:reaction_id)
-
-Retrieve all glycans which have a link to the given reaction_id.
-
-Return value:
-  ArrayOfstring (glycan_id)
-
-Example
-  # Returns the GLYCAN entry IDs which have a link to the REACTION entry,
-  # 'rn:R06164'
-  get_glycans_by_reaction('rn:R06164')
-
---- get_reactions_by_enzyme(string:enzyme_id)
-
-Retrieve all reactions which have a link to the given enzyme_id.
-
-Return value:
-  ArrayOfstring (reaction_id)
-
-Example:
-  # Returns the REACTION entry IDs which have a link to the ENZYME entry,
-  # 'ec:2.7.1.12'
-  get_reactions_by_enzyme('ec:2.7.1.12')
-
---- get_reactions_by_compound(string:compound_id)
-
-Retrieve all reactions which have a link to the given compound_id.
-
-Return value:
-  ArrayOfstring (reaction_id)
-
-Example:
-  # Returns the REACTION entry IDs which have a link to the COMPOUND entry,
-  # 'cpd:C00199'
-  get_reactions_by_compound('cpd:C00199')
-
---- get_reactions_by_glycan(string:glycan_id)
-
-Retrieve all reactions which have a link to the given glycan_id.
-
-Return value:
-  ArrayOfstring (reaction_id)
-
-Example
-  # Returns the REACTION entry IDs which have a link to the GLYCAN entry,
-  # 'gl:G00001'
-  get_reactions_by_glycan('gl:G00001')
-
-==== SSDB
-
-This section describes the APIs for SSDB database.  For more details
-on SSDB, see:
-
-  * ((<URL:http://www.genome.jp/kegg/ssdb/>))
-
-
---- get_best_best_neighbors_by_gene(string:genes_id, int:offset, int:limit)
-
-Search best-best neighbor of the gene in all organisms.
-
-Return value:
-  ArrayOfSSDBRelation
-
-Example:
-  # List up best-best neighbors of 'eco:b0002'.
-  get_best_best_neighbors_by_gene('eco:b0002', 1, 10)
-  get_best_best_neighbors_by_gene('eco:b0002', 11, 10)
-
---- get_best_neighbors_by_gene(string:genes_id, int:offset, int:limit)
-
-Search best neighbors in all organism.
-
-Return value:
-  ArrayOfSSDBRelation
-
-Example:
-  # List up best neighbors of 'eco:b0002'.
-  get_best_neighbors_by_gene('eco:b0002', 1, 10)
-  get_best_neighbors_by_gene('eco:b0002', 11, 10)
-
---- get_reverse_best_neighbors_by_gene(string:genes_id, int:offset, int:limit)
-
-Search reverse best neighbors in all organisms.
-
-Return value:
-  ArrayOfSSDBRelation
-
-Example:
-  # List up reverse best neighbors of 'eco:b0002'.
-  get_reverse_best_neighbors_by_gene('eco:b0002', 1, 10)
-  get_reverse_best_neighbors_by_gene('eco:b0002', 11, 10)
-
---- get_paralogs_by_gene(string:genes_id, int:offset, int:limit)
-
-Search paralogous genes of the given gene in the same organism.
-
-Return value:
-  ArrayOfSSDBRelation
-
-Example:
-  # List up paralogous genes of 'eco:b0002'.
-  get_paralogs_by_gene('eco:b0002', 1, 10)
-  get_paralogs_by_gene('eco:b0002', 11, 10)
-
-
-==== Motif
-
---- get_motifs_by_gene(string:genes_id, string:db)
-
-Search motifs in the specified gene. As for 'db', 
-user can specify one of the four database; Pfam, TIGRFAM, PROSITE pattern,
-PROSITE profile as 'pfam', 'tfam', 'pspt', 'pspf', respectively.
-You can also use 'all' to specify all of the four databases above.
-
-Return value:
-  ArrayOfMotifResult
-
-Example:
-  # Returns the all pfam motifs in the E. coli gene 'b0002'
-  get_motifs_by_gene('eco:b0002', 'pfam')
-
---- get_genes_by_motifs([string]:motif_id_list, int:offset, int:limit)
-
-Search all genes which contains all of the specified motifs.
-
-Return value:
-  ArrayOfDefinition (genes_id, definition)
-
-Example:
-  # Returns all genes which have Pfam 'DnaJ' and Prosite 'DNAJ_2' motifs.
-  list = ['pf:DnaJ', 'ps:DNAJ_2']
-  get_genes_by_motifs(list, 1, 10)
-  get_genes_by_motifs(list, 11, 10)
-
-==== KO
-
---- get_ko_by_gene(string:genes_id)
-
-Search all KOs to which given genes_id belongs.
-
-Return value:
-  ArrayOfstring (ko_id)
-
-Example:
-  # Returns ko_ids to which GENES entry 'eco:b0002' belongs.
-  get_ko_by_gene('eco:b0002')
-
-
---- get_ko_by_ko_class(string:ko_class_id)
-
-Return all KOs which belong to the given ko_class_id.
-
-Return value:
-  ArrayOfDefinition (ko_id, definition)
-
-Example:
-  # Returns ko_ids which belong to the KO class '01196'.
-  get_ko_by_ko_class('01196')
-
---- get_genes_by_ko_class(string:ko_class_id, string:org, int:offset, int:limit)
-
-Retrieve all genes of the specified organism which are classified
-under the given ko_class_id.
-
-Return value:
-  ArrayOfDefinition (genes_id, definition)
-
-Example:
-  # Returns first 100 human genes which belong to the KO class '00930'
-  get_genes_by_ko_class('00903', 'hsa' , 1, 100)
-
---- get_genes_by_ko(string:ko_id, string:org)
-
-Retrieve all genes of the specified organism which belong to the
-given ko_id.
-
-Return value:
-  ArrayOfDefinition (genes_id, definition)
-
-Example
-  # Returns E.coli genes which belong to the KO 'K00001'
-  get_genes_by_ko('ko:K00001', 'eco')
-
-  # Returns genes of all organisms which are assigned to the KO 'K00010'
-  get_genes_by_ko('ko:K00010', 'all')
-
-
-
-==== PATHWAY
-
-This section describes the APIs for PATHWAY database.  For more details
-on PATHWAY database, see:
-
-  * ((<URL:http://www.genome.jp/kegg/kegg2.html#pathway>))
-
-+ Coloring pathways
-
-Related site:
-  * ((<URL:http://www.genome.jp/kegg/tool/color_pathway.html>))
-
---- mark_pathway_by_objects(string:pathway_id, [string]:object_id_list)
-
-Mark the given objects on the given pathway map and return the URL of the
-generated image.
-
-Return value:
-  string (URL)
-
-Example:
-  # Returns the URL of the generated image for the given map 'path:eco00260'
-  # with objects corresponding to 'eco:b0002' and 'cpd:C00263' colored in red.
-  obj_list = ['eco:b0002', 'cpd:C00263']
-  mark_pathway_by_objects('path:eco00260', obj_list)
-
---- color_pathway_by_objects(string:pathway_id, [string]:object_id_list, [string]:fg_color_list, [string]:bg_color_list)
-
-Color the given objects on the pathway map with the specified colors 
-and return the URL of the colored image.  In the KEGG pathway maps,
-a gene or enzyme is represented by a rectangle and a compound is
-shown as a small circle.  'fg_color_list' is used for specifying the
-color of text and border of the given objects and 'bg_color_list' is
-used for its background area.  The order of colors in these lists
-correspond with the order of objects in the 'object_id_list' list.
-
-Return value:
-  string (URL)
-
-Example:
-  # Returns the URL for the given pathway 'path:eco00260' with genes
-  # 'eco:b0514' colored in red with yellow background and
-  # 'eco:b2913' colored in green with yellow background.
-  obj_list = ['eco:b0514', 'eco:b2913']
-  fg_list  = ['#ff0000', '#00ff00']
-  bg_list  = ['#ffff00', 'yellow']
-  color_pathway_by_objects('path:eco00260', obj_list, fg_list, bg_list)
-
---- color_pathway_by_elements(string:pathway_id, [int]:element_id_list, [string]:fg_color_list, [string]:bg_color_list)
-
-Color the objects (rectangles and circles on a pathway map) corresponding
-to the given 'element_id_list' with the specified colors and return the
-URL of the colored image.  'fg_color_list' is used for specifying the
-color of text and border of the objects with given 'element_id_list' and
-'bg_color_list' is used for its background area. The order of colors in
-these lists correspond with the order of objects in the 'element_id_list'
-list.
-
-This method is useful to specify which graphical object on the pathway
-to be colored as there are some cases that multiple genes are assigned to
-one rectangle or a gene is assigned to more than one rectangle on the
-pathway map. The 'element_id' is an unique numerical identifier on the
-pathway defined by the KGML (XML represeentation of the KEGG PATHWAY)
-in the <entry> tag.  List of the 'element_id's can be obtained by the
-'get_elements_by_pathway' method. 
-
-For more details on KGML, see:
-
-  * ((<URL:http://www.genome.jp/kegg/xml/>))
-
-Return value:
-  string (URL)
-
-Example:
-  # Returns the URL of the colored image of given pathway 'path:bsu00010' with
-  # * gene bsu:BG11350 (element_id 78, ec:3.2.1.86) colored in red on yellow
-  # * gene bsu:BG11203 (element_id 79, ec:3.2.1.86) colored in blue on yellow
-  # * gene bsu:BG11685 (element_id 51, ec:2.7.1.2)  colored in red on orange
-  # * gene bsu:BG11685 (element_id 47, ec:2.7.1.2)  colored in blue on orange
-  element_id_list = [ 78, 79, 51, 47 ]
-  fg_list  = [ '#ff0000', '#0000ff', '#ff0000', '#0000ff' ]
-  bg_list  = [ '#ffff00', '#ffff00', '#ffcc00', '#ffcc00' ]
-  color_pathway_by_elements('path:bsu00010', element_id_list, fg_list, bg_list)
-
---- get_html_of_marked_pathway_by_objects(string:pathway_id, [string]:object_id_list)
-
-HTML version of the 'mark_pathway_by_objects' method.
-Mark the given objects on the given pathway map and return the URL of the
-HTML with the generated image as a clickable map.
-
-Return value:
-  string (URL)
-
-Example:
-  # Returns the URL of the HTML which can be passed to the web browser
-  # as a clickable map of the generated image of the given pathway
-  # 'path:eco00970' with three objects corresponding to 'eco:b4258',
-  # 'cpd:C00135' and 'ko:K01881' colored in red.
-  obj_list = ['eco:b4258', 'cpd:C00135', 'ko:K01881']
-  get_html_of_marked_pathway_by_objects('path:eco00970', obj_list)
-
---- get_html_of_colored_pathway_by_objects(string:pathway_id, [string]:object_id_list, [string]:fg_color_list, [string]:bg_color_list)
-
-HTML version of the 'color_pathway_by_object' method.
-Color the given objects on the pathway map with the specified colors 
-and return the URL of the HTML containing the colored image as a
-clickable map.
-
-Return value:
-  string (URL)
-
-Example:
-  # Returns the URL of the HTML which can be passed to the web browser
-  # as a clickable map of colored image of the given pathway 'path:eco00970'
-  # with a gene 'eco:b4258' colored in gray/red, a compound 'cpd:C00135'
-  # colored in green/yellow and a KO 'ko:K01881' colored in blue/orange.
-  obj_list = ['eco:b4258', 'cpd:C00135', 'ko:K01881']
-  fg_list  = ['gray', '#00ff00', 'blue']
-  bg_list  = ['#ff0000', 'yellow', 'orange']
-  get_html_of_colored_pathway_by_objects('path:eco00970', obj_list, fg_list, bg_list)
-
---- get_html_of_colored_pathway_by_elements(string:pathway_id, [int]:element_id_list, [string]:fg_color_list, [string]:bg_color_list)
-
-HTML version of the 'color_pathway_by_elements' method.
-Color the objects corresponding to the given 'element_id_list' on the pathway
-map with the specified colors and return the URL of the HTML containing the
-colored image as a clickable map.
-
-Return value:
-  string (URL)
-
-Example:
-  # Returns the URL of the HTML which can be passed to the web browser as a
-  # clickable map of colored image of the given pathway 'path:bsu00010' with
-  # * gene bsu:BG11350 (element_id 78, ec:3.2.1.86) colored in red on yellow
-  # * gene bsu:BG11203 (element_id 79, ec:3.2.1.86) colored in blue on yellow
-  # * gene bsu:BG11685 (element_id 51, ec:2.7.1.2)  colored in red on orange
-  # * gene bsu:BG11685 (element_id 47, ec:2.7.1.2)  colored in blue on orange
-  element_id_list = [ 78, 79, 51, 47 ]
-  fg_list  = [ '#ff0000', '#0000ff', '#ff0000', '#0000ff' ]
-  bg_list  = [ '#ffff00', '#ffff00', '#ffcc00', '#ffcc00' ]
-  get_html_of_colored_pathway_by_elements('path:bsu00010', element_id_list, fg_list, bg_list)
-
-+ Relations of objects on the pathway
-
---- get_element_relations_by_pathway(string:pathway_id)
-
-Search all relations of the objects on the specified pathway.
-
-Return value:
-  ArrayOfPathwayElementRelation
-
-Example:
-  # Returns list of PathwayElementRelation on the pathway map 'path:bsu00010'
-  relations = get_element_relations_by_pathway('path:bsu00010')
-
-  # Print the contents of obtained relations in Ruby language
-  relations.each do |rel|
-    puts rel.element_id1
-    puts rel.element_id2
-    puts rel.type
-    rel.subtypes.each do |sub|
-      puts sub.element_id
-      puts sub.relation
-      puts sub.type
-    end  
-  end
-
-+ Objects on the pathway
-
---- get_elements_by_pathway(string:pathway_id)
-
-Search all objects on the specified pathway.  This method will be used in
-combination with the color_pathway_by_elements method to distingish graphical
-objects on the pathway sharing the same name.
-
-Return value:
-  ArrayOfPathwayElement
-
-Example:
-  # Returns list of PathwayElement on the pathway map 'path:bsu00010'
-  get_elements_by_pathway('path:bsu00010')
-
-  # Find entry_ids for genes 'bsu:BG11350', 'bsu:BG11203' and 'bsu:BG11685'
-  # in Ruby language
-  elems = serv.get_elements_by_pathway('path:bsu00010')
-  genes = [ 'bsu:BG11350', 'bsu:BG11203', 'bsu:BG11685' ]
-  elems.each do |elem|
-    genes.each do |gene|
-      if elem.names.include?(gene)
-        puts gene, elem.element_id
-      end
-    end
-  end
-
---- get_genes_by_pathway(string:pathway_id)
-
-Search all genes on the specified pathway.  Organism name is given by
-the name of the pathway map.
-
-Return value:
-  ArrayOfstring (genes_id)
-
-Example:
-  # Returns all E. coli genes on the pathway map '00020'.
-  get_genes_by_pathway('path:eco00020')
-
---- get_enzymes_by_pathway(string:pathway_id)
-
-Search all enzymes on the specified pathway.
-
-Return value:
-  ArrayOfstring (enzyme_id)
-
-Example:
-  # Returns all E. coli enzymes on the pathway map '00020'.
-  get_enzymes_by_pathway('path:eco00020')
-
---- get_compounds_by_pathway(string:pathway_id)
-
-Search all compounds on the specified pathway.
-
-Return value:
-  ArrayOfstring (compound_id)
-
-Example:
-  # Returns all E. coli compounds on the pathway map '00020'.
-  get_compounds_by_pathway('path:eco00020')
-
---- get_glycans_by_pathway(string:pathway_id)
-
-Search all glycans on the specified pathway.
-
-Return value:
-  ArrayOfstring (glycan_id)
-
-Example
-  # Returns all E. coli glycans on the pathway map '00510'
-  get_glycans_by_pathway('path:eco00510')
-
---- get_reactions_by_pathway(string:pathway_id)
-
-Retrieve all reactions on the specified pathway.
-
-Return value:
-  ArrayOfstring (reaction_id)
-
-Example:
-  # Returns all E. coli reactions on the pathway map '00260'
-  get_reactions_by_pathway('path:eco00260')
-
---- get_kos_by_pathway(string:pathway_id)
-
-Retrieve all KOs on the specified pathway.
-
-Return value:
-  ArrayOfstring (ko_id)
-
-Example:
-  # Returns all ko_ids on the pathway map 'path:hsa00010'
-  get_kos_by_pathway('path:hsa00010')
-
-+ Pathways by objects
-
-Related site:
-  * ((<URL:http://www.genome.jp/kegg/tool/search_pathway.html>))
-
---- get_pathways_by_genes([string]:genes_id_list)
-
-Search all pathways which include all the given genes.  How to pass the
-list of genes_id will depend on the language specific implementations.
-
-Return value:
-  ArrayOfstring (pathway_id)
-
-Example:
-  # Returns all pathways including E. coli genes 'b0077' and 'b0078'
-  get_pathways_by_genes(['eco:b0077' , 'eco:b0078'])
-
---- get_pathways_by_enzymes([string]:enzyme_id_list)
-
-Search all pathways which include all the given enzymes.
-
-Return value:
-  ArrayOfstring (pathway_id)
-
-Example:
-  # Returns all pathways including an enzyme '1.3.99.1'
-  get_pathways_by_enzymes(['ec:1.3.99.1'])
-
---- get_pathways_by_compounds([string]:compound_id_list)
-
-Search all pathways which include all the given compounds.
-
-Return value:
-  ArrayOfstring (pathway_id)
-
-Example:
-  # Returns all pathways including compounds 'C00033' and 'C00158'
-  get_pathways_by_compounds(['cpd:C00033', 'cpd:C00158'])
-
---- get_pathways_by_glycans([string]:glycan_id_list)
-
-Search all pathways which include all the given glycans.
- 
-Return value:
-  ArrayOfstring (pathway_id)
-
-Example
-  # Returns all pathways including glycans 'G00009' and 'G00011'
-  get_pathways_by_glycans(['gl:G00009', 'gl:G00011'])
-
---- get_pathways_by_reactions([string]:reaction_id_list)
-
-Retrieve all pathways which include all the given reaction_ids.
-
-Return value:
-  ArrayOfstring (pathway_id)
-
-Example:
-  # Returns all pathways including reactions 'rn:R00959', 'rn:R02740',
-  # 'rn:R00960' and 'rn:R01786'
-  get_pathways_by_reactions(['rn:R00959', 'rn:R02740', 'rn:R00960', 'rn:R01786'])
-
---- get_pathways_by_kos([string]:ko_id_list, string:org)
-
-Retrieve all pathways of the organisms which include all the given KO IDs.
-
-Return value:
-  ArrayOfstring (pathway_id)
-
-Example:
-  # Returns all human pathways including 'ko:K00016' and 'ko:K00382'
-  get_pathways_by_kos(['ko:K00016', 'ko:K00382'], 'hsa')
-
-  # Returns pathways of all organisms including 'ko:K00016' and 'ko:K00382'
-  get_pathways_by_kos(['ko:K00016', 'ko:K00382'], 'all')
-
-+ Relation among pathways
-
---- get_linked_pathways(string:pathway_id)
-
-Retrieve all pathways which are linked from a given pathway_id.
-
-Return value:
-  ArrayOfstring (pathway_id)
-
-Example:
-  # Returns IDs of PATHWAY entries linked from 'path:eco00620'.
-  get_linked_pathways('path:eco00620')
-
-==== GENES
-
-This section describes the APIs for GENES database. For more details
-on GENES database, see:
-
-  * ((<URL:http://www.genome.jp/kegg/kegg2.html#genes>))
-
---- get_genes_by_organism(string:org, int:offset, int:limit)
-
-Retrieve all genes of the specified organism.
-
-Return value:
-  ArrayOfstring (genes_id)
-
-Example:
-  # Retrive hundred H. influenzae genes at once.
-  get_genes_by_organism('hin', 1, 100)
-  get_genes_by_organism('hin', 101, 100)
-
-==== GENOME
-
-This section describes the APIs for GENOME database. For more details
-on GENOME database, see:
-
-  * ((<URL:http://www.genome.jp/kegg/kegg2.html#genome>))
-
---- get_number_of_genes_by_organism(string:org)
-
-Get the number of genes coded in the specified organism's genome. 
-
-Return value:
-  int
-
-Example:
-  # Get the number of the genes on the E.coli genome.
-  get_number_of_genes_by_organism('eco')
-
-==== LIGAND
-
-This section describes the APIs for LIGAND database.
-
-Related site:
-  * ((<URL:http://www.genome.jp/kegg/ligand.html>))
-
---- convert_mol_to_kcf(string:mol)
-
-Convert a MOL format into the KCF format.
-
-Return value:
-  string
-
-Example:
-  convert_mol_to_kcf(mol_str)
-
---- search_compounds_by_name(string:name)
-
-Returns a list of compounds having the specified name.
-
-Return value:
-  ArrayOfstring (compound_id)
-
-Example:
-  search_compounds_by_name("shikimic acid")
-
---- search_drugs_by_name(string:name)
-
-Returns a list of drugs having the specified name.
-
-Return value:
-  ArrayOfstring (drug_id)
-
-Example:
-  search_drugs_by_name("tetracyclin")
-
---- search_glycans_by_name(string:name)
-
-Returns a list of glycans having the specified name.
-
-Return value:
-  ArrayOfstring (glycan_id)
-
-Example:
-  search_glycans_by_name("Paragloboside")
-
---- search_compounds_by_composition(string:composition)
-
-Returns a list of compounds containing elements indicated by the composition.
-Order of the elements is insensitive.
-
-Return value:
-  ArrayOfstring (compound_id)
-
-Example:
-  search_compounds_by_composition("C7H10O5")
-
---- search_drugs_by_composition(string:composition)
-
-Returns a list of drugs containing elements indicated by the composition.
-Order of the elements is insensitive.
-
-Return value:
-  ArrayOfstring (drug_id)
-
-Example:
-  search_drugs_by_composition("HCl")
-
---- search_glycans_by_composition(string:composition)
-
-Returns a list of glycans containing sugars indicated by the composition.
-Order of the sugars (in parenthesis with number) is insensitive.
-
-Return value:
-  ArrayOfstring (glycan_id)
-
-Example:
-  search_glycans_by_composition("(Man)4 (GalNAc)1")
-
---- search_compounds_by_mass(float:mass, float:range)
-
-Returns a list of compounds having the molecular weight around 'mass'
-with some ambiguity (range).
-
-Return value:
-  ArrayOfstring (compound_id)
-
-Example:
-  search_compounds_by_mass(174.05, 0.1)
-
---- search_drugs_by_mass(float:mass, float:range)
-
-Returns a list of drugs having the molecular weight around 'mass'
-with some ambiguity (range).
-
-Return value:
-  ArrayOfstring (drug_id)
-
-Example:
-  search_drugs_by_mass(150, 1.0)
-
---- search_glycans_by_mass(float:mass, float:range)
-
-Returns a list of glycans having a molecular weight around 'mass'
-with some ambiguity (range).
-
-Return value:
-  ArrayOfstring (glycan_id)
-
-Example:
-  search_glycans_by_mass(174.05, 0.1)
-
---- search_compounds_by_subcomp(string:mol, int:offset, int:limit)
-
-Returns a list of compounds with the alignment having common sub-structure
-calculated by the subcomp program.
-
-You can obtain a MOL formatted structural data of matched compounds
-using bget method with the "-f m" option to confirm the alignment.
-
-Return value:
-  ArrayOfStructureAlignment
-
-Example:
-  mol = bget("-f m cpd:C00111")
-  search_compounds_by_subcomp(mol, 1, 5)
-
-Related site:
-  * ((<URL:http://www.genome.jp/ligand-bin/search_compound>))
-
---- search_drugs_by_subcomp(string:mol, int:offset, int:limit)
-
-Returns a list of drugs with the alignment having common sub-structure
-calculated by the subcomp program.
-
-You can obtain a MOL formatted structural data of matched drugs
-using bget method with the "-f m" option to confirm the alignment.
-
-Return value:
-  ArrayOfStructureAlignment
-
-Example:
-  mol = bget("-f m dr:D00201")
-  search_drugs_by_subcomp(mol, 1, 5)
-
-Related site:
-  * ((<URL:http://www.genome.jp/ligand-bin/search_compound>))
-
---- search_glycans_by_kcam(string:kcf, string:program, string:option, int:offset, int:limit)
-
-Returns a list of glycans with the alignment having common sub-structure
-calculated by the KCaM program.
-
-The argument 'program' can be 'gapped' or 'ungaped'.
-The next argument 'option' can be 'global' or 'local'.
-
-You can obtain a KCF formatted structural data of matched glycans
-using bget method with the "-f k" option to confirm the alignment.
-
-Return value:
-  ArrayOfStructureAlignment
-
-Example:
-  kcf = bget("-f k gl:G12922")
-  search_glycans_by_kcam(kcf, "gapped", "local", 1, 5)
-
-Related site:
-  * ((<URL:http://www.genome.jp/ligand-bin/search_glycan.cgi>))
-  * ((<URL:http://www.genome.jp/ligand/kcam/>))
-
-== Notes
-
-Last updated: December 27, 2006
-
-=end
-
diff --git a/doc/KEGG_API.rd.ja b/doc/KEGG_API.rd.ja
deleted file mode 100644
index 1579683..0000000
--- a/doc/KEGG_API.rd.ja
+++ /dev/null
@@ -1,1834 +0,0 @@
-=begin
-
-   $Id: KEGG_API.rd.ja,v 1.11 2006/12/27 13:40:45 k Exp $
-
-       Copyright (C) 2003-2006 Toshiaki Katayama <k at bioruby.org>
-
-= KEGG API
-
-KEGG API �ϥץ����ʤɤ��� KEGG �����Ѥ��뤿��Υ����֥����ӥ��Ǥ���
-��Ⱦ�Ǥϡ�KEGG �ǡ����١�������������������긡�������ꤹ�뤿��� 
-KEGG API ��Ȥ���ˡ���������ޤ�����Ⱦ�Υ�ե���󥹤� KEGG API ������ǽ��
-���⤷�ޤ�����Ȥ��Ƽ�� Ruby �����ȤäƲ��⤷�ޤ�����SOAP �� WSDL ��
-�������ȤΤǤ�������Perl, Python, Java �ʤɡˤǤ���д�ñ�� KEGG API ��
-���Ѥ��뤳�Ȥ��Ǥ��ޤ���
-
-== �ܼ�
-
-* ((<����ȥ���������>))
-* ((<KEGG API �λȤ���>))
-  * ((<Ruby ��>))
-  * ((<Perl ��>))
-    * ((<Perl �������>))
-  * ((<Python ��>))
-  * ((<Java ��>))
-* ((<KEGG API ��ե����>))
-  * ((<WSDL �ե�����>))
-  * ((<�Ѹ������>))
-  * ((<����ͤΥǡ�����>))
-    * ((<SSDBRelation ��>)), ((<ArrayOfSSDBRelation ��>))
-    * ((<MotifResult ��>)), ((<ArrayOfMotifResult ��>))
-    * ((<Definition ��>)), ((<ArrayOfDefinition ��>))
-    * ((<LinkDBRelation ��>)), ((<ArrayOfLinkDBRelation ��>))
-    * ((<PathwayElement ��>)), ((<ArrayOfPathwayElement ��>))
-    * ((<PathwayElementRelation ��>)), ((<ArrayOfPathwayElementRelation ��>))
-      * ((<Subtype ��>)), ((<ArrayOfSubtype ��>))
-    * ((<StructureAlignment ��>)), ((<ArrayOfStructureAlignment ��>))
-  * ((<�᥽�åɰ���>))
-    * ((<�᥿����>))
-      * ((<list_databases>))
-      * ((<list_organisms>))
-      * ((<list_pathways>))
-    * ((<DBGET>))
-      * ((<binfo>))
-      * ((<bfind>))
-      * ((<bget>))
-      * ((<btit>))
-      * ((<bconv>))
-    * ((<LinkDB>))
-      * ((<�ǡ����١����֤Υ��>))
-        * ((<get_linkdb_by_entry>))
-        * ((<get_linkdb_between_databases>))
-      * ((<�����Ҥȹ����ֹ�δط�>))
-        * ((<get_genes_by_enzyme>))
-        * ((<get_enzymes_by_gene>))
-      * ((<���ǡ�����ʪ���ꥢ�������δط�>))
-        * ((<get_enzymes_by_compound>))
-        * ((<get_enzymes_by_glycan>))
-        * ((<get_enzymes_by_reaction>))
-        * ((<get_compounds_by_enzyme>))
-        * ((<get_compounds_by_reaction>))
-        * ((<get_glycans_by_enzyme>))
-        * ((<get_glycans_by_reaction>))
-        * ((<get_reactions_by_enzyme>))
-        * ((<get_reactions_by_compound>))
-        * ((<get_reactions_by_glycan>))
-    * ((<SSDB>))
-      * ((<get_best_best_neighbors_by_gene>))
-      * ((<get_best_neighbors_by_gene>))
-      * ((<get_reverse_best_neighbors_by_gene>))
-      * ((<get_paralogs_by_gene>))
-    * ((<Motif>))
-      * ((<get_motifs_by_gene>))
-      * ((<get_genes_by_motifs>))
-    * ((<KO>))
-      * ((<get_ko_by_gene>))
-      * ((<get_ko_by_ko_class>))
-      * ((<get_genes_by_ko_class>))
-      * ((<get_genes_by_ko>))
-    * ((<PATHWAY>))
-      * ((<�ѥ��������ؤο��Ť�>))
-        * ((<mark_pathway_by_objects>))
-        * ((<color_pathway_by_objects>))
-        * ((<color_pathway_by_elements>))
-        * ((<get_html_of_marked_pathway_by_objects>))
-        * ((<get_html_of_colored_pathway_by_objects>))
-        * ((<get_html_of_colored_pathway_by_elements>))
-      * ((<�ѥ���������Υ��֥������ȴ֤δط�>))
-        * ((<get_element_relations_by_pathway>))
-      * ((<�ѥ���������Υ��֥������ȸ���>))
-        * ((<get_elements_by_pathway>))
-        * ((<get_genes_by_pathway>))
-        * ((<get_enzymes_by_pathway>))
-        * ((<get_compounds_by_pathway>))
-        * ((<get_glycans_by_pathway>))
-        * ((<get_reactions_by_pathway>))
-        * ((<get_kos_by_pathway>))
-      * ((<���֥������Ȥ���ѥ�����������>))
-        * ((<get_pathways_by_genes>))
-        * ((<get_pathways_by_enzymes>))
-        * ((<get_pathways_by_compounds>))
-        * ((<get_pathways_by_glycans>))
-        * ((<get_pathways_by_reactions>))
-        * ((<get_pathways_by_kos>))
-      * ((<�ѥ��������֤δط�>))
-        * ((<get_linked_pathways>))
-    * ((<GENES>))
-      * ((<get_genes_by_organism>))
-    * ((<GENOME>))
-      * ((<get_number_of_genes_by_organism>))
-    * ((<LIGAND>))
-      * ((<convert_mol_to_kcf>))
-      * ((<search_compounds_by_name>))
-      * ((<search_drugs_by_name>))
-      * ((<search_glycans_by_name>))
-      * ((<search_compounds_by_composition>))
-      * ((<search_drugs_by_composition>))
-      * ((<search_glycans_by_composition>))
-      * ((<search_compounds_by_mass>))
-      * ((<search_drugs_by_mass>))
-      * ((<search_glycans_by_mass>))
-      * ((<search_compounds_by_subcomp>))
-      * ((<search_drugs_by_subcomp>))
-      * ((<search_glycans_by_kcam>))
-
-== ����ȥ���������
-
-�����֥����ӥ��Ȥϡ����饤����Ȥ�����׵�򥤥󥿡��ͥåȤ�𤷤ƥ����Ф�
-���ꡢ�����Ф��ץ����μ¹Է�̤򥯥饤����Ȥ��֤����Ȥߤǡ�����Ū�ˤ�
-�����֥ڡ����ǻȤ��� HTTP �ץ�ȥ���ȡ���¤����ĥǡ�����ɽ����ˡ�Ȥ���
-��ڤ��Ƥ��� XML �ޡ������å�ʸ��������Ѥ�����Τ�ؤ��ޤ���
-
-�����֥����ӥ��ϥץ���फ�����ѤǤ��뤿�ᡢ���Ū�˸�����Ԥä��ꡢ
-���������ͤ��Ѥ����͡����׵��ưŪ�˽��������ꤹ��Τ˸����Ƥ��ޤ���
-���Τ��ᡢ�����ŷ��������䤤��碌��Google �ؤ�ʣ�縡���ʤɤǤ�Ȥ���
-���ޤ���
-
-HTTP ���Ѥ�����åȤˤϡ�ï�Ǥ�Ȥ��뤳�Ȥ�ե�������������ʤɤ����¤�
-�����ˤ������Ȥ����ꡢXML �����ˤϴ�Ϣ���Ѥ�·�äƤ��뤳�Ȥ�ʣ���ʥǡ���
-��¤��ɽ���Ǥ���Ȥ��ä��ݥ���Ȥ�����ޤ���
-
-�����֥����ӥ��Ǥ� XML ��Ϣ���Ѥ���Ǥ� SOAP �� WSDL ��Ȥ����Ȥ�¿���ʤä�
-���ޤ���SOAP �ϥ��饤����Ȥȥ����Ф����Ȥꤹ���å�������ɽ����ˡ��
-ɸ�ಽ������Τǡ������� Simple Object Access Method ��ά�Ȥ���Ƥ��ޤ���
-(���� Service Oriented Access Protocol �Ȥ������Ȥ⤢��褦�Ǥ�)��
-WSDL �� SOAP �˴�Ť������ӥ��򥳥�ԥ塼������ñ�����ѤǤ���褦�ˤ���
-����Τ�Τǡ�Web Service Description Language ��ά�ȤʤäƤ��ޤ���
-
-KEGG API �Ϥ����ε��Ѥ�Ȥäơ���ʬ�ζ�̣��������Ҥ�ѥ��������ʤɤ�
-�����ͳ�˸�����������Ϥ��Ѥ����ꤹ�뤿��μ��ʤ��󶡤��ޤ����桼����
-KEGG ��¿���ε�ǽ�򡢥����֥ڡ����򥯥�å���������˼�ʬ�Υץ�����
-�椫�鼡���ȼ¹Ԥ��뤳�Ȥ��Ǥ���褦�ˤʤ�ޤ���
-
-KEGG API �˴ؤ���ǿ��ξ���ϰʲ��� URL �������뤳�Ȥ��Ǥ��ޤ���
-
-  * ((<URL:http://www.genome.jp/kegg/soap/>))
-
-== KEGG API �λȤ���
-
-�ʲ��Ǥ� Ruby, Perl, Python, Java �γƸ���ˤ�� KEGG API �δ�ñ�ʻȤ�����
-�Ҳ𤷤ޤ����Ƹ���� SOAP �� WSDL �򰷤���饤�֥����ɲå��󥹥ȡ��뤹��
-ɬ�פ�����ޤ���
-
-=== Ruby ��
-
-Ruby 1.8.1 �ʹߤǤϡ�ɸ��� SOAP ��Ȥ������Ǥ��ޤ��Τ��ɲå��󥹥ȡ�
-���ɬ�פ���ޤ���
-
-Ruby 1.8.0 �Ǥ�
-((<SOAP4R|URL:http://raa.ruby-lang.org/list.rhtml?name=soap4r>)),
-((<devel-logger|URL:http://raa.ruby-lang.org/list.rhtml?name=devel-logger>)),
-((<http-access2|URL:http://raa.ruby-lang.org/list.rhtml?name=http-access2>))
-�ʤɤΥ饤�֥��򥤥󥹥ȡ��뤹��ɬ�פ�����ޤ���
-
-Ruby 1.6.8 �ξ��Ϥ���� SOAP4R ��ɬ�פȤ���¾�Υ饤�֥�� (date2, uconv,
-XML �Υѡ����ʤ�) �⥤�󥹥ȡ��뤹��ɬ�פ�����ޤ��Τǡ����餫���� SOAP4R
-�Υɥ�����Ȥ˽��ä�����Ƥ����ޤ���
-
-�ʲ��Υ���ץ륳���ɤϡ���IJ�ݤ� b0002 �����ҤȺǤ���Ʊ���ι⤤������
-��Smith-Waterman �������ι⤤��� 5 �ĸ�������ɽ������ץ����Ǥ���
-
-  #!/usr/bin/env ruby
-  
-  require 'soap/wsdlDriver'
-  
-  wsdl = "http://soap.genome.jp/KEGG.wsdl"
-  serv = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-  serv.generate_explicit_type = true	# SOAP �� Ruby �η��Ѵ���ͭ���ˤ���
-  
-  offset = 1
-  limit = 5
-  
-  top5 = serv.get_best_neighbors_by_gene('eco:b0002', offset, limit)
-  top5.each do |hit|
-    print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-  end
-
-�ץ�������� 'get_best_neighbors_by_gene' �ϡ�KEGG �� SSDB �ǡ���
-�١�����Ȥä� KEGG �� GENES �˴ޤޤ�Ƥ������ʪ����椫��Ǥ���Ʊ��
-�ι⤤�����Ҥ�õ���Ƥ��� API �Ǥ�����̤ϼ��Τ褦��ɽ������ޤ���
-
-  eco:b0002       eco:b0002       5283
-  eco:b0002       ecj:JW0001      5283
-  eco:b0002       sfx:S0002       5271
-  eco:b0002       sfl:SF0002      5271
-  eco:b0002       ecc:c0003       5269
-
-���ޤ�ư���ʤ����ϡ�
-
-  serv = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-  serv.wiredump_dev = STDERR	# �����ιԤ��­��
-  serv.generate_explicit_type = true
-
-�Τ褦�� wiredump_dev �� STDERR ����ꤷ���Ԥ��ɲä��Ƽ¹Ԥ��뤳�Ȥǡ�
-�����ФȤΤ���꤬ɸ�२�顼�˽��Ϥ���ޤ���
-
-KEGG API v3.0 ���顢�����Ф���ô��ڤ������꥿���ॢ���Ȥ��ɤ���Ū�ǡ�
-���̤η�̤��֤��᥽�åɤˤ� offset, limit ����Ƴ�����졢���٤�
-�������̤ο����¤����褦�ˤʤ�ޤ�����KEGG API v3.0��v5.0 �Ǥ�
-���줾�� start, max_results �ȸƤФ�Ƥ��ޤ�������KEGG API v6.0 ��
-offset, limit ��̾���ѹ����ޤ����ˡ����Τ��ᡢ�����Υ᥽�åɤ�
-���Ƥη�̤����뤿��ˤϥ롼�פ��Ѥ���ɬ�פ�����ޤ���
-
-  #!/usr/bin/env ruby
-  
-  require 'soap/wsdlDriver'
-  
-  wsdl = "http://soap.genome.jp/KEGG.wsdl"
-  serv = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver
-  serv.generate_explicit_type = true
-  
-  offset = 1
-  limit = 100
-  
-  loop do
-    results = serv.get_best_neighbors_by_gene('eco:b0002', offset, limit)
-    break unless results	# ��̤��֤äƤ��ʤ���н�λ
-    results.each do |hit|
-      print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-    end
-    offset += limit
-  end
-
-WSDL ���Ѥ��Ƥ��뤿�ᡢ��������Ǥ� Ruby �ξ��Ͻ�ʬ�˴�ñ�˽񤱤�
-������((<BioRuby|URL:http://bioruby.org/>)) ��Ȥ��Ȥ���˥��å����
-���Ȥ��Ǥ��ޤ���
-
-  #!/usr/bin/env ruby
-  
-  require 'bio'
-  
-  serv = Bio::KEGG::API.new
-  
-  results = serv.get_all_best_neighbors_by_gene('eco:b0002')
-  results.each do |hit|
-    print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-  end
-
-BioRuby �Ǥ� 'get_all_best_neighbors_by_gene' �᥽�åɤ��������Ƥ��ꡢ
-��ư�Ǿ嵭����Υ롼�פ�󤷤����Ƥη�̤��֤��Ƥ���ޤ����ޤ�������
-������̾���Υꥹ�Ȥ��Ϥ����б������ͤ�������֤��Ƥ���� filter �᥽��
-�ɤ�Ȥ����Ȥ�Ǥ��ޤ���
-
-  #!/usr/bin/env ruby
-  
-  require 'bio'
-  
-  serv = Bio::KEGG::API.new
-  
-  results = serv.get_all_best_neighbors_by_gene('eco:b0002')
-  
-  # �ߤ����ͤ�������̾�Υڥ��� SW �����������ξ�����
-  fields = [:genes_id1, :genes_id2, :sw_score]
-  results.each do |hit|
-    puts hit.filter(fields).join("\t")
-  end
-  
-  # ���줾��ΰ����Ҥǥ��饤���Ȥ��줿�ݥ������ʤɤ�ɽ����������
-  fields1 = [:genes_id1, :start_position1, :end_position1, :best_flag_1to2]
-  fields2 = [:genes_id2, :start_position2, :end_position2, :best_flag_2to1]
-  results.each do |hit|
-    print "> score: ", hit.sw_score, ", identity: ", hit.identity, "\n"
-    print "1:\t", hit.filter(fields1).join("\t"), "\n"
-    print "2:\t", hit.filter(fields2).join("\t"), "\n"
-  end
-
-���ϡ���IJ�� (eco) ���Ф��� KEGG �ѥ��������ΰ������֤���Ǥ���
-
-  #!/usr/bin/env ruby
-  
-  require 'bio'
-  
-  serv = Bio::KEGG::API.new
-  
-  list = serv.list_pathways("eco")
-  list.each do |path|
-    print path.entry_id, "\t", path.definition, "\n"
-  end
-
-ArrayOfDefinition �����֤����Τǡ����줾��ˤĤ��� Definition ������
-�� entry_id (�ѥ���������ID) �� definition (�ѥ��������Υ����ȥ�) ���
-��Ф��ޤ������ SSDB ����⡢�¤� SSDBRelation �������� genes_id1 ��
-sw_score �ʤɤ���Ф��Ƥ����ΤǤ����ˡ�
-
-�Ǹ����ϡ���IJ�ݤΰ����� b1002 �� b2388 ���б�����ܥå����˿����դ�
-���ѥ������� eco00010 �β������������ơ��ե��������¸������Ǥ���
-
-  #!/usr/bin/env ruby
-  
-  require 'bio'
-  
-  serv = Bio::KEGG::API.new
-  
-  genes = ["eco:b1002", "eco:b2388"]
-  url = serv.mark_pathway_by_objects("path:eco00010", genes)
-  
-  puts url
-
-  # BioRuby �ξ�硢���������������¸����Τ� save_image �᥽�åɤ��Ȥ���
-  serv.save_image(url, "filename.gif")
-
-=== Perl ��
-
-Perl �Ǥϡ��ʲ��Υ饤�֥����ɲå��󥹥ȡ��뤷�Ƥ���ɬ�פ�����ޤ���
-
-  * ((<SOAP::Lite|URL://www.soaplite.com/>)) (Ver. 0.60 ��ư���ǧ)
-    * ������ 0.60 ��꿷�����С������ǤϤ����Ĥ��Υ᥽�åɤ��Ȥ��ʤ��褦�Ǥ�
-  * ((<MIME-Base64|URL:http://search.cpan.org/author/GAAS/MIME-Base64/>))
-  * ((<libwww-perl|URL:http://search.cpan.org/author/GAAS/libwww-perl/>))
-  * ((<URI|URL:http://search.cpan.org/author/GAAS/URI/>))
-
-�ʲ���Ruby �κǽ�����Ʊ��������¹Ԥ��륵��ץ륳���ɤǤ���
-
-  #!/usr/bin/env perl
-  
-  use SOAP::Lite;
-  
-  $wsdl = 'http://soap.genome.jp/KEGG.wsdl';
-  
-  $serv = SOAP::Lite -> service($wsdl);
-  
-  $offset = 1;
-  $limit = 5;
-  
-  $top5 = $serv->get_best_neighbors_by_gene('eco:b0002', $offset, $limit);
-  
-  foreach $hit (@{$top5}) {
-    print "$hit->{genes_id1}\t$hit->{genes_id2}\t$hit->{sw_score}\n";
-  }
-
-Ʊ��������IJ�ݤ� KEGG �ѥ��������Υꥹ�Ȥ��֤���Ǥ���
-
-  #!/usr/bin/env perl
-  
-  use SOAP::Lite;
-  
-  $wsdl = 'http://soap.genome.jp/KEGG.wsdl';
-  
-  $results = SOAP::Lite
-               -> service($wsdl)
-               -> list_pathways("eco");
-  
-  foreach $path (@{$results}) {
-    print "$path->{entry_id}\t$path->{definition}\n";
-  }
-
-SOAP::Lite �Ǥϰ����������Ϥ����ˤϡ�
-
-  SOAP::Data->type(array => [value1, value2, .. ])
-
-�Τ褦���Ѵ�����ɬ�פ�����Τ���դ�ɬ�פǤ������Ȥ��Хѥ��������ؤο�
-�Ť��ǰ����ҤΥꥹ�Ȥ��Ϥ����ϡ�
-
-  #!/usr/bin/env perl
-  
-  use SOAP::Lite;
-  
-  $wsdl = 'http://soap.genome.jp/KEGG.wsdl';
-  
-  $serv = SOAP::Lite -> service($wsdl);
-  
-  $genes = SOAP::Data->type(array => ["eco:b1002", "eco:b2388"]);
-  
-  $result = $serv -> mark_pathway_by_objects("path:eco00010", $genes);
-  
-  print $result;
-
-�Τ褦�ˤʤ�ޤ���
-
-=== Perl �������
-
-KEGG API �ˤ�ʸ�������ͤ���������˼��᥽�åɤ������Ĥ�����ޤ�����
-���Ѥ��� SOAP::Lite �ΥС������˱����ơ�ɬ���ʲ��Τɤ��餫���н褬ɬ�פǤ���
-
-==== SOAP::Lite v0.60 �ޤ�
-
-Perl ������ (array) ���֥������Ȥ����Ȥ��� KEGG API ���Ϥ����ϡ�
-ɬ���ʲ��Τ褦�� SOAP ���֥������Ȥ�����Ū���Ѵ�����ɬ�פ�����ޤ���
-
-  SOAP::Data->type(array => [value1, value2, ... ])
-
-==== SOAP::Lite v0.61 �ʹ�
-
-SOAP::Lite v0.68 �ޤǤϥХ�������ޤ��Τ� v0.69 �ʹߤ����Ѥ򤪴��ᤷ�ޤ���
-
-Perl ��ʸ���� (string) ����� (int) ������ (array) ���֥������Ȥ�
-ArrayOfstring �� ArrayOfint ���� SOAP ���֥������Ȥ��Ѵ�����
-���֥롼����������ɲä���ɬ�פ�����ޤ���
-
-  sub SOAP::Serializer::as_ArrayOfstring{
-    my ($self, $value, $name, $type, $attr) = @_;
-
-    return [$name, {'xsi:type' => 'array', %$attr}, $value];
-  }
-
-  sub SOAP::Serializer::as_ArrayOfint{
-    my ($self, $value, $name, $type, $attr) = @_;
-    return [$name, {'xsi:type' => 'array', %$attr}, $value];
-  }
-
-�ޤ���������ץ���ˤ��������񤤤Ƥ������Ȥǡ�
-
-  $genes = SOAP::Data->type(array => ["eco:b1002", "eco:b2388"]);
-
-�ǤϤʤ�
-
-  $genes = ["eco:b1002", "eco:b2388"];
-
-�Τ褦�˾�ά���ƽ񤯤��Ȥ��Ǥ���褦�ˤʤ�ޤ��ʾ�ά���ʤ��Ƥ⹽���ޤ���ˡ�
-
-==== �ƥ��ȥץ����
-
-SOAP::Lite v0.69 �� ArrayOfstring ���Ѵ������ޤ�Ư���Ƥ��뤫�ɤ�����
-�ʲ��Υץ����ǥƥ��ȤǤ��ޤ��������� URL ��ɽ�������� OK �Ǥ���
-
-  #!/usr/bin/env perl
-  
-  use SOAP::Lite +trace => [qw(debug)];
-
-  print "SOAP::Lite = ", $SOAP::Lite::VERSION, "\n";
-
-  my $serv = SOAP::Lite -> service("http://soap.genome.jp/KEGG.wsdl");
-
-  my $result = $serv->mark_pathway_by_objects("map:eco00010", $genes);
-  print $result, "\n";
-
-  # sub routines implicitly used in the above code
-
-  sub SOAP::Serializer::as_ArrayOfstring{
-    my ($self, $value, $name, $type, $attr) = @_;
-    return [$name, {'xsi:type' => 'array', %$attr}, $value];
-  }
-
-  sub SOAP::Serializer::as_ArrayOfint{
-    my ($self, $value, $name, $type, $attr) = @_;
-    return [$name, {'xsi:type' => 'array', %$attr}, $value];
-  }
-
-=== Python ��
-
-Python �Ǥϰʲ��Υ饤�֥����ɲå��󥹥ȡ��뤷�Ƥ���ɬ�פ�����ޤ���
-
-  * ((<SOAPpy|URL:http://pywebsvcs.sourceforge.net/>))
-
-�ޤ���SOAPpy ����¸���Ƥ��뤤���Ĥ��Υѥå����� (fpconst, PyXML �ʤ�) ��
-ɬ�פˤʤ�ޤ���
-
-�ʲ���KEGG/PATHWAY �� 00020 �֤Υѥ��������˺ܤäƤ�����IJ�ݤΰ����Ҥ�
-�ꥹ�Ȥ��֤�����ץ륳���ɤǤ���
-
-  #!/usr/bin/env python
-
-  from SOAPpy import WSDL
-
-  wsdl = 'http://soap.genome.jp/KEGG.wsdl'
-  serv = WSDL.Proxy(wsdl)
-
-  results = serv.get_genes_by_pathway('path:eco00020')
-  print results
-
-=== Java ��
-
-Java �Ǥ� Apache Axis �饤�֥��� axis-1.2alpha ��꿷�����С������
-(axis-1_1 �ǤϤ��ޤ�ư���ޤ���ˤ����ꤷ�ơ�ɬ�פ� jar �ե������Ŭ��
-�ʥǥ��쥯�ȥ���֤��Ƥ���ɬ�פ�����ޤ���
-
-  * ((<Apache Axis|URL:http://ws.apache.org/axis/>))
-
-���Ȥ��� Apache Axis �С������ axis-1_2beta �ΥХ��ʥ����ۤξ�硢
-axis-1_2beta/lib �ʲ��ˤ��� jar �ե�����򥤥󥹥ȡ�����Υǥ��쥯��
-��˥��ԡ����ޤ���
-
-  % cp axis-1_2beta/lib/* /path/to/lib/
-
-�ʲ��Τ褦�˼¹Ԥ��� WSDL ���� KEGG API �ѤΥ��饹��ư�������ޤ���
-�ޤ����������줿�ե�������Զ���ľ������ˡ�
-((<axisfix.pl|URL:http://www.genome.jp/kegg/soap/support/axisfix.pl>))
-������ץȤ����ꤷ�Ƥ����ޤ���
-
-  % java -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/commons-logging.jar:/path/to/lib/commons-discovery.jar:/path/to/lib/saaj.jar:/path/to/lib/wsdl4j.jar:. org.apache.axis.wsdl.WSDL2Java -p keggapi  http://soap.genome.jp/KEGG.wsdl
-  % perl -i axisfix.pl keggapi/KEGGBindingStub.java
-  % javac -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/wsdl4j.jar:. keggapi/KEGGLocator.java
-  % jar cvf keggapi.jar keggapi/*
-  % javadoc -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar -d keggapi_javadoc keggapi/*.java
-
-javadoc �αѸ��Ǥ�ɬ�פʾ��� javadoc �� -locale en_US ���ץ�����
-�Ĥ��Ƽ¹Ԥ��ޤ���
-
-�ʲ��ϡ�Python �����Ʊ�ͤˡ����ꤷ�� KEGG/PATHWAY �˺ܤäƤ�������Ҥ�
-�ꥹ�Ȥ�ɽ�����륵��ץ륳���ɤǤ���
-
-  import keggapi.*;
-  
-  class GetGenesByPathway {
-          public static void main(String[] args) throws Exception {
-                  KEGGLocator  locator = new KEGGLocator();
-                  KEGGPortType serv    = locator.getKEGGPort();
-  
-                  String   query   = args[0];
-                  String[] results = serv.get_genes_by_pathway(query);
-  
-                  for (int i = 0; i < results.length; i++) {
-                          System.out.println(results[i]);
-                  }
-          }
-  }
-
-���ϡ�SSDBRelation ����������äƤ�����Ǥ���
-
-  import keggapi.*;
-  
-  class GetBestNeighborsByGene {
-          public static void main(String[] args) throws Exception {
-                  KEGGLocator    locator  = new KEGGLocator();
-                  KEGGPortType   serv     = locator.getKEGGPort();
-  
-                  String         query    = args[0];
-                  SSDBRelation[] results  = null;
-  
-                  results = serv.get_best_neighbors_by_gene(query, 1, 50);
-  
-                  for (int i = 0; i < results.length; i++) {
-                          String gene1  = results[i].getGenes_id1();
-                          String gene2  = results[i].getGenes_id2();
-                          int    score  = results[i].getSw_score();
-                          System.out.println(gene1 + "\t" + gene2 + "\t" + score);
-                  }
-          }
-  }
-
-���Υץ����ϰʲ��Τ褦�� -classpath ���ץ����� keggapi.jar �ե�
-�����ä��ƥ���ѥ��롢�¹Ԥ��ޤ���
-
-  % javac -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/wsdl4j.jar:/path/to/keggapi.jar GetBestNeighborsByGene.java
-
-  % java -classpath /path/to/lib/axis.jar:/path/to/lib/jaxrpc.jar:/path/to/lib/commons-logging.jar:/path/to/lib/commons-discovery.jar:/path/to/lib/saaj.jar:/path/to/lib/wsdl4j.jar:/path/to/keggapi.jar:. GetBestNeighborsByGene eco:b0002
-
-�Ķ��ѿ� CLASSPATH ����ꤷ�Ƥ����ȡ�Ĺ�����ץ���������ɬ�פ���
-���ʤ�ޤ���
-
-bash �ޤ��� zsh �ξ�硧
-
-  % for i in /path/to/lib/*.jar
-  do
-    CLASSPATH="${CLASSPATH}:${i}"
-  done
-  % export CLASSPATH
-
-tcsh �ξ�硧
-
-  % foreach i ( /path/to/lib/*.jar )
-    setenv CLASSPATH ${CLASSPATH}:${i}
-  end
-
-¾������ͤȷ����Ȥ��ͤμ��Ф����ʤɤˤĤ��Ƥϡ�WSDL2Java �ˤ������
-���줿�ʲ��Υɥ�����Ȥ򻲾Ȥ��Ƥ���������
-
-  * ((<URL:http://www.genome.jp/kegg/soap/doc/keggapi_javadoc_ja/>))
-
-== KEGG API ��ե����
-
-�ʲ��Ǥϡ�KEGG API ��Ȥ��Τ�ɬ�פʾ�������ƤΥ᥽�åɤ���⤷�ޤ���
-
-=== WSDL �ե�����
-
-SOAP �Ǥϡ������Ф��ɤΤ褦�ʥ᥽�åɤ���äƤ��뤫�ΤäƤ���ɬ�פ�
-����ޤ�����WSDL ��Ȥ��Ȥ��μ���ư���Ǥ��ޤ���WSDL �ե������
-�������ƥ��饤����ȥɥ饤�Ф���������Ȥ���ޤǡ��̾�� SOAP/WSDL ��
-�饤�֥�꤬�������Ƥ����Ϥ��Ǥ���KEGG API �� WSDL �ե�����ϰʲ���
-URL �ˤ���ޤ���
-
-  * ((<URL:http://soap.genome.jp/KEGG.wsdl>))
-
-=== �Ѹ������
-
-�ʲ��β���ǽФƤ��� KEGG ��Ϣ�Ѹ�������򤷤Ƥ����ޤ���
-
-  * org �� KEGG �˴ޤޤ�Ƥ�����ʪ��򤽤줾�죳ʸ�������ɤ�
-    ɽ��������Τǡ�eco ����IJ�ݡ�sce ���в����ʤɤȤʤäƤ��ޤ���
-    ��ʸ�������ɤΥꥹ�Ȥ� list_organisms �᥽�åɤ�ʲ��Υڡ�����
-    ���Ȥ��Ƥ���������
-
-    * ((<URL:http://www.genome.jp/kegg/catalog/org_list.html>))
-
-  * db �� GenomeNet ���󶡤���Ƥ���ǡ����١���̾�Ǥ����ǡ����١���̾��
-    �ꥹ�ȤˤĤ��Ƥ� list_databases �᥽�åɤ򻲾Ȥ��Ƥ���������
-
-  * entry_id �� db_name �ȥ���ȥ�̾�� ':' �Ƿ�礷�����ƤΥǡ����١����֤�
-    ��ˡ����� ID �Ǥ������Ȥ��� embl:J00231 �� EMBL �Υ���ȥ� J00231 ��
-    �ؤ��ޤ���entry_id �ϡ��ʲ��� genes_id, enzyme_id, compound_id,
-    drug_id, glycan_id, reaction_id, pathway_id, motif_id �ʤɤ�ޤߤޤ���
-
-  * genes_id �� keggorg �Ȱ�����̾�� ':' �Ƿ�礷�� KEGG �ΰ����� ID �Ǥ���
-    eco:b0001 ����IJ�ݤΰ����� b0001 ��ؤ��ޤ���
-
-  * enzyme_id �� ec: ��Ĥ��������ֹ�� ID �Ǥ���ec:1.1.1.1 �Ϲ����ֹ�
-    1.1.1.1 �ι��ǤǤ��륢�륳���롦�ǥҥɥ��ʡ�����ؤ��ޤ���
-
-  * compound_id �� cpd: ��Ĥ�������ʪ�� ID �Ǥ���cpd:C00158 �ϲ���ʪ�ֹ�
-    C00158 �β���ʪ�Ǥ��륯�������ؤ��ޤ���
-
-  * drug_id �� dr: ��Ĥ�������ʪ�� ID �Ǥ���dr:D00201 �ϥɥ�å��ֹ�
-    D00201 �Υɥ�å��Ǥ���ƥȥ饵��������ؤ��ޤ���
-
-  * glycan_id �� gl: ��Ĥ�������ʪ�� ID �Ǥ���gl:G00050 �������ֹ�
-    G00050 �������Ǥ��� Paragloboside ��ؤ��ޤ���
-
-  * reaction_id �� REACTION �ǡ����١����Υ���ȥ��ֹ�ǡ�rn:R00959 ��
-    �ꥢ��������ֹ� R00959 ��ȿ�� (cpd:C00103 �� cpd:00668 �֤��Ѵ�) ��
-    �ؤ��ޤ���
-
-  * pathway_id �� KEGG/PATHWAY �ǡ����١����Υѥ��������ֹ�ǡ��ѥ�������
-    �ֹ�Υץ�ե��å����� map �ξ��ϥ�ե���󥹥ѥ���������keggorg ��
-    ���Ϥ�����ʪ��λ��İ����Ҥκܤä��ѥ���������ɽ���ޤ����㤨��
-    path:map00020 �ϥ�ե���󥹥ѥ��������� 00020 �֤�path:eco00020 ��
-    ��IJ�ݤΥѥ������� 00020 �֤�ؤ��ޤ���
-
-  * motif_id �ϥ�����եǡ����١����Υ���ȥ�̾�ǡ�pf:DnaJ �� Pfam �Υ���ȥ�
-    DnaJ ��ؤ��ޤ���'pf' ��¾��'ps' �� PROSITE, 'bl' �� BLOCS, 'pr' ��
-    PRINTS, 'pd' �� PRODOM ��ؤ��ޤ���
-
-  * ko_id �� KO (KEGG Orthology) �ǡ����١����Υ���ȥ��ֹ�ǡ�ko:K02598
-    �� KO �ֹ� K02598 �� nitrite transporter NirC �Υ����������ʰ�����
-    ���롼�פ�ؤ��ޤ���
-
-  * ko_class_id �� KO ����Ū��ʬ�ष���Ƴ��ءʥ��饹�ˤ� ID �ǡ�
-    '01110' �� Carbohydrate Metabolism ���饹�ˤʤ�ޤ���
-    KO ���饹�� KO �ֹ�Υꥹ�Ȥϰʲ��Υڡ����򻲾Ȥ��Ƥ���������
-
-    * ((<URL:http://www.genome.jp/dbget-bin/get_htext?KO>))
-
-  * offset, limit �ϰ��٤��֤äƤ����̤ο����ꤹ�륪�ץ����ǡ�
-    offset ���ܤ��� limit �Ĥη�̤�������ޤ������Ƥη�̤�����ˤ�
-    offset = offset + limit �Ȥ��ƶ��������֤äƤ���ޤǷ����֤�
-    �᥽�åɤ�ƤӤޤ���
-
-  * fg_color_list �ϥѥ��������ؤο��Ť��ǥ��֥������Ȥ��Ȥ�ʸ����������
-    ������ꤹ������Ǥ���
-
-  * fg_color_list �ϥѥ��������ؤο��Ť��ǥ��֥������Ȥ��Ȥ��طʤ�
-    ������ꤹ������Ǥ���
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/kegg/kegg3.html>))
-
-=== ����ͤΥǡ�����
-
-KEGG API �Υ᥽�åɤ�ʸ����ʤ�ñ����ͤ��֤���Τ����Ǥʤ���ʣ���ʥǡ���
-��¤����ä��ͤ��֤����⤢�ꡢ���Τ���Υǡ��������������Ƥ��ޤ���
-API �Υ᥽�åɤˤ��ʸ����ʤɤΡ˷�̤��ʤ��ä���硢���ˤ�äưʲ���
-����ͤ��֤���ޤ���
-  * �������� -- ��Ȥ�� ArrayOfOBJ �ʥ��֥������Ȥ�����ˤ��֤��᥽�åɤξ��
-  * ����ʸ���� -- ��Ȥ�� String ��ʸ����ˤ��֤��᥽�åɤξ��
-  * -1 -- ��Ȥ�� int �ʿ��͡ˤ��֤��᥽�åɤξ��
-  * NULL -- ��Ȥ�Ȱʲ���������줿���֥������ȤΤɤ줫���֤��᥽�åɤξ��
-
-+ SSDBRelation ��
-
-SSDB �ǡ����١����γƥե�����ɤ��б������ͤ����ä��ǡ������Ǥ���
-
-  genes_id1         �����꡼�� genes_id (string)
-  genes_id2         �������åȤ� genes_id (string)
-  sw_score          genes_id1 �� genes_id2 �֤� Smith-Waterman ������ (int)
-  bit_score         genes_id1 �� genes_id2 �֤� bit ������ (float)
-  identity          genes_id1 �� genes_id2 �֤� �����ǥ�ƥ��ƥ� (float)
-  overlap           genes_id1 �� genes_id2 �Υ����С���å��ΰ��Ĺ�� (int)
-  start_position1   genes_id1 �Υ��饤���Ȥγ��ϻĴ���� (int)
-  end_position1     genes_id1 �Υ��饤���Ȥν�ü�Ĵ���� (int)
-  start_position2   genes_id2 �Υ��饤���Ȥγ��ϻĴ���� (int)
-  end_position2     genes_id2 �Υ��饤���Ȥν�ü�Ĵ���� (int)
-  best_flag_1to2    genes_id1 ���鸫�� genes_id2 ���٥��ȥҥåȤ� (boolean)
-  best_flag_2to1    genes_id2 ���鸫�� genes_id1 ���٥��ȥҥåȤ� (boolean)
-  definition1       genes_id1 �Υǥե��˥����ʸ���� (string)
-  definition2       genes_id2 �Υǥե��˥����ʸ���� (string)
-  length1           genes_id1 �Υ��ߥλ������Ĺ�� (int)
-  length2           genes_id2 �Υ��ߥλ������Ĺ�� (int)
-
-+ ArrayOfSSDBRelation ��
-
-ʣ��� SSDBRelation ���ǡ�����ޤ�����Ǥ���
-
-+ MotifResult ��
-
-  motif_id          ������եǡ����١����Υ���ȥ� ID (string)
-  definition        ������դΥǥե��˥���� (string)
-  genes_id          ������դ���äƤ�������Ҥ� genes_id (string)
-  start_position    ������դγ��ϻĴ���� (int)
-  end_position      ������դν�λ�Ĵ���� (int)
-  score             ������� (PROSITE Profile, TIGRFAM) ������ (float)
-  evalue            ������� (Pfam) �� E-value (double)
-
-��score �� evalue �Τ������б������ͤ�̵����ΤˤĤ��Ƥ� -1 ���֤��ޤ���
-
-+ ArrayOfMotifResult ��
-
-ʣ��� MotifResult ���ǡ�����ޤ�����Ǥ���
-
-+ Definition ��
-
-  entry_id          �ǡ����١�������ȥ꡼��ID (string)
-  definition        ����ȥ꡼�Υǥե��˥������� (string)
-
-+ ArrayOfDefinition ��
-
-ʣ��� Definitioin ���ǡ�����ޤ�����Ǥ���
-
-+ LinkDBRelation ��
-
-  entry_id1         �ǡ����١����Υ���ȥ� ID (string)
-  entry_id2         �ǡ����١����Υ���ȥ� ID (string)
-  type              "direct" �ޤ��� "indirect" �Υ�󥯤μ��� (string)
-  path              ��󥯤η�ϩ (string)
-
-+ ArrayOfLinkDBRelation ��
-
-ʣ��� LinkDBRelation ���ǡ�����ޤ�����Ǥ���
-
-+ PathwayElement ��
-
-�ѥ����������������Ƥ���ġ���Ȣ��ݤʤɤΥ��֥������Ȥ�ɽ���ǡ������Ǥ���
-
-  element_id        �ѥ���������Υ��֥������Ȥ�ؤ���ˡ����� ID (int)
-  type              ���֥������Ȥμ��� ("gene", "enzyme" �ʤ�) (string)
-  names             ���֥������ȤˤĤ���줿̾���Υꥹ�� (ArrayOfstring)
-  components        ���롼�פξ��ʤɴޤޤ�륪�֥������ȤΥꥹ�� (ArrayOfint)
-
-+ ArrayOfPathwayElement ��
-
-ʣ��� PathwayElement ���ǡ�����ޤ�����Ǥ���
-
-+ PathwayElementRelation ��
-
-PathwayElement �֤δط���ɽ���ǡ������Ǥ���
-
-  element_id1       �ѥ���������Υ��֥������Ȥ�ؤ���ˡ����� ID (int)
-  element_id2       �ѥ���������Υ��֥������Ȥ�ؤ���ˡ����� ID (int)
-  type              �ط��μ��� ("ECrel", "maplink" �ʤ�) (string)
-  subtypes          �ط��˴ؤ�륪�֥������Ȥ����� (ArrayOfSubtype)
-
-+ ArrayOfPathwayElementRelation ��
-
-ʣ��� PathwayElementRelation ���ǡ�����ޤ�����Ǥ���
-
-++ Subtype ��
-
-PathwayElementRelation ������ǻȤ�������Ǥǡ�PathwayElement �֤�
-�ط��Ť��륪�֥������ȡʲ���ʪ�ʤɡˤ�ɽ���ǡ������Ǥ���
-
-  element_id        �ѥ���������Υ��֥������Ȥ�ؤ���ˡ����� ID (int)
-  relation          �ط��μ��� ("compound", "inhibition" �ʤ�) (string)
-  type              �ط��ε��� ("+p", "--|" �ʤ�) (string)
-
-++ ArrayOfSubtype ��
-
-ʣ��� PathwayElementRelation ���ǡ�����ޤ�����Ǥ���
-
-+ StructureAlignment ��
-
-�桼���λ��ꤷ�����ع�¤�ȥǡ����١�����ι�¤����Ӥ�������
-���饤����ȤΥ��������б�����Ρ��ɡʸ��ǡˤΥꥹ�Ȥ�ɽ��
-�ǡ������Ǥ���
-
-  target_id         ��¤����оݤΥ���ȥ� ID (string)
-  score             ��¤��ӤΥ����� (float)
-  query_nodes       ���Ϲ�¤��ǥ��饤����Ȥ��줿�Ρ����ֹ� (ArrayOfint)
-  target_nodes      �оݹ�¤����б�����Ρ����ֹ� (ArrayOfint)
-
-+ ArrayOfStructureAlignment ��
-
-ʣ��� StructureAlignment ���ǡ�����ޤ�����Ǥ���
-
-=== �᥽�åɰ���
-
-�ʲ���KEGG API �����᥽�åɤΥꥹ�ȤǤ����᥽�åɤˤϥ᥿������֤���Τ�
-�ƥǡ����١������Ф����Τ�����ޤ������ߡ�KEGG �ˤ���ǡ����١����Τ���
-KEGG API ���оݤȤʤäƤ����Τ� SSDB, PATHWAY, GENES, LIGAND �Ǥ�������
-�ʳ��Υǡ����١����ؤ��б���᥽�åɤ��ɲä�缡�����ʤ�ͽ��Ǥ���
-
-�ʲ�����Ǥϡ�����ʤɤ� Ruby �����ɽ������äƽ񤫤�Ƥ��ޤ������ºݤ�
-������ä˥ꥹ�Ȥ��Ϥ����ʤɡˤϻ��Ѥ������ˤ�äưۤʤ��ǽ��������ޤ���
-
-==== �᥿����
-
-�ǿ��Υǡ����١�������ʤɤ��֤�����Υ᥽�åɤǤ���
-
---- list_databases
-
-KEGG ���󶡤��Ƥ��륲�Υ�ͥåȤǸ������ѤǤ���ǡ����١����ΰ������֤��ޤ���
-
-���͡�
-  ArrayOfDefinition (db, definition)
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/dbget/>))
-  * ((<URL:http://www.genome.jp/about_genomenet/service.html>)) (section 2.2)
-
---- list_organisms
-
-���� KEGG �˴ޤޤ�Ƥ�����ʪ�� (org) �Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfDefinition (org, definition)
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/kegg/catalog/org_list.html>))
-  * ((<URL:http://www.genome.jp/dbget-bin/get_htext?Organisms+-n>))
-
---- list_pathways(string:org)
-
-���� KEGG �˴ޤޤ�Ƥ�����ꤷ����ʪ�Υѥ��������Υꥹ�Ȥ��֤��ޤ��������
-'map' �Ȥ���ʸ�����Ϳ����ȥ�ե���󥹥ѥ��������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfDefinition (pathway_id, definition)
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/kegg/pathway.html>))
-
-==== DBGET
-
-DBGET �����ƥ���Ф���᥽�åɤΰ����Ǥ���DBGET �ˤĤ��ƾܤ����ϰʲ���
-�ڡ����򻲾Ȥ��Ƥ���������
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/dbget/dbget_manual.html>))
-  * ((<URL:http://www.genome.jp/dbget-bin/binfo>))
-
---- binfo(string:db)
-
-���ꤷ���ǡ����١����Υ���ȥ��乹�����ʤɾܤ����ǿ�������֤��ޤ���
-'all' ���Ϥ������Ѳ�ǽ�����ƤΥǡ����١����ξ�����֤��ޤ���
-binfo ���ޥ�ɤؤΰ����ʸ������Ϥ��ޤ���
-
-���͡�
-  string
-
-�㡧
-  # GenBank �ǡ����١����κǿ�����
-  binfo('gb')
-  # ���ƤΥǡ����١����κǿ�����
-  binfo('all')
-
---- bfind(string:str)
-
-DBGET �� bfind ���ޥ�ɤؤΥ�åѡ��Ǥ���������ɤˤ�ꥨ��ȥ��
-�������뤳�Ȥ��Ǥ��ޤ������٤�Ϳ�����륭����ɤο�� 100 �İʲ���
-���¤���Ƥ��ޤ���
-
-���͡�
-  string
-
-�㡧
-  # �ǥե��˥����� E-cadherin �� human ����� GenBank �Υ���ȥ�򸡺�
-  bfind("gb E-cadherin human")
-
-
---- bget(string:str)
-
-���ꤷ�� entry_id �Υ���ȥ���֤��ޤ���GENES �ΰ����ҥ���ȥ��Ϥ��ᡢ
-���Υ�ͥåȤ� DBGET �����ƥ���󶡤���Ƥ����͡��ʥǡ����١���
-(list_databases �򻲾�) �Υ���ȥ�����Ƽ����Ǥ��ޤ���bget ���ޥ�ɤؤ�
-���ޥ�ɥ饤�󥪥ץ�����ʸ������Ϥ��ޤ������٤˼����Ǥ��륨��ȥ��
-��� 100 �İʲ������¤���Ƥ��ޤ���
-
-���͡�
-  string
-
-�㡧
-  # ʣ��Υ���ȥ�����
-  bget("eco:b0002 bsu:BG10065 cpd:C00209")
-  # FASTA �ե����ޥåȤΥ��ߥλ���������
-  bget("-f -n a eco:b0002 bsu:BG10065")
-  # FASTA �ե����ޥåȤα�����������
-  bget("-f -n n eco:b0002 hin:tRNA-Cys-1")
-
---- btit(string:str)
-
-DBGET �� btit ���ޥ�ɤؤΥ�åѡ��Ǥ������ꤷ������ȥ�� ID ���б���
-��ǥե��˥������֤��ޤ������٤�Ϳ�����륨��ȥ�ο�� 100 �İʲ���
-���¤���Ƥ��ޤ���
-
-���͡�
-  string
-
-�㡧
-  # ����飴�Ĥΰ����ҤΥǥե��˥����򸡺�
-  btit("hsa:1798 mmu:13478 dme:CG5287-PA cel:Y60A3A.14")
-
---- bconv(string:str)
-
-����ǡ����١����� ID �� KEGG �� ID ���Ѵ����ޤ���
-��̤ϡ���������䤤��碌 ID ���Ѵ� ID �Υ����ڤ�ʸ����Ȥ����֤���ޤ���
-���ߡ��ʲ��γ���ǡ����١������б����Ƥ��ޤ���
-
-  ����ǡ����١���  �ǡ����١���̾�� prefix
-  ----------------  -----------------------
-  NCBI GI           ncbi-gi:
-  NCBI GeneID       ncbi-geneid:
-  GenBank           genbank:
-  UniGene           unigene:
-  UniProt           uniprot:
-  OMIM              omim:
-
-���Ȥ��� UniProt ID �ϡ����Ǥ� KEGG GENES �˵��ܤ���Ƥ��� UniProt
-�ؤΥ�󥯤�¾��EBI �� Genome Reviews �˵��ܤ���Ƥ��� UniProt ID
-�ȥ��������� ID ���б����Ѥ��ơ�NCBI �ȶ��̤Υ��������� ID ��
-KEGG GENES ���б�ɽ���Ȥ��Ѵ�����Ƥ��ޤ���
-
-���͡�
-  string
-
-�㡧
-  # NCBI GI �� Gene ID �� KEGG genes_id ���Ѵ�
-  serv.bconv("ncbi-gi:10047086 ncbi-gi:10047090 ncbi-geneid:14751")
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/kegg/genes.html>)) (Gene name conversion)
-
-==== LinkDB
-
-+ �ǡ����١����֤Υ��
-
---- get_linkdb_by_entry(string:entry_id, string:db, int:offset, int:limit)
-
-���ꤷ�� entry_id ����ľ�ܤޤ��ϴ���Ū�˥�󥯤���Ƥ��륨��ȥ�η�ϩ��
-db �ǻ��ꤷ���ǡ����١����ˤ��ɤ��ޤǸ������ޤ���
-
-���͡�
-  ArrayOfLinkDBRelation
-
-�㡧
-  # E. coli �ΰ����� b0002 �����󥯤Τ��ɤ�� KEGG/PATHWAY �Υ���ȥ�򸡺�
-  get_linkdb_by_entry('eco:b0002', 'pathway', 1, 10)
-  get_linkdb_by_entry('eco:b0002', 'pathway', 11, 10)
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/dbget-bin/www_linkdb>)) (Single entry to database)
-
---- get_linkdb_between_databases(string:from_db, string:to_db, int:offset, int:limit)
-
-���ꤷ�����ĤΥǡ����١����ǡ�����ȥ�֤Υ�󥯤����Ƹ������ޤ���
-
-���͡�
-  ArrayOfLinkDBRelation
-
-�㡧
-  # ��IJ�ݤ� KEGG GENES �� KEGG PATHWAY �δ֤Υ�󥯤����Ƹ���
-  get_linkdb_between_databases("eco", "pathway", 1, 100)
-
-  # Ruby �Ǽ���������󥯤����ɽ��������
-  links = get_linkdb_between_databases("eco", "pathway", 1, 100)
-  links.each do |link|
-    puts link.entry_id1  # => "eco:b0084"
-    puts link.entry_id2  # => "path:map00550"
-    puts link.type       # => "indirect"
-    puts link.path       # => "eco->ec->path"
-  end
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/dbget-bin/www_linkdb>)) (Database to database)
-
-+ �����Ҥȹ����ֹ�δط�
-
---- get_genes_by_enzyme(string:enzyme_id, string:org)
-
-�о���ʪ��ˤ����ơ����ꤷ�������ֹ����İ����ҤΥꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (genes_id)
-
-�㡧
-  # �����ֹ� 1.1.1.1 �������IJ�ݤΰ����ҤΥꥹ��
-  get_genes_by_enzyme('ec:1.1.1.1', 'eco')
-
---- get_enzymes_by_gene(string:genes_id)
-
-���ꤷ�������Ҥ��б���������ֹ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (enzyme_id)
-
-�㡧
-  # ��IJ�ݰ����� 'eco:b0002' �ι����ֹ�Υꥹ��
-  get_enzymes_by_gene(eco:b0002)
-
-+ ���ǡ�����ʪ���ꥢ�������δط�
-
---- get_enzymes_by_compound(string:compound_id)
-
-���ꤷ������ʪ���б���������ֹ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (compound_id)
-
-�㡧
-  # ����ʪ 'cpd:C00345' ����դ˴ؤ����ǤΥꥹ��
-  get_enzymes_by_compound('cpd:C00345')
-
---- get_enzymes_by_glycan(string:compound_id)
-
-���ꤷ���������б���������ֹ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (glycan_id)
-
-�㡧
-  # ���� 'gl:G00001' ����դ˴ؤ����ǤΥꥹ��
-  get_enzymes_by_glycan('gl:G00001')
-
---- get_enzymes_by_reaction(string:reaction_id)
-
-���ꤷ���ꥢ��������ֹ���б���������ֹ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (reaction_id)
-
-�㡧
-  # �ꥢ��������ֹ� R00100 ����Ĺ��ǤΥꥹ��
-  get_enzymes_by_reaction('rn:R00100')
-
---- get_compounds_by_enzyme(string:enzyme_id)
-
-���ꤷ�������ֹ���б����벽��ʪ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (compound_id)
-
-�㡧
-  # �����ֹ� 'ec:2.7.1.12' ����դ˴ؤ�벽��ʪ�Υꥹ��
-  get_compounds_by_enzyme('ec:2.7.1.12')
-
---- get_compounds_by_reaction(string:reaction_id)
-
-���ꤷ���ꥢ���������б����벽��ʪ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (compound_id)
-
-�㡧
-  # �ꥢ��������ֹ� 'rn:R00100' ��ȿ���˴ؤ�벽��ʪ�Υꥹ��
-  get_compounds_by_reaction('rn:R00100')
-
---- get_glycans_by_enzyme(string:enzyme_id)
-
-���ꤷ�������ֹ���б����������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (glycan_id)
-
-�㡧
-  # �����ֹ� 'ec:2.4.1.141' ����դ˴ؤ�������Υꥹ��
-  get_glycans_by_enzyme('ec:2.4.1.141')
-
---- get_glycans_by_reaction(string:reaction_id)
-
-���ꤷ���ꥢ���������б����������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (glycan_id)
-
-�㡧
-  # �ꥢ��������ֹ� 'rn:R06164' ��ȿ���˴ؤ�������Υꥹ��
-  get_glycans_by_reaction('rn:R06164')
-
---- get_reactions_by_enzyme(string:enzyme_id)
-
-���ꤷ�������ֹ���б�����ꥢ�������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (reaction_id)
-
-�㡧
-  # �����ֹ� 'ec:2.7.1.12' ��ȿ���˴ؤ��ꥢ��������ֹ�Υꥹ��
-  get_reactions_by_enzyme('ec:2.7.1.12')
-
---- get_reactions_by_compound(string:compound_id)
-
-���ꤷ������ʪ���б�����ꥢ�������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (reaction_id)
-
-�㡧
-  # ����ʪ 'cpd:C00199' �ο���ȿ���˴ؤ��ꥢ��������ֹ�Υꥹ��
-  get_reactions_by_compound('cpd:C00199')
-
---- get_reactions_by_glycan(string:glycan_id)
-
-���ꤷ���������б�����ꥢ�������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (reaction_id)
-
-�㡧
-  # ���� 'gl:G00001' �ο���ȿ���˴ؤ��ꥢ��������ֹ�Υꥹ��
-  get_reactions_by_glycan('gl:G00001')
-
-==== SSDB
-
-SSDB �ǡ����١������Ф���᥽�åɤΰ����Ǥ���SSDB �� KEGG/GENES �˴ޤޤ��
-����ʪ��������Ҵ֤� ssearch ���Ѥ��� Smith-Waterman ���르�ꥺ���
-��븡����Ԥä���̤ȡ��������ҤΥ�����ո�����̤���Ͽ�����ǡ����١����ǡ�
-���֤Τ�����׻������餫���Ὢ��äƤ��뤿���®�ʸ�������ǽ�ˤʤäƤ��ޤ���
-
-KEGG �����Υ�����η�ޤä���ʪ����濴���оݤȤ��Ƥ��뤳�Ȥȡ�Smith-
-Waterman �������ˤ����Ӥ��Ǥ��뤳�Ȥ��饪��������ѥ���ط��ˤ���
-�����Ҥ�õ������ʪ���ͭ�ΰ����Ҥθ�����Ϥ����͡��ʱ��Ѥ��ͤ����ޤ���
-
-SSDB �ǡ����١����ˤĤ��ƾܤ����ϰʲ��Υڡ����򻲾Ȥ��Ƥ���������
-
-  * ((<URL:http://www.genome.jp/kegg/ssdb/>))
-
-  
---- get_best_best_neighbors_by_gene(string:genes_id, int:offset, int:limit)
-
-������ȥ������åȤ� best-best �δط��ˤ�������Ҥ����򸡺����ޤ���
-
-���͡�
-  ArrayOfSSDBRelation
-
-�㡧
-  # ��IJ�ݤΰ����� b0002 ��������ʪ��� best-best �δط��ˤ��������
-  get_best_best_neighbors_by_gene('eco:b0002', 1, 10)
-  get_best_best_neighbors_by_gene('eco:b0002', 11, 10)
-
---- get_best_neighbors_by_gene(string:genes_id, int:offset, int:limit)
-
-�����꤫�鸫�ƥ٥��ȥҥåȤδط��ˤ�������Ҥ����򸡺����ޤ���
-
-���͡�
-  ArrayOfSSDBRelation
-
-�㡧
-  # ��IJ�ݤΰ����� b0002 ��������ʪ��� best neighbor �δط��ˤ��������
-  get_best_neighbors_by_gene('eco:b0002', 1, 10)
-  get_best_neighbors_by_gene('eco:b0002', 11, 10)
-
---- get_reverse_best_neighbors_by_gene(string:genes_id, int:offset, int:limit)
-
-�������å�¦����ʪ�狼�鸫�ƥ����꤬�٥��ȥҥåȤȤʤ�����Ҥ򸡺����ޤ���
-
-���͡�
-  ArrayOfSSDBRelation
-
-�㡧
-  # ��IJ�ݤΰ����� b0002 �� reverse best neighbor �δط��ˤ��������
-  get_reverse_best_neighbors_by_gene('eco:b0002', 1, 10)
-  get_reverse_best_neighbors_by_gene('eco:b0002', 11, 10)
-
---- get_paralogs_by_gene(string:genes_id, int:offset, int:limit)
-
-�������Ʊ����ʪ����ǥѥ�������Ҥ򸡺����ޤ���
-
-���͡�
-  ArrayOfSSDBRelation
-
-�㡧
-  # ��IJ�ݤΰ����� b0002 �ȥѥ���δط��ˤ��������
-  get_paralogs_by_gene('eco:b0002', 1, 10)
-  get_paralogs_by_gene('eco:b0002', 11, 10)
-
-
-==== Motif
-
---- get_motifs_by_gene(string:genes_id, string:db)
-
-���ꤷ�������Ҥ�¸�ߤ��������դΥꥹ�Ȥ��֤��ޤ���������եǡ����١���
-�Υꥹ�Ȥˤϡ�Pfam (pfam), TIGRFAM (tfam), PROSITE pattern (pspt), PROSITE
-profile (pspf) �ޤ��Ϥ�������� (all) ��������ޤ���
-
-���͡�
-  ArrayOfMotifResult
-
-�㡧
-  # ��IJ�ݤΰ����� b0002 ����Pfam������դΥꥹ��
-  get_motifs_by_gene('eco:b0002', 'pfam')
-
---- get_genes_by_motifs([string]:motif_id_list, int:offset, int:limit)
-
-���ꤷ��������դ����ƻ��İ����Ҥ򸡺����ޤ���
-
-���͡�
-  ArrayOfDefinition (genes_id, definition)
-
-�㡧
-  # Pfam �� DnaJ �� Prosite �� DNAJ_2 �˥ҥåȤ�������Ҥ򸡺�
-  list = ['pf:DnaJ', 'ps:DNAJ_2']
-  get_genes_by_motifs(list, 1, 10)
-  get_genes_by_motifs(list, 11, 10)
-
-==== KO
-
-KO (KEGG orthology), OC (KEGG ortholog cluster), PC (KEGG paralog cluster) ��
-��������뤿��Υ᥽�åɤǤ���KO �ϥ���졼����󤵤줿�������������ҷ���
-OC �� PC �ϵ���Ū�˥��饹����󥰤��줿��Ʊ���Τ�������ҷ��Υǡ����١����Ǥ���
-
---- get_ko_by_gene(string:genes_id)
-
-���ꤷ�������Ҥ˥������󤵤�Ƥ��� KO �Υ���ȥ��ֹ�������֤��ޤ���
-
-���͡�
-  ArrayOfstring (ko_id)
-
-�㡧
-  # eco:b0002 �����Ҥ˥������󤵤�Ƥ��� KO �Υꥹ��
-  get_ko_by_gene('eco:b0002')
-
-
---- get_ko_by_ko_class(string:ko_class_id)
-
-���ꤷ�� ko_class_id �˴ޤޤ�� ko_id �Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfDefinition (ko_id)
-
-�㡧
-  # KO class '01196' �˴ޤޤ�� KO �Υꥹ��
-  get_ko_by_ko_class('01196')
-
---- get_genes_by_ko_class(string:ko_class_id, string:org, int:offset, int:limit)
-
-���ꤷ����ʪ��� ko_class_id �˴ޤޤ������ҤΥꥹ�Ȥ��֤��ޤ���
-
- ���͡�
-  ArrayOfDefinition (genes_id, definition)
-
-�㡧
-  # KO ���饹 '00930' �˴ޤޤ��ҥȰ����ҤΥꥹ��
-  get_genes_by_ko_class('00903', 'hsa' , 1, 100)
-
---- get_genes_by_ko(string:ko_id, string:org)
-
-���ꤷ����ʪ��� ko_id �˴ޤޤ������ҤΥꥹ�Ȥ��֤��ޤ���
-��ʪ�拾���ɤ� all ����ꤹ�������ʪ��ΰ����Ҥ��֤��ޤ���
-
-���͡�
-  ArrayOfDefinition (genes_id, definition)
-
-�㡧
-  # KO �ֹ� 'K00001' �˴ޤޤ����IJ�ݰ����ҤΥꥹ��
-  get_genes_by_ko('ko:K00010', 'eco')
-
-  # KO �ֹ� 'K00010' �˴ޤޤ������ʪ��ΰ����ҥꥹ��
-  get_genes_by_ko('ko:K00010', 'all')
-
-
-
-==== PATHWAY
-
-PATHWAY �ǡ����١������Ф���᥽�åɤΰ����Ǥ���PATHWAY �ǡ����١�����
-�Ĥ��ƾܤ����ϰʲ��Υڡ����򻲾Ȥ��Ƥ���������
-
-  * ((<URL:http://www.genome.jp/kegg/kegg2.html#pathway>))
-
-+ �ѥ��������ؤο��Ť�
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/kegg/tool/color_pathway.html>))
-
---- mark_pathway_by_objects(string:pathway_id, [string]:object_id_list)
-
-���ꤷ����ʪ��ǡ�Ϳ����줿�ѥ��������ޥåפ�Ϳ����줿���֥�������
-�ʰ����ҡ�����ʪ�������ֹ�ˤ��б������Ȥ˿���Ĥ���������������
-������ URL ���֤��ޤ���
-
-���͡�
-  string (URL)
-
-�㡧
-  # ��IJ�ݤΥѥ������� path:eco00260 ��ΰ����� eco:b0002 �� Homoserine
-  # �� cpd:C00263 ���б�����ܥå������֤��忧���������� URL
-  obj_list = ['eco:b0002', 'cpd:C00263']
-  mark_pathway_by_objects('path:eco00260', obj_list)
-
---- color_pathway_by_objects(string:pathway_id, [string]:object_id_list, [string]:fg_color_list, [string]:bg_color_list)
-
-���ꤷ���ѥ���������Ϳ����줿���֥������ȡʰ����ҡ�����ʪ�����ǡˤ��Ф���
-ʸ�����Ȥ� fg_color_list �ǻ��ꤷ�������طʤ� bg_color_list �ǻ��ꤷ������
-�Ĥ��������������������� URL ���֤��ޤ���object_id_list �� fg_color_list,
-bg_color_list �����Ǥο�Ƚ��֤�·����褦����դ���ɬ�פ�����ޤ���
-
-���͡�
-  string (URL)
-
-�㡧
-  # �ѥ������� path:eco00053 ��˺ܤäƤ�����IJ�ݤΰ����� eco:b0207 ��
-  # �طʤ��֡�ʸ�����Ȥ��Ĥ��忧����eco:b1300 ���طʤ򲫿���ʸ�����Ȥ��Ф�
-  # �忧���������� URL ���֤��ޤ���
-  obj_list = ['eco:b0207', 'eco:b1300']
-  fg_list  = ['blue', '#00ff00']
-  bg_list  = ['#ff0000', 'yellow']
-  color_pathway_by_objects('path:eco00053', obj_list, fg_list, bg_list)
-
---- color_pathway_by_elements(string:pathway_id, [int]:element_id_list, [string]:fg_color_list, [string]:bg_color_list)
-
-���ꤷ�� element_id ���б�����ѥ���������Υ��֥������ȡ�Ĺ������ݤʤɡ�
-���Ф���ʸ�����Ȥ� fg_color_list �ǻ��ꤷ�������طʤ� bg_color_list ��
-���ꤷ������Ĥ��������������������� URL ���֤��ޤ���object_id_list ��
-fg_color_list, bg_color_list �����Ǥο�Ƚ��֤�·����褦����դ���
-ɬ�פ�����ޤ���
-
-KEGG PATHWAY �Ǥϡ�ʣ��ΰ����Ҥ���ĤΥܥå����˳�����Ƥ��Ƥ����ꡢ
-�դˣ��Ĥΰ����Ҥ�ʣ��Υܥå����˳�����Ƥ��Ƥ��뤳�Ȥ�����ޤ���
-���Τ褦�ʾ�� color_pathway_by_objects �᥽�åɤǤ��ɤ�ʬ���뤳�Ȥ�
-����ޤ��󤬡�color_pathway_by_elements ��Ȥ����ȤDz��Ǥ��ޤ���
-
-element_id �� KEGG PATHWAY �� XML ɽ���Ǥ��� KGML �� <entry> ������
-���ꤵ��롢�ѥ���������Υ���ե������������ˤĤ���줿��ˡ�����
-���ͤǤ����ѥ���������� element_id �� get_elements_by_pathway �᥽�åɤ�
-PathwayElement ���֥������ȤΥꥹ�ȤȤ������뤳�Ȥ��Ǥ��ޤ���
-PathwayElement �� type �� name °���ˤ������ҡ����ǡ�����ʪ�ʤɤ�
-�б����ꡢelement_id ���ͤ�Ȥäƥ��֥������Ȥ����ꤷ�ޤ���
-
-KGML �ˤĤ��ƾܤ����ϲ����Υڡ����򻲾Ȥ��Ƥ���������
-
-  * ((<URL:http://www.genome.jp/kegg/xml/>))
-
-����͡�
-  string (URL)
-
-�㡧
-  # ����ݤΥѥ������� path:bsu00010 ��˺ܤäƤ��롢
-  # ������ bsu:BG11350 (element_id 78, ec:3.2.1.86) ������/���طʤ�
-  # ������ bsu:BG11203 (element_id 79, ec:3.2.1.86) ������/���طʤ�
-  # ������ bsu:BG11685 (element_id 51, ec:2.7.1.2)  ������/���طʤ�
-  # ������ bsu:BG11685 (element_id 47, ec:2.7.1.2)  ������/���طʤ�
-  # ���줾���忧���������� URL ���֤��ޤ���
-  element_id_list = [ 78, 79, 51, 47 ]
-  fg_list  = [ '#ff0000', '#0000ff', '#ff0000', '#0000ff' ]
-  bg_list  = [ '#ffff00', '#ffff00', '#ffcc00', '#ffcc00' ]
-  color_pathway_by_elements('path:bsu00010', element_id_list, fg_list, bg_list)
-
---- get_html_of_marked_pathway_by_objects(string:pathway_id, [string]:object_id_list)
-
-����������˥���å��֥�ޥåפ�ޤ� HTML �ڡ����� URL ���֤�
-�С������� 'mark_pathway_by_objects' �᥽�åɤǤ���
-
-���͡�
-  string (URL)
-
-�㡧
-  # ��IJ�ݤΥѥ������� '00970' �Ρ������� 'eco:b4258'������ʪ 'cpd:C00135'
-  # KO �ֹ� 'ko:K01881' ���ֿ��ǥޡ�����Ĥ��������Υ���å��֥�ޥåפ�
-  # ɽ������ HTML �� URL ���֤�
-  obj_list = ['eco:b4258', 'cpd:C00135', 'ko:K01881']
-  get_html_of_marked_pathway_by_objects('path:eco00970', obj_list)
-
---- get_html_of_colored_pathway_by_objects(string:pathway_id, [string]:object_id_list, [string]:fg_color_list, [string]:bg_color_list)
-
-����������˥���å��֥�ޥåפ�ޤ� HTML �ڡ����� URL ���֤�
-�С������� 'color_pathway_by_objects' �᥽�åɤǤ���
-
-���͡�
-  string (URL)
-
-�㡧
-  # ��IJ�ݤΥѥ������� '00970' �Ρ������� 'eco:b4258' �����Ϥ˳���������ʪ
-  # 'cpd:C00135' �򲫿��Ϥ��С�KO �ֹ� 'ko:K01881' �����Ϥ��Ĥο��Ť��򤷤�
-  # �����Υ���å��֥�ޥåפ�ɽ������ HTML �� URL ���֤�
-  obj_list = ['eco:b4258', 'cpd:C00135', 'ko:K01881']
-  fg_list  = ['gray', '#00ff00', 'blue']
-  bg_list  = ['#ff0000', 'yellow', 'orange']
-  get_html_of_colored_pathway_by_objects('path:eco00970', obj_list, fg_list, bg_list)
-
---- get_html_of_colored_pathway_by_elements(string:pathway_id, [int]:element_id_list, [string]:fg_color_list, [string]:bg_color_list)
-
-����������˥���å��֥�ޥåפ�ޤ� HTML �ڡ����� URL ���֤�
-�С������� 'color_pathway_by_elements' �᥽�åɤǤ���
-
-���͡�
-  string (URL)
-
-�㡧
-  # ����ݤΥѥ������� path:bsu00010 ��˺ܤäƤ��롢
-  # ������ bsu:BG11350 (element_id 78, ec:3.2.1.86) ������/���طʤ�
-  # ������ bsu:BG11203 (element_id 79, ec:3.2.1.86) ������/���طʤ�
-  # ������ bsu:BG11685 (element_id 51, ec:2.7.1.2)  ������/���طʤ�
-  # ������ bsu:BG11685 (element_id 47, ec:2.7.1.2)  ������/���طʤ�
-  # �忧���������Υ���å��֥�ޥåפ�ɽ������ HTML �� URL ���֤��ޤ���
-  element_id_list = [ 78, 79, 51, 47 ]
-  fg_list  = [ '#ff0000', '#0000ff', '#ff0000', '#0000ff' ]
-  bg_list  = [ '#ffff00', '#ffff00', '#ffcc00', '#ffcc00' ]
-  color_pathway_by_elements('path:bsu00010', element_id_list, fg_list, bg_list)
-
-+ �ѥ���������Υ��֥������ȴ֤δط�
-
---- get_element_relations_by_pathway(string:pathway_id)
-
-���ꤷ���ѥ���������˺ܤäƤ��륪�֥����������Ǥδ֤δط����֤��ޤ���
-�ѥ��������������ˤ��������Ƥ���ط���ɽ����KGML �ˤ�����
-<relation> �������������ʥ���աˤ�������뤳�Ȥ��Ǥ��ޤ���
-���� get_elements_by_pathway �᥽�åɤ⻲�ȡ�
-
-���͡�
-  ArrayOfPathwayElementRelation
-
-�㡧
-  # ����ݤΥѥ������� path:bsu00010 ��˺ܤäƤ��� PathwayElement �֤�
-  # �ط��Ǥ��� PathwayElementRelation �Υꥹ�Ȥ�������롣
-  relations = get_element_relations_by_pathway('path:bsu00010')
-
-  # ���������ꥹ�Ȥ���Ȥ�ɽ�����롣
-  relations.each do |rel|
-    puts rel.element_id1
-    puts rel.element_id2
-    puts rel.type
-    rel.subtypes.each do |sub|
-      puts sub.element_id
-      puts sub.relation
-      puts sub.type
-    end  
-  end
-
-+ �ѥ���������Υ��֥������ȸ���
-
---- get_elements_by_pathway(string:pathway_id)
-
-���ꤷ���ѥ���������˺ܤäƤ��륪�֥����������ǤΥꥹ�Ȥ��֤��ޤ���
-����ˡ�ˤĤ��Ƥ� color_pathway_by_elements �᥽�åɤ򻲾Ȥ��Ƥ���������
-
-���͡�
-  ArrayOfPathwayElement
-
-�㡧
-  # ����ݤΥѥ������� path:bsu00010 ��˺ܤäƤ��� PathwayElement ��
-  # �ꥹ�Ȥ�������롣
-  get_elements_by_pathway('path:bsu00010')
-
-  # Ruby �ǰ����� bsu:BG11350, bsu:BG11203 �� bsu:BG11685 �� element_id ��
-  # Ĵ�٤��㡣
-  elems = serv.get_elements_by_pathway('path:bsu00010')
-  genes = [ 'bsu:BG11350', 'bsu:BG11203', 'bsu:BG11685' ]
-  elems.each do |elem|
-    genes.each do |gene|
-      if elem.names.include?(gene)
-        puts gene, elem.element_id
-      end
-    end
-  end
-
---- get_genes_by_pathway(string:pathway_id)
-
-���ꤷ���ѥ���������˺ܤäƤ�������ҤΥꥹ�Ȥ��֤��ޤ�����ʪ��̾��
-pathway_id �˴ޤޤ�� keggorg �ǻ��ꤷ�ޤ���
-
-���͡�
-  ArrayOfstring (genes_id)
-
-�㡧
-  # ��IJ�ݤΥѥ������� 00020 �֤˺ܤäƤ�������ҤΥꥹ��
-  get_genes_by_pathway('path:eco00020')
-
---- get_enzymes_by_pathway(string:pathway_id)
-
-���ꤷ���ѥ��������˺ܤäƤ�������ֹ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (enzyme_id)
-
-�㡧
-  # ��IJ�ݤΥѥ������� 00020 �֤˺ܤäƤ�������ֹ�Υꥹ��
-  get_enzymes_by_pathway('path:eco00020')
-
---- get_compounds_by_pathway(string:pathway_id)
-
-���ꤷ���ѥ��������˺ܤäƤ��벽��ʪ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (compound_id)
-
-�㡧
-  # ��IJ�ݤΥѥ������� 00020 �˺ܤäƤ��벽��ʪ�Υꥹ��
-  get_compounds_by_pathway('path:eco00020')
-
---- get_glycans_by_pathway(string:pathway_id)
-
-���ꤷ���ѥ��������˺ܤäƤ��������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (glycan_id)
-
-�㡧
-  # ��IJ�ݤΥѥ������� 00510 �˺ܤäƤ��������Υꥹ��
-  get_glycans_by_pathway('path:eco00510')
-
---- get_reactions_by_pathway(string:pathway_id)
-
-���ꤷ���ѥ��������˺ܤäƤ���ꥢ��������ֹ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (reaction_id)
-
-�㡧
-  # ��IJ�ݤΥѥ������� 00260 �֤˺ܤäƤ���ꥢ�������Υꥹ��
-  get_reactions_by_pathway('path:eco00260')
-
---- get_kos_by_pathway(string:pathway_id)
-
-���ꤷ���ѥ��������˺ܤäƤ��� KO �ֹ�Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (ko_id)
-
-�㡧
-  # �ҥȤΥѥ������� 00010 �˺ܤäƤ��� KO �ֹ�Υꥹ��
-  get_kos_by_pathway('path:hsa00010')
-
-+ ���֥������Ȥ���ѥ�����������
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/kegg/tool/search_pathway.html>))
-
---- get_pathways_by_genes([string]:genes_id_list)
-
-���ꤷ�������Ҥ����ƺܤäƤ���ѥ��������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (pathway_id)
-
-�㡧
-  # ��IJ�ݤΰ����� b0077 �� b0078 ��ξ���ܤäƤ���ѥ��������Υꥹ��
-  get_pathways_by_genes(['eco:b0077', 'eco:b0078'])
-
---- get_pathways_by_enzymes([string]:enzyme_id_list)
-
-���ꤷ�������ֹ椬���ƺܤäƤ���ѥ��������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (pathway_id)
-
-�㡧
-  # �����ֹ� 1.3.99.1 �ι��Ǥ��ܤäƤ���ѥ��������Υꥹ��
-  get_pathways_by_enzymes(['ec:1.3.99.1'])
-
---- get_pathways_by_compounds([string]:compound_id_list)
-
-���ꤷ������ʪ�����ƺܤäƤ���ѥ��������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (pathway_id)
-
-�㡧
-  # ����ʪ C00033 �� C00158 ��ξ���ܤäƤ���ѥ��������Υꥹ��
-  get_pathways_by_compounds(['cpd:C00033', 'cpd:C00158'])
-
---- get_pathways_by_glycans([string]:compound_id_list)
-
-���ꤷ�����������ƺܤäƤ���ѥ��������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (pathway_id)
-
-�㡧
-  # ���� G00009 �� G00011 ��ξ���ܤäƤ���ѥ��������Υꥹ��
-  get_pathways_by_glycans(['gl:G00009', 'gl:G00011'])
-
---- get_pathways_by_reactions([string]:reaction_id_list)
-
-���ꤷ���ꥢ��������ֹ椬���ƺܤäƤ���ѥ��������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (pathway_id)
-
-�㡧
-  # �ꥢ��������ֹ� rn:R00959, rn:R02740, rn:R00960, rn:R01786 �����Ƥ�
-  # ȿ����ޤ�ѥ��������Υꥹ��
-  get_pathways_by_reactions(['rn:R00959', 'rn:R02740', 'rn:R00960', 'rn:R01786'])
-
---- get_pathways_by_kos([string]:ko_id_list, string:org)
-
-���ꤷ����ʪ�� KO �ֹ椬���ƺܤäƤ���ѥ��������Υꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (pathway_id)
-
-�㡧
-  # KO �ֹ� 'ko:K00016' �� 'ko:K00382' ��ޤ�ҥȤΥѥ��������Υꥹ��
-  get_pathways_by_kos(['ko:K00016', 'ko:K00382'], 'hsa')
-
-  # KO �ֹ� 'ko:K00016' �� 'ko:K00382' ��ޤ�����ʪ��Υѥ��������Υꥹ��
-  get_pathways_by_kos(['ko:K00016', 'ko:K00382'], 'all')
-
-+ �ѥ��������֤δط�
-
---- get_linked_pathways(string:pathway_id)
-
-���ꤷ���ѥ��������ֹ�Υѥ������������󥯤���Ƥ���ѥ���������
-�ꥹ�Ȥ��֤��ޤ���
-
-���͡�
-  ArrayOfstring (pathway_id)
-
-�㡧
-  # �ѥ������� path:eco00620 �����󥯤���Ƥ���ѥ��������Υꥹ��
-  get_linked_pathways('path:eco00620')
-
-==== GENES
-
-GENES �ǡ����١������Ф���᥽�åɤΰ����Ǥ���GENES �ǡ����١����ˤĤ���
-�ܤ����ϰʲ��Υڡ����򻲾Ȥ��Ƥ���������
-
-  * ((<URL:http://www.genome.jp/kegg/kegg2.html#genes>))
-
---- get_genes_by_organism(string:org, int:offset, int:limit)
-
-���ꤷ����ʪ����� GENES ����ȥ�Τ�����offset ���ܤ��� limit ʬ��
-��̤��֤��ޤ���
-
-���͡�
-  ArrayOfstring (genes_id)
-
-�㡧
-  # ����ե륨�󥶶ݤΰ����ҥꥹ�Ȥ� 100 �Ĥ�������
-  get_genes_by_organism('hin', 1, 100)
-  get_genes_by_organism('hin', 101, 100)
-
-==== GENOME
-
-GENOME �ǡ����١������Ф���᥽�åɤΰ����Ǥ���GENOME �ǡ����١����ˤĤ���
-�ܤ����ϰʲ��Υڡ����򻲾Ȥ��Ƥ���������
-
-  * ((<URL:http://www.genome.jp/kegg/kegg2.html#genome>))
-
---- get_number_of_genes_by_organism(string:org)
-
-���ꤷ����ʪ�郎���İ����ҿ���֤��ޤ���
-
-���͡�
-  int
-
-�㡧
-  # ��IJ�ݤ����İ����Ҥο�
-  get_number_of_genes_by_organism('eco')
-
-==== LIGAND
-
-LIGAND �ǡ����١������Ф���᥽�åɤΰ����Ǥ���
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/kegg/ligand.html>))
-
---- convert_mol_to_kcf(string:mol)
-
-MOL �ե����ޥåȤΥ���ȥ�� KCF �ե����ޥåȤ��Ѵ����ޤ���
-
-���͡�
-  string
-
-�㡧
-  convert_mol_to_kcf(mol_str)
-
---- search_compounds_by_name(string:name)
-
-����ʪ��̾���Ǹ������ޤ���
-
-���͡�
-  ArrayOfstring (compound_id)
-
-�㡧
-  search_compounds_by_name("shikimic acid")
-
---- search_drugs_by_name(string:name)
-
-�ɥ�å���̾���Ǹ������ޤ���
-
-���͡�
-  ArrayOfstring (drug_id)
-
-�㡧
-  search_drugs_by_name("tetracyclin")
-
---- search_glycans_by_name(string:name)
-
-������̾���Ǹ������ޤ���
-
-���͡�
-  ArrayOfstring
-
-�㡧
-  search_glycans_by_name("Paragloboside")
-
---- search_compounds_by_composition(string:composition)
-
-����ʪ�������Ǹ������ޤ���
-�����ϸ��ǤȸĿ��Ĥʤ���ʸ����ǻ��ꤷ�ޤ���
-���Ǥν��֤�̵�ط��Ǥ���
-
-���͡�
-  ArrayOfstring (compound_id)
-
-�㡧
-  search_compounds_by_composition("C7H10O5")
-
---- search_drugs_by_composition(string:composition)
-
-�ɥ�å��������Ǹ������ޤ���
-�����ϸ��ǤȸĿ��Ĥʤ���ʸ����ǻ��ꤷ�ޤ���
-���Ǥν��֤�̵�ط��Ǥ���
-
-���͡�
-  ArrayOfstring (drug_id)
-
-�㡧
-  search_drugs_by_composition("HCl")
-
---- search_glycans_by_composition(string:composition)
-
-�����������Ǹ������ޤ���
-�����ϥ��å��dz�ä����ȸĿ�򥹥ڡ����Ƕ��ڤä�ʸ����ǻ��ꤷ�ޤ���
-���ν��֤ϼ�ͳ�Ǥ���
-
-���͡�
-  ArrayOfstring
-
-�㡧
-  search_glycans_by_composition("(Man)4 (GalNAc)1")
-
---- search_compounds_by_mass(float:mass, float:range)
-
-����ʪ��ʬ���̤Ǹ������ޤ���
-mass ���濴�Ȥ��� ��range �νŤ��β���ʪ����������ޤ���
-
-���͡�
-  ArrayOfstring (compound_id)
-
-�㡧
-  search_compounds_by_mass(174.05, 0.1)
-
---- search_drugs_by_mass(float:mass, float:range)
-
-�ɥ�å���ʬ���̤Ǹ������ޤ���
-mass ���濴�Ȥ��� ��range �νŤ��Υɥ�å�����������ޤ���
-
-���͡�
-  ArrayOfstring (drug_id)
-
-�㡧
-  search_drugs_by_mass(150, 1.0)
-
---- search_glycans_by_mass(float:mass, float:range)
-
-������ʬ���̤Ǹ������ޤ���
-mass ���濴�Ȥ��� ��range �νŤ�����������������ޤ���
-
-���͡�
-  ArrayOfstring
-
-�㡧
-  search_glycans_by_mass(1200, 0.5)
-
---- search_compounds_by_subcomp(string:mol, int:offset, int:limit)
-
-������ʬ��¤����IJ���ʪ�� subcomp �ץ�����ȤäƸ������ޤ���
-
-���饤����Ȥ��줿������ʬ�ΥΡ����ֹ椬������֤����Τǡ�
-���饤����Ȥ��줿����ʪ�ι�¤�� bget ���ޥ�ɤ� "-f m"
-���ץ�����Ĥ��� MOL �ե����ޥåȤǼ��������б����ǧ���ޤ���
-
-���͡�
-  ArrayOfStructureAlignment
-
-�㡧
-  mol = bget("-f m cpd:C00111")
-  search_compounds_by_subcomp(mol, 1, 5)
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/ligand-bin/search_compound>))
-
---- search_drugs_by_subcomp(string:mol, int:offset, int:limit)
-
-������ʬ��¤����ĥɥ�å��� subcomp �ץ�����ȤäƸ������ޤ���
-
-���饤����Ȥ��줿������ʬ�ΥΡ����ֹ椬������֤����Τǡ�
-���饤����Ȥ��줿�ɥ�å��ι�¤�� bget ���ޥ�ɤ� "-f m"
-���ץ�����Ĥ��� MOL �ե����ޥåȤǼ��������б����ǧ���ޤ���
-
-���͡�
-  ArrayOfStructureAlignment
-
-�㡧
-  mol = bget("-f m dr:D00201")
-  search_drugs_by_subcomp(mol, 1, 5)
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/ligand-bin/search_compound>))
-
---- search_glycans_by_kcam(string:kcf, string:program, string:option, int:offset, int:limit)
-
-������ʬ��¤����������� KCaM �ץ�����ȤäƸ������ޤ���
-
-����� program �ˤ� approximate �ޥå���Ԥ� "gapped" �ޤ���
-exact �ޥå���Ԥ� "ungapped" ����ꤷ�ޤ����ޤ� option �ˤ�
-"global" �ޤ��� "local" ����ꤷ�ޤ���
-
-���饤����Ȥ��줿������ʬ�ΥΡ����ֹ椬������֤����Τǡ�
-���饤����Ȥ��줿�����ι�¤�� bget ���ޥ�ɤ� "-f k"
-���ץ�����Ĥ��� KCF �ե����ޥåȤǼ��������б����ǧ���ޤ���
-
-���͡�
-  ArrayOfStructureAlignment
-
-�㡧
-  kcf = bget("-f k gl:G12922")
-  search_glycans_by_kcam(kcf, "gapped", "local", 1, 5)
-
-��Ϣ URL��
-  * ((<URL:http://www.genome.jp/ligand-bin/search_glycan.cgi>))
-  * ((<URL:http://www.genome.jp/ligand/kcam/>))
-
-== Notes
-
-Last updated: December 27, 2006
-
-=end
-
diff --git a/RELEASE_NOTES.rdoc b/doc/RELEASE_NOTES-1.4.3.rdoc
similarity index 95%
copy from RELEASE_NOTES.rdoc
copy to doc/RELEASE_NOTES-1.4.3.rdoc
index 7fd8473..d113a88 100644
--- a/RELEASE_NOTES.rdoc
+++ b/doc/RELEASE_NOTES-1.4.3.rdoc
@@ -1,21 +1,3 @@
-= BioRuby 1.4.3.0001 RELEASE NOTES
-
-Some bug fixes have been made to the BioRuby 1.4.3.0001 after the version
-1.4.3 is released.
-
-== Bug fixes
-
-=== Ruby 2.0 support
-
-* "gem install bio" failed with Ruby 2.0 or later versions.
-* lib/bio/db/gff.rb: Set script encoding to US-ASCII.
-
-=== Other bug fixes
-
-* Bio::BLAST::Default::Report parse error when subject sequence contains
-  spaces. (https://redmine.open-bio.org/issues/3385)
-
-
 = BioRuby 1.4.3 RELEASE NOTES
 
 A lot of changes have been made to the BioRuby 1.4.3 after the version 1.4.2
diff --git a/doc/Tutorial.rd b/doc/Tutorial.rd
index 7422084..59548a2 100644
--- a/doc/Tutorial.rd
+++ b/doc/Tutorial.rd
@@ -1410,12 +1410,6 @@ Information on these biogems, and the many others available, see ((<Biogems.info
 
 
 
-== KEGG API
-
-Please refer to KEGG_API.rd.ja (English version: ((<URL:http://www.genome.jp/kegg/soap/doc/keggapi_manual.html>)) ) and
-
-  * ((<URL:http://www.genome.jp/kegg/soap/>))
-
 == Ruby Ensembl API
 
 The Ruby Ensembl API is a Ruby API to the Ensembl database. It is NOT currently
diff --git a/doc/Tutorial.rd.html b/doc/Tutorial.rd.html
index b4a3759..4c863a7 100644
--- a/doc/Tutorial.rd.html
+++ b/doc/Tutorial.rd.html
@@ -1126,17 +1126,12 @@ add new functionality next to the BioRuby core project (BioRuby is a biogem itse
 gem install bio-core            # BioRuby + stable pure Ruby biogems
 gem install bio-core-ext        # bio-core + stable Ruby extensions</pre>
 <p>Information on these biogems, and the many others available, see <a href="http://biogems.info/">Biogems.info</a> or <a href="http://gems.bioruby.org/">gems.bioruby.org</a>.</p>
-<h2><a name="label-36" id="label-36">KEGG API</a></h2><!-- RDLabel: "KEGG API" -->
-<p>Please refer to KEGG_API.rd.ja (English version: <a href="http://www.genome.jp/kegg/soap/doc/keggapi_manual.html"><URL:http://www.genome.jp/kegg/soap/doc/keggapi_manual.html></a> ) and</p>
-<ul>
-<li><a href="http://www.genome.jp/kegg/soap/"><URL:http://www.genome.jp/kegg/soap/></a></li>
-</ul>
-<h2><a name="label-37" id="label-37">Ruby Ensembl API</a></h2><!-- RDLabel: "Ruby Ensembl API" -->
+<h2><a name="label-36" id="label-36">Ruby Ensembl API</a></h2><!-- RDLabel: "Ruby Ensembl API" -->
 <p>The Ruby Ensembl API is a Ruby API to the Ensembl database. It is NOT currently
 included in the BioRuby archives. To install it, see
 <a href="http://wiki.github.com/jandot/ruby-ensembl-api">the Ruby-Ensembl Github</a>
 for more information.</p>
-<h3><a name="label-38" id="label-38">Gene Ontology (GO) through the Ruby Ensembl API</a></h3><!-- RDLabel: "Gene Ontology (GO) through the Ruby Ensembl API" -->
+<h3><a name="label-37" id="label-37">Gene Ontology (GO) through the Ruby Ensembl API</a></h3><!-- RDLabel: "Gene Ontology (GO) through the Ruby Ensembl API" -->
 <p>Gene Ontologies can be fetched through the Ruby Ensembl API package:</p>
 <pre>require 'ensembl'
 Ensembl::Core::DBConnection.connect('drosophila_melanogaster')
@@ -1153,10 +1148,10 @@ infile.each do |line|
 end</pre>
 <p>Prints each mosq. accession/uniq identifier and the GO terms from the Drosphila
 homologues.</p>
-<h2><a name="label-39" id="label-39">Using BioPerl or BioPython from Ruby</a></h2><!-- RDLabel: "Using BioPerl or BioPython from Ruby" -->
+<h2><a name="label-38" id="label-38">Using BioPerl or BioPython from Ruby</a></h2><!-- RDLabel: "Using BioPerl or BioPython from Ruby" -->
 <p>A possible route is to opt for JRuby and Jython on the JAVA virtual machine (JVM).</p>
 <p>At the moment there is no easy way of accessing BioPerl or BioPython directly from Ruby. A possibility is to create a Perl or Python server that gets accessed through XML/RPC or SOAP.</p>
-<h2><a name="label-40" id="label-40">Installing required external libraries</a></h2><!-- RDLabel: "Installing required external libraries" -->
+<h2><a name="label-39" id="label-39">Installing required external libraries</a></h2><!-- RDLabel: "Installing required external libraries" -->
 <p>At this point for using BioRuby no additional libraries are needed, except if
 you are using the Bio::PhyloXML module; then you have to install libxml-ruby.</p>
 <p>This may change, so keep an eye on the Bioruby website. Also when
@@ -1165,20 +1160,20 @@ a package is missing BioRuby should show an informative message.</p>
 painful, as the gem standard for packages evolved late and some still
 force you to copy things by hand. Therefore read the README's
 carefully that come with each package.</p>
-<h3><a name="label-41" id="label-41">Installing libxml-ruby</a></h3><!-- RDLabel: "Installing libxml-ruby" -->
+<h3><a name="label-40" id="label-40">Installing libxml-ruby</a></h3><!-- RDLabel: "Installing libxml-ruby" -->
 <p>The simplest way is to use the RubyGems packaging system:</p>
 <pre>gem install -r libxml-ruby</pre>
 <p>If you get `require': no such file to load - mkmf (LoadError) error then do</p>
 <pre>sudo apt-get install ruby-dev</pre>
 <p>If you have other problems with installation, then see <a href="http://libxml.rubyforge.org/install.xml"><URL:http://libxml.rubyforge.org/install.xml></a>.</p>
-<h2><a name="label-42" id="label-42">Trouble shooting</a></h2><!-- RDLabel: "Trouble shooting" -->
+<h2><a name="label-41" id="label-41">Trouble shooting</a></h2><!-- RDLabel: "Trouble shooting" -->
 <ul>
 <li>Error: in `require': no such file to load -- bio (LoadError)</li>
 </ul>
 <p>Ruby is failing to find the BioRuby libraries - add it to the RUBYLIB path, or pass
 it to the interpeter. For example:</p>
 <pre>ruby -I$BIORUBYPATH/lib yourprogram.rb</pre>
-<h2><a name="label-43" id="label-43">Modifying this page</a></h2><!-- RDLabel: "Modifying this page" -->
+<h2><a name="label-42" id="label-42">Modifying this page</a></h2><!-- RDLabel: "Modifying this page" -->
 <p>IMPORTANT NOTICE: This page is maintained in the BioRuby source code 
 repository. Please edit the file there otherwise changes may get
 lost. See <!-- Reference, RDLabel "BioRuby Developer Information" doesn't exist --><em class="label-not-found">BioRuby Developer Information</em><!-- Reference end --> for repository and mailing list
diff --git a/doc/Tutorial.rd.ja b/doc/Tutorial.rd.ja
index 6627d2b..59f30cf 100644
--- a/doc/Tutorial.rd.ja
+++ b/doc/Tutorial.rd.ja
@@ -5,71 +5,71 @@
   Copyright (C) 2001-2003, 2005, 2006 Toshiaki Katayama <k at bioruby.org>
   Copyright (C) 2005, 2006 Naohisa Goto <ng at 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
@@ -77,128 +77,128 @@ BioRuby 
   % 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
@@ -206,9 +206,9 @@ moltype 
   bioruby> p psaB.moltype
   Bio::Sequence::NA
 
-�Τ褦��Ĵ�٤뤳�Ȥ��Ǥ��ޤ�����ưȽ�꤬�ְ�äƤ�����ʤɤˤ�
-na, aa �᥽�åɤǶ���Ū���Ѵ��Ǥ��ޤ����ʤ��������Υ᥽�åɤ�
-���Υ��֥������Ȥ���Ū�˽񤭴����ޤ���
+のように調べることができます。自動判定が間違っている場合などには
+na, aa メソッドで強制的に変換できます。なお、これらのメソッドは
+元のオブジェクトを強制的に書き換えます。
 
   bioruby> dna.aa
   bioruby> p dna.moltype
@@ -218,38 +218,38 @@ na, aa 
   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
@@ -262,32 +262,32 @@ Ruby 
 
 :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
@@ -297,7 +297,7 @@ Ruby 
 
 --- seqstat(seq)
 
-seqstat ���ޥ�ɤ�Ȥ��ȡ������ʤɤξ������٤�ɽ������ޤ���
+seqstat コマンドを使うと、組成などの情報も一度に表示されます。
 
   bioruby> seqstat(dna)
 
@@ -350,7 +350,7 @@ seqstat 
   //
 
 
-���ߥλ�����ξ��ϰʲ��Τ褦�ˤʤ�ޤ���
+アミノ酸配列の場合は以下のようになります。
 
   bioruby> seqstat(pep)
 
@@ -367,38 +367,38 @@ seqstat 
 
 :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}"
@@ -408,15 +408,15 @@ window_search 
   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|
@@ -427,8 +427,8 @@ window_search 
 
 :splicing(position)
 
-��������� GenBank ���� position ʸ����ˤ���ڤ�Ф��� splicing
-�᥽�åɤǹԤ��ޤ���
+塩基配列の GenBank 等の position 文字列による切り出しは splicing
+メソッドで行います。
 
   bioruby> puts dna
   atgcatgcaaaa
@@ -437,15 +437,15 @@ window_search 
 
 :randomize
 
-randomize �᥽�åɤϡ��������������¸�����ޤޥ�����������������ޤ���
+randomize メソッドは、配列の組成を保存したままランダム配列を生成します。
 
   bioruby> puts dna.randomize
   agcaatagatac
 
 :to_re
 
-to_re �᥽�åɤϡ�ۣ��ʱ����ɽ����ޤ��������� atgc ������
-�ѥ����󤫤�ʤ�����ɽ�����Ѵ����ޤ���
+to_re メソッドは、曖昧な塩基の表記を含む塩基配列を atgc だけの
+パターンからなる正規表現に変換します。
 
   bioruby> ambiguous = getseq("atgcyatgcatgcatgc")
 
@@ -455,9 +455,9 @@ to_re 
   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
@@ -468,8 +468,8 @@ seq 
 
 :names
 
-���ޤ�Ȥ����ȤϤ���ޤ��󤬡���������̾�䥢�ߥλ�̾���Ѵ�����
-�᥽�åɤǤ���
+あまり使うことはありませんが、配列を塩基名やアミノ酸名に変換する
+メソッドです。
 
   bioruby> p dna.names
   ["adenine", "thymine", "guanine", "cytosine", "adenine", "thymine",
@@ -480,35 +480,35 @@ seq 
 
 :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
@@ -536,7 +536,7 @@ codontables, codontable 
   Y       Tyr     tyrosine
   Z       Glx     glutamine/glutamic acid
 
-�֤��ͤ�û��ɽ�����б�����Ĺ��ɽ���Υϥå���ˤʤäƤ��ޤ���
+返り値は短い表記と対応する長い表記のハッシュになっています。
 
   bioruby> aa = aminoacids
   bioruby> puts aa["G"]
@@ -546,7 +546,7 @@ codontables, codontable 
 
 --- nucleicacids
 
-����ΰ����� nucleicacids ���ޥ�ɤ�ɽ���Ǥ��ޤ���
+塩基の一覧は nucleicacids コマンドで表示できます。
 
   bioruby> nucleicacids
   a       a       Adenine
@@ -566,7 +566,7 @@ codontables, codontable 
   d       [atg]   not C
   n       [atgc]  
 
-�֤��ͤϱ���Σ�ʸ��ɽ���ȳ����������Υϥå���ˤʤäƤ��ޤ���
+返り値は塩基の1文字表記と該当する塩基のハッシュになっています。
 
   bioruby> na = nucleicacids
   bioruby> puts na["r"]
@@ -574,7 +574,7 @@ codontables, codontable 
 
 --- codontables
 
-���ɥ�ơ��֥�ΰ����� codontables ���ޥ�ɤ�ɽ���Ǥ��ޤ���
+コドンテーブルの一覧は codontables コマンドで表示できます。
 
   bioruby> codontables
   1       Standard (Eukaryote)
@@ -595,7 +595,7 @@ codontables, codontable 
   22      Scenedesmus obliquus mitochondrial
   23      Thraustochytrium Mitochondrial
 
-�֤��ͤϥơ��֥��ֹ��̾���Υϥå���ˤʤäƤ��ޤ���
+返り値はテーブル番号と名前のハッシュになっています。
 
   bioruby> ct = codontables
   bioruby> puts ct[3]
@@ -603,7 +603,7 @@ codontables, codontable 
 
 --- codontable(num)
 
-���ɥ�ɽ���Τ� codontable ���ޥ�ɤ�ɽ���Ǥ��ޤ���
+コドン表自体は codontable コマンドで表示できます。
 
   bioruby> codontable(11)
 
@@ -639,8 +639,8 @@ codontables, codontable 
    *---------------------------------------------*
 
 
-�֤��ͤ� Bio::CodonTable ���饹�Υ��֥������Ȥǡ����ɥ�ȥ��ߥλ���
-�Ѵ����Ǥ�������Ǥʤ����ʲ��Τ褦�ʥǡ��������뤳�Ȥ��Ǥ��ޤ���
+返り値は Bio::CodonTable クラスのオブジェクトで、コドンとアミノ酸の
+変換ができるだけでなく、以下のようなデータも得ることができます。
 
   bioruby> ct = codontable(2)
   bioruby> p ct["atg"]
@@ -648,47 +648,47 @@ codontables, codontable 
 
 :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
@@ -696,16 +696,16 @@ OBDA, EMBOSS, NCBI, EBI, TogoWS, KEGG API 
   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)
@@ -715,14 +715,14 @@ getent 
   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
@@ -730,14 +730,14 @@ getobj 
 
 --- 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)
@@ -745,39 +745,39 @@ getent 
 
 --- 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
@@ -785,47 +785,47 @@ mydb 
   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) ... 
@@ -834,113 +834,9 @@ FASTA 
     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< --
@@ -951,7 +847,7 @@ bget 
   -- >8 -- >8 -- >8 --  Script  -- >8 -- >8 -- >8 --
   Saving script (script.rb) ... done
 
-�������줿 script.rb �ϰʲ��Τ褦�ˤʤ�ޤ���
+生成された script.rb は以下のようになります。
 
   #!/usr/bin/env bioruby
   
@@ -959,34 +855,34 @@ bget 
   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
@@ -994,7 +890,7 @@ bget 
    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
@@ -1003,7 +899,7 @@ bget 
 
 --- head(file, lines = 10)
 
-�ƥ����ȥե�����䥪�֥������Ȥ���Ƭ 10 �Ԥ�ɽ�����ޤ���
+テキストファイルやオブジェクトの先頭 10 行を表示します。
 
   bioruby> head "gbphg.seq"
   GBPHG.SEQ            Genetic Sequence Data Bank
@@ -1015,13 +911,13 @@ bget 
   
       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
@@ -1030,18 +926,18 @@ bget 
 
 --- disp(obj)
 
-�ƥ����ȥե�����䥪�֥������Ȥ���Ȥ�ڡ����㡼��ɽ�����ޤ���
-�����ǻ��Ѥ���ڡ����㡼�� pager ���ޥ�ɤ��ѹ����뤳�Ȥ��Ǥ��ޤ��ʸ�ҡˡ�
+テキストファイルやオブジェクトの中身をページャーで表示します。
+ここで使用するページャーは pager コマンドで変更することができます(後述)。
 
   bioruby> disp "gbphg.seq"
   bioruby> disp entry
   bioruby> disp [1, 2, 3] * 4
 
-=== �ѿ�
+=== 変数
 
 --- ls
 
-���å������˺��������ѿ�ʥ��֥������ȡˤΰ�����ɽ�����ޤ���
+セッション中に作成した変数(オブジェクト)の一覧を表示します。
 
   bioruby> ls
   ["entry", "seq"]
@@ -1051,7 +947,7 @@ bget 
 
 --- rm(symbol)
 
-�ѿ��õ�ޤ���
+変数を消去します。
 
   bioruby> rm "a"
 
@@ -1060,22 +956,22 @@ bget 
 
 --- 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..."
@@ -1084,11 +980,11 @@ BioRuby 
   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
@@ -1097,22 +993,22 @@ off 
   bioruby> config :echo
   Echo off
 
-���ɥ�ɽ�ʤɡ���ǽ�ʾ��˥��顼ɽ�����뤫�ɤ������ڤ��ؤ��ޤ���
-���顼ɽ���ξ�硢�ץ��ץȤˤ⿧���Ĥ��ޤ��Τ�Ƚ�̤Ǥ��ޤ���
+コドン表など、可能な場合にカラー表示するかどうかを切り替えます。
+カラー表示の場合、プロンプトにも色がつきますので判別できます。
 
   bioruby> config :color
   bioruby> codontable
-  (���դ�)
+  (色付き)
 
-�¹Ԥ��뤿�Ӥ����꤬�ڤ��ؤ��ޤ���
+実行するたびに設定が切り替わります。
 
   bioruby> config :color
   bioruby> codontable
-  (���ʤ�)
+  (色なし)
 
-BioRuby �����뵯ư����ɽ������륹�ץ�å����å�������㤦ʸ�����
-�ѹ����ޤ������β��ϥץ��������ѤΥǥ��쥯�ȥ꤫����ꤷ�Ƥ����Τ�
-�褤�Ǥ��礦��
+BioRuby シェル起動時に表示されるスプラッシュメッセージを違う文字列に
+変更します。何の解析プロジェクト用のディレクトリかを指定しておくのも
+よいでしょう。
 
   bioruby> config :message, "Kumamushi genome project"
   
@@ -1120,20 +1016,20 @@ BioRuby 
   
     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'
@@ -1141,22 +1037,22 @@ disp 
   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
@@ -1173,33 +1069,33 @@ DNA 
   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
   
@@ -1207,134 +1103,134 @@ Bio::Sequence 
   
   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)             # ���֤Υ��ɥ�ơ��֥�����
-
-  p seq.translate.codes               # ���ߥλ���ʸ�������ɤ�ɽ�� (Array)
-  p seq.translate.names               # ���ߥλ���̾����ɽ�� (Array)
-  p seq.translate.composition         # ���ߥλ����� (Hash)
-  p seq.translate.molecular_weight    # ʬ���̤�׻� (Float)
+  puts seq.translate                  # 翻訳配列 (Bio::Sequence::AA)
+  puts seq.translate(2)               # 2文字目から翻訳(普通は1から)
+  puts seq.translate(1,9)             # 9番のコドンテーブルを使用
+
+  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|
@@ -1343,89 +1239,89 @@ Bio::Sequence::AA 
     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
     
@@ -1437,7 +1333,7 @@ Bio::GenBank::DELIMITER 
       puts gb.naseq.to_fasta(definition, 60)
     end
 
-�����ΰ㤦�ǡ��������Ȥ���FASTA�ե����ޥåȤΥե�������ɤ߹���Ȥ��Ǥ⡢
+形式の違うデータ、たとえばFASTAフォーマットのファイルを読み込むときでも、
 
     #!/usr/bin/env ruby
     
@@ -1450,9 +1346,9 @@ Bio::GenBank::DELIMITER 
       puts "naseq      : " + f.naseq
     end
 
-�Τ褦�ˡ�Ʊ���褦�ʽ����ǺѤޤ����ޤ���
+のように、同じような書き方で済ませられます。
 
-����ˡ��� Bio::DB ���饹�� open �᥽�åɤ�Ʊ�ͤΤ��Ȥ��Ǥ��ޤ������Ȥ��С�
+さらに、各 Bio::DB クラスの open メソッドで同様のことができます。たとえば、
 
     #!/usr/bin/env ruby
     
@@ -1464,11 +1360,11 @@ Bio::GenBank::DELIMITER 
       puts gb.naseq.to_fasta(definition, 60)    
     end
 
-�ʤɤȽ񤯤��Ȥ��Ǥ��ޤ��ʤ����������ν����Ϥ��ޤ�Ȥ��Ƥ��ޤ���)��
+などと書くことができます(ただし、この書き方はあまり使われていません)。
 
-���ˡ�GenBank ��ʣ���� FEATURES �����ѡ�������ɬ�פʾ������Ф��ޤ���
-�ޤ��� /tranlation="���ߥλ�����" �Ȥ��� Qualifier �����������
-���ߥλ��������Ф���ɽ�����Ƥߤޤ���
+次に、GenBank の複雑な FEATURES の中をパースして必要な情報を取り出します。
+まずは /tranlation="アミノ酸配列" という Qualifier がある場合だけ
+アミノ酸配列を抽出して表示してみます。
 
     #!/usr/bin/env ruby
 
@@ -1476,27 +1372,27 @@ Bio::GenBank::DELIMITER 
     
     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
     
@@ -1504,95 +1400,95 @@ Bio::GenBank::DELIMITER 
     
     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
     
@@ -1601,15 +1497,15 @@ Bio::FlatFile.new 
     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
     
@@ -1617,252 +1513,252 @@ Bio::FlatFile.new 
     
     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 �ϥ���ѥ������˻���DNA��RNA�ˤ������븶�ҡ�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
@@ -1870,51 +1766,51 @@ Bio::PDB#heterogens 
 
   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
@@ -1931,7 +1827,7 @@ br_bioflat.rb 
   HETNAM     EOH ETHANOL
   FORMUL      EOH    C2 H6 O1
 
-���Υ���ȥ���Ф��� conect �᥽�åɤ�Ƥ֤�
+このエントリに対して conect メソッドを呼ぶと
 
   { "C1"  => [ "C2", "O", "1H1", "2H1" ], 
     "C2"  => [ "C1", "1H2", "2H2", "3H2" ], 
@@ -1943,66 +1839,66 @@ br_bioflat.rb 
     "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"
@@ -2010,7 +1906,7 @@ Ruby 
     #    "acgca"
     #    "acgcg"
 
-  # �ƥ����ȤˤĤ��Ʒ����֤�
+  # 各サイトについて繰り返す
   a.each_site { |x| p x }
     # ==>
     #    ["a", "a", "a", "a"]
@@ -2019,250 +1915,250 @@ Ruby 
     #    ["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|
@@ -2270,93 +2166,93 @@ BLAST 
       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
     
@@ -2377,58 +2273,58 @@ Bio::PubMed.efetch 
       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}
 
@@ -2440,78 +2336,78 @@ NCBI E-Utils 
     \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 ǯ��1���2��� 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
@@ -2520,112 +2416,112 @@ BioRuby 
   * 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
     
@@ -2646,45 +2542,45 @@ Halobacterium 
       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
@@ -2692,15 +2588,15 @@ BioRuby in Anger 
     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
 
diff --git a/doc/Tutorial.rd.ja.html b/doc/Tutorial.rd.ja.html
index 00ec63e..7b35c3d 100644
--- a/doc/Tutorial.rd.ja.html
+++ b/doc/Tutorial.rd.ja.html
@@ -4,161 +4,161 @@
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-<title>doc/Tutorial.rd.ja</title>
+<title>Tutorial.rd.ja</title>
 <link href="bioruby.css" type="text/css" rel="stylesheet" />
 </head>
 <body>
 <pre>Copyright (C) 2001-2003, 2005, 2006 Toshiaki Katayama <k at bioruby.org>
 Copyright (C) 2005, 2006 Naohisa Goto <ng at bioruby.org></pre>
-<h1><a name="label-0" id="label-0">BioRuby �λȤ���</a></h1><!-- RDLabel: "BioRuby �λȤ���" -->
-<p>BioRuby �Ϲ񻺤ιⵡǽ���֥������Ȼظ�������ץȸ��� Ruby �Τ����
-�����ץ󥽡����ʥХ�������ե��ޥƥ������ѥ饤�֥��Ǥ���</p>
-<p>Ruby ����� Perl ����椺��ζ��Ϥʥƥ����Ƚ����ȡ�
-����ץ��ʬ����䤹��ʸˡ�����ꥢ�ʥ��֥������Ȼظ���ǽ�ˤ�ꡢ
-�����Ȥ���褦�ˤʤ�ޤ�����Ruby �ˤĤ��ƾܤ����ϡ������֥�����
-<a href="http://www.ruby-lang.org/"><URL:http://www.ruby-lang.org/></a> ����Τν������򻲾Ȥ��Ƥ���������</p>
-<h2><a name="label-1" id="label-1">�Ϥ����</a></h2><!-- RDLabel: "�Ϥ����" -->
-<p>BioRuby ����Ѥ���ˤ� Ruby �� BioRuby �򥤥󥹥ȡ��뤹��ɬ�פ�����ޤ���</p>
-<h3><a name="label-2" id="label-2">Ruby �Υ��󥹥ȡ���</a></h3><!-- RDLabel: "Ruby �Υ��󥹥ȡ���" -->
-<p>Ruby �� Mac OS X ��Ƕ�� UNIX �ˤ��̾磻�󥹥ȡ��뤵��Ƥ��ޤ���
-Windows �ξ��⣱����å����󥹥ȡ���� ActiveScriptRuby �ʤɤ�
-�Ѱդ���Ƥ��ޤ����ޤ����󥹥ȡ��뤵��Ƥ��ʤ�����</p>
+<h1><a name="label-0" id="label-0">BioRuby の使い方</a></h1><!-- RDLabel: "BioRuby の使い方" -->
+<p>BioRuby は国産の高機能オブジェクト指向スクリプト言語 Ruby のための
+オープンソースなバイオインフォマティクス用ライブラリです。</p>
+<p>Ruby 言語は Perl 言語ゆずりの強力なテキスト処理と、
+シンプルで分かりやすい文法、クリアなオブジェクト指向機能により、
+広く使われるようになりました。Ruby について詳しくは、ウェブサイト
+<a href="http://www.ruby-lang.org/"><URL:http://www.ruby-lang.org/></a> や市販の書籍等を参照してください。</p>
+<h2><a name="label-1" id="label-1">はじめに</a></h2><!-- RDLabel: "はじめに" -->
+<p>BioRuby を使用するには Ruby と BioRuby をインストールする必要があります。</p>
+<h3><a name="label-2" id="label-2">Ruby のインストール</a></h3><!-- RDLabel: "Ruby のインストール" -->
+<p>Ruby は Mac OS X や最近の UNIX には通常インストールされています。
+Windows の場合も1クリックインストーラや ActiveScriptRuby などが
+用意されています。まだインストールされていない場合は</p>
 <ul>
 <li><a href="http://jp.rubyist.net/magazine/?0002-FirstProgramming"><URL:http://jp.rubyist.net/magazine/?0002-FirstProgramming></a></li>
 <li><a href="http://jp.rubyist.net/magazine/?FirstStepRuby"><URL:http://jp.rubyist.net/magazine/?FirstStepRuby></a></li>
 </ul>
-<p>�ʤɤ򻲹ͤˤ��ƥ��󥹥ȡ��뤷�ޤ��礦��</p>
-<p>���ʤ��Υ���ԥ塼���ˤɤΥС������� Ruby �����󥹥ȡ��뤵��Ƥ��뤫��
-�����å�����ˤ�</p>
+<p>などを参考にしてインストールしましょう。</p>
+<p>あなたのコンピュータにどのバージョンの Ruby がインストールされているかを
+チェックするには</p>
 <pre>% ruby -v</pre>
-<p>�ȥ��ޥ�ɤ����Ϥ��Ƥ�������������ȡ����Ȥ���</p>
+<p>とコマンドを入力してください。すると、たとえば</p>
 <pre>ruby 1.8.2 (2004-12-25) [powerpc-darwin7.7.0]</pre>
-<p>�Τ褦�ʴ����ǥС������ɽ������ޤ����С������ 1.8.5 �ʹߤ򤪴��ᤷ�ޤ���</p>
-<p>Ruby ɸ�������Υ��饹��᥽�åɤˤĤ��Ƥϡ�Ruby �Υ�ե���󥹥ޥ˥奢���
-���Ȥ��Ƥ���������</p>
+<p>のような感じでバージョンが表示されます。バージョン 1.8.5 以降をお勧めします。</p>
+<p>Ruby 標準装備のクラスやメソッドについては、Ruby のリファレンスマニュアルを
+参照してください。</p>
 <ul>
 <li><a href="http://www.ruby-lang.org/ja/man/"><URL:http://www.ruby-lang.org/ja/man/></a></li>
 <li><a href="http://doc.okkez.net/"><URL:http://doc.okkez.net/></a></li>
 </ul>
-<p>���ޥ�ɥ饤��ǥإ�פ򻲾Ȥ���ˤϡ�Ruby ɸ��ź�դ� ri ���ޥ�ɤ䡢
-���ܸ��Ǥ� refe ���ޥ�ɤ������Ǥ���</p>
+<p>コマンドラインでヘルプを参照するには、Ruby 標準添付の ri コマンドや、
+日本語版の refe コマンドが便利です。</p>
 <ul>
 <li><a href="http://i.loveruby.net/ja/prog/refe.html"><URL:http://i.loveruby.net/ja/prog/refe.html></a></li>
 </ul>
-<h3><a name="label-3" id="label-3">RubyGems �Υ��󥹥ȡ���</a></h3><!-- RDLabel: "RubyGems �Υ��󥹥ȡ���" -->
-<p>RubyGems �Υڡ�������ǿ��Ǥ��������ɤ��ޤ���</p>
+<h3><a name="label-3" id="label-3">RubyGems のインストール</a></h3><!-- RDLabel: "RubyGems のインストール" -->
+<p>RubyGems のページから最新版をダウンロードします。</p>
 <ul>
 <li><a href="http://rubyforge.org/projects/rubygems/"><URL:http://rubyforge.org/projects/rubygems/></a></li>
 </ul>
-<p>Ÿ�����ƥ��󥹥ȡ��뤷�ޤ���</p>
+<p>展開してインストールします。</p>
 <pre>% tar zxvf rubygems-x.x.x.tar.gz
 % cd rubygems-x.x.x
 % ruby setup.rb</pre>
-<h3><a name="label-4" id="label-4">BioRuby �Υ��󥹥ȡ���</a></h3><!-- RDLabel: "BioRuby �Υ��󥹥ȡ���" -->
-<p>BioRuby �Υ��󥹥ȡ�����ˡ�� <a href="http://bioruby.org/archive/"><URL:http://bioruby.org/archive/></a> ����
-�ǿ��Ǥ�������ưʲ��Τ褦�˹Ԥ��ޤ�(��1)��Ʊ������Ƥ��� README �ե�����ˤ�
-�ܤ��̤���ĺ�������ΤǤ���������ʤ��ȣ���������ˤʤ� BioPerl ����٤�
-BioRuby �Υ��󥹥ȡ���Ϥ����˽����Ϥ��Ǥ���</p>
+<h3><a name="label-4" id="label-4">BioRuby のインストール</a></h3><!-- RDLabel: "BioRuby のインストール" -->
+<p>BioRuby のインストール方法は <a href="http://bioruby.org/archive/"><URL:http://bioruby.org/archive/></a> から
+最新版を取得して以下のように行います(※1)。同梱されている README ファイルにも
+目を通して頂きたいのですが、慣れないと1日がかりになる BioPerl と比べて
+BioRuby のインストールはすぐに終わるはずです。</p>
 <pre>% 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</pre>
-<p>RubyGems ���Ȥ���Ķ��Ǥ����</p>
+<p>RubyGems が使える環境であれば</p>
 <pre>% gem install bio</pre>
-<p>�����ǥ��󥹥ȡ���Ǥ��ޤ������Τ��� README �ե�����˽񤫤�Ƥ���褦��</p>
+<p>だけでインストールできます。このあと README ファイルに書かれているように</p>
 <pre>bioruby-x.x.x/etc/bioinformatics/seqdatabase.ini</pre>
-<p>�Ȥ����ե������ۡ���ǥ��쥯�ȥ�� ~/.bioinformatics �˥��ԡ�����
-�����Ȥ褤�Ǥ��礦��RubyGems �ξ���</p>
+<p>というファイルをホームディレクトリの ~/.bioinformatics にコピーして
+おくとよいでしょう。RubyGems の場合は</p>
 <pre>/usr/local/lib/ruby/gems/1.8/gems/bio-x.x.x/</pre>
-<p>�ʤɤˤ���Ϥ��Ǥ���</p>
+<p>などにあるはずです。</p>
 <pre>% mkdir ~/.bioinformatics
 % cp bioruby-x.x.x/etc/bioinformatics/seqdatabase.ini ~/.bioinformatics</pre>
-<p>�ޤ���Emacs ���ǥ�����Ȥ��ͤ� Ruby �Υ�������Ʊ������Ƥ���
-misc/ruby-mode.el �򥤥󥹥ȡ��뤷�Ƥ����Ȥ褤�Ǥ��礦��</p>
+<p>また、Emacs エディタを使う人は Ruby のソースに同梱されている
+misc/ruby-mode.el をインストールしておくとよいでしょう。</p>
 <pre>% mkdir -p ~/lib/lisp/ruby
 % cp ruby-x.x.x/misc/ruby-mode.el ~/lib/lisp/ruby</pre>
-<p>�ʤɤȤ��Ƥ����ơ�~/.emacs �˰ʲ���������­���ޤ���</p>
-<pre>; subdirs ������
+<p>などとしておいて、~/.emacs に以下の設定を書き足します。</p>
+<pre>; 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))</pre>
-<h2><a name="label-5" id="label-5">BioRuby ������</a></h2><!-- RDLabel: "BioRuby ������" -->
-<p>BioRuby �С������ 0.7 �ʹߤǤϡ���ñ������ BioRuby �ȶ��˥��󥹥ȡ��뤵���
-bioruby ���ޥ�ɤǹԤ����Ȥ��Ǥ��ޤ���bioruby ���ޥ�ɤ� Ruby ����¢����Ƥ���
-���󥿥饯�ƥ��֥����� irb �����Ѥ��Ƥ��ꡢRuby �� BioRuby �ˤǤ��뤳�Ȥ�����
-��ͳ�˼¹Ԥ��뤳�Ȥ��Ǥ��ޤ���</p>
+<h2><a name="label-5" id="label-5">BioRuby シェル</a></h2><!-- RDLabel: "BioRuby シェル" -->
+<p>BioRuby バージョン 0.7 以降では、簡単な操作は BioRuby と共にインストールされる
+bioruby コマンドで行うことができます。bioruby コマンドは Ruby に内蔵されている
+インタラクティブシェル irb を利用しており、Ruby と BioRuby にできることは全て
+自由に実行することができます。</p>
 <pre>% bioruby project1</pre>
-<p>����ǻ��ꤷ��̾���Υǥ��쥯�ȥ꤬�������졢������Dz��Ϥ�Ԥ��ޤ���
-�嵭����ξ�� project1 �Ȥ����ǥ��쥯�ȥ꤬�������졢����˰ʲ���
-���֥ǥ��쥯�ȥ��ե����뤬����ޤ���</p>
-<pre>data/           �桼���β��ϥե�������֤����
-plugin/         ɬ�פ˱������ɲäΥץ饰������֤����
-session/        ����䥪�֥������ȡ��ҥ��ȥ�ʤɤ���¸�������
-session/config  �桼�����������¸�����ե�����
-session/history �桼�������Ϥ������ޥ�ɤΥҥ��ȥ����¸�����ե�����
-session/object  ��³�����줿���֥������Ȥγ�Ǽ�ե�����</pre>
-<p>���Τ�����data �ǥ��쥯�ȥ�ϥ桼������ͳ�˽񤭴����ƹ����ޤ���
-�ޤ���session/history �ե�����򸫤�ȡ����ĤɤΤ褦������Ԥä�����
-��ǧ���뤳�Ȥ��Ǥ��ޤ���</p>
-<p>�����ܰʹߤϡ�����Ʊ�ͤ�</p>
+<p>引数で指定した名前のディレクトリが作成され、その中で解析を行います。
+上記の例の場合 project1 というディレクトリが作成され、さらに以下の
+サブディレクトリやファイルが作られます。</p>
+<pre>data/           ユーザの解析ファイルを置く場所
+plugin/         必要に応じて追加のプラグインを置く場所
+session/        設定やオブジェクト、ヒストリなどが保存される場所
+session/config  ユーザの設定を保存したファイル
+session/history ユーザの入力したコマンドのヒストリを保存したファイル
+session/object  永続化されたオブジェクトの格納ファイル</pre>
+<p>このうち、data ディレクトリはユーザが自由に書き換えて構いません。
+また、session/history ファイルを見ると、いつどのような操作を行ったかを
+確認することができます。</p>
+<p>2回目以降は、初回と同様に</p>
 <pre>% bioruby project1</pre>
-<p>�Ȥ��Ƶ�ư���Ƥ⹽���ޤ��󤷡��������줿�ǥ��쥯�ȥ�˰�ư����</p>
+<p>として起動しても構いませんし、作成されたディレクトリに移動して</p>
 <pre>% cd project1
 % bioruby</pre>
-<p>�Τ褦�˰���ʤ��ǵ�ư���뤳�Ȥ�Ǥ��ޤ���</p>
-<p>����¾��script ���ޥ�ɤǺ�������륹����ץȥե�����䡢
-web ���ޥ�ɤǺ�������� Rails �Τ��������ե�����ʤɤ�����ޤ�����
-�����ˤĤ��Ƥ�ɬ�פ˱����Ƹ�Ҥ��ޤ���</p>
-<p>BioRuby ������Ǥϥǥե���ȤǤ����Ĥ��������ʥ饤�֥����ɤ߹���Ǥ��ޤ���
-�㤨�� readline �饤�֥�꤬�Ȥ���Ķ��Ǥ� Tab �����ǥ᥽�å�̾���ѿ�̾��
-�䴰�����Ϥ��Ǥ���open-uri, pp, yaml �ʤɤ�ǽ餫���ɤ߹��ޤ�Ƥ��ޤ���</p>
-<h3><a name="label-6" id="label-6">����, ���ߥλ����������</a></h3><!-- RDLabel: "����, ���ߥλ����������" -->
+<p>のように引数なしで起動することもできます。</p>
+<p>この他、script コマンドで作成されるスクリプトファイルや、
+web コマンドで作成される Rails のための設定ファイルなどがありますが、
+それらについては必要に応じて後述します。</p>
+<p>BioRuby シェルではデフォルトでいくつかの便利なライブラリを読み込んでいます。
+例えば readline ライブラリが使える環境では Tab キーでメソッド名や変数名が
+補完されるはずです。open-uri, pp, yaml なども最初から読み込まれています。</p>
+<h3><a name="label-6" id="label-6">塩基, アミノ酸の配列を作る</a></h3><!-- RDLabel: "塩基, アミノ酸の配列を作る" -->
 <dl>
 <dt><a name="label-7" id="label-7"><code>getseq(<var>str</var>)</code></a></dt><!-- RDLabel: "getseq" -->
 </dl>
-<p>getseq ���ޥ��(��2)��Ȥä�ʸ���󤫤��������䥢�ߥλ�������뤳�Ȥ�
-�Ǥ��ޤ�������ȥ��ߥλ��� ATGC �δ��̤� 90% �ʾ夫�ɤ����Ǽ�ưȽ�ꤵ��ޤ���
-�����Ǥϡ��Ǥ������������ dna �Ȥ����ѿ���������ޤ���</p>
+<p>getseq コマンド(※2)を使って文字列から塩基配列やアミノ酸配列を作ることが
+できます。塩基とアミノ酸は ATGC の含量が 90% 以上かどうかで自動判定されます。
+ここでは、できた塩基配列を dna という変数に代入します。</p>
 <pre>bioruby> dna = getseq("atgcatgcaaaa")</pre>
-<p>�ѿ����Ȥ��ǧ����ˤ� Ruby �� puts �᥽�åɤ�Ȥ��ޤ���</p>
+<p>変数の中身を確認するには Ruby の puts メソッドを使います。</p>
 <pre>bioruby> puts dna
 atgcatgcaaaa</pre>
-<p>�ե�����̾������Ϳ����ȼ긵�ˤ���ե����뤫����������뤳�Ȥ�Ǥ��ޤ���
-GenBank, EMBL, UniProt, FASTA �ʤɼ��פ�����ե����ޥåȤϼ�ưȽ�̤���ޤ�
-�ʳ�ĥ�ҤʤɤΥե�����̾�ǤϤʤ�����ȥ����Ȥ�Ƚ�ꤷ�ޤ��ˡ�
-�ʲ��� UniProt �ե����ޥåȤΥ���ȥ��ե����뤫���ɤ߹���Ǥ��ޤ���
-������ˡ�Ǥϡ�ʣ��Υ���ȥ꤬������ǽ�Υ���ȥ�������ɤ߹��ޤ�ޤ���</p>
+<p>ファイル名を引数に与えると手元にあるファイルから配列を得ることもできます。
+GenBank, EMBL, UniProt, FASTA など主要な配列フォーマットは自動判別されます
+(拡張子などのファイル名ではなくエントリの中身で判定します)。
+以下は UniProt フォーマットのエントリをファイルから読み込んでいます。
+この方法では、複数のエントリがある場合最初のエントリだけが読み込まれます。</p>
 <pre>bioruby> cdc2 = getseq("p04551.sp")
 bioruby> puts cdc2
-MENYQKVEKIGEGTYGVVYKARHKLSGRIVAMKKIRLEDESEGVPSTAIREISLLKEVNDENNRSN...(ά)</pre>
-<p>�ǡ����١���̾�ȥ���ȥ�̾��ʬ���äƤ���С����󥿡��ͥåȤ��̤���
-�����ưŪ�˼������뤳�Ȥ��Ǥ��ޤ���</p>
+MENYQKVEKIGEGTYGVVYKARHKLSGRIVAMKKIRLEDESEGVPSTAIREISLLKEVNDENNRSN...(略)</pre>
+<p>データベース名とエントリ名が分かっていれば、インターネットを通じて
+配列を自動的に取得することができます。</p>
 <pre>bioruby> psaB = getseq("genbank:AB044425")
 bioruby> puts psaB
-actgaccctgttcatattcgtcctattgctcacgcgatttgggatccgcactttggccaaccagca...(ά)</pre>
-<p>�ɤ��Υǡ����١�������ɤΤ褦����ˡ�ǥ���ȥ��������뤫�ϡ�BioPerl
-�ʤɤȶ��̤� OBDA ����ե����� ~/.bioinformatics/seqdatabase.ini
-���Ѥ��ƥǡ����١������Ȥ˻��ꤹ�뤳�Ȥ��Ǥ��ޤ��ʸ�ҡˡ�
-�ޤ���EMBOSS �� seqret ���ޥ�ɤˤ����������ˤ��б����Ƥ��ޤ��Τǡ�
-EMBOSS �� USA ɽ���Ǥ⥨��ȥ������Ǥ��ޤ���EMBOSS �Υޥ˥奢��򻲾Ȥ�
-~/.embossrc ��Ŭ�ڤ����ꤷ�Ƥ���������</p>
-<p>�ɤ���ˡ�Ǽ����������⡢getseq ���ޥ�ɤˤ�ä��֤��������ϡ�
-���Ѥ����󥯥饹 Bio::Sequence �ˤʤ�ޤ�(��3)��</p>
-<p>���󤬱�������ȥ��ߥλ�����Τɤ����Ƚ�ꤵ��Ƥ���Τ��ϡ�
-moltype �᥽�åɤ��Ѥ���</p>
+actgaccctgttcatattcgtcctattgctcacgcgatttgggatccgcactttggccaaccagca...(略)</pre>
+<p>どこのデータベースからどのような方法でエントリを取得するかは、BioPerl
+などと共通の OBDA 設定ファイル ~/.bioinformatics/seqdatabase.ini
+を用いてデータベースごとに指定することができます(後述)。
+また、EMBOSS の seqret コマンドによる配列取得にも対応していますので、
+EMBOSS の USA 表記でもエントリを取得できます。EMBOSS のマニュアルを参照し
+~/.embossrc を適切に設定してください。</p>
+<p>どの方法で取得した場合も、getseq コマンドによって返される配列は、
+汎用の配列クラス Bio::Sequence になります(※3)。</p>
+<p>配列が塩基配列とアミノ酸配列のどちらと判定されているのかは、
+moltype メソッドを用いて</p>
 <pre>bioruby> p cdc2.moltype
 Bio::Sequence::AA
 
 bioruby> p psaB.moltype
 Bio::Sequence::NA</pre>
-<p>�Τ褦��Ĵ�٤뤳�Ȥ��Ǥ��ޤ�����ưȽ�꤬�ְ�äƤ�����ʤɤˤ�
-na, aa �᥽�åɤǶ���Ū���Ѵ��Ǥ��ޤ����ʤ��������Υ᥽�åɤ�
-���Υ��֥������Ȥ���Ū�˽񤭴����ޤ���</p>
+<p>のように調べることができます。自動判定が間違っている場合などには
+na, aa メソッドで強制的に変換できます。なお、これらのメソッドは
+元のオブジェクトを強制的に書き換えます。</p>
 <pre>bioruby> dna.aa
 bioruby> p dna.moltype
 Bio::Sequence::AA
@@ -166,30 +166,30 @@ Bio::Sequence::AA
 bioruby> dna.na
 bioruby> p dna.moltype
 Bio::Sequence::NA</pre>
-<p>�ޤ��ϡ�to_naseq, to_aaseq �᥽�åɤǶ���Ū���Ѵ����뤳�Ȥ�Ǥ��ޤ���</p>
+<p>または、to_naseq, to_aaseq メソッドで強制的に変換することもできます。</p>
 <pre>bioruby> pep = dna.to_aaseq</pre>
-<p>to_naseq, to_aaseq �᥽�åɤ��֤����֥������Ȥϡ����줾�졢
-DNA ����Τ���� Bio::Sequence::NA ���饹�����ߥλ�����Τ����
-Bio::Sequence::AA ���饹�Υ��֥������Ȥˤʤ�ޤ���
-���󤬤ɤ���Υ��饹��°���뤫�� Ruby �� class �᥽�åɤ��Ѥ���</p>
+<p>to_naseq, to_aaseq メソッドの返すオブジェクトは、それぞれ、
+DNA 配列のための Bio::Sequence::NA クラス、アミノ酸配列のための
+Bio::Sequence::AA クラスのオブジェクトになります。
+配列がどちらのクラスに属するかは Ruby の class メソッドを用いて</p>
 <pre>bioruby> p pep.class
 Bio::Sequence::AA</pre>
-<p>�Τ褦��Ĵ�٤뤳�Ȥ��Ǥ��ޤ���</p>
-<p>����Ū���Ѵ������ˡ�Bio::Sequence::NA ���饹�ޤ��� Bio::sequence::AA ���饹
-�Τɤ��餫�Υ��֥������Ȥ����������ˤ� seq �᥽�åɤ�Ȥ��ޤ�(��4)��</p>
+<p>のように調べることができます。</p>
+<p>強制的に変換せずに、Bio::Sequence::NA クラスまたは Bio::sequence::AA クラス
+のどちらかのオブジェクトを得たい場合には seq メソッドを使います(※4)。</p>
 <pre>bioruby> pep2 = cdc2.seq
 bioruby> p pep2.class
 Bio::Sequence::AA</pre>
-<p>�ޤ����ʲ��Dz��⤹�� complement �� translate �ʤɤΥ᥽�åɤη�̤ϡ�
-����������֤����Ȥ����Ԥ����᥽�åɤ� Bio::Sequence::NA ���饹��
-���ߥλ�������֤����Ȥ����Ԥ����᥽�åɤ� Bio::sequence::AA ���饹
-�Υ��֥������Ȥˤʤ�ޤ���</p>
-<p>��������䥢�ߥλ�����Υ��饹�� Ruby ��ʸ���󥯥饹�Ǥ��� String ��
-�Ѿ����Ƥ��ޤ����ޤ���Bio::Sequence ���饹�Υ��֥������Ȥ� String ��
-���֥������Ȥȸ�������Ʊ�ͤ�Ư���褦�˹��פ���Ƥ��ޤ������Τ��ᡢ
-length ��Ĺ����Ĵ�٤��ꡢ+ ��­����碌���ꡢ* �Ƿ����֤�����ʤɡ�
-Ruby ��ʸ������Ф��ƹԤ��������������Ѳ�ǽ�Ǥ���
-���Τ褦����ħ�ϥ��֥������Ȼظ��ζ��Ϥ�¦�̤ΰ�Ĥȸ�����Ǥ��礦��</p>
+<p>また、以下で解説する complement や translate などのメソッドの結果は、
+塩基配列を返すことが期待されるメソッドは Bio::Sequence::NA クラス、
+アミノ酸配列を返すことが期待されるメソッドは Bio::sequence::AA クラス
+のオブジェクトになります。</p>
+<p>塩基配列やアミノ酸配列のクラスは Ruby の文字列クラスである String を
+継承しています。また、Bio::Sequence クラスのオブジェクトは String の
+オブジェクトと見かけ上同様に働くように工夫されています。このため、
+length で長さを調べたり、+ で足し合わせたり、* で繰り返したりなど、
+Ruby の文字列に対して行える操作は全て利用可能です。
+このような特徴はオブジェクト指向の強力な側面の一つと言えるでしょう。</p>
 <pre>bioruby> puts dna.length
 12
 
@@ -201,27 +201,27 @@ atgcatgcaaaaatgcatgcaaaaatgcatgcaaaaatgcatgcaaaaatgcatgcaaaa</pre>
 <dl>
 <dt><a name="label-8" id="label-8">complement</a></dt><!-- RDLabel: "complement" -->
 </dl>
-<p>������������亿���������ˤϱ�������� complement �᥽�åɤ�ƤӤޤ���</p>
+<p>塩基配列の相補鎖配列を得るには塩基配列の complement メソッドを呼びます。</p>
 <pre>bioruby> puts dna.complement
 ttttgcatgcat</pre>
 <dl>
 <dt><a name="label-9" id="label-9">translate</a></dt><!-- RDLabel: "translate" -->
 </dl>
-<p>��������򥢥ߥλ��������������ˤ� translate �᥽�åɤ�Ȥ��ޤ���
-�������줿���ߥλ������ pep �Ȥ����ѿ���������Ƥߤޤ���</p>
+<p>塩基配列をアミノ酸配列に翻訳するには translate メソッドを使います。
+翻訳されたアミノ酸配列を pep という変数に代入してみます。</p>
 <pre>bioruby> pep = dna.translate
 bioruby> puts pep
 MHAK</pre>
-<p>�ե졼����Ѥ�����������ˤ�</p>
+<p>フレームを変えて翻訳するには</p>
 <pre>bioruby> puts dna.translate(2)
 CMQ
 bioruby> puts dna.translate(3)
 ACK</pre>
-<p>�ʤɤȤ��ޤ���</p>
+<p>などとします。</p>
 <dl>
 <dt><a name="label-10" id="label-10">molecular_weight</a></dt><!-- RDLabel: "molecular_weight" -->
 </dl>
-<p>ʬ���̤� molecular_weight �᥽�åɤ�ɽ������ޤ���</p>
+<p>分子量は molecular_weight メソッドで表示されます。</p>
 <pre>bioruby> puts dna.molecular_weight
 3718.66444
 
@@ -230,7 +230,7 @@ bioruby> puts pep.molecular_weight
 <dl>
 <dt><a name="label-11" id="label-11"><code>seqstat(<var>seq</var>)</code></a></dt><!-- RDLabel: "seqstat" -->
 </dl>
-<p>seqstat ���ޥ�ɤ�Ȥ��ȡ������ʤɤξ������٤�ɽ������ޤ���</p>
+<p>seqstat コマンドを使うと、組成などの情報も一度に表示されます。</p>
 <pre>bioruby> seqstat(dna)
 
 * * * Sequence statistics * * *
@@ -280,7 +280,7 @@ Codon usage       :
 Molecular weight  : 3718.66444
 Protein weight    : 485.605
 //</pre>
-<p>���ߥλ�����ξ��ϰʲ��Τ褦�ˤʤ�ޤ���</p>
+<p>アミノ酸配列の場合は以下のようになります。</p>
 <pre>bioruby> seqstat(pep)
 
 * * * Sequence statistics * * *
@@ -296,31 +296,31 @@ Protein weight    : 485.605
 <dl>
 <dt><a name="label-12" id="label-12">composition</a></dt><!-- RDLabel: "composition" -->
 </dl>
-<p>seqstat �����ɽ������Ƥ��������� composition �᥽�åɤ����뤳�Ȥ��Ǥ��ޤ���
-��̤�ʸ����ǤϤʤ� Hash ���֤����Τǡ��Ȥꤢ����ɽ�����Ƥߤ���ˤ�
-puts ������� p ���ޥ�ɤ�Ȥ����ɤ��Ǥ��礦��</p>
+<p>seqstat の中で表示されている組成は composition メソッドで得ることができます。
+結果が文字列ではなく Hash で返されるので、とりあえず表示してみる場合には
+puts の代わりに p コマンドを使うと良いでしょう。</p>
 <pre>bioruby> p dna.composition
 {"a"=>6, "c"=>2, "g"=>2, "t"=>2}</pre>
-<h4><a name="label-13" id="label-13">�������󡢥��ߥλ�����Τ���¾�Υ᥽�å�</a></h4><!-- RDLabel: "�������󡢥��ߥλ�����Τ���¾�Υ᥽�å�" -->
-<p>¾�ˤ�������󡢥��ߥλ�������Ф��ƹԤ������Ͽ����Ȥ���ޤ���</p>
+<h4><a name="label-13" id="label-13">塩基配列、アミノ酸配列のその他のメソッド</a></h4><!-- RDLabel: "塩基配列、アミノ酸配列のその他のメソッド" -->
+<p>他にも塩基配列、アミノ酸配列に対して行える操作は色々とあります。</p>
 <dl>
 <dt><a name="label-14" id="label-14">subseq(from, to)</a></dt><!-- RDLabel: "subseq(from, to)" -->
 </dl>
-<p>��ʬ�������Ф��ˤ� subseq �᥽�åɤ�Ȥ��ޤ���</p>
+<p>部分配列を取り出すには subseq メソッドを使います。</p>
 <pre>bioruby> puts dna.subseq(1, 3)
 atg</pre>
-<p>Ruby �ʤ�¿���Υץ���ߥ󥰸����ʸ����� 1 ʸ���ܤ� 0 ������ޤ�����
-subseq �᥽�åɤ� 1 ��������ڤ�Ф���褦�ˤʤäƤ��ޤ���</p>
+<p>Ruby など多くのプログラミング言語の文字列は 1 文字目を 0 から数えますが、
+subseq メソッドは 1 から数えて切り出せるようになっています。</p>
 <pre>bioruby> puts dna[0, 3]
 atg</pre>
-<p>Ruby �� String ���饹������ slice �᥽�å� str[] ��Ŭ���Ȥ�ʬ�����
-�褤�Ǥ��礦��</p>
+<p>Ruby の String クラスが持つ slice メソッド str[] と適宜使い分けると
+よいでしょう。</p>
 <dl>
 <dt><a name="label-15" id="label-15">window_search(len, step)</a></dt><!-- RDLabel: "window_search(len, step)" -->
 </dl>
-<p>window_search �᥽�åɤ�Ȥ���Ĺ���������ʬ������η����֤���
-��ñ�˹Ԥ����Ȥ��Ǥ��ޤ���DNA ����򥳥ɥ���˽��������硢
-��ʸ�����Ĥ��餷�ʤ��飳ʸ�����ڤ�Ф��Ф褤�Τǰʲ��Τ褦�ˤʤ�ޤ���</p>
+<p>window_search メソッドを使うと長い配列の部分配列毎の繰り返しを
+簡単に行うことができます。DNA 配列をコドン毎に処理する場合、
+3文字ずつずらしながら3文字を切り出せばよいので以下のようになります。</p>
 <pre>bioruby> dna.window_search(3, 3) do |codon|
 bioruby+   puts "#{codon}\t#{codon.translate}"
 bioruby+ end
@@ -328,13 +328,13 @@ atg     M
 cat     H
 gca     A
 aaa     K</pre>
-<p>���Υ��������ü 1000bp �򥪡��С���åפ����ʤ��� 11000bp ���Ȥ�
-�֥��ڤ�ˤ� FASTA �ե����ޥåȤ�����������ϰʲ��Τ褦�ˤʤ�ޤ���</p>
+<p>ゲノム配列を、末端 1000bp をオーバーラップさせながら 11000bp ごとに
+ブツ切りにし FASTA フォーマットに整形する場合は以下のようになります。</p>
 <pre>bioruby> seq.window_search(11000, 10000) do |subseq|
 bioruby+   puts subseq.to_fasta
 bioruby+ end</pre>
-<p>�Ǹ�� 10000bp �������ʤ� 3' ü��;��������֤��ͤȤ���������Τǡ�
-ɬ�פʾ������Ӽ�����ä�ɽ�����ޤ���</p>
+<p>最後の 10000bp に満たない 3' 端の余り配列は返り値として得られるので、
+必要な場合は別途受け取って表示します。</p>
 <pre>bioruby> i = 1
 bioruby> remainder = seq.window_search(11000, 10000) do |subseq|
 bioruby+   puts subseq.to_fasta("segment #{i*10000}", 60)
@@ -344,8 +344,8 @@ bioruby> puts remainder.to_fasta("segment #{i*10000}", 60)</pre>
 <dl>
 <dt><a name="label-16" id="label-16">splicing(position)</a></dt><!-- RDLabel: "splicing(position)" -->
 </dl>
-<p>��������� GenBank ���� position ʸ����ˤ���ڤ�Ф��� splicing
-�᥽�åɤǹԤ��ޤ���</p>
+<p>塩基配列の GenBank 等の position 文字列による切り出しは splicing
+メソッドで行います。</p>
 <pre>bioruby> puts dna
 atgcatgcaaaa
 bioruby> puts dna.splicing("join(1..3,7..9)")
@@ -353,14 +353,14 @@ atggca</pre>
 <dl>
 <dt><a name="label-17" id="label-17">randomize</a></dt><!-- RDLabel: "randomize" -->
 </dl>
-<p>randomize �᥽�åɤϡ��������������¸�����ޤޥ�����������������ޤ���</p>
+<p>randomize メソッドは、配列の組成を保存したままランダム配列を生成します。</p>
 <pre>bioruby> puts dna.randomize
 agcaatagatac</pre>
 <dl>
 <dt><a name="label-18" id="label-18">to_re</a></dt><!-- RDLabel: "to_re" -->
 </dl>
-<p>to_re �᥽�åɤϡ�ۣ��ʱ����ɽ����ޤ��������� atgc ������
-�ѥ����󤫤�ʤ�����ɽ�����Ѵ����ޤ���</p>
+<p>to_re メソッドは、曖昧な塩基の表記を含む塩基配列を atgc だけの
+パターンからなる正規表現に変換します。</p>
 <pre>bioruby> ambiguous = getseq("atgcyatgcatgcatgc")
 
 bioruby> p ambiguous.to_re
@@ -368,9 +368,9 @@ bioruby> p ambiguous.to_re
 
 bioruby> puts ambiguous.to_re
 (?-mix:atgc[tc]atgcatgcatgc)</pre>
-<p>seq �᥽�åɤ� ATGC �δ�ͭ�̤� 90% �ʲ����ȥ��ߥλ�����Ȥߤʤ��Τǡ�
-ۣ��ʱ���¿���ޤޤ������ξ��� to_naseq �᥽�åɤ�Ȥä�
-����Ū�� Bio::Sequence::NA ���֥������Ȥ��Ѵ�����ɬ�פ�����ޤ���</p>
+<p>seq メソッドは ATGC の含有量が 90% 以下だとアミノ酸配列とみなすので、
+曖昧な塩基が多く含まれる配列の場合は to_naseq メソッドを使って
+明示的に Bio::Sequence::NA オブジェクトに変換する必要があります。</p>
 <pre>bioruby> s = getseq("atgcrywskmbvhdn").to_naseq
 bioruby> p s.to_re
 /atgc[ag][tc][at][gc][tg][ac][tgc][agc][atc][atg][atgc]/
@@ -380,8 +380,8 @@ bioruby> puts s.to_re
 <dl>
 <dt><a name="label-19" id="label-19">names</a></dt><!-- RDLabel: "names" -->
 </dl>
-<p>���ޤ�Ȥ����ȤϤ���ޤ��󤬡���������̾�䥢�ߥλ�̾���Ѵ�����
-�᥽�åɤǤ���</p>
+<p>あまり使うことはありませんが、配列を塩基名やアミノ酸名に変換する
+メソッドです。</p>
 <pre>bioruby> p dna.names
 ["adenine", "thymine", "guanine", "cytosine", "adenine", "thymine",
 "guanine", "cytosine", "adenine", "adenine", "adenine", "adenine"]
@@ -391,29 +391,29 @@ bioruby> p pep.names
 <dl>
 <dt><a name="label-20" id="label-20">codes</a></dt><!-- RDLabel: "codes" -->
 </dl>
-<p>���ߥλ������ʸ�������ɤ��Ѵ����� names �Ȼ����᥽�åɤǤ���</p>
+<p>アミノ酸配列を3文字コードに変換する names と似たメソッドです。</p>
 <pre>bioruby> p pep.codes
 ["Met", "His", "Ala", "Lys"]</pre>
 <dl>
 <dt><a name="label-21" id="label-21">gc_percent</a></dt><!-- RDLabel: "gc_percent" -->
 </dl>
-<p>��������� GC ���̤� gc_percent �᥽�åɤ������ޤ���</p>
+<p>塩基配列の GC 含量は gc_percent メソッドで得られます。</p>
 <pre>bioruby> p dna.gc_percent
 33</pre>
 <dl>
 <dt><a name="label-22" id="label-22">to_fasta</a></dt><!-- RDLabel: "to_fasta" -->
 </dl>
-<p>FASTA �ե����ޥåȤ��Ѵ�����ˤ� to_fasta �᥽�åɤ�Ȥ��ޤ���</p>
+<p>FASTA フォーマットに変換するには to_fasta メソッドを使います。</p>
 <pre>bioruby> puts dna.to_fasta("dna sequence")
 >dna sequence
 aaccggttacgt</pre>
-<h3><a name="label-23" id="label-23">����䥢�ߥλ��Υ����ɡ����ɥ�ɽ�򤢤Ĥ���</a></h3><!-- RDLabel: "����䥢�ߥλ��Υ����ɡ����ɥ�ɽ�򤢤Ĥ���" -->
-<p>���ߥλ������𡢥��ɥ�ơ��֥�����뤿��� aminoacids, nucleicacids,
-codontables, codontable ���ޥ�ɤ�Ҳ𤷤ޤ���</p>
+<h3><a name="label-23" id="label-23">塩基やアミノ酸のコード、コドン表をあつかう</a></h3><!-- RDLabel: "塩基やアミノ酸のコード、コドン表をあつかう" -->
+<p>アミノ酸、塩基、コドンテーブルを得るための aminoacids, nucleicacids,
+codontables, codontable コマンドを紹介します。</p>
 <dl>
 <dt><a name="label-24" id="label-24"><code>aminoacids</code></a></dt><!-- RDLabel: "aminoacids" -->
 </dl>
-<p>���ߥλ��ΰ����� aminoacids ���ޥ�ɤ�ɽ���Ǥ��ޤ���</p>
+<p>アミノ酸の一覧は aminoacids コマンドで表示できます。</p>
 <pre>bioruby> aminoacids
 ?       Pyl     pyrrolysine
 A       Ala     alanine
@@ -439,7 +439,7 @@ V       Val     valine
 W       Trp     tryptophan
 Y       Tyr     tyrosine
 Z       Glx     glutamine/glutamic acid</pre>
-<p>�֤��ͤ�û��ɽ�����б�����Ĺ��ɽ���Υϥå���ˤʤäƤ��ޤ���</p>
+<p>返り値は短い表記と対応する長い表記のハッシュになっています。</p>
 <pre>bioruby> aa = aminoacids
 bioruby> puts aa["G"]
 Gly
@@ -448,7 +448,7 @@ glycine</pre>
 <dl>
 <dt><a name="label-25" id="label-25"><code>nucleicacids</code></a></dt><!-- RDLabel: "nucleicacids" -->
 </dl>
-<p>����ΰ����� nucleicacids ���ޥ�ɤ�ɽ���Ǥ��ޤ���</p>
+<p>塩基の一覧は nucleicacids コマンドで表示できます。</p>
 <pre>bioruby> nucleicacids
 a       a       Adenine
 t       t       Thymine
@@ -466,14 +466,14 @@ v       [agc]   not T
 h       [atc]   not G
 d       [atg]   not C
 n       [atgc]  </pre>
-<p>�֤��ͤϱ���Σ�ʸ��ɽ���ȳ����������Υϥå���ˤʤäƤ��ޤ���</p>
+<p>返り値は塩基の1文字表記と該当する塩基のハッシュになっています。</p>
 <pre>bioruby> na = nucleicacids
 bioruby> puts na["r"]
 [ag]</pre>
 <dl>
 <dt><a name="label-26" id="label-26"><code>codontables</code></a></dt><!-- RDLabel: "codontables" -->
 </dl>
-<p>���ɥ�ơ��֥�ΰ����� codontables ���ޥ�ɤ�ɽ���Ǥ��ޤ���</p>
+<p>コドンテーブルの一覧は codontables コマンドで表示できます。</p>
 <pre>bioruby> codontables
 1       Standard (Eukaryote)
 2       Vertebrate Mitochondrial
@@ -492,14 +492,14 @@ bioruby> puts na["r"]
 21      Trematode Mitochondrial
 22      Scenedesmus obliquus mitochondrial
 23      Thraustochytrium Mitochondrial</pre>
-<p>�֤��ͤϥơ��֥��ֹ��̾���Υϥå���ˤʤäƤ��ޤ���</p>
+<p>返り値はテーブル番号と名前のハッシュになっています。</p>
 <pre>bioruby> ct = codontables
 bioruby> puts ct[3]
 Yeast Mitochondorial</pre>
 <dl>
 <dt><a name="label-27" id="label-27"><code>codontable(<var>num</var>)</code></a></dt><!-- RDLabel: "codontable" -->
 </dl>
-<p>���ɥ�ɽ���Τ� codontable ���ޥ�ɤ�ɽ���Ǥ��ޤ���</p>
+<p>コドン表自体は codontable コマンドで表示できます。</p>
 <pre>bioruby> codontable(11)
 
  = Codon table 11 : Bacteria
@@ -532,63 +532,63 @@ Yeast Mitochondorial</pre>
  | G GGG | Val V | Ala A | Glu E | Gly G |  a  |
  |  GG G | Val V | Ala A | Glu E | Gly G |  g  |
  *---------------------------------------------*</pre>
-<p>�֤��ͤ� Bio::CodonTable ���饹�Υ��֥������Ȥǡ����ɥ�ȥ��ߥλ���
-�Ѵ����Ǥ�������Ǥʤ����ʲ��Τ褦�ʥǡ��������뤳�Ȥ��Ǥ��ޤ���</p>
+<p>返り値は Bio::CodonTable クラスのオブジェクトで、コドンとアミノ酸の
+変換ができるだけでなく、以下のようなデータも得ることができます。</p>
 <pre>bioruby> ct = codontable(2)
 bioruby> p ct["atg"]
 "M"</pre>
 <dl>
 <dt><a name="label-28" id="label-28">definition</a></dt><!-- RDLabel: "definition" -->
 </dl>
-<p>���ɥ�ɽ�����������</p>
+<p>コドン表の定義の説明</p>
 <pre>bioruby> puts ct.definition
 Vertebrate Mitochondrial</pre>
 <dl>
 <dt><a name="label-29" id="label-29">start</a></dt><!-- RDLabel: "start" -->
 </dl>
-<p>���ϥ��ɥ����</p>
+<p>開始コドン一覧</p>
 <pre>bioruby> p ct.start
 ["att", "atc", "ata", "atg", "gtg"]</pre>
 <dl>
 <dt><a name="label-30" id="label-30">stop</a></dt><!-- RDLabel: "stop" -->
 </dl>
-<p>���ߥ��ɥ����</p>
+<p>終止コドン一覧</p>
 <pre>bioruby> p ct.stop
 ["taa", "tag", "aga", "agg"]</pre>
 <dl>
 <dt><a name="label-31" id="label-31">revtrans</a></dt><!-- RDLabel: "revtrans" -->
 </dl>
-<p>���ߥλ��򥳡��ɤ��륳�ɥ��Ĵ�٤�</p>
+<p>アミノ酸をコードするコドンを調べる</p>
 <pre>bioruby> p ct.revtrans("V")
 ["gtc", "gtg", "gtt", "gta"]</pre>
-<h3><a name="label-32" id="label-32">�ե�åȥե�����Υ���ȥ�</a></h3><!-- RDLabel: "�ե�åȥե�����Υ���ȥ�" -->
-<p>�ǡ����١����Υ���ȥ�ȡ��ե�åȥե����뤽�Τ�Τ򰷤���ˡ��Ҳ𤷤ޤ���
-GenBank �ǡ����١�������Ǥϡ��ե������Υ���ȥ꤬�ޤޤ�� gbphg.seq ��
-�ե����륵�������������Τǡ����Υե��������Ȥ��ƻȤ��ޤ���</p>
+<h3><a name="label-32" id="label-32">フラットファイルのエントリ</a></h3><!-- RDLabel: "フラットファイルのエントリ" -->
+<p>データベースのエントリと、フラットファイルそのものを扱う方法を紹介します。
+GenBank データベースの中では、ファージのエントリが含まれる gbphg.seq の
+ファイルサイズが小さいので、このファイルを例として使います。</p>
 <pre>% wget ftp://ftp.hgc.jp/pub/mirror/ncbi/genbank/gbphg.seq.gz
 % gunzip gbphg.seq.gz</pre>
 <dl>
 <dt><a name="label-33" id="label-33"><code>getent(<var>str</var>)</code></a></dt><!-- RDLabel: "getent" -->
 </dl>
-<p>getseq ���ޥ�ɤ������������ޤ���������������Ǥʤ�����ȥ����Τ��������
-�ˤ� getent ���ޥ��(��2)��Ȥ��ޤ���getseq ���ޥ��Ʊ�͡�getent ���ޥ�ɤǤ�
-OBDA, EMBOSS, NCBI, EBI, TogoWS, KEGG API �Υǡ����١��������Ѳ�ǽ�Ǥ�(��5)��
-����ˤĤ��Ƥ� getseq ���ޥ�ɤ������򻲾Ȥ��Ƥ���������</p>
+<p>getseq コマンドは配列を取得しましたが、配列だけでなくエントリ全体を取得する
+には getent コマンド(※2)を使います。getseq コマンド同様、getent コマンドでも
+OBDA, EMBOSS, NCBI, EBI, TogoWS のデータベースが利用可能です(※5)。
+設定については getseq コマンドの説明を参照してください。</p>
 <pre>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.
-(ά)</pre>
-<p>getent ���ޥ�ɤΰ���ˤ� db:entry_id ������ʸ����EMBOSS �� USA��
-�ե����롢IO ��Ϳ����졢�ǡ����١����Σ�����ȥ�ʬ��ʸ�����֤���ޤ���
-����ǡ����١����˸¤餺����¿���Υǡ����١�������ȥ���б����Ƥ��ޤ���</p>
+(略)</pre>
+<p>getent コマンドの引数には db:entry_id 形式の文字列、EMBOSS の USA、
+ファイル、IO が与えられ、データベースの1エントリ分の文字列が返されます。
+配列データベースに限らず、数多くのデータベースエントリに対応しています。</p>
 <dl>
 <dt><a name="label-34" id="label-34"><code>flatparse(<var>str</var>)</code></a></dt><!-- RDLabel: "flatparse" -->
 </dl>
-<p>������������ȥ��ѡ��������ߤ����ǡ�����Ȥ�����ˤ� flatparse
-���ޥ�ɤ�Ȥ��ޤ���</p>
+<p>取得したエントリをパースして欲しいデータをとりだすには flatparse
+コマンドを使います。</p>
 <pre>bioruby> entry = getent("gbphg.seq")
 bioruby> gb = flatparse(entry)
 bioruby> puts gb.entry_id
@@ -597,198 +597,108 @@ bioruby> puts gb.definition
 Bacteriophage Mu DNA for ORF1, sheath protein gpL, ORF2, ORF3, complete cds.
 bioruby> puts psaB.naseq
 acggtcagacgtttggcccgaccaccgggatgaggctgacgcaggtcagaaatctttgtgacgacaaccgtatcaat
-(ά)</pre>
+(略)</pre>
 <dl>
 <dt><a name="label-35" id="label-35"><code>getobj(<var>str</var>)</code></a></dt><!-- RDLabel: "getobj" -->
 </dl>
-<p>getobj ���ޥ��(��2)�ϡ�getent �ǥ���ȥ��ʸ����Ȥ��Ƽ����� flatparse ��
-�ѡ����������֥������Ȥ��Ѵ�����Τ�Ʊ���Ǥ���getent ���ޥ�ɤ�Ʊ�������
-�����դ��ޤ������������������ getseq������ȥ������������ getent��
-�ѡ����������֥������Ȥ����������� getobj ��Ȥ����Ȥˤʤ�ޤ���</p>
+<p>getobj コマンド(※2)は、getent でエントリを文字列として取得し flatparse で
+パースしたオブジェクトに変換するのと同じです。getent コマンドと同じ引数を
+受け付けます。配列を取得する時は getseq、エントリを取得する時は getent、
+パースしたオブジェクトを取得する時は getobj を使うことになります。</p>
 <pre>bioruby> gb = getobj("gbphg.seq")
 bioruby> puts gb.entry_id
 AB000833</pre>
 <dl>
 <dt><a name="label-36" id="label-36"><code>flatfile(<var>file</var>)</code></a></dt><!-- RDLabel: "flatfile" -->
 </dl>
-<p>getent ���ޥ�ɤϣ�����ȥꤷ�������ʤ����ᡢ������Υե�����򳫤��� 
-�ƥ���ȥ���˽�����Ԥ��ˤ� flatfile ���ޥ�ɤ�Ȥ��ޤ���</p>
+<p>getent コマンドは1エントリしか扱えないため、ローカルのファイルを開いて 
+各エントリ毎に処理を行うには flatfile コマンドを使います。</p>
 <pre>bioruby> flatfile("gbphg.seq") do |entry|
 bioruby+   # do something on entry
 bioruby+ end</pre>
-<p>�֥�å�����ꤷ�ʤ����ϡ��ե�������κǽ�Υ���ȥ��������ޤ���</p>
+<p>ブロックを指定しない場合は、ファイル中の最初のエントリを取得します。</p>
 <pre>bioruby> entry = flatfile("gbphg.seq")
 bioruby> gb = flatparse(entry)
 bioruby> puts gb.entry_id</pre>
 <dl>
 <dt><a name="label-37" id="label-37"><code>flatauto(<var>file</var>)</code></a></dt><!-- RDLabel: "flatauto" -->
 </dl>
-<p>�ƥ���ȥ�� flatparse ��Ʊ�ͤ˥ѡ����������֤ǽ��֤˽������뤿��ˤϡ�
-flatfile ���ޥ�ɤ������ flatauto ���ޥ�ɤ�Ȥ��ޤ���</p>
+<p>各エントリを flatparse と同様にパースした状態で順番に処理するためには、
+flatfile コマンドの代わりに flatauto コマンドを使います。</p>
 <pre>bioruby> flatauto("gbphg.seq") do |entry|
 bioruby+   print entry.entry_id
 bioruby+   puts  entry.definition
 bioruby+ end</pre>
-<p>flatfile Ʊ�͡��֥�å�����ꤷ�ʤ����ϡ��ե�������κǽ�Υ���ȥ��
-���������ѡ����������֥������Ȥ��֤��ޤ���</p>
+<p>flatfile 同様、ブロックを指定しない場合は、ファイル中の最初のエントリを
+取得し、パースしたオブジェクトを返します。</p>
 <pre>bioruby> gb = flatfile("gbphg.seq")
 bioruby> puts gb.entry_id</pre>
-<h3><a name="label-38" id="label-38">�ե�åȥե�����Υ���ǥ�����</a></h3><!-- RDLabel: "�ե�åȥե�����Υ���ǥ�����" -->
-<p>EMBOSS �� dbiflat �˻�����ǽ�Ȥ��ơ�BioRuby, BioPerl �ʤɤ˶��̤� BioFlat
-�Ȥ�������ǥå��������������Ȥߤ�����ޤ������٥���ǥå�����
-�������Ƥ����ȥ���ȥ�μ��Ф�����®�����ưפ˹Ԥ��ޤ���
-����ˤ�꼫ʬ���ѤΥǡ����١������ڤ˺�뤳�Ȥ��Ǥ��ޤ���</p>
+<h3><a name="label-38" id="label-38">フラットファイルのインデクシング</a></h3><!-- RDLabel: "フラットファイルのインデクシング" -->
+<p>EMBOSS の dbiflat に似た機能として、BioRuby, BioPerl などに共通の BioFlat
+というインデックスを作成する仕組みがあります。一度インデックスを
+作成しておくとエントリの取り出しが高速かつ容易に行えます。
+これにより自分専用のデータベースを手軽に作ることができます。</p>
 <dl>
 <dt><a name="label-39" id="label-39"><code>flatindex(<var>db_name</var>, *<var>source_file_list</var>)</code></a></dt><!-- RDLabel: "flatindex" -->
 </dl>
-<p>GenBank �Υե�����������ե����� gbphg.seq �����äƤ��륨��ȥ���Ф���
-mydb �Ȥ����ǡ����١���̾�ǥ���ǥå�����������ޤ���</p>
+<p>GenBank のファージの配列ファイル gbphg.seq に入っているエントリに対して
+mydb というデータベース名でインデックスを作成します。</p>
 <pre>bioruby> flatindex("mydb", "gbphg.seq")
 Creating BioFlat index (.bioruby/bioflat/mydb) ... done</pre>
 <dl>
 <dt><a name="label-40" id="label-40"><code>flatsearch(<var>db_name</var>, <var>entry_id</var>)</code></a></dt><!-- RDLabel: "flatsearch" -->
 </dl>
-<p>�������� mydb �ǡ����١������饨��ȥ��Ȥ�Ф��ˤ� flatsearch ���ޥ�ɤ�
-�Ȥ��ޤ���</p>
+<p>作成した mydb データベースからエントリをとり出すには flatsearch コマンドを
+使います。</p>
 <pre>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
-(ά)</pre>
-<h3><a name="label-41" id="label-41">�͡��� DB ������� FASTA �ե����ޥåȤ��Ѵ�������¸</a></h3><!-- RDLabel: "�͡��� DB ������� FASTA �ե����ޥåȤ��Ѵ�������¸" -->
-<p>FASTA �ե����ޥåȤ�����ǡ�����ɸ��Ū���Ѥ����Ƥ���ե����ޥåȤǤ���
-��>�׵���ǤϤ��ޤ룱���ܤ���������������ꡢ�����ܰʹߤ����󤬤ĤŤ��ޤ���
-������ζ���ʸ����̵�뤵��ޤ���</p>
+(略)</pre>
+<h3><a name="label-41" id="label-41">様々な DB の配列を FASTA フォーマットに変換して保存</a></h3><!-- RDLabel: "様々な DB の配列を FASTA フォーマットに変換して保存" -->
+<p>FASTA フォーマットは配列データで標準的に用いられているフォーマットです。
+「>」記号ではじまる1行目に配列の説明があり、2行目以降に配列がつづきます。
+配列中の空白文字は無視されます。</p>
 <pre>>entry_id definition ...
 ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT
 ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGT</pre>
-<p>����������Ԥϡ��ǽ��ñ�줬����� ID �ˤʤäƤ��뤳�Ȥ�¿���ΤǤ�����
-NCBI �� BLAST �ѥǡ����١����ǤϤ���˹��٤ʹ�¤���������ʤ��Ƥ��ޤ���</p>
+<p>配列の説明行は、最初の単語が配列の ID になっていることが多いのですが、
+NCBI の BLAST 用データベースではさらに高度な構造化がおこなわれています。</p>
 <ul>
 <li><a href="ftp://ftp.ncbi.nih.gov/blast/documents/README.formatdb"><URL:ftp://ftp.ncbi.nih.gov/blast/documents/README.formatdb></a></li>
 <li><a href="http://blast.wustl.edu/doc/FAQ-Indexing.html#Identifiers"><URL:http://blast.wustl.edu/doc/FAQ-Indexing.html#Identifiers></a></li>
 <li>FASTA format (Wikipedia)
   <a href="http://en.wikipedia.org/wiki/Fasta_format"><URL:http://en.wikipedia.org/wiki/Fasta_format></a></li>
 </ul>
-<p>BioRuby �Υǡ����١�������ȥ�Υ��饹�ˤϥ���ȥ�ID����������ˤĤ���
-���̤Υ᥽�åɤ��Ѱդ���Ƥ��ޤ���</p>
+<p>BioRuby のデータベースエントリのクラスにはエントリID、配列、定義について
+共通のメソッドが用意されています。</p>
 <ul>
-<li>entry_id - ����ȥ� ID �����</li>
-<li>definition - ���ʸ�����</li>
-<li>seq - ��������</li>
+<li>entry_id - エントリ ID を取得</li>
+<li>definition - 定義文を取得</li>
+<li>seq - 配列を取得</li>
 </ul>
-<p>�����ζ��̥᥽�åɤ�Ȥ��ȡ��ɤ������ǡ����١�������ȥ�Ǥ�
-FASTA �ե����ޥåȤ��Ѵ��Ǥ���ץ���ब��ñ�˺��ޤ���</p>
+<p>これらの共通メソッドを使うと、どんな配列データベースエントリでも
+FASTA フォーマットに変換できるプログラムが簡単に作れます。</p>
 <pre>entry.seq.to_fasta("#{entry.entry_id} #{entry.definition}", 60)</pre>
-<p>����ˡ�BioRuby �Ǥ����ϥǡ����١����η�����ưȽ�̤Ǥ��ޤ��Τǡ�
-GenBank, UniProt �ʤ�¿���μ��פ�����ǡ����١����Ǥ�
-�ե�����̾����ꤹ������� FASTA �ե����ޥåȤ��Ѵ��Ǥ��ޤ���</p>
+<p>さらに、BioRuby では入力データベースの形式を自動判別できますので、
+GenBank, UniProt など多くの主要な配列データベースでは
+ファイル名を指定するだけで FASTA フォーマットに変換できます。</p>
 <dl>
 <dt><a name="label-42" id="label-42"><code>flatfasta(<var>fasta_file</var>, *<var>source_file_list</var>)</code></a></dt><!-- RDLabel: "flatfasta" -->
 </dl>
-<p>���ϥǡ����١����Υե�����̾�Υꥹ�Ȥ��顢���ꤷ�� FASTA �ե����ޥåȤ�
-�ե�������������륳�ޥ�ɤǤ��������ǤϤ����Ĥ��� GenBank �Υե������
-FASTA �ե����ޥåȤ��Ѵ�����myfasta.fa �Ȥ����ե��������¸���Ƥ��ޤ���</p>
+<p>入力データベースのファイル名のリストから、指定した FASTA フォーマットの
+ファイルを生成するコマンドです。ここではいくつかの GenBank のファイルを
+FASTA フォーマットに変換し、myfasta.fa というファイルに保存しています。</p>
 <pre>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</pre>
-<h3><a name="label-43" id="label-43">KEGG API</a></h3><!-- RDLabel: "KEGG API" -->
-<p>BioRuby ������Ǥ� KEGG API �Υ����֥����ӥ����ñ�����ѤǤ��ޤ���</p>
-<dl>
-<dt><a name="label-44" id="label-44"><code>keggdbs</code></a></dt><!-- RDLabel: "keggdbs" -->
-</dl>
-<p>���Υ�ͥåȤ� KEGG API ���̤������Ѳ�ǽ�ʥǡ����١����Υꥹ�Ȥ�ɽ�����ޤ���</p>
-<pre>bioruby> keggdbs
-nt:     Non-redundant nucleic acid sequence database
-aa:     Non-redundant protein sequence database
-gb:     GenBank nucleic acid sequence database
-(ά)</pre>
-<dl>
-<dt><a name="label-45" id="label-45"><code>keggorgs</code></a></dt><!-- RDLabel: "keggorgs" -->
-</dl>
-<p>KEGG �˼�Ͽ����Ƥ�������ʪ��Υꥹ�Ȥ�ɽ�����ޤ���</p>
-<pre>bioruby> keggorgs
-aae:    Aquifex aeolicus
-aci:    Acinetobacter sp. ADP1
-afu:    Archaeoglobus fulgidus
-(ά)</pre>
-<dl>
-<dt><a name="label-46" id="label-46"><code>keggpathways</code></a></dt><!-- RDLabel: "keggpathways" -->
-</dl>
-<p>KEGG �˼�Ͽ����Ƥ������ѥ��������Υꥹ�Ȥ�ɽ�����ޤ���</p>
-<pre>bioruby> keggpathways
-path:map00010:  Glycolysis / Gluconeogenesis - Reference pathway
-path:map00020:  Citrate cycle (TCA cycle) - Reference pathway
-path:map00030:  Pentose phosphate pathway - Reference pathway
-(ά)</pre>
-<p>����ˣ�ʸ���� KEGG ��ʪ�ﵭ��򤢤�����ȡ�������ʪ�����ѤǤ���
-�ѥ������������ΰ������֤��ޤ�����IJ�� eco �ξ��ʲ��Τ褦�ˤʤ�ޤ���</p>
-<pre>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
-(ά)</pre>
-<dl>
-<dt><a name="label-47" id="label-47"><code>keggapi</code></a></dt><!-- RDLabel: "keggapi" -->
-</dl>
-<p>�����ʳ��� KEGG API �Υ᥽�åɤϡ�keggapi ��³���ƸƤӽФ����Ȥ�
-���ѤǤ��ޤ���</p>
-<pre>bioruby> p keggapi.get_genes_by_pathway("path:eco00010")
-["eco:b0114", "eco:b0115", "eco:b0116", "eco:b0356", "eco:b0688", (ά)</pre>
-<p>���Ѳ�ǽ�ʥ᥽�åɤΰ����� KEGG API �Υޥ˥奢��򻲾Ȥ��Ƥ���������</p>
-<ul>
-<li><a href="http://www.genome.jp/kegg/soap/doc/keggapi_manual_ja.html"><URL:http://www.genome.jp/kegg/soap/doc/keggapi_manual_ja.html></a></li>
-</ul>
-<h3><a name="label-48" id="label-48">DBGET</a></h3><!-- RDLabel: "DBGET" -->
-<p>���Υ�ͥåȤ� DBGET �Υ��ޥ�ɤǤ��� binfo, bfind, bget, btit, bconv ��
-KEGG API �����Ѥ��Ƥ��Τޤ޼¹ԤǤ���褦�ˤʤäƤ��ޤ���</p>
-<dl>
-<dt><a name="label-49" id="label-49"><code>binfo</code></a></dt><!-- RDLabel: "binfo" -->
-</dl>
-<pre>bioruby> binfo
-                         *** Last database updates ***
-Date      Database              Release              #Entries      #Residues</pre>
-<pre>--------  -------------   ------------------------  ------------  ----------------
- 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
- (ά)</pre>
-<p>binfo ���ޥ�ɤ�³���ƥǡ����١���̾����ꤹ�뤳�ȤǤ��ܺ٤ʾ���
-ɽ������ޤ���</p>
-<pre>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></pre>
-<dl>
-<dt><a name="label-50" id="label-50"><code>bfind(<var>keyword</var>)</code></a></dt><!-- RDLabel: "bfind" -->
-</dl>
-<p>bfind ���ޥ�ɤǥǡ����١������Ф��륭����ɥ�������Ԥ����Ȥ��Ǥ��ޤ���
-�ǡ����١���̾�ȸ���������������ɤ�ʸ������Ϥ��ޤ���</p>
-<pre>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.
-(ά)</pre>
-<dl>
-<dt><a name="label-51" id="label-51"><code>bget(<var>entry_id</var>)</code></a></dt><!-- RDLabel: "bget" -->
-</dl>
-<p>bget ���ޥ�ɤǻ��ꤷ�� db:entry_id �Υǡ����١�������ȥ������Ǥ��ޤ���</p>
-<pre>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.
-(ά)</pre>
-<h3><a name="label-52" id="label-52">������ץ�����</a></h3><!-- RDLabel: "������ץ�����" -->
-<p>��ȼ��򥹥���ץȲ�������¸���Ƥ������Ȥ�Ǥ��ޤ���</p>
+<h3><a name="label-43" id="label-43">スクリプト生成</a></h3><!-- RDLabel: "スクリプト生成" -->
+<p>作業手順をスクリプト化して保存しておくこともできます。</p>
 <pre>bioruby> script
 -- 8< -- 8< -- 8< --  Script  -- 8< -- 8< -- 8< --
 bioruby> seq = getseq("gbphg.seq")
@@ -797,50 +707,50 @@ bioruby> p seq.translate
 bioruby> script
 -- >8 -- >8 -- >8 --  Script  -- >8 -- >8 -- >8 --
 Saving script (script.rb) ... done</pre>
-<p>�������줿 script.rb �ϰʲ��Τ褦�ˤʤ�ޤ���</p>
+<p>生成された script.rb は以下のようになります。</p>
 <pre>#!/usr/bin/env bioruby
 
 seq = getseq("gbphg.seq")
 p seq
 p seq.translate</pre>
-<p>���Υ�����ץȤ� bioruby ���ޥ�ɤǼ¹Ԥ��뤳�Ȥ��Ǥ��ޤ���</p>
+<p>このスクリプトは bioruby コマンドで実行することができます。</p>
 <pre>% bioruby script.rb</pre>
-<h3><a name="label-53" id="label-53">�ʰץ����뵡ǽ</a></h3><!-- RDLabel: "�ʰץ����뵡ǽ" -->
+<h3><a name="label-44" id="label-44">簡易シェル機能</a></h3><!-- RDLabel: "簡易シェル機能" -->
 <dl>
-<dt><a name="label-54" id="label-54"><code>cd(<var>dir</var>)</code></a></dt><!-- RDLabel: "cd" -->
+<dt><a name="label-45" id="label-45"><code>cd(<var>dir</var>)</code></a></dt><!-- RDLabel: "cd" -->
 </dl>
-<p>�����ȥǥ��쥯�ȥ���ѹ����ޤ���</p>
+<p>カレントディレクトリを変更します。</p>
 <pre>bioruby> cd "/tmp"
 "/tmp"</pre>
-<p>�ۡ���ǥ��쥯�ȥ�����ˤϰ����Ĥ����� cd ��¹Ԥ��ޤ���</p>
+<p>ホームディレクトリに戻るには引数をつけずに cd を実行します。</p>
 <pre>bioruby> cd
 "/home/k"</pre>
 <dl>
-<dt><a name="label-55" id="label-55"><code>pwd</code></a></dt><!-- RDLabel: "pwd" -->
+<dt><a name="label-46" id="label-46"><code>pwd</code></a></dt><!-- RDLabel: "pwd" -->
 </dl>
-<p>�����ȥǥ��쥯�ȥ��ɽ�����ޤ���</p>
+<p>カレントディレクトリを表示します。</p>
 <pre>bioruby> pwd
 "/home/k"</pre>
 <dl>
-<dt><a name="label-56" id="label-56"><code>dir</code></a></dt><!-- RDLabel: "dir" -->
+<dt><a name="label-47" id="label-47"><code>dir</code></a></dt><!-- RDLabel: "dir" -->
 </dl>
-<p>�����ȥǥ��쥯�ȥ�Υե���������ɽ�����ޤ���</p>
+<p>カレントディレクトリのファイルを一覧表示します。</p>
 <pre>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"</pre>
 <dl>
-<dt><a name="label-57" id="label-57"><code>head(<var>file</var>, <var>lines</var> = <var>10</var>)</code></a></dt><!-- RDLabel: "head" -->
+<dt><a name="label-48" id="label-48"><code>head(<var>file</var>, <var>lines</var> = <var>10</var>)</code></a></dt><!-- RDLabel: "head" -->
 </dl>
-<p>�ƥ����ȥե�����䥪�֥������Ȥ���Ƭ 10 �Ԥ�ɽ�����ޤ���</p>
+<p>テキストファイルやオブジェクトの先頭 10 行を表示します。</p>
 <pre>bioruby> head "gbphg.seq"
 GBPHG.SEQ            Genetic Sequence Data Bank
                           October 15 2005
@@ -850,119 +760,119 @@ GBPHG.SEQ            Genetic Sequence Data Bank
                           Phage Sequences         
 
     2713 loci,    16892737 bases, from     2713 reported sequences</pre>
-<p>ɽ������Կ����ꤹ�뤳�Ȥ�Ǥ��ޤ���</p>
+<p>表示する行数を指定することもできます。</p>
 <pre>bioruby> head "gbphg.seq", 2
 GBPHG.SEQ            Genetic Sequence Data Bank
                           October 15 2005</pre>
-<p>�ƥ����Ȥ����äƤ����ѿ����Ƭ�򸫤뤳�Ȥ�Ǥ��ޤ���</p>
+<p>テキストの入っている変数の先頭を見ることもできます。</p>
 <pre>bioruby> entry = getent("gbphg.seq")
 bioruby> head entry, 2
 GBPHG.SEQ            Genetic Sequence Data Bank
                           October 15 2005</pre>
 <dl>
-<dt><a name="label-58" id="label-58"><code>disp(<var>obj</var>)</code></a></dt><!-- RDLabel: "disp" -->
+<dt><a name="label-49" id="label-49"><code>disp(<var>obj</var>)</code></a></dt><!-- RDLabel: "disp" -->
 </dl>
-<p>�ƥ����ȥե�����䥪�֥������Ȥ���Ȥ�ڡ����㡼��ɽ�����ޤ���
-�����ǻ��Ѥ���ڡ����㡼�� pager ���ޥ�ɤ��ѹ����뤳�Ȥ��Ǥ��ޤ��ʸ�ҡˡ�</p>
+<p>テキストファイルやオブジェクトの中身をページャーで表示します。
+ここで使用するページャーは pager コマンドで変更することができます(後述)。</p>
 <pre>bioruby> disp "gbphg.seq"
 bioruby> disp entry
 bioruby> disp [1, 2, 3] * 4</pre>
-<h3><a name="label-59" id="label-59">�ѿ�</a></h3><!-- RDLabel: "�ѿ�" -->
+<h3><a name="label-50" id="label-50">変数</a></h3><!-- RDLabel: "変数" -->
 <dl>
-<dt><a name="label-60" id="label-60"><code>ls</code></a></dt><!-- RDLabel: "ls" -->
+<dt><a name="label-51" id="label-51"><code>ls</code></a></dt><!-- RDLabel: "ls" -->
 </dl>
-<p>���å������˺��������ѿ�ʥ��֥������ȡˤΰ�����ɽ�����ޤ���</p>
+<p>セッション中に作成した変数(オブジェクト)の一覧を表示します。</p>
 <pre>bioruby> ls
 ["entry", "seq"]
 
 bioruby> a = 123
 ["a", "entry", "seq"]</pre>
 <dl>
-<dt><a name="label-61" id="label-61"><code>rm(<var>symbol</var>)</code></a></dt><!-- RDLabel: "rm" -->
+<dt><a name="label-52" id="label-52"><code>rm(<var>symbol</var>)</code></a></dt><!-- RDLabel: "rm" -->
 </dl>
-<p>�ѿ��õ�ޤ���</p>
+<p>変数を消去します。</p>
 <pre>bioruby> rm "a"
 
 bioruby> ls
 ["entry", "seq"]</pre>
 <dl>
-<dt><a name="label-62" id="label-62"><code>savefile(<var>filename</var>, <var>object</var>)</code></a></dt><!-- RDLabel: "savefile" -->
+<dt><a name="label-53" id="label-53"><code>savefile(<var>filename</var>, <var>object</var>)</code></a></dt><!-- RDLabel: "savefile" -->
 </dl>
-<p>�ѿ����¸����Ƥ������Ƥ�ƥ����ȥե��������¸���ޤ���</p>
+<p>変数に保存されている内容をテキストファイルに保存します。</p>
 <pre>bioruby> savefile "testfile.txt", entry
 Saving data (testfile.txt) ... done
 
 bioruby> disp "testfile.txt"</pre>
-<h3><a name="label-63" id="label-63">�Ƽ�����</a></h3><!-- RDLabel: "�Ƽ�����" -->
-<p>��³���λ��ȤߤȤ��� BioRuby �����뽪λ���� session �ǥ��쥯�ȥ����
-�ҥ��ȥꡢ���֥������ȡ��Ŀͤ����꤬��¸���졢����ư���˼�ưŪ��
-�ɤ߹��ޤ�ޤ���</p>
+<h3><a name="label-54" id="label-54">各種設定</a></h3><!-- RDLabel: "各種設定" -->
+<p>永続化の仕組みとして BioRuby シェル終了時に session ディレクトリ内に
+ヒストリ、オブジェクト、個人の設定が保存され、次回起動時に自動的に
+読み込まれます。</p>
 <dl>
-<dt><a name="label-64" id="label-64"><code>config</code></a></dt><!-- RDLabel: "config" -->
+<dt><a name="label-55" id="label-55"><code>config</code></a></dt><!-- RDLabel: "config" -->
 </dl>
-<p>BioRuby ������γƼ������ɽ�����ޤ���</p>
+<p>BioRuby シェルの各種設定を表示します。</p>
 <pre>bioruby> config
 message = "...BioRuby in the shell..."
 marshal = [4, 8]
 color   = false
 pager   = nil
 echo    = false</pre>
-<p>echo ɽ�����뤫�ɤ������ڤ��ؤ��ޤ���on �ξ��ϡ�puts �� p �ʤɤ�
-�Ĥ��ʤ��Ƥ�ɾ�������ͤ����̤�ɽ������ޤ���
-irb ���ޥ�ɤξ��Ͻ�����꤬ on �ˤʤäƤ��ޤ�����bioruby ���ޥ�ɤǤ�
-Ĺ������䥨��ȥ�ʤ�Ĺ���ʸ����򰷤����Ȥ�¿�����ᡢ�������Ǥ�
-off �ˤ��Ƥ��ޤ���</p>
+<p>echo 表示するかどうかを切り替えます。on の場合は、puts や p などを
+つけなくても評価した値が画面に表示されます。
+irb コマンドの場合は初期設定が on になっていますが、bioruby コマンドでは
+長い配列やエントリなど長大な文字列を扱うことが多いため、初期設定では
+off にしています。</p>
 <pre>bioruby> config :echo
 Echo on
   ==> nil
 
 bioruby> config :echo
 Echo off</pre>
-<p>���ɥ�ɽ�ʤɡ���ǽ�ʾ��˥��顼ɽ�����뤫�ɤ������ڤ��ؤ��ޤ���
-���顼ɽ���ξ�硢�ץ��ץȤˤ⿧���Ĥ��ޤ��Τ�Ƚ�̤Ǥ��ޤ���</p>
+<p>コドン表など、可能な場合にカラー表示するかどうかを切り替えます。
+カラー表示の場合、プロンプトにも色がつきますので判別できます。</p>
 <pre>bioruby> config :color
 bioruby> codontable
-(���դ�)</pre>
-<p>�¹Ԥ��뤿�Ӥ����꤬�ڤ��ؤ��ޤ���</p>
+(色付き)</pre>
+<p>実行するたびに設定が切り替わります。</p>
 <pre>bioruby> config :color
 bioruby> codontable
-(���ʤ�)</pre>
-<p>BioRuby �����뵯ư����ɽ������륹�ץ�å����å�������㤦ʸ�����
-�ѹ����ޤ������β��ϥץ��������ѤΥǥ��쥯�ȥ꤫����ꤷ�Ƥ����Τ�
-�褤�Ǥ��礦��</p>
+(色なし)</pre>
+<p>BioRuby シェル起動時に表示されるスプラッシュメッセージを違う文字列に
+変更します。何の解析プロジェクト用のディレクトリかを指定しておくのも
+よいでしょう。</p>
 <pre>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</pre>
-<p>�ǥե���Ȥ�ʸ������᤹�ˤϡ�����ʤ��Ǽ¹Ԥ��ޤ���</p>
+<p>デフォルトの文字列に戻すには、引数なしで実行します。</p>
 <pre>bioruby> config :message</pre>
-<p>BioRuby �����뵯ư����ɽ������륹�ץ�å����å��ݥ���
-���˥᡼�����ɽ�����뤫�ɤ������ڤ��ؤ��ޤ���
-�������¹Ԥ��뤿�Ӥ����꤬�ڤ��ؤ��ޤ���</p>
+<p>BioRuby シェル起動時に表示されるスプラッシュメッセ−ジを
+アニメーション表示するかどうかを切り替えます。
+こちらも実行するたびに設定が切り替わります。</p>
 <pre>bioruby> config :splash
 Splash on</pre>
 <dl>
-<dt><a name="label-65" id="label-65"><code>pager(<var>command</var>)</code></a></dt><!-- RDLabel: "pager" -->
+<dt><a name="label-56" id="label-56"><code>pager(<var>command</var>)</code></a></dt><!-- RDLabel: "pager" -->
 </dl>
-<p>disp ���ޥ�ɤǼºݤ����Ѥ���ڡ����㡼���ڤ��ؤ��ޤ���</p>
+<p>disp コマンドで実際に利用するページャーを切り替えます。</p>
 <pre>bioruby> pager "lv"
 Pager is set to 'lv'
 
 bioruby> pager "less -S"
 Pager is set to 'less -S'</pre>
-<p>�ڡ����㡼����Ѥ��ʤ�����ˤ�����ϰ���ʤ��Ǽ¹Ԥ��ޤ���</p>
+<p>ページャーを使用しない設定にする場合は引数なしで実行します。</p>
 <pre>bioruby> pager
 Pager is set to 'off'</pre>
-<p>�ڡ����㡼�� off �λ��˰���ʤ��Ǽ¹Ԥ���ȴĶ��ѿ� PAGER ���ͤ����Ѥ��ޤ���</p>
+<p>ページャーが off の時に引数なしで実行すると環境変数 PAGER の値を利用します。</p>
 <pre>bioruby> pager
 Pager is set to 'less'</pre>
-<h3><a name="label-66" id="label-66">�����ҥ�������������</a></h3><!-- RDLabel: "�����ҥ�������������" -->
+<h3><a name="label-57" id="label-57">遺伝子アスキーアート</a></h3><!-- RDLabel: "遺伝子アスキーアート" -->
 <dl>
-<dt><a name="label-67" id="label-67"><code>doublehelix(<var>sequence</var>)</code></a></dt><!-- RDLabel: "doublehelix" -->
+<dt><a name="label-58" id="label-58"><code>doublehelix(<var>sequence</var>)</code></a></dt><!-- RDLabel: "doublehelix" -->
 </dl>
-<p>DNA ����򥢥����������Ȥ�ɽ�����륪�ޥ���ǽ������ޤ���
-Ŭ���ʱ������� seq ����������äݤ�ɽ�����Ƥߤޤ��礦��</p>
+<p>DNA 配列をアスキーアートで表示するオマケ機能があります。
+適当な塩基配列 seq を二重螺旋っぽく表示してみましょう。</p>
 <pre>bioruby> dna = getseq("atgc" * 10).randomize
 bioruby> doublehelix dna
      ta
@@ -978,146 +888,146 @@ a--t
 g---c
  c----g
   c----g
-(ά)</pre>
-<h3><a name="label-68" id="label-68">�����Ҳ���</a></h3><!-- RDLabel: "�����Ҳ���" -->
+(略)</pre>
+<h3><a name="label-59" id="label-59">遺伝子音楽</a></h3><!-- RDLabel: "遺伝子音楽" -->
 <dl>
-<dt><a name="label-69" id="label-69"><code>midifile(<var>midifile</var>, <var>sequence</var>)</code></a></dt><!-- RDLabel: "midifile" -->
+<dt><a name="label-60" id="label-60"><code>midifile(<var>midifile</var>, <var>sequence</var>)</code></a></dt><!-- RDLabel: "midifile" -->
 </dl>
-<p>DNA ����� MIDI �ե�������Ѵ����륪�ޥ���ǽ������ޤ���
-Ŭ���ʱ������� seq ��Ȥä��������� midifile.mid ��
-MIDI �ץ쥤�䡼�DZ��դ��Ƥߤޤ��礦��</p>
+<p>DNA 配列を MIDI ファイルに変換するオマケ機能があります。
+適当な塩基配列 seq を使って生成した midifile.mid を
+MIDI プレイヤーで演奏してみましょう。</p>
 <pre>bioruby> midifile("midifile.mid", seq)
 Saving MIDI file (midifile.mid) ... done</pre>
-<p>�ʾ�� BioRuby ������β���򽪤�ꡢ�ʲ��Ǥ� BioRuby �饤�֥�꼫�Τ�
-�����Ԥ��ޤ���</p>
-<h2><a name="label-70" id="label-70">���𡦥��ߥλ������������� (Bio::Sequence ���饹)</a></h2><!-- RDLabel: "���𡦥��ߥλ������������� (Bio::Sequence ���饹)" -->
-<p>Bio::Sequence ���饹�ϡ�������Ф����͡�������Ԥ����Ȥ��Ǥ��ޤ���
-��ñ����Ȥ��ơ�û���������� atgcatgcaaaa ��Ȥäơ���������ؤ��Ѵ���
-��ʬ������ڤ�Ф������������η׻������ߥλ��ؤ�������ʬ���̷׻��ʤɤ�
-�ԤʤäƤߤޤ������ߥλ��ؤ������Ǥϡ�ɬ�פ˱����Ʋ������ܤ���������
-�Ϥ��뤫�ե졼�����ꤷ���ꡢcodontable.rb ���������Ƥ��륳�ɥ�ơ�
-�֥���椫����Ѥ����Τ���ꤷ���ꤹ������Ǥ��ޤ��ʥ��ɥ�ơ��֥��
-�ֹ�� <a href="http://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi"><URL:http://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi></a>
-�򻲾ȡˡ�</p>
+<p>以上で BioRuby シェルの解説を終わり、以下では BioRuby ライブラリ自体の
+解説を行います。</p>
+<h2><a name="label-61" id="label-61">塩基・アミノ酸配列を処理する (Bio::Sequence クラス)</a></h2><!-- RDLabel: "塩基・アミノ酸配列を処理する (Bio::Sequence クラス)" -->
+<p>Bio::Sequence クラスは、配列に対する様々な操作を行うことができます。
+簡単な例として、短い塩基配列 atgcatgcaaaa を使って、相補配列への変換、
+部分配列の切り出し、塩基組成の計算、アミノ酸への翻訳、分子量計算などを
+行なってみます。アミノ酸への翻訳では、必要に応じて何塩基目から翻訳を開
+始するかフレームを指定したり、codontable.rb で定義されているコドンテー
+ブルの中から使用するものを指定したりする事ができます(コドンテーブルの
+番号は <a href="http://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi"><URL:http://www.ncbi.nlm.nih.gov/Taxonomy/Utils/wprintgc.cgi></a>
+を参照)。</p>
 <pre>#!/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       # �������������</pre>
-<p>print, puts, p �����Ƥ���̤�ɽ�����뤿��� Ruby ɸ��᥽�åɤǤ���
-���ܤȤʤ� print ����٤ơ�puts �ϲ��Ԥ�ư�ǤĤ��Ƥ���롢
-p ��ʸ��������ʳ��Υ��֥������Ȥ�ʹ֤����䤹���褦��ɽ�����Ƥ���롢
-�Ȥ�����ħ������ޤ��Τ�Ŭ���Ȥ�ʬ���ޤ�������ˡ�</p>
+puts seq.complement.translate       # 相補配列の翻訳</pre>
+<p>print, puts, p は内容を画面に表示するための Ruby 標準メソッドです。
+基本となる print と比べて、puts は改行を自動でつけてくれる、
+p は文字列や数字以外のオブジェクトも人間が見やすいように表示してくれる、
+という特徴がありますので適宜使い分けます。さらに、</p>
 <pre>require 'pp'</pre>
-<p>�Ȥ���лȤ���褦�ˤʤ� pp �᥽�åɤϡ�p ����ɽ�������䤹���ʤ�ޤ���</p>
-<p>��������� Bio::Sequence::NA ���饹�Ρ����ߥλ������ Bio::Sequence::AA
-���饹�Υ��֥������Ȥˤʤ�ޤ������줾�� Bio::Sequence ���饹��Ѿ���
-�Ƥ��뤿�ᡢ¿���Υ᥽�åɤ϶��̤Ǥ���</p>
-<p>����� Bio::Sequence::NA, AA ���饹�� Ruby �� String ���饹��Ѿ����Ƥ���Τ�
-String ���饹�����ĥ᥽�åɤ�Ȥ������Ǥ��ޤ����㤨����ʬ������ڤ�Ф��ˤ�
-Bio::Sequence ���饹�� subseq(from,to) �᥽�åɤ�¾�ˡ�String ���饹��
-[] �᥽�åɤ�Ȥ����Ȥ�Ǥ��ޤ���</p>
-<p>Ruby ��ʸ����� 1 ʸ���ܤ� 0 ���ܤȤ��ƿ������ˤ���դ�ɬ�פǤ������Ȥ��С�</p>
+<p>とすれば使えるようになる pp メソッドは、p よりも表示が見やすくなります。</p>
+<p>塩基配列は Bio::Sequence::NA クラスの、アミノ酸配列は Bio::Sequence::AA
+クラスのオブジェクトになります。それぞれ Bio::Sequence クラスを継承し
+ているため、多くのメソッドは共通です。</p>
+<p>さらに Bio::Sequence::NA, AA クラスは Ruby の String クラスを継承しているので
+String クラスが持つメソッドも使う事ができます。例えば部分配列を切り出すには
+Bio::Sequence クラスの subseq(from,to) メソッドの他に、String クラスの
+[] メソッドを使うこともできます。</p>
+<p>Ruby の文字列は 1 文字目を 0 番目として数える点には注意が必要です。たとえば、</p>
 <pre>puts seq.subseq(1, 3)
 puts seq[0, 3]</pre>
-<p>�Ϥɤ���� seq �κǽ�Σ�ʸ�� atg ��ɽ�����ޤ���</p>
-<p>���Τ褦�ˡ�String �Υ᥽�åɤ�Ȥ����ϡ���ʪ�ؤ����̻��Ѥ���� 1 ʸ���ܤ�
-1 ���ܤȤ��ƿ����������� 1 �����ɬ�פ�����ޤ���subseq �᥽�åɤ�
-���������Ǥ�äƤ��ޤ����ޤ���from, to �Τɤ��餫�Ǥ� 0 �ʲ��ξ���
-�㳰��ȯ������褦�ˤʤäƤ��ޤ��ˡ�</p>
-<p>�����ޤǤν����� BioRuby ������ǻ�Ȱʲ��Τ褦�ˤʤ�ޤ���</p>
-<pre># ���ιԤ� seq = seq("atgcatgcaaaa") �Ǥ�褤
+<p>はどちらも seq の最初の3文字 atg を表示します。</p>
+<p>このように、String のメソッドを使う場合は、生物学で普通使用される 1 文字目を
+1 番目として数えた数字からは 1 を引く必要があります(subseq メソッドは
+これを内部でやっています。また、from, to のどちらかでも 0 以下の場合は
+例外が発生するようになっています)。</p>
+<p>ここまでの処理を BioRuby シェルで試すと以下のようになります。</p>
+<pre># 次の行は 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</pre>
-<p>window_search(window_size, step_size) �᥽�åɤ�Ȥ��ȡ�������Ф��ƥ���
-��ɥ��򤺤餷�ʤ��餽�줾�����ʬ������Ф��������Ԥ����Ȥ��Ǥ��ޤ���
-Ruby ����Ĺ�ΤҤȤĤǤ���֥֥�å��פˤ�äơ��֤��줾����Ф�������פ�
-�ʷ餫�����Ƥ˽񤯤��Ȥ���ǽ�Ǥ����ʲ�����Ǥϡ�subseq �Ȥ����ѿ�ˤ��줾��
-��ʬ������������ʤ���֥�å��򷫤��֤��¹Ԥ��뤳�Ȥˤʤ�ޤ���</p>
+<p>window_search(window_size, step_size) メソッドを使うと、配列に対してウィ
+ンドウをずらしながらそれぞれの部分配列に対する処理を行うことができます。
+Ruby の特長のひとつである「ブロック」によって、「それぞれに対する処理」を
+簡潔かつ明瞭に書くことが可能です。以下の例では、subseq という変数にそれぞれ
+部分配列を代入しながらブロックを繰り返し実行することになります。</p>
 <ul>
-<li><p>100 ���𤴤Ȥˡ�1���𤺤Ĥ��餷�ʤ����ʿ�� GC% ��׻�����ɽ������</p>
+<li><p>100 塩基ごとに(1塩基ずつずらしながら)平均 GC% を計算して表示する</p>
 <pre>seq.window_search(100) do |subseq|
   puts subseq.gc_percent
 end</pre></li>
 </ul>
-<p>�֥�å�����Ǽ��������ʬ����⡢����Ʊ�� Bio::Sequence::NA �ޤ��� 
-Bio::Sequence::AA ���饹�Υ��֥������ȤʤΤǡ����󥯥饹�λ������ƤΥ�
-���åɤ�¹Ԥ��뤳�Ȥ��Ǥ��ޤ���</p>
-<p>�ޤ��������ܤΰ���˰�ư������ꤹ�뤳�Ȥ������褦�ˤʤäƤ���Τǡ�</p>
+<p>ブロックの中で受け取る部分配列も、元と同じ Bio::Sequence::NA または 
+Bio::Sequence::AA クラスのオブジェクトなので、配列クラスの持つ全てのメ
+ソッドを実行することができます。</p>
+<p>また、2番目の引数に移動幅を指定することが出来るようになっているので、</p>
 <ul>
-<li><p>���ɥ�ñ�̤Ǥ��餷�ʤ��� 15 ����� 5 �Ĵ�Υڥץ��ɤ���������ɽ������</p>
+<li><p>コドン単位でずらしながら 15 塩基を 5 残基のペプチドに翻訳して表示する</p>
 <pre>seq.window_search(15, 3) do |subseq|
   puts subseq.translate
 end</pre></li>
 </ul>
-<p>�Ȥ��ä����Ȥ��Ǥ��ޤ�������˰�ư���������ʤ���ü����ʬ�����᥽�å�
-���Τ��֤��ͤȤ����᤹�褦�ˤʤäƤ���Τǡ�</p>
+<p>といったことができます。さらに移動幅に満たない右端の部分配列をメソッド
+自体の返り値として戻すようになっているので、</p>
 <ul>
-<li><p>���Υ������ 10000bp ���Ȥ˥֥��ڤ�ˤ��� FASTA �ե����ޥåȤ�������
-  ���ΤȤ���ü 1000bp �ϥ����С���åפ�����10000bp �������ʤ� 3' ü��
-  ���Ӽ�����ä�ɽ������</p>
+<li><p>ゲノム配列を 10000bp ごとにブツ切りにして FASTA フォーマットに整形、
+  このとき末端 1000bp はオーバーラップさせ、10000bp に満たない 3' 端は
+  別途受け取って表示する</p>
 <pre>i = 1
 remainder = seq.window_search(10000, 9000) do |subseq|
   puts subseq.to_fasta("segment #{i}", 60)
@@ -1125,68 +1035,68 @@ remainder = seq.window_search(10000, 9000) do |subseq|
 end
 puts remainder.to_fasta("segment #{i}", 60)</pre></li>
 </ul>
-<p>�Τ褦�ʻ�����ȴ�ñ�ˤǤ��ޤ���</p>
-<p>������ɥ������Ȱ�ư����Ʊ���ˤ���ȥ����С���åפ��ʤ�������ɥ�����
-�����Ǥ���Τǡ�</p>
+<p>のような事もわりと簡単にできます。</p>
+<p>ウィンドウの幅と移動幅を同じにするとオーバーラップしないウィンドウサー
+チができるので、</p>
 <ul>
-<li><p>���ɥ����٤����</p>
+<li><p>コドン頻度を数える</p>
 <pre>codon_usage = Hash.new(0)
 seq.window_search(3, 3) do |subseq|
   codon_usage[subseq] += 1
 end</pre></li>
-<li><p>10 �Ĵ𤺤�ʬ���̤�׻�</p>
+<li><p>10 残基ずつ分子量を計算</p>
 <pre>seq.window_search(10, 10) do |subseq|
   puts subseq.molecular_weight
 end</pre></li>
 </ul>
-<p>�Ȥ��ä����Ѥ�ͤ����ޤ���</p>
-<p>�ºݤˤ� Bio::Sequence::NA ���֥������Ȥϥե����뤫���ɤ߹����ʸ����
-�����������ꡢ�ǡ����١����������������Τ�Ȥä��ꤷ�ޤ������Ȥ��С�</p>
+<p>といった応用も考えられます。</p>
+<p>実際には Bio::Sequence::NA オブジェクトはファイルから読み込んだ文字列か
+ら生成したり、データベースから取得したものを使ったりします。たとえば、</p>
 <pre>#!/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</pre>
-<p>���Υץ����� na2aa.rb �Ȥ��ơ��ʲ��α�������</p>
+<p>このプログラムを na2aa.rb として、以下の塩基配列</p>
 <pre>gtggcgatctttccgaaagcgatgactggagcgaagaaccaaagcagtgacatttgtctg
 atgccgcacgtaggcctgataagacgcggacagcgtcgcatcaggcatcttgtgcaaatg
 tcggatgcggcgtga</pre>
-<p>��񤤤��ե����� my_naseq.txt ���ɤ߹�������������</p>
+<p>を書いたファイル my_naseq.txt を読み込んで翻訳すると</p>
 <pre>% ./na2aa.rb my_naseq.txt
 VAIFPKAMTGAKNQSSDICLMPHVGLIRRGQRRIRHLVQMSDAA*</pre>
-<p>�Τ褦�ˤʤ�ޤ������ʤߤˡ����Τ��餤����ʤ�û������ȣ��Ԥǽ񤱤ޤ���</p>
+<p>のようになります。ちなみに、このくらいの例なら短くすると1行で書けます。</p>
 <pre>% ruby -r bio -e 'p Bio::Sequence::NA.new($<.read).translate' my_naseq.txt</pre>
-<p>�����������������ե��������Τ����ݤʤΤǡ����ϥǡ����١�������ɬ�פ�
-�����������Ƥߤޤ���</p>
-<h2><a name="label-71" id="label-71">GenBank �Υѡ��� (Bio::GenBank ���饹)</a></h2><!-- RDLabel: "GenBank �Υѡ��� (Bio::GenBank ���饹)" -->
-<p>GenBank �����Υե�������Ѱդ��Ƥ��������ʼ긵�ˤʤ����ϡ�
-ftp://ftp.ncbi.nih.gov/genbank/ ���� .seq �ե�������������ɤ��ޤ��ˡ�</p>
+<p>しかし、いちいちファイルを作るのも面倒なので、次はデータベースから必要な
+情報を取得してみます。</p>
+<h2><a name="label-62" id="label-62">GenBank のパース (Bio::GenBank クラス)</a></h2><!-- RDLabel: "GenBank のパース (Bio::GenBank クラス)" -->
+<p>GenBank 形式のファイルを用意してください(手元にない場合は、
+ftp://ftp.ncbi.nih.gov/genbank/ から .seq ファイルをダウンロードします)。</p>
 <pre>% wget ftp://ftp.hgc.jp/pub/mirror/ncbi/genbank/gbphg.seq.gz
 % gunzip gbphg.seq.gz</pre>
-<p>�ޤ��ϡ��ƥ���ȥ꤫�� ID ������ʸ���������Ф��� FASTA �������Ѵ�����
-�ߤޤ��礦��</p>
-<p>Bio::GenBank::DELIMITER �� GenBank ���饹���������Ƥ������ǡ�
-�ǡ����١������Ȥ˰ۤʤ륨��ȥ�ζ��ڤ�ʸ���ʤ��Ȥ��� GenBank �ξ��� //��
-��Ф��Ƥ��ʤ��Ƥ��ɤ��褦�ˤʤäƤ��ޤ���</p>
+<p>まずは、各エントリから ID と説明文、配列を取り出して FASTA 形式に変換して
+みましょう。</p>
+<p>Bio::GenBank::DELIMITER は GenBank クラスで定義されている定数で、
+データベースごとに異なるエントリの区切り文字(たとえば GenBank の場合は //)
+を覚えていなくても良いようになっています。</p>
 <pre>#!/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</pre>
-<p>�����������ν����Ǥ� GenBank �ե�����Υǡ�����¤�˰�¸���Ƥ��ޤ���
-�ե����뤫��Υǡ������Ϥ򰷤����饹 Bio::FlatFile ����Ѥ��뤳�Ȥǡ�
-�ʲ��Τ褦�˶��ڤ�ʸ���ʤɤ򵤤ˤ����񤯤��Ȥ��Ǥ��ޤ���</p>
+<p>しかし、この書き方では GenBank ファイルのデータ構造に依存しています。
+ファイルからのデータ入力を扱うクラス Bio::FlatFile を使用することで、
+以下のように区切り文字などを気にせず書くことができます。</p>
 <pre>#!/usr/bin/env ruby
 
 require 'bio'
@@ -1196,7 +1106,7 @@ ff.each_entry do |gb|
   definition = "#{gb.accession} #{gb.definition}"
   puts gb.naseq.to_fasta(definition, 60)
 end</pre>
-<p>�����ΰ㤦�ǡ��������Ȥ���FASTA�ե����ޥåȤΥե�������ɤ߹���Ȥ��Ǥ⡢</p>
+<p>形式の違うデータ、たとえばFASTAフォーマットのファイルを読み込むときでも、</p>
 <pre>#!/usr/bin/env ruby
 
 require 'bio'
@@ -1207,8 +1117,8 @@ ff.each_entry do |f|
   puts "nalen      : " + f.nalen.to_s
   puts "naseq      : " + f.naseq
 end</pre>
-<p>�Τ褦�ˡ�Ʊ���褦�ʽ����ǺѤޤ����ޤ���</p>
-<p>����ˡ��� Bio::DB ���饹�� open �᥽�åɤ�Ʊ�ͤΤ��Ȥ��Ǥ��ޤ������Ȥ��С�</p>
+<p>のように、同じような書き方で済ませられます。</p>
+<p>さらに、各 Bio::DB クラスの open メソッドで同様のことができます。たとえば、</p>
 <pre>#!/usr/bin/env ruby
 
 require 'bio'
@@ -1218,117 +1128,117 @@ ff.each_entry do |gb|
   definition = "#{gb.accession} #{gb.definition}"
   puts gb.naseq.to_fasta(definition, 60)    
 end</pre>
-<p>�ʤɤȽ񤯤��Ȥ��Ǥ��ޤ��ʤ����������ν����Ϥ��ޤ�Ȥ��Ƥ��ޤ���)��</p>
-<p>���ˡ�GenBank ��ʣ���� FEATURES �����ѡ�������ɬ�פʾ������Ф��ޤ���
-�ޤ��� /tranlation="���ߥλ�����" �Ȥ��� Qualifier �����������
-���ߥλ��������Ф���ɽ�����Ƥߤޤ���</p>
+<p>などと書くことができます(ただし、この書き方はあまり使われていません)。</p>
+<p>次に、GenBank の複雑な FEATURES の中をパースして必要な情報を取り出します。
+まずは /tranlation="アミノ酸配列" という Qualifier がある場合だけ
+アミノ酸配列を抽出して表示してみます。</p>
 <pre>#!/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</pre>
-<p>����ˡ�Feature �Υݥ������˽񤫤�Ƥ�����󤫤饨��ȥ�α��������
-���ץ饤���󥰤������������������Τ� /translation= �˽񤫤�Ƥ��������
-ξ��ɽ��������٤Ƥߤޤ��礦��</p>
+<p>さらに、Feature のポジションに書かれている情報からエントリの塩基配列を
+スプライシングし、それを翻訳したものと /translation= に書かれていた配列を
+両方表示して比べてみましょう。</p>
 <pre>#!/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</pre>
-<p>�⤷�����Ѥ���Ƥ��륳�ɥ�ơ��֥뤬�ǥե���� (universal) �Ȱ�ä��ꡢ
-�ǽ�Υ��ɥ� "atg" �ʳ����ä��ꡢ����Υ����ƥ��󤬴ޤޤ�Ƥ����ꡢ
-���뤤�� BioRuby �˥Х�������С�������ɽ������룲�ĤΥ��ߥλ������
-�ۤʤ���ˤʤ�ޤ���</p>
-<p>������ǻ��Ѥ���Ƥ��� Bio::Sequence#splicing �᥽�åɤϡ�GenBank, EMBL,
-DDBJ �ե����ޥåȤǻȤ��Ƥ��� Location ��ɽ���򸵤ˡ��������󤫤�
-��ʬ������ڤ�Ф����Ϥʥ᥽�åɤǤ���</p>
-<p>���� splicing �᥽�åɤΰ���ˤ� GenBank ���� Location ��ʸ����ʳ���
-BioRuby �� Bio::Locations ���֥������Ȥ��Ϥ����Ȥ��ǽ�Ǥ�����
-�̾�ϸ�����Ƥ��� Location ʸ���������ʬ����䤹�������Τ�ޤ���
-Location ʸ����Υե����ޥåȤ� Bio::Locations �ˤĤ��ƾܤ����Τꤿ������ 
-BioRuby �� bio/location.rb �򸫤Ƥ���������</p>
+<p>もし、使用されているコドンテーブルがデフォルト (universal) と違ったり、
+最初のコドンが "atg" 以外だったり、セレノシステインが含まれていたり、
+あるいは BioRuby にバグがあれば、上の例で表示される2つのアミノ酸配列は
+異なる事になります。</p>
+<p>この例で使用されている Bio::Sequence#splicing メソッドは、GenBank, EMBL,
+DDBJ フォーマットで使われている Location の表記を元に、塩基配列から
+部分配列を切り出す強力なメソッドです。</p>
+<p>この splicing メソッドの引数には GenBank 等の Location の文字列以外に
+BioRuby の Bio::Locations オブジェクトを渡すことも可能ですが、
+通常は見慣れている Location 文字列の方が分かりやすいかも知れません。
+Location 文字列のフォーマットや Bio::Locations について詳しく知りたい場合は 
+BioRuby の bio/location.rb を見てください。</p>
 <ul>
-<li><p>GenBank �����Υǡ����� Feature �ǻȤ��Ƥ��� Location ʸ�������</p>
+<li><p>GenBank 形式のデータの Feature で使われていた Location 文字列の例</p>
 <pre>naseq.splicing('join(2035..2050,complement(1775..1818),13..345')</pre></li>
-<li><p>���餫���� Locations ���֥������Ȥ��Ѵ����Ƥ����Ϥ��Ƥ�褤</p>
+<li><p>あらかじめ Locations オブジェクトに変換してから渡してもよい</p>
 <pre>locs = Bio::Locations.new('join((8298.8300)..10206,1..855)')
 naseq.splicing(locs)</pre></li>
 </ul>
-<p>���ʤߤˡ����ߥλ����� (Bio::Sequence::AA) �ˤĤ��Ƥ� splicing �᥽�å�
-����Ѥ�����ʬ�������Ф����Ȥ���ǽ�Ǥ���</p>
+<p>ちなみに、アミノ酸配列 (Bio::Sequence::AA) についても splicing メソッド
+を使用して部分配列を取り出すことが可能です。</p>
 <ul>
-<li><p>���ߥλ��������ʬ������ڤ�Ф��ʥ����ʥ�ڥץ��ɤʤɡ�</p>
+<li><p>アミノ酸配列の部分配列を切り出す(シグナルペプチドなど)</p>
 <pre>aaseq.splicing('21..119')</pre></li>
 </ul>
-<h3><a name="label-72" id="label-72">GenBank �ʳ��Υǡ����١���</a></h3><!-- RDLabel: "GenBank �ʳ��Υǡ����١���" -->
-<p>BioRuby �Ǥϡ�GenBank �ʳ��Υǡ����١����ˤĤ��Ƥ����Ū�ʰ�������Ʊ���ǡ�
-�ǡ����١����Σ�����ȥ�ʬ��ʸ������б�����ǡ����١����Υ��饹���Ϥ��С�
-�ѡ������줿��̤����֥������Ȥˤʤä��֤äƤ��ޤ���</p>
-<p>�ǡ����١����Υե�åȥե����뤫�飱����ȥꤺ�ļ��Ф��ƥѡ������줿
-���֥������Ȥ���Ф��ˤϡ���ˤ�ФƤ��� Bio::FlatFile ��Ȥ��ޤ���
-Bio::FlatFile.new �ΰ���ˤϥǡ����١������б����� BioRuby �ǤΥ��饹
-̾ (Bio::GenBank �� Bio::KEGG::GENES �ʤ�) ����ꤷ�ޤ���</p>
-<pre>ff = Bio::FlatFile.new(Bio::�ǡ����١������饹̾, ARGF)</pre>
-<p>�����������Ф餷�����Ȥˡ��¤� FlatFile ���饹�ϥǡ����١����μ�ưǧ����
-�Ǥ��ޤ��Τǡ�</p>
+<h3><a name="label-63" id="label-63">GenBank 以外のデータベース</a></h3><!-- RDLabel: "GenBank 以外のデータベース" -->
+<p>BioRuby では、GenBank 以外のデータベースについても基本的な扱い方は同じで、
+データベースの1エントリ分の文字列を対応するデータベースのクラスに渡せば、
+パースされた結果がオブジェクトになって返ってきます。</p>
+<p>データベースのフラットファイルから1エントリずつ取り出してパースされた
+オブジェクトを取り出すには、先にも出てきた Bio::FlatFile を使います。
+Bio::FlatFile.new の引数にはデータベースに対応する BioRuby でのクラス
+名 (Bio::GenBank や Bio::KEGG::GENES など) を指定します。</p>
+<pre>ff = Bio::FlatFile.new(Bio::データベースクラス名, ARGF)</pre>
+<p>しかし、すばらしいことに、実は FlatFile クラスはデータベースの自動認識が
+できますので、</p>
 <pre>ff = Bio::FlatFile.auto(ARGF)</pre>
-<p>��Ȥ��Τ����ִ�ñ�Ǥ���</p>
+<p>を使うのが一番簡単です。</p>
 <pre>#!/usr/bin/env ruby
 
 require 'bio'
@@ -1336,237 +1246,237 @@ 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</pre>
-<p>����ˡ��������ǡ����١������Ĥ�˺���ʤ�������ˤ� Ruby �Υ֥�å���
-���Ѥ��ưʲ��Τ褦�˽񤯤Τ��褤�Ǥ��礦��</p>
+<p>さらに、開いたデータベースの閉じ忘れをなくすためには Ruby のブロックを
+活用して以下のように書くのがよいでしょう。</p>
 <pre>#!/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</pre>
-<p>�ѡ������줿���֥������Ȥ��顢����ȥ���Τ��줾�����ʬ����Ф������
-�᥽�åɤϥǡ����١�����˰ۤʤ�ޤ����褯������ܤˤĤ��Ƥ�</p>
+<p>パースされたオブジェクトから、エントリ中のそれぞれの部分を取り出すための
+メソッドはデータベース毎に異なります。よくある項目については</p>
 <ul>
-<li>entry_id �᥽�å� �� ����ȥ�� ID �ֹ椬�֤�</li>
-<li>definition �᥽�å� �� ����ȥ������Ԥ��֤�</li>
-<li>reference �᥽�å� �� ��ե���󥹥��֥������Ȥ��֤�</li>
-<li>organism �᥽�å� �� ��ʪ��̾</li>
-<li>seq �� naseq �� aaseq �᥽�å� �� �б��������󥪥֥������Ȥ��֤�</li>
+<li>entry_id メソッド → エントリの ID 番号が返る</li>
+<li>definition メソッド → エントリの定義行が返る</li>
+<li>reference メソッド → リファレンスオブジェクトが返る</li>
+<li>organism メソッド → 生物種名</li>
+<li>seq や naseq や aaseq メソッド → 対応する配列オブジェクトが返る</li>
 </ul>
-<p>�ʤɤΤ褦�˶��̲����褦�Ȥ��Ƥ��ޤ��������ƤΥ᥽�åɤ���������Ƥ����
-���ǤϤ���ޤ���ʶ��̲��λؿˤ� bio/db.rb ���ȡˡ��ޤ����٤�����ʬ�ϳ�
-�ǡ����١����ѡ�����˰ۤʤ�Τǡ����줾��Υɥ�����Ȥ˽����ޤ���</p>
-<p>��§�Ȥ��ơ��᥽�å�̾��ʣ����ξ��ϡ����֥������Ȥ�����Ȥ����֤�ޤ���
-���Ȥ��� references �᥽�åɤ���ĥ��饹��ʣ��� Bio::Reference ���֥���
-���Ȥ� Array �ˤ����֤��ޤ������̤Υ��饹�Ǥ�ñ����� reference �᥽�å�
-�����ʤ������Ĥ� Bio::Reference ���֥������Ȥ������֤����Ȥ��ä������Ǥ���</p>
-<h2><a name="label-73" id="label-73">PDB �Υѡ��� (Bio::PDB ���饹)</a></h2><!-- RDLabel: "PDB �Υѡ��� (Bio::PDB ���饹)" -->
-<p>Bio::PDB �ϡ�PDB �������ɤ߹��ि��Υ��饹�Ǥ���PDB �ǡ����١�����
-PDB, mmCIF, XML (PDBML) �Σ�����Υե����ޥåȤ��󶡤���Ƥ��ޤ�����
-�����Τ��� BioRuby ���б����Ƥ���Τ� PDB �ե����ޥåȤǤ���</p>
-<p>PDB �ե����ޥåȤλ��ͤϡ��ʲ��� Protein Data Bank Contents Guide ��
-���Ȥ��Ƥ���������</p>
+<p>などのように共通化しようとしていますが、全てのメソッドが実装されているわ
+けではありません(共通化の指針は bio/db.rb 参照)。また、細かい部分は各
+データベースパーザ毎に異なるので、それぞれのドキュメントに従います。</p>
+<p>原則として、メソッド名が複数形の場合は、オブジェクトが配列として返ります。
+たとえば references メソッドを持つクラスは複数の Bio::Reference オブジェ
+クトを Array にして返しますが、別のクラスでは単数形の reference メソッド
+しかなく、1つの Bio::Reference オブジェクトだけを返す、といった感じです。</p>
+<h2><a name="label-64" id="label-64">PDB のパース (Bio::PDB クラス)</a></h2><!-- RDLabel: "PDB のパース (Bio::PDB クラス)" -->
+<p>Bio::PDB は、PDB 形式を読み込むためのクラスです。PDB データベースは
+PDB, mmCIF, XML (PDBML) の3種類のフォーマットで提供されていますが、
+これらのうち BioRuby で対応しているのは PDB フォーマットです。</p>
+<p>PDB フォーマットの仕様は、以下の Protein Data Bank Contents Guide を
+参照してください。</p>
 <ul>
 <li><a href="http://www.rcsb.org/pdb/file_formats/pdb/pdbguide2.2/guide2.2_frame.html"><URL:http://www.rcsb.org/pdb/file_formats/pdb/pdbguide2.2/guide2.2_frame.html></a></li>
 </ul>
-<h3><a name="label-74" id="label-74">PDB �ǡ������ɤ߹���</a></h3><!-- RDLabel: "PDB �ǡ������ɤ߹���" -->
-<p>PDB �Σ�����ȥ꤬ 1bl8.pdb �Ȥ����ե�����˳�Ǽ����Ƥ�����ϡ�
-Ruby �Υե������ɤ߹��ߵ�ǽ��Ȥä�</p>
+<h3><a name="label-65" id="label-65">PDB データの読み込み</a></h3><!-- RDLabel: "PDB データの読み込み" -->
+<p>PDB の1エントリが 1bl8.pdb というファイルに格納されている場合は、
+Ruby のファイル読み込み機能を使って</p>
 <pre>entry = File.read("1bl8.pdb")</pre>
-<p>�Τ褦�ˤ��뤳�Ȥǡ�����ȥ�����Ƥ�ʸ����Ȥ��� entry �Ȥ����ѿ��
-�������뤳�Ȥ��Ǥ��ޤ�������ȥ�����Ƥ�ѡ�������ˤ�</p>
+<p>のようにすることで、エントリの内容を文字列として entry という変数に
+代入することができます。エントリの内容をパースするには</p>
 <pre>pdb = Bio::PDB.new(entry)</pre>
-<p>�Ȥ��ޤ�������ǥ���ȥ꤬ Bio::PDB ���֥������ȤȤʤꡢǤ�դΥǡ�����
-���Ф���褦�ˤʤ�ޤ���</p>
-<p>PDB �ե����ޥåȤ� Bio::FlatFile �ˤ�뼫ưǧ�����ǽ�Ǥ��������ߤ�
-���ե������ʣ����ȥ��ޤ���ˤ��б����Ƥ��ޤ���
-Bio::FlatFile ��Ȥäƣ�����ȥ�ʬ�����ɤ߹���ˤϡ�</p>
+<p>とします。これでエントリが Bio::PDB オブジェクトとなり、任意のデータを
+取り出せるようになります。</p>
+<p>PDB フォーマットは Bio::FlatFile による自動認識も可能ですが、現在は
+1ファイルに複数エントリを含む場合には対応していません。
+Bio::FlatFile を使って1エントリ分だけ読み込むには、</p>
 <pre>pdb = Bio::FlatFile.auto("1bl8.pdb") { |ff| ff.next_entry }</pre>
-<p>�Ȥ��ޤ����ɤ������ˡ�Ǥ��ѿ� pdb �ˤ�Ʊ����̤������ޤ���</p>
-<h3><a name="label-75" id="label-75">���֥������Ȥγ��ع�¤</a></h3><!-- RDLabel: "���֥������Ȥγ��ع�¤" -->
-<p>�� PDB ����ȥ�ϡ��ѿ����ʸ������ʤ� ID ���դ����Ƥ��ޤ���
-Bio::PDB ���֥������Ȥ��� ID ����Ф��ˤ� entry_id �᥽�åɤ�Ȥ��ޤ���</p>
+<p>とします。どちらの方法でも変数 pdb には同じ結果が得られます。</p>
+<h3><a name="label-66" id="label-66">オブジェクトの階層構造</a></h3><!-- RDLabel: "オブジェクトの階層構造" -->
+<p>各 PDB エントリは、英数字4文字からなる ID が付けられています。
+Bio::PDB オブジェクトから ID を取リ出すには entry_id メソッドを使います。</p>
 <pre>p pdb.entry_id   # => "1BL8"</pre>
-<p>����ȥ�γ��פ˴ؤ��������б�����᥽�åɤǼ��Ф����Ȥ��Ǥ��ޤ���</p>
+<p>エントリの概要に関する情報も対応するメソッドで取り出すことができます。</p>
 <pre>p pdb.definition # => "POTASSIUM CHANNEL (KCSA) FROM STREPTOMYCES LIVIDANS"
 p pdb.keywords   # => ["POTASSIUM CHANNEL", "INTEGRAL MEMBRANE PROTEIN"]</pre>
-<p>¾�ˡ���Ͽ�Ԥ�ʸ�����¸���ˡ�ʤɤξ��������Ǥ��ޤ��ʤ��줾��
-authors, jrnl, method �᥽�åɡˡ�</p>
-<p>PDB �ǡ����ϡ�����Ū�ˤϣ��Ԥ����ĤΥ쥳���ɤ�������Ƥ��ޤ���
-���Ԥ����꤭��ʤ��ǡ�����ʣ��Ԥ˳�Ǽ���� continuation �Ȥ���
-���Ȥߤ��Ѱդ���Ƥ��ޤ��������ܤϣ��ԣ��쥳���ɤǤ���</p>
-<p>�ƹԤ���Ƭ��ʸ�������ιԤΥǡ����μ���򼨤�̾���ʥ쥳���ɡˤˤʤ�ޤ���
-BioRuby �Ǥϡ�HEADER �쥳���ɤ��Ф��Ƥ� Bio::PDB::Record::HEADER ���饹��
-TITLE �쥳���ɤ��Ф��Ƥ� Bio::PDB::Record::TITLE ���饹���Ȥ����褦��
-����Ū�ˤϳƥ쥳���ɤ��б����륯�饹�򣱤��Ѱդ��Ƥ��ޤ���
-��������REMARK �� JRNL �쥳���ɤ˴ؤ��Ƥϡ����줾��ʣ��Υե����ޥåȤ�
-¸�ߤ��뤿�ᡢʣ��Υ��饹���Ѱդ��Ƥ��ޤ���</p>
-<p>�ƥ쥳���ɤ˥������������äȤ�ñ�����ˡ�� record �᥽�åɤǤ���</p>
+<p>他に、登録者や文献、実験方法などの情報も取得できます(それぞれ
+authors, jrnl, method メソッド)。</p>
+<p>PDB データは、基本的には1行が1つのレコードを形成しています。
+1行に入りきらないデータを複数行に格納する continuation という
+仕組みも用意されていますが、基本は1行1レコードです。</p>
+<p>各行の先頭6文字がその行のデータの種類を示す名前(レコード)になります。
+BioRuby では、HEADER レコードに対しては Bio::PDB::Record::HEADER クラス、
+TITLE レコードに対しては Bio::PDB::Record::TITLE クラス、というように
+基本的には各レコードに対応するクラスを1つ用意しています。
+ただし、REMARK と JRNL レコードに関しては、それぞれ複数のフォーマットが
+存在するため、複数のクラスを用意しています。</p>
+<p>各レコードにアクセスするもっとも単純な方法は record メソッドです。</p>
 <pre>pdb.record("HELIX")</pre>
-<p>�Τ褦�ˤ���ȡ����� PDB ����ȥ�˴ޤޤ�����Ƥ� HELIX �쥳���ɤ�
-Bio::PDB::Record::HELIX ���饹�Υ��֥������Ȥ�����Ȥ��Ƽ����Ǥ��ޤ���</p>
-<p>���Τ��Ȥ�դޤ����ʲ��Ǥϡ�PDB ����ȥ�Υᥤ������ƤǤ���Ω�ι�¤��
-�ؤ���ǡ�����¤�ΰ������򸫤Ƥ����ޤ���</p>
-<h4><a name="label-76" id="label-76">����: Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM ���饹</a></h4><!-- RDLabel: "����: Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM ���饹" -->
-<p>PDB ����ȥ�ϡ�����ѥ������˻���DNA,RNA�ˤ䤽��¾��ʬ�Ҥ�Ω�ι�¤��
-����Ū�ˤϸ��ҤΣ�������ɸ��ޤ�Ǥ��ޤ���</p>
-<p>����ѥ����ޤ��ϳ˻��θ��Ҥκ�ɸ�ϡ�ATOM �쥳���ɤ˳�Ǽ����Ƥ��ޤ���
-�б����륯�饹�ϡ�Bio::PDB::Record::ATOM ���饹�Ǥ���</p>
-<p>����ѥ������˻��ʳ��θ��Ҥκ�ɸ�ϡ�HETATM �쥳���ɤ˳�Ǽ����Ƥ��ޤ���
-�б����륯�饹�ϡ�Bio::PDB::Record::HETATM ���饹�Ǥ���</p>
-<p>HETATM�����饹�� ATOM ���饹��Ѿ����Ƥ��뤿�ᡢATOM �� HETATM ��
-�᥽�åɤλȤ����Ϥޤä���Ʊ���Ǥ���</p>
-<h4><a name="label-77" id="label-77">���ߥλ��Ĵ�ʤޤ��ϱ����: Bio::PDB::Residue ���饹</a></h4><!-- RDLabel: "���ߥλ��Ĵ�ʤޤ��ϱ����: Bio::PDB::Residue ���饹" -->
-<p>�����ߥλ��ޤ��ϣ�����ñ�̤Ǹ��Ҥ�ޤȤ᤿�Τ� Bio::PDB::Residue �Ǥ���
-Bio::PDB::Residue ���֥������Ȥϡ����İʾ�� Bio::PDB::Record::ATOM
-���֥������Ȥ�ޤߤޤ���</p>
-<h4><a name="label-78" id="label-78">����ʪ: Bio::PDB::Heterogen ���饹</a></h4><!-- RDLabel: "����ʪ: Bio::PDB::Heterogen ���饹" -->
-<p>����ѥ������˻��ʳ���ʬ�Ҥθ��Ҥϡ�����Ū�ˤ�ʬ��ñ�̤�
-Bio::PDB::Heterogen �ˤޤȤ���Ƥ��ޤ���
-Bio::PDB::Heterogen ���֥������Ȥϡ����İʾ��
-Bio::PDB::Record::HETATM ���֥������Ȥ�ޤߤޤ���</p>
-<h4><a name="label-79" id="label-79">���ʥ��������: Bio::PDB::Chain ���饹</a></h4><!-- RDLabel: "���ʥ��������: Bio::PDB::Chain ���饹" -->
-<p>Bio::PDB::Chain �ϡ�ʣ��� Bio::PDB::Residue ���֥������Ȥ���ʤ�
-���ĤΥ���ѥ����ޤ��ϳ˻��ȡ�ʣ��� Bio::PDB::Heterogen ���֥�������
-����ʤ룱�İʾ�Τ���ʳ���ʬ�Ҥ��Ǽ����ǡ�����¤�Ǥ���</p>
-<p>�ʤ�����Ⱦ�ξ��ϡ�����ѥ������˻���Bio::PDB::Residue�ˤ���
-����ʳ���ʬ�ҡ�Bio::PDB::Heterogen�ˤΤɤ��餫����ष�������ޤ���
-Chain ��ҤȤĤ����ޤޤʤ� PDB ����ȥ�Ǥ�ξ�����ľ�礬����褦�Ǥ���</p>
-<p>�� Chain �ˤϡ��ѿ����ʸ���� ID ���դ��Ƥ��ޤ���Chain ��ҤȤĤ���
-�ޤޤʤ� PDB ����ȥ�ξ��϶���ʸ���ΤȤ��⤢��ޤ��ˡ�</p>
-<h4><a name="label-80" id="label-80">��ǥ�: Bio::PDB::Model</a></h4><!-- RDLabel: "��ǥ�: Bio::PDB::Model" -->
-<p>���İʾ�� Bio::PDB::Chain �����ޤä���Τ� Bio::PDB::Model �Ǥ���
-�����뾽��¤�ξ�硢Model ���̾�Ĥ����Ǥ�����NMR ��¤�ξ�硢
-ʣ��� Model ��¸�ߤ��뤳�Ȥ�����ޤ���
-ʣ��� Model ��¸�ߤ����硢�� Model �ˤϥ��ꥢ���ֹ椬�դ��ޤ���</p>
-<p>�����ơ����İʾ�� Model �����ޤä���Τ���Bio::PDB ���֥������Ȥˤʤ�ޤ���</p>
-<h3><a name="label-81" id="label-81">���Ҥ˥�����������᥽�å�</a></h3><!-- RDLabel: "���Ҥ˥�����������᥽�å�" -->
-<p>Bio::PDB#each_atom �����Ƥ� ATOM ����֤ˣ��Ĥ���é�륤�ƥ졼���Ǥ���</p>
+<p>のようにすると、その PDB エントリに含まれる全ての HELIX レコードを
+Bio::PDB::Record::HELIX クラスのオブジェクトの配列として取得できます。</p>
+<p>このことをふまえ、以下では、PDB エントリのメインな内容である立体構造に
+関するデータ構造の扱い方を見ていきます。</p>
+<h4><a name="label-67" id="label-67">原子: Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM クラス</a></h4><!-- RDLabel: "原子: Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM クラス" -->
+<p>PDB エントリは、タンパク質、核酸(DNA,RNA)やその他の分子の立体構造、
+具体的には原子の3次元座標を含んでいます。</p>
+<p>タンパク質または核酸の原子の座標は、ATOM レコードに格納されています。
+対応するクラスは、Bio::PDB::Record::ATOM クラスです。</p>
+<p>タンパク質・核酸以外の原子の座標は、HETATM レコードに格納されています。
+対応するクラスは、Bio::PDB::Record::HETATM クラスです。</p>
+<p>HETATM クラスは ATOM クラスを継承しているため、ATOM と HETATM の
+メソッドの使い方はまったく同じです。</p>
+<h4><a name="label-68" id="label-68">アミノ酸残基(または塩基): Bio::PDB::Residue クラス</a></h4><!-- RDLabel: "アミノ酸残基(または塩基): Bio::PDB::Residue クラス" -->
+<p>1アミノ酸または1塩基単位で原子をまとめたのが Bio::PDB::Residue です。
+Bio::PDB::Residue オブジェクトは、1個以上の Bio::PDB::Record::ATOM
+オブジェクトを含みます。</p>
+<h4><a name="label-69" id="label-69">化合物: Bio::PDB::Heterogen クラス</a></h4><!-- RDLabel: "化合物: Bio::PDB::Heterogen クラス" -->
+<p>タンパク質・核酸以外の分子の原子は、基本的には分子単位で
+Bio::PDB::Heterogen にまとめられています。
+Bio::PDB::Heterogen オブジェクトは、1個以上の
+Bio::PDB::Record::HETATM オブジェクトを含みます。</p>
+<h4><a name="label-70" id="label-70">鎖(チェイン): Bio::PDB::Chain クラス</a></h4><!-- RDLabel: "鎖(チェイン): Bio::PDB::Chain クラス" -->
+<p>Bio::PDB::Chain は、複数の Bio::PDB::Residue オブジェクトからなる
+1個のタンパク質または核酸と、複数の Bio::PDB::Heterogen オブジェクト
+からなる1個以上のそれ以外の分子を格納するデータ構造です。</p>
+<p>なお、大半の場合は、タンパク質・核酸(Bio::PDB::Residue)か、
+それ以外の分子(Bio::PDB::Heterogen)のどちらか一種類しか持ちません。
+Chain をひとつしか含まない PDB エントリでは両方持つ場合があるようです。</p>
+<p>各 Chain には、英数字1文字の ID が付いています(Chain をひとつしか
+含まない PDB エントリの場合は空白文字のときもあります)。</p>
+<h4><a name="label-71" id="label-71">モデル: Bio::PDB::Model</a></h4><!-- RDLabel: "モデル: Bio::PDB::Model" -->
+<p>1個以上の Bio::PDB::Chain が集まったものが Bio::PDB::Model です。
+X線結晶構造の場合、Model は通常1個だけですが、NMR 構造の場合、
+複数の Model が存在することがあります。
+複数の Model が存在する場合、各 Model にはシリアル番号が付きます。</p>
+<p>そして、1個以上の Model が集まったものが、Bio::PDB オブジェクトになります。</p>
+<h3><a name="label-72" id="label-72">原子にアクセスするメソッド</a></h3><!-- RDLabel: "原子にアクセスするメソッド" -->
+<p>Bio::PDB#each_atom は全ての ATOM を順番に1個ずつ辿るイテレータです。</p>
 <pre>pdb.each_atom do |atom|
   p atom.xyz
 end</pre>
-<p>���� each_atom �᥽�åɤ� Model, Chain, Residue ���֥������Ȥ��Ф��Ƥ�
-���Ѥ��뤳�Ȥ��Ǥ������줾�졢���� Model, Chain, Residue ����Τ��٤Ƥ�
-ATOM �򤿤ɤ륤�ƥ졼���Ȥ���Ư���ޤ���</p>
-<p>Bio::PDB#atoms �����Ƥ� ATOM ������Ȥ����֤��᥽�åɤǤ���</p>
-<pre>p pdb.atoms.size        # => 2820 �Ĥ� ATOM ���ޤޤ�뤳�Ȥ��狼��</pre>
-<p>each_atom ��Ʊ�ͤ� atoms �᥽�åɤ� Model, Chain, Residue ���֥�������
-���Ф��ƻ��Ѳ�ǽ�Ǥ���</p>
+<p>この each_atom メソッドは Model, Chain, Residue オブジェクトに対しても
+使用することができ、それぞれ、その Model, Chain, Residue 内部のすべての
+ATOM をたどるイテレータとして働きます。</p>
+<p>Bio::PDB#atoms は全ての ATOM を配列として返すメソッドです。</p>
+<pre>p pdb.atoms.size        # => 2820 個の ATOM が含まれることがわかる</pre>
+<p>each_atom と同様に atoms メソッドも Model, Chain, Residue オブジェクト
+に対して使用可能です。</p>
 <pre>pdb.chains.each do |chain|
-  p chain.atoms.size    # => �� Chain ��� ATOM ��ɽ�������
+  p chain.atoms.size    # => 各 Chain 毎の ATOM 数が表示される
 end</pre>
-<p>Bio::PDB#each_hetatm �ϡ����Ƥ� HETATM ����֤ˣ��Ĥ���é�륤�ƥ졼���Ǥ���</p>
+<p>Bio::PDB#each_hetatm は、全ての HETATM を順番に1個ずつ辿るイテレータです。</p>
 <pre>pdb.each_hetatm do |hetatm|
   p hetatm.xyz
 end</pre>
-<p>Bio::PDB#hetatms ���Ƥ� HETATM ������Ȥ����֤��Τ� hetatms �᥽�åɤǤ���</p>
+<p>Bio::PDB#hetatms 全ての HETATM を配列として返すのは hetatms メソッドです。</p>
 <pre>p pdb.hetatms.size</pre>
-<p>������ atoms �ξ���Ʊ�ͤˡ�Model, Chain, Heterogen ���֥������Ȥ�
-�Ф��ƻ��Ѳ�ǽ�Ǥ���</p>
-<h4><a name="label-82" id="label-82">Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM ���饹�λȤ���</a></h4><!-- RDLabel: "Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM ���饹�λȤ���" -->
-<p>ATOM �ϥ���ѥ������˻���DNA��RNA�ˤ������븶�ҡ�HETATM �Ϥ���ʳ���
-���Ҥ��Ǽ���뤿��Υ��饹�Ǥ�����HETATM �� ATOM ���饹��Ѿ����Ƥ��뤿��
-�����Υ��饹�ǥ᥽�åɤλȤ����Ϥޤä���Ʊ���Ǥ���</p>
-<pre>p atom.serial       # ���ꥢ���ֹ�
-p atom.name         # ̾��
+<p>これらも atoms の場合と同様に、Model, Chain, Heterogen オブジェクトに
+対して使用可能です。</p>
+<h4><a name="label-73" id="label-73">Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM クラスの使い方</a></h4><!-- RDLabel: "Bio::PDB::Record::ATOM, Bio::PDB::Record::HETATM クラスの使い方" -->
+<p>ATOM はタンパク質・核酸(DNA・RNA)を構成する原子、HETATM はそれ以外の
+原子を格納するためのクラスですが、HETATM が ATOM クラスを継承しているため
+これらのクラスでメソッドの使い方はまったく同じです。</p>
+<pre>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</pre>
-<p>�����Υ᥽�å�̾�ϡ���§�Ȥ��� Protein Data Bank Contents Guide ��
-���ܤ˹�碌�Ƥ��ޤ����᥽�å�̾�� resName �� resSeq �Ȥ��ä���̾ˡ
-��CamelCase�ˤ���Ѥ��Ƥ���ΤϤ��Τ���Ǥ���
-���줾��Υ᥽�åɤ��֤��ǡ����ΰ�̣�ϡ����ͽ�򻲹ͤˤ��Ƥ���������</p>
-<p>����¾�ˤ⡢�����Ĥ��������ʥ᥽�åɤ��Ѱդ��Ƥ��ޤ���
-xyz �᥽�åɤϡ���ɸ�򣳼����Υ٥��ȥ�Ȥ����֤��᥽�åɤǤ���
-���Υ᥽�åɤϡ�Ruby �� Vector ���饹��Ѿ����ƣ������Υ٥��ȥ��
-�ò������� Bio::PDB::Coordinate ���饹�Υ��֥������Ȥ��֤��ޤ�
-����: Vector��Ѿ��������饹���������ΤϤ��ޤ�侩����ʤ��褦�ʤΤǡ�
-���衢Vector���饹�Υ��֥������Ȥ��֤��褦�����ѹ����뤫�⤷��ޤ���ˡ�</p>
+<p>これらのメソッド名は、原則として Protein Data Bank Contents Guide の
+記載に合わせています。メソッド名に resName や resSeq といった記名法
+(CamelCase)を採用しているのはこのためです。
+それぞれのメソッドの返すデータの意味は、仕様書を参考にしてください。</p>
+<p>この他にも、いくつかの便利なメソッドを用意しています。
+xyz メソッドは、座標を3次元のベクトルとして返すメソッドです。
+このメソッドは、Ruby の Vector クラスを継承して3次元のベクトルに
+特化させた Bio::PDB::Coordinate クラスのオブジェクトを返します
+(注: Vectorを継承したクラスを作成するのはあまり推奨されないようなので、
+将来、Vectorクラスのオブジェクトを返すよう仕様変更するかもしれません)。</p>
 <pre>p atom.xyz</pre>
-<p>�٥��ȥ�ʤΤǡ�­�����������������Ѥʤɤ���뤳�Ȥ��Ǥ��ޤ���</p>
-<pre># ���Ҵ֤ε�Υ�����
-p (atom1.xyz - atom2.xyz).r  # r �ϥ٥��ȥ�������ͤ����᥽�å�
+<p>ベクトルなので、足し算、引き算、内積などを求めることができます。</p>
+<pre># 原子間の距離を求める
+p (atom1.xyz - atom2.xyz).r  # r はベクトルの絶対値を求めるメソッド
 
-# ���Ѥ����
+# 内積を求める
 p atom1.xyz.inner_product(atom2.xyz)</pre>
-<p>¾�ˤϡ����θ��Ҥ��б����� TER, SIGATM, ANISOU �쥳���ɤ��������
-ter, sigatm, anisou �᥽�åɤ��Ѱդ���Ƥ��ޤ���</p>
-<h3><a name="label-83" id="label-83">���ߥλ��Ĵ� (Residue) �˥�����������᥽�å�</a></h3><!-- RDLabel: "���ߥλ��Ĵ� (Residue) �˥�����������᥽�å�" -->
-<p>Bio::PDB#each_residue �ϡ����Ƥ� Residue ����֤�é�륤�ƥ졼���Ǥ���
-each_residue �᥽�åɤϡ�Model, Chain ���֥������Ȥ��Ф��Ƥ�
-���Ѥ��뤳�Ȥ��Ǥ������줾��� Model, Chain �˴ޤޤ�����Ƥ�
-Residue ��é�륤�ƥ졼���Ȥ���Ư���ޤ���</p>
+<p>他には、その原子に対応する TER, SIGATM, ANISOU レコードを取得する
+ter, sigatm, anisou メソッドも用意されています。</p>
+<h3><a name="label-74" id="label-74">アミノ酸残基 (Residue) にアクセスするメソッド</a></h3><!-- RDLabel: "アミノ酸残基 (Residue) にアクセスするメソッド" -->
+<p>Bio::PDB#each_residue は、全ての Residue を順番に辿るイテレータです。
+each_residue メソッドは、Model, Chain オブジェクトに対しても
+使用することができ、それぞれの Model, Chain に含まれる全ての
+Residue を辿るイテレータとして働きます。</p>
 <pre>pdb.each_residue do |residue|
   p residue.resName
 end</pre>
-<p>Bio::PDB#residues �ϡ����Ƥ� Residue ������Ȥ����֤��᥽�åɤǤ���
-each_residue ��Ʊ�ͤˡ�Model, Chain ���֥������Ȥ��Ф��Ƥ���Ѳ�ǽ�Ǥ���</p>
+<p>Bio::PDB#residues は、全ての Residue を配列として返すメソッドです。
+each_residue と同様に、Model, Chain オブジェクトに対しても使用可能です。</p>
 <pre>p pdb.residues.size</pre>
-<h3><a name="label-84" id="label-84">����ʪ (Heterogen) �˥�����������᥽�å�</a></h3><!-- RDLabel: "����ʪ (Heterogen) �˥�����������᥽�å�" -->
-<p>Bio::PDB#each_heterogen �����Ƥ� Heterogen ����֤ˤ��ɤ륤�ƥ졼����
-Bio::PDB#heterogens �����Ƥ� Heterogen ������Ȥ����֤��᥽�åɤǤ���</p>
+<h3><a name="label-75" id="label-75">化合物 (Heterogen) にアクセスするメソッド</a></h3><!-- RDLabel: "化合物 (Heterogen) にアクセスするメソッド" -->
+<p>Bio::PDB#each_heterogen は全ての Heterogen を順番にたどるイテレータ、
+Bio::PDB#heterogens は全ての Heterogen を配列として返すメソッドです。</p>
 <pre>pdb.each_heterogen do |heterogeon|
   p heterogen.resName
 end
 
 p pdb.heterogens.size</pre>
-<p>�����Υ᥽�åɤ� Residue ��Ʊ�ͤ� Model, Chain ���֥������Ȥ��Ф��Ƥ�
-���Ѳ�ǽ�Ǥ���</p>
-<h3><a name="label-85" id="label-85">Chain, Model �˥�����������᥽�å�</a></h3><!-- RDLabel: "Chain, Model �˥�����������᥽�å�" -->
-<p>Ʊ�ͤˡ�Bio::PDB#each_chain �����Ƥ� Chain ����֤ˤ��ɤ륤�ƥ졼����
-Bio::PDB#chains �����Ƥ� Chain ������Ȥ����֤��᥽�åɤǤ���
-�����Υ᥽�åɤ� Model ���֥������Ȥ��Ф��Ƥ���Ѳ�ǽ�Ǥ���</p>
-<p>Bio::PDB#each_model �����Ƥ� Model ����֤ˤ��ɤ륤�ƥ졼����
-Bio::PDB#models �����Ƥ� Model ������Ȥ����֤��᥽�åɤǤ���</p>
-<h3><a name="label-86" id="label-86">PDB Chemical Component Dictionary �Υǡ������ɤ߹���</a></h3><!-- RDLabel: "PDB Chemical Component Dictionary �Υǡ������ɤ߹���" -->
-<p>Bio::PDB::ChemicalComponent ���饹�ϡ�PDB Chemical Component Dictionary
-�ʵ�̾�� HET Group Dictionary�ˤΥѡ����Ǥ���</p>
-<p>PDB Chemical Component Dictionary �ˤĤ��Ƥϰʲ��Υڡ����򻲾Ȥ��Ƥ���������</p>
+<p>これらのメソッドも Residue と同様に Model, Chain オブジェクトに対しても
+使用可能です。</p>
+<h3><a name="label-76" id="label-76">Chain, Model にアクセスするメソッド</a></h3><!-- RDLabel: "Chain, Model にアクセスするメソッド" -->
+<p>同様に、Bio::PDB#each_chain は全ての Chain を順番にたどるイテレータ、
+Bio::PDB#chains は全ての Chain を配列として返すメソッドです。
+これらのメソッドは Model オブジェクトに対しても使用可能です。</p>
+<p>Bio::PDB#each_model は全ての Model を順番にたどるイテレータ、
+Bio::PDB#models は全ての Model を配列として返すメソッドです。</p>
+<h3><a name="label-77" id="label-77">PDB Chemical Component Dictionary のデータの読み込み</a></h3><!-- RDLabel: "PDB Chemical Component Dictionary のデータの読み込み" -->
+<p>Bio::PDB::ChemicalComponent クラスは、PDB Chemical Component Dictionary
+(旧名称 HET Group Dictionary)のパーサです。</p>
+<p>PDB Chemical Component Dictionary については以下のページを参照してください。</p>
 <ul>
 <li><a href="http://deposit.pdb.org/cc_dict_tut.html"><URL:http://deposit.pdb.org/cc_dict_tut.html></a></li>
 </ul>
-<p>�ǡ����ϰʲ��ǥ�������ɤǤ��ޤ���</p>
+<p>データは以下でダウンロードできます。</p>
 <ul>
 <li><a href="http://deposit.pdb.org/het_dictionary.txt"><URL:http://deposit.pdb.org/het_dictionary.txt></a></li>
 </ul>
-<p>���Υ��饹�ϡ�RESIDUE ����Ϥޤäƶ��Ԥǽ���룱����ȥ��ѡ������ޤ�
-��PDB �ե����ޥåȤˤΤ��б����Ƥ��ޤ��ˡ�</p>
-<p>Bio::FlatFile �ˤ��ե����������ưȽ�̤��б����Ƥ��ޤ���
-���Υ��饹���Τ� ID ���鲽��ʪ�򸡺������ꤹ�뵡ǽ�ϻ��äƤ��ޤ���
-br_bioflat.rb �ˤ�륤��ǥå��������ˤ��б����Ƥ��ޤ��Τǡ�
-ɬ�פʤ餽�������Ѥ��Ƥ���������</p>
+<p>このクラスは、RESIDUE から始まって空行で終わる1エントリをパースします
+(PDB フォーマットにのみ対応しています)。</p>
+<p>Bio::FlatFile によるファイル形式自動判別に対応しています。
+このクラス自体は ID から化合物を検索したりする機能は持っていません。
+br_bioflat.rb によるインデックス作成には対応していますので、
+必要ならそちらを使用してください。</p>
 <pre>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</pre>
-<p>�Ǹ�� conect �᥽�åɤϡ�����ʪ�η��� Hash �Ȥ����֤��ޤ���
-���Ȥ��С������Ρ���Υ���ȥ�ϼ��Τ褦�ˤʤ�ޤ�����</p>
+<p>最後の conect メソッドは、化合物の結合を Hash として返します。
+たとえば、エタノールのエントリは次のようになりますが、</p>
 <pre>RESIDUE   EOH      9
 CONECT      C1     4 C2   O   1H1  2H1
 CONECT      C2     4 C1  1H2  2H2  3H2
@@ -1581,7 +1491,7 @@ END
 HET    EOH              9
 HETNAM     EOH ETHANOL
 FORMUL      EOH    C2 H6 O1</pre>
-<p>���Υ���ȥ���Ф��� conect �᥽�åɤ�Ƥ֤�</p>
+<p>このエントリに対して conect メソッドを呼ぶと</p>
 <pre>{ "C1"  => [ "C2", "O", "1H1", "2H1" ], 
   "C2"  => [ "C1", "1H2", "2H2", "3H2" ], 
   "O"   => [ "C1", "HO" ], 
@@ -1591,61 +1501,61 @@ FORMUL      EOH    C2 H6 O1</pre>
   "2H2" => [ "C2" ], 
   "3H2" => [ "C2" ], 
   "HO"  => [ "O" ] }</pre>
-<p>�Ȥ��� Hash ���֤��ޤ���</p>
-<p>�����ޤǤν����� BioRuby ������ǻ�Ȱʲ��Τ褦�ˤʤ�ޤ���</p>
-<pre># PDB ����ȥ� 1bl8 ��ͥåȥ����ͳ�Ǽ���
+<p>という Hash を返します。</p>
+<p>ここまでの処理を BioRuby シェルで試すと以下のようになります。</p>
+<pre># 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</pre>
-<h2><a name="label-87" id="label-87">���饤���� (Bio::Alignment ���饹)</a></h2><!-- RDLabel: "���饤���� (Bio::Alignment ���饹)" -->
-<p>Bio::Alignment ���饹������Υ��饤���Ȥ��Ǽ���뤿��Υ���ƥʤǤ���
-Ruby �� Hash �� Array �˻�������ǽ�ǡ�BioPerl �� Bio::SimpleAlign ��
-���������ˤʤäƤ��ޤ����ʲ��˴�ñ�ʻȤ����򼨤��ޤ���</p>
+<h2><a name="label-78" id="label-78">アライメント (Bio::Alignment クラス)</a></h2><!-- RDLabel: "アライメント (Bio::Alignment クラス)" -->
+<p>Bio::Alignment クラスは配列のアライメントを格納するためのコンテナです。
+Ruby の Hash や Array に似た操作が可能で、BioPerl の Bio::SimpleAlign に
+似た感じになっています。以下に簡単な使い方を示します。</p>
 <pre>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"
@@ -1653,7 +1563,7 @@ a.each { |x| p x }
   #    "acgca"
   #    "acgcg"
 
-# �ƥ����ȤˤĤ��Ʒ����֤�
+# 各サイトについて繰り返す
 a.each_site { |x| p x }
   # ==>
   #    ["a", "a", "a", "a"]
@@ -1662,296 +1572,296 @@ a.each_site { |x| p x }
   #    ["c", "c", "c", "c"]
   #    ["a", "a", "a", "g"]
 
-# Clustal W ����Ѥ��ƥ��饤���Ȥ�Ԥ���
-# 'clustalw' ���ޥ�ɤ������ƥ�˥��󥹥ȡ��뤵��Ƥ���ɬ�פ����롣
+# Clustal W を使用してアライメントを行う。
+# 'clustalw' コマンドがシステムにインストールされている必要がある。
 factory = Bio::ClustalW.new
 a2 = a.do_align(factory)</pre>
-<h2><a name="label-88" id="label-88">FASTA �ˤ����Ʊ��������Ԥ���Bio::Fasta ���饹��</a></h2><!-- RDLabel: "FASTA �ˤ����Ʊ��������Ԥ���Bio::Fasta ���饹��" -->
-<p>FASTA ����������ե����� query.pep ���Ф��ơ���ʬ�Υޥ���(������)���뤤��
-���󥿡��ͥåȾ�Υ�����(��⡼��)�� FASTA �ˤ����Ʊ��������Ԥ���ˡ�Ǥ���
-������ξ��� SSEARCH �ʤɤ�Ʊ�ͤ˻Ȥ����Ȥ��Ǥ��ޤ���</p>
-<h3><a name="label-89" id="label-89">�������</a></h3><!-- RDLabel: "�������" -->
-<p>FASTA �����󥹥ȡ��뤵��Ƥ��뤳�Ȥ��ǧ���Ƥ����������ʲ�����Ǥϡ�
-���ޥ��̾�� fasta34 �ǥѥ����̤ä��ǥ��쥯�ȥ�˥��󥹥ȡ���
-����Ƥ���������ꤷ�Ƥ��ޤ���</p>
+<h2><a name="label-79" id="label-79">FASTA による相同性検索を行う(Bio::Fasta クラス)</a></h2><!-- RDLabel: "FASTA による相同性検索を行う(Bio::Fasta クラス)" -->
+<p>FASTA 形式の配列ファイル query.pep に対して、自分のマシン(ローカル)あるいは
+インターネット上のサーバ(リモート)で FASTA による相同性検索を行う方法です。
+ローカルの場合は SSEARCH なども同様に使うことができます。</p>
+<h3><a name="label-80" id="label-80">ローカルの場合</a></h3><!-- RDLabel: "ローカルの場合" -->
+<p>FASTA がインストールされていることを確認してください。以下の例では、
+コマンド名が fasta34 でパスが通ったディレクトリにインストール
+されている状況を仮定しています。</p>
 <ul>
 <li><a href="ftp://ftp.virginia.edu/pub/fasta/"><URL:ftp://ftp.virginia.edu/pub/fasta/></a></li>
 </ul>
-<p>�����оݤȤ��� FASTA �����Υǡ����١����ե����� target.pep �ȡ�FASTA
-�������䤤��碌���󤬤����Ĥ����ä��ե����� query.pep ��������ޤ���</p>
-<p>������Ǥϡ����䤤��碌���󤴤Ȥ� FASTA ������¹Ԥ����ҥåȤ��������
-evalue �� 0.0001 �ʲ��Τ�Τ�����ɽ�����ޤ���</p>
+<p>検索対象とする FASTA 形式のデータベースファイル target.pep と、FASTA
+形式の問い合わせ配列がいくつか入ったファイル query.pep を準備します。</p>
+<p>この例では、各問い合わせ配列ごとに FASTA 検索を実行し、ヒットした配列の
+evalue が 0.0001 以下のものだけを表示します。</p>
 <pre>#!/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</pre>
-<p>������ factory �Ϸ����֤� FASTA ��¹Ԥ��뤿��ˡ����餫�����äƤ���
-�¹ԴĶ��Ǥ���</p>
-<p>�嵭�Υ�����ץȤ� search.rb �Ȥ���ȡ��䤤��碌����ȥǡ����١��������
-�ե�����̾�����ˤ��ơ��ʲ��Τ褦�˼¹Ԥ��ޤ���</p>
+<p>ここで factory は繰り返し FASTA を実行するために、あらかじめ作っておく
+実行環境です。</p>
+<p>上記のスクリプトを search.rb とすると、問い合わせ配列とデータベース配列の
+ファイル名を引数にして、以下のように実行します。</p>
 <pre>% ruby search.rb query.pep target.pep > search.out</pre>
-<p>FASTA ���ޥ�ɤ˥��ץ�����Ϳ��������硢�����ܤΰ���� FASTA ��
-���ޥ�ɥ饤�󥪥ץ�����񤤤��Ϥ��ޤ�����������ktup �ͤ�����
-�᥽�åɤ�Ȥäƻ��ꤹ�뤳�ȤˤʤäƤ��ޤ���
-���Ȥ��� ktup �ͤ� 1 �ˤ��ơ��ȥå� 10 �̰���ΥҥåȤ��������
-���ץ����ϡ��ʲ��Τ褦�ˤʤ�ޤ���</p>
+<p>FASTA コマンドにオプションを与えたい場合、3番目の引数に FASTA の
+コマンドラインオプションを書いて渡します。ただし、ktup 値だけは
+メソッドを使って指定することになっています。
+たとえば ktup 値を 1 にして、トップ 10 位以内のヒットを得る場合の
+オプションは、以下のようになります。</p>
 <pre>factory = Bio::Fasta.local('fasta34', 'target.pep', '-b 10')
 factory.ktup = 1</pre>
-<p>Bio::Fasta#query �᥽�åɤʤɤ��֤��ͤ� Bio::Fasta::Report ���֥�������
-�Ǥ������� Report ���֥������Ȥ��顢�͡��ʥ᥽�åɤ� FASTA �ν��Ϸ�̤�
-�ۤ����Ƥ�ͳ�˼��Ф���褦�ˤʤäƤ��ޤ������Ȥ��С��ҥåȤ˴ؤ���
-�������ʤɤμ�ʾ���ϡ�</p>
+<p>Bio::Fasta#query メソッドなどの返り値は Bio::Fasta::Report オブジェクト
+です。この Report オブジェクトから、様々なメソッドで FASTA の出力結果の
+ほぼ全てを自由に取り出せるようになっています。たとえば、ヒットに関する
+スコアなどの主な情報は、</p>
 <pre>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</pre>
-<p>�ʤɤΥ᥽�åɤǸƤӽФ��ޤ��������Υ᥽�åɤ�¿���ϸ����������
-Bio::Blast::Report ���饹�ȶ��̤ˤ��Ƥ���ޤ����嵭�ʳ��Υ᥽�åɤ�
-FASTA ��ͭ���ͤ���Ф��᥽�åɤ�ɬ�פʾ��ϡ�Bio::Fasta::Report
-���饹�Υɥ�����Ȥ򻲾Ȥ��Ƥ���������</p>
-<p>�⤷���ѡ����������μ��ä��Ƥ��ʤ� fasta ���ޥ�ɤμ¹Է�̤�ɬ�פ�
-���ˤϡ�</p>
+<p>などのメソッドで呼び出せます。これらのメソッドの多くは後で説明する
+Bio::Blast::Report クラスと共通にしてあります。上記以外のメソッドや
+FASTA 特有の値を取り出すメソッドが必要な場合は、Bio::Fasta::Report
+クラスのドキュメントを参照してください。</p>
+<p>もし、パースする前の手を加えていない fasta コマンドの実行結果が必要な
+場合には、</p>
 <pre>report = factory.query(entry)
 puts factory.output</pre>
-<p>�Τ褦�ˡ�query �᥽�åɤ�¹Ԥ������ factory ���֥������Ȥ� output
-�᥽�åɤ�ȤäƼ��Ф����Ȥ��Ǥ��ޤ���</p>
-<h3><a name="label-90" id="label-90">��⡼�Ȥξ��</a></h3><!-- RDLabel: "��⡼�Ȥξ��" -->
-<p>���ΤȤ��� GenomeNet (fasta.genome.jp) �Ǥθ����Τߥ��ݡ��Ȥ��Ƥ��ޤ���
-��⡼�Ȥξ��ϻ��Ѳ�ǽ�ʸ����оݥǡ����١�������ޤäƤ��ޤ����������
-�������ˤĤ��Ƥ� Bio::Fasta.remote �� Bio::Fasta.local ��Ʊ���褦�˻Ȥ�
-���Ȥ��Ǥ��ޤ���</p>
-<p>GenomeNet �ǻ��Ѳ�ǽ�ʸ����оݥǡ����١�����</p>
+<p>のように、query メソッドを実行した後で factory オブジェクトの output
+メソッドを使って取り出すことができます。</p>
+<h3><a name="label-81" id="label-81">リモートの場合</a></h3><!-- RDLabel: "リモートの場合" -->
+<p>今のところ GenomeNet (fasta.genome.jp) での検索のみサポートしています。
+リモートの場合は使用可能な検索対象データベースが決まっていますが、それ以
+外の点については Bio::Fasta.remote と Bio::Fasta.local は同じように使う
+ことができます。</p>
+<p>GenomeNet で使用可能な検索対象データベース:</p>
 <ul>
-<li>���ߥλ�����ǡ����١���
+<li>アミノ酸配列データベース
 <ul>
 <li>nr-aa, genes, vgenes.pep, swissprot, swissprot-upd, pir, prf, pdbstr</li>
 </ul></li>
-<li>��������ǡ����١���
+<li>塩基配列データベース
 <ul>
 <li>nr-nt, genbank-nonst, gbnonst-upd, dbest, dbgss, htgs, dbsts,
       embl-nonst, embnonst-upd, genes-nt, genome, vgenes.nuc</li>
 </ul></li>
 </ul>
-<p>�ޤ��������椫�鸡���������ǡ����١��������򤷤ޤ����䤤��碌����μ���
-�ȸ�������ǡ����١����μ���ˤ�äƥץ����Ϸ�ޤ�ޤ���</p>
+<p>まず、この中から検索したいデータベースを選択します。問い合わせ配列の種類
+と検索するデータベースの種類によってプログラムは決まります。</p>
 <ul>
-<li>�䤤��碌���󤬥��ߥλ��ΤȤ�
+<li>問い合わせ配列がアミノ酸のとき
 <ul>
-<li>�оݥǡ����١��������ߥλ�����ǡ����١����ξ�硢program �� 'fasta'</li>
-<li>�оݥǡ����١������˻�����ǡ����١����ξ�硢program �� 'tfasta'</li>
+<li>対象データベースがアミノ酸配列データベースの場合、program は 'fasta'</li>
+<li>対象データベースが核酸配列データベースの場合、program は 'tfasta'</li>
 </ul></li>
-<li>�䤤��碌���󤬳˻�����ΤȤ�
+<li>問い合わせ配列が核酸配列のとき
 <ul>
-<li>�оݥǡ����١������˻�����ǡ����١����ξ�硢program �� 'fasta'</li>
-<li>(�оݥǡ����١��������ߥλ�����ǡ����١����ξ��ϸ�����ǽ?)</li>
+<li>対象データベースが核酸配列データベースの場合、program は 'fasta'</li>
+<li>(対象データベースがアミノ酸配列データベースの場合は検索不能?)</li>
 </ul></li>
 </ul>
-<p>�ץ����ȥǡ����١������Ȥ߹礻����ޤä���</p>
+<p>プログラムとデータベースの組み合せが決まったら</p>
 <pre>program = 'fasta'
 database = 'genes'
 
 factory = Bio::Fasta.remote(program, database)</pre>
-<p>�Ȥ��ƥե����ȥ꡼���ꡢ������ξ���Ʊ���褦�� factory.query �ʤ�
-�Υ᥽�åɤǸ�����¹Ԥ��ޤ���</p>
-<h2><a name="label-91" id="label-91">BLAST �ˤ����Ʊ��������Ԥ���Bio::Blast ���饹��</a></h2><!-- RDLabel: "BLAST �ˤ����Ʊ��������Ԥ���Bio::Blast ���饹��" -->
-<p>BLAST �������� GenomeNet (blast.genome.jp) �Ǥθ����򥵥ݡ��Ȥ���
-���ޤ����Ǥ������ Bio::Fasta �� API ���̤ˤ��Ƥ��ޤ��Τǡ��嵭����� 
-Bio::Blast �Ƚ񤭴����������Ǥ�����פʾ�礬¿���Ǥ���</p>
-<p>���Ȥ��С���� f_search.rb ��</p>
-<pre># BLAST ��¹Ԥ���Ķ����֥������Ȥ���
+<p>としてファクトリーを作り、ローカルの場合と同じように factory.query など
+のメソッドで検索を実行します。</p>
+<h2><a name="label-82" id="label-82">BLAST による相同性検索を行う(Bio::Blast クラス)</a></h2><!-- RDLabel: "BLAST による相同性検索を行う(Bio::Blast クラス)" -->
+<p>BLAST もローカルと GenomeNet (blast.genome.jp) での検索をサポートして
+います。できるだけ Bio::Fasta と API を共通にしていますので、上記の例を 
+Bio::Blast と書き換えただけでも大丈夫な場合が多いです。</p>
+<p>たとえば、先の f_search.rb は</p>
+<pre># BLAST を実行する環境オブジェクトを作る
 factory = Bio::Blast.local('blastp', ARGV.pop) </pre>
-<p>���ѹ����������Ʊ���褦�˼¹ԤǤ��ޤ���</p>
-<p>Ʊ�ͤˡ�GenomeNet ����Ѥ���BLAST��Ԥ����ˤ� Bio::Blast.remote ��Ȥ��ޤ���
-���ξ�硢program�λ������Ƥ� FASTA �Ȱۤʤ�ޤ���</p>
+<p>と変更するだけで同じように実行できます。</p>
+<p>同様に、GenomeNet を使用してBLASTを行う場合には Bio::Blast.remote を使います。
+この場合、programの指定内容が FASTA と異なります。</p>
 <ul>
-<li>�䤤��碌���󤬥��ߥλ��ΤȤ�
+<li>問い合わせ配列がアミノ酸のとき
 <ul>
-<li>�оݥǡ����١��������ߥλ�����ǡ����١����ξ�硢program �� 'blastp'</li>
-<li>�оݥǡ����١������˻�����ǡ����١����ξ�硢program �� 'tblastn'</li>
+<li>対象データベースがアミノ酸配列データベースの場合、program は 'blastp'</li>
+<li>対象データベースが核酸配列データベースの場合、program は 'tblastn'</li>
 </ul></li>
-<li>�䤤��碌���󤬱�������ΤȤ�
+<li>問い合わせ配列が塩基配列のとき
 <ul>
-<li>�оݥǡ����١��������ߥλ�����ǡ����١����ξ�硢program �� 'blastx'</li>
-<li>�оݥǡ����١�������������ǡ����١����ξ�硢program �� 'blastn'</li>
-<li>(�䤤��碌���ǡ����١�������6�ե졼��������Ԥ����� 'tblastx')</li>
+<li>対象データベースがアミノ酸配列データベースの場合、program は 'blastx'</li>
+<li>対象データベースが塩基配列データベースの場合、program は 'blastn'</li>
+<li>(問い合わせ・データベース共に6フレーム翻訳を行う場合は 'tblastx')</li>
 </ul></li>
 </ul>
-<p>�򤽤줾����ꤷ�ޤ���</p>
-<p>�Ȥ���ǡ�BLAST �Ǥ� "-m 7" ���ץ����ˤ�� XML ���ϥե����ޥååȤ�����
-���������˭�٤ʤ��ᡢBio::Blast �� Ruby �Ѥ� XML �饤�֥��Ǥ���
-XMLParser �ޤ��� REXML �����Ѳ�ǽ�ʾ��ϡ�XML ���Ϥ����Ѥ��ޤ���
-ξ�����Ѳ�ǽ�ʾ�硢XMLParser �Τۤ�����®�ʤΤ�ͥ��Ū�˻��Ѥ���ޤ���
-�ʤ���Ruby 1.8.0 �ʹߤǤ� REXML �� Ruby ���Τ�ɸ��ź�դ���Ƥ��ޤ���
-�⤷ XML �饤�֥�꤬���󥹥ȡ��뤵��Ƥ��ʤ����� "-m 8" �Υ��ֶ��ڤ��
-���Ϸ����򰷤��褦�ˤ��Ƥ��ޤ��������������Υե����ޥåȤǤ�������
-�ǡ������¤���Τǡ�"-m 7" �� XML �����ν��Ϥ�Ȥ����Ȥ򤪴��ᤷ�ޤ���</p>
-<p>���Ǥ˸����褦�� Bio::Fasta::Report �� Bio::Blast::Report �� Hit ���֥���
-���ȤϤ����Ĥ����̤Υ᥽�åɤ���äƤ��ޤ���BLAST ��ͭ�Υ᥽�åɤ��ɤ���
-�������ʤ�Τˤ� bit_score �� midline �ʤɤ�����ޤ���</p>
+<p>をそれぞれ指定します。</p>
+<p>ところで、BLAST では "-m 7" オプションによる XML 出力フォーマッットの方が
+得られる情報が豊富なため、Bio::Blast は Ruby 用の XML ライブラリである
+XMLParser または REXML が使用可能な場合は、XML 出力を利用します。
+両方使用可能な場合、XMLParser のほうが高速なので優先的に使用されます。
+なお、Ruby 1.8.0 以降では REXML は Ruby 本体に標準添付されています。
+もし XML ライブラリがインストールされていない場合は "-m 8" のタブ区切りの
+出力形式を扱うようにしています。しかし、このフォーマットでは得られる
+データが限られるので、"-m 7" の XML 形式の出力を使うことをお勧めします。</p>
+<p>すでに見たように Bio::Fasta::Report と Bio::Blast::Report の Hit オブジェ
+クトはいくつか共通のメソッドを持っています。BLAST 固有のメソッドで良く使
+いそうなものには bit_score や midline などがあります。</p>
 <pre>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</pre>
-<p>FASTA�Ȥ�API���̲��Τ���ȴ��ؤΤ��ᡢ�������ʤɤ����Ĥ��ξ����1���ܤ�
-Hsp (High-scoring segment pair) ���ͤ�Hit���֤��褦�ˤ��Ƥ��ޤ���</p>
-<p>Bio::Blast::Report ���֥������Ȥϡ��ʲ��˼����褦�ʡ�BLAST�η�̽��Ϥ�
-�ǡ�����¤�򤽤Τޤ�ȿ�Ǥ�������Ū�ʥǡ�����¤����äƤ��ޤ�������Ū�ˤ�</p>
+<p>FASTAとのAPI共通化のためと簡便のため、スコアなどいくつかの情報は1番目の
+Hsp (High-scoring segment pair) の値をHitで返すようにしています。</p>
+<p>Bio::Blast::Report オブジェクトは、以下に示すような、BLASTの結果出力の
+データ構造をそのまま反映した階層的なデータ構造を持っています。具体的には</p>
 <ul>
-<li>Bio::Blast::Report ���֥������Ȥ� @iteratinos ��
+<li>Bio::Blast::Report オブジェクトの @iteratinos に
 <ul>
-<li>Bio::Blast::Report::Iteration ���֥������Ȥ� Array �����äƤ���
-      Bio::Blast::Report::Iteration ���֥������Ȥ� @hits ��
+<li>Bio::Blast::Report::Iteration オブジェクトの Array が入っており
+      Bio::Blast::Report::Iteration オブジェクトの @hits に
 <ul>
-<li>Bio::Blast::Report::Hits ���֥������Ȥ� Array �����äƤ���
-        Bio::Blast::Report::Hits ���֥������Ȥ� @hsps ��
+<li>Bio::Blast::Report::Hits オブジェクトの Array が入っており
+        Bio::Blast::Report::Hits オブジェクトの @hsps に
 <ul>
-<li>Bio::Blast::Report::Hsp ���֥������Ȥ� Array �����äƤ���</li>
+<li>Bio::Blast::Report::Hsp オブジェクトの Array が入っている</li>
 </ul></li>
 </ul></li>
 </ul></li>
 </ul>
-<p>�Ȥ������ع�¤�ˤʤäƤ��ꡢ���줾�줬������ͤ���Ф�����Υ᥽�åɤ�
-���äƤ��ޤ��������Υ᥽�åɤξܺ٤䡢BLAST �¹Ԥ����׾���ʤɤ��ͤ�
-ɬ�פʾ��ˤϡ� bio/appl/blast/*.rb ��Υɥ�����Ȥ�ƥ��ȥ����ɤ�
-���Ȥ��Ƥ���������</p>
-<h3><a name="label-92" id="label-92">��¸�� BLAST ���ϥե������ѡ�������</a></h3><!-- RDLabel: "��¸�� BLAST ���ϥե������ѡ�������" -->
-<p>BLAST ��¹Ԥ�����̥ե����뤬���Ǥ���¸���Ƥ��äơ��������Ϥ��������
-�ˤϡ�Bio::Blast ���֥������Ȥ��餺�ˡ� Bio::Blast::Report ���֥�����
-�Ȥ��ꤿ�����Ȥ������Ȥˤʤ�ޤ�������ˤ� Bio::Blast.reports �᥽�å�
-��Ȥ��ޤ����б����Ƥ���Τ� �ǥե���Ƚ��ϥե����ޥå�("-m 0") �ޤ���
-"-m 7" ���ץ����� XML �ե����ޥåȽ��ϤǤ���</p>
+<p>という階層構造になっており、それぞれが内部の値を取り出すためのメソッドを
+持っています。これらのメソッドの詳細や、BLAST 実行の統計情報などの値が
+必要な場合には、 bio/appl/blast/*.rb 内のドキュメントやテストコードを
+参照してください。</p>
+<h3><a name="label-83" id="label-83">既存の BLAST 出力ファイルをパースする</a></h3><!-- RDLabel: "既存の BLAST 出力ファイルをパースする" -->
+<p>BLAST を実行した結果ファイルがすでに保存してあって、これを解析したい場合
+には(Bio::Blast オブジェクトを作らずに) Bio::Blast::Report オブジェク
+トを作りたい、ということになります。これには Bio::Blast.reports メソッド
+を使います。対応しているのは デフォルト出力フォーマット("-m 0") または
+"-m 7" オプションの XML フォーマット出力です。</p>
 <pre>#!/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</pre>
-<p>�Τ褦�ʥ�����ץ� hits_under_0.001.rb ��񤤤ơ�</p>
+<p>のようなスクリプト hits_under_0.001.rb を書いて、</p>
 <pre>% ./hits_under_0.001.rb *.xml</pre>
-<p>�ʤɤȼ¹Ԥ���С������Ϳ���� BLAST �η�̥ե����� *.xml ����֤˽�����
-���ޤ���</p>
-<p>Blast �ΥС������� OS �ʤɤˤ�äƽ��Ϥ���� XML �η������ۤʤ��ǽ��
-�����ꡢ���� XML �Υѡ��������ޤ��Ȥ��ʤ����Ȥ�����褦�Ǥ������ξ���
-Blast 2.2.5 �ʹߤΥС������򥤥󥹥ȡ��뤹�뤫 -D �� -m �ʤɤΥ��ץ���
-����Ȥ߹礻���Ѥ��ƻ�ƤߤƤ���������</p>
-<h3><a name="label-93" id="label-93">��⡼�ȸ��������Ȥ��ɲä���ˤ�</a></h3><!-- RDLabel: "��⡼�ȸ��������Ȥ��ɲä���ˤ�" -->
-<p>��: ���Υ��������Ͼ��桼�������Ǥ�����ǽ�Ǥ���� SOAP �ʤɤˤ��
-�����֥����ӥ������Ѥ��������褤�Ǥ��礦��</p>
-<p>Blast ������ NCBI ��Ϥ����͡��ʥ����Ȥǥ����ӥ�����Ƥ��ޤ��������ΤȤ�
-�� BioRuby �Ǥ� GenomeNet �ʳ��ˤ��б����Ƥ��ޤ��󡣤����Υ����Ȥϡ�</p>
+<p>などと実行すれば、引数に与えた BLAST の結果ファイル *.xml を順番に処理で
+きます。</p>
+<p>Blast のバージョンや OS などによって出力される XML の形式が異なる可能性
+があり、時々 XML のパーザがうまく使えないことがあるようです。その場合は
+Blast 2.2.5 以降のバージョンをインストールするか -D や -m などのオプショ
+ンの組み合せを変えて試してみてください。</p>
+<h3><a name="label-84" id="label-84">リモート検索サイトを追加するには</a></h3><!-- RDLabel: "リモート検索サイトを追加するには" -->
+<p>注: このセクションは上級ユーザ向けです。可能であれば SOAP などによる
+ウェブサービスを利用する方がよいでしょう。</p>
+<p>Blast 検索は NCBI をはじめ様々なサイトでサービスされていますが、今のとこ
+ろ BioRuby では GenomeNet 以外には対応していません。これらのサイトは、</p>
 <ul>
-<li>CGI ��ƤӽФ��ʥ��ޥ�ɥ饤�󥪥ץ����Ϥ��Υ������Ѥ˽��������</li>
-<li>-m 8 �ʤ� BioRuby ���ѡ�������äƤ�����ϥե����ޥåȤ� blast ��
-    ���Ϥ���Ф�</li>
+<li>CGI を呼び出す(コマンドラインオプションはそのサイト用に処理する)</li>
+<li>-m 8 など BioRuby がパーザを持っている出力フォーマットで blast の
+    出力を取り出す</li>
 </ul>
-<p>���Ȥ����Ǥ���С�query �������äƸ�����̤� Bio::Blast::Report.new ��
-�Ϥ��褦�ʥ᥽�åɤ������������ǻȤ���褦�ˤʤ�ޤ�������Ū�ˤϡ�����
-�᥽�åɤ��exec_������̾�פΤ褦��̾���� Bio::Blast �� private �᥽�å�
-�Ȥ�����Ͽ����ȡ������ܤΰ���ˡ֥�����̾�פ���ꤷ��</p>
-<pre>factory = Bio::Blast.remote(program, db, option, '������̾')</pre>
-<p>�Τ褦�˸ƤӽФ���褦�ˤʤäƤ��ޤ������������� BioRuby �ץ������Ȥ�
-�����äƤ�館��м����ޤ���ĺ���ޤ���</p>
-<h2><a name="label-94" id="label-94">PubMed ������ư���ʸ���ꥹ�Ȥ��� (Bio::PubMed ���饹)</a></h2><!-- RDLabel: "PubMed ������ư���ʸ���ꥹ�Ȥ��� (Bio::PubMed ���饹)" -->
-<p>���ϡ�NCBI ��ʸ���ǡ����١��� PubMed �򸡺����ư���ʸ���ꥹ�Ȥ����������Ǥ���</p>
+<p>ことさえできれば、query を受け取って検索結果を Bio::Blast::Report.new に
+渡すようなメソッドを定義するだけで使えるようになります。具体的には、この
+メソッドを「exec_サイト名」のような名前で Bio::Blast の private メソッド
+として登録すると、4番目の引数に「サイト名」を指定して</p>
+<pre>factory = Bio::Blast.remote(program, db, option, 'サイト名')</pre>
+<p>のように呼び出せるようになっています。完成したら BioRuby プロジェクトま
+で送ってもらえれば取り込ませて頂きます。</p>
+<h2><a name="label-85" id="label-85">PubMed を引いて引用文献リストを作る (Bio::PubMed クラス)</a></h2><!-- RDLabel: "PubMed を引いて引用文献リストを作る (Bio::PubMed クラス)" -->
+<p>次は、NCBI の文献データベース PubMed を検索して引用文献リストを作成する例です。</p>
 <pre>#!/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</pre>
-<p>���Υ�����ץȤ� pmfetch.rb �ʤɹ�����̾������¸����</p>
+<p>このスクリプトを pmfetch.rb など好きな名前で保存し、</p>
 <pre>% ./pmfetch.rb 11024183 10592278 10592173</pre>
-<p>�ʤɰ��Ѥ�������ʸ�� PubMed ID (PMID) �������¤٤�� NCBI �˥���������
-�� MEDLINE �ե����ޥåȤ�ѡ����� BibTeX �ե����ޥåȤ��Ѵ����ƽ��Ϥ���
-�����Ϥ��Ǥ���</p>
-<p>¾�ˡ�������ɤǸ������뵡ǽ�⤢��ޤ���</p>
+<p>など引用したい論文の PubMed ID (PMID) を引数に並べると NCBI にアクセスし
+て MEDLINE フォーマットをパースし BibTeX フォーマットに変換して出力して
+くれるはずです。</p>
+<p>他に、キーワードで検索する機能もあります。</p>
 <pre>#!/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</pre>
-<p>���Υ�����ץȤ� pmsearch.rb �ʤɹ�����̾������¸��</p>
+<p>このスクリプトを pmsearch.rb など好きな名前で保存し</p>
 <pre>% ./pmsearch.rb genome bioinformatics</pre>
-<p>�ʤɸ���������������ɤ������¤٤Ƽ¹Ԥ���ȡ�PubMed �򥭡����
-�������ƥҥåȤ�����ʸ�Υꥹ�Ȥ� BibTeX �ե����ޥåȤǽ��Ϥ��ޤ���</p>
-<p>�Ƕ�Ǥϡ�NCBI �� E-Utils �Ȥ��������֥��ץꥱ��������Ȥ����Ȥ�
-�侩����Ƥ���Τǡ������ Bio::PubMed.esearch �᥽�åɤ����
-Bio::PubMed.efetch �᥽�åɤ�Ȥ������ɤ��Ǥ��礦��</p>
+<p>など検索したいキーワードを引数に並べて実行すると、PubMed をキーワード
+検索してヒットした論文のリストを BibTeX フォーマットで出力します。</p>
+<p>最近では、NCBI は E-Utils というウェブアプリケーションを使うことが
+推奨されているので、今後は Bio::PubMed.esearch メソッドおよび
+Bio::PubMed.efetch メソッドを使う方が良いでしょう。</p>
 <pre>#!/usr/bin/env ruby
 
 require 'bio'
@@ -1970,42 +1880,42 @@ Bio::PubMed.efetch(entries).each do |entry|
   reference = medline.reference
   puts reference.bibtex
 end</pre>
-<p>���Υ�����ץȤǤϡ��嵭�� pmsearch.rb �Ȥۤ�Ʊ���褦��ư���ޤ�������ˡ�
-NCBI E-Utils ����Ѥ��뤳�Ȥˤ�ꡢ�����оݤ����դ����ҥåȷ��ʤɤ�
-����Ǥ���褦�ˤʤäƤ���Τǡ����ⵡǽ�Ǥ������ץ�����Ϳ������
-����ˤĤ��Ƥ� <a href="http://eutils.ncbi.nlm.nih.gov/entrez/query/static/eutils_help.html">E-Utils �Υإ�ץڡ���</a> �򻲾Ȥ��Ƥ���������</p>
-<p>���ʤߤˡ������Ǥ� bibtex �᥽�åɤ� BibTeX �ե����ޥåȤ��Ѵ����Ƥ��ޤ�
-������ҤΤ褦�� bibitem �᥽�åɤ�Ȥ���¾���ʶ�Ĵ�䥤����å��ʤ�
-ʸ���ν����ϤǤ��ޤ��󤬡�nature �᥽�åɤ� nar �ʤɡ������Ĥ��λ����
-�ե����ޥåȤˤ��б����Ƥ��ޤ���</p>
-<h3><a name="label-95" id="label-95">BibTeX �λȤ����Υ��</a></h3><!-- RDLabel: "BibTeX �λȤ����Υ��" -->
-<p>�嵭����ǽ��᤿ BibTeX �ե����ޥåȤΥꥹ�Ȥ� TeX �ǻȤ���ˡ���ñ�ˤ�
-�Ȥ�Ƥ����ޤ������Ѥ�������ʸ����</p>
+<p>このスクリプトでは、上記の pmsearch.rb とほぼ同じように動きます。さらに、
+NCBI E-Utils を活用することにより、検索対象の日付や最大ヒット件数などを
+指定できるようになっているので、より高機能です。オプションに与えられる
+引数については <a href="http://eutils.ncbi.nlm.nih.gov/entrez/query/static/eutils_help.html">E-Utils のヘルプページ</a> を参照してください。</p>
+<p>ちなみに、ここでは bibtex メソッドで BibTeX フォーマットに変換しています
+が、後述のように bibitem メソッドも使える他、(強調やイタリックなど
+文字の修飾はできませんが)nature メソッドや nar など、いくつかの雑誌の
+フォーマットにも対応しています。</p>
+<h3><a name="label-86" id="label-86">BibTeX の使い方のメモ</a></h3><!-- RDLabel: "BibTeX の使い方のメモ" -->
+<p>上記の例で集めた BibTeX フォーマットのリストを TeX で使う方法を簡単にま
+とめておきます。引用しそうな文献を</p>
 <pre>% ./pmfetch.rb 10592173 >> genoinfo.bib
 % ./pmsearch.rb genome bioinformatics >> genoinfo.bib</pre>
-<p>�ʤɤȤ��� genoinfo.bib �ե�����˽������¸���Ƥ�����</p>
+<p>などとして genoinfo.bib ファイルに集めて保存しておき、</p>
 <pre>\documentclass{jarticle}
 \begin{document}
 \bibliographystyle{plain}
-�ۤˤ��� KEGG �ǡ����١���~\cite{PMID:10592173}�Ϥդ��ۤ��Ǥ��롣
+ほにゃらら KEGG データベース~\cite{PMID:10592173}はふがほげである。
 \bibliography{genoinfo}
 \end{document}</pre>
-<p>�Ȥ����ե����� hoge.tex ��񤤤ơ�</p>
+<p>というファイル hoge.tex を書いて、</p>
 <pre>% platex hoge
-% bibtex hoge   # �� genoinfo.bib ���
-% platex hoge   # �� ʸ���ꥹ�Ȥκ���
-% platex hoge   # �� ʸ���ֹ�</pre>
-<p>�Ȥ����̵�� hoge.dvi ���Ǥ�������ޤ���</p>
-<h3><a name="label-96" id="label-96">bibitem �λȤ����Υ��</a></h3><!-- RDLabel: "bibitem �λȤ����Υ��" -->
-<p>ʸ���Ѥ��̤� .bib �ե�������ꤿ���ʤ����� Reference#bibitem �᥽��
-�ɤν��Ϥ�Ȥ��ޤ����嵭�� pmfetch.rb �� pmsearch.rb ��</p>
+% bibtex hoge   # → genoinfo.bib の処理
+% platex hoge   # → 文献リストの作成
+% platex hoge   # → 文献番号</pre>
+<p>とすると無事 hoge.dvi ができあがります。</p>
+<h3><a name="label-87" id="label-87">bibitem の使い方のメモ</a></h3><!-- RDLabel: "bibitem の使い方のメモ" -->
+<p>文献用に別の .bib ファイルを作りたくない場合は Reference#bibitem メソッ
+ドの出力を使います。上記の pmfetch.rb や pmsearch.rb の</p>
 <pre>puts reference.bibtex</pre>
-<p>�ιԤ�</p>
+<p>の行を</p>
 <pre>puts reference.bibitem</pre>
-<p>�˽񤭴�����ʤɤ��ơ����Ϸ�̤�</p>
+<p>に書き換えるなどして、出力結果を</p>
 <pre>\documentclass{jarticle}
 \begin{document}
-�ۤˤ��� KEGG �ǡ����١���~\cite{PMID:10592173}�Ϥդ��ۤ��Ǥ��롣
+ほにゃらら KEGG データベース~\cite{PMID:10592173}はふがほげである。
 
 \begin{thebibliography}{00}
 
@@ -2016,70 +1926,70 @@ KEGG: kyoto encyclopedia of genes and genomes.,
 
 \end{thebibliography}
 \end{document}</pre>
-<p>�Τ褦�� \begin{thebibliography} �ǰϤߤޤ�������� hoge.tex �Ȥ����</p>
-<pre>% platex hoge   # �� ʸ���ꥹ�Ȥκ���
-% platex hoge   # �� ʸ���ֹ�</pre>
-<p>�ȣ����������ФǤ�������Ǥ���</p>
-<h1><a name="label-97" id="label-97">OBDA</a></h1><!-- RDLabel: "OBDA" -->
-<p>OBDA (Open Bio Database Access) �Ȥϡ�Open Bioinformatics Foundation
-�ˤ�ä����ꤵ�줿������ǡ����١����ؤζ��̥���������ˡ�Ǥ�������ϡ�
-2002 ǯ��1���2��� Arizona �� Cape Town �ˤƳ��Ť��줿 BioHackathon
-�ˤ����ơ�BioPerl, BioJava, BioPython, BioRuby �ʤɤγƥץ������Ȥ�
-���С������ä��ƺ�������ޤ�����</p>
+<p>のように \begin{thebibliography} で囲みます。これを hoge.tex とすると</p>
+<pre>% platex hoge   # → 文献リストの作成
+% platex hoge   # → 文献番号</pre>
+<p>と2回処理すればできあがりです。</p>
+<h1><a name="label-88" id="label-88">OBDA</a></h1><!-- RDLabel: "OBDA" -->
+<p>OBDA (Open Bio Database Access) とは、Open Bioinformatics Foundation
+によって制定された、配列データベースへの共通アクセス方法です。これは、
+2002 年の1月と2月に Arizona と Cape Town にて開催された BioHackathon
+において、BioPerl, BioJava, BioPython, BioRuby などの各プロジェクトの
+メンバーが参加して作成されました。</p>
 <ul>
 <li>BioRegistry (Directory)
 <ul>
-<li>�ǡ����١�����������ɤ��ˤɤΤ褦�˼��˹Ԥ�������ꤹ����Ȥ�</li>
+<li>データベース毎に配列をどこにどのように取りに行くかを指定する仕組み</li>
 </ul></li>
 <li>BioFlat
 <ul>
-<li>�ե�åȥե������ 2 ʬ�ڤޤ��� BDB ��Ȥä�����ǥå�������</li>
+<li>フラットファイルの 2 分木または BDB を使ったインデックス作成</li>
 </ul></li>
 <li>BioFetch
 <ul>
-<li>HTTP ��ͳ�ǥǡ����١������饨��ȥ��������륵���Фȥ��饤�����</li>
+<li>HTTP 経由でデータベースからエントリを取得するサーバとクライアント</li>
 </ul></li>
 <li>BioSQL
 <ul>
-<li>MySQL �� PostgreSQL �ʤɤδط��ǡ����١���������ǡ������Ǽ����
-    ����� schema �ȡ�����ȥ����Ф�����Υ᥽�å�</li>
+<li>MySQL や PostgreSQL などの関係データベースに配列データを格納する
+    ための schema と、エントリを取り出すためのメソッド</li>
 </ul></li>
 </ul>
-<p>�ܺ٤� <a href="http://obda.open-bio.org/"><URL:http://obda.open-bio.org/></a> �򻲾Ȥ��Ƥ���������
-���줾��λ��ͽ�� cvs.open-bio.org �� CVS��ݥ��ȥ���֤��Ƥ���ޤ���
-�ޤ��ϡ�<a href="http://cvs.open-bio.org/cgi-bin/viewcvs/viewcvs.cgi/obda-specs/?cvsroot=obf-common"><URL:http://cvs.open-bio.org/cgi-bin/viewcvs/viewcvs.cgi/obda-specs/?cvsroot=obf-common></a> ���黲�ȤǤ��ޤ���</p>
-<h2><a name="label-98" id="label-98">BioRegistry</a></h2><!-- RDLabel: "BioRegistry" -->
-<p>BioRegistry�Ȥϡ�����ե�����ˤ�äƳƥǡ����١����Υ���ȥ������ˡ��
-���ꤹ�뤳�Ȥˤ�ꡢ�ɤ����ˡ��ȤäƤ��뤫��ۤȤ�ɰռ������ǡ�����
-�������뤳�Ȥ��ǽ�Ȥ��뤿��λ��ȤߤǤ���
-����ե������ͥ���̤�</p>
+<p>詳細は <a href="http://obda.open-bio.org/"><URL:http://obda.open-bio.org/></a> を参照してください。
+それぞれの仕様書は cvs.open-bio.org の CVSレポジトリに置いてあります。
+または、<a href="http://cvs.open-bio.org/cgi-bin/viewcvs/viewcvs.cgi/obda-specs/?cvsroot=obf-common"><URL:http://cvs.open-bio.org/cgi-bin/viewcvs/viewcvs.cgi/obda-specs/?cvsroot=obf-common></a> から参照できます。</p>
+<h2><a name="label-89" id="label-89">BioRegistry</a></h2><!-- RDLabel: "BioRegistry" -->
+<p>BioRegistryとは、設定ファイルによって各データベースのエントリ取得方法を
+指定することにより、どんな方法を使っているかをほとんど意識せずデータを
+取得することを可能とするための仕組みです。
+設定ファイルの優先順位は</p>
 <ul>
-<li>(�᥽�åɤΥѥ�᡼����)���ꤷ���ե�����</li>
+<li>(メソッドのパラメータで)指定したファイル</li>
 <li>~/.bioinformatics/seqdatabase.ini</li>
 <li>/etc/bioinformatics/seqdatabase.ini</li>
 <li>http://www.open-bio.org/registry/seqdatabase.ini</li>
 </ul>
-<p>�Ǹ�� open-bio.org ������ϡ������������ե����뤬���Ĥ���ʤ�����
-�������Ȥ��ޤ���</p>
-<p>BioRuby �θ��ߤμ����Ǥϡ����٤ƤΥ����������ե�������ɤ߹��ߡ�
-Ʊ��̾�������꤬ʣ��¸�ߤ������ϡ��ǽ�˸��Ĥ��ä�������������Ѥ���ޤ���
-��������Ѥ���ȡ����Ȥ��С������ƥ�����Ԥ� /etc/bioinformatics/ ���֤���
-����Τ����Ŀ�Ū���ѹ���������Τ��� ~/.bioinformatics/ �Ǿ�񤭤��뤳�Ȥ�
-�Ǥ��ޤ�������ץ�� seqdatabase.ini �ե����뤬 bioruby �Υ������˴ޤޤ��
-���ޤ��Τǻ��Ȥ��Ƥ���������</p>
-<p>����ե��������Ȥ� stanza �ե����ޥåȤȸƤФ��񼰤ǵ��Ҥ��ޤ���</p>
-<pre>[�ǡ����١���̾]
-protocol=�ץ�ȥ���̾
-location=������̾</pre>
-<p>���Τ褦�ʥ���ȥ��ƥǡ����١����ˤĤ��Ƶ��Ҥ��뤳�Ȥˤʤ�ޤ���
-�ǡ����١���̾�ϡ���ʬ�����Ѥ��뤿��Υ�٥�ʤΤ�ʬ����䤹����Τ�
-�Ĥ�����ɤ����ºݤΥǡ����١�����̾���ȰۤʤäƤ��Ƥ⹽��ʤ��褦�Ǥ���
-Ʊ��̾���Υǡ����١�����ʣ����Ȥ��Ϻǽ�˽񤫤�Ƥ����Τ�����
-��³���褦�˻��ͽ�Ǥ���Ƥ���Ƥ��ޤ��������ΤȤ��� BioRuby �Ǥ�
-����ˤ��б����Ƥ��ޤ���</p>
-<p>�ޤ����ץ�ȥ���μ���ˤ�äƤ� location �ʳ��ˤ��MySQL �Υ桼��̾�ʤɡ�
-�ɲäΥ��ץ����򵭽Ҥ���ɬ�פ�����ޤ������ߤΤȤ������ͽ�ǵ��ꤵ��
-�Ƥ��� protocol �Ȥ��Ƥϰʲ��Τ�Τ�����ޤ���</p>
+<p>最後の open-bio.org の設定は、ローカルな設定ファイルが見つからない場合に
+だけ参照します。</p>
+<p>BioRuby の現在の実装では、すべてのローカルな設定ファイルを読み込み、
+同じ名前の設定が複数存在した場合は、最初に見つかった設定だけが使用されます。
+これを利用すると、たとえば、システム管理者が /etc/bioinformatics/ に置いた
+設定のうち個人的に変更したいものだけ ~/.bioinformatics/ で上書きすることが
+できます。サンプルの seqdatabase.ini ファイルが bioruby のソースに含まれて
+いますので参照してください。</p>
+<p>設定ファイルの中身は stanza フォーマットと呼ばれる書式で記述します。</p>
+<pre>[データベース名]
+protocol=プロトコル名
+location=サーバ名</pre>
+<p>このようなエントリを各データベースについて記述することになります。
+データベース名は、自分が使用するためのラベルなので分かりやすいものを
+つければ良く、実際のデータベースの名前と異なっていても構わないようです。
+同じ名前のデータベースが複数あるときは最初に書かれているものから順に
+接続を試すように仕様書では提案されていますが、今のところ BioRuby では
+それには対応していません。</p>
+<p>また、プロトコルの種類によっては location 以外にも(MySQL のユーザ名など)
+追加のオプションを記述する必要があります。現在のところ、仕様書で規定され
+ている protocol としては以下のものがあります。</p>
 <ul>
 <li>index-flat</li>
 <li>index-berkeleydb</li>
@@ -2088,80 +1998,80 @@ location=
 <li>bsane-corba</li>
 <li>xembl</li>
 </ul>
-<p>���ΤȤ��� BioRuby �ǻ��Ѳ�ǽ�ʤΤ� index-flat, index-berkleydb, biofetch
-�� biosql �����Ǥ����ޤ���BioRegistry��ƥץ�ȥ���λ��ͤ��ѹ�����뤳��
-������ޤ�����BioRuby�Ϥ�����ɽ��Ǥ��Ƥ��ʤ����⤷��ޤ���</p>
-<p>BioRegistry ��Ȥ��ˤϡ��ޤ� Bio::Registry���֥������Ȥ�������ޤ���
-����ȡ�����ե����뤬�ɤ߹��ޤ�ޤ���</p>
+<p>今のところ BioRuby で使用可能なのは index-flat, index-berkleydb, biofetch
+と biosql だけです。また、BioRegistryや各プロトコルの仕様は変更されること
+がありますが、BioRubyはそれに追従できていないかもしれません。</p>
+<p>BioRegistry を使うには、まず Bio::Registryオブジェクトを作成します。
+すると、設定ファイルが読み込まれます。</p>
 <pre>reg = Bio::Registry.new
 
-# ����ե�����˽񤤤��ǡ����١���̾�ǥ����Ф���³
+# 設定ファイルに書いたデータベース名でサーバへ接続
 serv = reg.get_database('genbank')
 
-# ID ����ꤷ�ƥ���ȥ�����
+# ID を指定してエントリを取得
 entry = serv.get_by_id('AA2CG')</pre>
-<p>������ serv ������ե������ [genbank] ����ǻ��ꤷ�� protocol �ץ�ȥ�
-����б����륵���Х��֥������Ȥǡ�Bio::SQL �� Bio::Fetch �ʤɤΥ��󥹥�
-�󥹤��֤äƤ���Ϥ��Ǥ��ʥǡ����١���̾�����Ĥ���ʤ��ä����� nil�ˡ�</p>
-<p>���Ȥ� OBDA ���̤Υ���ȥ�����᥽�å� get_by_id ��Ƥ���ꡢ�����Х�
-�֥���������˸�ͭ�Υ᥽�åɤ�Ƥ֤��Ȥˤʤ�ޤ��Τǡ��ʲ��� BioFetch ��
-BioSQL �β���򻲾Ȥ��Ƥ���������</p>
-<h2><a name="label-99" id="label-99">BioFlat</a></h2><!-- RDLabel: "BioFlat" -->
-<p>BioFlat �ϥե�åȥե�������Ф��ƥ���ǥå����������������ȥ���®��
-���Ф����ȤߤǤ�������ǥå����μ���ϡ�RUby�γ�ĥ�饤�֥��˰�¸���ʤ�
-index-flat �� Berkeley DB (bdb) ��Ȥä� index-berkeleydb ��2���ब¸��
-���ޤ����ʤ���index-berkeleydb ����Ѥ���ˤϡ�BDB �Ȥ��� Ruby �γ�ĥ
-�饤�֥������ӥ��󥹥ȡ��뤹��ɬ�פ�����ޤ�������ǥå����κ����ˤ�
-bioruby �ѥå���������°���� br_bioflat.rb ���ޥ�ɤ�Ȥäơ�</p>
-<pre>% br_bioflat.rb --makeindex �ǡ����١���̾ [--format ���饹̾] �ե�����̾</pre>
-<p>�Τ褦�ˤ��ޤ���BioRuby�ϥǡ����ե����ޥåȤμ�ưǧ����ǽ����ܤ��Ƥ���
-�Τ� --format ���ץ����Ͼ�ά��ǽ�Ǥ��������줦�ޤ�ǧ�����ʤ��ä�����
-BioRuby �γƥǡ����١����Υ��饹̾����ꤷ�Ƥ��������������ϡ�</p>
-<pre>% bioflat �ǡ����١���̾ ����ȥ�ID</pre>
-<p>�Ȥ��ޤ�������Ū�� GenBank �� gbbct*.seq �ե�����˥���ǥå����������
-�Ƹ��������硢</p>
+<p>ここで serv は設定ファイルの [genbank] の欄で指定した protocol プロトコ
+ルに対応するサーバオブジェクトで、Bio::SQL や Bio::Fetch などのインスタ
+ンスが返っているはずです(データベース名が見つからなかった場合は nil)。</p>
+<p>あとは OBDA 共通のエントリ取得メソッド get_by_id を呼んだり、サーバオ
+ブジェクト毎に固有のメソッドを呼ぶことになりますので、以下の BioFetch や
+BioSQL の解説を参照してください。</p>
+<h2><a name="label-90" id="label-90">BioFlat</a></h2><!-- RDLabel: "BioFlat" -->
+<p>BioFlat はフラットファイルに対してインデックスを作成し、エントリを高速に
+取り出す仕組みです。インデックスの種類は、RUbyの拡張ライブラリに依存しない
+index-flat と Berkeley DB (bdb) を使った index-berkeleydb の2種類が存在
+します。なお、index-berkeleydb を使用するには、BDB という Ruby の拡張
+ライブラリを別途インストールする必要があります。インデックスの作成には
+bioruby パッケージに付属する br_bioflat.rb コマンドを使って、</p>
+<pre>% br_bioflat.rb --makeindex データベース名 [--format クラス名] ファイル名</pre>
+<p>のようにします。BioRubyはデータフォーマットの自動認識機能を搭載している
+ので --format オプションは省略可能ですが、万一うまく認識しなかった場合は
+BioRuby の各データベースのクラス名を指定してください。検索は、</p>
+<pre>% bioflat データベース名 エントリID</pre>
+<p>とします。具体的に GenBank の gbbct*.seq ファイルにインデックスを作成し
+て検索する場合、</p>
 <pre>% bioflat --makeindex my_bctdb --format GenBank gbbct*.seq
 % bioflat my_bctdb A16STM262</pre>
-<p>�Τ褦�ʴ����ˤʤ�ޤ���</p>
-<p>Ruby �� bdb ��ĥ�⥸�塼��(�ܺ٤� http://raa.ruby-lang.org/project/bdb/ ����)
-�����󥹥ȡ��뤵��Ƥ������ Berkeley DB �����Ѥ��ƥ���ǥå������������
-���Ȥ��Ǥ��ޤ������ξ�硢</p>
-<pre>% bioflat --makeindex-bdb �ǡ����١���̾ [--format ���饹̾] �ե�����̾</pre>
-<p>�Τ褦�� "--makeindex" �Τ����� "--makeindex-bdb" ����ꤷ�ޤ���</p>
-<h2><a name="label-100" id="label-100">BioFetch</a></h2><!-- RDLabel: "BioFetch" -->
-<p>BioFetch �� CGI ���ͳ���ƥ����Ф���ǡ����١����Υ���ȥ������������
-�ǡ������Ф�������� CGI �Υ��ץ����̾�����顼�����ɤʤɤ������Ƥ�
-�ޤ������饤����Ȥ� HTTP ��Ȥäƥǡ����١�����ID���ե����ޥåȤʤɤ��
-�ꤷ������ȥ��������ޤ���</p>
-<p>BioRuby �ץ������ȤǤ� GenomeNet �� DBGET �����ƥ��Хå�����ɤȤ���
-BioFetch �����Ф�������Ƥ��ꡢbioruby.org �DZ��Ѥ��Ƥ��ޤ������Υ����Ф�
-�����������ɤ� BioRuby �� sample/ �ǥ��쥯�ȥ�����äƤ��ޤ������ߤΤȤ���
-BioFetch �����ФϤ��� bioruby.org �Τ�Τ� EBI ���󤫽ꤷ������ޤ���</p>
-<p>BioFetch ��Ȥäƥ���ȥ���������ˤϡ������Ĥ�����ˡ������ޤ���</p>
+<p>のような感じになります。</p>
+<p>Ruby の bdb 拡張モジュール(詳細は http://raa.ruby-lang.org/project/bdb/ 参照)
+がインストールされている場合は Berkeley DB を利用してインデックスを作成する
+ことができます。この場合、</p>
+<pre>% bioflat --makeindex-bdb データベース名 [--format クラス名] ファイル名</pre>
+<p>のように "--makeindex" のかわりに "--makeindex-bdb" を指定します。</p>
+<h2><a name="label-91" id="label-91">BioFetch</a></h2><!-- RDLabel: "BioFetch" -->
+<p>BioFetch は CGI を経由してサーバからデータベースのエントリを取得する仕様
+で、サーバが受け取る CGI のオプション名、エラーコードなどが決められてい
+ます。クライアントは HTTP を使ってデータベース、ID、フォーマットなどを指
+定し、エントリを取得します。</p>
+<p>BioRuby プロジェクトでは GenomeNet の DBGET システムをバックエンドとした
+BioFetch サーバを実装しており、bioruby.org で運用しています。このサーバの
+ソースコードは BioRuby の sample/ ディレクトリに入っています。現在のところ
+BioFetch サーバはこの bioruby.org のものと EBI の二か所しかありません。</p>
+<p>BioFetch を使ってエントリを取得するには、いくつかの方法があります。</p>
 <ol>
-<li><p>�����֥֥饦�����鸡��������ˡ�ʰʲ��Υڡ����򳫤���</p>
+<li><p>ウェブブラウザから検索する方法(以下のページを開く)</p>
 <pre>http://bioruby.org/cgi-bin/biofetch.rb</pre></li>
-<li><p>BioRuby��°�� br_biofetch.rb ���ޥ�ɤ��Ѥ�����ˡ</p>
+<li><p>BioRuby付属の br_biofetch.rb コマンドを用いる方法</p>
 <pre>% br_biofetch.rb db_name entry_id</pre></li>
-<li><p>������ץȤ��椫�� Bio::Fetch ���饹��ľ�ܻȤ���ˡ</p>
+<li><p>スクリプトの中から Bio::Fetch クラスを直接使う方法</p>
 <pre>serv = Bio::Fetch.new(server_url)
 entry = serv.fetch(db_name, entry_id)</pre></li>
-<li><p>������ץȤ���� BioRegistry ��ͳ�� Bio::Fetch ���饹�����Ū�˻Ȥ���ˡ</p>
+<li><p>スクリプトの中で BioRegistry 経由で Bio::Fetch クラスを間接的に使う方法</p>
 <pre>reg = Bio::Registry.new
 serv = reg.get_database('genbank')
 entry = serv.get_by_id('AA2CG')</pre></li>
 </ol>
-<p>�⤷ (4) ��Ȥ��������� seqdatabase.ini ��</p>
+<p>もし (4) を使いたい場合は seqdatabase.ini で</p>
 <pre>[genbank]
 protocol=biofetch
 location=http://bioruby.org/cgi-bin/biofetch.rb
 biodbname=genbank</pre>
-<p>�ʤɤȻ��ꤷ�Ƥ���ɬ�פ�����ޤ���</p>
-<h3><a name="label-101" id="label-101">BioFetch �� Bio::KEGG::GENES, Bio::AAindex1 ���Ȥ߹�碌����</a></h3><!-- RDLabel: "BioFetch �� Bio::KEGG::GENES, Bio::AAindex1 ���Ȥ߹�碌����" -->
-<p>���Υץ����ϡ�BioFetch ��Ȥä� KEGG �� GENES �ǡ����١�������źٶ�
-Halobacterium �ΥХ��ƥꥢ��ɥץ�������� (VNG1467G) ���äƤ��ơ�Ʊ��
-�褦�˥��ߥλ���ɸ�ǡ����١����Ǥ��� AAindex ��������������إ�å�����
-��ɸ (BURA740101) ��Ȥäơ��� 15 �Ĵ�Υ�����ɥ��������򤹤���Ǥ���</p>
+<p>などと指定しておく必要があります。</p>
+<h3><a name="label-92" id="label-92">BioFetch と Bio::KEGG::GENES, Bio::AAindex1 を組み合わせた例</a></h3><!-- RDLabel: "BioFetch と Bio::KEGG::GENES, Bio::AAindex1 を組み合わせた例" -->
+<p>次のプログラムは、BioFetch を使って KEGG の GENES データベースから古細菌
+Halobacterium のバクテリアロドプシン遺伝子 (VNG1467G) を取ってきて、同じ
+ようにアミノ酸指標データベースである AAindex から取得したαヘリックスの
+指標 (BURA740101) を使って、幅 15 残基のウィンドウサーチをする例です。</p>
 <pre>#!/usr/bin/env ruby
 
 require 'bio'
@@ -2180,45 +2090,45 @@ aaseq.window_search(win_size) do |subseq|
   puts [ position, score ].join("\t")
   position += 1
 end</pre>
-<p>�����ǻȤäƤ��륯�饹�᥽�å� Bio::Fetch.query �ϰ��ۤ� bioruby.org ��
-BioFetch �����Ф�Ȥ����ѤΥ��硼�ȥ��åȤǤ����ʤ��Υ����Ф�����Ū�ˤ�
-���Υ�ͥåȤ���ǡ�����������Ƥ��ޤ���KEGG/GENES �ǡ����١����� hal �� 
-AAindex �ǡ����١��� aax1 �Υ���ȥ�ϡ�¾�� BioFetch �����ФǤϼ����Ǥ�
-�ʤ����Ȥ⤢�äơ������� query �᥽�åɤ�ȤäƤ��ޤ�����</p>
-<h2><a name="label-102" id="label-102">BioSQL</a></h2><!-- RDLabel: "BioSQL" -->
+<p>ここで使っているクラスメソッド Bio::Fetch.query は暗黙に bioruby.org の
+BioFetch サーバを使う専用のショートカットです。(このサーバは内部的には
+ゲノムネットからデータを取得しています。KEGG/GENES データベースの hal や 
+AAindex データベース aax1 のエントリは、他の BioFetch サーバでは取得でき
+ないこともあって、あえて query メソッドを使っています。)</p>
+<h2><a name="label-93" id="label-93">BioSQL</a></h2><!-- RDLabel: "BioSQL" -->
 <p>to be written...</p>
-<h2><a name="label-103" id="label-103">BioRuby �Υ���ץ�ץ����λȤ���</a></h2><!-- RDLabel: "BioRuby �Υ���ץ�ץ����λȤ���" -->
-<p>BioRuby �Υѥå������ˤ� samples/ �ǥ��쥯�ȥ�ʲ��ˤ����Ĥ��Υ���ץ��
-����ब�ޤޤ�Ƥ��ޤ����Ť���Τ⺮���äƤ��ޤ������̤�ȤƤ⽽ʬ�Ȥ�
-�����ʤ��Τǡ�����Ū�����򤤥���ץ���󶡤ϴ��ޤǤ���</p>
+<h2><a name="label-94" id="label-94">BioRuby のサンプルプログラムの使い方</a></h2><!-- RDLabel: "BioRuby のサンプルプログラムの使い方" -->
+<p>BioRuby のパッケージには samples/ ディレクトリ以下にいくつかのサンプルプ
+ログラムが含まれています。古いものも混じっていますし、量もとても十分とは
+言えないので、実用的で面白いサンプルの提供は歓迎です。</p>
 <p>to be written...</p>
-<h2><a name="label-104" id="label-104">����ʤ����</a></h2><!-- RDLabel: "����ʤ����" -->
-<p>¾�Υ��塼�ȥꥢ��Ū�ʥɥ�����ȤȤ��Ƥϡ�BioRuby Wiki���֤��Ƥ���
-BioRuby in Anger ������ޤ���</p>
-<h2><a name="label-105" id="label-105">����</a></h2><!-- RDLabel: "����" -->
+<h2><a name="label-95" id="label-95">さらなる情報</a></h2><!-- RDLabel: "さらなる情報" -->
+<p>他のチュートリアル的なドキュメントとしては、BioRuby Wikiに置いてある
+BioRuby in Anger があります。</p>
+<h2><a name="label-96" id="label-96">脚注</a></h2><!-- RDLabel: "脚注" -->
 <ul>
-<li><p>(��1) BioRuby 1.2.1 �����ΥС������Ǥϡ�setup.rb �Τ����� install.rb
-  ����Ѥ��ޤ����ޤ����ʲ��Τ褦��3�ʳ���Ƨ��ɬ�פ�����ޤ���</p>
+<li><p>(※1) BioRuby 1.2.1 以前のバージョンでは、setup.rb のかわりに install.rb
+  を使用します。また、以下のように3段階を踏む必要があります。</p>
 <pre>% ruby install.rb config
 % ruby install.rb setup
 # ruby install.rb install</pre></li>
-<li>(��2) BioRuby 1.0.0 �����ΥС������Ǥϡ�getseq, getent, getobj
-  �γƥ��ޥ�ɤΤ����ˡ�seq, ent, obj �γƥ��ޥ�ɤ���Ѥ��Ƥ���������</li>
-<li><p>(��3) BioRuby 0.7.1 �����ΥС������Ǥϡ�Bio::Sequence::NA ���饹����
-  Bio::sequence::AA ���饹�Τɤ��餫�Υ��֥������Ȥˤʤ�ޤ���
-  ���󤬤ɤ���Υ��饹��°���뤫�� Ruby �� class �᥽�åɤ��Ѥ���</p>
+<li>(※2) BioRuby 1.0.0 以前のバージョンでは、getseq, getent, getobj
+  の各コマンドのかわりに、seq, ent, obj の各コマンドを使用してください。</li>
+<li><p>(※3) BioRuby 0.7.1 以前のバージョンでは、Bio::Sequence::NA クラスか、
+  Bio::sequence::AA クラスのどちらかのオブジェクトになります。
+  配列がどちらのクラスに属するかは Ruby の class メソッドを用いて</p>
 <pre>bioruby> p cdc2.class
 Bio::Sequence::AA
 
 bioruby> p psaB.class
 Bio::Sequence::NA</pre>
-<p>�Τ褦��Ĵ�٤뤳�Ȥ��Ǥ��ޤ�����ưȽ�꤬�ְ�äƤ�����ʤɤˤ�
-to_naseq, to_aaseq �᥽�åɤǶ���Ū���Ѵ��Ǥ��ޤ���</p></li>
-<li>(��4) seq �᥽�åɤϡ��ɤ߹�����ǡ����μ���ˤ�äƤϡ����𡦥��ߥλ���
-  �ɤ���ˤ����ƤϤޤ�ʤ�����Τ���� Bio::Sequence::Generic ���饹��
-  String ���饹�Υ��֥������Ȥ��֤���礬���뤫�⤷��ޤ���</li>
-<li>(��5) NCBI, EBI, TogoWS �����̤�����̵���� getseq, getent, getobj ���ޥ��
-  �������Ѳ�ǽ�Ȥʤä��Τ� BioRuby 1.3.0 �ʹߤǤ���</li>
+<p>のように調べることができます。自動判定が間違っている場合などには
+to_naseq, to_aaseq メソッドで強制的に変換できます。</p></li>
+<li>(※4) seq メソッドは、読み込んだデータの種類によっては、塩基・アミノ酸の
+  どちらにも当てはまらない配列のための Bio::Sequence::Generic クラスや
+  String クラスのオブジェクトを返す場合があるかもしれません。</li>
+<li>(※5) NCBI, EBI, TogoWS が特別な設定無しに getseq, getent, getobj コマンド
+  から利用可能となったのは BioRuby 1.3.0 以降です。</li>
 </ul>
 
 </body>
diff --git a/extconf.rb b/extconf.rb
deleted file mode 100644
index 11fd3c7..0000000
--- a/extconf.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-require 'mkmf'
-create_makefile("bioruby")
diff --git a/gemfiles/Gemfile.travis-jruby1.8 b/gemfiles/Gemfile.travis-jruby1.8
index 553ba3b..9b53d96 100644
--- a/gemfiles/Gemfile.travis-jruby1.8
+++ b/gemfiles/Gemfile.travis-jruby1.8
@@ -1,6 +1,7 @@
-source :rubygems
+source "https://rubygems.org"
 
 gem "rake"
+gem "rdoc"
 
 ## disabled because of build error on Travis
 #gem "libxml-ruby"
diff --git a/gemfiles/Gemfile.travis-jruby1.9 b/gemfiles/Gemfile.travis-jruby1.9
index 4023011..9b53d96 100644
--- a/gemfiles/Gemfile.travis-jruby1.9
+++ b/gemfiles/Gemfile.travis-jruby1.9
@@ -1,10 +1,8 @@
-source :rubygems
+source "https://rubygems.org"
 
 gem "rake"
+gem "rdoc"
 
 ## disabled because of build error on Travis
 #gem "libxml-ruby"
 
-## disabled because of "uninitialized constant XML::SaxParser" error
-#gem "soap4r-ruby1.9"
-
diff --git a/gemfiles/Gemfile.travis-rbx b/gemfiles/Gemfile.travis-rbx
new file mode 100644
index 0000000..4aa1695
--- /dev/null
+++ b/gemfiles/Gemfile.travis-rbx
@@ -0,0 +1,13 @@
+source "https://rubygems.org"
+
+gem "rake"
+gem "rdoc"
+
+gem "xmlparser"
+gem "libxml-ruby"
+
+platforms :rbx do
+  gem 'racc'
+  gem 'rubysl', '~> 2.0'
+  gem 'psych'
+end
diff --git a/gemfiles/Gemfile.travis-ruby1.8 b/gemfiles/Gemfile.travis-ruby1.8
index 1890279..dddc272 100644
--- a/gemfiles/Gemfile.travis-ruby1.8
+++ b/gemfiles/Gemfile.travis-ruby1.8
@@ -1,6 +1,7 @@
-source :rubygems
+source "https://rubygems.org"
 
 gem "rake"
+gem "rdoc"
 
 gem "xmlparser"
 gem "libxml-ruby"
diff --git a/gemfiles/Gemfile.travis-ruby1.9 b/gemfiles/Gemfile.travis-ruby1.9
index 9320f39..dddc272 100644
--- a/gemfiles/Gemfile.travis-ruby1.9
+++ b/gemfiles/Gemfile.travis-ruby1.9
@@ -1,10 +1,8 @@
-source :rubygems
+source "https://rubygems.org"
 
 gem "rake"
+gem "rdoc"
 
 gem "xmlparser"
 gem "libxml-ruby"
 
-## disabled because of "uninitialized constant XML::SaxParser" error
-#gem "soap4r-ruby1.9"
-
diff --git a/gemfiles/Gemfile.travis-ruby2.2 b/gemfiles/Gemfile.travis-ruby2.2
new file mode 100644
index 0000000..3be1e9b
--- /dev/null
+++ b/gemfiles/Gemfile.travis-ruby2.2
@@ -0,0 +1,9 @@
+source "https://rubygems.org"
+
+gem "rake"
+gem "rdoc"
+gem "test-unit"
+
+gem "xmlparser"
+gem "libxml-ruby"
+
diff --git a/lib/bio.rb b/lib/bio.rb
index 0ee0196..7dc53fe 100644
--- a/lib/bio.rb
+++ b/lib/bio.rb
@@ -73,24 +73,26 @@ module Bio
   autoload :KEGGDB,         'bio/db'
   autoload :EMBLDB,         'bio/db'
 
-  ## GenBank/RefSeq/DDBJ
+  ## GenBank, GenPept
 
   autoload :GenBank,        'bio/db/genbank/genbank'
   autoload :GenPept,        'bio/db/genbank/genpept'
+
+  ## (deprecated) Bio::RefSeq, Bio::DDBJ
   autoload :RefSeq,         'bio/db/genbank/refseq'
   autoload :DDBJ,           'bio/db/genbank/ddbj'
-  ## below are described in bio/db/genbank/ddbj.rb
-  #class DDBJ
-  #  autoload :XML,          'bio/io/ddbjxml'
-  #  autoload :REST,         'bio/io/ddbjrest'
-  #end
 
-  ## EMBL/TrEMBL/Swiss-Prot/SPTR
+  ## EMBL, UniProtKB
 
   autoload :EMBL,           'bio/db/embl/embl'
+  autoload :UniProtKB,      'bio/db/embl/uniprotkb'
+
+  ## aliases of Bio::UniProtKB
   autoload :SPTR,           'bio/db/embl/sptr'
-  autoload :TrEMBL,         'bio/db/embl/trembl'
   autoload :UniProt,        'bio/db/embl/uniprot'
+
+  ## (deprecated) Bio::TrEMBL, Bio::SwissProt
+  autoload :TrEMBL,         'bio/db/embl/trembl'
   autoload :SwissProt,      'bio/db/embl/swissprot'
 
   ## KEGG
@@ -110,7 +112,6 @@ module Bio
     autoload :KGML,         'bio/db/kegg/kgml'
     autoload :PATHWAY,      'bio/db/kegg/pathway'
     autoload :MODULE,       'bio/db/kegg/module'
-    autoload :Taxonomy,     'bio/db/kegg/taxonomy'
   end
 
   ## other formats
@@ -155,7 +156,6 @@ module Bio
   autoload :Registry,       'bio/io/registry'
   autoload :Fetch,          'bio/io/fetch'
   autoload :SQL,            'bio/io/sql'
-  autoload :SOAPWSDL,       'bio/io/soapwsdl'
   autoload :FlatFile,       'bio/io/flatfile'
   autoload :FlatFileIndex,  'bio/io/flatfile/index' # chage to FlatFile::Index ?
   ## below are described in bio/io/flatfile/index.rb
@@ -168,9 +168,7 @@ module Bio
 
   autoload :PubMed,         'bio/io/pubmed'
   autoload :DAS,            'bio/io/das'
-  autoload :DBGET,          'bio/io/dbget'
 
-  autoload :Ensembl,        'bio/io/ensembl'
   autoload :Hinv,           'bio/io/hinv'
 
   ## below are described in bio/appl/blast.rb
@@ -178,27 +176,9 @@ module Bio
   #  autoload :Fastacmd,     'bio/io/fastacmd'
   #end
 
-  class KEGG
-    autoload :API,          'bio/io/keggapi'
-  end
-
-  ## below are described in bio/db/genbank/ddbj.rb
-  #class DDBJ
-  #  autoload :XML,          'bio/io/ddbjxml'
-  #end
-
-  class HGC
-    autoload :HiGet,        'bio/io/higet'
-  end
-
-  class EBI
-    autoload :SOAP,         'bio/io/ebisoap'
-  end
-
   autoload :NCBI,         'bio/io/ncbirest'
   ## below are described in bio/io/ncbirest.rb
   #class NCBI
-  #  autoload :SOAP,       'bio/io/ncbisoap'
   #  autoload :REST,       'bio/io/ncbirest'
   #end
 
@@ -304,18 +284,5 @@ module Bio
   ### Service libraries
   autoload :Command,        'bio/command'
 
-  ### Provide BioRuby shell 'command' also as 'Bio.command' (like ChemRuby)
-
-  def self.method_missing(*args)
-    require 'bio/shell'
-    extend Bio::Shell
-    public_class_method(*Bio::Shell.private_instance_methods)
-    if Bio.respond_to?(args.first)
-      Bio.send(*args)
-    else
-      raise NameError
-    end
-  end
-
 end
 
diff --git a/lib/bio/alignment.rb b/lib/bio/alignment.rb
index 9c5f5b7..58c5d77 100644
--- a/lib/bio/alignment.rb
+++ b/lib/bio/alignment.rb
@@ -1091,7 +1091,7 @@ module Bio
 
       # generates Phylip3.2 (old) non-interleaved format as a string
       def output_phylipnon(options = {})
-        aln, aseqs, lines = __output_phylip_common(options)
+        aln, aseqs, _ = __output_phylip_common(options)
         aln.first + aseqs.join('')
       end
 
@@ -1476,21 +1476,16 @@ module Bio
 
       # Gets the sequence from given object.
       def extract_seq(obj)
-        seq = nil
         if obj.is_a?(Bio::Sequence::NA) or obj.is_a?(Bio::Sequence::AA) then
-          seq = obj
+          obj
         else
-          for m in [ :seq, :naseq, :aaseq ]
-            begin
-              seq = obj.send(m)
-            rescue NameError, ArgumentError
-              seq = nil
-            end
-            break if seq
-          end
-          seq = obj unless seq
+          meth = [ :seq, :naseq, :aaseq ].find {|m|
+            obj.respond_to? m
+          }
+          meth ?
+            obj.__send__(meth) :
+            obj
         end
-        seq
       end
       module_function :extract_seq
 
@@ -1650,7 +1645,6 @@ module Bio
       # (Like Hash#rehash)
       def rehash
         @seqs.rehash
-        oldkeys = @keys
         tmpkeys = @seqs.keys
         @keys.collect! do |k|
           tmpkeys.delete(k)
diff --git a/lib/bio/appl/blast.rb b/lib/bio/appl/blast.rb
index bb1915d..db86a10 100644
--- a/lib/bio/appl/blast.rb
+++ b/lib/bio/appl/blast.rb
@@ -7,7 +7,6 @@
 # Copyright::  Copyright (C) 2008       Naohisa Goto <ng at bioruby.org>
 # License::    The Ruby License
 #
-# $Id:$
 #
 
 require 'bio/command'
@@ -399,7 +398,7 @@ module Bio
       if fmt = ncbiopt.get('-m') then
         @format = fmt.to_i
       else
-        dummy = Bio::Blast::Report #dummy to load XMLParser or REXML
+        _ = Bio::Blast::Report #dummy to load XMLParser or REXML
         if defined?(XMLParser) or defined?(REXML)
           @format ||= 7
         else
diff --git a/lib/bio/appl/blast/ddbj.rb b/lib/bio/appl/blast/ddbj.rb
deleted file mode 100644
index 76309d1..0000000
--- a/lib/bio/appl/blast/ddbj.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-#
-# = bio/appl/blast/ddbj.rb - Remote BLAST wrapper using DDBJ web service
-# 
-# Copyright::  Copyright (C) 2008       Naohisa Goto <ng at bioruby.org>
-# License::    The Ruby License
-#
-
-require 'bio/io/ddbjrest'
-
-module Bio::Blast::Remote
-
-  # Remote BLAST factory using DDBJ Web API for Biology
-  # (http://xml.nig.ac.jp/).
-  #
-  module DDBJ
-
-    # Creates a remote BLAST factory using DDBJ.
-    # Returns Bio::Blast object.
-    #
-    # Note for future improvement: In the future, it might return
-    # Bio::Blast::Remote::DDBJ or other object. 
-    #
-    def self.new(program, db, options = [])
-      Bio::Blast.new(program, db, options, 'ddbj')
-    end
-
-    # Information about DDBJ BLAST.
-    module Information
-
-      include Bio::Blast::Remote::Information
-
-      # (private) parse database information
-      def _parse_databases
-        if defined? @parse_databases
-          return nil if @parse_databases
-        end
-        drv = Bio::DDBJ::REST::Blast.new
-        str = drv.getSupportDatabaseList
-
-        databases = {}
-        dbdescs = {}
-        keys = [ 'blastn', 'blastp' ]
-        keys.each do |key|
-          databases[key] ||= []
-          dbdescs[key] ||= {}
-        end
-        prefix = ''
-        prefix_count = 0
-        str.each_line do |line|
-          a = line.strip.split(/\s*\-\s*/, 2)
-          case a.size
-          when 1
-            prefix = a[0].to_s.strip
-            prefix += ': ' unless prefix.empty?
-            prefix_count = 0
-            next #each_line
-          when 0
-            prefix = '' if prefix_count > 0
-            next #each_line
-          end
-          name = a[0].to_s.strip.freeze
-          desc = a[1].to_s.strip
-          key = case desc
-                when /\(NT\)\s*$/
-                  'blastn'
-                when /\(AA\)\s*$/
-                  'blastp'
-                else
-                  warn "DDBJ BLAST: could not determine the database is NT or AA: #{line.chomp}" if $VERBOSE
-                  next #each_line
-                end
-          desc = (prefix + desc).freeze
-          prefix_count += 1
-          databases[key].push name
-          dbdescs[key][name] = desc
-        end
-
-        databases['blastp'] ||= []
-        dbdescs['blastp'] ||= []
-
-        databases['blastn'].freeze
-        databases['blastp'].freeze
-
-        databases['blastx']  = databases['blastp']
-        dbdescs['blastx']    = dbdescs['blastp']
-        databases['tblastn'] = databases['blastn']
-        dbdescs['tblastn']   = dbdescs['blastn']
-        databases['tblastx'] = databases['blastn']
-        dbdescs['tblastx']   = dbdescs['blastn']
-
-        @databases = databases
-        @database_descriptions = dbdescs
-        @parse_databases = true
-        true
-      end
-      private :_parse_databases
-
-    end #module Information
-
-    extend Information
-
-    # executes BLAST and returns result as a string
-    def exec_ddbj(query)
-      options = make_command_line_options
-      opt = Bio::Blast::NCBIOptions.new(options)
-
-      # REST objects are cached
-      @ddbj_remote_blast ||= Bio::DDBJ::REST::Blast.new
-      @ddbj_request_manager ||= Bio::DDBJ::REST::RequestManager.new
-
-      program = opt.delete('-p')
-      db = opt.delete('-d')
-      optstr = Bio::Command.make_command_line_unix(opt.options)
-
-      # using searchParamAsync 
-      qid = @ddbj_remote_blast.searchParamAsync(program, db, query, optstr)
-      @output = qid
-
-      result = @ddbj_request_manager.wait_getAsyncResult(qid)
-
-      @output = result
-      return @output
-    end
-
-  end #module DDBJ
-
-  # for lazy load DDBJ module
-  Ddbj = DDBJ
-
-end #module Bio::Blast::Remote
-
diff --git a/lib/bio/appl/blast/format0.rb b/lib/bio/appl/blast/format0.rb
index 905ee52..9352ecf 100644
--- a/lib/bio/appl/blast/format0.rb
+++ b/lib/bio/appl/blast/format0.rb
@@ -256,7 +256,7 @@ module Bio
         # Parses the first line of the BLAST result.
         def format0_parse_header
           unless defined?(@program)
-            if /([\-\w]+) +([\w\-\.\d]+) *\[ *([\-\.\w]+) *\] *(\[.+\])?/ =~ @f0header.to_s
+            if /([\-\w]+) +([\w\-\.]+) *\[ *([\-\.\w]+) *\] *(\[.+\])?/ =~ @f0header.to_s
               @program = $1
               @version = "#{$1} #{$2} [#{$3}]"
               @version_number = $2
@@ -384,10 +384,17 @@ module Bio
 
           # Returns name of the matrix.
           def matrix;      parse_params; @matrix;      end
+
           # Returns the match score of the matrix.
-          def sc_match;    parse_params; @sc_match;    end
+          def sc_match
+            parse_params
+            (defined? @sc_match) ? @sc_match : nil
+          end
           # Returns the mismatch score of the matrix.
-          def sc_mismatch; parse_params; @sc_mismatch; end
+          def sc_mismatch
+            parse_params
+            (defined? @sc_mismatch) ? @sc_mismatch : nil
+          end
 
           # Returns gap open penalty value.
           def gap_open;    parse_params; @gap_open;    end
@@ -571,7 +578,9 @@ module Bio
           # Returns nil if it is not a PHI-BLAST result.
           def pattern
             #PHI-BLAST
-            if !defined?(@pattern) and defined?(@pattern_in_database) then
+            if defined? @pattern
+              @pattern
+            elsif defined? @pattern_in_database then
               @pattern = nil
               @pattern_positions = []
               @f0message.each do |r|
@@ -582,8 +591,10 @@ module Bio
                   @pattern_positions << sc[1].to_i
                 end
               end
+              @pattern
+            else
+              nil
             end
-            @pattern
           end
 
           # (PHI-BLAST) Returns pattern positions.
@@ -662,7 +673,7 @@ module Bio
                     y = b[j]; y.strip!
                     y.reverse!
                     z = y.split(/\s+/, 3)
-                    z.each { |y| y.reverse! }
+                    z.each { |yy| yy.reverse! }
                     h = Hit.new([ z.pop.to_s.sub(/\.+\z/, '') ])
                     bs = z.pop.to_s
                     bs = '1' + bs if bs[0] == ?e
@@ -1043,7 +1054,7 @@ module Bio
           # Defines attributes which call parse_score before accessing.
           def self.method_after_parse_score(*names)
             names.each do |x|
-              module_eval("def #{x}; parse_score; @#{x}; end")
+              module_eval("def #{x}; parse_score; (defined? @#{x}) ? @#{x} : nil; end")
             end
           end
           private_class_method :method_after_parse_score
diff --git a/lib/bio/appl/blast/remote.rb b/lib/bio/appl/blast/remote.rb
index 4df0139..67353ee 100644
--- a/lib/bio/appl/blast/remote.rb
+++ b/lib/bio/appl/blast/remote.rb
@@ -17,21 +17,12 @@ class Blast
     autoload :GenomeNet, 'bio/appl/blast/genomenet'
     autoload :Genomenet, 'bio/appl/blast/genomenet'
 
-    autoload :DDBJ, 'bio/appl/blast/ddbj'
-    autoload :Ddbj, 'bio/appl/blast/ddbj'
-
     # creates a remote BLAST factory using GenomeNet
     def self.genomenet(program, db, options = [])
       GenomeNet.new(program, db, options)
       #Bio::Blast.new(program, db, options, 'genomenet')
     end
 
-    # creates a remote BLAST factory using DDBJ Web service
-    def self.ddbj(program, db, options = [])
-      DDBJ.new(program, db, options)
-      #Bio::Blast.new(program, db, options, 'ddbj')
-    end
-
     # Common methods for meta-information processing
     # (e.g. list of databases).
     module Information
diff --git a/lib/bio/appl/blast/report.rb b/lib/bio/appl/blast/report.rb
index 3db5755..32c382e 100644
--- a/lib/bio/appl/blast/report.rb
+++ b/lib/bio/appl/blast/report.rb
@@ -518,7 +518,7 @@ class Report
     # get an entry as a Bio::Blast::Report object
     def get_parsed_entry
       if @parsed_entries.empty? then
-        ent = get_entry
+        get_entry
       else
         self.parsed_entry = @parsed_entries.shift
         self.entry = nil
diff --git a/lib/bio/appl/clustalw/report.rb b/lib/bio/appl/clustalw/report.rb
index 51f1124..6ebbe61 100644
--- a/lib/bio/appl/clustalw/report.rb
+++ b/lib/bio/appl/clustalw/report.rb
@@ -143,7 +143,9 @@ module Bio
           a[0].gsub!(/\A(\r?\n)+/, '')
           a.collect! { |x| x.split(/\r?\n/) }
           a.each { |x|
-            x.each { |y| y.sub!(/ +\d+\s*$/, '') }} #for -SEQNOS=on option
+            x.each { |y| y.sub!(/ +\d+\s*\z/, '') if /\d\s*\z/ =~ y }
+            # The above "if /\d\s*\z/ =~ y" is for optimization only.
+          } #for -SEQNOS=on option
           @tagsize = ( a[0][0].rindex(/\s/) or -1 ) + 1
           a.each do |x|
             @match_line << x.pop.to_s[@tagsize..-1]
diff --git a/lib/bio/appl/genscan/report.rb b/lib/bio/appl/genscan/report.rb
index a8c9563..96093f3 100644
--- a/lib/bio/appl/genscan/report.rb
+++ b/lib/bio/appl/genscan/report.rb
@@ -5,7 +5,6 @@
 #              Mitsuteru C. Nakao <n at bioruby.org>
 # License::    The Ruby License
 #
-#  $Id:$
 #
 # == Description
 #
@@ -96,7 +95,7 @@ class Genscan
       genes_region = report[i...j]
       genes_region.each_line("\n") do |line|
         if /Init|Intr|Term|PlyA|Prom|Sngl/ =~ line
-          gn, en = line.strip.split(" +")[0].split(/\./).map {|i| i.to_i }
+          gn, en = line.strip.split(" +")[0].split(/\./).map {|ii| ii.to_i }
           add_exon(gn, en, line)
         end
       end
diff --git a/lib/bio/appl/iprscan/report.rb b/lib/bio/appl/iprscan/report.rb
index 90358f3..7babcae 100644
--- a/lib/bio/appl/iprscan/report.rb
+++ b/lib/bio/appl/iprscan/report.rb
@@ -5,7 +5,6 @@
 #               Mitsuteru C. Nakao <mn at kazusa.or.jp>
 # License::     The Ruby License
 #
-#  $Id: report.rb,v 1.9 2007/07/18 11:11:57 nakao Exp $
 #
 # == Report classes for the iprscan program.
 # 
@@ -296,7 +295,7 @@ module Bio
       #   end
       #
       def to_hash
-        unless @ipr_ids
+        unless (defined? @ipr_ids) && @ipr_ids
           @ipr_ids = {} 
           @matches.each_with_index do |match, i|
             @ipr_ids[match.ipr_id] ||= []
diff --git a/lib/bio/appl/meme/mast.rb b/lib/bio/appl/meme/mast.rb
index 791c6ca..24347a6 100644
--- a/lib/bio/appl/meme/mast.rb
+++ b/lib/bio/appl/meme/mast.rb
@@ -94,7 +94,7 @@ module Meme
     # *Returns*:: a Bio::Meme::Mast object
     
     def initialize(mast_location, options = {})
-      unless File.exists?(mast_location)
+      unless File.exist?(mast_location)
         raise ArgumentError.new("mast: command not found : #{mast_location}")
       end
       @binary = mast_location
@@ -137,8 +137,8 @@ module Meme
       @options.each_key do |k|
         raise ArgumentError.new("Invalid option: #{k}") unless DEFAULT_OPTIONS.has_key?(k)
       end
-      raise ArgumentError.new("Motif file not found: #{@options[:mfile]}") if @options[:mfile].nil? or !File.exists?(@options[:mfile])
-      raise ArgumentError.new("Database not found: #{@options[:d]}") if @options[:d].nil? or !File.exists?(@options[:d])
+      raise ArgumentError.new("Motif file not found: #{@options[:mfile]}") if @options[:mfile].nil? or !File.exist?(@options[:mfile])
+      raise ArgumentError.new("Database not found: #{@options[:d]}") if @options[:d].nil? or !File.exist?(@options[:d])
     end
 
     # Run the mast program
@@ -153,4 +153,4 @@ module Meme
     
   end # End class Mast
 end # End module Meme
-end # End module Bio
\ No newline at end of file
+end # End module Bio
diff --git a/lib/bio/appl/meme/mast/report.rb b/lib/bio/appl/meme/mast/report.rb
index f684405..92f642d 100644
--- a/lib/bio/appl/meme/mast/report.rb
+++ b/lib/bio/appl/meme/mast/report.rb
@@ -74,7 +74,7 @@ module Bio
             fields = line.split(/\s/)
             
             if fields.size == 5
-              motifs << Motif.new(fields[0], strand = nil, fields[1], fields[2], fields[3], fields[4])
+              motifs << Motif.new(fields[0], nil, fields[1], fields[2], fields[3], fields[4])
             elsif fields.size == 6
               motifs << Motif.new(fields[0], fields[1], fields[2], fields[3], fields[4], fields[5])
             else
diff --git a/lib/bio/appl/paml/codeml.rb b/lib/bio/appl/paml/codeml.rb
index 229142d..d96edd5 100644
--- a/lib/bio/appl/paml/codeml.rb
+++ b/lib/bio/appl/paml/codeml.rb
@@ -37,9 +37,9 @@ module PAML
   #   require 'bio'
   #   # Reads multi-fasta formatted file and gets a Bio::Alignment object.
   #   alignment = Bio::FlatFile.open(Bio::Alignment::MultiFastaFormat,
-  #                                  'example.fst').alignment
+  #                                  'example.fst').next_entry.alignment
   #   # Reads newick tree from a file
-  #   tree = Bio::FlatFile.open(Bio::Newick, 'example.tree').tree
+  #   tree = Bio::FlatFile.open(Bio::Newick, 'example.tree').next_entry.tree
   #   # Creates a Codeml object
   #   codeml = Bio::PAML::Codeml.new
   #   # Sets parameters
diff --git a/lib/bio/appl/paml/codeml/report.rb b/lib/bio/appl/paml/codeml/report.rb
index da64138..b4d9913 100644
--- a/lib/bio/appl/paml/codeml/report.rb
+++ b/lib/bio/appl/paml/codeml/report.rb
@@ -589,6 +589,7 @@ module Bio::PAML
       def graph_seq
         graph_to_s(lambda { |site |
           symbol = site.aaref
+          symbol
         })
       end
       
diff --git a/lib/bio/appl/paml/common.rb b/lib/bio/appl/paml/common.rb
index 6d50ba7..6b07ffb 100644
--- a/lib/bio/appl/paml/common.rb
+++ b/lib/bio/appl/paml/common.rb
@@ -195,7 +195,7 @@ module PAML
             raise RuntimeError, msg.join("; ")
           end
           # exec command
-          stdout = exec_local([ ctlfn ], { :chdir => path })
+          exec_local([ ctlfn ], { :chdir => path })
           # get main output
           outfile.open
           @output = outfile.read
diff --git a/lib/bio/appl/sosui/report.rb b/lib/bio/appl/sosui/report.rb
index d106e7c..385cc61 100644
--- a/lib/bio/appl/sosui/report.rb
+++ b/lib/bio/appl/sosui/report.rb
@@ -5,7 +5,6 @@
 #               Mitsuteru C. Nakao <n at bioruby.org>
 # License::     The Ruby License
 #
-#  $Id:$
 #
 # == Example
 #
@@ -60,7 +59,7 @@ module Bio
           if /NUMBER OF TM HELIX = (\d+)/ =~ line
             @tms = $1
           elsif /TM (\d+) +(\d+)- *(\d+) (\w+) +(\w+)/ =~ line
-            tmh  = $1.to_i
+            #tmh  = $1.to_i
             range = Range.new($2.to_i, $3.to_i)
             grade = $4
             seq   = $5
diff --git a/lib/bio/command.rb b/lib/bio/command.rb
index 1b54a2a..bcf022f 100644
--- a/lib/bio/command.rb
+++ b/lib/bio/command.rb
@@ -6,7 +6,6 @@
 #		Toshiaki Katayama <k at bioruby.org>
 # License::	The Ruby License
 #
-#  $Id:$
 #
 
 require 'open3'
@@ -856,7 +855,7 @@ module Command
         end.join('&')
       end
     when String
-      data = URI.escape(params.strip)
+      raise TypeError, 'Bio::Command.make_cgi_params no longer accepts a single String as a form'
     end
     return data
   end
@@ -882,6 +881,67 @@ module Command
     return result
   end
 
+  # Same as:
+  #  http = Net::HTTP.new(...); http.post(path, data, header)
+  # and 
+  # it uses proxy if an environment variable (same as OpenURI.open_uri)
+  # is set.
+  # In addition, +header+ can be set.
+  # (Default Content-Type is application/octet-stream.
+  # Content-Length is automatically set by default.)
+  # +uri+ must be a URI object, +params+ must be a hash, and
+  # +header+ must be a hash.
+  #
+  # ---
+  # *Arguments*:
+  # * (required) _http_: Net::HTTP object or compatible object
+  # * (required) _path_: String
+  # * (required) _data_: String containing data
+  # * (optional) _header_: Hash containing header strings
+  # *Returns*:: (same as Net::HTTP::post)
+  def http_post(http, path, data, header = {})
+    hash = {
+      'Content-Type'   => 'application/octet-stream',
+      'Content-Length' => data.length.to_s
+    }
+    hash.update(header)
+
+    http.post(path, data, hash)
+  end
+
+  # Same as:
+  # Net::HTTP.post(uri, params)
+  # and 
+  # it uses proxy if an environment variable (same as OpenURI.open_uri)
+  # is set.
+  # In addition, +header+ can be set.
+  # (Default Content-Type is application/octet-stream.
+  # Content-Length is automatically set by default.)
+  # +uri+ must be a URI object, +data+ must be a String, and
+  # +header+ must be a hash.
+  #
+  # ---
+  # *Arguments*:
+  # * (required) _uri_: URI object or String
+  # * (optional) _data_: String containing data
+  # * (optional) _header_: Hash containing header strings
+  # *Returns*:: (same as Net::HTTP::post)
+  def post(uri, data, header = {})
+    unless uri.is_a?(URI)
+      uri = URI.parse(uri)
+    end
+
+    hash = {
+      'Content-Type'   => 'application/octet-stream',
+      'Content-Length' => data.length.to_s
+    }
+    hash.update(header)
+
+    start_http(uri.host, uri.port) do |http|
+      http.post(uri.path, data, hash)
+    end
+  end
+
 end # module Command
 end # module Bio
 
diff --git a/lib/bio/data/aa.rb b/lib/bio/data/aa.rb
index e4dc948..f9cd0f0 100644
--- a/lib/bio/data/aa.rb
+++ b/lib/bio/data/aa.rb
@@ -108,23 +108,21 @@ class AminoAcid
     }
 
     def weight(x = nil)
-      if x
-        if x.length > 1
-          total = 0.0
-          x.each_byte do |byte|
-            aa = byte.chr.upcase
-            if WEIGHT[aa]
-              total += WEIGHT[aa]
-            else
-              raise "Error: invalid amino acid '#{aa}'"
-            end
+      return WEIGHT unless x
+
+      if x.length > 1
+        total = 0.0
+        x.each_byte do |byte|
+          aa = byte.chr.upcase
+          if WEIGHT[aa]
+            total += WEIGHT[aa]
+          else
+            raise "Error: invalid amino acid '#{aa}'"
           end
-          total -= NucleicAcid.weight[:water] * (x.length - 1)
-        else
-          WEIGHT[x]
         end
+        total -= NucleicAcid.weight[:water] * (x.length - 1)
       else
-        WEIGHT
+        WEIGHT[x]
       end
     end
 
@@ -237,11 +235,7 @@ class AminoAcid
 
 
     def reverse
-      hash = Hash.new
-      NAMES.each do |k, v|
-        hash[v] = k
-      end
-      hash
+      @reverse ||= NAMES.invert
     end
 
   end
@@ -254,18 +248,6 @@ class AminoAcid
   extend Data
 
 
-  private
-
-
-  # override when used as an instance method to improve performance
-  alias orig_reverse reverse
-  def reverse
-    unless @reverse
-      @reverse = orig_reverse
-    end
-    @reverse
-  end
-
 end
 
 end # module Bio
diff --git a/lib/bio/data/codontable.rb b/lib/bio/data/codontable.rb
index 91f431b..d06651e 100644
--- a/lib/bio/data/codontable.rb
+++ b/lib/bio/data/codontable.rb
@@ -5,7 +5,6 @@
 #		Toshiaki Katayama <k at bioruby.org>
 # License::	The Ruby License
 #
-# $Id:$
 #
 # == Data source
 #
@@ -127,7 +126,7 @@ class CodonTable
   #   table.revtrans("A")	# => ["gcg", "gct", "gca", "gcc"]
   #
   def revtrans(aa)
-    unless @reverse
+    unless (defined? @reverse) && @reverse
       @reverse = {}
       @table.each do |k, v|
         @reverse[v] ||= []
diff --git a/lib/bio/db/biosql/biosql_to_biosequence.rb b/lib/bio/db/biosql/biosql_to_biosequence.rb
index 75789a7..0169762 100644
--- a/lib/bio/db/biosql/biosql_to_biosequence.rb
+++ b/lib/bio/db/biosql/biosql_to_biosequence.rb
@@ -11,6 +11,7 @@
 
 require 'bio/sequence'
 require 'bio/sequence/adapter'
+require 'bio/sequence/dblink'
 
 # Internal use only. Normal users should not use this module.
 #
diff --git a/lib/bio/db/biosql/sequence.rb b/lib/bio/db/biosql/sequence.rb
index 3e9cac8..af1a3d3 100644
--- a/lib/bio/db/biosql/sequence.rb
+++ b/lib/bio/db/biosql/sequence.rb
@@ -371,7 +371,7 @@ module Bio
         #probably would be better to d a class refrence to collect these informations
         @entry.bioentry_references.collect do |bio_ref|
           hash = Hash.new
-          hash['authors'] = bio_ref.reference.authors.gsub(/\.\s/, "\.\s\|").split(/\|/)
+          hash['authors'] = bio_ref.reference.authors.gsub(/\.\s/, "\.\s\|").split(/\|/) if (bio_ref.reference and bio_ref.reference.authors)
 
           hash['sequence_position'] = "#{bio_ref.start_pos}-#{bio_ref.end_pos}" if (bio_ref.start_pos and bio_ref.end_pos)
           hash['title'] = bio_ref.reference.title
diff --git a/lib/bio/db/embl/common.rb b/lib/bio/db/embl/common.rb
index 9949e7a..71cebde 100644
--- a/lib/bio/db/embl/common.rb
+++ b/lib/bio/db/embl/common.rb
@@ -149,7 +149,7 @@ module Common
     unless @data['OS']
       os = Array.new
       fetch('OS').split(/, and|, /).each do |tmp|
-        if tmp =~ /([A-Z][a-z]* *[\w\d \:\'\+\-]+[\w\d])/
+        if tmp =~ /([A-Z][a-z]* *[\w \:\'\+\-]+\w)/
           org = $1
           tmp =~ /(\(.+\))/ 
           os.push({'name' => $1, 'os' => org})
diff --git a/lib/bio/db/embl/embl.rb b/lib/bio/db/embl/embl.rb
index c853023..8d7aebc 100644
--- a/lib/bio/db/embl/embl.rb
+++ b/lib/bio/db/embl/embl.rb
@@ -267,9 +267,10 @@ class EMBL < EMBLDB
     unless @data['OS']
       os = Array.new
       tmp = fetch('OS')
-      if /([A-Z][a-z]* *[\w\d \:\'\+\-]+[\w\d]) *\(([\w\d ]+)\)\s*\z/ =~ tmp
+      if /([A-Z][a-z]* *[\w \:\'\+\-]+\w) *\(([\w ]+)\)\s*\z/ =~ tmp
         org = $1
-        os.push({'name' => $2, 'os' => $1})
+        name = $2
+        os.push({'name' => name, 'os' => org})
       else
         os.push({'name' => nil, 'os' => tmp})
       end
@@ -340,7 +341,7 @@ class EMBL < EMBLDB
       @orig['FT'].each_line do |line|
         next if line =~ /^FEATURES/
 
-        head = line[0,20].strip  # feature key (source, CDS, ...)
+        #head = line[0,20].strip  # feature key (source, CDS, ...)
         body = line[20,60].chomp # feature value (position, /qualifier=)
         if line =~ /^FT {3}(\S+)/
           ary.push([ $1, body ]) # [ feature, position, /q="data", ... ]
@@ -491,7 +492,7 @@ class EMBL < EMBLDB
   def parse_release_version(str)
     return [ nil, nil ] unless str
     a = str.split(/[\(\,\)]/)
-    dstr = a.shift
+    a.shift #date string e.g. "14-OCT-2006"
     rel = nil
     ver = nil
     a.each do |x|
diff --git a/lib/bio/db/embl/format_embl.rb b/lib/bio/db/embl/format_embl.rb
index 369c93d..d6052b0 100644
--- a/lib/bio/db/embl/format_embl.rb
+++ b/lib/bio/db/embl/format_embl.rb
@@ -126,9 +126,9 @@ module Bio::Sequence::Format::NucFormatter
     def mol_type_embl
       if mt = molecule_type then
         mt
-      elsif f = (features or []).find { |f| f.feature == 'source' } and
-          q = f.qualifiers.find { |q| q.qualifier == 'mol_type' } then
-        q.value
+      elsif fe = (features or []).find { |f| f.feature == 'source' } and
+          qu = fe.qualifiers.find { |q| q.qualifier == 'mol_type' } then
+        qu.value
       else
         'NA'
       end
diff --git a/lib/bio/db/embl/sptr.rb b/lib/bio/db/embl/sptr.rb
index 5109740..4683b27 100644
--- a/lib/bio/db/embl/sptr.rb
+++ b/lib/bio/db/embl/sptr.rb
@@ -1,1455 +1,20 @@
 #
-# = bio/db/embl/sptr.rb - UniProt/SwissProt and TrEMBL database class
+# = bio/db/embl/sptr.rb - Bio::SPTR is an alias of Bio::UniProtKB
 # 
-# Copyright::   Copyright (C) 2001-2006  Mitsuteru C. Nakao <n at bioruby.org>
+# Copyright::   Copyright (C) 2013 BioRuby Project
 # License::     The Ruby License
 #
-# $Id:$
-#
-# == Description
-# 
-# Shared methods for UniProtKB/SwissProt and TrEMBL classes.
-#
-# See the SWISS-PROT document file SPECLIST.TXT or UniProtKB/SwissProt 
-# user manual.
-# 
-# == Examples
-#
-#   str = File.read("p53_human.swiss")
-#   obj = Bio::SPTR.new(str)
-#   obj.entry_id #=> "P53_HUMAN"
-# 
-# == References
-# 
-# * Swiss-Prot Protein knowledgebase. TrEMBL Computer-annotated supplement 
-#   to Swiss-Prot	
-#   http://au.expasy.org/sprot/
-#
-# * UniProt
-#   http://uniprot.org/
-#
-# * The UniProtKB/SwissProt/TrEMBL User Manual
-#   http://www.expasy.org/sprot/userman.html
-#
-
 
-require 'bio/db'
-require 'bio/db/embl/common'
+warn "Bio::SPTR is changed to an alias of Bio::UniProtKB. Please use Bio::UniProtKB. Bio::SPTR may be deprecated in the future." if $VERBOSE
 
 module Bio
 
-# Parser class for UniProtKB/SwissProt and TrEMBL database entry.
-class SPTR < EMBLDB
-  include Bio::EMBLDB::Common
-    
-  @@entry_regrexp = /[A-Z0-9]{1,4}_[A-Z0-9]{1,5}/
-  @@data_class = ["STANDARD", "PRELIMINARY"]
-
-  # returns a Hash of the ID line.
-  #
-  # returns a content (Int or String) of the ID line by a given key.
-  # Hash keys: ['ENTRY_NAME', 'DATA_CLASS', 'MODECULE_TYPE', 'SEQUENCE_LENGTH']
-  #
-  # === ID Line (since UniProtKB release 9.0 of 31-Oct-2006)
-  #   ID   P53_HUMAN               Reviewed;         393 AA.
-  #   #"ID  #{ENTRY_NAME} #{DATA_CLASS}; #{SEQUENCE_LENGTH}."
-  #
-  # === Examples
-  #   obj.id_line  #=> {"ENTRY_NAME"=>"P53_HUMAN", "DATA_CLASS"=>"Reviewed", 
-  #                     "SEQUENCE_LENGTH"=>393, "MOLECULE_TYPE"=>nil}
-  #
-  #   obj.id_line('ENTRY_NAME') #=> "P53_HUMAN"
-  #
-  # 
-  # === ID Line (older style)
-  #   ID   P53_HUMAN      STANDARD;      PRT;   393 AA.
-  #   #"ID  #{ENTRY_NAME} #{DATA_CLASS}; #{MOLECULE_TYPE}; #{SEQUENCE_LENGTH}."
-  #
-  # === Examples
-  #   obj.id_line  #=> {"ENTRY_NAME"=>"P53_HUMAN", "DATA_CLASS"=>"STANDARD", 
-  #                     "SEQUENCE_LENGTH"=>393, "MOLECULE_TYPE"=>"PRT"}
-  #
-  #   obj.id_line('ENTRY_NAME') #=> "P53_HUMAN"
-  #
-  def id_line(key = nil)
-    return id_line[key] if key
-    return @data['ID'] if @data['ID']
-
-    part = @orig['ID'].split(/ +/)         
-    if part[4].to_s.chomp == 'AA.' then
-      # after UniProtKB release 9.0 of 31-Oct-2006
-      # (http://www.uniprot.org/docs/sp_news.htm)
-      molecule_type   = nil
-      sequence_length = part[3].to_i
-    else
-      molecule_type   = part[3].sub(/;/,'')
-      sequence_length = part[4].to_i
-    end
-    @data['ID'] = {
-      'ENTRY_NAME'      => part[1],
-      'DATA_CLASS'      => part[2].sub(/;/,''),
-      'MOLECULE_TYPE'   => molecule_type,
-      'SEQUENCE_LENGTH' => sequence_length
-    }
-  end
-
-
-  # returns a ENTRY_NAME in the ID line. 
-  #
-  def entry_id
-    id_line('ENTRY_NAME')
-  end
-  alias entry_name entry_id
-  alias entry entry_id
-
-
-  # returns a MOLECULE_TYPE in the ID line.
-  #
-  # A short-cut for Bio::SPTR#id_line('MOLECULE_TYPE').
-  def molecule
-    id_line('MOLECULE_TYPE')
-  end
-  alias molecule_type molecule
-
-
-  # returns a SEQUENCE_LENGTH in the ID line.
-  # 
-  # A short-cut for Bio::SPTR#id_line('SEQUENCE_LENGHT').
-  def sequence_length
-    id_line('SEQUENCE_LENGTH')
-  end
-  alias aalen sequence_length
-
-
-  # Bio::EMBLDB::Common#ac  -> ary
-  #                  #accessions  -> ary
-  #                  #accession  -> String (accessions.first)
-  @@ac_regrexp = /[OPQ][0-9][A-Z0-9]{3}[0-9]/ 
-
-
-
-  # returns a Hash of information in the DT lines.
-  #  hash keys: 
-  #    ['created', 'sequence', 'annotation']
-  #--
-  #  also Symbols acceptable (ASAP):
-  #    [:created, :sequence, :annotation]
-  #++
-  #
-  # Since UniProtKB release 7.0 of 07-Feb-2006, the DT line format is
-  # changed, and the word "annotation" is no longer used in DT lines.
-  # Despite the change, the word "annotation" is still used for keeping
-  # compatibility.
-  #
-  # returns a String of information in the DT lines by a given key.
-  #
-  # === DT Line; date (3/entry)
-  #   DT DD-MMM-YYY (integrated into UniProtKB/XXXXX.)
-  #   DT DD-MMM-YYY (sequence version NN)
-  #   DT DD-MMM-YYY (entry version NN)
-  #
-  # The format have been changed in UniProtKB release 7.0 of 07-Feb-2006.
-  # Below is the older format.
-  #
-  # === Old format of DT Line; date (3/entry)
-  #   DT DD-MMM-YYY (rel. NN, Created)
-  #   DT DD-MMM-YYY (rel. NN, Last sequence update)
-  #   DT DD-MMM-YYY (rel. NN, Last annotation update)
-  def dt(key = nil)
-    return dt[key] if key
-    return @data['DT'] if @data['DT']
-
-    part = self.get('DT').split(/\n/)
-    @data['DT'] = {
-      'created'    => part[0].sub(/\w{2}   /,'').strip,
-      'sequence'   => part[1].sub(/\w{2}   /,'').strip,
-      'annotation' => part[2].sub(/\w{2}   /,'').strip
-    }
-  end
-
-
-  # (private) parses DE line (description lines)
-  # since UniProtKB release 14.0 of 22-Jul-2008
-  #
-  # Return array containing array.
-  #
-  # http://www.uniprot.org/docs/sp_news.htm
-  def parse_DE_line_rel14(str)
-    # Retruns if it is not the new format since Rel.14
-    return nil unless /^DE   (RecName|AltName|SubName)\: / =~ str
-    ret = []
-    cur = nil
-    str.each_line do |line|
-      case line
-      when /^DE   (Includes|Contains)\: *$/
-        cur = [ $1 ]
-        ret.push cur
-        cur = nil
-        #subcat_and_desc = nil
-        next
-      when /^DE   *(RecName|AltName|SubName)\: +(.*)/
-        category = $1
-        subcat_and_desc = $2
-        cur = [ category ]
-        ret.push cur
-      when /^DE   *(Flags)\: +(.*)/
-        category = $1
-        desc = $2
-        flags = desc.strip.split(/\s*\;\s*/) || []
-        cur = [ category, flags ]
-        ret.push cur
-        cur = nil
-        #subcat_and_desc = nil
-        next
-      when /^DE   *(.*)/
-        subcat_and_desc = $1
-      else
-        warn "Warning: skipped DE line in unknown format: #{line.inspect}"
-        #subcat_and_desc = nil
-        next
-      end
-      case subcat_and_desc
-      when nil
-        # does nothing
-      when /\A([^\=]+)\=(.*)/
-        subcat = $1
-        desc = $2
-        desc.sub!(/\;\s*\z/, '')
-        unless cur
-          warn "Warning: unknown category in DE line: #{line.inspect}"
-          cur = [ '' ]
-          ret.push cur
-        end
-        cur.push [ subcat, desc ]
-      else
-        warn "Warning: skipped DE line description in unknown format: #{line.inspect}"
-      end
-    end
-    ret
-  end
-  private :parse_DE_line_rel14
-
-  # returns the proposed official name of the protein.
-  # Returns a String.
-  #
-  # Since UniProtKB release 14.0 of 22-Jul-2008, the DE line format have
-  # been changed. The method returns the full name which is taken from
-  # "RecName: Full=" or "SubName: Full=" line normally in the beginning of
-  # the DE lines. 
-  # Unlike parser for old format, no special treatments for fragment or
-  # precursor.
-  #
-  # For old format, the method parses the DE lines and returns the protein
-  # name as a String.
-  # 
-  # === DE Line; description (>=1)
-  #  "DE #{OFFICIAL_NAME} (#{SYNONYM})"
-  #  "DE #{OFFICIAL_NAME} (#{SYNONYM}) [CONTEINS: #1; #2]."
-  #  OFFICIAL_NAME  1/entry
-  #  SYNONYM        >=0
-  #  CONTEINS       >=0
-  def protein_name
-    @data['DE'] ||= parse_DE_line_rel14(get('DE'))
-    parsed_de_line = @data['DE']
-    if parsed_de_line then
-      # since UniProtKB release 14.0 of 22-Jul-2008
-      name = nil
-      parsed_de_line.each do |a|
-        case a[0]
-        when 'RecName', 'SubName'
-          if name_pair = a[1..-1].find { |b| b[0] == 'Full' } then
-            name = name_pair[1]
-            break
-          end
-        end
-      end
-      name = name.to_s
-    else
-      # old format (before Rel. 13.x)
-      name = ""
-      if de_line = fetch('DE') then
-        str = de_line[/^[^\[]*/] # everything preceding the first [ (the "contains" part)
-        name = str[/^[^(]*/].strip
-        name << ' (Fragment)' if str =~ /fragment/i
-      end
-    end
-    return name
-  end
-
-
-  # returns synonyms (unofficial and/or alternative names).
-  # Returns an Array containing String objects.
-  #
-  # Since UniProtKB release 14.0 of 22-Jul-2008, the DE line format have
-  # been changed. The method returns the full or short names which are
-  # taken from "RecName: Short=", "RecName: EC=", and AltName lines,
-  # except after "Contains:" or "Includes:".
-  # For keeping compatibility with old format parser, "RecName: EC=N.N.N.N"
-  # is reported as "EC N.N.N.N".
-  # In addition, to prevent confusion, "Allergen=" and "CD_antigen=" 
-  # prefixes are added for the corresponding fields.
-  #
-  # For old format, the method parses the DE lines and returns synonyms.
-  # synonyms are each placed in () following the official name on the DE line.
-  def synonyms
-    ary = Array.new
-    @data['DE'] ||= parse_DE_line_rel14(get('DE'))
-    parsed_de_line = @data['DE']
-    if parsed_de_line then
-      # since UniProtKB release 14.0 of 22-Jul-2008
-      parsed_de_line.each do |a|
-        case a[0]
-        when 'Includes', 'Contains'
-          break #the each loop
-        when 'RecName', 'SubName', 'AltName'
-          a[1..-1].each do |b|
-            if name = b[1] and b[1] != self.protein_name then
-              case b[0]
-              when 'EC'
-                name = "EC " + b[1]
-              when 'Allergen', 'CD_antigen'
-                name = b[0] + '=' + b[1]
-              else
-                name = b[1]
-              end
-              ary.push name
-            end
-          end
-        end #case a[0]
-      end #parsed_de_line.each
-    else
-      # old format (before Rel. 13.x)
-      if de_line = fetch('DE') then
-        line = de_line.sub(/\[.*\]/,'') # ignore stuff between [ and ].  That's the "contains" part
-      line.scan(/\([^)]+/) do |synonym| 
-        unless synonym =~ /fragment/i then 
-          ary << synonym[1..-1].strip # index to remove the leading (  
-        end
-        end
-      end
-    end
-    return ary
-  end
-
-
-  # returns gene names in the GN line.
-  #
-  # New UniProt/SwissProt format:
-  # * Bio::SPTR#gn -> [ <gene record>* ]
-  # where <gene record> is:
-  #                    { :name => '...', 
-  #                      :synonyms => [ 's1', 's2', ... ],
-  #                      :loci   => [ 'l1', 'l2', ... ],
-  #                      :orfs     => [ 'o1', 'o2', ... ] 
-  #                    }
-  #
-  # Old format:
-  # * Bio::SPTR#gn -> Array      # AND 
-  # * Bio::SPTR#gn[0] -> Array   # OR
-  #
-  # === GN Line: Gene name(s) (>=0, optional)
-  def gn
-    unless @data['GN']
-      case fetch('GN')
-      when /Name=/,/ORFNames=/,/OrderedLocusNames=/,/Synonyms=/
-        @data['GN'] = gn_uniprot_parser
-      else
-        @data['GN'] = gn_old_parser
-      end
-    end
-    @data['GN']
-  end
-
-
-  # returns contents in the old style GN line.
-  # === GN Line: Gene name(s) (>=0, optional)
-  #  GN   HNS OR DRDX OR OSMZ OR BGLY.
-  #  GN   CECA1 AND CECA2.
-  #  GN   CECA1 AND (HOGE OR FUGA).
-  #
-  #  GN NAME1 [(AND|OR) NAME]+.
-  #
-  # Bio::SPTR#gn -> Array      # AND 
-  #          #gn[0] -> Array   # OR
-  #          #gene_names -> Array
-  def gn_old_parser
-    names = Array.new
-    if get('GN').size > 0
-      names = fetch('GN').sub(/\.$/,'').split(/ AND /)
-      names.map! { |synonyms|
-        synonyms = synonyms.gsub(/\(|\)/,'').split(/ OR /).map { |e|
-          e.strip 
-        }
-      }
-    end
-    @data['GN'] = names
-  end
-  private :gn_old_parser
-
-  # returns contents in the structured GN line.
-  # The new format of the GN line is:
-  #  GN   Name=; Synonyms=[, ...]; OrderedLocusNames=[, ...];
-  #  GN   ORFNames=[, ...];
-  #
-  # * Bio::SPTR#gn -> [ <gene record>* ]
-  # where <gene record> is:
-  #                    { :name => '...', 
-  #                      :synonyms => [ 's1', 's2', ... ],
-  #                      :loci   => [ 'l1', 'l2', ... ],
-  #                      :orfs     => [ 'o1', 'o2', ... ] 
-  #                    }
-  def gn_uniprot_parser
-    @data['GN'] = Array.new
-    gn_line = fetch('GN').strip
-    records = gn_line.split(/\s*and\s*/)
-    records.each do |record|
-      gene_hash = {:name => '', :synonyms => [], :loci => [], :orfs => []}
-      record.each_line(';') do |element|
-        case element
-        when /Name=/ then
-          gene_hash[:name] = $'[0..-2]
-        when /Synonyms=/ then
-          gene_hash[:synonyms] = $'[0..-2].split(/\s*,\s*/)
-        when /OrderedLocusNames=/ then
-          gene_hash[:loci] = $'[0..-2].split(/\s*,\s*/)
-        when /ORFNames=/ then
-          gene_hash[:orfs] = $'[0..-2].split(/\s*,\s*/)
-        end
-      end
-      @data['GN'] << gene_hash
-    end
-    return @data['GN']
-  end
-  private :gn_uniprot_parser
-
-
-  # returns a Array of gene names in the GN line.
-  def gene_names
-    gn # set @data['GN'] if it hasn't been already done
-    if @data['GN'].first.class == Hash then
-      @data['GN'].collect { |element| element[:name] }
-    else
-      @data['GN'].first
-    end
-  end
-
-
-  # returns a String of the first gene name in the GN line.
-  def gene_name
-    gene_names.first
-  end
-
-
-  # returns a Array of Hashs or a String of the OS line when a key given.
-  # * Bio::EMBLDB#os  -> Array
-  #  [{'name' => '(Human)', 'os' => 'Homo sapiens'}, 
-  #   {'name' => '(Rat)', 'os' => 'Rattus norveticus'}]
-  # * Bio::EPTR#os[0] -> Hash 
-  #  {'name' => "(Human)", 'os' => 'Homo sapiens'}
-  # * Bio::SPTR#os[0]['name'] -> "(Human)"
-  # * Bio::EPTR#os(0) -> "Homo sapiens (Human)"
-  # 
-  # === OS Line; organism species (>=1)
-  #  OS   Genus species (name).
-  #  OS   Genus species (name0) (name1).
-  #  OS   Genus species (name0) (name1).
-  #  OS   Genus species (name0), G s0 (name0), and G s (name0) (name1).
-  #  OS   Homo sapiens (Human), and Rarrus norveticus (Rat)
-  #  OS   Hippotis sp. Clark and Watts 825.
-  #  OS   unknown cyperaceous sp.
-  def os(num = nil)
-    unless @data['OS']
-      os = Array.new
-      fetch('OS').split(/, and|, /).each do |tmp|
-        if tmp =~ /(\w+ *[\w\d \:\'\+\-\.]+[\w\d\.])/
-          org = $1
-          tmp =~ /(\(.+\))/ 
-          os.push({'name' => $1, 'os' => org})
-        else
-          raise "Error: OS Line. #{$!}\n#{fetch('OS')}\n"
-        end
-      end
-      @data['OS'] = os
-    end
-
-    if num
-      # EX. "Trifolium repens (white clover)"
-      return "#{@data['OS'][num]['os']} #{@data['OS'][num]['name']}"
-    else
-      return @data['OS']
-    end
-  end
-  
-
-  # Bio::EMBLDB::Common#og -> Array
-  # OG Line; organella (0 or 1/entry)
-  # ["MITOCHONDRION", "CHLOROPLAST", "Cyanelle", "Plasmid"]
-  #  or a plasmid name (e.g. "Plasmid pBR322").  
-
-
-  # Bio::EMBLDB::Common#oc -> Array
-  # OC Line; organism classification (>=1)
-  # "OC   Eukaryota; Alveolata; Apicomplexa; Piroplasmida; Theileriidae;"
-  # "OC   Theileria."
-
-
-
-  # returns a Hash of oraganism taxonomy cross-references.
-  # * Bio::SPTR#ox -> Hash
-  #    {'NCBI_TaxID' => ['1234','2345','3456','4567'], ...}
-  #
-  # === OX Line; organism taxonomy cross-reference (>=1 per entry)
-  #  OX   NCBI_TaxID=1234;
-  #  OX   NCBI_TaxID=1234, 2345, 3456, 4567;
-  def ox
-    unless @data['OX']
-      tmp = fetch('OX').sub(/\.$/,'').split(/;/).map { |e| e.strip }
-      hsh = Hash.new
-      tmp.each do |e|
-        db,refs = e.split(/=/)
-        hsh[db] = refs.split(/, */)
-      end
-      @data['OX'] = hsh
-    end
-    return @data['OX']
-  end
-
-  # === The OH Line;  
-  #
-  # OH   NCBI_TaxID=TaxID; HostName.
-  # http://br.expasy.org/sprot/userman.html#OH_line
-  def oh
-    unless @data['OH']
-      @data['OH'] = fetch('OH').split("\. ").map {|x|
-        if x =~ /NCBI_TaxID=(\d+);/
-          taxid = $1
-        else
-          raise ArgumentError, ["Error: Invalid OH line format (#{self.entry_id}):",
-                                $!, "\n", get('OH'), "\n"].join
-          
-        end
-        if x =~ /NCBI_TaxID=\d+; (.+)/ 
-          host_name = $1
-          host_name.sub!(/\.$/, '')
-        else
-          host_name = nil
-        end
-        {'NCBI_TaxID' => taxid, 'HostName' => host_name}
-      }
-    end
-    @data['OH']
-  end
-
-
-  
-  # Bio::EMBLDB::Common#ref -> Array
-  # R Lines
-  # RN RC RP RX RA RT RL
-
-  # returns contents in the R lines.
-  # * Bio::EMBLDB::Common#ref -> [ <refernece information Hash>* ]
-  # where <reference information Hash> is:
-  #  {'RN' => '', 'RC' => '', 'RP' => '', 'RX' => '', 
-  #   'RA' => '', 'RT' => '', 'RL' => '', 'RG' => ''}
-  # 
-  # R Lines
-  # * RN RC RP RX RA RT RL RG
-  def ref
-    unless @data['R']
-      @data['R'] = [get('R').split(/\nRN   /)].flatten.map { |str|
-        hash = {'RN' => '', 'RC' => '', 'RP' => '', 'RX' => '', 
-               'RA' => '', 'RT' => '', 'RL' => '', 'RG' => ''}
-        str = 'RN   ' + str unless /^RN   / =~ str
-
-        str.split("\n").each do |line|
-          if /^(R[NPXARLCTG])   (.+)/ =~ line
-            hash[$1] += $2 + ' '
-          else
-            raise "Invalid format in R lines, \n[#{line}]\n"
-          end
-        end
-
-        hash['RN'] = set_RN(hash['RN'])
-        hash['RC'] = set_RC(hash['RC'])
-        hash['RP'] = set_RP(hash['RP'])
-        hash['RX'] = set_RX(hash['RX'])
-        hash['RA'] = set_RA(hash['RA'])
-        hash['RT'] = set_RT(hash['RT'])
-        hash['RL'] = set_RL(hash['RL'])
-        hash['RG'] = set_RG(hash['RG'])
-
-        hash
-      }
-
-    end
-    @data['R']
-  end
-
-  def set_RN(data)
-    data.strip
-  end
-
-  def set_RC(data)
-    data.scan(/([STP]\w+)=(.+);/).map { |comment|
-      [comment[1].split(/, and |, /)].flatten.map { |text|
-        {'Token' => comment[0], 'Text' => text}
-      }
-    }.flatten
-  end
-  private :set_RC
-
-  def set_RP(data)
-    data = data.strip
-    data = data.sub(/\.$/, '')
-    data.split(/, AND |, /i).map {|x| 
-      x = x.strip
-      x = x.gsub('  ', ' ')
-    }
-  end
-  private :set_RP
-
-  def set_RX(data)
-    rx = {'MEDLINE' => nil, 'PubMed' => nil, 'DOI' => nil}
-    if data =~ /MEDLINE=(.+?);/
-      rx['MEDLINE'] = $1
-    end
-    if data =~ /PubMed=(.+?);/
-      rx['PubMed'] = $1
-    end
-    if data =~ /DOI=(.+?);/
-      rx['DOI'] = $1
-    end
-    rx
-  end
-  private :set_RX
-
-  def set_RA(data)
-    data = data.sub(/; *$/, '')
-  end
-  private :set_RA
-
-  def set_RT(data)
-    data = data.sub(/; *$/, '')
-    data = data.gsub(/(^"|"$)/, '')
-  end
-  private :set_RT
-
-  def set_RL(data)
-    data = data.strip
-  end
-  private :set_RL
-
-  def set_RG(data)
-    data = data.split('; ')
-  end
-  private :set_RG
-
-
-
-  # returns Bio::Reference object from Bio::EMBLDB::Common#ref.
-  # * Bio::EMBLDB::Common#ref -> Bio::References
-  def references
-    unless @data['references']
-      ary = self.ref.map {|ent|
-        hash = Hash.new('')
-        ent.each {|key, value|
-          case key
-          when 'RA'
-            hash['authors'] = value.split(/, /)
-          when 'RT'
-            hash['title'] = value
-          when 'RL'
-            if value =~ /(.*) (\d+) \((\d+)\), (\d+-\d+) \((\d+)\)$/
-              hash['journal'] = $1
-              hash['volume']  = $2
-              hash['issue']   = $3
-              hash['pages']   = $4
-              hash['year']    = $5
-            else
-              hash['journal'] = value
-            end
-          when 'RX'  # PUBMED, MEDLINE, DOI
-            value.each do |tag, xref|
-              hash[ tag.downcase ]  = xref
-            end
-          end
-        }
-        Reference.new(hash)
-      }
-      @data['references'] = References.new(ary)
-    end
-    @data['references']
-  end
-
-
-
-
-
-
-  # === The HI line
-  # Bio::SPTR#hi #=> hash
-  def hi
-    unless @data['HI']
-      @data['HI'] = []
-      fetch('HI').split(/\. /).each do |hlist|
-        hash = {'Category' => '',  'Keywords' => [], 'Keyword' => ''}
-        hash['Category'], hash['Keywords'] = hlist.split(': ')
-        hash['Keywords'] = hash['Keywords'].split('; ')
-        hash['Keyword'] = hash['Keywords'].pop
-        hash['Keyword'].sub!(/\.$/, '')
-        @data['HI'] << hash
-      end
-    end
-    @data['HI']
-  end
-
-
-  @@cc_topics = ['PHARMACEUTICAL',
-                 'BIOTECHNOLOGY',
-                 'TOXIC DOSE', 
-                 'ALLERGEN',   
-                 'RNA EDITING',
-                 'POLYMORPHISM',
-                 'BIOPHYSICOCHEMICAL PROPERTIES',
-                 'MASS SPECTROMETRY',
-                 'WEB RESOURCE', 
-                 'ENZYME REGULATION',
-                 'DISEASE',
-                 'INTERACTION',
-                 'DEVELOPMENTAL STAGE',
-                 'INDUCTION',
-                 'CAUTION',
-                 'ALTERNATIVE PRODUCTS',
-                 'DOMAIN',
-                 'PTM',
-                 'MISCELLANEOUS',
-                 'TISSUE SPECIFICITY',
-                 'COFACTOR',
-                 'PATHWAY',
-                 'SUBUNIT',
-                 'CATALYTIC ACTIVITY',
-                 'SUBCELLULAR LOCATION',
-                 'FUNCTION',
-                 'SIMILARITY']
-  # returns contents in the CC lines.
-  # * Bio::SPTR#cc -> Hash
-  #
-  # returns an object of contents in the TOPIC.
-  # * Bio::SPTR#cc(TOPIC) -> Array w/in Hash, Hash
-  #
-  # returns contents of the "ALTERNATIVE PRODUCTS".
-  # * Bio::SPTR#cc('ALTERNATIVE PRODUCTS') -> Hash
-  #    {'Event' => str, 
-  #     'Named isoforms' => int,  
-  #     'Comment' => str,
-  #     'Variants'=>[{'Name' => str, 'Synonyms' => str, 'IsoId' => str, 'Sequence' => []}]}
-  # 
-  #    CC   -!- ALTERNATIVE PRODUCTS:
-  #    CC       Event=Alternative splicing; Named isoforms=15;
-  #    ...
-  #    CC         placentae isoforms. All tissues differentially splice exon 13;
-  #    CC       Name=A; Synonyms=no del;
-  #    CC         IsoId=P15529-1; Sequence=Displayed;
-  #
-  # returns contents of the "DATABASE".
-  # * Bio::SPTR#cc('DATABASE') -> Array
-  #    [{'NAME'=>str,'NOTE'=>str, 'WWW'=>URI,'FTP'=>URI}, ...]
-  #
-  #    CC   -!- DATABASE: NAME=Text[; NOTE=Text][; WWW="Address"][; FTP="Address"].
-  #
-  # returns contents of the "MASS SPECTROMETRY".
-  # * Bio::SPTR#cc('MASS SPECTROMETRY') -> Array
-  #    [{'MW"=>float,'MW_ERR'=>float, 'METHOD'=>str,'RANGE'=>str}, ...]
-  #
-  #    CC   -!- MASS SPECTROMETRY: MW=XXX[; MW_ERR=XX][; METHOD=XX][;RANGE=XX-XX].
-  #
-  # === CC lines (>=0, optional)
-  #   CC   -!- TISSUE SPECIFICITY: HIGHEST LEVELS FOUND IN TESTIS. ALSO PRESENT
-  #   CC       IN LIVER, KIDNEY, LUNG AND BRAIN.
-  # 
-  #   CC   -!- TOPIC: FIRST LINE OF A COMMENT BLOCK;
-  #   CC       SECOND AND SUBSEQUENT LINES OF A COMMENT BLOCK.
-  #
-  # See also http://www.expasy.org/sprot/userman.html#CC_line
-  #
-  def cc(topic = nil)
-    unless @data['CC']
-      cc  = Hash.new
-      comment_border= '-' * (77 - 4 + 1)
-      dlm = /-!- /
-
-      # 12KD_MYCSM has no CC lines.
-      return cc if get('CC').size == 0
-      
-      cc_raw = fetch('CC')
-
-      # Removing the copyright statement.
-      cc_raw.sub!(/ *---.+---/m, '')
-
-      # Not any CC Lines without the copyright statement.
-      return cc if cc_raw == ''
-
-      begin
-        cc_raw, copyright = cc_raw.split(/#{comment_border}/)[0]
-        cc_raw = cc_raw.sub(dlm,'')
-        cc_raw.split(dlm).each do |tmp|
-          tmp = tmp.strip
-
-          if /(^[A-Z ]+[A-Z]): (.+)/ =~ tmp
-            key  = $1
-            body = $2
-            body.gsub!(/- (?!AND)/,'-')
-            body.strip!
-            unless cc[key]
-              cc[key] = [body]
-            else
-              cc[key].push(body)
-            end
-          else
-            raise ["Error: [#{entry_id}]: CC Lines", '"', tmp, '"',
-                   '', get('CC'),''].join("\n")
-          end
-        end
-      rescue NameError
-        if fetch('CC') == ''
-          return {}
-        else
-          raise ["Error: Invalid CC Lines: [#{entry_id}]: ",
-                 "\n'#{self.get('CC')}'\n", "(#{$!})"].join
-        end
-      rescue NoMethodError
-      end
-      
-      @data['CC'] = cc
-    end
-
-
-    case topic
-    when 'ALLERGEN'
-      return @data['CC'][topic]
-    when 'ALTERNATIVE PRODUCTS'
-      return cc_alternative_products(@data['CC'][topic])
-    when 'BIOPHYSICOCHEMICAL PROPERTIES'
-      return cc_biophysiochemical_properties(@data['CC'][topic])
-    when 'BIOTECHNOLOGY'
-      return @data['CC'][topic]
-    when 'CATALITIC ACTIVITY'
-      return cc_catalytic_activity(@data['CC'][topic])
-    when 'CAUTION'
-      return cc_caution(@data['CC'][topic])
-    when 'COFACTOR'
-      return @data['CC'][topic]
-    when 'DEVELOPMENTAL STAGE'
-      return @data['CC'][topic].join('')
-    when 'DISEASE'
-      return @data['CC'][topic].join('')
-    when 'DOMAIN'
-      return @data['CC'][topic]
-    when 'ENZYME REGULATION'
-      return @data['CC'][topic].join('')
-    when 'FUNCTION'
-      return @data['CC'][topic].join('')
-    when 'INDUCTION'
-      return @data['CC'][topic].join('')
-    when 'INTERACTION'
-      return cc_interaction(@data['CC'][topic])
-    when 'MASS SPECTROMETRY'
-      return cc_mass_spectrometry(@data['CC'][topic])
-    when 'MISCELLANEOUS'
-      return @data['CC'][topic]
-    when 'PATHWAY'
-      return cc_pathway(@data['CC'][topic])
-    when 'PHARMACEUTICAL'
-      return @data['CC'][topic]
-    when 'POLYMORPHISM'
-      return @data['CC'][topic]
-    when 'PTM'
-      return @data['CC'][topic]
-    when 'RNA EDITING'
-      return cc_rna_editing(@data['CC'][topic])
-    when 'SIMILARITY'
-      return @data['CC'][topic]
-    when 'SUBCELLULAR LOCATION'
-      return cc_subcellular_location(@data['CC'][topic])
-    when 'SUBUNIT'
-      return @data['CC'][topic]
-    when 'TISSUE SPECIFICITY'
-      return @data['CC'][topic]
-    when 'TOXIC DOSE'
-      return @data['CC'][topic]
-    when 'WEB RESOURCE'
-      return cc_web_resource(@data['CC'][topic])
-    when 'DATABASE'
-      # DATABASE: NAME=Text[; NOTE=Text][; WWW="Address"][; FTP="Address"].
-      tmp = Array.new
-      db = @data['CC']['DATABASE']
-      return db unless db
-
-      db.each do |e|
-        db = {'NAME' => nil, 'NOTE' => nil, 'WWW' => nil, 'FTP' => nil}
-        e.sub(/.$/,'').split(/;/).each do |line|
-          case line
-          when /NAME=(.+)/
-            db['NAME'] = $1
-          when /NOTE=(.+)/
-            db['NOTE'] = $1
-          when /WWW="(.+)"/
-            db['WWW'] = $1
-          when /FTP="(.+)"/
-            db['FTP'] = $1
-          end 
-        end
-        tmp.push(db)
-      end
-      return tmp
-    when nil
-      return @data['CC']
-    else
-      return @data['CC'][topic]
-    end
-  end
-
-
-  def cc_alternative_products(data)
-    ap = data.join('')
-    return ap unless ap
-
-    # Event, Named isoforms, Comment, [Name, Synonyms, IsoId, Sequnce]+
-    tmp = {'Event' => "", 'Named isoforms' => "", 'Comment' => "", 
-           'Variants'  => []}
-    if /Event=(.+?);/ =~ ap
-      tmp['Event'] = $1
-      tmp['Event'] = tmp['Event'].sub(/;/,'').split(/, /)
-    end
-    if /Named isoforms=(\S+?);/ =~ ap
-      tmp['Named isoforms'] = $1
-    end
-    if /Comment=(.+?);/m =~ ap
-      tmp['Comment'] = $1
-    end
-    ap.scan(/Name=.+?Sequence=.+?;/).each do |ent|
-      tmp['Variants'] << cc_alternative_products_variants(ent)
-    end
-    return tmp
-  end
-  private :cc_alternative_products
-
-  def cc_alternative_products_variants(data)
-    variant = {'Name' => '', 'Synonyms' => [], 'IsoId' => [], 'Sequence' => []}
-    data.split(/; /).map {|x| x.split(/=/) }.each do |e|
-      case e[0]
-      when 'Sequence', 'Synonyms', 'IsoId'
-        e[1] = e[1].sub(/;/,'').split(/, /)
-      end
-      variant[e[0]] = e[1]
-    end
-    variant
-  end
-  private :cc_alternative_products_variants
-
-
-  def cc_biophysiochemical_properties(data)
-    data = data[0]
-
-    hash = {'Absorption' => {}, 
-            'Kinetic parameters' => {},
-            'pH dependence' => "",
-            'Redox potential' => "",
-            'Temperature dependence' => ""}
-    if data =~ /Absorption: Abs\(max\)=(.+?);/
-      hash['Absorption']['Abs(max)'] = $1
-    end
-    if data =~ /Absorption: Abs\(max\)=.+; Note=(.+?);/
-      hash['Absorption']['Note'] = $1
-    end
-    if data =~ /Kinetic parameters: KM=(.+?); Vmax=(.+?);/
-      hash['Kinetic parameters']['KM'] = $1
-      hash['Kinetic parameters']['Vmax'] = $2
-    end
-    if data =~ /Kinetic parameters: KM=.+; Vmax=.+; Note=(.+?);/
-      hash['Kinetic parameters']['Note'] = $1
-    end
-    if data =~ /pH dependence: (.+?);/
-      hash['pH dependence'] = $1
-    end
-    if data =~ /Redox potential: (.+?);/
-      hash['Redox potential'] = $1
-    end
-    if data =~ /Temperature dependence: (.+?);/
-      hash['Temperature dependence'] = $1
-    end
-    hash
-  end
-  private :cc_biophysiochemical_properties
-
-
-  def cc_caution(data)
-    data.join('')
-  end
-  private :cc_caution
-
-
-  # returns conteins in a line of the CC INTERACTION section.
-  #
-  #   CC       P46527:CDKN1B; NbExp=1; IntAct=EBI-359815, EBI-519280;
-  def cc_interaction(data)
-    str = data.join('')
-    it = str.scan(/(.+?); NbExp=(.+?); IntAct=(.+?);/)
-    it.map {|ent|
-      ent.map! {|x| x.strip }
-      if ent[0] =~ /^(.+):(.+)/
-        spac = $1
-        spid = $2.split(' ')[0]
-        optid = nil
-      elsif ent[0] =~ /Self/
-        spac = self.entry_id
-        spid = self.entry_id
-        optid = nil
-      end
-      if ent[0] =~ /^.+:.+ (.+)/
-        optid = $1
-      end
-
-      {'SP_Ac' => spac,
-       'identifier' => spid,
-       'NbExp' => ent[1],
-       'IntAct' => ent[2].split(', '),
-       'optional_identifier' => optid}
-    }
-  end
-  private :cc_interaction
-
-
-  def cc_mass_spectrometry(data)
-    # MASS SPECTROMETRY: MW=XXX[; MW_ERR=XX][; METHOD=XX][;RANGE=XX-XX].
-    return data unless data
-
-    data.map { |m|
-      mass = {'MW' => nil, 'MW_ERR' => nil, 'METHOD' => nil, 'RANGE' => nil,
-              'NOTE' => nil}
-      m.sub(/.$/,'').split(/;/).each do |line|
-        case line
-        when /MW=(.+)/
-          mass['MW'] = $1
-        when /MW_ERR=(.+)/
-          mass['MW_ERR'] = $1
-        when /METHOD=(.+)/
-          mass['METHOD'] = $1
-        when /RANGE=(\d+-\d+)/ 
-          mass['RANGE'] = $1          # RANGE class ? 
-        when /NOTE=(.+)/
-          mass['NOTE'] = $1
-        end 
-      end
-      mass
-    }
-  end
-  private :cc_mass_spectrometry
-
-
-  def cc_pathway(data)
-    data.map {|x| x.sub(/\.$/, '') }.map {|x|
-      x.split(/; | and |: /)
-    }[0]
-  end
-  private :cc_pathway
-
-
-  def cc_rna_editing(data)
-    data = data.join('')
-    entry = {'Modified_positions' => [], 'Note' => ""}
-    if data =~ /Modified_positions=(.+?)(\.|;)/
-      entry['Modified_positions'] = $1.sub(/\.$/, '').split(', ')
-    else
-      raise ArgumentError, "Invarid CC RNA Editing lines (#{self.entry_id}):#{$!}\n#{get('CC')}"
-    end
-    if data =~ /Note=(.+)/
-      entry['Note'] = $1
-    end
-    entry
-  end
-  private :cc_rna_editing
-
-
-  def cc_subcellular_location(data)
-    data.map {|x| 
-      x.split('. ').map {|y| 
-        y.split('; ').map {|z| 
-          z.sub(/\.$/, '') 
-        } 
-      } 
-    }[0]
-  end
-  private :cc_subcellular_location
-
-
-  #--
-  # Since UniProtKB release 12.2 of 11-Sep-2007:
-  # CC   -!- WEB RESOURCE: Name=ResourceName[; Note=FreeText][; URL=WWWAddress].  # Old format:
-  # CC   -!- WEB RESOURCE: NAME=ResourceName[; NOTE=FreeText][; URL=WWWAddress].
-  #++
-
-  def cc_web_resource(data)
-    data.map {|x|
-      entry = {'Name' => nil, 'Note' => nil, 'URL' => nil}
-      x.split(';').each do |y|
-        case y
-        when /(Name|Note)\=(.+)/
-          key = $1
-          val = $2.strip
-          entry[key] = val
-        when /(NAME|NOTE)\=(.+)/
-          key = $1.downcase.capitalize
-          val = $2.strip
-          entry[key] = val
-        when /URL\=\"(.+)\"/
-          entry['URL'] = $1.strip
-        end
-      end
-      entry
-    }
-  end
-  private :cc_web_resource
-
-  # returns databases cross-references in the DR lines.
-  # * Bio::SPTR#dr  -> Hash w/in Array
-  #
-  # === DR Line; defabases cross-reference (>=0)
-  #    DR  database_identifier; primary_identifier; secondary_identifier.
-  #  a cross_ref pre one line
-  @@dr_database_identifier = ['EMBL','CARBBANK','DICTYDB','ECO2DBASE',
-    'ECOGENE',
-    'FLYBASE','GCRDB','HIV','HSC-2DPAGE','HSSP','INTERPRO','MAIZEDB',
-    'MAIZE-2DPAGE','MENDEL','MGD''MIM','PDB','PFAM','PIR','PRINTS',
-    'PROSITE','REBASE','AARHUS/GHENT-2DPAGE','SGD','STYGENE','SUBTILIST',
-    'SWISS-2DPAGE','TIGR','TRANSFAC','TUBERCULIST','WORMPEP','YEPD','ZFIN']
-
-  # Backup Bio::EMBLDB#dr as embl_dr
-  alias :embl_dr :dr 
-
-  # Bio::SPTR#dr
-  def dr(key = nil)
-    unless key
-      embl_dr
-    else
-      (embl_dr[key] or []).map {|x|
-        {'Accession' => x[0],
-         'Version' => x[1],
-         ' ' => x[2],
-         'Molecular Type' => x[3]}
-      }
-    end
-  end
-
-
-  # Bio::EMBLDB::Common#kw - Array
-  #                    #keywords  -> Array
-  #
-  # KW Line; keyword (>=1)
-  # KW   [Keyword;]+
-
-
-  # returns contents in the feature table.
-  #
-  # == Examples
-  #
-  #  sp = Bio::SPTR.new(entry)
-  #  ft = sp.ft
-  #  ft.class #=> Hash
-  #  ft.keys.each do |feature_key|
-  #    ft[feature_key].each do |feature|
-  #      feature['From'] #=> '1'
-  #      feature['To']   #=> '21'
-  #      feature['Description'] #=> ''
-  #      feature['FTId'] #=> ''
-  #      feature['diff'] #=> []
-  #      feature['original'] #=> [feature_key, '1', '21', '', '']
-  #    end
-  #  end
-  #
-  # * Bio::SPTR#ft -> Hash
-  #    {FEATURE_KEY => [{'From' => int, 'To' => int, 
-  #                      'Description' => aStr, 'FTId' => aStr,
-  #                      'diff' => [original_residues, changed_residues],
-  #                      'original' => aAry }],...}
-  #
-  # returns an Array of the information about the feature_name in the feature table.
-  # * Bio::SPTR#ft(feature_name) -> Array of Hash
-  #    [{'From' => str, 'To' => str, 'Description' => str, 'FTId' => str},...]
-  #
-  # == FT Line; feature table data (>=0, optional)
-  #
-  #   Col     Data item
-  #   -----   -----------------
-  #    1- 2   FT
-  #    6-13   Feature name 
-  #   15-20   `FROM' endpoint
-  #   22-27   `TO' endpoint
-  #   35-75   Description (>=0 per key)
-  #   -----   -----------------
-  #
-  # Note: 'FROM' and 'TO' endopoints are allowed to use non-numerial charactors 
-  # including '<', '>' or '?'. (c.f. '<1', '?42')
-  #
-  # See also http://www.expasy.org/sprot/userman.html#FT_line
-  #
-  def ft(feature_key = nil)
-    return ft[feature_key] if feature_key
-    return @data['FT'] if @data['FT']
-
-    table = []
-    begin
-      get('FT').split("\n").each do |line|
-        if line =~ /^FT   \w/
-          feature = line.chomp.ljust(74)
-          table << [feature[ 5..12].strip,   # Feature Name
-                    feature[14..19].strip,   # From
-                    feature[21..26].strip,   # To
-                    feature[34..74].strip ]  # Description
-        else
-          table.last << line.chomp.sub!(/^FT +/, '')
-        end
-      end
-
-      # Joining Description lines
-      table = table.map { |feature| 
-        ftid = feature.pop if feature.last =~ /FTId=/
-        if feature.size > 4
-          feature = [feature[0], 
-                     feature[1], 
-                     feature[2], 
-                     feature[3, feature.size - 3].join(" ")]
-        end
-        feature << if ftid then ftid else '' end
-      }
-
-      hash = {}
-      table.each do |feature|
-        hash[feature[0]] = [] unless hash[feature[0]]
-        hash[feature[0]] << {
-          # Removing '<', '>' or '?' in FROM/TO endopoint.
-          'From' => feature[1].sub(/\D/, '').to_i,  
-          'To'   => feature[2].sub(/\D/, '').to_i, 
-          'Description' => feature[3], 
-          'FTId' => feature[4].to_s.sub(/\/FTId=/, '').sub(/\.$/, ''),
-          'diff' => [],
-          'original' => feature
-        }
-
-        case feature[0]
-        when 'VARSPLIC', 'VARIANT', 'VAR_SEQ', 'CONFLICT'
-          case hash[feature[0]].last['Description']
-          when /(\w[\w ]*\w*) - ?> (\w[\w ]*\w*)/
-            original_res = $1
-            changed_res = $2
-            original_res = original_res.gsub(/ /,'').strip
-            chenged_res = changed_res.gsub(/ /,'').strip
-          when /Missing/i
-            original_res = seq.subseq(hash[feature[0]].last['From'],
-                                      hash[feature[0]].last['To'])
-            changed_res = ''
-          end
-          hash[feature[0]].last['diff'] = [original_res, chenged_res]
-        end
-      end
-    rescue
-      raise "Invalid FT Lines(#{$!}) in #{entry_id}:, \n'#{self.get('FT')}'\n"
-    end
-
-    @data['FT'] = hash
-  end
-
-
-
-  # returns a Hash of conteins in the SQ lines.
-  # * Bio::SPTRL#sq  -> hsh
-  #
-  # returns a value of a key given in the SQ lines.
-  # * Bio::SPTRL#sq(key)  -> int or str
-  # * Keys: ['MW', 'mw', 'molecular', 'weight', 'aalen', 'len', 'length', 
-  #          'CRC64']
-  #
-  # === SQ Line; sequence header (1/entry)
-  #    SQ   SEQUENCE   233 AA;  25630 MW;  146A1B48A1475C86 CRC64;
-  #    SQ   SEQUENCE  \d+ AA; \d+ MW;  [0-9A-Z]+ CRC64;
-  #
-  # MW, Dalton unit.
-  # CRC64 (64-bit Cyclic Redundancy Check, ISO 3309).
-  def sq(key = nil)
-    unless @data['SQ']
-      if fetch('SQ') =~ /(\d+) AA\; (\d+) MW; (.+) CRC64;/
-        @data['SQ'] = { 'aalen' => $1.to_i, 'MW' => $2.to_i, 'CRC64' => $3 }
-      else
-        raise "Invalid SQ Line: \n'#{fetch('SQ')}'"
-      end
-    end
-
-    if key
-      case key
-      when /mw/, /molecular/, /weight/
-        @data['SQ']['MW']
-      when /len/, /length/, /AA/
-        @data['SQ']['aalen']
-      else
-        @data['SQ'][key]
-      end
-    else 
-      @data['SQ']
-    end
-  end
-
-
-  # returns a Bio::Sequence::AA of the amino acid sequence.
-  # * Bio::SPTR#seq -> Bio::Sequence::AA
-  #
-  # blank Line; sequence data (>=1)
-  def seq
-    unless @data['']
-      @data[''] = Sequence::AA.new( fetch('').gsub(/ |\d+/,'') )
-    end
-    return @data['']
-  end
-  alias aaseq seq
-
-end # class SPTR
-
-end # module Bio
-
-
-
-=begin
-
-= Bio::SPTR < Bio::DB
-
-Class for a entry in the SWISS-PROT/TrEMBL database.
-
-  * ((<URL:http://www.ebi.ac.uk/swissprot/>))
-  * ((<URL:http://www.ebi.ac.uk/trembl/>))
-  * ((<URL:http://www.ebi.ac.uk/sprot/userman.html>))
-  
-
---- Bio::SPTR.new(a_sp_entry)
-
-=== ID line (Identification)
-
---- Bio::SPTR#id_line -> {'ENTRY_NAME' => str, 'DATA_CLASS' => str,
-                          'MOLECULE_TYPE' => str, 'SEQUENCE_LENGTH' => int }  
---- Bio::SPTR#id_line(key) -> str
-
-       key = (ENTRY_NAME|MOLECULE_TYPE|DATA_CLASS|SEQUENCE_LENGTH)
-
---- Bio::SPTR#entry_id -> str
---- Bio::SPTR#molecule -> str
---- Bio::SPTR#sequence_length -> int
-    
-
-=== AC lines (Accession number)
-
---- Bio::SPTR#ac -> ary
---- Bio::SPTR#accessions -> ary
---- Bio::SPTR#accession -> accessions.first
-
- 
-=== GN line (Gene name(s))
-
---- Bio::SPTR#gn -> [ary, ...] or [{:name => str, :synonyms => [], :loci => [], :orfs => []}]
---- Bio::SPTR#gene_name -> str
---- Bio::SPTR#gene_names -> [str] or [str]
-
-
-=== DT lines (Date) 
-
---- Bio::SPTR#dt -> {'created' => str, 'sequence' => str, 'annotation' => str}
---- Bio::SPTR#dt(key) -> str
-
-      key := (created|annotation|sequence)
-
-
-=== DE lines (Description)
-
---- Bio::SPTR#de -> str
-             #definition -> str
-
---- Bio::SPTR#protein_name
-
-      Returns the proposed official name of the protein
-
-
---- Bio::SPTR#synonyms
-
-      Returns an array of synonyms (unofficial names)
-
-=== KW lines (Keyword)
-
---- Bio::SPTR#kw -> ary
-
-=== OS lines (Organism species)
-
---- Bio::SPTR#os -> [{'name' => str, 'os' => str}, ...]
-
-=== OC lines (organism classification)
-
---- Bio::SPTR#oc -> ary
-
-=== OG line (Organella)
-
---- Bio::SPTR#og -> ary
-
-=== OX line (Organism taxonomy cross-reference)
-
---- Bio::SPTR#ox -> {'NCBI_TaxID' => [], ...}
-
-=== RN RC RP RX RA RT RL RG lines (Reference)  
-
---- Bio::SPTR#ref -> [{'RN' => int, 'RP' => str, 'RC' => str, 'RX' => str, ''RT' => str, 'RL' => str, 'RA' => str, 'RC' => str, 'RG' => str},...]
-
-=== DR lines (Database cross-reference)
-
---- Bio::SPTR#dr -> {'EMBL' => ary, ...}
-
-=== FT lines (Feature table data)
-
---- Bio::SPTR#ft -> hsh
-
-=== SQ lines (Sequence header and data)
-
---- Bio::SPTR#sq -> {'CRC64' => str, 'MW' => int, 'aalen' => int}
---- Bio::SPTR#sq(key) -> int or str
-
-          key := (aalen|MW|CRC64)
-
---- Bio::EMBL#seq -> Bio::Sequece::AA
-             #aaseq -> Bio::Sequece::AA
-
-=end
+  require "bio/db/embl/uniprotkb" unless const_defined?(:UniProtKB)
 
-  #      Content                      Occurrence in an entry
-  # ---- ---------------------------  --------------------------------
-  # ID - identification               (begins each entry; 1 per entry)
-  # AC - accession number(s)          (>=1 per entry)
-  # DT - date                         (3 per entry)
-  # DE - description                  (>=1 per entry)
-  # GN - gene name(s)                 (>=0 per entry; optional)
-  # OS - organism species             (>=1 per entry)
-  # OG - organelle                    (0 or 1 per entry; optional)
-  # OC - organism classification      (>=1 per entry)
-  # OX - organism taxonomy x-ref      (>=1 per entry)
-  # OH - Organism Host
-  # RN - reference number             (>=1 per entry)
-  # RP - reference positions          (>=1 per entry)
-  # RC - reference comment(s)         (>=0 per entry; optional)
-  # RX - reference cross-reference(s) (>=0 per entry; optional)
-  # RA - reference author(s)          (>=1 per entry)
-  # RT - reference title              (>=0 per entry; optional)
-  # RL - reference location           (>=1 per entry)
-  # RG - reference group(s)
-  # CC - comments or notes            (>=0 per entry; optional)
-  # DR - database cross-references    (>=0 per entry; optional)
-  # KW - keywords                     (>=1 per entry)
-  # FT - feature table data           (>=0 per entry; optional)
-  # SQ - sequence header              (1 per entry)
-  #    - (blanks) The sequence data   (>=1 per entry)
-  # // - termination line             (ends each entry; 1 per entry)
-  # ---- ---------------------------  --------------------------------
+  # Bio::SPTR is changed to an alias of Bio::UniProtKB.
+  # Please use Bio::UniProtKB.
+  # Bio::SPTR may be deprecated in the future.
+  SPTR = UniProtKB
 
+end #module Bio
 
diff --git a/lib/bio/db/embl/swissprot.rb b/lib/bio/db/embl/swissprot.rb
index 11a9424..c186cac 100644
--- a/lib/bio/db/embl/swissprot.rb
+++ b/lib/bio/db/embl/swissprot.rb
@@ -1,41 +1,24 @@
 #
-# = bio/db/embl/swissprot.rb - SwissProt database class
+# = bio/db/embl/swissprot.rb - (deprecated) SwissProt database class
 # 
-# Copyright::   Copyright (C) 2001, 2002 Toshiaki Katayama <k at bioruby.org>
+# Copyright::   Copyright (C) 2013 BioRuby Project
 # License::     The Ruby License
 #
-#  $Id: swissprot.rb,v 1.7 2007/04/05 23:35:40 trevor Exp $
-#
 
-require 'bio/db/embl/sptr'
+warn "Bio::SwissProt is deprecated. Use Bio::UniProtKB."
 
 module Bio
 
-# == Description
-# 
-# Parser class for SwissProt database entry. See also Bio::SPTR class.
-# This class holds name space for SwissProt specific methods.
-#
-# SwissProt (before UniProtKB/SwissProt) specific methods are defined in 
-# this class. Shared methods for UniProtKB/SwissProt and TrEMBL classes 
-# are defined in Bio::SPTR class.
-#
-# == Examples
-#
-#   str = File.read("p53_human.swiss")
-#   obj = Bio::SwissProt.new(str)
-#   obj.entry_id #=> "P53_HUMAN"
-#
-# == Referencees
-#
-# * Swiss-Prot Protein knowledgebase
-#   http://au.expasy.org/sprot/
-#
-# * Swiss-Prot Protein Knowledgebase User Manual
-#   http://au.expasy.org/sprot/userman.html
-# 
+require 'bio/db/embl/uniprotkb' unless const_defined?(:UniProtKB)
+
+# Bio::SwissProt is deprecated. Use Bio::UniProtKB.
 class SwissProt < SPTR
-  # Nothing to do (SwissProt format is abstracted in SPTR)
+
+  # Bio::SwissProt is deprecated. Use Bio::UniProtKB.
+  def initialize(str)
+    warn "Bio::SwissProt is deprecated. Use Bio::UniProtKB."
+    super(str)
+  end
 end
 
 end
diff --git a/lib/bio/db/embl/trembl.rb b/lib/bio/db/embl/trembl.rb
index 0aa235e..f5b2b56 100644
--- a/lib/bio/db/embl/trembl.rb
+++ b/lib/bio/db/embl/trembl.rb
@@ -1,41 +1,24 @@
 #
-# = bio/db/embl/trembl.rb - TrEMBL database class
+# = bio/db/embl/trembl.rb - (deprecated) TrEMBL database class
 # 
-# Copyright::  Copyright (C) 2001, 2002 Toshiaki Katayama <k at bioruby.org>
+# Copyright::  Copyright (C) 2013 BioRuby Project
 # License::    The Ruby License
 #
-# $Id: trembl.rb,v 1.7 2007/04/05 23:35:40 trevor Exp $
-#
 
-require 'bio/db/embl/sptr'
+warn "Bio::TrEMBL is deprecated. Use Bio::UniProtKB."
 
 module Bio
 
-# == Description
-#
-# Parser class for TrEMBL database entry. See also Bio::SPTR class.
-# This class holds name space for TrEMBL specific methods.
-#
-# UniProtKB/SwissProt specific methods are defined in this class. 
-# Shared methods for UniProtKB/SwissProt and TrEMBL classes are 
-# defined in Bio::SPTR class.
-#
-# == Examples
-#
-#   str = File.read("Q2UNG2_ASPOR.trembl")
-#   obj = Bio::TrEMBL.new(str)
-#   obj.entry_id #=> "Q2UNG2_ASPOR"
-#
-# == Referencees
-#
-# * TrEMBL Computer-annotated supplement to Swiss-Prot	
-#   http://au.expasy.org/sprot/
-#
-# * TrEMBL Computer-annotated supplement to Swiss-Prot User Manual
-#   http://au.expasy.org/sprot/userman.html
-# 
-class TrEMBL < SPTR
-  # Nothing to do (TrEMBL format is abstracted in SPTR)
+require 'bio/db/embl/uniprotkb' unless const_defined?(:UniProtKB)
+
+# Bio::TrEMBL is deprecated. Use Bio::UniProtKB.
+class TrEMBL < UniProtKB
+
+  # Bio::TrEMBL is deprecated. Use Bio::UniProtKB.
+  def initialize(str)
+    warn "Bio::TrEMBL is deprecated. Use Bio::UniProtKB."
+    super(str)
+  end
 end
 
 end
diff --git a/lib/bio/db/embl/uniprot.rb b/lib/bio/db/embl/uniprot.rb
index 104f32f..9966212 100644
--- a/lib/bio/db/embl/uniprot.rb
+++ b/lib/bio/db/embl/uniprot.rb
@@ -1,42 +1,25 @@
 #
 # = bio/db/embl/uniprot.rb - UniProt database class
 # 
-# Copyright::  Copyright (C) 2005 Toshiaki Katayama <k at bioruby.org>
+# Copyright::  Copyright (C) 2013 BioRuby Project
 # License::    The Ruby License
 #
-#  $Id: uniprot.rb,v 1.5 2007/04/05 23:35:40 trevor Exp $
 #
 
-require 'bio/db/embl/sptr'
+warn "Bio::UniProt is an alias of Bio::UniProtKB. Please use Bio::UniProtKB. Bio::UniProt may be deprecated in the future." if $VERBOSE
 
 module Bio
 
-# == Description
-# 
-# Parser class for SwissProt database entry.# See also Bio::SPTR class.
-# This class holds name space for UniProtKB/SwissProt specific methods.
-#
-# UniProtKB/SwissProt specific methods are defined in this class. 
-# Shared methods for UniProtKB/SwissProt and TrEMBL classes are 
-# defined in Bio::SPTR class.
-#
-# == Examples
-#
-#   str = File.read("p53_human.swiss")
-#   obj = Bio::UniProt.new(str)
-#   obj.entry_id #=> "P53_HUMAN"
-#
-# == Referencees
-#
-# * UniProt
-#   http://uniprot.org/
-#
-# * The UniProtKB/SwissProt/TrEMBL User Manual
-#   http://www.expasy.org/sprot/userman.html
-#
-class UniProt < SPTR
-  # Nothing to do (UniProt format is abstracted in SPTR)
-end
+require 'bio/db/embl/uniprotkb' unless const_defined?(:UniProtKB)
+
+  # Bio::UniProt is changed to an alias of Bio::UniProtKB.
+  # Please use Bio::UniProtKB.
+  # Bio::UniProt may be deprecated in the future.
+  #
+  # Note that Bio::SPTR have been renamed to Bio::UniProtKB and
+  # is also an alias of Bio::UniProtKB.
+  #
+  UniProt = UniProtKB
 
 end
 
diff --git a/lib/bio/db/embl/sptr.rb b/lib/bio/db/embl/uniprotkb.rb
similarity index 92%
copy from lib/bio/db/embl/sptr.rb
copy to lib/bio/db/embl/uniprotkb.rb
index 5109740..d9c4ca7 100644
--- a/lib/bio/db/embl/sptr.rb
+++ b/lib/bio/db/embl/uniprotkb.rb
@@ -1,45 +1,44 @@
 #
-# = bio/db/embl/sptr.rb - UniProt/SwissProt and TrEMBL database class
+# = bio/db/embl/uniprotkb.rb - UniProtKB data parser class
 # 
 # Copyright::   Copyright (C) 2001-2006  Mitsuteru C. Nakao <n at bioruby.org>
 # License::     The Ruby License
 #
-# $Id:$
 #
 # == Description
 # 
-# Shared methods for UniProtKB/SwissProt and TrEMBL classes.
+# See Bio::UniProtKB documents.
 #
-# See the SWISS-PROT document file SPECLIST.TXT or UniProtKB/SwissProt 
-# user manual.
+
+require 'bio/db'
+require 'bio/db/embl/common'
+
+module Bio
+
+# == Description
+#
+# Parser class for UniProtKB/SwissProt and TrEMBL database entry.
+# 
+# See the UniProtKB document files and manuals.
 # 
 # == Examples
 #
 #   str = File.read("p53_human.swiss")
-#   obj = Bio::SPTR.new(str)
+#   obj = Bio::UniProtKB.new(str)
 #   obj.entry_id #=> "P53_HUMAN"
 # 
 # == References
 # 
-# * Swiss-Prot Protein knowledgebase. TrEMBL Computer-annotated supplement 
-#   to Swiss-Prot	
-#   http://au.expasy.org/sprot/
+# * The UniProt Knowledgebase (UniProtKB)
+#   http://www.uniprot.org/help/uniprotkb
 #
-# * UniProt
+# * The Universal Protein Resource (UniProt)
 #   http://uniprot.org/
 #
 # * The UniProtKB/SwissProt/TrEMBL User Manual
-#   http://www.expasy.org/sprot/userman.html
+#   http://www.uniprot.org/docs/userman.html
 #
-
-
-require 'bio/db'
-require 'bio/db/embl/common'
-
-module Bio
-
-# Parser class for UniProtKB/SwissProt and TrEMBL database entry.
-class SPTR < EMBLDB
+class UniProtKB < EMBLDB
   include Bio::EMBLDB::Common
     
   @@entry_regrexp = /[A-Z0-9]{1,4}_[A-Z0-9]{1,5}/
@@ -105,7 +104,7 @@ class SPTR < EMBLDB
 
   # returns a MOLECULE_TYPE in the ID line.
   #
-  # A short-cut for Bio::SPTR#id_line('MOLECULE_TYPE').
+  # A short-cut for Bio::UniProtKB#id_line('MOLECULE_TYPE').
   def molecule
     id_line('MOLECULE_TYPE')
   end
@@ -114,7 +113,7 @@ class SPTR < EMBLDB
 
   # returns a SEQUENCE_LENGTH in the ID line.
   # 
-  # A short-cut for Bio::SPTR#id_line('SEQUENCE_LENGHT').
+  # A short-cut for Bio::UniProtKB#id_line('SEQUENCE_LENGHT').
   def sequence_length
     id_line('SEQUENCE_LENGTH')
   end
@@ -335,7 +334,7 @@ class SPTR < EMBLDB
   # returns gene names in the GN line.
   #
   # New UniProt/SwissProt format:
-  # * Bio::SPTR#gn -> [ <gene record>* ]
+  # * Bio::UniProtKB#gn -> [ <gene record>* ]
   # where <gene record> is:
   #                    { :name => '...', 
   #                      :synonyms => [ 's1', 's2', ... ],
@@ -344,8 +343,8 @@ class SPTR < EMBLDB
   #                    }
   #
   # Old format:
-  # * Bio::SPTR#gn -> Array      # AND 
-  # * Bio::SPTR#gn[0] -> Array   # OR
+  # * Bio::UniProtKB#gn -> Array      # AND 
+  # * Bio::UniProtKB#gn[0] -> Array   # OR
   #
   # === GN Line: Gene name(s) (>=0, optional)
   def gn
@@ -369,7 +368,7 @@ class SPTR < EMBLDB
   #
   #  GN NAME1 [(AND|OR) NAME]+.
   #
-  # Bio::SPTR#gn -> Array      # AND 
+  # Bio::UniProtKB#gn -> Array      # AND 
   #          #gn[0] -> Array   # OR
   #          #gene_names -> Array
   def gn_old_parser
@@ -391,7 +390,7 @@ class SPTR < EMBLDB
   #  GN   Name=; Synonyms=[, ...]; OrderedLocusNames=[, ...];
   #  GN   ORFNames=[, ...];
   #
-  # * Bio::SPTR#gn -> [ <gene record>* ]
+  # * Bio::UniProtKB#gn -> [ <gene record>* ]
   # where <gene record> is:
   #                    { :name => '...', 
   #                      :synonyms => [ 's1', 's2', ... ],
@@ -436,7 +435,7 @@ class SPTR < EMBLDB
 
   # returns a String of the first gene name in the GN line.
   def gene_name
-    gene_names.first
+    (x = self.gene_names) ? x.first : nil
   end
 
 
@@ -446,7 +445,7 @@ class SPTR < EMBLDB
   #   {'name' => '(Rat)', 'os' => 'Rattus norveticus'}]
   # * Bio::EPTR#os[0] -> Hash 
   #  {'name' => "(Human)", 'os' => 'Homo sapiens'}
-  # * Bio::SPTR#os[0]['name'] -> "(Human)"
+  # * Bio::UniProtKB#os[0]['name'] -> "(Human)"
   # * Bio::EPTR#os(0) -> "Homo sapiens (Human)"
   # 
   # === OS Line; organism species (>=1)
@@ -461,7 +460,7 @@ class SPTR < EMBLDB
     unless @data['OS']
       os = Array.new
       fetch('OS').split(/, and|, /).each do |tmp|
-        if tmp =~ /(\w+ *[\w\d \:\'\+\-\.]+[\w\d\.])/
+        if tmp =~ /(\w+ *[\w \:\'\+\-\.]+[\w\.])/
           org = $1
           tmp =~ /(\(.+\))/ 
           os.push({'name' => $1, 'os' => org})
@@ -495,7 +494,7 @@ class SPTR < EMBLDB
 
 
   # returns a Hash of oraganism taxonomy cross-references.
-  # * Bio::SPTR#ox -> Hash
+  # * Bio::UniProtKB#ox -> Hash
   #    {'NCBI_TaxID' => ['1234','2345','3456','4567'], ...}
   #
   # === OX Line; organism taxonomy cross-reference (>=1 per entry)
@@ -687,7 +686,7 @@ class SPTR < EMBLDB
 
 
   # === The HI line
-  # Bio::SPTR#hi #=> hash
+  # Bio::UniProtKB#hi #=> hash
   def hi
     unless @data['HI']
       @data['HI'] = []
@@ -732,13 +731,13 @@ class SPTR < EMBLDB
                  'FUNCTION',
                  'SIMILARITY']
   # returns contents in the CC lines.
-  # * Bio::SPTR#cc -> Hash
+  # * Bio::UniProtKB#cc -> Hash
   #
   # returns an object of contents in the TOPIC.
-  # * Bio::SPTR#cc(TOPIC) -> Array w/in Hash, Hash
+  # * Bio::UniProtKB#cc(TOPIC) -> Array w/in Hash, Hash
   #
   # returns contents of the "ALTERNATIVE PRODUCTS".
-  # * Bio::SPTR#cc('ALTERNATIVE PRODUCTS') -> Hash
+  # * Bio::UniProtKB#cc('ALTERNATIVE PRODUCTS') -> Hash
   #    {'Event' => str, 
   #     'Named isoforms' => int,  
   #     'Comment' => str,
@@ -752,13 +751,13 @@ class SPTR < EMBLDB
   #    CC         IsoId=P15529-1; Sequence=Displayed;
   #
   # returns contents of the "DATABASE".
-  # * Bio::SPTR#cc('DATABASE') -> Array
+  # * Bio::UniProtKB#cc('DATABASE') -> Array
   #    [{'NAME'=>str,'NOTE'=>str, 'WWW'=>URI,'FTP'=>URI}, ...]
   #
   #    CC   -!- DATABASE: NAME=Text[; NOTE=Text][; WWW="Address"][; FTP="Address"].
   #
   # returns contents of the "MASS SPECTROMETRY".
-  # * Bio::SPTR#cc('MASS SPECTROMETRY') -> Array
+  # * Bio::UniProtKB#cc('MASS SPECTROMETRY') -> Array
   #    [{'MW"=>float,'MW_ERR'=>float, 'METHOD'=>str,'RANGE'=>str}, ...]
   #
   #    CC   -!- MASS SPECTROMETRY: MW=XXX[; MW_ERR=XX][; METHOD=XX][;RANGE=XX-XX].
@@ -791,6 +790,7 @@ class SPTR < EMBLDB
 
       begin
         cc_raw, copyright = cc_raw.split(/#{comment_border}/)[0]
+        _ = copyright #dummy for suppress "assigned but unused variable"
         cc_raw = cc_raw.sub(dlm,'')
         cc_raw.split(dlm).each do |tmp|
           tmp = tmp.strip
@@ -1112,7 +1112,7 @@ class SPTR < EMBLDB
   private :cc_web_resource
 
   # returns databases cross-references in the DR lines.
-  # * Bio::SPTR#dr  -> Hash w/in Array
+  # * Bio::UniProtKB#dr  -> Hash w/in Array
   #
   # === DR Line; defabases cross-reference (>=0)
   #    DR  database_identifier; primary_identifier; secondary_identifier.
@@ -1127,7 +1127,7 @@ class SPTR < EMBLDB
   # Backup Bio::EMBLDB#dr as embl_dr
   alias :embl_dr :dr 
 
-  # Bio::SPTR#dr
+  # Bio::UniProtKB#dr
   def dr(key = nil)
     unless key
       embl_dr
@@ -1153,7 +1153,7 @@ class SPTR < EMBLDB
   #
   # == Examples
   #
-  #  sp = Bio::SPTR.new(entry)
+  #  sp = Bio::UniProtKB.new(entry)
   #  ft = sp.ft
   #  ft.class #=> Hash
   #  ft.keys.each do |feature_key|
@@ -1167,14 +1167,14 @@ class SPTR < EMBLDB
   #    end
   #  end
   #
-  # * Bio::SPTR#ft -> Hash
+  # * Bio::UniProtKB#ft -> Hash
   #    {FEATURE_KEY => [{'From' => int, 'To' => int, 
   #                      'Description' => aStr, 'FTId' => aStr,
   #                      'diff' => [original_residues, changed_residues],
   #                      'original' => aAry }],...}
   #
   # returns an Array of the information about the feature_name in the feature table.
-  # * Bio::SPTR#ft(feature_name) -> Array of Hash
+  # * Bio::UniProtKB#ft(feature_name) -> Array of Hash
   #    [{'From' => str, 'To' => str, 'Description' => str, 'FTId' => str},...]
   #
   # == FT Line; feature table data (>=0, optional)
@@ -1262,10 +1262,10 @@ class SPTR < EMBLDB
 
 
   # returns a Hash of conteins in the SQ lines.
-  # * Bio::SPTRL#sq  -> hsh
+  # * Bio::UniProtKBL#sq  -> hsh
   #
   # returns a value of a key given in the SQ lines.
-  # * Bio::SPTRL#sq(key)  -> int or str
+  # * Bio::UniProtKBL#sq(key)  -> int or str
   # * Keys: ['MW', 'mw', 'molecular', 'weight', 'aalen', 'len', 'length', 
   #          'CRC64']
   #
@@ -1300,7 +1300,7 @@ class SPTR < EMBLDB
 
 
   # returns a Bio::Sequence::AA of the amino acid sequence.
-  # * Bio::SPTR#seq -> Bio::Sequence::AA
+  # * Bio::UniProtKB#seq -> Bio::Sequence::AA
   #
   # blank Line; sequence data (>=1)
   def seq
@@ -1311,7 +1311,7 @@ class SPTR < EMBLDB
   end
   alias aaseq seq
 
-end # class SPTR
+end # class UniProtKB
 
 end # module Bio
 
@@ -1319,7 +1319,7 @@ end # module Bio
 
 =begin
 
-= Bio::SPTR < Bio::DB
+= Bio::UniProtKB < Bio::DB
 
 Class for a entry in the SWISS-PROT/TrEMBL database.
 
@@ -1328,98 +1328,98 @@ Class for a entry in the SWISS-PROT/TrEMBL database.
   * ((<URL:http://www.ebi.ac.uk/sprot/userman.html>))
   
 
---- Bio::SPTR.new(a_sp_entry)
+--- Bio::UniProtKB.new(a_sp_entry)
 
 === ID line (Identification)
 
---- Bio::SPTR#id_line -> {'ENTRY_NAME' => str, 'DATA_CLASS' => str,
+--- Bio::UniProtKB#id_line -> {'ENTRY_NAME' => str, 'DATA_CLASS' => str,
                           'MOLECULE_TYPE' => str, 'SEQUENCE_LENGTH' => int }  
---- Bio::SPTR#id_line(key) -> str
+--- Bio::UniProtKB#id_line(key) -> str
 
        key = (ENTRY_NAME|MOLECULE_TYPE|DATA_CLASS|SEQUENCE_LENGTH)
 
---- Bio::SPTR#entry_id -> str
---- Bio::SPTR#molecule -> str
---- Bio::SPTR#sequence_length -> int
+--- Bio::UniProtKB#entry_id -> str
+--- Bio::UniProtKB#molecule -> str
+--- Bio::UniProtKB#sequence_length -> int
     
 
 === AC lines (Accession number)
 
---- Bio::SPTR#ac -> ary
---- Bio::SPTR#accessions -> ary
---- Bio::SPTR#accession -> accessions.first
+--- Bio::UniProtKB#ac -> ary
+--- Bio::UniProtKB#accessions -> ary
+--- Bio::UniProtKB#accession -> accessions.first
 
  
 === GN line (Gene name(s))
 
---- Bio::SPTR#gn -> [ary, ...] or [{:name => str, :synonyms => [], :loci => [], :orfs => []}]
---- Bio::SPTR#gene_name -> str
---- Bio::SPTR#gene_names -> [str] or [str]
+--- Bio::UniProtKB#gn -> [ary, ...] or [{:name => str, :synonyms => [], :loci => [], :orfs => []}]
+--- Bio::UniProtKB#gene_name -> str
+--- Bio::UniProtKB#gene_names -> [str] or [str]
 
 
 === DT lines (Date) 
 
---- Bio::SPTR#dt -> {'created' => str, 'sequence' => str, 'annotation' => str}
---- Bio::SPTR#dt(key) -> str
+--- Bio::UniProtKB#dt -> {'created' => str, 'sequence' => str, 'annotation' => str}
+--- Bio::UniProtKB#dt(key) -> str
 
       key := (created|annotation|sequence)
 
 
 === DE lines (Description)
 
---- Bio::SPTR#de -> str
+--- Bio::UniProtKB#de -> str
              #definition -> str
 
---- Bio::SPTR#protein_name
+--- Bio::UniProtKB#protein_name
 
       Returns the proposed official name of the protein
 
 
---- Bio::SPTR#synonyms
+--- Bio::UniProtKB#synonyms
 
       Returns an array of synonyms (unofficial names)
 
 === KW lines (Keyword)
 
---- Bio::SPTR#kw -> ary
+--- Bio::UniProtKB#kw -> ary
 
 === OS lines (Organism species)
 
---- Bio::SPTR#os -> [{'name' => str, 'os' => str}, ...]
+--- Bio::UniProtKB#os -> [{'name' => str, 'os' => str}, ...]
 
 === OC lines (organism classification)
 
---- Bio::SPTR#oc -> ary
+--- Bio::UniProtKB#oc -> ary
 
 === OG line (Organella)
 
---- Bio::SPTR#og -> ary
+--- Bio::UniProtKB#og -> ary
 
 === OX line (Organism taxonomy cross-reference)
 
---- Bio::SPTR#ox -> {'NCBI_TaxID' => [], ...}
+--- Bio::UniProtKB#ox -> {'NCBI_TaxID' => [], ...}
 
 === RN RC RP RX RA RT RL RG lines (Reference)  
 
---- Bio::SPTR#ref -> [{'RN' => int, 'RP' => str, 'RC' => str, 'RX' => str, ''RT' => str, 'RL' => str, 'RA' => str, 'RC' => str, 'RG' => str},...]
+--- Bio::UniProtKB#ref -> [{'RN' => int, 'RP' => str, 'RC' => str, 'RX' => str, ''RT' => str, 'RL' => str, 'RA' => str, 'RC' => str, 'RG' => str},...]
 
 === DR lines (Database cross-reference)
 
---- Bio::SPTR#dr -> {'EMBL' => ary, ...}
+--- Bio::UniProtKB#dr -> {'EMBL' => ary, ...}
 
 === FT lines (Feature table data)
 
---- Bio::SPTR#ft -> hsh
+--- Bio::UniProtKB#ft -> hsh
 
 === SQ lines (Sequence header and data)
 
---- Bio::SPTR#sq -> {'CRC64' => str, 'MW' => int, 'aalen' => int}
---- Bio::SPTR#sq(key) -> int or str
+--- Bio::UniProtKB#sq -> {'CRC64' => str, 'MW' => int, 'aalen' => int}
+--- Bio::UniProtKB#sq(key) -> int or str
 
           key := (aalen|MW|CRC64)
 
---- Bio::EMBL#seq -> Bio::Sequece::AA
-             #aaseq -> Bio::Sequece::AA
+--- Bio::UniProtKB#seq -> Bio::Sequece::AA
+                  #aaseq -> Bio::Sequece::AA
 
 =end
 
diff --git a/lib/bio/db/fasta.rb b/lib/bio/db/fasta.rb
index 0b6a2b6..94254ae 100644
--- a/lib/bio/db/fasta.rb
+++ b/lib/bio/db/fasta.rb
@@ -68,6 +68,7 @@ module Bio
   # A larger range of methods for dealing with Fasta definition lines can be found in FastaDefline, accessed through the FastaFormat#identifiers method.
   # 
   #   f.entry_id #=> "gi|398365175"
+  #   f.first_name #=> "gi|398365175|ref|NP_009718.3|"
   #   f.definition #=> "gi|398365175|ref|NP_009718.3| Cdc28p [Saccharomyces cerevisiae S288c]"
   #   f.identifiers #=> Bio::FastaDefline instance
   #   f.accession #=> "NP_009718"
@@ -90,6 +91,7 @@ module Bio
   #   f.entry #=> ">abc 123 456\nASDF"
   #
   #   f.entry_id #=> "abc"
+  #   f.first_name #=> "abc"
   #   f.definition #=> "abc 123 456"
   #   f.comment #=> nil
   #   f.accession #=> nil
@@ -282,6 +284,21 @@ module Bio
     def locus
       identifiers.locus
     end
+    
+    # Returns the first name (word) of the definition line - everything
+    # before the first whitespace.
+    #
+    #    >abc def #=> 'abc'
+    #    >gi|398365175|ref|NP_009718.3| Cdc28p [Saccharomyces cerevisiae S288c] #=> 'gi|398365175|ref|NP_009718.3|'
+    #    >abc #=> 'abc'
+    def first_name
+      index = definition.index(/\s/)
+      if index.nil?
+        return @definition
+      else
+        return @definition[0...index]
+      end
+    end
 
   end #class FastaFormat
 
diff --git a/lib/bio/db/fasta/defline.rb b/lib/bio/db/fasta/defline.rb
index cefdc15..6dc5d05 100644
--- a/lib/bio/db/fasta/defline.rb
+++ b/lib/bio/db/fasta/defline.rb
@@ -6,7 +6,6 @@
 #              Toshiaki Katayama <k at bioruby.org>
 # License::    The Ruby License
 #
-# $Id: defline.rb,v 1.1.2.1 2008/06/20 13:22:32 ngoto Exp $
 # 
 # == Description
 # 
@@ -292,7 +291,6 @@ module Bio
       while token = ary.shift
         if labels = self.class::NSIDs[token] then
           di = [ token ]
-          idtype = token
           labels.each do |x|
             token = ary.shift
             break unless token
@@ -391,7 +389,7 @@ module Bio
     # Shows words used in the defline. Returns an Array.
     def words(case_sensitive = nil, kill_regexp = self.class::KillRegexpArray,
               kwhash = self.class::KillWordsHash)
-      a = descriptions.join(' ').split(/[\.\,\;\:\(\)\[\]\{\}\<\>\"\'\`\~\/\|\?\!\&\@\#\s\x00-\x1f\x7f]+/)
+      a = descriptions.join(' ').split(/[\.\,\;\:\(\)\[\]\{\}\<\>\"\'\`\~\/\|\?\!\&\@\# \x00-\x1f\x7f]+/)
       a.collect! do |x|
         x.sub!(/\A[\$\*\-\+]+/, '')
         x.sub!(/[\$\*\-\=]+\z/, '')
diff --git a/lib/bio/db/fastq.rb b/lib/bio/db/fastq.rb
index 5f453c2..ba3586b 100644
--- a/lib/bio/db/fastq.rb
+++ b/lib/bio/db/fastq.rb
@@ -495,7 +495,7 @@ class Fastq
   # ---
   # *Returns*:: (String or nil) format name
   def format
-    @format ? @format.name : nil
+    ((defined? @format) && @format) ? @format.name : nil
   end
 
 
diff --git a/lib/bio/db/genbank/ddbj.rb b/lib/bio/db/genbank/ddbj.rb
index 2db0502..e3c2b31 100644
--- a/lib/bio/db/genbank/ddbj.rb
+++ b/lib/bio/db/genbank/ddbj.rb
@@ -5,16 +5,20 @@
 # License::    The Ruby License
 #
 
-require 'bio/db/genbank/genbank'
+warn "Bio::DDBJ is deprecated. Use Bio::GenBank."
 
 module Bio
 
-class DDBJ < GenBank
+require 'bio/db/genbank/genbank' unless const_defined?(:GenBank)
 
-  autoload :XML,          'bio/io/ddbjxml'
-  autoload :REST,         'bio/io/ddbjrest'
+# Bio::DDBJ is deprecated. Use Bio::GenBank.
+class DDBJ < GenBank
 
-  # Nothing to do (DDBJ database format is completely same as GenBank)
+  # Bio::DDBJ is deprecated. Use Bio::GenBank.
+  def initialize(str)
+    warn "Bio::DDBJ is deprecated. Use Bio::GenBank."
+    super(str)
+  end
 
 end # DDBJ
 
diff --git a/lib/bio/db/genbank/refseq.rb b/lib/bio/db/genbank/refseq.rb
index 31a8547..e87e14f 100644
--- a/lib/bio/db/genbank/refseq.rb
+++ b/lib/bio/db/genbank/refseq.rb
@@ -4,15 +4,23 @@
 # Copyright::  Copyright (C) 2000-2004 Toshiaki Katayama <k at bioruby.org>
 # License::    The Ruby License
 #
-# $Id: refseq.rb,v 1.8 2007/04/05 23:35:40 trevor Exp $
 #
 
-require 'bio/db/genbank/genbank'
+warn "Bio::RefSeq is deprecated. Use Bio::GenBank."
 
 module Bio
 
+require 'bio/db/genbank/genbank' unless const_defined?(:GenBank)
+
+# Bio::RefSeq is deprecated. Use Bio::GenBank.
 class RefSeq < GenBank
-  # Nothing to do (RefSeq database format is completely same as GenBank)
+
+  # Bio::RefSeq is deprecated. Use Bio::GenBank.
+  def initialize(str)
+    warn "Bio::RefSeq is deprecated. Use Bio::GenBank."
+    super(str)
+  end
+
 end
 
 end # Bio
diff --git a/lib/bio/db/gff.rb b/lib/bio/db/gff.rb
index 445846b..6fff435 100644
--- a/lib/bio/db/gff.rb
+++ b/lib/bio/db/gff.rb
@@ -8,7 +8,6 @@
 #              2008  Naohisa Goto <ng at bioruby.org>
 # License::    The Ruby License
 #
-# $Id:$
 #
 require 'uri'
 require 'strscan'
@@ -236,10 +235,10 @@ module Bio
           CHAR2BACKSLASH.merge({ '"' => '"', "\\" => "\\" }).freeze
 
         # prohibited characters in GFF2 columns
-        PROHIBITED_GFF2_COLUMNS = /[\t\r\n\x00-\x1f\x7f\xfe\xff]/
+        PROHIBITED_GFF2_COLUMNS = /[\t\r\n\x00-\x08\x0b\x0c\x0e-\x1f\x7f\xfe\xff]/
 
         # prohibited characters in GFF2 attribute tags
-        PROHIBITED_GFF2_TAGS = /[\s\"\;\t\r\n\x00-\x1f\x7f\xfe\xff]/
+        PROHIBITED_GFF2_TAGS = /[\s\"\;\x00-\x08\x0e-\x1f\x7f\xfe\xff]/
 
         private
         # (private) escapes GFF2 free text string
@@ -1066,7 +1065,7 @@ module Bio
 
         # parses given string and returns SequenceRegion class
         def self.parse(str)
-          dummy, seqid, start, endpos =
+          _, seqid, start, endpos =
             str.chomp.split(/\s+/, 4).collect { |x| unescape(x) }
           self.new(seqid, start, endpos)
         end
diff --git a/lib/bio/db/go.rb b/lib/bio/db/go.rb
index 31ef0bb..21d4298 100644
--- a/lib/bio/db/go.rb
+++ b/lib/bio/db/go.rb
@@ -5,7 +5,6 @@
 #               Mitsuteru C. Nakao <n at bioruby.org>
 # License::     The Ruby License
 #
-#  $Id:$
 #
 # == Gene Ontology
 #
@@ -104,12 +103,12 @@ class GO
           depth = $1.length.to_i
           rel   = $2
           term  = $3
-          goid1 = goid = $4
+          goid1 = $4
           en    = $5
           goids = parse_goids(line)   # GO:ID[ ; GO:ID...]
-          synonyms = parse_synonyms(line)  # synonym:Term[ ; synonym:Term...]
+          parse_synonyms(line)  # synonym:Term[ ; synonym:Term...]
           stack[depth]   = goids.first
-          @id2term[goid] = term
+          @id2term[goid1] = term
           
           next if depth == 0
 
@@ -128,8 +127,8 @@ class GO
                 rel1  = $1
                 term1 = $2
                 goid1 = $3
-                goids1 = parse_goids(line)
-                synonyms1 = parse_synonyms(line)
+                parse_goids(line)
+                parse_synonyms(line)
                 
                 @id2term[goid1] = term1
                 goids.each {|goid|
diff --git a/lib/bio/db/kegg/module.rb b/lib/bio/db/kegg/module.rb
index f2c5011..b867d79 100644
--- a/lib/bio/db/kegg/module.rb
+++ b/lib/bio/db/kegg/module.rb
@@ -5,7 +5,6 @@
 # Copyright::  Copyright (C) 2010 Toshiaki Katayama <k at bioruby.org>
 # License::    The Ruby License
 #
-# $Id:$
 #
 
 require 'bio/db'
@@ -81,7 +80,7 @@ class MODULE < KEGGDB
   # ---
   # *Returns*:: Hash of pathway ID and its definition
   def pathways_as_hash
-    unless @pathways_as_hash
+    unless (defined? @pathways_as_hash) && @pathways_as_hash
       @pathways_as_hash = strings_as_hash(pathways_as_strings)
     end
     @pathways_as_hash
@@ -100,7 +99,7 @@ class MODULE < KEGGDB
   # ---
   # *Returns*:: Hash of orthology ID and its definition
   def orthologs_as_hash
-    unless @orthologs_as_hash
+    unless (defined? @orthologs_as_hash) && @orthologs_as_hash
       @orthologs_as_hash = strings_as_hash(orthologs_as_strings)
     end
     @orthologs_as_hash
@@ -126,7 +125,7 @@ class MODULE < KEGGDB
   # ---
   # *Returns*:: Hash of reaction ID and its definition
   def reactions_as_hash
-    unless @reactions_as_hash
+    unless (defined? @reactions_as_hash) && @reactions_as_hash
       @reactions_as_hash = strings_as_hash(reactions_as_strings)
     end
     @reactions_as_hash
@@ -145,7 +144,7 @@ class MODULE < KEGGDB
   # ---
   # *Returns*:: Hash of compound ID and its definition
   def compounds_as_hash
-    unless @compounds_as_hash
+    unless (defined? @compounds_as_hash) && @compounds_as_hash
       @compounds_as_hash = strings_as_hash(compounds_as_strings)
     end
     @compounds_as_hash
diff --git a/lib/bio/db/kegg/pathway.rb b/lib/bio/db/kegg/pathway.rb
index 55da795..1f8c8b1 100644
--- a/lib/bio/db/kegg/pathway.rb
+++ b/lib/bio/db/kegg/pathway.rb
@@ -5,7 +5,6 @@
 # Copyright::  Copyright (C) 2010 Toshiaki Katayama <k at bioruby.org>
 # License::    The Ruby License
 #
-# $Id:$
 #
 
 require 'bio/db'
@@ -127,7 +126,7 @@ class PATHWAY < KEGGDB
   # ---
   # *Returns*:: Hash of disease ID and its definition
   def diseases_as_hash
-    unless @diseases_as_hash
+    unless (defined? @diseases_as_hash) && @diseases_as_hash
       @diseases_as_hash = strings_as_hash(diseases_as_strings)
     end
     @diseases_as_hash
@@ -166,7 +165,7 @@ class PATHWAY < KEGGDB
   # ---
   # *Returns*:: Hash of gene ID and its definition
   def genes_as_hash
-    unless @genes_as_hash
+    unless (defined? @genes_as_hash) && @genes_as_hash
       @genes_as_hash = strings_as_hash(genes_as_strings)
     end
     @genes_as_hash
@@ -192,7 +191,7 @@ class PATHWAY < KEGGDB
   # ---
   # *Returns*:: Hash of reaction ID and its definition
   def reactions_as_hash
-    unless @reactions_as_hash
+    unless (defined? @reactions_as_hash) && @reactions_as_hash
       @reactions_as_hash = strings_as_hash(reactions_as_strings)
     end
     @reactions_as_hash
@@ -210,7 +209,7 @@ class PATHWAY < KEGGDB
   # ---
   # *Returns*:: Hash of compound ID and its definition
   def compounds_as_hash
-    unless @compounds_as_hash
+    unless (defined? @compounds_as_hash) && @compounds_as_hash
       @compounds_as_hash = strings_as_hash(compounds_as_strings)
     end
     @compounds_as_hash
diff --git a/lib/bio/db/kegg/reaction.rb b/lib/bio/db/kegg/reaction.rb
index fb15932..79649e2 100644
--- a/lib/bio/db/kegg/reaction.rb
+++ b/lib/bio/db/kegg/reaction.rb
@@ -86,7 +86,7 @@ class REACTION < KEGGDB
     unless defined? @rpairs_as_hash
       rps = {}
       rpairs_as_strings.each do |line|
-        namespace, entry_id, name, rptype = line.split(/\s+/)
+        _, entry_id, name, rptype = line.split(/\s+/)
         rps[entry_id] = [ name, rptype ]
       end
       @rpairs_as_hash = rps
diff --git a/lib/bio/db/kegg/taxonomy.rb b/lib/bio/db/kegg/taxonomy.rb
deleted file mode 100644
index 01921bb..0000000
--- a/lib/bio/db/kegg/taxonomy.rb
+++ /dev/null
@@ -1,280 +0,0 @@
-#
-# = bio/db/kegg/taxonomy.rb - KEGG taxonomy parser class
-#
-# Copyright::  Copyright (C) 2007 Toshiaki Katayama <k at bioruby.org>
-# License::    The Ruby License
-#
-#  $Id:$
-#
-
-module Bio
-class KEGG
-
-# == Description
-#
-# Parse the KEGG 'taxonomy' file which describes taxonomic classification
-# of organisms.
-#
-# == References
-#
-# The KEGG 'taxonomy' file is available at
-#
-# * ftp://ftp.genome.jp/pub/kegg/genes/taxonomy
-#
-class Taxonomy
-
-  def initialize(filename, orgs = [])
-    # Stores the taxonomic tree as a linked list (implemented in Hash), so
-    # every node need to have unique name (key) to work correctly
-    @tree = Hash.new
-
-    # Also stores the taxonomic tree as a list of arrays (full path)
-    @path = Array.new
-
-    # Also stores all leaf nodes (organism codes) of every intermediate nodes
-    @leaves = Hash.new
-
-    # tentative name for the root node (use accessor to change)
-    @root = 'Genes'
-
-    hier = Array.new
-    level = 0
-    label = nil
-
-    File.open(filename).each do |line|
-      next if line.strip.empty?
-
-      # line for taxonomic hierarchy (indent according to the number of # marks)
-      if line[/^#/]
-	level = line[/^#+/].length
-	label = line[/[A-z].*/]
-	hier[level] = sanitize(label)
-
-      # line for organims name (unify different strains of a species)
-      else
-	tax, org, name, desc = line.chomp.split("\t")
-        if orgs.nil? or orgs.empty? or orgs.include?(org)
-          species, strain, = name.split('_')
-          # (0) Grouping of the strains of the same species.
-          #  If the name of species is the same as the previous line,
-          #  add the species to the same species group.
-          #   ex. Gamma/enterobacteria has a large number of organisms,
-          #       so sub grouping of strains is needed for E.coli strains etc.
-          #
-          # However, if the species name is already used, need to avoid
-          # collision of species name as the current implementation stores
-          # the tree as a Hash, which may cause the infinite loop.
-          #
-          # (1) If species name == the intermediate node of other lineage
-          #  Add '_sp' to the species name to avoid the conflict (1-1), and if
-          #  'species_sp' is already taken, use 'species_strain' instead (1-2).
-          #   ex. Bacteria/Proteobacteria/Beta/T.denitrificans/tbd
-          #       Bacteria/Proteobacteria/Epsilon/T.denitrificans_ATCC33889/tdn
-          #    -> Bacteria/Proteobacteria/Beta/T.denitrificans/tbd
-          #       Bacteria/Proteobacteria/Epsilon/T.denitrificans_sp/tdn
-          #
-          # (2) If species name == the intermediate node of the same lineage
-          #  Add '_sp' to the species name to avoid the conflict.
-          #   ex. Bacteria/Cyanobacgteria/Cyanobacteria_CYA/cya
-          #       Bacteria/Cyanobacgteria/Cyanobacteria_CYB/cya
-          #       Bacteria/Proteobacteria/Magnetococcus/Magnetococcus_MC1/mgm
-          #    -> Bacteria/Cyanobacgteria/Cyanobacteria_sp/cya
-          #       Bacteria/Cyanobacgteria/Cyanobacteria_sp/cya
-          #       Bacteria/Proteobacteria/Magnetococcus/Magnetococcus_sp/mgm
-          sp_group = "#{species}_sp"
-          if @tree[species]
-            if hier[level+1] == species
-              # case (0)
-            else
-              # case (1-1)
-              species = sp_group
-              # case (1-2)
-              if @tree[sp_group] and hier[level+1] != species
-                species = name
-              end
-            end
-          else
-            if hier[level] == species
-              # case (2)
-              species = sp_group
-            end
-          end
-          # 'hier' is an array of the taxonomic tree + species and strain name.
-          #  ex. [nil, Eukaryotes, Fungi, Ascomycetes, Saccharomycetes] +
-          #      [S_cerevisiae, sce]
-          hier[level+1] = species	# sanitize(species)
-          hier[level+2] = org
-          ary = hier[1, level+2]
-          warn ary.inspect if $DEBUG
-          add_to_tree(ary)
-          add_to_leaves(ary)
-          add_to_path(ary)
-        end
-      end
-    end
-    return tree
-  end
-
-  attr_reader :tree
-  attr_reader :path
-  attr_reader :leaves
-  attr_accessor :root
-
-  def organisms(group)
-    @leaves[group]
-  end
-
-  # Add a new path [node, subnode, subsubnode, ..., leaf] under the root node
-  # and every intermediate nodes stores their child nodes as a Hash.
-  def add_to_tree(ary)
-    parent = @root
-    ary.each do |node|
-      @tree[parent] ||= Hash.new
-      @tree[parent][node] = nil
-      parent = node
-    end
-  end
-
-  # Add a new path [node, subnode, subsubnode, ..., leaf] under the root node
-  # and stores leaf nodes to the every intermediate nodes as an Array.
-  def add_to_leaves(ary)
-    leaf = ary.last
-    ary.each do |node|
-      @leaves[node] ||= Array.new
-      @leaves[node] << leaf
-    end
-  end
-
-  # Add a new path [node, subnode, subsubnode, ..., leaf] under the root node
-  # and stores the path itself in an Array.
-  def add_to_path(ary)
-    @path << ary
-  end
-
-  # Compaction of intermediate nodes of the resulted taxonomic tree.
-  #  - If child node has only one child node (grandchild), make the child of
-  #    grandchild as a grandchild.
-  #  ex.
-  #    Plants / Monocotyledons / grass family / osa
-  #    --> Plants / Monocotyledons / osa
-  #
-  def compact(node = root)
-    # if the node has children
-    if subnodes = @tree[node]
-      # obtain grandchildren for each child
-      subnodes.keys.each do |subnode|
-        if subsubnodes = @tree[subnode]
-          # if the number of grandchild node is 1
-          if subsubnodes.keys.size == 1
-            # obtain the name of the grandchild node
-            subsubnode = subsubnodes.keys.first
-            # obtain the child of the grandchlid node
-            if subsubsubnodes = @tree[subsubnode]
-              # make the child of grandchild node as a chlid of child node
-              @tree[subnode] = subsubsubnodes
-              # delete grandchild node
-              @tree[subnode].delete(subsubnode)
-              warn "--- compact: #{subsubnode} is replaced by #{subsubsubnodes}" if $DEBUG
-              # retry until new grandchild also needed to be compacted.
-              retry
-            end
-          end
-        end
-        # repeat recurseively
-        compact(subnode)
-      end
-    end
-  end
-
-  # Reduction of the leaf node of the resulted taxonomic tree.
-  #  - If the parent node have only one leaf node, replace parent node
-  #    with the leaf node.
-  #  ex.
-  #   Plants / Monocotyledons / osa
-  #   --> Plants / osa
-  #
-  def reduce(node = root)
-    # if the node has children
-    if subnodes = @tree[node]
-      # obtain grandchildren for each child
-      subnodes.keys.each do |subnode|
-        if subsubnodes = @tree[subnode]
-          # if the number of grandchild node is 1
-          if subsubnodes.keys.size == 1
-            # obtain the name of the grandchild node
-            subsubnode = subsubnodes.keys.first
-            # if the grandchild node is a leaf node
-            unless @tree[subsubnode]
-              # make the grandchild node as a child node
-              @tree[node].update(subsubnodes)
-              # delete child node
-              @tree[node].delete(subnode)
-              warn "--- reduce: #{subnode} is replaced by #{subsubnode}" if $DEBUG
-            end
-          end
-        end
-        # repeat recursively
-        reduce(subnode)
-      end
-    end
-  end
-
-  # Traverse the taxonomic tree by the depth first search method
-  # under the given (root or intermediate) node.
-  def dfs(parent, &block)
-    if children = @tree[parent]
-      yield parent, children
-      children.keys.each do |child|
-        dfs(child, &block)
-      end
-    end
-  end
-
-  # Similar to the dfs method but also passes the current level of the nest
-  # to the iterator.
-  def dfs_with_level(parent, &block)
-    @level ||= 0
-    if children = @tree[parent]
-      yield parent, children, @level
-      @level += 1
-      children.keys.each do |child|
-        dfs_with_level(child, &block)
-      end
-      @level -= 1
-    end
-  end
-
-  # Convert the taxonomic tree structure to a simple ascii art.
-  def to_s
-    result = "#{@root}\n"
-    @tree[@root].keys.each do |node|
-      result += ascii_tree(node, "  ")
-    end
-    return result
-  end
-
-  private
-
-  # Helper method for the to_s method.
-  def ascii_tree(node, indent)
-    result = "#{indent}+- #{node}\n"
-    indent += "  "
-    @tree[node].keys.each do |child|
-      if @tree[child]
-        result += ascii_tree(child, indent)
-      else
-        result += "#{indent}+- #{child}\n"
-      end
-    end
-    return result
-  end
-
-  def sanitize(str)
-    str.gsub(/[^A-z0-9]/, '_')
-  end
-
-end # Taxonomy
-
-end # KEGG
-end # Bio
-
diff --git a/lib/bio/db/nexus.rb b/lib/bio/db/nexus.rb
index d62c1db..42bc53e 100644
--- a/lib/bio/db/nexus.rb
+++ b/lib/bio/db/nexus.rb
@@ -299,7 +299,7 @@ module Bio
       ary = str.split(/[\s+=]/)
       ary.collect! { |x| x.strip!; x.empty? ? nil : x }
       ary.compact!
-      in_comment = false
+      #in_comment = false
       comment_level = 0
      
       # Main loop
@@ -807,6 +807,7 @@ module Bio
       # *Returns*:: String
       def to_nexus
         str = "generic block \"" + get_name + "\" [do not know how to write in nexus format]"
+        str
       end
       
       # Adds a token to this.
@@ -1716,7 +1717,7 @@ module Bio
           return "empty"  
         end
         str = String.new
-        row_array = to_nexus_row_array( spacer = " ", false )
+        row_array = to_nexus_row_array( " ", false )
         row_array.each do | row |
           str << row << END_OF_LINE
         end
diff --git a/lib/bio/db/pdb/pdb.rb b/lib/bio/db/pdb/pdb.rb
index f61d8d2..bea905c 100644
--- a/lib/bio/db/pdb/pdb.rb
+++ b/lib/bio/db/pdb/pdb.rb
@@ -608,8 +608,8 @@ module Bio
 
       # SEQRES record class
       SEQRES =
-        def_rec(#[  9, 10, Pdb_Integer,      :serNum ],
-                [  9, 10, Pdb_Continuation, nil      ],
+        def_rec(#[  8, 10, Pdb_Integer,      :serNum ],
+                [  8, 10, Pdb_Continuation, nil      ], # PDB v3.2 (2008)
                 [ 12, 12, Pdb_Character,    :chainID ],
                 [ 14, 17, Pdb_Integer,      :numRes  ],
                 [ 20, 22, Pdb_Residue_name, :resName ],
diff --git a/lib/bio/db/phyloxml/phyloxml_elements.rb b/lib/bio/db/phyloxml/phyloxml_elements.rb
index 42c4b79..4aae1ef 100644
--- a/lib/bio/db/phyloxml/phyloxml_elements.rb
+++ b/lib/bio/db/phyloxml/phyloxml_elements.rb
@@ -5,7 +5,6 @@
 #               Diana Jaunzeikare <latvianlinuxgirl at gmail.com>
 # License::     The Ruby License
 #
-# $Id:$
 #
 # == Description
 #
@@ -91,17 +90,17 @@ module PhyloXML
     # Converts elements to xml representation. Called by PhyloXML::Writer class.
     def to_xml
       taxonomy = LibXML::XML::Node.new('taxonomy')
-      taxonomy["type"] = @type if @type != nil
-      taxonomy["id_source"] = @id_source if @id_source != nil
-
-      PhyloXML::Writer.generate_xml(taxonomy, self, [[:complex, 'id', @taxonomy_id],
-        [:pattern, 'code', @code, Regexp.new("^[a-zA-Z0-9_]{2,10}$")],
-        [:simple, 'scientific_name', @scientific_name],
-        [:simple, 'authority', @authority],
-        [:simplearr, 'common_name', @common_names],
-        [:simplearr, 'synonym', @synonyms],
-        [:simple, 'rank', @rank],
-        [:complex, 'uri', at uri]])
+      taxonomy["type"] = @type if (defined? @type) && @type
+      taxonomy["id_source"] = @id_source if (defined? @id_source) && @id_source
+
+      PhyloXML::Writer.generate_xml(taxonomy, self, [[:complex, 'id', (defined? @taxonomy_id) ? @taxonomy_id : nil],
+        [:pattern, 'code', (defined? @code) ? @code : nil, Regexp.new("^[a-zA-Z0-9_]{2,10}$")],
+        [:simple, 'scientific_name', (defined? @scientific_name) ? @scientific_name : nil],
+        [:simple, 'authority', (defined? @authority) ? @authority : nil],
+        [:simplearr, 'common_name', (defined? @common_names) ? @common_names : nil],
+        [:simplearr, 'synonym', (defined? @synonyms) ? @synonyms : nil],
+        [:simple, 'rank', (defined? @rank) ? @rank : nil],
+        [:complex, 'uri',(defined? @uri) ? @uri : nil]])
         #@todo anything else
 
 
@@ -161,7 +160,7 @@ module PhyloXML
      @other = []
    end
 
- end
+  end
 
 
   # == Description
@@ -287,7 +286,7 @@ module PhyloXML
     def to_xml(branch_length,  write_branch_length_as_subelement)
       clade = LibXML::XML::Node.new('clade')
       
-      PhyloXML::Writer.generate_xml(clade, self, [[:simple, 'name', @name]])
+      PhyloXML::Writer.generate_xml(clade, self, [[:simple, 'name', (defined? @name) ? @name : nil]])
 
       if branch_length != nil       
         if write_branch_length_as_subelement
@@ -301,15 +300,15 @@ module PhyloXML
       PhyloXML::Writer.generate_xml(clade, self, [
           [:attr, "id_source"],
           [:objarr, 'confidence', 'confidences'],
-          [:simple, 'width', @width],
-          [:complex, 'branch_color', @branch_color],
-          [:simple, 'node_id', @node_id],
+          [:simple, 'width', (defined? @width) ? @width : nil],
+          [:complex, 'branch_color', (defined? @branch_color) ? @branch_color : nil],
+          [:simple, 'node_id', (defined? @node_id) ? @node_id : nil],
           [:objarr, 'taxonomy', 'taxonomies'],
           [:objarr, 'sequence', 'sequences'],
-          [:complex, 'events', @events],
-          [:complex, 'binary_characters', @binary_characters],          
+          [:complex, 'events', (defined? @events) ? @events : nil],
+          [:complex, 'binary_characters', (defined? @binary_characters) ? @binary_characters : nil],
           [:objarr, 'distribution', 'distributions'],
-          [:complex, 'date', @date],          
+          [:complex, 'date', (defined? @date) ? @date : nil],
           [:objarr, 'reference', 'references'],
           [:objarr, 'propery', 'properties']])
      
@@ -322,7 +321,7 @@ module PhyloXML
   # Events at the root node of a clade (e.g. one gene duplication).
   class Events
     #value comes from list: transfer, fusion, speciation_or_duplication, other, mixed, unassigned
-    attr_accessor :type
+    attr_reader :type
 
     # Integer
     attr_reader :duplications, :speciations, :losses
@@ -330,26 +329,33 @@ module PhyloXML
     # Confidence object
     attr_reader :confidence
 
-    def confidence=(type, value)
-      @confidence = Confidence.new(type, value)
-    end
+    #---
+    #def confidence=(type, value)
+    #  @confidence = Confidence.new(type, value)
+    #end
+    #+++
 
+    # Confidence object
     def confidence=(conf)
       @confidence = conf
     end
 
+    # Integer
     def duplications=(str)
       @duplications = str.to_i
     end
 
+    # Integer
     def losses=(str)
       @losses = str.to_i
     end
 
+    # Integer
     def speciations=(str)
       @speciations=str.to_i
     end
 
+    #value comes from list: transfer, fusion, speciation_or_duplication, other, mixed, unassigned
     def type=(str)
       @type = str
       #@todo add unit test for this
@@ -363,11 +369,11 @@ module PhyloXML
       #@todo add unit test
       events = LibXML::XML::Node.new('events')
       PhyloXML::Writer.generate_xml(events, self, [
-        [:simple, 'type', @type],
-        [:simple, 'duplications', @duplications],
-        [:simple, 'speciations', @speciations],
-        [:simple, 'losses', @losses],
-        [:complex, 'confidence', @confidence]])
+        [:simple, 'type', (defined? @type) ? @type : nil],
+        [:simple, 'duplications', (defined? @duplications) ? @duplications : nil],
+        [:simple, 'speciations', (defined? @speciations) ? @speciations : nil],
+        [:simple, 'losses', (defined? @losses) ? @losses : nil],
+        [:complex, 'confidence', (defined? @confidence) ? @confidence : nil]])
       return events
     end
 
@@ -437,13 +443,13 @@ module PhyloXML
     # 'map datum'), for example Google's KML uses 'WGS84'.
     class Point
       # Float. Latitude
-      attr_accessor :lat
+      attr_reader :lat
 
       # Float. Longitute
-      attr_accessor :long
+      attr_reader :long
       
       # Float. Altitude
-      attr_accessor :alt
+      attr_reader :alt
 
       # String. Altitude unit.
       attr_accessor :alt_unit
@@ -451,14 +457,17 @@ module PhyloXML
       # Geodedic datum / map datum
       attr_accessor :geodetic_datum
 
+      # Float. Latitude
       def lat=(str)
         @lat = str.to_f unless str.nil?
       end
 
+      # Float. Longitute
       def long=(str)
         @long = str.to_f unless str.nil?
       end
 
+      # Float. Altitude
       def alt=(str)
         @alt = str.to_f unless str.nil?
       end
@@ -581,7 +590,7 @@ module PhyloXML
       def to_xml
         
         seq = LibXML::XML::Node.new('sequence')
-        if @type != nil
+        if (defined? @type) && @type
           if ["dna", "rna", "protein"].include?(@type)
             seq["type"] = @type
           else 
@@ -592,22 +601,22 @@ module PhyloXML
         PhyloXML::Writer.generate_xml(seq, self, [
             [:attr, 'id_source'],
             [:attr, 'id_ref'],
-            [:pattern, 'symbol', @symbol, Regexp.new("^\\S{1,10}$")],
-            [:complex, 'accession', @accession],
-            [:simple, 'name', @name],
-            [:simple, 'location', @location]])
+            [:pattern, 'symbol', (defined? @symbol) ? @symbol : nil, Regexp.new("^\\S{1,10}$")],
+            [:complex, 'accession', (defined? @accession) ? @accession : nil],
+            [:simple, 'name', (defined? @name) ? @name : nil],
+            [:simple, 'location', (defined? @location) ? @location : nil]])
 
-        if @mol_seq != nil
+        if (defined? @mol_seq) && @mol_seq
           molseq = LibXML::XML::Node.new('mol_seq', @mol_seq)
-          molseq["is_aligned"] = @is_aligned.to_s if @is_aligned != nil
+          molseq["is_aligned"] = @is_aligned.to_s if (defined? @is_aligned) && @is_aligned != nil
           seq << molseq
         end
 
         PhyloXML::Writer.generate_xml(seq, self, [
             #[:pattern, 'mol_seq', @mol_seq, Regexp.new("^[a-zA-Z\.\-\?\*_]+$")],
-            [:complex, 'uri', @uri],
+            [:complex, 'uri', (defined? @uri) ? @uri : nil],
             [:objarr, 'annotation', 'annotations'],
-            [:complex, 'domain_architecture', @domain_architecture]])
+            [:complex, 'domain_architecture', (defined? @domain_architecture) ? @domain_architecture : nil]])
             #@todo test domain_architecture
         #any
         return seq
@@ -626,7 +635,7 @@ module PhyloXML
         # seq.primary_accession = @accession.value could be this
         seq.definition = @name
         #seq.comments = @name //this one?
-        if @uri != nil
+        if (defined? @uri) && @uri
           h = {'url' => @uri.uri,
             'title' => @uri.desc }
           ref = Bio::Reference.new(h)
@@ -720,11 +729,11 @@ module PhyloXML
       # Converts elements to xml representation. Called by PhyloXML::Writer class. 
       def to_xml
         annot = LibXML::XML::Node.new('annotation')
-        annot["ref"] = @ref if @ref != nil
-        PhyloXML::Writer.generate_xml(annot, self, [[:simple, 'desc', @desc],
-          [:complex, 'confidence', @confidence],
+        annot["ref"] = @ref if (defined? @ref) && @ref
+        PhyloXML::Writer.generate_xml(annot, self, [[:simple, 'desc', (defined? @desc) ? @desc : nil],
+          [:complex, 'confidence', (defined? @confidence) ? @confidence : nil],
           [:objarr, 'property', 'properties'],
-          [:complex, 'uri', @uri]])
+          [:complex, 'uri', (defined? @uri) ? @uri : nil]])
         return annot
       end
     end
@@ -825,10 +834,10 @@ module PhyloXML
         date = LibXML::XML::Node.new('date')
         PhyloXML::Writer.generate_xml(date, self, [
             [:attr, 'unit'],
-            [:simple, 'desc', @desc],
-            [:simple, 'value', @value],
-            [:simple, 'minimum', @minimum],
-            [:simple, 'maximum', @maximum]])
+            [:simple, 'desc', (defined? @desc) ? @desc : nil],
+            [:simple, 'value', (defined? @value) ? @value : nil],
+            [:simple, 'minimum', (defined? @minimum) ? @minimum : nil],
+            [:simple, 'maximum', (defined? @maximum) ? @maximum : nil]])
         return date
       end
 
@@ -839,11 +848,12 @@ module PhyloXML
     # 'length' is the total length of the protein
     class DomainArchitecture
       # Integer. Total length of the protein
-      attr_accessor :length
+      attr_reader :length
 
       # Array of ProteinDomain objects.
       attr_reader :domains
 
+      # Integer. Total length of the protein
       def length=(str)
         @length = str.to_i
       end
@@ -868,7 +878,7 @@ module PhyloXML
     # name/unique identifier is described via the 'id' attribute.
     class ProteinDomain
       #Float, for example to store E-values    4.7E-14
-      attr_accessor :confidence
+      attr_reader :confidence
       
       # String
       attr_accessor :id, :value
@@ -879,14 +889,17 @@ module PhyloXML
       # Integer. End of the domain.
       attr_reader :to
 
+      # Integer. Beginning of the domain.
       def from=(str)
         @from = str.to_i
       end
 
+      # Integer. End of the domain.
       def to=(str)
         @to = str.to_i
       end
       
+      #Float, for example to store E-values    4.7E-14
       def confidence=(str)
         @confidence = str.to_f
       end
@@ -901,7 +914,7 @@ module PhyloXML
           xml_node = LibXML::XML::Node.new('domain', @value)
           xml_node["from"] = @from.to_s
           xml_node["to"] = @to.to_s
-          xml_node["id"] = @id if @id != nil
+          xml_node["id"] = @id if (defined? @id) && @id
           xml_node["confidence"] = @confidence.to_s
 
           return xml_node
@@ -987,7 +1000,7 @@ module PhyloXML
         ref = LibXML::XML::Node.new('reference')
         Writer.generate_xml(ref, self, [
               [:attr, 'doi'],
-              [:simple, 'desc', @desc]])
+              [:simple, 'desc', (defined? @desc) ? @desc : nil]])
          return ref
       end
 
@@ -999,7 +1012,7 @@ module PhyloXML
     # For example it could be used to describe multiple parents of a clade.
     class CladeRelation
       # Float
-      attr_accessor :distance
+      attr_reader :distance
       # String. Id of the referenced parents of a clade.
       attr_accessor :id_ref_0, :id_ref_1
       # String
@@ -1007,6 +1020,7 @@ module PhyloXML
       # Confidence object
       attr_accessor :confidence
 
+      # Float
       def distance=(str)
         @distance = str.to_f
       end
@@ -1022,7 +1036,7 @@ module PhyloXML
               [:attr, 'id_ref_1'],
               [:attr, 'distance'],
               [:attr, 'type'],
-              [:complex, 'confidence', @confidnece]])         
+              [:complex, 'confidence', (defined? @confidnece) ? @confidnece : nil]])
 
           return cr
         end
@@ -1107,7 +1121,13 @@ module PhyloXML
     # attribute 'type' is 'orthology').
     class SequenceRelation
       # String
-      attr_accessor :id_ref_0, :id_ref_1, :type
+      attr_accessor :id_ref_0, :id_ref_1
+
+      # String. Allowed values: "orthology", "one_to_one_orthology",
+      # "super_orthology", "paralogy", "ultra_paralogy", "xenology",
+      # "unknown", "other"
+      attr_reader :type
+
       # Float
       attr_reader :distance
 
@@ -1117,6 +1137,9 @@ module PhyloXML
         @distance = str.to_f if str != nil
       end
 
+      # String. Allowed values: "orthology", "one_to_one_orthology",
+      # "super_orthology", "paralogy", "ultra_paralogy", "xenology",
+      # "unknown", "other"
       def type=(str)
         #@todo do warning instead?
         #@todo do validation at actually writing xml
@@ -1137,7 +1160,7 @@ module PhyloXML
           sr = LibXML::XML::Node.new('sequence_relation')
           sr['id_ref_0'] = @id_ref_0
           sr['id_ref_1'] = @id_ref_1
-          sr['distance'] = @distance.to_s if @distance != nil
+          sr['distance'] = @distance.to_s if (defined? @distance) && @distance
           sr['type'] = @type
           return sr
         end
@@ -1145,7 +1168,7 @@ module PhyloXML
 
     end
 
-   class Other
+    class Other
       attr_accessor :element_name, :attributes, :children, :value
       
       def initialize
diff --git a/lib/bio/db/phyloxml/phyloxml_parser.rb b/lib/bio/db/phyloxml/phyloxml_parser.rb
index 516b9f5..99aff25 100644
--- a/lib/bio/db/phyloxml/phyloxml_parser.rb
+++ b/lib/bio/db/phyloxml/phyloxml_parser.rb
@@ -5,7 +5,6 @@
 #               Diana Jaunzeikare <latvianlinuxgirl at gmail.com>
 # License::     The Ruby License
 #
-# $Id:$
 #
 # == Description
 #
@@ -162,6 +161,7 @@ module PhyloXML
         ensure
           obj.close if obj and !obj.closed?
         end
+        ret
       else
         obj
       end
@@ -258,7 +258,7 @@ module PhyloXML
 
       schema = _schema
       begin
-        flag = xml_instance.validate_schema(schema) do |msg, flag|
+        flag = xml_instance.validate_schema(schema) do |msg, _|
           # The document of libxml-ruby says that the block is called
           # when validation failed, but it seems it is never called
           # even when validation failed!
diff --git a/lib/bio/db/phyloxml/phyloxml_writer.rb b/lib/bio/db/phyloxml/phyloxml_writer.rb
index 2f7ffa7..4307ca6 100644
--- a/lib/bio/db/phyloxml/phyloxml_writer.rb
+++ b/lib/bio/db/phyloxml/phyloxml_writer.rb
@@ -5,7 +5,6 @@
 #               Diana Jaunzeikare <latvianlinuxgirl at gmail.com>
 # License::     The Ruby License
 #
-# $Id:$
 #
 # == Description
 #
@@ -205,7 +204,7 @@ module Bio
         end
       end
       return root
-     end
+      end
 
       private
 
diff --git a/lib/bio/db/sanger_chromatogram/chromatogram.rb b/lib/bio/db/sanger_chromatogram/chromatogram.rb
index 555434d..db60d60 100644
--- a/lib/bio/db/sanger_chromatogram/chromatogram.rb
+++ b/lib/bio/db/sanger_chromatogram/chromatogram.rb
@@ -4,7 +4,6 @@
 # Copyright::	Copyright (C) 2009 Anthony Underwood <anthony.underwood at hpa.org.uk>, <email2ants at gmail.com>
 # License::	The Ruby License
 #
-# $Id:$
 #
 require 'bio/sequence/adapter'
 module Bio
@@ -103,7 +102,7 @@ module Bio
       @gtrace = tmp_trace.reverse
 
       # reverse base qualities
-      if !@aqual.nil? # if qualities exist
+      if (defined? @aqual) && @aqual # if qualities exist
         tmp_qual = @aqual
         @aqual = @tqual.reverse
         @tqual = tmp_qual.reverse
diff --git a/lib/bio/db/transfac.rb b/lib/bio/db/transfac.rb
index 462c62c..6f38494 100644
--- a/lib/bio/db/transfac.rb
+++ b/lib/bio/db/transfac.rb
@@ -118,7 +118,7 @@ class TRANSFAC < EMBLDB
         end
       end
       ma_dat.keys.sort.each_with_index do |k, i|
-        rep_nt = ma_dat[k].slice!(-1, 1)
+        ma_dat[k].slice!(-1, 1)
         ma_dat[k].slice!(-1, 1)
         ma_ary[i] = ma_dat[k].split(/\s+/)
         ma_ary[i].each_with_index do |x, j|
diff --git a/lib/bio/io/das.rb b/lib/bio/io/das.rb
index 84ea5a3..43af8aa 100644
--- a/lib/bio/io/das.rb
+++ b/lib/bio/io/das.rb
@@ -6,7 +6,6 @@
 #		Toshiaki Katayama <k at bioruby.org>
 # License::	The Ruby License
 #
-# $Id:$
 #
 #--
 # == TODO
@@ -49,9 +48,9 @@ class DAS
     ary = []
     result = Bio::Command.post_form("#{@server}/das/dsn")
     doc = REXML::Document.new(result.body)
-    doc.elements.each('/descendant::DSN') do |e|
+    doc.elements.each('/descendant::DSN') do |ee|
       dsn = DSN.new
-      e.elements.each do |e|
+      ee.elements.each do |e|
         case e.name
         when 'SOURCE'
           dsn.source = e.text
@@ -80,10 +79,10 @@ class DAS
     end
     result = Bio::Command.post_form("#{@server}/das/#{src}/entry_points")
     doc = REXML::Document.new(result.body)
-    doc.elements.each('/descendant::ENTRY_POINTS') do |e|
-      entry_point.href = e.attributes['href']
-      entry_point.version = e.attributes['version']
-      e.elements.each do |e|
+    doc.elements.each('/descendant::ENTRY_POINTS') do |ee|
+      entry_point.href = ee.attributes['href']
+      entry_point.version = ee.attributes['version']
+      ee.elements.each do |e|
         segment = SEGMENT.new
         segment.entry_id = e.attributes['id']
         segment.start = e.attributes['start']
@@ -120,9 +119,9 @@ class DAS
       sequence.start = e.attributes['start']
       sequence.stop = e.attributes['stop']
       sequence.version = e.attributes['version']
-      e.elements.each do |e|
-        sequence.sequence = Bio::Sequence::NA.new(e.text)
-        sequence.length = e.attributes['length'].to_i
+      e.elements.each do |el|
+        sequence.sequence = Bio::Sequence::NA.new(el.text)
+        sequence.length = el.attributes['length'].to_i
       end
       ary << sequence
     end
@@ -183,22 +182,22 @@ class DAS
 
     result = Bio::Command.post_form("#{@server}/das/#{dsn}/types", opts)
     doc = REXML::Document.new(result.body)
-    doc.elements.each('/descendant::GFF') do |e|
-      types.version = e.attributes['version']
-      types.href = e.attributes['href']
-      e.elements.each do |e|
+    doc.elements.each('/descendant::GFF') do |ee|
+      types.version = ee.attributes['version']
+      types.href = ee.attributes['href']
+      ee.elements.each do |e|
         segment = SEGMENT.new
         segment.entry_id = e.attributes['id']
         segment.start = e.attributes['start']
         segment.stop = e.attributes['stop']
         segment.version = e.attributes['version']
         segment.label = e.attributes['label']
-        e.elements.each do |e|
+        e.elements.each do |el|
           t = TYPE.new
-          t.entry_id = e.attributes['id']
-          t.method = e.attributes['method']
-          t.category = e.attributes['category']
-          t.count = e.text.to_i
+          t.entry_id = el.attributes['id']
+          t.method = el.attributes['method']
+          t.category = el.attributes['category']
+          t.count = el.text.to_i
           segment.types << t
         end
         types.segments << segment
@@ -234,21 +233,21 @@ class DAS
 
     result = Bio::Command.post_form("#{@server}/das/#{dsn}/features", opts)
     doc = REXML::Document.new(result.body)
-    doc.elements.each('/descendant::GFF') do |e|
-      gff.version = e.attributes['version']
-      gff.href = e.attributes['href']
-      e.elements.each('SEGMENT') do |e|
+    doc.elements.each('/descendant::GFF') do |elem|
+      gff.version = elem.attributes['version']
+      gff.href = elem.attributes['href']
+      elem.elements.each('SEGMENT') do |ele|
         segment = SEGMENT.new
-        segment.entry_id = e.attributes['id']
-        segment.start = e.attributes['start']
-        segment.stop = e.attributes['stop']
-        segment.version = e.attributes['version']
-        segment.label = e.attributes['label']
-        e.elements.each do |e|
+        segment.entry_id = ele.attributes['id']
+        segment.start = ele.attributes['start']
+        segment.stop = ele.attributes['stop']
+        segment.version = ele.attributes['version']
+        segment.label = ele.attributes['label']
+        ele.elements.each do |el|
           feature = FEATURE.new
-          feature.entry_id = e.attributes['id']
-          feature.label = e.attributes['label']
-          e.elements.each do |e|
+          feature.entry_id = el.attributes['id']
+          feature.label = el.attributes['label']
+          el.elements.each do |e|
             case e.name
             when 'TYPE'
               type = TYPE.new
@@ -289,21 +288,21 @@ class DAS
               group.entry_id = e.attributes['id']
               group.label = e.attributes['label']
               group.type = e.attributes['type']
-              e.elements.each do |e|
-                case e.name
+              e.elements.each do |ee|
+                case ee.name
                 when 'NOTE'		# in GROUP
-                  group.notes << e.text
+                  group.notes << ee.text
                 when 'LINK'		# in GROUP
                   link = LINK.new
-                  link.href = e.attributes['href']
-                  link.text = e.text
+                  link.href = ee.attributes['href']
+                  link.text = ee.text
                   group.links << link
                 when 'TARGET'		# in GROUP
                   target = TARGET.new
-                  target.entry_id = e.attributes['id']
-                  target.start = e.attributes['start']
-                  target.stop = e.attributes['stop']
-                  target.name = e.text
+                  target.entry_id = ee.attributes['id']
+                  target.start = ee.attributes['start']
+                  target.stop = ee.attributes['stop']
+                  target.name = ee.text
                   group.targets << target
                 end
               end
diff --git a/lib/bio/io/dbget.rb b/lib/bio/io/dbget.rb
deleted file mode 100644
index a747884..0000000
--- a/lib/bio/io/dbget.rb
+++ /dev/null
@@ -1,194 +0,0 @@
-#
-# = bio/io/dbget.rb - GenomeNet/DBGET client module
-#
-# Copyright::	Copyright (C) 2000, 2001
-#		Mitsuteru C. Nakao <n at bioruby.org>,
-#		Toshiaki Katayama <k at bioruby.org>
-# License::	The Ruby License
-#
-# $Id: dbget.rb,v 1.13 2007/04/05 23:35:41 trevor Exp $
-#
-# == DBGET
-#
-# Accessing the GenomeNet/DBGET data retrieval system
-# http://www.genome.jp/dbget/ within the intranet.
-#
-
-require 'socket'
-
-module Bio
-
-class DBGET
-
-  # default DBGET server address
-# SERV = "dbgetserv.genome.jp"
-  SERV = "dbget.genome.jp"
-  # default DBGET port number
-  PORT = "3266"
-
-  # Main class method to access DBGET server.  Optionally, this method
-  # can be called with the alternative DBGET server address and the
-  # TCP/IP port number.
-  #
-  # 'com' should be one of the following DBGET commands:
-  #
-  # * alink, bfind, bget, binfo, blink, bman, bref, btab, btit
-  #
-  # These methods are shortcut for the dbget commands.  Actually,
-  # Bio::DBGET.((|com|))(arg) internally calls Bio::DBGET.dbget(com, arg).
-  # Most of these methods accept the argument "-h" for help.
-  #
-  # 'arg' should be one of the following formats :
-  #
-  # * [options] db
-  #   * specify the database name only for binfo, bman etc.
-  # * [options] db:entry
-  #   * specify the database name and the entry name to retrieve.
-  # * [options] db entry1 entry2 ...
-  #   * specify the database name and the list of entries to retrieve.
-  #
-  # Note that options in the above example can be omitted.  If 'arg' is
-  # empty, the help message with a list of options for 'com' will be
-  # shown by default.  Supported database names will be found at the
-  # GenomeNet DBGET web page http://www.genome.jp/dbget/.
-  #
-  def DBGET.dbget(com, arg, serv = nil, port = nil)
-
-    unless serv or port		# if both of serv and port are nil
-      if ENV["DBGET"] =~ /:/		# and ENV["DBGET"] exists
-        serv, port = ENV["DBGET"].split(':')
-      end
-    end
-    serv = serv ? serv : SERV
-    port = port ? port : PORT
-
-    if arg.empty?
-      arg = "-h"			# DBGET help message
-    end
-
-    query = "#{com} #{arg}\n"		# DBGET query string
-
-    sock = TCPSocket.open("#{serv}", "#{port}")
-
-    sock.write(query)			# submit query
-    sock.flush			# buffer flush
-
-    sock.gets				# skip "+Helo DBgetServ ..."
-    sock.gets				# skip "#If you see this message, ..."
-    sock.gets				# skip "*Request-IDent"
-
-    result = sock.read		# DBGET result
-
-    sock.close
-
-    return result
-  end
-
-  # Show the version information of the DBGET server.
-  def DBGET.version
-    dbget("bget", "-V")
-  end
-
-
-  #--
-  # bacc("db entry")	- not supported : get accession(s)
-  # bent("db entry")	- not supported : get entry name
-  # lmarge("db entry")	- not supported
-  #++
-
-  # alink("db entry") method returns relations
-  def DBGET.alink(arg)
-    dbget("alink", arg)
-  end
-
-  # bfind("db keyword")	method searches entries by keyword
-  def DBGET.bfind(arg)
-    dbget("bfind", arg)
-  end
-
-  # bget("db entry") method retrieves entries specified by the entry names
-  def DBGET.bget(arg)
-    dbget("bget", arg)
-  end
-
-  # seq("db entry") method retrieves the first sequence of the entry
-  #
-  # Shortcut to retrieve the sequence of the entry in FASTA format.
-  # This method is equivalent to Bio::DBGET.bget("-f -n 1 #{arg}") and
-  # 'arg' should be the "db:entry" or "db entry1 entry2 ..." format.
-  def DBGET.seq(arg)
-    dbget("bget", "-f -n 1 #{arg}")
-  end
-
-  # seq2("db entry") method retrieves the second sequence of the entry if any
-  #
-  # Shortcut to retrieve the second sequence of the entry in FASTA format.
-  # This method is equivalent to Bio::DBGET.bget("-f -n 2 #{arg}").
-  # Only useful when treating the KEGG GENES database entries which have
-  # both AASEQ and NTSEQ fields. This method is obsolete and it is
-  # recommended to use 'naseq' and 'aaseq' instead.
-  def DBGET.seq2(arg)
-    dbget("bget", "-f -n 2 #{arg}")
-  end
-
-  # naseq("db entry") method retrieves the nucleic acid sequence of the
-  # entry if any.
-  def DBGET.naseq(arg)
-    dbget("bget", "-f -n n #{arg}")
-  end
-
-  # aaseq("db entry") method retrieves the amino acid sequence of the
-  # entry if any.
-  def DBGET.aaseq(arg)
-    dbget("bget", "-f -n a #{arg}")
-  end
-
-  # binfo("db")	method retrieves the database information
-  def DBGET.binfo(arg)
-    dbget("binfo", arg)
-  end
-
-  # blink("db entry") method retrieves the link information
-  def DBGET.blink(arg)
-    dbget("blink", arg)
-  end
-
-  # bman ("db entry") method shows the manual page
-  def DBGET.bman(arg)
-    dbget("bman", arg)
-  end
-
-  # bref("db entry") method retrieves the references and authors
-  def DBGET.bref(arg)
-    dbget("bref", arg)
-  end
-
-  # btab ("db entry") method retrives (and generates) the database alias table
-  def DBGET.btab(arg)
-    dbget("btab", arg)
-  end
-
-  # btit("db entry ..")	method retrieves the entry definition
-  def DBGET.btit(arg)
-    dbget("btit", arg)
-  end
-
-end
-
-end # module Bio
-
-
-if __FILE__ == $0
-  puts "### DBGET version"
-  p Bio::DBGET.version
-  puts "### DBGET.dbget('bfind', 'sce tyrosin kinase')"
-  puts Bio::DBGET.dbget('bfind', 'sce tyrosin kinase')
-  puts "### DBGET.bfind('sce tyrosin kinase')"
-  puts Bio::DBGET.bfind('sce tyrosin kinase')
-  puts "### DBGET.bget('sce:YDL028C')"
-  puts Bio::DBGET.bget('sce:YDL028C')
-  puts "### DBGET.binfo('dbget')"
-  puts Bio::DBGET.binfo('dbget')
-end
-
-
diff --git a/lib/bio/io/ddbjrest.rb b/lib/bio/io/ddbjrest.rb
deleted file mode 100644
index b413d64..0000000
--- a/lib/bio/io/ddbjrest.rb
+++ /dev/null
@@ -1,344 +0,0 @@
-#
-# = bio/io/ddbjrest.rb - DDBJ Web API for Biology (WABI) access class via REST
-#
-# Copyright::	Copyright (C) 2011
-#		Naohisa Goto <ng at bioruby.org>
-# License::	The Ruby License
-#
-# == Description
-# 
-# This file contains Bio::DDBJ::REST, DDBJ Web API for Biology (WABI) access
-# classes via REST (Representational State Transfer) protocol.
-#
-# == References
-#
-# * http://xml.nig.ac.jp/
-#
-
-require 'bio/command'
-require 'bio/db/genbank/ddbj'
-
-module Bio
-class DDBJ
-
-  # == Description
-  #
-  # The module Bio::DDBJ::REST is the namespace for the DDBJ Web API for
-  # Biology (WABI) via REST protocol. Under the Bio::DDBJ::REST,
-  # following classes are available.
-  #
-  # * Bio::DDBJ::REST::DDBJ
-  # * Bio::DDBJ::REST::Blast
-  # * Bio::DDBJ::REST::ClustalW
-  # * Bio::DDBJ::REST::Mafft
-  # * Bio::DDBJ::REST::RequestManager
-  #
-  # Following classes are NOT available, but will be written in the future.
-  #
-  # * Bio::DDBJ::REST::GetEntry
-  # * Bio::DDBJ::REST::ARSA
-  # * Bio::DDBJ::REST::VecScreen
-  # * Bio::DDBJ::REST::PhylogeneticTree
-  # * Bio::DDBJ::REST::Gib
-  # * Bio::DDBJ::REST::Gtop
-  # * Bio::DDBJ::REST::GTPS
-  # * Bio::DDBJ::REST::GIBV
-  # * Bio::DDBJ::REST::GIBIS
-  # * Bio::DDBJ::REST::SPS
-  # * Bio::DDBJ::REST::TxSearch
-  # * Bio::DDBJ::REST::Ensembl
-  # * Bio::DDBJ::REST::NCBIGenomeAnnotation
-  #
-  # Read the document of each class for details.
-  #
-  # In addition, there is a private class Bio::DDBJ::REST::WABItemplate,
-  # basic class for the above classes. Normal users should not use the
-  # WABItemplate class directly.
-  #
-  module REST
-
-    # Bio::DDBJ::REST::WABItemplate is a private class to provide common
-    # methods to access DDBJ Web API for Biology (WABI) services by using
-    # REST protocol.
-    #
-    # Normal users should not use the class directly.
-    #
-    class WABItemplate
-
-      # hostname for the WABI service
-      WABI_HOST = 'xml.nig.ac.jp'
-
-      # path for the WABI service
-      WABI_PATH = '/rest/Invoke'
-
-      private
-
-      # Creates a new object.
-      def initialize
-        @http = Bio::Command.new_http(WABI_HOST)
-        @service = self.class.to_s.split(/\:\:/)[-1]
-      end
-
-      # (private) query to the service by using POST method
-      def _wabi_post(method_name, param)
-        parameters = {
-          'service' => @service,
-          'method' => method_name
-        }
-        parameters.update(param)
-        #$stderr.puts parameters.inspect
-        r = Bio::Command.http_post_form(@http, WABI_PATH, parameters)
-        #$stderr.puts r.inspect
-        #$stderr.puts "-"*78
-        #$stderr.puts r.body
-        #$stderr.puts "-"*78
-        r.body
-      end
-
-      def self.define_wabi_method(array,
-                                  ruby_method_name = nil,
-                                  public_method_name = nil)
-        wabi_method_name = array[0]
-        ruby_method_name ||= wabi_method_name
-        public_method_name ||= wabi_method_name
-        arg = array[1..-1]
-        arguments = arg.join(', ')
-        parameters = "{" +
-          arg.collect { |x| "#{x.dump} => #{x}" }.join(", ") + "}"
-        module_eval "def #{ruby_method_name}(#{arguments})
-                       param = #{parameters}
-                       _wabi_post(#{wabi_method_name.dump}, param)
-                     end
-                     def self.#{public_method_name}(#{arguments})
-                       self.new.#{public_method_name}(#{arguments})
-                     end"
-        self
-      end
-      private_class_method :define_wabi_method
-
-      def self.def_wabi(array)
-        define_wabi_method(array)
-      end
-      private_class_method :def_wabi
-
-      def self.def_wabi_custom(array)
-        ruby_method_name = '_' + array[0]
-        define_wabi_method(array, ruby_method_name)
-        module_eval "private :#{ruby_method_name}"
-        self
-      end
-      private_class_method :def_wabi_custom
-
-      def self.def_wabi_async(array)
-        m = array[0]
-        def_wabi_custom(array)
-        module_eval "def #{m}(*arg)
-            ret = _#{m}(*arg)
-            if /Your +requestId +is\s*\:\s*(.+)\s*/i =~ ret.to_s then
-              return $1
-            else
-              raise \"unknown return value: \#\{ret.inspect\}\"
-            end
-          end"
-        self
-      end
-      private_class_method :def_wabi_async
-    end #class WABItemplate
-
-    # === Description
-    #
-    # DDBJ (DNA DataBank of Japan) entry retrieval functions.
-    #
-    # * http://xml.nig.ac.jp/wabi/Method?serviceName=DDBJ&mode=methodList&lang=en
-    #
-    # === Examples
-    #
-    # see http://xml.nig.ac.jp/wabi/Method?serviceName=DDBJ&mode=methodList&lang=en
-    #
-    class DDBJ < WABItemplate
-
-      # Number and ratio of each base such as A,T,G,C.
-      #
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=DDBJ&methodName=countBasePair&mode=methodDetail
-      # ---
-      # *Arguments*:
-      # * (required) _accession_: (String) accession
-      # *Returns*:: (String) tab-deliminated text
-      def countBasePair(accession); end if false #dummy
-      def_wabi %w( countBasePair accession )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=DDBJ&methodName=get&mode=methodDetail
-      def get(accessionList, paramList); end if false #dummy
-      def_wabi %w( get accessionList paramList )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=DDBJ&methodName=getAllFeatures&mode=methodDetail
-      def getAllFeatures(accession); end if false #dummy
-      def_wabi %w( getAllFeatures accession )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=DDBJ&methodName=getFFEntry&mode=methodDetail
-      def getFFEntry(accession); end if false #dummy
-      def_wabi %w( getFFEntry accession )
-
-      # http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=DDBJ&methodName=getRelatedFeatures&mode=methodDetail
-      def getRelatedFeatures(accession, start, stop); end if false #dummy
-      def_wabi %w( getRelatedFeatures accession start stop )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=DDBJ&methodName=getRelatedFeaturesSeq&mode=methodDetail
-      def getRelatedFeaturesSeq(accession, start, stop); end if false #dummy
-      def_wabi %w( getRelatedFeaturesSeq accession start stop )
-    end #class DDBJ
-
-    # === Description
-    #
-    # DDBJ (DNA DataBank of Japan) BLAST web service.
-    # See below for details and examples.
-    #
-    # Users normally would want to use searchParamAsync or
-    # searchParallelAsync with RequestManager.
-    #
-    # * http://xml.nig.ac.jp/wabi/Method?serviceName=Blast&mode=methodList&lang=en
-    class Blast < WABItemplate
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Blast&methodName=extractPosition&mode=methodDetail
-      def extractPosition(result); end if false #dummy
-      def_wabi %w( extractPosition result )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Blast&methodName=getSupportDatabaseList&mode=methodDetail
-      def getSupportDatabaseList(); end if false #dummy
-      def_wabi %w( getSupportDatabaseList )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Blast&methodName=searchParallel&mode=methodDetail
-      def searchParallel(program, database, query, param); end if false #dummy
-      def_wabi %w( searchParallel program database query param )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Blast&methodName=searchParallelAsync&mode=methodDetail
-      def searchParallelAsync(program, database,
-                              query, param); end if false #dummy
-      def_wabi_async %w( searchParallelAsync program database query param )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Blast&methodName=searchParam&mode=methodDetail
-      def searchParam(program, database, query, param); end if false #dummy
-      def_wabi %w( searchParam program database query param )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Blast&methodName=searchParamAsync&mode=methodDetail
-      def searchParamAsync(program, database,
-                           query, param); end if false #dummy
-      def_wabi_async %w( searchParamAsync program database query param )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Blast&methodName=searchSimple&mode=methodDetail
-      def searchSimple(program, database, query); end if false #dummy
-      def_wabi %w( searchSimple program database query )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Blast&methodName=searchSimpleAsync&mode=methodDetail
-      def searchSimpleAsync(program, database, query); end if false #dummy
-      def_wabi_async %w( searchSimpleAsync program database query )
-
-    end #class Blast
-
-    # === Description
-    #
-    # DDBJ (DNA DataBank of Japan) web service of ClustalW multiple sequence
-    # alignment software.
-    # See below for details and examples.
-    #
-    # * http://xml.nig.ac.jp/wabi/Method?serviceName=ClustalW&mode=methodList&lang=en
-    class ClustalW < WABItemplate
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=ClustalW&methodName=analyzeParam&mode=methodDetail
-      def analyzeParam(query, param); end if false #dummy
-      def_wabi %w( analyzeParam query param )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=ClustalW&methodName=analyzeParamAsync&mode=methodDetail
-      def analyzeParamAsync(query, param); end if false #dummy
-      def_wabi_async %w( analyzeParamAsync query param )
-
-      # http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=ClustalW&methodName=analyzeSimple&mode=methodDetail
-      def analyzeSimple(query); end if false #dummy
-      def_wabi %w( analyzeSimple query )
-
-      # http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=ClustalW&methodName=analyzeSimpleAsync&mode=methodDetail
-      def analyzeSimpleAsync(query); end if false #dummy
-      def_wabi_async %w( analyzeSimpleAsync query )
-    end #lcass ClustalW
-
-    # === Description
-    #
-    # DDBJ (DNA DataBank of Japan) web service of MAFFT multiple sequence
-    # alignment software.
-    # See below for details and examples.
-    #
-    # * http://xml.nig.ac.jp/wabi/Method?serviceName=Mafft&mode=methodList&lang=en
-    class Mafft < WABItemplate
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Mafft&methodName=analyzeParam&mode=methodDetail
-      def analyzeParam(query, param); end if false #dummy
-      def_wabi %w( analyzeParam query param )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Mafft&methodName=analyzeParamAsync&mode=methodDetail
-      def analyzeParamAsync(query, param); end if false #dummy
-      def_wabi_async %w( analyzeParamAsync query param )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Mafft&methodName=analyzeSimple&mode=methodDetail
-      def analyzeSimple(query); end if false #dummy
-      def_wabi %w( analyzeSimple query )
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=Mafft&methodName=analyzeSimpleAsync&mode=methodDetail
-      def analyzeSimpleAsync(query); end if false #dummy
-      def_wabi_async %w( analyzeSimpleAsync query )
-    end #lcass Mafft
-
-
-    # === Description
-    #
-    # DDBJ (DNA DataBank of Japan) special web service to get result of
-    # asynchronous web service.
-    # See below for details and examples.
-    #
-    # * http://xml.nig.ac.jp/wabi/Method?serviceName=RequestManager&mode=methodList&lang=en
-    class RequestManager < WABItemplate
-
-      # see http://xml.nig.ac.jp/wabi/Method?&lang=en&serviceName=RequestManager&methodName=getAsyncResult&mode=methodDetail
-      def getAsyncResult(requestId); end if false #dummy
-      def_wabi %w( getAsyncResult requestId )
-
-      # Waits until the query is finished and the result is returnd,
-      # with calling getAsyncResult.
-      # 
-      # This is BioRuby original method.
-      # ---
-      # *Arguments*:
-      # * (required) _requestID_: (String) requestId
-      # *Returns*:: (String) result
-      def wait_getAsyncResult(requestId)
-        sleeptime = 2
-        while true
-          result = getAsyncResult(requestId)
-          case result.to_s
-          when /The search and analysis service by WWW is very busy now/
-            raise result.to_s.strip + '(Alternatively, wrong options may be given.)'
-          when /\AYour job has not (?:been )?completed yet/
-            sleeptime = 2 + rand(4)
-          when /\AERROR:/
-            raise result.to_s.strip
-          else
-            return result
-          end #case
-          if $VERBOSE then
-            $stderr.puts "DDBJ REST: requestId: #{requestId} -- waitng #{sleeptime} sec."
-          end
-          sleep(sleeptime)
-        end
-        # will never be reached here
-        raise "Bug?"
-      end
-
-      # the same as Bio::DDBJ::REST::RequestManager#wait_getAsyncResult
-      def self.wait_getAsyncResult(requestId)
-        self.new.wait_getAsyncResult(requestId)
-      end
-
-    end #class RequestManager
-
-  end #module REST
-end #class DDBJ
-end #module Bio
-
-
diff --git a/lib/bio/io/ddbjxml.rb b/lib/bio/io/ddbjxml.rb
deleted file mode 100644
index c8d16c2..0000000
--- a/lib/bio/io/ddbjxml.rb
+++ /dev/null
@@ -1,458 +0,0 @@
-#
-# = bio/io/ddbjxml.rb - DDBJ SOAP server access class
-#
-# Copyright::	Copyright (C) 2003, 2004
-#		Toshiaki Katayama <k at bioruby.org>
-# License::	The Ruby License
-#
-# $Id:$
-#
-
-require 'bio/io/soapwsdl'
-require 'bio/db/genbank/ddbj'
-
-
-module Bio
-class DDBJ
-
-
-# = Bio::DDBJ::XML
-#
-# Accessing the DDBJ web services.
-#
-# * http://xml.nig.ac.jp/
-# * http://xml.nig.ac.jp/wsdl/index.jsp
-#
-class XML < Bio::SOAPWSDL
-
-  BASE_URI = "http://xml.nig.ac.jp/wsdl/"
-
-  # set default to GetEntry
-  SERVER_URI = BASE_URI + "GetEntry.wsdl"
-
-  def initialize(wsdl = nil)
-    super(wsdl || self.class::SERVER_URI)
-  end
-
-  # === Description
-  #
-  # DDBJ XML BLAST Database Search 
-  #
-  # * http://xml.nig.ac.jp/doc/Blast.txt
-  #
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::Blast.new
-  #   program = 'blastp'
-  #   database = 'SWISS'
-  #   query = "MSSRIARALALVVTLLHLTRLALSTCPAACHCPLEAPKCAPGVGLVRDGCGCCKVCAKQL"
-  #   
-  #   report = serv.searchSimple(program, database, query)
-  #   Bio::Blast::Default::Report.new(report).each_hit do |hit|
-  #     hit.hsps.find_all {|x| x.evalue < 0.1 }.each do |hsp|
-  #       p [hsps.evalue, hsps.identity, hsps.definition]
-  #     end
-  #   end
-  #  
-  #   program = 'tblastn'
-  #   database = 'ddbjvrl'
-  #   param = '-m 8 -e 0.001'
-  #   puts serv.searchParam(program, database, query, param)
-  # 
-  # === WSDL Methods
-  # 
-  # * searchSimple(program, database, query)
-  #
-  # Returns a blast report in the default format.
-  #
-  # * searchParam(program, database, query, param)
-  #
-  # Blasts with param and returns a blast report.
-  #
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/Blast.txt
-  #
-  class Blast < XML
-    SERVER_URI = BASE_URI + "Blast.wsdl"
-  end
-
-
-  # === ClustalW
-  # 
-  # Multiple seaquece alignment using ClustalW.
-  #
-  # * http://xml.nig.ac.jp/doc/ClustalW.txt
-  #
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::ClustalW.new
-  #
-  #   query = <<END
-  #   > RABSTOUT   rabbit Guinness receptor
-  #   LKMHLMGHLKMGLKMGLKGMHLMHLKHMHLMTYTYTTYRRWPLWMWLPDFGHAS
-  #   ADSCVCAHGFAVCACFAHFDVCFGAVCFHAVCFAHVCFAAAVCFAVCAC
-  #   > MUSNOSE   mouse nose drying factor
-  #   mhkmmhkgmkhmhgmhmhglhmkmhlkmgkhmgkmkytytytryrwtqtqwtwyt
-  #   fdgfdsgafdagfdgfsagdfavdfdvgavfsvfgvdfsvdgvagvfdv
-  #   > HSHEAVEN    human Guinness receptor repeat
-  #   mhkmmhkgmkhmhgmhmhg   lhmkmhlkmgkhmgkmk  ytytytryrwtqtqwtwyt
-  #   fdgfdsgafdagfdgfsag   dfavdfdvgavfsvfgv  dfsvdgvagvfdv
-  #   mhkmmhkgmkhmhgmhmhg   lhmkmhlkmgkhmgkmk  ytytytryrwtqtqwtwyt
-  #   fdgfdsgafdagfdgfsag   dfavdfdvgavfsvfgv  dfsvdgvagvfdv
-  #   END
-  #
-  #   puts serv.analyzeSimple(query)
-  #   puts serv.analyzeParam(query, '-align -matrix=blosum')
-  #
-  # === WSDL Methods
-  #
-  # * analyzeSimple(query)
-  # * analyzeParam(query, param)
-  #
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/ClustalW.txt
-  #
-  class ClustalW < XML
-    SERVER_URI = BASE_URI + "ClustalW.wsdl"
-  end
-
-
-  # == DDBJ
-  #
-  # Retrieves a sequence entry from the DDBJ DNA Data Bank Japan.
-  #
-  # * http://xml.nig.ac.jp/doc/DDBJ.txt
-  #
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::DDBJ.new
-  #   puts serv.getFFEntry('AB000050')
-  #   puts serv.getXMLEntry('AB000050')
-  #   puts serv.getFeatureInfo('AB000050', 'cds')
-  #   puts serv.getAllFeatures('AB000050')
-  #   puts serv.getRelatedFeatures('AL121903', '59000', '64000')
-  #   puts serv.getRelatedFeaturesSeq('AL121903', '59000', '64000')
-  #
-  # === WSDL Methods 
-  #
-  # * getFFEntry(accession)
-  # * getXMLEntry(accession)
-  # * getFeatureInfo(accession, feature)
-  # * getAllFeatures(accession)
-  # * getRelatedFeatures(accession, start, stop)
-  # * getRelatedFeaturesSeq(accession, start, stop)
-  #
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/DDBJ.txt
-  #
-  class DDBJ < XML
-    SERVER_URI = BASE_URI + "DDBJ.wsdl"
-  end
-
-
-  # == Fasta
-  # 
-  # Searching database using the Fasta package.
-  #
-  # * http://xml.nig.ac.jp/doc/Fasta.txt
-  # 
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::Fasta.new
-  #   query = ">Test\nMSDGAVQPDG GQPAVRNERA TGSGNGSGGG GGGGSGGVGI"
-  #    
-  #   puts serv.searchSimple('fasta34', 'PDB', query)
-  #   query = ">Test\nAGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC"
-  #   puts serv.searchParam('fastx34_t', 'PDB', query, '-n')
-  #
-  # === WSDL Methods
-  #
-  # * searchSimple(program, database, query)
-  # * searchParam(program, database, query, param)
-  #
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/Fasta.txt
-  #
-  class Fasta < XML
-    SERVER_URI = BASE_URI + "Fasta.wsdl"
-  end
-
-
-  # == GetEntry
-  #
-  # Retrieves database entries.
-  #
-  # * http://xml.nig.ac.jp/doc/GetEntry.txt
-  #
-  # === Examples
-  #
-  #  serv = Bio::DDBJ::XML::GetEntry.new
-  #  puts serv.getDDBJEntry('AB000050')
-  #  puts serv. getPDBEntry('1AAR')
-  #
-  # === WSDL Methods
-  #
-  # * getEntry(database, var, param1, param2)
-  # * getEntry(database, var)
-  # * getDDBJEntry(accession)
-  # * getDDBJCONEntry(accession)
-  # * getDDBJVerEntry(accession)
-  # * getLocus_DDBJEntry(locus)
-  # * getGene_DDBJEntry(gene)
-  # * getProd_DDBJEntry(products)
-  # * getPID_DDBJEntry(pid)
-  # * getClone_DDBJEntry(clone)
-  # * getXML_DDBJEntry(accession)
-  # * getEMBLEntry(accession)
-  # * getSWISSEntry(accession)
-  # * getPIREntry(accession)
-  # * getPRFEntry(accession)
-  # * getPDBEntry(accession)
-  # * getQVEntry(accession)
-  # * getDADEntry(accession)
-  # * getPID_DADEntry(pid)
-  # * getFASTA_DDBJEntry(accession)
-  # * getFASTA_DDBJCONEntry(accession)
-  # * getFASTA_DDBJVerEntry(accession)
-  # * getFASTA_DDBJSeqEntry(accession, start, end)
-  # * getFASTA_DADEntry(accession)
-  # * getFASTA_PIREntry(accession)
-  # * getFASTA_SWISSEntry(accession)
-  # * getFASTA_PDBEntry(accession)
-  # * getFASTA_PRFEntry(accession)
-  # * getFASTA_CDSEntry(accession)
-  #
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/GetEntry.txt
-  #
-  class GetEntry < XML
-    SERVER_URI = BASE_URI + "GetEntry.wsdl"
-  end
-
-
-  # === Gib
-  # 
-  # Genome Information broker
-  #
-  # * http://xml.nig.ac.jp/doc/Gib.txt
-  #
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::Gib.new
-  #   puts serv.getOrganismList
-  #   puts serv.getChIDList
-  #   puts serv.getOrganismNameFromChid('Sent_CT18:')
-  #   puts serv.getChIDFromOrganismName('Aquifex aeolicus VF5')
-  #   puts serv.getAccession('Ecol_K12_MG1655:')
-  #   puts serv.getPieceNumber('Mgen_G37:')
-  #   puts serv.getDivision('Mgen_G37:')
-  #   puts serv.getType('Mgen_G37:')
-  #   puts serv.getCDS('Aaeo_VF5:ece1')
-  #   puts serv.getFlatFile('Nost_PCC7120:pCC7120zeta')
-  #   puts serv.getFastaFile('Nost_PCC7120:pCC7120zeta', 'cdsaa')
-  #
-  # === WSDL Methods
-  #
-  # * getOrganismList
-  # * getChIDList
-  # * getOrganismNameFromChid(chid)
-  # * getChIDFromOrganismName(orgName)
-  # * getAccession(chid)
-  # * getPieceNumber(chid)
-  # * getDivision(chid)
-  # * getType(chid)
-  # * getFlatFile(chid)
-  # * getFastaFile(chid, type)
-  # * getCDS(chid)
-  #
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/Gib.txt
-  #
-  class Gib < XML
-    SERVER_URI = BASE_URI + "Gib.wsdl"
-  end
-
-  
-  # === Gtop
-  #
-  # GTOP: Gene to protein.
-  #
-  # * http://xml.nig.ac.jp/doc/Gtop.txt
-  #
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::Gtop.new
-  #   puts serv.getOrganismList
-  #   puts serv.getMasterInfo('thrA', 'ecol0')
-  #
-  # === WSDL Methods
-  #
-  # * getOrganismList
-  # * getMasterInfo(orfID, organism)
-  #
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/Gtop.txt
-  #
-  class Gtop < XML
-    SERVER_URI = BASE_URI + "Gtop.wsdl"
-  end
-
-
-  # === PML
-  #
-  # Variation database
-  #
-  # * http://xml.nig.ac.jp/doc/PML.txt
-  # 
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::PML.new
-  #   puts serv.getVariation('1')
-  #
-  # === WSDL Methods
-  #
-  # * searchVariation(field, query, order)
-  # * searchVariationSimple(field, query)
-  # * searchFrequency(field, query, order)
-  # * searchFrequencySimple(field, query)
-  # * getVariation(variation_id)
-  # * getFrequency(variation_id, population_id)
-  #
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/PML.txt
-  #
-  class PML < XML
-    SERVER_URI = BASE_URI + "PML.wsdl"
-  end
-
-  # === RequestManager
-  #
-  # Sequence Retrieving System
-  # 
-  # * http://xml.nig.ac.jp/doc/RequestManager.txt
-  # 
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::RequestManager.new
-  #   puts serv.getAsyncResult('20070420102828140')
-  #
-  # === WSDL Methods
-  #
-  # * getAsyncResult( requestId )
-  # * getAsyncResultMime( requestId )
-  #
-  # === Examples
-  #
-  # * http://xml.nig.ac.jp/doc/RequestManager.txt
-  #
-  class RequestManager < XML
-    SERVER_URI = BASE_URI + "RequestManager.wsdl"
-
-    # RequestManager using DDBJ REST interface
-    class REST
-      require 'bio/command'
-
-      Uri = 'http://xml.nig.ac.jp/rest/Invoke'
-      Service = 'RequestManager'
-
-      def getAsyncResult(requestId)
-        params = {
-          'service'   => Service,
-          'method'    => 'getAsyncResult',
-          'requestId' => requestId.to_s
-        }
-        r = Bio::Command.post_form(Uri, params)
-        r.body
-      end
-    end #class REST
-
-    unless defined? new_orig then
-      class << RequestManager
-        alias new_orig new
-        private :new_orig
-      end
-    end
-
-    # creates a new driver
-    def self.new(wsdl = nil)
-      begin
-        new_orig(wsdl)
-      rescue RuntimeError
-        REST.new
-      end
-    end
-  end #class RequestManager
-
-  # === SRS
-  #
-  # Sequence Retrieving System
-  # 
-  # * http://xml.nig.ac.jp/doc/SRS.txt
-  # 
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::SRS.new
-  #   puts serv.searchSimple('[pathway-des:sugar]')
-  #   puts serv.searchParam('[swissprot-des:cohesin]', '-f seq -sf fasta')
-  #
-  # === WSDL Methods
-  #
-  # * searchSimple(query)
-  # * searchParam(query, param)
-  #
-  # === Examples
-  #
-  # * http://xml.nig.ac.jp/doc/SRS.txt
-  #
-  class SRS < XML
-    SERVER_URI = BASE_URI + "SRS.wsdl"
-  end
-  
-
-  # === TxSearch
-  #
-  # Searching taxonomy information.
-  # 
-  # * http://xml.nig.ac.jp/doc/TxSearch.txt
-  #
-  # === Examples
-  #
-  #   serv = Bio::DDBJ::XML::TxSearch.new
-  #   puts serv.searchSimple('*coli')
-  #   puts serv.searchSimple('*tardigrada*')
-  #   puts serv.getTxId('Escherichia coli')
-  #   puts serv.getTxName('562')
-  #
-  #   query = ["Campylobacter coli", "Escherichia coli"].join("\n")
-  #   rank = ["family", "genus"].join("\n")
-  #   puts serv.searchLineage(query, rank, 'Bacteria')
-  #
-  # === WSDL Methdos
-  #
-  # * searchSimple(tx_Name)
-  # * searchParam(tx_Name, tx_Clas, tx_Rank, tx_Rmax, tx_Dcls)
-  # * getTxId(tx_Name)
-  # * getTxName(tx_Id)
-  # * searchLineage(query, ranks, superkingdom)
-  # 
-  # === References
-  #
-  # * http://xml.nig.ac.jp/doc/TxSearch.txt
-  #
-  class TxSearch < XML
-    SERVER_URI = BASE_URI + "TxSearch.wsdl"
-  end
-
-end # XML
-
-end # DDBJ
-end # Bio
-
diff --git a/lib/bio/io/ebisoap.rb b/lib/bio/io/ebisoap.rb
deleted file mode 100644
index fd89bf5..0000000
--- a/lib/bio/io/ebisoap.rb
+++ /dev/null
@@ -1,158 +0,0 @@
-#
-# = bio/io/emblsoap.rb - EBI SOAP server access class
-#
-# Copyright::  Copyright (C) 2006
-#              Toshiaki Katayama <k at bioruby.org>
-# License::    The Ruby License
-#
-# $Id: ebisoap.rb,v 1.3 2007/04/05 23:35:41 trevor Exp $
-#
-
-require 'bio/io/soapwsdl'
-
-module Bio
-class EBI
-
-class SOAP < Bio::SOAPWSDL
-
-  BASE_URI = "http://www.ebi.ac.uk/Tools/webservices/wsdl/"
-
-  # set default to Dbfetch
-  SERVER_URI = BASE_URI + "WSDbfetch.wsdl"
-
-  def initialize(wsdl = nil)
-    super(wsdl || self.class::SERVER_URI)
-  end
-
-  # * fetchData
-  # * getSupportedDBs
-  # * getSupportedFormats
-  # * getSupportedStyles
-  class Dbfetch < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSDbfetch.wsdl"
-  end
-
-  # * checkStatus
-  # * doIprscan
-  # * getResults
-  # * poll
-  # * polljob
-  # * runInterProScan
-  # * test
-  class InterProScan < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSInterProScan.wsdl"
-  end
-
-  # * checkStatus
-  # * getInfo
-  # * getResults
-  # * getTools
-  # * poll
-  # * run
-  # * test
-  class Emboss < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSEmboss.wsdl"
-  end
-
-  # * checkStatus
-  # * getResults
-  # * poll
-  # * runClustalW
-  # * test
-  class ClustalW < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSClustalW.wsdl"
-  end
-
-  # * checkStatus
-  # * getResults
-  # * poll
-  # * runTCoffee
-  class TCoffee < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSTCoffee.wsdl"
-  end
-
-  # * checkStatus
-  # * getResults
-  # * poll
-  # * runMuscle
-  # * test
-  class Muscle < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSMuscle.wsdl"
-  end
-
-  # * checkStatus
-  # * doFasta
-  # * getResults
-  # * poll
-  # * polljob
-  # * runFasta
-  class Fasta < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSFasta.wsdl"
-  end
-
-  # * checkStatus
-  # * doWUBlast
-  # * getIds
-  # * getResults
-  # * poll
-  # * polljob
-  # * runWUBlast
-  # * test
-  class WUBlast < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSWUBlast.wsdl"
-  end
-
-  # * checkStatus
-  # * getResults
-  # * poll
-  # * runMPsrch
-  # * test
-  class MPsrch < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSMPsrch.wsdl"
-  end
-
-  # * checkStatus
-  # * getResults
-  # * poll
-  # * runScanPS
-  # * test
-  class ScanPS < Bio::EBI::SOAP
-    SERVER_URI = BASE_URI + "WSScanPS.wsdl"
-  end
-
-  class MSD < Bio::EBI::SOAP
-    SERVER_URI = "http://www.ebi.ac.uk/msd-srv/docs/api/msd_soap_service.wsdl"
-  end
-
-  class Ontology < Bio::EBI::SOAP
-    SERVER_URI = "http://www.ebi.ac.uk/ontology-lookup/OntologyQuery.wsdl"
-  end
-
-  class Citation < Bio::EBI::SOAP
-    SERVER_URI = "http://www.ebi.ac.uk/citations/webservices/wsdl"
-  end
-
-end # SOAP
-
-end # EBI
-end # Bio
-
-
-
-if __FILE__ == $0
-  serv = Bio::EBI::SOAP::Dbfetch.new
-  p serv.getSupportedDBs
-
-  require 'base64'
-
-  serv = Bio::EBI::SOAP::Emboss.new
-  hash = {"tool" => "water",
-          "asequence" => "uniprot:alk1_human",
-          "bsequence" => "uniprot:alk1_mouse",
-          "email" => "ebisoap at example.org"}
-  poll = serv.run(hash, [])
-  puts poll
-  base = serv.poll(poll, "tooloutput")
-  puts Base64.decode64(base)  
-end
-
diff --git a/lib/bio/io/ensembl.rb b/lib/bio/io/ensembl.rb
deleted file mode 100644
index a4ec0e4..0000000
--- a/lib/bio/io/ensembl.rb
+++ /dev/null
@@ -1,229 +0,0 @@
-#
-# = bio/io/ensembl.rb - An Ensembl Genome Browser client.
-#
-# Copyright::   Copyright (C) 2006
-#               Mitsuteru C. Nakao <n at bioruby.org>
-# License::     The Ruby License
-#
-# $Id:$
-#
-# == Description
-#
-# Client classes for Ensembl Genome Browser.
-#
-# == Examples
-#
-#  human = Bio::Ensembl.new('Homo_sapiens')
-#  seq = human.exportview(1, 1000, 100000)
-#  gff = human.exportview(1, 1000, 100000, ['gene', 'variation', 'genscan'])
-#
-#  human = Bio::Ensembl.human
-#  seq = human.exportview(1, 1000, 100000)
-#  gff = human.exportview(1, 1000, 100000, ['gene'])
-#
-#  seq = Bio::Ensembl.human.exportview(1, 1000, 100000)
-#  gff = Bio::Ensembl.human.exportview(1, 1000, 100000, ['gene', 'variation', 'genscan'])
-#
-#  
-# == References
-#
-# * Ensembl
-#   http:/www.ensembl.org/
-#
-
-require 'bio/command'
-
-module Bio
-
-# == Description
-#
-# An Ensembl Genome Browser client class.
-#
-# == Examples
-#
-#  human = Bio::Ensembl.new('Homo_sapiens')
-#  seq = human.exportview(1, 1000, 100000)
-#  gff = human.exportview(1, 1000, 100000, ['gene'])
-#
-#  mouse = Bio::Ensembl.new('Mus_musculus')
-#  seq = mouse.exportview(1, 1000, 100000)
-#  gff = mouse.exportview(1, 1000, 100000, ['gene', 'variation', 'genscan'])
-#
-#  rice = Bio::Enesmbl.new('Oryza_sativa', 'http://www.gramene.org')
-#  seq = rice.exportview(1, 1000, 100000)
-#
-# == References
-#
-# * Ensembl
-#   http:/www.ensembl.org/
-#
-# * GRAMENE
-#   http://www.gramene.org/
-#
-class Ensembl
-  
-  ENSEMBL_URL = 'http://www.ensembl.org'
-
-  # Server URL (ex. 'http://www.ensembl.org')
-  attr_reader :server
-
-  # Organism name. (ex. 'Homo_sapiens').
-  attr_reader :organism
-
-  def initialize(organism, server = nil)
-    @server = server || ENSEMBL_URL
-    @organism = organism
-    @uri = [ @server.chomp('/'), @organism ].join('/')
-  end
-
-  def self.human
-    self.new("Homo_sapiens")
-  end
-
-  def self.mouse
-    self.new("Mus_musculus")
-  end
-
-  # Ensembl ExportView Client.
-  #
-  # Retrieve genomic sequence/features from Ensembl ExportView in plain text.
-  # Ensembl ExportView exports genomic data (sequence and features) in 
-  # several file formats including fasta, GFF and tab.
-  #
-  # * ExportViwe (http://www.ensembl.org/Homo_sapiens/exportview).
-  #
-  # == Examples
-  #
-  #   human = Bio::Ensembl.new('Homo_sapiens')
-  #     or
-  #   human = Bio::Ensembl.human
-  #
-  #   # Genomic sequence in Fasta format
-  #   human.exportview(:seq_region_name => 1, 
-  #                    :anchor1 => 1149206, :anchor2 => 1149229)
-  #   human.exportview(1, 1149206, 1149229)
-  #
-  #   # Feature in GFF
-  #   human.exportview(:seq_region_name => 1, 
-  #                    :anchor1 => 1149206, :anchor2 => 1150000, 
-  #                    :options => ['similarity', 'repeat', 
-  #                                 'genscan', 'variation', 'gene'])
-  #   human.exportview(1, 1149206, 1150000, ['variation', 'gene'])
-  #   
-  # Feature in TAB
-  #   human.exportview(:seq_region_name => 1, 
-  #                    :anchor1 => 1149206, :anchor2 => 1150000, 
-  #                    :options => ['similarity', 'repeat', 
-  #                                 'genscan', 'variation', 'gene'],
-  #                    :format => 'tab')
-  #
-  # == Arguments
-  #
-  # Bio::Ensembl#exportview method allow both orderd arguments and 
-  # named arguments. (Note: mandatory arguments are marked by '*').
-  #
-  # === Orderd Arguments
-  #
-  # 1. seq_region_name - Chromosome number (*)
-  # 2. anchor1         - From coordination (*)
-  # 3. anchor2         - To coordination (*)
-  # 4. options         - Features to export (in :format => 'gff' or 'tab')
-  #                      ['similarity', 'repeat', 'genscan', 'variation', 
-  #                       'gene']
-  #
-  # === Named Arguments
-  # 
-  # * :seq_region_name - Chromosome number (*)
-  # * :anchor1         - From coordination (*)
-  # * :anchor2         - To coordination (*)
-  # * :type1           - From coordination type ['bp', ]
-  # * :type2           - To coordination type ['bp', ]
-  # * :upstream        - Bp upstream
-  # * :downstream      - Bp downstream
-  # * :format          - File format ['fasta', 'gff', 'tab']
-  # * :options         - Features to export (for :format => 'gff' or 'tab')
-  #                      ['similarity', 'repeat', 'genscan', 'variation', 
-  #                       'gene']
-  # 
-  def exportview(*args)
-    defaults = {
-      :type1 => 'bp', 
-      :type2 => 'bp', 
-      :downstream => '', 
-      :upstream => '', 
-      :format => 'fasta',
-      :options => [],
-      :action => 'export', 
-      :_format => 'Text', 
-      :output => 'txt', 
-      :submit => 'Continue >>'
-    }
-
-    if args.first.class == Hash
-      options = args.first
-      if options[:options] and options[:format] != 'fasta' and options[:format] != 'tab' 
-        options.update({:format => 'gff'}) 
-      end
-    else
-      options = {
-        :seq_region_name => args[0], 
-        :anchor1 => args[1], 
-        :anchor2 => args[2],
-      }
-
-      case args[3]
-      when Array
-        options.update({:format => 'gff', :options => args[3]}) 
-      when Hash
-        options.update(args[3])
-      end
-
-      if args[4].class == Hash
-        options.update(args[4])
-      end
-    end
-
-    params = defaults.update(options)
-
-    result = Bio::Command.post_form("#{@uri}/exportview", params)
-
-    return result.body
-  end
-
-end # class Ensembl
-
-end # module Bio
-
-
-
-# Codes for backward-compatibility.
-#
-class Bio::Ensembl
-  EBIServerURI = ENSEMBL_URL
-
-  def self.server_uri(uri = nil)
-    if uri
-      @uri = uri
-    else
-      @uri || EBIServerURI
-    end
-  end
-    
-  class Base
-    def self.exportview(*args)
-      Bio::Ensembl.new(Organism).exportview(*args)
-    end
-  end
-  
-  class Human < Base
-    Organism = Bio::Ensembl.human.organism
-  end
-  
-  class Mouse < Base
-    Organism = Bio::Ensembl.mouse.organism
-  end
-end # class Bio::Ensembl
-
-
-
-
diff --git a/lib/bio/io/fastacmd.rb b/lib/bio/io/fastacmd.rb
index a98cf5a..df10f36 100644
--- a/lib/bio/io/fastacmd.rb
+++ b/lib/bio/io/fastacmd.rb
@@ -8,7 +8,6 @@
 #              Jan Aerts <jan.aerts at bbsrc.ac.uk>
 # License::    The Ruby License
 #
-# $Id: fastacmd.rb,v 1.16 2007/04/05 23:35:41 trevor Exp $
 #
 
 require 'bio/db/fasta'
@@ -146,18 +145,3 @@ end # class Fastacmd
 end # class Blast
 end # module Bio
 
-if $0 == __FILE__
-  fastacmd = Bio::Blast::Fastacmd.new("/path_to_my_db/db_name")
-  seq = fastacmd.get_by_id('id_of_entry1')
-  puts seq.class
-  puts seq
-  
-  seqs = fastacmd.fetch(['id_of_entry1','id_of_entry2'])
-  seqs.each do |seq|
-    puts seq
-  end
-
-  fastacmd.each_entry do |fasta|
-    puts fasta.seq.size.to_s + "\t" + fasta.definition
-  end
-end
diff --git a/lib/bio/io/fetch.rb b/lib/bio/io/fetch.rb
index 90cf362..9a3da21 100644
--- a/lib/bio/io/fetch.rb
+++ b/lib/bio/io/fetch.rb
@@ -5,24 +5,31 @@
 #               Copyright (C) 2006 Jan Aerts <jan.aerts at bbsrc.ac.uk>
 # License::     The Ruby License
 #
-#  $Id:$
-#
 # == DESCRIPTION
 #
-# Using BioRuby BioFetch server
-#
-#   br_server = Bio::Fetch.new()
-#   puts br_server.databases
-#   puts br_server.formats('embl')
-#   puts br_server.maxids
-#
-# Using EBI BioFetch server
+# Using EBI Dbfetch server
 #
-#   ebi_server = Bio::Fetch.new('http://www.ebi.ac.uk/cgi-bin/dbfetch')
+#   ebi_server = Bio::Fetch::EBI.new
+#   puts ebi_server.fetch('embl', 'J00231')
 #   puts ebi_server.fetch('embl', 'J00231', 'raw')
 #   puts ebi_server.fetch('embl', 'J00231', 'html')
-#   puts Bio::Fetch.query('genbank', 'J00231')
-#   puts Bio::Fetch.query('genbank', 'J00231', 'raw', 'fasta')
+#
+# Getting metadata from EBI Dbfetch server
+#
+#   puts ebi_server.databases
+#   puts ebi_server.formats('embl')
+#   puts ebi_server.maxids
+#
+# Using EBI Dbfetch server without creating a Bio::Fetch::EBI instance
+#
+#   puts Bio::Fetch::EBI.query('ena_sequence', 'J00231')
+#   puts Bio::Fetch::EBI.query('ena_sequence', 'J00231', 'raw', 'fasta')
+#
+# Using a BioFetch server with specifying URL
+#
+#   server = Bio::Fetch.new('http://www.ebi.ac.uk/Tools/dbfetch/dbfetch')
+#   puts server.fetch('ena_sequence', 'J00231')
+#   puts server.fetch('ena_sequence', 'J00231', 'raw', 'fasta')
 # 
 
 require 'uri'
@@ -37,26 +44,39 @@ module Bio
   # nucleic or amino acid sequence.
   #
   # Possible dbfetch servers include:
-  # * http://bioruby.org/cgi-bin/biofetch.rb (default)
-  # * http://www.ebi.ac.uk/cgi-bin/dbfetch
+  # * http://www.ebi.ac.uk/Tools/dbfetch/dbfetch
+  #
+  # Note that old URL http://www.ebi.ac.uk/cgi-bin/dbfetch still alives
+  # probably because of compatibility, but using the new URL is recommended.
+  #
+  # Historically, there were other dbfetch servers including:
+  # * http://bioruby.org/cgi-bin/biofetch.rb (default before BioRuby 1.4)
+  # But they are unavailable now.
+  #
   #
   # If you're behind a proxy server, be sure to set your HTTP_PROXY
   # environment variable accordingly.
   #
   # = USAGE
   #  require 'bio'
-  #
+  #  
   #  # Retrieve the sequence of accession number M33388 from the EMBL
   #  # database.
-  #  server = Bio::Fetch.new()  #uses default server
+  #  server = Bio::Fetch::EBI.new  #uses EBI server
+  #  puts server.fetch('ena_sequence','M33388')
+  #
+  #  # database name "embl" can also be used though it is not officially listed
   #  puts server.fetch('embl','M33388')
-  #  
-  #  # Do the same thing without creating a Bio::Fetch object. This method always
-  #  # uses the default dbfetch server: http://bioruby.org/cgi-bin/biofetch.rb
-  #  puts Bio::Fetch.query('embl','M33388')
   #
-  #  # To know what databases are available on the bioruby dbfetch server:
-  #  server = Bio::Fetch.new()
+  #  # Do the same thing with explicitly giving the URL.
+  #  server = Bio::Fetch.new(Bio::Fetch::EBI::URL)  #uses EBI server
+  #  puts server.fetch('ena_sequence','M33388')
+  #
+  #  # Do the same thing without creating a Bio::Fetch::EBI object.
+  #  puts Bio::Fetch::EBI.query('ena_sequence','M33388')
+  #
+  #  # To know what databases are available on the dbfetch server:
+  #  server = Bio::Fetch::EBI.new
   #  puts server.databases
   #
   #  # Some databases provide their data in different formats (e.g. 'fasta',
@@ -66,15 +86,62 @@ module Bio
   #
   class Fetch
   
+    # Bio::Fetch::EBI is a client of EBI Dbfetch
+    # (http://www.ebi.ac.uk/Tools/dbfetch/dbfetch).
+    #
+    # An instance of this class works the same as:
+    #  obj = Bio::Fetch.new("http://www.ebi.ac.uk/Tools/dbfetch/dbfetch")
+    #  obj.database = "ena_sequence"
+    #
+    # See the documents of Bio::Fetch for more details.
+    class EBI < Fetch
+
+      # EBI Dbfetch server URL
+      URL = "http://www.ebi.ac.uk/Tools/dbfetch/dbfetch".freeze
+
+      # For the usage, see the document of Bio::Fetch.new.
+      def initialize(url = URL)
+        @database = "ena_sequence"
+        super
+      end
+
+      # Shortcut for using EBI Dbfetch server. You can fetch an entry
+      # without creating an instance of Bio::Fetch::EBI. This method uses
+      # EBI Dbfetch server http://www.ebi.ac.uk/Tools/dbfetch/dbfetch .
+      # 
+      # Example:
+      #   puts Bio::Fetch::EBI.query('refseq','NM_123456')
+      #   puts Bio::Fetch::EBI.query('ena_sequence','J00231')
+      #
+      # ---
+      # *Arguments*:
+      # * _database_: name of database to query (see Bio::Fetch#databases to get list of supported databases)
+      # * _id_: single ID or ID list separated by commas or white space
+      # * _style_: [raw|html] (default = 'raw')
+      # * _format_: name of output format (see Bio::Fetch#formats)
+      def self.query(*args)
+        self.new.fetch(*args)
+      end
+    end #class EBI
+
     # Create a new Bio::Fetch server object that can subsequently be queried
-    # using the Bio::Fetch#fetch method
+    # using the Bio::Fetch#fetch method.
+    #
+    # You must specify _url_ of a server.
+    # The preset default server is deprecated.
+    #
+    # If you want to use a server without explicitly specifying the URL,
+    # use Bio::Fetch::EBI.new that uses EBI Dbfetch server.
+    #
     # ---
     # *Arguments*:
-    # * _url_: URL of dbfetch server (default = 'http://bioruby.org/cgi-bin/biofetch.rb')
+    # * _url_: URL of dbfetch server. (no default value)
     # *Returns*:: Bio::Fetch object
-    def initialize(url = 'http://bioruby.org/cgi-bin/biofetch.rb')
+    def initialize(url = nil)
+      unless url then
+        raise ArgumentError, "No server URL is given in Bio::Fetch.new. The default server URL value have been deprecated. You must explicitly specify the url or use Bio::Fetch::EBI for using EBI Dbfetch."
+      end
       @url = url
-      schema, user, @host, @port, reg, @path, = URI.split(@url)
     end
   
     # The default database to query
@@ -90,8 +157,8 @@ module Bio
     end
   
     # Fetch a database entry as specified by database (db), entry id (id),
-    # 'raw' text or 'html' (style), and format.  When using BioRuby's
-    # BioFetch server, value for the format should not be set.
+    # 'raw' text or 'html' (style), and format.
+    #
     # Examples:
     #   server = Bio::Fetch.new('http://www.ebi.ac.uk/cgi-bin/dbfetch')
     #   puts server.fetch('embl','M33388','raw','fasta')
@@ -111,23 +178,6 @@ module Bio
       _get(query)
     end
   
-    # Shortcut for using BioRuby's BioFetch server. You can fetch an entry
-    # without creating an instance of BioFetch server. This method uses the 
-    # default dbfetch server, which is http://bioruby.org/cgi-bin/biofetch.rb
-    # 
-    # Example:
-    #   puts Bio::Fetch.query('refseq','NM_12345')
-    #
-    # ---
-    # *Arguments*:
-    # * _database_: name of database to query (see Bio::Fetch#databases to get list of supported databases)
-    # * _id_: single ID or ID list separated by commas or white space
-    # * _style_: [raw|html] (default = 'raw')
-    # * _format_: name of output format (see Bio::Fetch#formats)
-    def self.query(*args)
-      self.new.fetch(*args)
-    end
-  
     # Using this method, the user can ask a dbfetch server what databases
     # it supports. This would normally be the first step you'd take when
     # you use a dbfetch server for the first time.
@@ -135,9 +185,8 @@ module Bio
     #  server = Bio::Fetch.new()
     #  puts server.databases # returns "aa aax bl cpd dgenes dr ec eg emb ..."
     #
-    # This method only works for the bioruby dbfetch server. For a list
-    # of databases available from the EBI, see the EBI website at 
-    # http://www.ebi.ac.uk/cgi-bin/dbfetch/
+    # This method works for EBI Dbfetch server (and for the bioruby dbfetch
+    # server). Not all servers support this method.
     # ---
     # *Returns*:: array of database names
     def databases
@@ -145,11 +194,13 @@ module Bio
     end
   
     # Lists the formats that are available for a given database. Like the
-    # Bio::Fetch#databases method, this method is only available on 
-    # the bioruby dbfetch server.
+    # Bio::Fetch#databases method, not all servers support this method.
+    # This method is available on the EBI Dbfetch server (and on the bioruby
+    # dbfetch server).
+    #
     # Example:
-    #  server = Bio::Fetch.new()
-    #  puts server.formats('embl') # returns "default fasta"
+    #  server = Bio::Fetch::EBI.new()
+    #  puts server.formats('embl') # returns [ "default", "annot", ... ]
     # ---
     # *Arguments*:
     # * _database_:: name of database you want the supported formats for
@@ -164,8 +215,13 @@ module Bio
   
     # A dbfetch server will only return entries up to a given maximum number.
     # This method retrieves that number from the server. As for the databases
-    # and formats methods, the maxids method only works for the bioruby
-    # dbfetch server.
+    # and formats methods, not all servers support the maxids method.
+    # This method is available on the EBI Dbfetch server (and on the bioruby
+    # dbfetch server).
+    #
+    # Example:
+    #  server = Bio::Fetch::EBI.new
+    #  puts server.maxids # currently returns 200
     # ---
     # *Arguments*: none
     # *Returns*:: number
diff --git a/lib/bio/io/flatfile/buffer.rb b/lib/bio/io/flatfile/buffer.rb
index 3233746..c0ed762 100644
--- a/lib/bio/io/flatfile/buffer.rb
+++ b/lib/bio/io/flatfile/buffer.rb
@@ -5,7 +5,6 @@
 #
 # License:: The Ruby License
 #
-#  $Id:$
 #
 #
 # See documents for Bio::FlatFile::BufferedInputStream and Bio::FlatFile.
@@ -151,8 +150,8 @@ module Bio
               yield self.new(fobj, uri.to_s)
             end
           else
-            fobj = uri.open(*arg)
-            self.new(fobj, uri.to_s)
+            fobj0 = uri.open(*arg)
+            self.new(fobj0, uri.to_s)
           end
         else
           if block_given?
@@ -160,8 +159,8 @@ module Bio
               yield self.new(fobj, uri)
             end
           else
-            fobj = OpenURI.open_uri(uri, *arg)
-            self.new(fobj, uri)
+            fobj0 = OpenURI.open_uri(uri, *arg)
+            self.new(fobj0, uri)
           end
         end
       end
diff --git a/lib/bio/io/higet.rb b/lib/bio/io/higet.rb
deleted file mode 100644
index 672d646..0000000
--- a/lib/bio/io/higet.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-#
-# = bio/io/higet.rb - SOAP interface for HGC HiGet
-#
-# Copyright::  Copyright (C) 2005 Toshiaki Katayama <k at bioruby.org>
-#
-# $Id: higet.rb,v 1.3 2006/09/19 05:46:22 k Exp $
-#
-
-require 'bio/io/soapwsdl'
-
-module Bio
-class HGC
-
-# == Description
-#
-# Interface for the HiGet service provided by Human Genome Center (HGC), Japan.
-# HiGet performs full-text search against various biological databases.
-#
-# == References
-#
-# * http://higet.hgc.jp/
-#
-class HiGet < Bio::SOAPWSDL
-
-  SERVER_URI = "http://higet.hgc.jp/soap/higet.wsdl"
-
-  def initialize(wsdl = nil)
-    super(wsdl || SERVER_URI)
-  end
-
-  def higet_in_fasta(db, entries)
-    self.higet(db, entries, "-d fasta")
-  end
-
-  def higet_in_xml(db, entries)
-    self.higet(db, entries, "-d xml")
-  end
-
-end
-
-end # HGC
-end # Bio
-
-
-if __FILE__ == $0
-
-  begin
-    require 'pp'
-    alias p pp
-  rescue LoadError
-  end
-
-  puts ">>> Bio::HGC::HiGet"
-  serv = Bio::HGC::HiGet.new
-  serv.log = STDERR
-
-  puts "### HiFind"
-  puts serv.hifind("genbank", "human kinase", "-l 10")
-
-  puts "### HiGet"
-  puts serv.higet("genbank", "S40289", "")
-
-  puts "### HiGet (FASTA)"
-  puts serv.higet("genbank", "S40289", "-d fasta")
-
-  puts "### HiGet higet_in_fasta"
-  puts serv.higet_in_fasta("genbank", "S40289")
-
-  puts "### HiGet higet_in_xml"
-  puts serv.higet_in_xml("genbank", "S40289")
-
-end
-
diff --git a/lib/bio/io/hinv.rb b/lib/bio/io/hinv.rb
index 63be501..4a9587b 100644
--- a/lib/bio/io/hinv.rb
+++ b/lib/bio/io/hinv.rb
@@ -4,7 +4,6 @@
 # Copyright::  Copyright (C) 2008 Toshiaki Katayama <k at bioruby.org>
 # License::    The Ruby License
 #
-# $Id:$
 #
 
 require 'bio/command'
@@ -17,11 +16,11 @@ module Bio
   # Accessing the H-invDB web services.
   #
   # * http://www.h-invitational.jp/
-  # * http://www.jbirc.aist.go.jp/hinv/hws/doc/index.html
+  # * http://h-invitational.jp/hinv/hws/doc/index.html
   #
   class Hinv
 
-    BASE_URI = "http://www.jbirc.aist.go.jp/hinv/hws/"
+    BASE_URI = "http://h-invitational.jp/hinv/hws/"
 
     module Common
       def query(options = nil)
diff --git a/lib/bio/io/keggapi.rb b/lib/bio/io/keggapi.rb
deleted file mode 100644
index 23df93d..0000000
--- a/lib/bio/io/keggapi.rb
+++ /dev/null
@@ -1,363 +0,0 @@
-#
-# = bio/io/keggapi.rb - KEGG API access class
-#
-# Copyright::  Copyright (C) 2003, 2004 Toshiaki Katayama <k at bioruby.org>
-# License::    The Ruby License
-#
-# $Id:$
-#
-
-require 'bio/io/soapwsdl'
-require 'uri'
-require 'net/http'
-require 'bio/command'
-
-module Bio
-class KEGG
-
-# == Description
-#
-# KEGG API is a web service to use KEGG system via SOAP/WSDL.
-#
-# == References
-#
-# For more informations on KEGG API, see the following site and read the
-# reference manual.
-#
-# * http://www.genome.jp/kegg/soap/
-# * http://www.genome.jp/kegg/soap/doc/keggapi_manual.html
-#
-# == List of methods
-#
-# As of KEGG API v5.0
-#
-# * list_databases
-# * list_organisms
-# * list_pathways(org)
-# * binfo(string)
-# * bget(string)
-# * bfind(string)
-# * btit(string)
-# * get_linkdb_by_entry(entry_id, db, start, max_results)
-# * get_best_best_neighbors_by_gene(genes_id, start, max_results)
-# * get_best_neighbors_by_gene(genes_id, start, max_results)
-# * get_reverse_best_neighbors_by_gene(genes_id, start, max_results)
-# * get_paralogs_by_gene(genes_id, start, max_results)
-# * get_similarity_between_genes(genes_id1, genes_id2)
-# * get_motifs_by_gene(genes_id, db)
-# * get_genes_by_motifs(motif_id_list, start, max_results)
-# * get_ko_by_gene(genes_id)
-# * get_ko_members(ko_id)
-# * get_oc_members_by_gene(genes_id, start, max_results)
-# * get_pc_members_by_gene(genes_id, start, max_results)
-# * mark_pathway_by_objects(pathway_id, object_id_list)
-# * color_pathway_by_objects(pathway_id, object_id_list, fg_color_list, bg_color_list)
-# * get_genes_by_pathway(pathway_id)
-# * get_enzymes_by_pathway(pathway_id)
-# * get_compounds_by_pathway(pathway_id)
-# * get_reactions_by_pathway(pathway_id)
-# * get_pathways_by_genes(genes_id_list)
-# * get_pathways_by_enzymes(enzyme_id_list)
-# * get_pathways_by_compounds(compound_id_list)
-# * get_pathways_by_reactions(reaction_id_list)
-# * get_linked_pathways(pathway_id)
-# * get_genes_by_enzyme(enzyme_id, org)
-# * get_enzymes_by_gene(genes_id)
-# * get_enzymes_by_compound(compound_id)
-# * get_enzymes_by_reaction(reaction_id)
-# * get_compounds_by_enzyme(enzyme_id)
-# * get_compounds_by_reaction(reaction_id)
-# * get_reactions_by_enzyme(enzyme_id)
-# * get_reactions_by_compound(compound_id)
-# * get_genes_by_organism(org, start, max_results)
-# * get_number_of_genes_by_organism(org)                             
-#
-# == KEGG API methods implemented only in BioRuby
-# 
-# In BioRuby, returned values are added filter method to pick up
-# values in a complex data type as an array.
-# 
-#   #!/usr/bin/env ruby
-# 
-#   require 'bio'
-# 
-#   serv = Bio::KEGG::API.new
-#   results = serv.get_best_neighbors_by_gene("eco:b0002", "bsu")
-# 
-#   # case 0 : without filter
-#   results.each do |hit|
-#     print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-#   end
-# 
-#   # case 1 : select gene names and SW score only
-#   fields = [:genes_id1, :genes_id2, :sw_score]
-#   results.each do |hit|
-#     puts hit.filter(fields).join("\t")
-#   end
-#   
-#   # case 2 : also uses aligned position in each amino acid sequence etc.
-#   fields1 = [:genes_id1, :start_position1, :end_position1, :best_flag_1to2]
-#   fields2 = [:genes_id2, :start_position2, :end_position2, :best_flag_2to1]
-#   results.each do |hit|
-#     print "> score: ", hit.sw_score, ", identity: ", hit.identity, "\n"
-#     print "1:\t", hit.filter(fields1).join("\t"), "\n"
-#     print "2:\t", hit.filter(fields2).join("\t"), "\n"
-#   end
-# 
-# Using filter method will make it easy to change fields to select and
-# keep the script clean.
-# 
-# * Bio::KEGG::API#get_all_neighbors_by_gene(genes_id, org)
-# * Bio::KEGG::API#get_all_best_best_neighbors_by_gene(genes_id)
-# * Bio::KEGG::API#get_all_best_neighbors_by_gene(genes_id)
-# * Bio::KEGG::API#get_all_reverse_best_neighbors_by_gene(genes_id)
-# * Bio::KEGG::API#get_all_paralogs_by_gene(genes_id)
-# * Bio::KEGG::API#get_all_genes_by_motifs(motif_id_list)
-# * Bio::KEGG::API#get_all_oc_members_by_gene(genes_id)
-# * Bio::KEGG::API#get_all_pc_members_by_gene(genes_id)
-# * Bio::KEGG::API#get_all_genes_by_organism(org)
-# 
-# These methods are wrapper for the methods without _all_ in its name
-# and internally iterate to retrive all the results using start/max_results
-# value pairs described above.  For example,
-# 
-#   #!/usr/bin/env ruby
-#   
-#   require 'soap/wsdlDriver'
-#   
-#   wsdl = "http://soap.genome.jp/KEGG.wsdl"
-#   serv = SOAP::WSDLDriverFactory.new(wsdl).create_driver
-#   serv.generate_explicit_type = true
-#   
-#   start = 1
-#   max_results = 100
-#   
-#   loop do
-#     results = serv.get_best_neighbors_by_gene('eco:b0002', start, max_results)
-#     break unless results	# when no more results returned
-#     results.each do |hit|
-#       print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-#     end
-#     start += max_results
-#   end
-# 
-# can be witten as
-# 
-#   #!/usr/bin/env ruby
-#   
-#   require 'bio'
-#   
-#   serv = Bio::KEGG::API.new
-#   
-#   results = serv.get_all_best_neighbors_by_gene('eco:b0002')
-#   results.each do |hit|
-#     print hit.genes_id1, "\t", hit.genes_id2, "\t", hit.sw_score, "\n"
-#   end
-# 
-# 
-# * Bio::KEGG::API#save_image(url, filename = nil)
-# 
-# Some methods of the KEGG API will return a URL of the generated image.
-# This method save an image specified by the URL.  The filename can be
-# specified by its second argument, otherwise basename of the URL will
-# be used.
-# 
-#   #!/usr/bin/env ruby
-#   
-#   require 'bio'
-#   
-#   serv = Bio::KEGG::API.new("http://soap.genome.jp/v3.0/KEGG.wsdl")
-#   
-#   list = ["eco:b1002", "eco:b2388"]
-#   url = serv.mark_pathway_by_objects("path:eco00010", list)
-#   
-#   # Save with the original filename (eco00010.gif in this case)
-#   serv.save_image(url)
-# 
-#   # or save as "save_image.gif"
-#   serv.save_image(url, "save_image.gif")
-# 
-# * Bio::KEGG::API#get_entries(entry_id_list)
-# * Bio::KEGG::API#get_aaseqs(entry_id_list)
-# * Bio::KEGG::API#get_naseqs(entry_id_list)
-# * Bio::KEGG::API#get_definitions(entry_id_list)
-# 
-# These methods are for the shortcut and backward compatibility
-# (these methods existed in the older version of the KEGG API).
-# 
-class API < Bio::SOAPWSDL
-
-  SERVER_URI = "http://soap.genome.jp/KEGG.wsdl"
-
-  # Connect to the KEGG API's SOAP server.  A WSDL file will be automatically
-  # downloaded and parsed to generate the SOAP client driver.  The default URL
-  # for the WSDL is http://soap.genome.jp/KEGG.wsdl but it can be changed by
-  # the argument or by wsdl= method.
-  def initialize(wsdl = nil)
-    @wsdl = wsdl || SERVER_URI
-    @log = nil
-    @start = 1
-    @max_results = 100
-    create_driver
-  end
-
-  # Returns current value for the 'start' count for the methods having 
-  # start/max_results argument pairs or changes the default value for
-  # the 'start' count.
-  attr_accessor :start
-
-  # Returns current value for the 'max_results' number for the methods having 
-  # start/max_results argument pairs or changes the default value for the
-  # 'max_results' count. If your request timeouts, try smaller value for
-  # the max_results.
-  attr_accessor :max_results
-
-  def method_missing(*arg)
-    begin
-      results = @driver.send(*arg)
-    rescue Timeout::Error
-      retry
-    end
-    results = add_filter(results)
-    return results
-  end
-
-
-# def get_all_neighbors_by_gene(genes_id, org)
-#   get_all(:get_neighbors_by_gene, genes_id, org)
-# end
-
-  def get_all_best_best_neighbors_by_gene(genes_id)
-    get_all(:get_best_best_neighbors_by_gene, genes_id)
-  end
-
-  def get_all_best_neighbors_by_gene(genes_id)
-    get_all(:get_best_neighbors_by_gene, genes_id)
-  end
-
-  def get_all_reverse_best_neighbors_by_gene(genes_id)
-    get_all(:get_reverse_best_neighbors_by_gene, genes_id)
-  end
-
-  def get_all_paralogs_by_gene(genes_id)
-    get_all(:get_paralogs_by_gene, genes_id)
-  end
-
-  def get_all_genes_by_motifs(motif_id_list)
-    get_all(:get_genes_by_motifs, motif_id_list)
-  end
-
-  def get_all_oc_members_by_gene(genes_id)
-    get_all(:get_oc_members_by_gene, genes_id)
-  end
-
-  def get_all_pc_members_by_gene(genes_id)
-    get_all(:get_pc_members_by_gene, genes_id)
-  end
-
-  def get_all_genes_by_organism(org)
-    get_all(:get_genes_by_organism, org)
-  end
-
-  def get_all_linkdb_by_entry(entry_id, db)
-    get_all(:get_linkdb_by_entry, entry_id, db)
-  end
-
-
-  def save_image(url, filename = nil)
-    schema, user, host, port, reg, path, = URI.split(url)
-    filename ||= File.basename(path)
-
-    http = Bio::Command.new_http(host, port)
-    response = http.get(path)
-    File.open(filename, "w+") do |f|
-      f.print response.body
-    end
-    return filename
-  end
-
-
-  def get_entries(ary = [])
-    result = ''
-    step = [@max_results, 50].min
-    0.step(ary.length, step) do |i|
-      str = ary[i, step].join(" ")
-      if entry = @driver.send(:bget, str)
-        result << entry.to_s
-      end
-    end
-    return result
-  end
-
-  def get_aaseqs(ary = [])
-    result = ''
-    step = [@max_results, 50].min
-    0.step(ary.length, step) do |i|
-      str = "-f -n a " + ary[i, step].join(" ")
-      if entry = @driver.send(:bget, str)
-        result << entry.to_s
-      end
-    end
-    return result
-  end
-
-  def get_naseqs(ary = [])
-    result = ''
-    step = [@max_results, 50].min
-    0.step(ary.length, step) do |i|
-      str = "-f -n n " + ary[i, step].join(" ")
-      if entry = @driver.send(:bget, str)
-        result << entry.to_s
-      end
-    end
-    return result
-  end
-
-  def get_definitions(ary = [])
-    result = ''
-    step = [@max_results, 50].min
-    0.step(ary.length, step) do |i|
-      str = ary[i, step].join(" ")
-      if entry = @driver.send(:btit, str)
-        result << entry.to_s
-      end
-    end
-    return result
-  end
-
-
-  private
-
-  def add_filter(results)
-    if results.is_a?(Array)
-      results.each do |result|
-	next if result.is_a?(Fixnum)
-        def result.filter(fields)
-          fields.collect { |field| self.send(field) }
-        end
-      end
-    end
-    return results
-  end
-
-  def get_all(method, *args)
-    args << @start
-    args << @max_results
-
-    ary = []
-    loop do
-      results = @driver.send(method, *args)
-      break unless results
-      break if results.empty?
-      results = add_filter(results)
-      ary << results
-      args[-2] += @max_results  # next start count
-    end
-    return ary.flatten
-  end
-
-end # API
-
-end # KEGG
-end # Bio
-
diff --git a/lib/bio/io/ncbirest.rb b/lib/bio/io/ncbirest.rb
index 35443bd..76a1a8d 100644
--- a/lib/bio/io/ncbirest.rb
+++ b/lib/bio/io/ncbirest.rb
@@ -15,13 +15,21 @@ module Bio
 
 class NCBI
 
-  autoload :SOAP,       'bio/io/ncbisoap'
 
   # (Hash) Default parameters for Entrez (eUtils).
   # They may also be used for other NCBI services.
   ENTREZ_DEFAULT_PARAMETERS = {
-    'tool' => "#{$0} (bioruby/#{Bio::BIORUBY_VERSION_ID})",
-    'email' => nil,
+    # Cited from
+    # http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.Release_Notes
+    #  tool:
+    #  Name of application making the E-utility call.
+    #  Value must be a string with no internal spaces.
+    'tool' => "bioruby",
+    # Cited from
+    # http://www.ncbi.nlm.nih.gov/books/NBK25497/
+    # The value of email should be a complete and valid e-mail address
+    # of the software developer and not that of a third-party end user.
+    'email' => 'staff at bioruby.org',
   }
 
   # Resets Entrez (eUtils) default parameters.
@@ -29,8 +37,8 @@ class NCBI
   # *Returns*:: (Hash) default parameters
   def self.reset_entrez_default_parameters
     h = {
-      'tool' => "#{$0} (bioruby/#{Bio::BIORUBY_VERSION_ID})",
-      'email' => nil,
+      'tool'  => "bioruby",
+      'email' => 'staff at bioruby.org',
     }
     ENTREZ_DEFAULT_PARAMETERS.clear
     ENTREZ_DEFAULT_PARAMETERS.update(h)
@@ -45,6 +53,24 @@ class NCBI
 
   # Sets default email address used for Entrez (eUtils).
   # It may also be used for other NCBI services.
+  #
+  # In http://www.ncbi.nlm.nih.gov/books/NBK25497/ 
+  # NCBI says:
+  # "The value of email should be a complete and valid e-mail address of
+  # the software developer and not that of a third-party end user."
+  #
+  # By default, email address of BioRuby staffs is set.
+  #
+  # From the above NCBI documentation, the tool and email value is used
+  # only for unblocking IP addresses blocked by NCBI due to excess requests.
+  # For the purpose, NCBI says:
+  # "Please be aware that merely providing values for tool and email
+  # in requests is not sufficient to comply with this policy;
+  # these values must be registered with NCBI."
+  #
+  # Please use your own email address and tool name when registering
+  # tool and email values to NCBI.
+  #
   # ---
   # *Arguments*:
   # * (required) _str_: (String) email address
@@ -62,6 +88,17 @@ class NCBI
 
   # Sets default tool name for Entrez (eUtils).
   # It may also be used for other NCBI services.
+  #
+  # In http://www.ncbi.nlm.nih.gov/books/NBK25497/ 
+  # NCBI says:
+  # "The value of tool should be a string with no internal spaces that
+  # uniquely identifies the software producing the request."
+  #
+  # "bioruby" is set by default.
+  # Please use your own tool name when registering to NCBI.
+  #
+  # See the document of default_email= for more information.
+  #
   # ---
   # *Arguments*:
   # * (required) _str_: (String) tool name
@@ -148,7 +185,7 @@ class REST
   def ncbi_check_parameters(opts)
     #return if Time.now < Time.gm(2010,5,31)
     if opts['email'].to_s.empty? then
-      raise 'Set email parameter for the query, or set Bio::NCBI.default_email = "(your email address)"'
+      raise 'Set email parameter for the query, or set Bio::NCBI.default_email = "(email address of the author of this software)"'
     end
     if opts['tool'].to_s.empty? then
       raise 'Set tool parameter for the query, or set Bio::NCBI.default_tool = "(your tool name)"'
diff --git a/lib/bio/io/ncbisoap.rb b/lib/bio/io/ncbisoap.rb
deleted file mode 100644
index 9ed0124..0000000
--- a/lib/bio/io/ncbisoap.rb
+++ /dev/null
@@ -1,156 +0,0 @@
-#
-# = bio/io/ncbisoap.rb - SOAP interface for NCBI Entrez Utilities
-#
-# Copyright::   Copyright (C) 2004, 2006
-#               Toshiaki Katayama <k at bioruby.org>
-# License::     The Ruby License
-#
-# $Id:$
-#
-
-require 'bio/io/ncbirest'
-require 'bio/io/soapwsdl'
-
-module Bio
-class NCBI
-
-# == References
-#
-# * http://eutils.ncbi.nlm.nih.gov/entrez/query/static/esoap_help.html
-#
-# == Methods
-#
-# All methods accept a hash as its argument and most of the keys can be
-# ommited (values are string).
-#
-# Note: Methods which name ends with _MS are designed for use with
-# Microsoft Visual Studio and SOAP Toolkit 3.0
-#
-# * http://www.ncbi.nlm.nih.gov/entrez/query/static/esoap_ms_help.html
-#
-# * run_eFetch(_MS)
-#   * "db", "id", "WebEnv", "query_key", "tool", "email", "retstart",
-#     "retmax", "rettype", "strand", "seq_start", "seq_stop", "complexity",
-#     "report" 
-#
-# * run_eGquery(_MS)
-#   * "term", "tool", "email"
-#
-# * run_eInfo(_MS)
-#   * "db", "tool", "email"
-#
-# * run_eSpell(_MS)
-#   * "db", "term", "tool", "email"
-#
-# * run_eLink(_MS)
-#   * "db", "id", "reldate", "mindate", "maxdate", "datetype", "term"
-#     "dbfrom", "WebEnv", "query_key", "cmd", "tool", "email"
-#
-# * run_eSearch(_MS)
-#   * "db", "term", "WebEnv", "QueryKey", "usehistory", "tool", "email",
-#     "field", "reldate", "mindate", "maxdate", "datetype", "RetStart",
-#     "RetMax", "rettype", "sort"
-#
-# * run_eSummary(_MS)
-#   * "db", "id", "WebEnv", "query_key", "retstart", "retmax", "tool", "email"
-#
-# == Complex data types
-#
-# * http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/egquery.xsd
-# * http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/einfo.xsd
-# * http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/esearch.xsd
-# * http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/esummary.xsd
-# * http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/elink.xsd
-# * http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/efetch.xsd
-# * http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/espell.xsd
-#
-class SOAP < Bio::SOAPWSDL
-
-  BASE_URI = "http://www.ncbi.nlm.nih.gov/entrez/eutils/soap/"
-
-  # set default to EUtils
-  SERVER_URI = BASE_URI + "eutils.wsdl"
-
-  def initialize(wsdl = nil)
-    super(wsdl || self.class::SERVER_URI)
-  end
-
-  def method_missing(*arg)
-    sleep 3			# make sure to rest for 3 seconds per request
-    @driver.send(*arg)
-  end
-
-  class EUtils < Bio::NCBI::SOAP
-    SERVER_URI = BASE_URI + "eutils.wsdl"
-  end
-
-  class EUtilsLite < Bio::NCBI::SOAP
-    SERVER_URI = BASE_URI + "eutils_lite.wsdl"
-  end
-
-  class EFetch < Bio::NCBI::SOAP
-    SERVER_URI = BASE_URI + "efetch.wsdl"
-  end
-
-  class EFetchLite < Bio::NCBI::SOAP
-    SERVER_URI = BASE_URI + "efetch_lit.wsdl"
-  end
-
-end # SOAP
-end # NCBI
-end # Bio
-
-
-if __FILE__ == $0
-
-  puts ">>> Bio::NCBI::SOAP::EFetch"
-  efetch = Bio::NCBI::SOAP::EFetch.new
-
-  puts "### run_eFetch in EFetch"
-  hash = {"db" => "protein", "id" => "37776955"}
-  result = efetch.run_eFetch(hash)
-  p result
-
-  puts ">>> Bio::NCBI::SOAP::EUtils"
-  eutils = Bio::NCBI::SOAP::EUtils.new
-
-  puts "### run_eFetch in EUtils"
-  hash = {"db" => "pubmed", "id" => "12345"}
-  result = eutils.run_eFetch(hash)
-  p result
-
-  puts "### run_eGquery - Entrez meta search to count hits in each DB"
-  hash = {"term" => "kinase"}
-  result = eutils.run_eGquery(hash)      # working?
-  p result
-
-  puts "### run_eInfo - listing of the databases"
-  hash = {"db" => "protein"}
-  result = eutils.run_eInfo(hash)
-  p result
-
-  puts "### run_eSpell"
-  hash = {"db" => "pubmed", "term" => "kinas"}
-  result = eutils.run_eSpell(hash)
-  p result
-  p result["CorrectedQuery"]
-  
-  puts "### run_eLink"
-  hash = {"db" => "protein", "id" => "37776955"}
-  result = eutils.run_eLink(hash)        #  working?
-  p result
-
-  puts "### run_eSearch"
-  hash = {"db" => "pubmed", "term" => "kinase"}
-  result = eutils.run_eSearch(hash)
-  p result
-
-  puts "### run_eSummary"
-  hash = {"db" => "protein", "id" => "37776955"}
-  result = eutils.run_eSummary(hash)
-  p result
-
-end
-
-
-
diff --git a/lib/bio/io/pubmed.rb b/lib/bio/io/pubmed.rb
index 0c2798b..9ee59a2 100644
--- a/lib/bio/io/pubmed.rb
+++ b/lib/bio/io/pubmed.rb
@@ -5,47 +5,42 @@
 # Copyright::  Copyright (C) 2006 Jan Aerts <jan.aerts at bbsrc.ac.uk>
 # License::    The Ruby License
 #
-# $Id:$
-#
 
 require 'bio/io/ncbirest'
-require 'bio/command'
-require 'cgi'
 
 module Bio
 
 # == Description
 #
 # The Bio::PubMed class provides several ways to retrieve bibliographic
-# information from the PubMed database at
-#   http://www.ncbi.nlm.nih.gov/sites/entrez?db=PubMed
+# information from the PubMed database at NCBI.
 #
 # Basically, two types of queries are possible:
 #
 # * searching for PubMed IDs given a query string:
 #   * Bio::PubMed#esearch  (recommended)
-#   * Bio::PubMed#search   (only retrieves top 20 hits)
+#   * Bio::PubMed#search   (only retrieves top 20 hits; will be deprecated)
 #
 # * retrieving the MEDLINE text (i.e. authors, journal, abstract, ...)
 #   given a PubMed ID
 #   * Bio::PubMed#efetch   (recommended)
-#   * Bio::PubMed#query    (unstable for the change of the HTML design)
-#   * Bio::PubMed#pmfetch  (still working but could be obsoleted by NCBI)
+#   * Bio::PubMed#query    (will be deprecated)
+#   * Bio::PubMed#pmfetch  (will be deprecated)
 #
-# The different methods within the same group are interchangeable and should
-# return the same result.
+# Since BioRuby 1.5, all implementations uses NCBI E-Utilities services.
+# The different methods within the same group still remain because
+# specifications of arguments and/or return values are different.
+# The search, query, and pmfetch will be obsoleted in the future.
 # 
 # Additional information about the MEDLINE format and PubMed programmable
 # APIs can be found on the following websites:
 #
-# * PubMed Overview:
-#     http://www.ncbi.nlm.nih.gov/entrez/query/static/overview.html
-# * PubMed help:
-#     http://www.ncbi.nlm.nih.gov/entrez/query/static/help/pmhelp.html
-# * Entrez utilities index:
-#      http://www.ncbi.nlm.nih.gov/entrez/utils/utils_index.html
-# * How to link:
-#     http://www.ncbi.nlm.nih.gov/books/bv.fcgi?rid=helplinks.chapter.linkshelp
+# * PubMed Tutorial:
+#   http://www.nlm.nih.gov/bsd/disted/pubmedtutorial/index.html
+# * E-utilities Quick Start:
+#   http://www.ncbi.nlm.nih.gov/books/NBK25500/
+# * Creating a Web Link to PubMed:
+#   http://www.ncbi.nlm.nih.gov/books/NBK3862/
 #
 # == Usage
 #
@@ -61,10 +56,14 @@ module Bio
 #   end
 #   
 #   # To retrieve the MEDLINE entry for a given PubMed ID:
-#   puts Bio::PubMed.efetch("10592173", "14693808")
+#   Bio::PubMed.efetch("10592173").each { |x| puts x }
 #   puts Bio::PubMed.query("10592173")
 #   puts Bio::PubMed.pmfetch("10592173")
 #
+#   # To retrieve MEDLINE entries for given PubMed IDs:
+#   Bio::PubMed.efetch([ "10592173", "14693808" ]).each { |x| puts x }
+#   puts Bio::PubMed.query("10592173", "14693808") # returns a String
+#
 #   # This can be converted into a Bio::MEDLINE object:
 #   manuscript = Bio::PubMed.query("10592173")
 #   medline = Bio::MEDLINE.new(manuscript)
@@ -80,15 +79,15 @@ class PubMed < Bio::NCBI::REST
   # *Arguments*:
   # * _str_: query string (required)
   # * _hash_: hash of E-Utils options
-  #   * _retmode_: "xml", "html", ...
-  #   * _rettype_: "medline", ...
-  #   * _retmax_: integer (default 100)
-  #   * _retstart_: integer
-  #   * _field_
-  #   * _reldate_
-  #   * _mindate_
-  #   * _maxdate_
-  #   * _datetype_
+  #   * _"retmode"_: "xml", "html", ...
+  #   * _"rettype"_: "medline", ...
+  #   * _"retmax"_: integer (default 100)
+  #   * _"retstart"_: integer
+  #   * _"field"_
+  #   * _"reldate"_
+  #   * _"mindate"_
+  #   * _"maxdate"_
+  #   * _"datetype"_
   # *Returns*:: array of PubMed IDs or a number of results
   def esearch(str, hash = {})
     opts = { "db" => "pubmed" }
@@ -104,15 +103,15 @@ class PubMed < Bio::NCBI::REST
   # *Arguments*:
   # * _ids_: list of PubMed IDs (required)
   # * _hash_: hash of E-Utils options
-  #   * _retmode_: "xml", "html", ...
-  #   * _rettype_: "medline", ...
-  #   * _retmax_: integer (default 100)
-  #   * _retstart_: integer
-  #   * _field_
-  #   * _reldate_
-  #   * _mindate_
-  #   * _maxdate_
-  #   * _datetype_
+  #   * _"retmode"_: "xml", "html", ...
+  #   * _"rettype"_: "medline", ...
+  #   * _"retmax"_: integer (default 100)
+  #   * _"retstart"_: integer
+  #   * _"field"_
+  #   * _"reldate"_
+  #   * _"mindate"_
+  #   * _"maxdate"_
+  #   * _"datetype"_
   # *Returns*:: Array of MEDLINE formatted String
   def efetch(ids, hash = {})
     opts = { "db" => "pubmed", "rettype"  => "medline" }
@@ -124,26 +123,29 @@ class PubMed < Bio::NCBI::REST
     result
   end
 
+  # This method will be DEPRECATED in the future.
+  #
   # Search the PubMed database by given keywords using entrez query and returns
-  # an array of PubMed IDs. Caution: this method returns the first 20 hits only.
+  # an array of PubMed IDs.
+  #
+  # Caution: this method returns the first 20 hits only,
+  #
   # Instead, use of the 'esearch' method is strongly recomended.
+  #
+  # Implementation details: Since BioRuby 1.5, this method internally uses
+  # NCBI EUtils with retmax=20 by using Bio::PubMed#efetch method.
+  #
   # ---
   # *Arguments*:
   # * _id_: query string (required)
   # *Returns*:: array of PubMed IDs
   def search(str)
-    host = "www.ncbi.nlm.nih.gov"
-    path = "/sites/entrez?tool=bioruby&cmd=Search&doptcmdl=Brief&db=PubMed&term="
-
-    ncbi_access_wait
-
-    http = Bio::Command.new_http(host)
-    response = http.get(path + CGI.escape(str))
-    result = response.body
-    result = result.scan(/value="(\d+)" id="UidCheckBox"/m).flatten
-    return result
+    warn "Bio::PubMed#search is now a subset of Bio::PubMed#esearch. Using Bio::PubMed#esearch is recommended." if $VERBOSE
+    esearch(str, { "retmax" => 20 })
   end
 
+  # This method will be DEPRECATED in the future.
+  #
   # Retrieve PubMed entry by PMID and returns MEDLINE formatted string using
   # entrez query.
   # ---
@@ -151,68 +153,61 @@ class PubMed < Bio::NCBI::REST
   # * _id_: PubMed ID (required)
   # *Returns*:: MEDLINE formatted String
   def query(*ids)
-    host = "www.ncbi.nlm.nih.gov"
-    path = "/sites/entrez?tool=bioruby&cmd=Text&dopt=MEDLINE&db=PubMed&uid="
-    list = ids.collect { |x| CGI.escape(x.to_s) }.join(",")
-
-    ncbi_access_wait
-
-    http = Bio::Command.new_http(host)
-    response = http.get(path + list)
-    result = response.body
-    result = result.scan(/<pre>\s*(.*?)<\/pre>/m).flatten
-
-    if result =~ /id:.*Error occurred/
-      # id: xxxxx Error occurred: Article does not exist
-      raise( result )
+    warn "Bio::PubMed#query internally uses Bio::PubMed#efetch. Using Bio::PubMed#efetch is recommended." if $VERBOSE
+    ret = efetch(ids)
+    if ret && ret.size > 0 then
+      ret.join("\n\n") + "\n"
     else
-      if ids.size > 1
-        return result
-      else
-        return result.first
-      end
+      ""
     end
   end
 
-  # Retrieve PubMed entry by PMID and returns MEDLINE formatted string using
-  # entrez pmfetch.
+  # This method will be DEPRECATED in the future.
+  #
+  # Retrieve PubMed entry by PMID and returns MEDLINE formatted string.
+  #
   # ---
   # *Arguments*:
   # * _id_: PubMed ID (required)
   # *Returns*:: MEDLINE formatted String
   def pmfetch(id)
-    host = "www.ncbi.nlm.nih.gov"
-    path = "/entrez/utils/pmfetch.fcgi?tool=bioruby&mode=text&report=medline&db=PubMed&id="
-
-    ncbi_access_wait
+    warn "Bio::PubMed#pmfetch internally use Bio::PubMed#efetch. Using Bio::PubMed#efetch is recommended." if $VERBOSE
 
-    http = Bio::Command.new_http(host)
-    response = http.get(path + CGI.escape(id.to_s))
-    result = response.body
-    if result =~ /#{id}\s+Error/
-      raise( result )
+    ret = efetch(id)
+    if ret && ret.size > 0 then
+      ret.join("\n\n") + "\n"
     else
-      result = result.gsub("\r", "\n").squeeze("\n").gsub(/<\/?pre>/, '')
-      return result
+      ""
     end
   end
 
+  # The same as Bio::PubMed.new.esearch(*args).
   def self.esearch(*args)
     self.new.esearch(*args)
   end
 
+  # The same as Bio::PubMed.new.efetch(*args).
   def self.efetch(*args)
     self.new.efetch(*args)
   end
 
+  # This method will be DEPRECATED. Use esearch method.
+  #
+  # The same as Bio::PubMed.new.search(*args).
   def self.search(*args)
     self.new.search(*args)
   end
 
+  # This method will be DEPRECATED. Use efetch method.
+  #
+  # The same as Bio::PubMed.new.query(*args).
   def self.query(*args)
     self.new.query(*args)
   end
 
+  # This method will be DEPRECATED. Use efetch method.
+  #
+  # The same as Bio::PubMed.new.pmfetch(*args).
   def self.pmfetch(*args)
     self.new.pmfetch(*args)
   end
diff --git a/lib/bio/io/soapwsdl.rb b/lib/bio/io/soapwsdl.rb
deleted file mode 100644
index c067c64..0000000
--- a/lib/bio/io/soapwsdl.rb
+++ /dev/null
@@ -1,119 +0,0 @@
-#
-# = bio/io/soapwsdl.rb - SOAP/WSDL interface class
-#
-# Copyright::   Copyright (C) 2004 
-#               Toshiaki Katayama <k at bioruby.org>
-# License::     The Ruby License
-#
-# $Id: soapwsdl.rb,v 1.7 2007/04/05 23:35:41 trevor Exp $
-#
-begin
-  require 'soap/wsdlDriver'
-rescue LoadError
-end
-
-module Bio
-
-# == Examples
-# 
-# class API < Bio::SOAPWSDL
-#   def initialize
-#     @wsdl = 'http://example.com/example.wsdl'
-#     @log = File.new("soap_log", 'w')
-#     create_driver
-#   end
-# end
-#
-# == Use HTTP proxy
-#
-# You need to set following two environmental variables
-# (case might be insensitive) as required by SOAP4R.
-#
-# --- soap_use_proxy
-#
-# Set the value of this variable to 'on'.
-#
-# --- http_proxy
-#
-# Set the URL of your proxy server (http://myproxy.com:8080 etc.).
-#
-# === Example to use HTTP proxy
-# 
-# % export soap_use_proxy=on
-# % export http_proxy=http://localhost:8080
-#
-class SOAPWSDL
-
-  # Returns URL of the current WSDL file.
-  attr_reader :wsdl
-
-  # Returns current logging IO.
-  attr_reader :log
-
-
-  def initialize(wsdl = nil)
-    @wsdl = wsdl
-    @log = nil
-    create_driver
-  end
-
-
-  def create_driver
-    if RUBY_VERSION > "1.8.2"
-      @driver = SOAP::WSDLDriverFactory.new(@wsdl).create_rpc_driver
-    else
-      @driver = SOAP::WSDLDriverFactory.new(@wsdl).create_driver
-    end
-    @driver.generate_explicit_type = true	# Ruby obj <-> SOAP obj
-  end
-  private :create_driver
-
-
-  # Change the URL for WSDL file
-  #
-  #   serv = Bio::SOAPWSDL.new("http://soap.genome.jp/KEGG.wsdl")
-  #
-  # or
-  # 
-  #   serv = Bio::SOAPWSDL.new
-  #   serv.wsdl = "http://soap.genome.jp/KEGG.wsdl"
-  #
-  # Note that you can't read two or more different WSDL files at once.
-  # In that case, create Bio::SOAPWSDL object for each.
-  #
-  def wsdl=(url)
-    @wsdl = url
-    create_driver
-  end
-
-
-  # Change the IO for logging.  The argument is passed to wiredump_dev method
-  # of the SOAP4R, thus
-  #
-  #   serv = Bio::SOAPWSDL.new
-  #   serv.log = STDERR
-  #
-  # will print all the SOAP transactions in standard error.
-  # This feature is especially useful for debug.
-  #
-  def log=(io)
-    @log = io
-    @driver.wiredump_dev = @log
-  end
-
-
-  # List of methods defined by WSDL
-  def list_methods
-    @driver.methods(false)
-  end
-
-
-  def method_missing(*arg)
-    @driver.send(*arg)
-  end
-  private :method_missing
-
-end # SOAPWSDL
-
-end # Bio
-
diff --git a/lib/bio/io/togows.rb b/lib/bio/io/togows.rb
index e611fc6..744d9de 100644
--- a/lib/bio/io/togows.rb
+++ b/lib/bio/io/togows.rb
@@ -4,7 +4,6 @@
 # Copyright::  Copyright (C) 2009 Naohisa Goto <ng at bioruby.org>
 # License::    The Ruby License
 #
-# $Id:$
 #
 # Bio::TogoWS is a set of clients for the TogoWS web services
 # (http://togows.dbcls.jp/).
@@ -245,9 +244,16 @@ module Bio
         rescue NoMethodError
           ids = ids.to_s
         end
-        ids = a.join(',') if a
 
-        arg = [ 'entry', database, ids ]
+        arg = [ 'entry', database ]
+        if a then
+          b = a.dup
+          (a.size - 1).downto(1) { |i| b.insert(i, :",") }
+          arg.concat b
+        else
+          arg.push ids
+        end
+
         arg.push field if field
         arg[-1] = "#{arg[-1]}.#{format}" if format
         response = get(*arg)
@@ -280,7 +286,7 @@ module Bio
         arg = [ 'search', database, query ]
         if offset then
           limit ||= 1
-          arg.push "#{offset},#{limit}"
+          arg.concat [ "#{offset}", :",", "#{limit}" ]
         end
         arg[-1] = "#{arg[-1]}.#{format}" if format
         response = get(*arg)
@@ -398,8 +404,7 @@ module Bio
       end
 
       # Access to the TogoWS by using POST method.
-      # The data is stored to the form key 'data'.
-      # Mime type is 'application/x-www-form-urlencoded'.
+      # Mime type is 'application/octet-stream'.
       # ---
       # *Arguments*:
       # * (required) _data_: String
@@ -408,19 +413,37 @@ module Bio
       def post_data(data, *paths)
         path = make_path(paths)
         if @debug then
-          $stderr.puts "TogoWS: Bio::Command.http_post_form(#{path.inspect}, { \"data\" => (#{data.size} bytes) }, #{@header.inspect})"
+          $stderr.puts "TogoWS: Bio::Command.http_post(#{path.inspect}, data(#{data.size} bytes), #{@header.inspect})"
         end
         togows_access_wait
-        Bio::Command.http_post_form(@http, path, { 'data' => data }, @header)
+        Bio::Command.http_post(@http, path, data, @header)
       end
 
       # Generates path string from the given paths.
+      # Symbol objects are not URL-escaped.
+      # String objects are joined with '/'.
+      # Symbol objects are joined directly without '/'.
+      #
       # ---
       # *Arguments*:
-      # * (required) _paths_: Array containing String objects
+      # * (required) _paths_: Array containing String or Symbol objects
       # *Returns*:: String
       def make_path(paths)
-        @pathbase + paths.collect { |x| CGI.escape(x.to_s) }.join('/')
+        flag_sep = false
+        a = paths.collect do |x|
+          case x
+          when Symbol
+            # without URL escape
+            flag_sep = false
+            str = x.to_s
+          else
+            str = CGI.escape(x.to_s)
+            str = '/' + str if flag_sep
+            flag_sep = true
+          end
+          str
+        end
+        @pathbase + a.join('')
       end
 
       # If response.code == "200", returns body as a String.
diff --git a/lib/bio/map.rb b/lib/bio/map.rb
index e9d7d8d..ff317d5 100644
--- a/lib/bio/map.rb
+++ b/lib/bio/map.rb
@@ -319,7 +319,7 @@ module Bio
         unless other.kind_of?(Bio::Map::Mapping)
           raise "[Error] markers are not comparable"
         end
-	    unless @map.equal?(other.map)
+        unless @map.equal?(other.map)
           raise "[Error] maps have to be the same"
         end
 
diff --git a/lib/bio/pathway.rb b/lib/bio/pathway.rb
index cbe146e..4f768bc 100644
--- a/lib/bio/pathway.rb
+++ b/lib/bio/pathway.rb
@@ -591,7 +591,7 @@ class Pathway
   # problem in the graph in which edge weights can be negative.
   def bellman_ford(root)
     distance, predecessor = initialize_single_source(root)
-    for i in 1 ..(self.nodes - 1) do
+    (self.nodes - 1).times do
       @graph.each_key do |u|
         @graph[u].each do |v, w|
           # relaxing procedure of root -> 'u' -> 'v'
diff --git a/lib/bio/sequence/compat.rb b/lib/bio/sequence/compat.rb
index 44486f9..ef40e4a 100644
--- a/lib/bio/sequence/compat.rb
+++ b/lib/bio/sequence/compat.rb
@@ -32,7 +32,7 @@ class Sequence
 
 module Common
 
-  # <b>Bio::Sequence#to_fasta is DEPRECIATED</b>
+  # <b>Bio::Sequence#to_fasta is DEPRECATED</b>
   # Do not use Bio::Sequence#to_fasta ! Use Bio::Sequence#output instead. 
   # Note that Bio::Sequence::NA#to_fasta, Bio::Sequence::AA#to_fasata,
   # and Bio::Sequence::Generic#to_fasta <b>can still be used</b>,
diff --git a/lib/bio/sequence/na.rb b/lib/bio/sequence/na.rb
index 4f8ca8b..752ab7a 100644
--- a/lib/bio/sequence/na.rb
+++ b/lib/bio/sequence/na.rb
@@ -283,6 +283,14 @@ class NA < String
   #
   #   s = Bio::Sequence::NA.new('atggcgtga')
   #   puts s.gc_percent                       #=> 55
+  #
+  # Note that this method only returns an integer value.
+  # When more digits after decimal points are needed,
+  # use gc_content and sprintf like below:
+  #
+  #   s = Bio::Sequence::NA.new('atggcgtga')
+  #   puts sprintf("%3.2f", s.gc_content * 100)  #=> "55.56"
+  # 
   # ---
   # *Returns*:: Fixnum
   def gc_percent
@@ -297,57 +305,100 @@ class NA < String
   # Calculate the ratio of GC / ATGC bases. U is regarded as T.
   #
   #   s = Bio::Sequence::NA.new('atggcgtga')
+  #   puts s.gc_content                       #=> (5/9)
+  #   puts s.gc_content.to_f                  #=> 0.5555555555555556
+  #
+  # In older Ruby versions, Float is always returned.
+  #   
+  #   s = Bio::Sequence::NA.new('atggcgtga')
   #   puts s.gc_content                       #=> 0.555555555555556
+  #
+  # Note that "u" is regarded as "t".
+  # If there are no ATGC bases in the sequence, 0.0 is returned.
+  #
   # ---
-  # *Returns*:: Float
+  # *Returns*:: Rational or Float
   def gc_content
     count = self.composition
     at = count['a'] + count['t'] + count['u']
     gc = count['g'] + count['c']
-    return 0.0 if at + gc == 0
-    return gc.quo(at + gc)
+    total = at + gc
+    return 0.0 if total == 0
+    return gc.quo(total)
   end
 
   # Calculate the ratio of AT / ATGC bases. U is regarded as T.
   #
   #   s = Bio::Sequence::NA.new('atggcgtga')
+  #   puts s.at_content                       #=> 4/9
+  #   puts s.at_content.to_f                  #=> 0.444444444444444
+  #
+  # In older Ruby versions, Float is always returned.
+  #
+  #   s = Bio::Sequence::NA.new('atggcgtga')
   #   puts s.at_content                       #=> 0.444444444444444
+  #
+  # Note that "u" is regarded as "t".
+  # If there are no ATGC bases in the sequence, 0.0 is returned.
+  #
   # ---
-  # *Returns*:: Float
+  # *Returns*:: Rational or Float
   def at_content
     count = self.composition
     at = count['a'] + count['t'] + count['u']
     gc = count['g'] + count['c']
-    return 0.0 if at + gc == 0
-    return at.quo(at + gc)
+    total = at + gc
+    return 0.0 if total == 0
+    return at.quo(total)
   end
 
   # Calculate the ratio of (G - C) / (G + C) bases.
   #
   #   s = Bio::Sequence::NA.new('atggcgtga')
+  #   puts s.gc_skew                          #=> 3/5
+  #   puts s.gc_skew.to_f                     #=> 0.6
+  #
+  # In older Ruby versions, Float is always returned.
+  #
+  #   s = Bio::Sequence::NA.new('atggcgtga')
   #   puts s.gc_skew                          #=> 0.6
+  #
+  # If there are no GC bases in the sequence, 0.0 is returned.
+  #
   # ---
-  # *Returns*:: Float
+  # *Returns*:: Rational or Float
   def gc_skew
     count = self.composition
     g = count['g']
     c = count['c']
-    return 0.0 if g + c == 0
-    return (g - c).quo(g + c)
+    gc = g + c
+    return 0.0 if gc == 0
+    return (g - c).quo(gc)
   end
 
   # Calculate the ratio of (A - T) / (A + T) bases. U is regarded as T.
   #
   #   s = Bio::Sequence::NA.new('atgttgttgttc')
+  #   puts s.at_skew                          #=> (-3/4)
+  #   puts s.at_skew.to_f                     #=> -0.75
+  #
+  # In older Ruby versions, Float is always returned.
+  #
+  #   s = Bio::Sequence::NA.new('atgttgttgttc')
   #   puts s.at_skew                          #=> -0.75
+  #
+  # Note that "u" is regarded as "t".
+  # If there are no AT bases in the sequence, 0.0 is returned.
+  #
   # ---
-  # *Returns*:: Float
+  # *Returns*:: Rational or Float
   def at_skew
     count = self.composition
     a = count['a']
     t = count['t'] + count['u']
-    return 0.0 if a + t == 0
-    return (a - t).quo(a + t)
+    at = a + t
+    return 0.0 if at == 0
+    return (a - t).quo(at)
   end
 
   # Returns an alphabetically sorted array of any non-standard bases 
diff --git a/lib/bio/shell.rb b/lib/bio/shell.rb
index 2d38527..e04d1d8 100644
--- a/lib/bio/shell.rb
+++ b/lib/bio/shell.rb
@@ -31,8 +31,6 @@ module Bio::Shell
   require 'bio/shell/plugin/flatfile'
   require 'bio/shell/plugin/obda'
   require 'bio/shell/plugin/das'
-  require 'bio/shell/plugin/keggapi'
-  require 'bio/shell/plugin/soap'
   require 'bio/shell/plugin/emboss'
   require 'bio/shell/plugin/blast'
   require 'bio/shell/plugin/psort'
diff --git a/lib/bio/shell/core.rb b/lib/bio/shell/core.rb
index 227c787..1167cdd 100644
--- a/lib/bio/shell/core.rb
+++ b/lib/bio/shell/core.rb
@@ -5,7 +5,6 @@
 #               Toshiaki Katayama <k at bioruby.org>
 # License::     The Ruby License
 #
-# $Id:$
 #
 
 module Bio::Shell::Core
@@ -195,7 +194,7 @@ module Bio::Shell::Ghost
 
   def find_flat_dir(dbname)
     dir = File.join(bioflat_dir, dbname.to_s.strip)
-    if File.exists?(dir)
+    if File.exist?(dir)
       return dir
     else
       return nil
@@ -209,7 +208,7 @@ module Bio::Shell::Ghost
   end
 
   def load_config_file(file)
-    if File.exists?(file)
+    if File.exist?(file)
       STDERR.print "Loading config (#{file}) ... "
       if hash = YAML.load(File.read(file))
         @config.update(hash)
@@ -312,7 +311,7 @@ module Bio::Shell::Ghost
   end
 
   def load_object_file(file)
-    if File.exists?(file)
+    if File.exist?(file)
       STDERR.print "Loading object (#{file}) ... "
       begin
         bind = Bio::Shell.cache[:binding]
@@ -394,7 +393,7 @@ module Bio::Shell::Ghost
   end
 
   def load_history_file(file)
-    if File.exists?(file)
+    if File.exist?(file)
       STDERR.print "Loading history (#{file}) ... "
       File.open(file).each do |line|
         unless line[/^# /]
@@ -459,7 +458,7 @@ module Bio::Shell::Ghost
 
   def save_script
     if @script_begin and @script_end and @script_begin <= @script_end
-      if File.exists?(script_file)
+      if File.exist?(script_file)
         message = "Overwrite script file (#{script_file})? [y/n] "
       else
         message = "Save script file (#{script_file})? [y/n] "
diff --git a/lib/bio/shell/interface.rb b/lib/bio/shell/interface.rb
index 3fdc5e8..4b91c13 100644
--- a/lib/bio/shell/interface.rb
+++ b/lib/bio/shell/interface.rb
@@ -5,7 +5,6 @@
 #               Toshiaki Katayama <k at bioruby.org>
 # License::     The Ruby License
 #
-# $Id: interface.rb,v 1.19 2007/11/15 07:08:49 k Exp $
 #
 
 module Bio::Shell
@@ -101,7 +100,7 @@ module Bio::Shell
         STDOUT.reopen(pg)
         objs.each do |obj|
           if obj.is_a?(String)
-            if File.exists?(obj)
+            if File.exist?(obj)
               system("#{cmd} #{obj}")
             else
               obj.display
@@ -128,7 +127,7 @@ module Bio::Shell
 
   def head(arg, num = 10)
     str = ""
-    if File.exists?(arg)
+    if File.exist?(arg)
       File.open(arg) do |file|
         num.times do
           if line = file.gets
@@ -154,7 +153,7 @@ module Bio::Shell
     if ! file[/^#{datadir}/] and Bio::Shell.ask_yes_or_no(message)
       file = File.join(datadir, file)
     end
-    if File.exists?(file)
+    if File.exist?(file)
       message = "Overwrite existing '#{file}' file? [y/n] "
       if ! Bio::Shell.ask_yes_or_no(message)
         puts " ... save aborted."
diff --git a/lib/bio/shell/irb.rb b/lib/bio/shell/irb.rb
index ff6b383..4b409f8 100644
--- a/lib/bio/shell/irb.rb
+++ b/lib/bio/shell/irb.rb
@@ -5,7 +5,6 @@
 #               Toshiaki Katayama <k at bioruby.org>
 # License::     The Ruby License
 #
-# $Id: irb.rb,v 1.3 2007/04/05 23:35:41 trevor Exp $
 #
 
 module Bio::Shell
@@ -48,7 +47,7 @@ module Bio::Shell
         return line
       end
 
-      if File.exists?("./config/boot.rb")
+      if File.exist?("./config/boot.rb")
         require "./config/boot"
         require "./config/environment"
         #require 'commands/console'
diff --git a/lib/bio/shell/plugin/entry.rb b/lib/bio/shell/plugin/entry.rb
index 8f20ef7..bf9b7a5 100644
--- a/lib/bio/shell/plugin/entry.rb
+++ b/lib/bio/shell/plugin/entry.rb
@@ -5,7 +5,6 @@
 #               Toshiaki Katayama <k at bioruby.org>
 # License::     The Ruby License
 #
-# $Id:$
 #
 
 module Bio::Shell
@@ -31,7 +30,7 @@ module Bio::Shell
     seq = ""
     if arg.kind_of?(Bio::Sequence)
       seq = arg
-    elsif arg.respond_to?(:gets) or File.exists?(arg)
+    elsif arg.respond_to?(:gets) or File.exist?(arg)
       ent = flatauto(arg)
     elsif arg[/:/]
       ent = getobj(arg)
@@ -65,7 +64,7 @@ module Bio::Shell
     db, entry_id = arg.to_s.strip.split(/\:/, 2)
 
     # local file
-    if arg.respond_to?(:gets) or File.exists?(arg)
+    if arg.respond_to?(:gets) or File.exist?(arg)
       puts "Retrieving entry from file (#{arg})"
       entry = flatfile(arg)
 
diff --git a/lib/bio/shell/plugin/keggapi.rb b/lib/bio/shell/plugin/keggapi.rb
deleted file mode 100644
index 1fe4d0a..0000000
--- a/lib/bio/shell/plugin/keggapi.rb
+++ /dev/null
@@ -1,181 +0,0 @@
-#
-# = bio/shell/plugin/keggapi.rb - plugin for KEGG API
-#
-# Copyright::   Copyright (C) 2005
-#               Toshiaki Katayama <k at bioruby.org>
-# License::     The Ruby License
-#
-# $Id: keggapi.rb,v 1.12 2007/04/05 23:35:41 trevor Exp $
-#
-
-module Bio::Shell
-
-  module Private
-
-    module_function
-
-    def keggapi_definition2tab(list)
-      ary = []
-      list.each do |entry|
-        ary << "#{entry.entry_id}\t#{entry.definition}"
-      end
-      return ary
-    end
-  end
-
-  private
-
-  def keggapi(wsdl = nil)
-    if wsdl
-      @keggapi = Bio::KEGG::API.new(wsdl)
-    else
-      @keggapi ||= Bio::KEGG::API.new
-    end
-    return @keggapi
-  end
-
-  # DBGET
-
-  def binfo(db = "all")
-    result = keggapi.binfo(db)
-    puts result
-    return result
-  end
-
-  def bfind(str)
-    result = keggapi.bfind(str)
-    return result
-  end
-
-  def bget(str)
-    result = keggapi.bget(str)
-    if block_given?
-      yield result
-    else
-      puts result
-      return result
-    end
-  end
-
-  def btit(str)
-    result = keggapi.btit(str)
-    puts result
-    return result
-  end
-
-  def bconv(str)
-    result = keggapi.bconv(str)
-    puts result
-    return result
-  end
-
-  # DATABASES
-
-  def keggdbs
-    list = keggapi.list_databases
-    result = Bio::Shell::Private.keggapi_definition2tab(list).join("\n")
-    puts result
-    return list.map {|x| x.entry_id}
-  end
-
-  def keggorgs
-    list = keggapi.list_organisms
-    result = Bio::Shell::Private.keggapi_definition2tab(list).sort.join("\n")
-    puts result
-    return list.map {|x| x.entry_id}
-  end
-
-  def keggpathways(org = "map")
-    list = keggapi.list_pathways(org)
-    result = Bio::Shell::Private.keggapi_definition2tab(list).join("\n")
-    puts result
-    return list.map {|x| x.entry_id}
-  end
-
-  # use KEGG DAS insetad
-  def kegggenomeseq(org)
-    result = ""
-    require 'net/ftp'
-    Net::FTP.open("ftp.genome.jp", "anonymous") do |ftp|
-      path = "/pub/kegg/genomes/#{org}"
-      list = ftp.nlst(path)
-      file = list.grep(/.*genome$/).shift
-      if file
-        open("ftp://ftp.genome.jp/#{file}") do |file|
-          result = file.read
-        end
-      end
-    end
-    return result
-  end
-
-end
-
-=begin
-
-== BioRuby extensions
-
---- get_all_best_best_neighbors_by_gene(genes_id)
---- get_all_best_neighbors_by_gene(genes_id)
---- get_all_reverse_best_neighbors_by_gene(genes_id)
---- get_all_paralogs_by_gene(genes_id)
---- get_all_genes_by_motifs(motif_id_list)
---- get_all_oc_members_by_gene(genes_id)
---- get_all_pc_members_by_gene(genes_id)
---- get_all_genes_by_organism(org)
---- get_all_linkdb_by_entry(entry_id, db)
---- save_image(url, filename = nil)
---- get_entries(ary = [])
---- get_aaseqs(ary = [])
---- get_naseqs(ary = [])
---- get_definitions(ary = [])
-
-== Original KEGG API methods
-
---- get_linkdb_by_entry(entry_id, db, start, max_results)
---- get_best_best_neighbors_by_gene(genes_id, start, max_results)
---- get_best_neighbors_by_gene(genes_id, start, max_results)
---- get_reverse_best_neighbors_by_gene(genes_id, start, max_results)
---- get_paralogs_by_gene(genes_id, start, max_results)
---- get_motifs_by_gene(genes_id, db)
---- get_genes_by_motifs(motif_id_list, start, max_results)
---- get_ko_by_gene(genes_id)
---- get_ko_by_ko_class(ko_class_id)
---- get_genes_by_ko_class(ko_class_id, org, start, max_results)
---- get_genes_by_ko(ko_id, org)
---- get_oc_members_by_gene(genes_id, start, max_results)
---- get_pc_members_by_gene(genes_id, start, max_results)
---- mark_pathway_by_objects(pathway_id, object_id_list)
---- color_pathway_by_objects(pathway_id, object_id_list, fg_color_list, bg_color_list)
---- get_html_of_marked_pathway_by_objects(pathway_id, object_id_list)
---- get_html_of_colored_pathway_by_objects(pathway_id, object_id_list, fg_color_list, bg_color_list)
---- get_genes_by_pathway(pathway_id)
---- get_enzymes_by_pathway(pathway_id)
---- get_compounds_by_pathway(pathway_id)
---- get_glycans_by_pathway(pathway_id)
---- get_reactions_by_pathway(pathway_id)
---- get_kos_by_pathway(pathway_id)
---- get_pathways_by_genes(genes_id_list)
---- get_pathways_by_enzymes(enzyme_id_list)
---- get_pathways_by_compounds(compound_id_list)
---- get_pathways_by_glycans(glycan_id_list)
---- get_pathways_by_reactions(reaction_id_list)
---- get_pathways_by_kos(ko_id_list, org)
---- get_linked_pathways(pathway_id)
---- get_genes_by_enzyme(enzyme_id, org)
---- get_enzymes_by_gene(genes_id)
---- get_enzymes_by_compound(compound_id)
---- get_enzymes_by_glycan(glycan_id)
---- get_enzymes_by_reaction(reaction_id)
---- get_compounds_by_enzyme(enzyme_id)
---- get_compounds_by_reaction(reaction_id)
---- get_glycans_by_enzyme(enzyme_id)
---- get_glycans_by_reaction(reaction_id)
---- get_reactions_by_enzyme(enzyme_id)
---- get_reactions_by_compound(compound_id)
---- get_reactions_by_glycan(glycan_id)
---- get_genes_by_organism(org, start, max_results)
---- get_number_of_genes_by_organism(org)
---- convert_mol_to_kcf(mol_text)
-
-=end
diff --git a/lib/bio/shell/plugin/seq.rb b/lib/bio/shell/plugin/seq.rb
index fffb5a9..773d363 100644
--- a/lib/bio/shell/plugin/seq.rb
+++ b/lib/bio/shell/plugin/seq.rb
@@ -5,7 +5,6 @@
 #               Toshiaki Katayama <k at bioruby.org>
 # License::     The Ruby License
 #
-# $Id: seq.rb,v 1.21 2007/04/05 23:35:41 trevor Exp $
 #
 
 module Bio::Shell
@@ -161,20 +160,22 @@ end
 class String
 
   def step(window_size)
-    i = 0
+    j = 0
     0.step(self.length - window_size, window_size) do |i|
       yield self[i, window_size]
+      j = i
     end
-    yield self[i + window_size .. -1] if i + window_size < self.length
+    yield self[j + window_size .. -1] if j + window_size < self.length
   end
 
   def skip(window_size, step_size = 1)
-    i = 0
+    j = 0
     0.step(self.length - window_size, step_size) do |i|
       yield [self[i, window_size], i + 1, i + window_size]
+      j = i
     end
-    from = i + step_size
-    to  = [self.length, i + step_size + window_size].min
+    from = j + step_size
+    to  = [self.length, j + step_size + window_size].min
     yield [self[from, window_size], from + 1, to] if from + 1 <= to
   end
 
diff --git a/lib/bio/shell/plugin/soap.rb b/lib/bio/shell/plugin/soap.rb
deleted file mode 100644
index 3ad47a9..0000000
--- a/lib/bio/shell/plugin/soap.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-#
-# = bio/shell/plugin/soap.rb - web services
-#
-# Copyright::   Copyright (C) 2006
-#               Toshiaki Katayama <k at bioruby.org>
-# License::     Ruby's
-#
-# $Id: soap.rb,v 1.1 2007/07/09 11:17:09 k Exp $
-#
-
-module Bio::Shell
-
-  private
-
-  def ncbisoap(wsdl = nil)
-    if wsdl
-      @ncbisoap = Bio::NCBI::SOAP.new(wsdl)
-    else
-      @ncbisoap ||= Bio::NCBI::SOAP.new
-    end
-    return @ncbisoap
-  end
-
-  def ebisoap(wsdl = nil)
-    case wsdl
-    when :ipscan
-      @ebisoap = Bio::EBI::SOAP::InterProScan.new(wsdl)
-    when :emboss
-      @ebisoap = Bio::EBI::SOAP::Emboss.new(wsdl)
-    when :clustalw
-      @ebisoap = Bio::EBI::SOAP::ClustalW.new(wsdl)
-    when :tcoffee
-      @ebisoap = Bio::EBI::SOAP::TCoffee.new(wsdl)
-    when :muscle
-      @ebisoap = Bio::EBI::SOAP::Muscle.new(wsdl)
-    when :fasta
-      @ebisoap = Bio::EBI::SOAP::Fasta.new(wsdl)
-    when :wublast
-      @ebisoap = Bio::EBI::SOAP::WUBlast.new(wsdl)
-    when :mpsrch
-      @ebisoap = Bio::EBI::SOAP::MPsrch.new(wsdl)
-    when :scanps
-      @ebisoap = Bio::EBI::SOAP::ScanPS.new(wsdl)
-    when :msd
-      @ebisoap = Bio::EBI::SOAP::MSD.new(wsdl)
-    when :ontology
-      @ebisoap = Bio::EBI::SOAP::Ontology.new(wsdl)
-    when :citation
-      @ebisoap = Bio::EBI::SOAP::Citation.new(wsdl)
-    when /^http/
-      @ebisoap = Bio::EBI::SOAP.new(wsdl)
-    else
-      @ebisoap ||= Bio::EBI::SOAP.new
-    end
-    return @ebisoap
-  end
-
-  def ddbjsoap(wsdl = nil)
-    case wsdl
-    when :blast
-      @ddbjsoap = Bio::DDBJ::XML::Blast.new
-    when :fasta
-      @ddbjsoap = Bio::DDBJ::XML::Fasta.new
-    when :clustalw
-      @ddbjsoap = Bio::DDBJ::XML::ClustalW.new
-    when :ddbj
-      @ddbjsoap = Bio::DDBJ::XML::DDBJ.new
-    when :gib
-      @ddbjsoap = Bio::DDBJ::XML::Gib.new
-    when :gtop
-      @ddbjsoap = Bio::DDBJ::XML::Gtop.new
-    when :pml
-      @ddbjsoap = Bio::DDBJ::XML::PML.new
-    when :srs
-      @ddbjsoap = Bio::DDBJ::XML::SRS.new
-    when :txsearch
-      @ddbjsoap = Bio::DDBJ::XML::TxSearch.new
-    when /^http/
-      @ddbjsoap = Bio::DDBJ::XML.new(wsdl)
-    else
-      @ddbjsoap ||= Bio::DDBJ::XML.new
-    end
-    return @ddbjsoap
-  end
-
-end
-
diff --git a/lib/bio/shell/setup.rb b/lib/bio/shell/setup.rb
index fb63ed2..be97178 100644
--- a/lib/bio/shell/setup.rb
+++ b/lib/bio/shell/setup.rb
@@ -5,7 +5,6 @@
 #               Toshiaki Katayama <k at bioruby.org>
 # License::     The Ruby License
 #
-# $Id: setup.rb,v 1.8 2007/06/28 11:21:40 k Exp $
 #
 
 require 'getoptlong'
@@ -25,7 +24,7 @@ class Bio::Shell::Setup
     Bio::Shell.configure(savedir)
 
     # set default to irb mode
-    Bio::Shell.cache[:mode] = @mode || :irb
+    Bio::Shell.cache[:mode] = ((defined? @mode) && @mode) || :irb
 
     case Bio::Shell.cache[:mode]
     when :web
diff --git a/lib/bio/tree.rb b/lib/bio/tree.rb
index 48890bd..469f412 100644
--- a/lib/bio/tree.rb
+++ b/lib/bio/tree.rb
@@ -614,7 +614,7 @@ module Bio
       raise IndexError, 'node2 not found' unless @pathway.graph[node2]
       return [ node1 ] if node1 == node2
       return [ node1, node2 ] if @pathway.graph[node1][node2]
-      step, path = @pathway.bfs_shortest_path(node1, node2)
+      _, path = @pathway.bfs_shortest_path(node1, node2)
       unless path[0] == node1 and path[-1] == node2 then
         raise NoPathError, 'node1 and node2 are not connected'
       end
@@ -765,7 +765,7 @@ module Bio
     # The result is unspecified for cyclic trees.
     def lowest_common_ancestor(node1, node2, root = nil)
       root ||= @root
-      distance, route = @pathway.breadth_first_search(root)
+      _, route = @pathway.breadth_first_search(root)
       x = node1; r1 = []
       begin; r1 << x; end while x = route[x]
       x = node2; r2 = []
diff --git a/lib/bio/util/contingency_table.rb b/lib/bio/util/contingency_table.rb
index f83d173..6e730ff 100644
--- a/lib/bio/util/contingency_table.rb
+++ b/lib/bio/util/contingency_table.rb
@@ -331,8 +331,6 @@ class ContingencyTable
   # *Returns*:: +Float+ chi square value
   def chi_square
     total = 0
-    c = @characters
-    max = c.size - 1
     @characters.each do |i|    # Loop through every row in the ContingencyTable
       @characters.each do |j|  # Loop through every column in the ContingencyTable
         total += chi_square_element(i, j)
diff --git a/lib/bio/util/restriction_enzyme/range/sequence_range.rb b/lib/bio/util/restriction_enzyme/range/sequence_range.rb
index 1f3066e..c7999be 100644
--- a/lib/bio/util/restriction_enzyme/range/sequence_range.rb
+++ b/lib/bio/util/restriction_enzyme/range/sequence_range.rb
@@ -196,7 +196,7 @@ class SequenceRange
     c_cut = cc.vc_complement_as_original_class
     h_cut = cc.hc_between_strands_as_original_class
     
-    if @circular
+    if (defined? @circular) && @circular
       # NOTE
       # if it's circular we should start at the beginning of a cut for orientation
       # scan for it, hack off the first set of hcuts and move them to the back
@@ -238,7 +238,7 @@ class SequenceRange
   
     # Bin "-1" is an easy way to indicate the start of a strand just in case
     # there is a horizontal cut at position 0
-    bins.delete(-1) unless @circular
+    bins.delete(-1) unless ((defined? @circular) && @circular)
     bins
   end
   
diff --git a/lib/bio/util/sirna.rb b/lib/bio/util/sirna.rb
index eb51063..b75dd0a 100644
--- a/lib/bio/util/sirna.rb
+++ b/lib/bio/util/sirna.rb
@@ -1,8 +1,9 @@
 #
 # = bio/util/sirna.rb - Class for designing small inhibitory RNAs
 #
-# Copyright::   Copyright (C) 2004, 2005
+# Copyright::   Copyright (C) 2004-2013
 #               Itoshi NIKAIDO <dritoshi at gmail.com>
+#               Yuki NAITO <y-naito at rnai.jp>
 # License::     The Ruby License
 #
 # $Id:$
@@ -33,10 +34,10 @@
 # 
 # * Kumiko Ui-Tei et al.  Guidelines for the selection of highly effective
 #   siRNA sequences for mammalian and chick RNA interference.
-#   Nucl. Acids. Res. 2004 32: 936-948.
+#   Nucleic Acids Res. 2004 32: 936-948.
 #    
 # * Angela Reynolds et al.  Rational siRNA design for RNA interference.
-#   Nature Biotech. 2004 22: 326-330.
+#   Nat. Biotechnol. 2004 22: 326-330.
 #
 
 require 'bio/sequence'
@@ -71,24 +72,64 @@ module Bio
 
     # Ui-Tei's rule.
     def uitei?(target)
-      return false unless /^.{2}[GC]/i =~ target
-      return false unless /[AU].{2}$/i =~ target
-      return false if     /[GC]{9}/i   =~ target
-
-      one_third  = target.size * 1 / 3
-      start_pos  = @target_size - one_third - 1
-      remain_seq = target.subseq(start_pos, @target_size - 2)
-      au_number  = remain_seq.scan(/[AU]/i).size
-      return false if au_number < 5
-  
+      return false if target.length != 23  # 21 nt target + 2 nt overhang
+
+      seq19 = target[2..20]  # 19 nt double-stranded region of siRNA
+
+      # criteria i
+      return false unless seq19[18..18].match(/[AU]/i)
+
+      # criteria ii
+      return false unless seq19[0..0].match(/[GC]/i)
+
+      # criteria iii
+      au_number = seq19[12..18].scan(/[AU]/i).size
+      return false unless au_number >= 4
+
+      # criteria iv
+      return false if seq19.match(/[GC]{10}/i)
+
       return true
     end
 
     # Reynolds' rule.
     def reynolds?(target)
-      return false if /[GC]{9}/i =~ target
-      return false unless /^.{4}A.{6}U.{2}[AUC].{5}[AU].{2}$/i =~ target
-      return true
+      return false if target.length != 23  # 21 nt target + 2 nt overhang
+
+      seq19 = target[2..20]  # 19 nt double-stranded region of siRNA
+      score = 0
+
+      # criteria I
+      gc_number = seq19.scan(/[GC]/i).size
+      score += 1 if (7 <= gc_number and gc_number <= 10)
+
+      # criteria II
+      au_number = seq19[14..18].scan(/[AU]/i).size
+      score += au_number
+
+      # criteria III
+      # NotImpremented: Tm
+
+      # criteria IV
+      score += 1 if seq19[18..18].match(/A/i)
+
+      # criteria V
+      score += 1 if seq19[2..2].match(/A/i)
+
+      # criteria VI
+      score += 1 if seq19[9..9].match(/[U]/i)
+
+      # criteria VII
+      score -= 1 if seq19[18..18].match(/[GC]/i)
+
+      # criteria VIII
+      score -= 1 if seq19[12..12].match(/G/i)
+
+      if score >= 6
+        return score
+      else
+        return false
+      end
     end
 
     # same as design('uitei').
@@ -254,6 +295,25 @@ end # module Bio
 
 = ChangeLog
 
+  2013/04/03 Yuki NAITO <y-naito at rnai.jp>
+  Modified siRNA design rules:
+
+  - Ui-Tei's rule:
+    - Restricted target length to 23 nt (21 nt plus 2 nt overhang)
+      for selecting functional siRNAs.
+    - Avoided contiguous GCs 10 nt or more. (not 9 nt or more)
+
+  - Reynolds' rule:
+    - Restricted target length to 23 nt (21 nt plus 2 nt overhang)
+      for selecting functional siRNAs.
+    - Reynolds' rule does not require to fulfill all the criteria
+      simultaneously. Total score of eight criteria is calculated
+      and used for the siRNA efficacy prediction. This change may
+      significantly alter an output.
+    - Returns total score of eight criteria for functional siRNA,
+      instead of returning 'true'.
+    - Returns 'false' for non-functional siRNA, as usual.
+
   2005/03/21 Itoshi NIKAIDO <itoshi.nikaido at nifty.com>
   Bio::SiRNA#ShRNA_designer method was changed design method.
 
diff --git a/lib/bio/version.rb b/lib/bio/version.rb
index fc40062..a0c0365 100644
--- a/lib/bio/version.rb
+++ b/lib/bio/version.rb
@@ -10,20 +10,19 @@
 module Bio
 
   # BioRuby version (Array containing Integer)
-  BIORUBY_VERSION = [1, 4, 3].extend(Comparable).freeze
+  BIORUBY_VERSION = [1, 5, 0].extend(Comparable).freeze
 
   # Extra version specifier (String or nil).
-  # Existance of the value indicates pre-release version or modified version.
+  # Existance of the value indicates development version.
   #
   # nil                 :: Release version.
-  # ".0000"..".4999"    :: Release version with patches.
-  # ".5000"             :: Development unstable version.
-  # ".5001"..".8999"    :: Pre-alpha version.
-  # "-alphaN" (N=0..99) :: Alpha version.
-  # "-preN"   (N=0..99) :: Pre-release test version.
-  # "-rcN"    (N=0..99) :: Release candidate version.
+  # "-dev"              :: Development version (with YYYYMMDD digits).
+  # ".20150630"         :: Development version (specify the date digits).
   #
-  BIORUBY_EXTRA_VERSION = ".0001"
+  # By default, if the third digit (teeny) of BIORUBY_VERSION is 0,
+  # the version is regarded as a development version.
+  BIORUBY_EXTRA_VERSION =
+    nil #(BIORUBY_VERSION[2] == 0) ? "-dev" : nil
 
   # Version identifier, including extra version string (String)
   # Unlike BIORUBY_VERSION, it is not comparable.
diff --git a/metadata.yml b/metadata.yml
index 99d1b72..432b583 100644
--- a/metadata.yml
+++ b/metadata.yml
@@ -1,1455 +1,681 @@
 --- !ruby/object:Gem::Specification
-name: !binary |-
-  Ymlv
+name: bio
 version: !ruby/object:Gem::Version
-  version: !binary |-
-    MS40LjMuMDAwMQ==
-  prerelease: 
+  version: 1.5.0
 platform: ruby
 authors:
-- !binary |-
-  QmlvUnVieSBwcm9qZWN0
+- BioRuby project
 autorequire: 
-bindir: !binary |-
-  Ymlu
+bindir: bin
 cert_chain: []
-date: 2013-05-24 00:00:00.000000000 Z
+date: 2015-07-01 00:00:00.000000000 Z
 dependencies: []
-description: !binary |-
-  QmlvUnVieSBpcyBhIGxpYnJhcnkgZm9yIGJpb2luZm9ybWF0aWNzIChiaW9s
-  b2d5ICsgaW5mb3JtYXRpb24gc2NpZW5jZSku
-email: !binary |-
-  c3RhZmZAYmlvcnVieS5vcmc=
+description: BioRuby is a library for bioinformatics (biology + information science).
+email: staff at bioruby.org
 executables:
-- !binary |-
-  YmlvcnVieQ==
-- !binary |-
-  YnJfYmlvZmV0Y2gucmI=
-- !binary |-
-  YnJfYmlvZmxhdC5yYg==
-- !binary |-
-  YnJfYmlvZ2V0c2VxLnJi
-- !binary |-
-  YnJfcG1mZXRjaC5yYg==
+- bioruby
+- br_biofetch.rb
+- br_bioflat.rb
+- br_biogetseq.rb
+- br_pmfetch.rb
 extensions: []
 extra_rdoc_files:
-- !binary |-
-  S05PV05fSVNTVUVTLnJkb2M=
-- !binary |-
-  UkVBRE1FLnJkb2M=
-- !binary |-
-  UkVBRE1FX0RFVi5yZG9j
-- !binary |-
-  UkVMRUFTRV9OT1RFUy5yZG9j
-- !binary |-
-  ZG9jL0NoYW5nZXMtMS4zLnJkb2M=
-- !binary |-
-  ZG9jL1JFTEVBU0VfTk9URVMtMS40LjAucmRvYw==
-- !binary |-
-  ZG9jL1JFTEVBU0VfTk9URVMtMS40LjEucmRvYw==
-- !binary |-
-  ZG9jL1JFTEVBU0VfTk9URVMtMS40LjIucmRvYw==
+- KNOWN_ISSUES.rdoc
+- README.rdoc
+- README_DEV.rdoc
+- RELEASE_NOTES.rdoc
+- doc/Changes-1.3.rdoc
+- doc/RELEASE_NOTES-1.4.0.rdoc
+- doc/RELEASE_NOTES-1.4.1.rdoc
+- doc/RELEASE_NOTES-1.4.2.rdoc
+- doc/RELEASE_NOTES-1.4.3.rdoc
 files:
-- !binary |-
-  LnRyYXZpcy55bWw=
-- !binary |-
-  Q09QWUlORw==
-- !binary |-
-  Q09QWUlORy5qYQ==
-- !binary |-
-  Q2hhbmdlTG9n
-- !binary |-
-  R1BM
-- !binary |-
-  S05PV05fSVNTVUVTLnJkb2M=
-- !binary |-
-  TEVHQUw=
-- !binary |-
-  TEdQTA==
-- !binary |-
-  UkVBRE1FLnJkb2M=
-- !binary |-
-  UkVBRE1FX0RFVi5yZG9j
-- !binary |-
-  UkVMRUFTRV9OT1RFUy5yZG9j
-- !binary |-
-  UmFrZWZpbGU=
-- !binary |-
-  YmluL2Jpb3J1Ynk=
-- !binary |-
-  YmluL2JyX2Jpb2ZldGNoLnJi
-- !binary |-
-  YmluL2JyX2Jpb2ZsYXQucmI=
-- !binary |-
-  YmluL2JyX2Jpb2dldHNlcS5yYg==
-- !binary |-
-  YmluL2JyX3BtZmV0Y2gucmI=
-- !binary |-
-  YmlvcnVieS5nZW1zcGVj
-- !binary |-
-  YmlvcnVieS5nZW1zcGVjLmVyYg==
-- !binary |-
-  ZG9jL0NoYW5nZUxvZy1iZWZvcmUtMS4zLjE=
-- !binary |-
-  ZG9jL0NoYW5nZUxvZy1iZWZvcmUtMS40LjI=
-- !binary |-
-  ZG9jL0NoYW5nZXMtMC43LnJk
-- !binary |-
-  ZG9jL0NoYW5nZXMtMS4zLnJkb2M=
-- !binary |-
-  ZG9jL0tFR0dfQVBJLnJk
-- !binary |-
-  ZG9jL0tFR0dfQVBJLnJkLmph
-- !binary |-
-  ZG9jL1JFTEVBU0VfTk9URVMtMS40LjAucmRvYw==
-- !binary |-
-  ZG9jL1JFTEVBU0VfTk9URVMtMS40LjEucmRvYw==
-- !binary |-
-  ZG9jL1JFTEVBU0VfTk9URVMtMS40LjIucmRvYw==
-- !binary |-
-  ZG9jL1R1dG9yaWFsLnJk
-- !binary |-
-  ZG9jL1R1dG9yaWFsLnJkLmh0bWw=
-- !binary |-
-  ZG9jL1R1dG9yaWFsLnJkLmph
-- !binary |-
-  ZG9jL1R1dG9yaWFsLnJkLmphLmh0bWw=
-- !binary |-
-  ZG9jL2Jpb3J1YnkuY3Nz
-- !binary |-
-  ZXRjL2Jpb2luZm9ybWF0aWNzL3NlcWRhdGFiYXNlLmluaQ==
-- !binary |-
-  ZXh0Y29uZi5yYg==
-- !binary |-
-  Z2VtZmlsZXMvR2VtZmlsZS50cmF2aXMtanJ1YnkxLjg=
-- !binary |-
-  Z2VtZmlsZXMvR2VtZmlsZS50cmF2aXMtanJ1YnkxLjk=
-- !binary |-
-  Z2VtZmlsZXMvR2VtZmlsZS50cmF2aXMtcnVieTEuOA==
-- !binary |-
-  Z2VtZmlsZXMvR2VtZmlsZS50cmF2aXMtcnVieTEuOQ==
-- !binary |-
-  Z2VtZmlsZXMvbW9kaWZ5LUdlbWZpbGUucmI=
-- !binary |-
-  Z2VtZmlsZXMvcHJlcGFyZS1nZW1zcGVjLnJi
-- !binary |-
-  bGliL2Jpby5yYg==
-- !binary |-
-  bGliL2Jpby9hbGlnbm1lbnQucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsMnNlcS9yZXBvcnQucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L2RkYmoucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L2Zvcm1hdDAucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L2Zvcm1hdDgucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L2dlbm9tZW5ldC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L25jYmlvcHRpb25zLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L3JlbW90ZS5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L3JleG1sLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L3Jwc2JsYXN0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L3d1Ymxhc3QucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXN0L3htbHBhcnNlci5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL2JsYXQvcmVwb3J0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2NsdXN0YWx3LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2NsdXN0YWx3L3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL2VtYm9zcy5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL2Zhc3RhLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2Zhc3RhL2Zvcm1hdDEwLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2djZy9tc2YucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL2djZy9zZXEucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL2dlbnNjYW4vcmVwb3J0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2htbWVyLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL2htbWVyL3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL2lwcnNjYW4vcmVwb3J0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL21hZmZ0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL21hZmZ0L3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL21lbWUvbWFzdC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL21lbWUvbWFzdC9yZXBvcnQucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL21lbWUvbW90aWYucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL211c2NsZS5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwvYmFzZW1sLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwvYmFzZW1sL3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwvY29kZW1sLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwvY29kZW1sL3JhdGVzLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwvY29kZW1sL3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwvY29tbW9uLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwvY29tbW9uX3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwveW4wMC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL3BhbWwveW4wMC9yZXBvcnQucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL3BoeWxpcC9hbGlnbm1lbnQucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL3BoeWxpcC9kaXN0YW5jZV9tYXRyaXgucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL3Byb2Jjb25zLnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL3Bzb3J0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL3Bzb3J0L3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL3B0czEucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL3NpbTQucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL3NpbTQvcmVwb3J0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL3Nvc3VpL3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9hcHBsL3NwaWRleS9yZXBvcnQucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL3RhcmdldHAvcmVwb3J0LnJi
-- !binary |-
-  bGliL2Jpby9hcHBsL3Rjb2ZmZWUucmI=
-- !binary |-
-  bGliL2Jpby9hcHBsL3RtaG1tL3JlcG9ydC5yYg==
-- !binary |-
-  bGliL2Jpby9jb21tYW5kLnJi
-- !binary |-
-  bGliL2Jpby9jb21wYXQvZmVhdHVyZXMucmI=
-- !binary |-
-  bGliL2Jpby9jb21wYXQvcmVmZXJlbmNlcy5yYg==
-- !binary |-
-  bGliL2Jpby9kYXRhL2FhLnJi
-- !binary |-
-  bGliL2Jpby9kYXRhL2NvZG9udGFibGUucmI=
-- !binary |-
-  bGliL2Jpby9kYXRhL25hLnJi
-- !binary |-
-  bGliL2Jpby9kYi5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9hYWluZGV4LnJi
-- !binary |-
-  bGliL2Jpby9kYi9iaW9zcWwvYmlvc3FsX3RvX2Jpb3NlcXVlbmNlLnJi
-- !binary |-
-  bGliL2Jpby9kYi9iaW9zcWwvc2VxdWVuY2UucmI=
-- !binary |-
-  bGliL2Jpby9kYi9lbWJsL2NvbW1vbi5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9lbWJsL2VtYmwucmI=
-- !binary |-
-  bGliL2Jpby9kYi9lbWJsL2VtYmxfdG9fYmlvc2VxdWVuY2UucmI=
-- !binary |-
-  bGliL2Jpby9kYi9lbWJsL2Zvcm1hdF9lbWJsLnJi
-- !binary |-
-  bGliL2Jpby9kYi9lbWJsL3NwdHIucmI=
-- !binary |-
-  bGliL2Jpby9kYi9lbWJsL3N3aXNzcHJvdC5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9lbWJsL3RyZW1ibC5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9lbWJsL3VuaXByb3QucmI=
-- !binary |-
-  bGliL2Jpby9kYi9mYW50b20ucmI=
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0YS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0YS9kZWZsaW5lLnJi
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0YS9mYXN0YV90b19iaW9zZXF1ZW5jZS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0YS9mb3JtYXRfZmFzdGEucmI=
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0YS9mb3JtYXRfcXVhbC5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0YS9xdWFsLnJi
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0YS9xdWFsX3RvX2Jpb3NlcXVlbmNlLnJi
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0cS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0cS9mYXN0cV90b19iaW9zZXF1ZW5jZS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9mYXN0cS9mb3JtYXRfZmFzdHEucmI=
-- !binary |-
-  bGliL2Jpby9kYi9nZW5iYW5rL2NvbW1vbi5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9nZW5iYW5rL2RkYmoucmI=
-- !binary |-
-  bGliL2Jpby9kYi9nZW5iYW5rL2Zvcm1hdF9nZW5iYW5rLnJi
-- !binary |-
-  bGliL2Jpby9kYi9nZW5iYW5rL2dlbmJhbmsucmI=
-- !binary |-
-  bGliL2Jpby9kYi9nZW5iYW5rL2dlbmJhbmtfdG9fYmlvc2VxdWVuY2UucmI=
-- !binary |-
-  bGliL2Jpby9kYi9nZW5iYW5rL2dlbnBlcHQucmI=
-- !binary |-
-  bGliL2Jpby9kYi9nZW5iYW5rL3JlZnNlcS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9nZmYucmI=
-- !binary |-
-  bGliL2Jpby9kYi9nby5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2JyaXRlLnJi
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2NvbW1vbi5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2NvbXBvdW5kLnJi
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2RydWcucmI=
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2VuenltZS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2V4cHJlc3Npb24ucmI=
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2dlbmVzLnJi
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2dlbm9tZS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2dseWNhbi5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2tlZ2d0YWIucmI=
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL2tnbWwucmI=
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL21vZHVsZS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL29ydGhvbG9neS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL3BhdGh3YXkucmI=
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL3JlYWN0aW9uLnJi
-- !binary |-
-  bGliL2Jpby9kYi9rZWdnL3RheG9ub215LnJi
-- !binary |-
-  bGliL2Jpby9kYi9sYXNlcmdlbmUucmI=
-- !binary |-
-  bGliL2Jpby9kYi9saXRkYi5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9tZWRsaW5lLnJi
-- !binary |-
-  bGliL2Jpby9kYi9uYnJmLnJi
-- !binary |-
-  bGliL2Jpby9kYi9uZXdpY2sucmI=
-- !binary |-
-  bGliL2Jpby9kYi9uZXh1cy5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9wZGIucmI=
-- !binary |-
-  bGliL2Jpby9kYi9wZGIvYXRvbS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9wZGIvY2hhaW4ucmI=
-- !binary |-
-  bGliL2Jpby9kYi9wZGIvY2hlbWljYWxjb21wb25lbnQucmI=
-- !binary |-
-  bGliL2Jpby9kYi9wZGIvbW9kZWwucmI=
-- !binary |-
-  bGliL2Jpby9kYi9wZGIvcGRiLnJi
-- !binary |-
-  bGliL2Jpby9kYi9wZGIvcmVzaWR1ZS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9wZGIvdXRpbHMucmI=
-- !binary |-
-  bGliL2Jpby9kYi9waHlsb3htbC9waHlsb3htbC54c2Q=
-- !binary |-
-  bGliL2Jpby9kYi9waHlsb3htbC9waHlsb3htbF9lbGVtZW50cy5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9waHlsb3htbC9waHlsb3htbF9wYXJzZXIucmI=
-- !binary |-
-  bGliL2Jpby9kYi9waHlsb3htbC9waHlsb3htbF93cml0ZXIucmI=
-- !binary |-
-  bGliL2Jpby9kYi9wcm9zaXRlLnJi
-- !binary |-
-  bGliL2Jpby9kYi9yZWJhc2UucmI=
-- !binary |-
-  bGliL2Jpby9kYi9zYW5nZXJfY2hyb21hdG9ncmFtL2FiaWYucmI=
-- !binary |-
-  bGliL2Jpby9kYi9zYW5nZXJfY2hyb21hdG9ncmFtL2Nocm9tYXRvZ3JhbS5y
-  Yg==
-- !binary |-
-  bGliL2Jpby9kYi9zYW5nZXJfY2hyb21hdG9ncmFtL2Nocm9tYXRvZ3JhbV90
-  b19iaW9zZXF1ZW5jZS5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9zYW5nZXJfY2hyb21hdG9ncmFtL3NjZi5yYg==
-- !binary |-
-  bGliL2Jpby9kYi9zb2Z0LnJi
-- !binary |-
-  bGliL2Jpby9kYi90cmFuc2ZhYy5yYg==
-- !binary |-
-  bGliL2Jpby9mZWF0dXJlLnJi
-- !binary |-
-  bGliL2Jpby9pby9iaW9zcWwvYXItYmlvc3FsLnJi
-- !binary |-
-  bGliL2Jpby9pby9iaW9zcWwvYmlvc3FsLnJi
-- !binary |-
-  bGliL2Jpby9pby9iaW9zcWwvY29uZmlnL2RhdGFiYXNlLnltbA==
-- !binary |-
-  bGliL2Jpby9pby9kYXMucmI=
-- !binary |-
-  bGliL2Jpby9pby9kYmdldC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9kZGJqcmVzdC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9kZGJqeG1sLnJi
-- !binary |-
-  bGliL2Jpby9pby9lYmlzb2FwLnJi
-- !binary |-
-  bGliL2Jpby9pby9lbnNlbWJsLnJi
-- !binary |-
-  bGliL2Jpby9pby9mYXN0YWNtZC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9mZXRjaC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9mbGF0ZmlsZS5yYg==
-- !binary |-
-  bGliL2Jpby9pby9mbGF0ZmlsZS9hdXRvZGV0ZWN0aW9uLnJi
-- !binary |-
-  bGliL2Jpby9pby9mbGF0ZmlsZS9iZGIucmI=
-- !binary |-
-  bGliL2Jpby9pby9mbGF0ZmlsZS9idWZmZXIucmI=
-- !binary |-
-  bGliL2Jpby9pby9mbGF0ZmlsZS9pbmRleC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9mbGF0ZmlsZS9pbmRleGVyLnJi
-- !binary |-
-  bGliL2Jpby9pby9mbGF0ZmlsZS9zcGxpdHRlci5yYg==
-- !binary |-
-  bGliL2Jpby9pby9oaWdldC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9oaW52LnJi
-- !binary |-
-  bGliL2Jpby9pby9rZWdnYXBpLnJi
-- !binary |-
-  bGliL2Jpby9pby9uY2JpcmVzdC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9uY2Jpc29hcC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9wdWJtZWQucmI=
-- !binary |-
-  bGliL2Jpby9pby9yZWdpc3RyeS5yYg==
-- !binary |-
-  bGliL2Jpby9pby9zb2Fwd3NkbC5yYg==
-- !binary |-
-  bGliL2Jpby9pby9zcWwucmI=
-- !binary |-
-  bGliL2Jpby9pby90b2dvd3MucmI=
-- !binary |-
-  bGliL2Jpby9sb2NhdGlvbi5yYg==
-- !binary |-
-  bGliL2Jpby9tYXAucmI=
-- !binary |-
-  bGliL2Jpby9wYXRod2F5LnJi
-- !binary |-
-  bGliL2Jpby9yZWZlcmVuY2UucmI=
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS5yYg==
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9hYS5yYg==
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9hZGFwdGVyLnJi
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9jb21tb24ucmI=
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9jb21wYXQucmI=
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9kYmxpbmsucmI=
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9mb3JtYXQucmI=
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9mb3JtYXRfcmF3LnJi
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9nZW5lcmljLnJi
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9uYS5yYg==
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9xdWFsaXR5X3Njb3JlLnJi
-- !binary |-
-  bGliL2Jpby9zZXF1ZW5jZS9zZXF1ZW5jZV9tYXNrZXIucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC5yYg==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9jb3JlLnJi
-- !binary |-
-  bGliL2Jpby9zaGVsbC9kZW1vLnJi
-- !binary |-
-  bGliL2Jpby9zaGVsbC9pbnRlcmZhY2UucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9pcmIucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9vYmplY3QucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vYmxhc3QucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vY29kb24ucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vZGFzLnJi
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vZW1ib3NzLnJi
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vZW50cnkucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vZmxhdGZpbGUucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4va2VnZ2FwaS5yYg==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vbWlkaS5yYg==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vbmNiaXJlc3QucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vb2JkYS5yYg==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vcHNvcnQucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vc2VxLnJi
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vc29hcC5yYg==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9wbHVnaW4vdG9nb3dzLnJi
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS9iaW9ydWJ5X2dlbmVyYXRvci5yYg==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvX2NsYXNzZXMucmh0bWw=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvX2xvZy5yaHRtbA==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvX21ldGhvZHMucmh0bWw=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvX21vZHVsZXMucmh0bWw=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvX3ZhcmlhYmxlcy5yaHRtbA==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvYmlvcnVieS1iZy5naWY=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvYmlvcnVieS1nZW0ucG5n
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvYmlvcnVieS1saW5rLmdpZg==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvYmlvcnVieS5jc3M=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvYmlvcnVieS5yaHRtbA==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvYmlvcnVieV9jb250cm9sbGVy
-  LnJi
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvYmlvcnVieV9oZWxwZXIucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvY29tbWFuZHMucmh0bWw=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvaGlzdG9yeS5yaHRtbA==
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvaW5kZXgucmh0bWw=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9yYWlscy92ZW5kb3IvcGx1Z2lucy9iaW9ydWJ5L2dl
-  bmVyYXRvcnMvYmlvcnVieS90ZW1wbGF0ZXMvc3Bpbm5lci5naWY=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9zY3JpcHQucmI=
-- !binary |-
-  bGliL2Jpby9zaGVsbC9zZXR1cC5yYg==
-- !binary |-
-  bGliL2Jpby9zaGVsbC93ZWIucmI=
-- !binary |-
-  bGliL2Jpby90cmVlLnJi
-- !binary |-
-  bGliL2Jpby90cmVlL291dHB1dC5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS9idXJpZWQucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS9oZWxpeC5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS9oeWRyb3BhdGh5LnJi
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS9udWNsZW90aWRlLnJi
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS9zdHJhbmQucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS90YXlsb3IucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS90dXJuLnJi
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbG9yX3NjaGVtZS96YXBwby5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL2NvbnRpbmdlbmN5X3RhYmxlLnJi
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9hbmFseXNpcy5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9hbmFseXNpc19iYXNp
-  Yy5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9jdXRfc3ltYm9sLnJi
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kZW5zZV9pbnRfYXJy
-  YXkucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVfc3RyYW5k
-  ZWQucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVfc3RyYW5k
-  ZWQvYWxpZ25lZF9zdHJhbmRzLnJi
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVfc3RyYW5k
-  ZWQvY3V0X2xvY2F0aW9uX3BhaXIucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVfc3RyYW5k
-  ZWQvY3V0X2xvY2F0aW9uX3BhaXJfaW5fZW56eW1lX25vdGF0aW9uLnJi
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVfc3RyYW5k
-  ZWQvY3V0X2xvY2F0aW9ucy5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVfc3RyYW5k
-  ZWQvY3V0X2xvY2F0aW9uc19pbl9lbnp5bWVfbm90YXRpb24ucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9lbnp5bWVzLnlhbWw=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9yYW5nZS9jdXRfcmFu
-  Z2UucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9yYW5nZS9jdXRfcmFu
-  Z2VzLnJi
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9yYW5nZS9ob3Jpem9u
-  dGFsX2N1dF9yYW5nZS5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9yYW5nZS9zZXF1ZW5j
-  ZV9yYW5nZS5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9yYW5nZS9zZXF1ZW5j
-  ZV9yYW5nZS9jYWxjdWxhdGVkX2N1dHMucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9yYW5nZS9zZXF1ZW5j
-  ZV9yYW5nZS9mcmFnbWVudC5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9yYW5nZS9zZXF1ZW5j
-  ZV9yYW5nZS9mcmFnbWVudHMucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9yYW5nZS92ZXJ0aWNh
-  bF9jdXRfcmFuZ2UucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9zaW5nbGVfc3RyYW5k
-  LnJi
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9zaW5nbGVfc3RyYW5k
-  L2N1dF9sb2NhdGlvbnNfaW5fZW56eW1lX25vdGF0aW9uLnJi
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9zaW5nbGVfc3RyYW5k
-  X2NvbXBsZW1lbnQucmI=
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9zb3J0ZWRfbnVtX2Fy
-  cmF5LnJi
-- !binary |-
-  bGliL2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9zdHJpbmdfZm9ybWF0
-  dGluZy5yYg==
-- !binary |-
-  bGliL2Jpby91dGlsL3Npcm5hLnJi
-- !binary |-
-  bGliL2Jpby92ZXJzaW9uLnJi
-- !binary |-
-  c2FtcGxlL2FueTJmYXN0YS5yYg==
-- !binary |-
-  c2FtcGxlL2Jpb2ZldGNoLnJi
-- !binary |-
-  c2FtcGxlL2NvbG9yX3NjaGVtZV9uYS5yYg==
-- !binary |-
-  c2FtcGxlL2RiZ2V0
-- !binary |-
-  c2FtcGxlL2RlbW9fYWFpbmRleC5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fYW1pbm9hY2lkLnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fYmwyc2VxX3JlcG9ydC5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fYmxhc3RfcmVwb3J0LnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fY29kb250YWJsZS5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fZGFzLnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fZGRianhtbC5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fZmFzdGFfcmVtb3RlLnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fZmFzdGFmb3JtYXQucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fZ2VuYmFuay5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fZ2Vuc2Nhbl9yZXBvcnQucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fZ2ZmMS5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fZ28ucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9faG1tZXJfcmVwb3J0LnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fa2VnZ19jb21wb3VuZC5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fa2VnZ19kcnVnLnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fa2VnZ19nZW5vbWUucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fa2VnZ19nbHljYW4ucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fa2VnZ19vcnRob2xvZ3kucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fa2VnZ19yZWFjdGlvbi5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fa2VnZ190YXhvbm9teS5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fa2VnZ2FwaS5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fbGl0ZGIucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fbG9jYXRpb25zLnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fbmNiaV9yZXN0LnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fbnVjbGVpY2FjaWQucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fcGF0aHdheS5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fcHJvc2l0ZS5yYg==
-- !binary |-
-  c2FtcGxlL2RlbW9fcHNvcnQucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fcHNvcnRfcmVwb3J0LnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fcHVibWVkLnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fc2VxdWVuY2UucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fc2lybmEucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fc29zdWlfcmVwb3J0LnJi
-- !binary |-
-  c2FtcGxlL2RlbW9fdGFyZ2V0cF9yZXBvcnQucmI=
-- !binary |-
-  c2FtcGxlL2RlbW9fdG1obW1fcmVwb3J0LnJi
-- !binary |-
-  c2FtcGxlL2VuenltZXMucmI=
-- !binary |-
-  c2FtcGxlL2Zhc3RhMnRhYi5yYg==
-- !binary |-
-  c2FtcGxlL2Zhc3RhZ3JlcC5yYg==
-- !binary |-
-  c2FtcGxlL2Zhc3Rhc29ydC5yYg==
-- !binary |-
-  c2FtcGxlL2ZzcGxpdC5yYg==
-- !binary |-
-  c2FtcGxlL2diMmZhc3RhLnJi
-- !binary |-
-  c2FtcGxlL2diMnRhYi5yYg==
-- !binary |-
-  c2FtcGxlL2didGFiMm15c3FsLnJi
-- !binary |-
-  c2FtcGxlL2dlbmVzMm51Yy5yYg==
-- !binary |-
-  c2FtcGxlL2dlbmVzMnBlcC5yYg==
-- !binary |-
-  c2FtcGxlL2dlbmVzMnRhYi5yYg==
-- !binary |-
-  c2FtcGxlL2dlbm9tZTJyYi5yYg==
-- !binary |-
-  c2FtcGxlL2dlbm9tZTJ0YWIucmI=
-- !binary |-
-  c2FtcGxlL2dvc2xpbS5yYg==
-- !binary |-
-  c2FtcGxlL2d0MmZhc3RhLnJi
-- !binary |-
-  c2FtcGxlL25hMmFhLnJi
-- !binary |-
-  c2FtcGxlL3BtZmV0Y2gucmI=
-- !binary |-
-  c2FtcGxlL3Btc2VhcmNoLnJi
-- !binary |-
-  c2FtcGxlL3Bzb3J0cGxvdF9odG1sLnJi
-- !binary |-
-  c2FtcGxlL3NlcWRhdGFiYXNlLmluaQ==
-- !binary |-
-  c2FtcGxlL3NzZWFyY2gydGFiLnJi
-- !binary |-
-  c2FtcGxlL3RkaWFyeS5yYg==
-- !binary |-
-  c2FtcGxlL3Rlc3RfcGh5bG94bWxfYmlnLnJi
-- !binary |-
-  c2FtcGxlL3Rlc3RfcmVzdHJpY3Rpb25fZW56eW1lX2xvbmcucmI=
-- !binary |-
-  c2FtcGxlL3RmYXN0eDJ0YWIucmI=
-- !binary |-
-  c2FtcGxlL3ZzLWdlbmVzLnJi
-- !binary |-
-  c2V0dXAucmI=
-- !binary |-
-  dGVzdC9iaW9ydWJ5X3Rlc3RfaGVscGVyLnJi
-- !binary |-
-  dGVzdC9kYXRhL0hNTUVSL2htbXBmYW0ub3V0
-- !binary |-
-  dGVzdC9kYXRhL0hNTUVSL2htbXNlYXJjaC5vdXQ=
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvMS4xLjEuMS5lbnp5bWU=
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvQzAwMDI1LmNvbXBvdW5k
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvRDAwMDYzLmRydWc=
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvRzAwMDI0LmdseWNhbg==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvRzAxMzY2LmdseWNhbg==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvSzAyMzM4Lm9ydGhvbG9neQ==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvTTAwMTE4Lm1vZHVsZQ==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvUjAwMDA2LnJlYWN0aW9u
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvVDAwMDA1Lmdlbm9tZQ==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvVDAwMDcwLmdlbm9tZQ==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvYjA1MjkuZ2VuZQ==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvZWMwMDA3Mi5wYXRod2F5
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvaHNhMDA3OTAucGF0aHdheQ==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cva28wMDMxMi5wYXRod2F5
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvbWFwMDAwMzAucGF0aHdheQ==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvbWFwMDAwNTIucGF0aHdheQ==
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvcm4wMDI1MC5wYXRod2F5
-- !binary |-
-  dGVzdC9kYXRhL0tFR0cvdGVzdC5rZ21s
-- !binary |-
-  dGVzdC9kYXRhL1NPU1VJL3NhbXBsZS5yZXBvcnQ=
-- !binary |-
-  dGVzdC9kYXRhL1RNSE1NL3NhbXBsZS5yZXBvcnQ=
-- !binary |-
-  dGVzdC9kYXRhL2FhaW5kZXgvREFZTTc4MDMwMQ==
-- !binary |-
-  dGVzdC9kYXRhL2FhaW5kZXgvUFJBTTkwMDEwMg==
-- !binary |-
-  dGVzdC9kYXRhL2JsMnNlcS9jZDhhX2NkOGJfYmxhc3RwLmJsMnNlcQ==
-- !binary |-
-  dGVzdC9kYXRhL2JsMnNlcS9jZDhhX3A1M19lLTVibGFzdHAuYmwyc2Vx
-- !binary |-
-  dGVzdC9kYXRhL2JsYXN0LzIuMi4xNS5ibGFzdHAubTc=
-- !binary |-
-  dGVzdC9kYXRhL2JsYXN0L2IwMDAyLmZhYQ==
-- !binary |-
-  dGVzdC9kYXRhL2JsYXN0L2IwMDAyLmZhYS5tMA==
-- !binary |-
-  dGVzdC9kYXRhL2JsYXN0L2IwMDAyLmZhYS5tNw==
-- !binary |-
-  dGVzdC9kYXRhL2JsYXN0L2IwMDAyLmZhYS5tOA==
-- !binary |-
-  dGVzdC9kYXRhL2JsYXN0L2JsYXN0cC1tdWx0aS5tNw==
-- !binary |-
-  dGVzdC9kYXRhL2NsdXN0YWx3L2V4YW1wbGUxLmFsbg==
-- !binary |-
-  dGVzdC9kYXRhL2NvbW1hbmQvZWNob2FyZzIuYmF0
-- !binary |-
-  dGVzdC9kYXRhL2NvbW1hbmQvZWNob2FyZzIuc2g=
-- !binary |-
-  dGVzdC9kYXRhL2VtYmwvQUIwOTA3MTYuZW1ibA==
-- !binary |-
-  dGVzdC9kYXRhL2VtYmwvQUIwOTA3MTYuZW1ibC5yZWw4OQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RhL0VGVFVfQkFDU1UuZmFzdGE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RhL2V4YW1wbGUxLnR4dA==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RhL2V4YW1wbGUyLnR4dA==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL1JFQURNRS50eHQ=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX2RpZmZfaWRzLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX2RvdWJsZV9xdWFsLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX2RvdWJsZV9zZXEuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX2xvbmdfcXVhbC5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX25vX3F1YWwuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3F1YWxfZGVsLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3F1YWxfZXNjYXBlLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3F1YWxfbnVsbC5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3F1YWxfc3BhY2UuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3F1YWxfdGFiLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3F1YWxfdW5pdF9zZXAuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3F1YWxfdnRhYi5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3Nob3J0X3F1YWwuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3NwYWNlcy5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3RhYnMuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3RydW5jX2F0X3BsdXMuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3RydW5jX2F0X3F1YWwuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3RydW5jX2F0X3NlcS5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3RydW5jX2luX3BsdXMuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3RydW5jX2luX3F1YWwuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3RydW5jX2luX3NlcS5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2Vycm9yX3RydW5jX2luX3RpdGxlLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2lsbHVtaW5hX2Z1bGxfcmFuZ2VfYXNfaWxsdW1p
-  bmEuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2lsbHVtaW5hX2Z1bGxfcmFuZ2VfYXNfc2FuZ2Vy
-  LmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2lsbHVtaW5hX2Z1bGxfcmFuZ2VfYXNfc29sZXhh
-  LmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2lsbHVtaW5hX2Z1bGxfcmFuZ2Vfb3JpZ2luYWxf
-  aWxsdW1pbmEuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2xvbmdyZWFkc19hc19pbGx1bWluYS5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2xvbmdyZWFkc19hc19zYW5nZXIuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2xvbmdyZWFkc19hc19zb2xleGEuZmFzdHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL2xvbmdyZWFkc19vcmlnaW5hbF9zYW5nZXIuZmFz
-  dHE=
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL21pc2NfZG5hX2FzX2lsbHVtaW5hLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL21pc2NfZG5hX2FzX3Nhbmdlci5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL21pc2NfZG5hX2FzX3NvbGV4YS5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL21pc2NfZG5hX29yaWdpbmFsX3Nhbmdlci5mYXN0
-  cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL21pc2Nfcm5hX2FzX2lsbHVtaW5hLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL21pc2Nfcm5hX2FzX3Nhbmdlci5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL21pc2Nfcm5hX2FzX3NvbGV4YS5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL21pc2Nfcm5hX29yaWdpbmFsX3Nhbmdlci5mYXN0
-  cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3Nhbmdlcl9mdWxsX3JhbmdlX2FzX2lsbHVtaW5h
-  LmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3Nhbmdlcl9mdWxsX3JhbmdlX2FzX3Nhbmdlci5m
-  YXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3Nhbmdlcl9mdWxsX3JhbmdlX2FzX3NvbGV4YS5m
-  YXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3Nhbmdlcl9mdWxsX3JhbmdlX29yaWdpbmFsX3Nh
-  bmdlci5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3NvbGV4YV9mdWxsX3JhbmdlX2FzX2lsbHVtaW5h
-  LmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3NvbGV4YV9mdWxsX3JhbmdlX2FzX3Nhbmdlci5m
-  YXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3NvbGV4YV9mdWxsX3JhbmdlX2FzX3NvbGV4YS5m
-  YXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3NvbGV4YV9mdWxsX3JhbmdlX29yaWdpbmFsX3Nv
-  bGV4YS5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3dyYXBwaW5nX2FzX2lsbHVtaW5hLmZhc3Rx
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3dyYXBwaW5nX2FzX3Nhbmdlci5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3dyYXBwaW5nX2FzX3NvbGV4YS5mYXN0cQ==
-- !binary |-
-  dGVzdC9kYXRhL2Zhc3RxL3dyYXBwaW5nX29yaWdpbmFsX3Nhbmdlci5mYXN0
-  cQ==
-- !binary |-
-  dGVzdC9kYXRhL2djZy9waWxldXAtYWEubXNm
-- !binary |-
-  dGVzdC9kYXRhL2dlbmJhbmsvQ0FBMzU5OTcuZ3A=
-- !binary |-
-  dGVzdC9kYXRhL2dlbmJhbmsvU0NVNDk4NDUuZ2I=
-- !binary |-
-  dGVzdC9kYXRhL2dlbnNjYW4vc2FtcGxlLnJlcG9ydA==
-- !binary |-
-  dGVzdC9kYXRhL2dvL3NlbGVjdGVkX2NvbXBvbmVudC5vbnRvbG9neQ==
-- !binary |-
-  dGVzdC9kYXRhL2dvL3NlbGVjdGVkX2dlbmVfYXNzb2NpYXRpb24uc2dk
-- !binary |-
-  dGVzdC9kYXRhL2dvL3NlbGVjdGVkX3dpa2lwZWRpYTJnbw==
-- !binary |-
-  dGVzdC9kYXRhL2lwcnNjYW4vbWVyZ2VkLnJhdw==
-- !binary |-
-  dGVzdC9kYXRhL2lwcnNjYW4vbWVyZ2VkLnR4dA==
-- !binary |-
-  dGVzdC9kYXRhL2xpdGRiLzE3MTcyMjYubGl0ZGI=
-- !binary |-
-  dGVzdC9kYXRhL21lZGxpbmUvMjAxNDYxNDhfbW9kaWZpZWQubWVkbGluZQ==
-- !binary |-
-  dGVzdC9kYXRhL21lbWUvZGI=
-- !binary |-
-  dGVzdC9kYXRhL21lbWUvbWFzdA==
-- !binary |-
-  dGVzdC9kYXRhL21lbWUvbWFzdC5vdXQ=
-- !binary |-
-  dGVzdC9kYXRhL21lbWUvbWVtZS5vdXQ=
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL2NvbnRyb2xfZmlsZS50eHQ=
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL21vZGVscy9hYS5hbG4=
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL21vZGVscy9hYS5kbmQ=
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL21vZGVscy9hYS5waA==
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL21vZGVscy9hbGlnbm1lbnQucGh5
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL21vZGVscy9yZXN1bHRzMC0zLnR4dA==
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL21vZGVscy9yZXN1bHRzNy04LnR4dA==
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL291dHB1dC50eHQ=
-- !binary |-
-  dGVzdC9kYXRhL3BhbWwvY29kZW1sL3JhdGVz
-- !binary |-
-  dGVzdC9kYXRhL3BoeWxveG1sL2FwYWYueG1s
-- !binary |-
-  dGVzdC9kYXRhL3BoeWxveG1sL2JjbF8yLnhtbA==
-- !binary |-
-  dGVzdC9kYXRhL3BoeWxveG1sL21hZGVfdXAueG1s
-- !binary |-
-  dGVzdC9kYXRhL3BoeWxveG1sL25jYmlfdGF4b25vbXlfbW9sbHVzY2Ffc2hv
-  cnQueG1s
-- !binary |-
-  dGVzdC9kYXRhL3BoeWxveG1sL3BoeWxveG1sX2V4YW1wbGVzLnhtbA==
-- !binary |-
-  dGVzdC9kYXRhL3Bpci9DUkFCX0FOQVBMLnBpcg==
-- !binary |-
-  dGVzdC9kYXRhL3Byb3NpdGUvcHJvc2l0ZS5kYXQ=
-- !binary |-
-  dGVzdC9kYXRhL3JlZnNlcS9ubV8xMjYzNTUuZW50cmV0
-- !binary |-
-  dGVzdC9kYXRhL3Jwc2JsYXN0L21pc2MucnBzYmxhc3Q=
-- !binary |-
-  dGVzdC9kYXRhL3Nhbmdlcl9jaHJvbWF0b2dyYW0vdGVzdF9jaHJvbWF0b2dy
-  YW1fYWJpZi5hYjE=
-- !binary |-
-  dGVzdC9kYXRhL3Nhbmdlcl9jaHJvbWF0b2dyYW0vdGVzdF9jaHJvbWF0b2dy
-  YW1fc2NmX3YyLnNjZg==
-- !binary |-
-  dGVzdC9kYXRhL3Nhbmdlcl9jaHJvbWF0b2dyYW0vdGVzdF9jaHJvbWF0b2dy
-  YW1fc2NmX3YzLnNjZg==
-- !binary |-
-  dGVzdC9kYXRhL3NpbTQvY29tcGxlbWVudC1BNC5zaW00
-- !binary |-
-  dGVzdC9kYXRhL3NpbTQvc2ltcGxlLUE0LnNpbTQ=
-- !binary |-
-  dGVzdC9kYXRhL3NpbTQvc2ltcGxlMi1BNC5zaW00
-- !binary |-
-  dGVzdC9kYXRhL3NvZnQvR0RTMTAwX3BhcnRpYWwuc29mdA==
-- !binary |-
-  dGVzdC9kYXRhL3NvZnQvR1NFMzQ1N19mYW1pbHlfcGFydGlhbC5zb2Z0
-- !binary |-
-  dGVzdC9kYXRhL3VuaXByb3QvcDUzX2h1bWFuLnVuaXByb3Q=
-- !binary |-
-  dGVzdC9mdW5jdGlvbmFsL2Jpby9zZXF1ZW5jZS90ZXN0X291dHB1dF9lbWJs
-  LnJi
-- !binary |-
-  dGVzdC9mdW5jdGlvbmFsL2Jpby90ZXN0X2NvbW1hbmQucmI=
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby9hcHBsL2JsYXN0L3Rlc3RfcmVtb3RlLnJi
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby9hcHBsL3Rlc3RfYmxhc3QucmI=
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby9hcHBsL3Rlc3RfcHRzMS5yYg==
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby9pby90ZXN0X2RkYmpyZXN0LnJi
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby9pby90ZXN0X2Vuc2VtYmwucmI=
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby9pby90ZXN0X3B1Ym1lZC5yYg==
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby9pby90ZXN0X3NvYXB3c2RsLnJi
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby9pby90ZXN0X3RvZ293cy5yYg==
-- !binary |-
-  dGVzdC9uZXR3b3JrL2Jpby90ZXN0X2NvbW1hbmQucmI=
-- !binary |-
-  dGVzdC9ydW5uZXIucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2JsMnNlcS90ZXN0X3JlcG9ydC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2JsYXN0L3Rlc3RfbmNiaW9wdGlvbnMucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2JsYXN0L3Rlc3RfcmVwb3J0LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2JsYXN0L3Rlc3RfcnBzYmxhc3QucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2NsdXN0YWx3L3Rlc3RfcmVwb3J0LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2djZy90ZXN0X21zZi5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2dlbnNjYW4vdGVzdF9yZXBvcnQucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2htbWVyL3Rlc3RfcmVwb3J0LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL2lwcnNjYW4vdGVzdF9yZXBvcnQucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL21hZmZ0L3Rlc3RfcmVwb3J0LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL21lbWUvbWFzdC90ZXN0X3JlcG9ydC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL21lbWUvdGVzdF9tYXN0LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL21lbWUvdGVzdF9tb3RpZi5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3BhbWwvY29kZW1sL3Rlc3RfcmF0ZXMucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3BhbWwvY29kZW1sL3Rlc3RfcmVwb3J0LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3BhbWwvY29kZW1sL3Rlc3RfcmVwb3J0X3Np
-  bmdsZS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3BhbWwvdGVzdF9jb2RlbWwucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3NpbTQvdGVzdF9yZXBvcnQucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3Nvc3VpL3Rlc3RfcmVwb3J0LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3RhcmdldHAvdGVzdF9yZXBvcnQucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3Rlc3RfYmxhc3QucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3Rlc3RfZmFzdGEucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3Rlc3RfcHRzMS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9hcHBsL3RtaG1tL3Rlc3RfcmVwb3J0LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYXRhL3Rlc3RfYWEucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYXRhL3Rlc3RfY29kb250YWJsZS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYXRhL3Rlc3RfbmEucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9iaW9zcWwvdGNfYmlvc3FsLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9iaW9zcWwvdHNfc3VpdGVfYmlvc3FsLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9lbWJsL3Rlc3RfY29tbW9uLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9lbWJsL3Rlc3RfZW1ibC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9lbWJsL3Rlc3RfZW1ibF9yZWw4OS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9lbWJsL3Rlc3RfZW1ibF90b19iaW9zZXEucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9lbWJsL3Rlc3Rfc3B0ci5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9lbWJsL3Rlc3RfdW5pcHJvdC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9lbWJsL3Rlc3RfdW5pcHJvdF9uZXdfcGFydC5y
-  Yg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9mYXN0YS90ZXN0X2RlZmxpbmUucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9mYXN0YS90ZXN0X2RlZmxpbmVfbWlzYy5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9mYXN0YS90ZXN0X2Zvcm1hdF9xdWFsLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9nZW5iYW5rL3Rlc3RfY29tbW9uLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9nZW5iYW5rL3Rlc3RfZ2VuYmFuay5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9nZW5iYW5rL3Rlc3RfZ2VucGVwdC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfY29tcG91bmQucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfZHJ1Zy5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfZW56eW1lLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfZ2VuZXMucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfZ2Vub21lLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfZ2x5Y2FuLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3Rfa2dtbC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfbW9kdWxlLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3Rfb3J0aG9sb2d5LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfcGF0aHdheS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9rZWdnL3Rlc3RfcmVhY3Rpb24ucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9wZGIvdGVzdF9wZGIucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9zYW5nZXJfY2hyb21hdG9ncmFtL3Rlc3RfYWJp
-  Zi5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi9zYW5nZXJfY2hyb21hdG9ncmFtL3Rlc3Rfc2Nm
-  LnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X2FhaW5kZXgucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X2Zhc3RhLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X2Zhc3RxLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X2dmZi5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X2dvLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X2xhc2VyZ2VuZS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X2xpdGRiLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X21lZGxpbmUucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X25icmYucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X25ld2ljay5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X25leHVzLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X3BoeWxveG1sLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X3BoeWxveG1sX3dyaXRlci5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X3Byb3NpdGUucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X3F1YWwucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X3JlYmFzZS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9kYi90ZXN0X3NvZnQucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby9mbGF0ZmlsZS90ZXN0X2F1dG9kZXRlY3Rpb24u
-  cmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby9mbGF0ZmlsZS90ZXN0X2J1ZmZlci5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby9mbGF0ZmlsZS90ZXN0X3NwbGl0dGVyLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby90ZXN0X2RkYmp4bWwucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby90ZXN0X2Vuc2VtYmwucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby90ZXN0X2Zhc3RhY21kLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby90ZXN0X2ZsYXRmaWxlLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby90ZXN0X3NvYXB3c2RsLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9pby90ZXN0X3RvZ293cy5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9zZXF1ZW5jZS90ZXN0X2FhLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9zZXF1ZW5jZS90ZXN0X2NvbW1vbi5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9zZXF1ZW5jZS90ZXN0X2NvbXBhdC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9zZXF1ZW5jZS90ZXN0X2RibGluay5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9zZXF1ZW5jZS90ZXN0X25hLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby9zZXF1ZW5jZS90ZXN0X3F1YWxpdHlfc2NvcmUucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby9zZXF1ZW5jZS90ZXN0X3NlcXVlbmNlX21hc2tlci5y
-  Yg==
-- !binary |-
-  dGVzdC91bml0L2Jpby9zaGVsbC9wbHVnaW4vdGVzdF9zZXEucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X2FsaWdubWVudC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X2NvbW1hbmQucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X2RiLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X2ZlYXR1cmUucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X2xvY2F0aW9uLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X21hcC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X3BhdGh3YXkucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X3JlZmVyZW5jZS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X3NlcXVlbmNlLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X3NoZWxsLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby90ZXN0X3RyZWUucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9hbmFseXNp
-  cy90ZXN0X2NhbGN1bGF0ZWRfY3V0cy5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9hbmFseXNp
-  cy90ZXN0X2N1dF9yYW5nZXMucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9hbmFseXNp
-  cy90ZXN0X3NlcXVlbmNlX3JhbmdlLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVf
-  c3RyYW5kZWQvdGVzdF9hbGlnbmVkX3N0cmFuZHMucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVf
-  c3RyYW5kZWQvdGVzdF9jdXRfbG9jYXRpb25fcGFpci5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVf
-  c3RyYW5kZWQvdGVzdF9jdXRfbG9jYXRpb25fcGFpcl9pbl9lbnp5bWVfbm90
-  YXRpb24ucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVf
-  c3RyYW5kZWQvdGVzdF9jdXRfbG9jYXRpb25zLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9kb3VibGVf
-  c3RyYW5kZWQvdGVzdF9jdXRfbG9jYXRpb25zX2luX2VuenltZV9ub3RhdGlv
-  bi5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS9zaW5nbGVf
-  c3RyYW5kL3Rlc3RfY3V0X2xvY2F0aW9uc19pbl9lbnp5bWVfbm90YXRpb24u
-  cmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS90ZXN0X2Fu
-  YWx5c2lzLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS90ZXN0X2N1
-  dF9zeW1ib2wucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS90ZXN0X2Rl
-  bnNlX2ludF9hcnJheS5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS90ZXN0X2Rv
-  dWJsZV9zdHJhbmRlZC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS90ZXN0X3Np
-  bmdsZV9zdHJhbmQucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS90ZXN0X3Np
-  bmdsZV9zdHJhbmRfY29tcGxlbWVudC5yYg==
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS90ZXN0X3Nv
-  cnRlZF9udW1fYXJyYXkucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Jlc3RyaWN0aW9uX2VuenltZS90ZXN0X3N0
-  cmluZ19mb3JtYXR0aW5nLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Rlc3RfY29sb3Jfc2NoZW1lLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Rlc3RfY29udGluZ2VuY3lfdGFibGUucmI=
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Rlc3RfcmVzdHJpY3Rpb25fZW56eW1lLnJi
-- !binary |-
-  dGVzdC91bml0L2Jpby91dGlsL3Rlc3Rfc2lybmEucmI=
-homepage: !binary |-
-  aHR0cDovL2Jpb3J1Ynkub3JnLw==
-licenses: []
+- ".travis.yml"
+- BSDL
+- COPYING
+- COPYING.ja
+- ChangeLog
+- GPL
+- KNOWN_ISSUES.rdoc
+- LEGAL
+- LGPL
+- README.rdoc
+- README_DEV.rdoc
+- RELEASE_NOTES.rdoc
+- Rakefile
+- bin/bioruby
+- bin/br_biofetch.rb
+- bin/br_bioflat.rb
+- bin/br_biogetseq.rb
+- bin/br_pmfetch.rb
+- bioruby.gemspec
+- bioruby.gemspec.erb
+- doc/ChangeLog-1.4.3
+- doc/ChangeLog-before-1.3.1
+- doc/ChangeLog-before-1.4.2
+- doc/Changes-0.7.rd
+- doc/Changes-1.3.rdoc
+- doc/RELEASE_NOTES-1.4.0.rdoc
+- doc/RELEASE_NOTES-1.4.1.rdoc
+- doc/RELEASE_NOTES-1.4.2.rdoc
+- doc/RELEASE_NOTES-1.4.3.rdoc
+- doc/Tutorial.rd
+- doc/Tutorial.rd.html
+- doc/Tutorial.rd.ja
+- doc/Tutorial.rd.ja.html
+- doc/bioruby.css
+- etc/bioinformatics/seqdatabase.ini
+- gemfiles/Gemfile.travis-jruby1.8
+- gemfiles/Gemfile.travis-jruby1.9
+- gemfiles/Gemfile.travis-rbx
+- gemfiles/Gemfile.travis-ruby1.8
+- gemfiles/Gemfile.travis-ruby1.9
+- gemfiles/Gemfile.travis-ruby2.2
+- gemfiles/modify-Gemfile.rb
+- gemfiles/prepare-gemspec.rb
+- lib/bio.rb
+- lib/bio/alignment.rb
+- lib/bio/appl/bl2seq/report.rb
+- lib/bio/appl/blast.rb
+- lib/bio/appl/blast/format0.rb
+- lib/bio/appl/blast/format8.rb
+- lib/bio/appl/blast/genomenet.rb
+- lib/bio/appl/blast/ncbioptions.rb
+- lib/bio/appl/blast/remote.rb
+- lib/bio/appl/blast/report.rb
+- lib/bio/appl/blast/rexml.rb
+- lib/bio/appl/blast/rpsblast.rb
+- lib/bio/appl/blast/wublast.rb
+- lib/bio/appl/blast/xmlparser.rb
+- lib/bio/appl/blat/report.rb
+- lib/bio/appl/clustalw.rb
+- lib/bio/appl/clustalw/report.rb
+- lib/bio/appl/emboss.rb
+- lib/bio/appl/fasta.rb
+- lib/bio/appl/fasta/format10.rb
+- lib/bio/appl/gcg/msf.rb
+- lib/bio/appl/gcg/seq.rb
+- lib/bio/appl/genscan/report.rb
+- lib/bio/appl/hmmer.rb
+- lib/bio/appl/hmmer/report.rb
+- lib/bio/appl/iprscan/report.rb
+- lib/bio/appl/mafft.rb
+- lib/bio/appl/mafft/report.rb
+- lib/bio/appl/meme/mast.rb
+- lib/bio/appl/meme/mast/report.rb
+- lib/bio/appl/meme/motif.rb
+- lib/bio/appl/muscle.rb
+- lib/bio/appl/paml/baseml.rb
+- lib/bio/appl/paml/baseml/report.rb
+- lib/bio/appl/paml/codeml.rb
+- lib/bio/appl/paml/codeml/rates.rb
+- lib/bio/appl/paml/codeml/report.rb
+- lib/bio/appl/paml/common.rb
+- lib/bio/appl/paml/common_report.rb
+- lib/bio/appl/paml/yn00.rb
+- lib/bio/appl/paml/yn00/report.rb
+- lib/bio/appl/phylip/alignment.rb
+- lib/bio/appl/phylip/distance_matrix.rb
+- lib/bio/appl/probcons.rb
+- lib/bio/appl/psort.rb
+- lib/bio/appl/psort/report.rb
+- lib/bio/appl/pts1.rb
+- lib/bio/appl/sim4.rb
+- lib/bio/appl/sim4/report.rb
+- lib/bio/appl/sosui/report.rb
+- lib/bio/appl/spidey/report.rb
+- lib/bio/appl/targetp/report.rb
+- lib/bio/appl/tcoffee.rb
+- lib/bio/appl/tmhmm/report.rb
+- lib/bio/command.rb
+- lib/bio/compat/features.rb
+- lib/bio/compat/references.rb
+- lib/bio/data/aa.rb
+- lib/bio/data/codontable.rb
+- lib/bio/data/na.rb
+- lib/bio/db.rb
+- lib/bio/db/aaindex.rb
+- lib/bio/db/biosql/biosql_to_biosequence.rb
+- lib/bio/db/biosql/sequence.rb
+- lib/bio/db/embl/common.rb
+- lib/bio/db/embl/embl.rb
+- lib/bio/db/embl/embl_to_biosequence.rb
+- lib/bio/db/embl/format_embl.rb
+- lib/bio/db/embl/sptr.rb
+- lib/bio/db/embl/swissprot.rb
+- lib/bio/db/embl/trembl.rb
+- lib/bio/db/embl/uniprot.rb
+- lib/bio/db/embl/uniprotkb.rb
+- lib/bio/db/fantom.rb
+- lib/bio/db/fasta.rb
+- lib/bio/db/fasta/defline.rb
+- lib/bio/db/fasta/fasta_to_biosequence.rb
+- lib/bio/db/fasta/format_fasta.rb
+- lib/bio/db/fasta/format_qual.rb
+- lib/bio/db/fasta/qual.rb
+- lib/bio/db/fasta/qual_to_biosequence.rb
+- lib/bio/db/fastq.rb
+- lib/bio/db/fastq/fastq_to_biosequence.rb
+- lib/bio/db/fastq/format_fastq.rb
+- lib/bio/db/genbank/common.rb
+- lib/bio/db/genbank/ddbj.rb
+- lib/bio/db/genbank/format_genbank.rb
+- lib/bio/db/genbank/genbank.rb
+- lib/bio/db/genbank/genbank_to_biosequence.rb
+- lib/bio/db/genbank/genpept.rb
+- lib/bio/db/genbank/refseq.rb
+- lib/bio/db/gff.rb
+- lib/bio/db/go.rb
+- lib/bio/db/kegg/brite.rb
+- lib/bio/db/kegg/common.rb
+- lib/bio/db/kegg/compound.rb
+- lib/bio/db/kegg/drug.rb
+- lib/bio/db/kegg/enzyme.rb
+- lib/bio/db/kegg/expression.rb
+- lib/bio/db/kegg/genes.rb
+- lib/bio/db/kegg/genome.rb
+- lib/bio/db/kegg/glycan.rb
+- lib/bio/db/kegg/keggtab.rb
+- lib/bio/db/kegg/kgml.rb
+- lib/bio/db/kegg/module.rb
+- lib/bio/db/kegg/orthology.rb
+- lib/bio/db/kegg/pathway.rb
+- lib/bio/db/kegg/reaction.rb
+- lib/bio/db/lasergene.rb
+- lib/bio/db/litdb.rb
+- lib/bio/db/medline.rb
+- lib/bio/db/nbrf.rb
+- lib/bio/db/newick.rb
+- lib/bio/db/nexus.rb
+- lib/bio/db/pdb.rb
+- lib/bio/db/pdb/atom.rb
+- lib/bio/db/pdb/chain.rb
+- lib/bio/db/pdb/chemicalcomponent.rb
+- lib/bio/db/pdb/model.rb
+- lib/bio/db/pdb/pdb.rb
+- lib/bio/db/pdb/residue.rb
+- lib/bio/db/pdb/utils.rb
+- lib/bio/db/phyloxml/phyloxml.xsd
+- lib/bio/db/phyloxml/phyloxml_elements.rb
+- lib/bio/db/phyloxml/phyloxml_parser.rb
+- lib/bio/db/phyloxml/phyloxml_writer.rb
+- lib/bio/db/prosite.rb
+- lib/bio/db/rebase.rb
+- lib/bio/db/sanger_chromatogram/abif.rb
+- lib/bio/db/sanger_chromatogram/chromatogram.rb
+- lib/bio/db/sanger_chromatogram/chromatogram_to_biosequence.rb
+- lib/bio/db/sanger_chromatogram/scf.rb
+- lib/bio/db/soft.rb
+- lib/bio/db/transfac.rb
+- lib/bio/feature.rb
+- lib/bio/io/biosql/ar-biosql.rb
+- lib/bio/io/biosql/biosql.rb
+- lib/bio/io/biosql/config/database.yml
+- lib/bio/io/das.rb
+- lib/bio/io/fastacmd.rb
+- lib/bio/io/fetch.rb
+- lib/bio/io/flatfile.rb
+- lib/bio/io/flatfile/autodetection.rb
+- lib/bio/io/flatfile/bdb.rb
+- lib/bio/io/flatfile/buffer.rb
+- lib/bio/io/flatfile/index.rb
+- lib/bio/io/flatfile/indexer.rb
+- lib/bio/io/flatfile/splitter.rb
+- lib/bio/io/hinv.rb
+- lib/bio/io/ncbirest.rb
+- lib/bio/io/pubmed.rb
+- lib/bio/io/registry.rb
+- lib/bio/io/sql.rb
+- lib/bio/io/togows.rb
+- lib/bio/location.rb
+- lib/bio/map.rb
+- lib/bio/pathway.rb
+- lib/bio/reference.rb
+- lib/bio/sequence.rb
+- lib/bio/sequence/aa.rb
+- lib/bio/sequence/adapter.rb
+- lib/bio/sequence/common.rb
+- lib/bio/sequence/compat.rb
+- lib/bio/sequence/dblink.rb
+- lib/bio/sequence/format.rb
+- lib/bio/sequence/format_raw.rb
+- lib/bio/sequence/generic.rb
+- lib/bio/sequence/na.rb
+- lib/bio/sequence/quality_score.rb
+- lib/bio/sequence/sequence_masker.rb
+- lib/bio/shell.rb
+- lib/bio/shell/core.rb
+- lib/bio/shell/demo.rb
+- lib/bio/shell/interface.rb
+- lib/bio/shell/irb.rb
+- lib/bio/shell/object.rb
+- lib/bio/shell/plugin/blast.rb
+- lib/bio/shell/plugin/codon.rb
+- lib/bio/shell/plugin/das.rb
+- lib/bio/shell/plugin/emboss.rb
+- lib/bio/shell/plugin/entry.rb
+- lib/bio/shell/plugin/flatfile.rb
+- lib/bio/shell/plugin/midi.rb
+- lib/bio/shell/plugin/ncbirest.rb
+- lib/bio/shell/plugin/obda.rb
+- lib/bio/shell/plugin/psort.rb
+- lib/bio/shell/plugin/seq.rb
+- lib/bio/shell/plugin/togows.rb
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/bioruby_generator.rb
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_classes.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_log.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_methods.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_modules.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/_variables.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-bg.gif
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-gem.png
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby-link.gif
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby.css
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_controller.rb
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/bioruby_helper.rb
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/commands.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/history.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/index.rhtml
+- lib/bio/shell/rails/vendor/plugins/bioruby/generators/bioruby/templates/spinner.gif
+- lib/bio/shell/script.rb
+- lib/bio/shell/setup.rb
+- lib/bio/shell/web.rb
+- lib/bio/tree.rb
+- lib/bio/tree/output.rb
+- lib/bio/util/color_scheme.rb
+- lib/bio/util/color_scheme/buried.rb
+- lib/bio/util/color_scheme/helix.rb
+- lib/bio/util/color_scheme/hydropathy.rb
+- lib/bio/util/color_scheme/nucleotide.rb
+- lib/bio/util/color_scheme/strand.rb
+- lib/bio/util/color_scheme/taylor.rb
+- lib/bio/util/color_scheme/turn.rb
+- lib/bio/util/color_scheme/zappo.rb
+- lib/bio/util/contingency_table.rb
+- lib/bio/util/restriction_enzyme.rb
+- lib/bio/util/restriction_enzyme/analysis.rb
+- lib/bio/util/restriction_enzyme/analysis_basic.rb
+- lib/bio/util/restriction_enzyme/cut_symbol.rb
+- lib/bio/util/restriction_enzyme/dense_int_array.rb
+- lib/bio/util/restriction_enzyme/double_stranded.rb
+- lib/bio/util/restriction_enzyme/double_stranded/aligned_strands.rb
+- lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair.rb
+- lib/bio/util/restriction_enzyme/double_stranded/cut_location_pair_in_enzyme_notation.rb
+- lib/bio/util/restriction_enzyme/double_stranded/cut_locations.rb
+- lib/bio/util/restriction_enzyme/double_stranded/cut_locations_in_enzyme_notation.rb
+- lib/bio/util/restriction_enzyme/enzymes.yaml
+- lib/bio/util/restriction_enzyme/range/cut_range.rb
+- lib/bio/util/restriction_enzyme/range/cut_ranges.rb
+- lib/bio/util/restriction_enzyme/range/horizontal_cut_range.rb
+- lib/bio/util/restriction_enzyme/range/sequence_range.rb
+- lib/bio/util/restriction_enzyme/range/sequence_range/calculated_cuts.rb
+- lib/bio/util/restriction_enzyme/range/sequence_range/fragment.rb
+- lib/bio/util/restriction_enzyme/range/sequence_range/fragments.rb
+- lib/bio/util/restriction_enzyme/range/vertical_cut_range.rb
+- lib/bio/util/restriction_enzyme/single_strand.rb
+- lib/bio/util/restriction_enzyme/single_strand/cut_locations_in_enzyme_notation.rb
+- lib/bio/util/restriction_enzyme/single_strand_complement.rb
+- lib/bio/util/restriction_enzyme/sorted_num_array.rb
+- lib/bio/util/restriction_enzyme/string_formatting.rb
+- lib/bio/util/sirna.rb
+- lib/bio/version.rb
+- sample/any2fasta.rb
+- sample/benchmark_clustalw_report.rb
+- sample/biofetch.rb
+- sample/color_scheme_na.rb
+- sample/demo_aaindex.rb
+- sample/demo_aminoacid.rb
+- sample/demo_bl2seq_report.rb
+- sample/demo_blast_report.rb
+- sample/demo_codontable.rb
+- sample/demo_das.rb
+- sample/demo_fasta_remote.rb
+- sample/demo_fastaformat.rb
+- sample/demo_genbank.rb
+- sample/demo_genscan_report.rb
+- sample/demo_gff1.rb
+- sample/demo_go.rb
+- sample/demo_hmmer_report.rb
+- sample/demo_kegg_compound.rb
+- sample/demo_kegg_drug.rb
+- sample/demo_kegg_genome.rb
+- sample/demo_kegg_glycan.rb
+- sample/demo_kegg_orthology.rb
+- sample/demo_kegg_reaction.rb
+- sample/demo_litdb.rb
+- sample/demo_locations.rb
+- sample/demo_ncbi_rest.rb
+- sample/demo_nucleicacid.rb
+- sample/demo_pathway.rb
+- sample/demo_prosite.rb
+- sample/demo_psort.rb
+- sample/demo_psort_report.rb
+- sample/demo_pubmed.rb
+- sample/demo_sequence.rb
+- sample/demo_sirna.rb
+- sample/demo_sosui_report.rb
+- sample/demo_targetp_report.rb
+- sample/demo_tmhmm_report.rb
+- sample/enzymes.rb
+- sample/fasta2tab.rb
+- sample/fastagrep.rb
+- sample/fastasort.rb
+- sample/fsplit.rb
+- sample/gb2fasta.rb
+- sample/gb2tab.rb
+- sample/gbtab2mysql.rb
+- sample/genes2nuc.rb
+- sample/genes2pep.rb
+- sample/genes2tab.rb
+- sample/genome2rb.rb
+- sample/genome2tab.rb
+- sample/goslim.rb
+- sample/gt2fasta.rb
+- sample/na2aa.rb
+- sample/pmfetch.rb
+- sample/pmsearch.rb
+- sample/seqdatabase.ini
+- sample/ssearch2tab.rb
+- sample/tdiary.rb
+- sample/test_phyloxml_big.rb
+- sample/test_restriction_enzyme_long.rb
+- sample/tfastx2tab.rb
+- sample/vs-genes.rb
+- setup.rb
+- test/bioruby_test_helper.rb
+- test/data/HMMER/hmmpfam.out
+- test/data/HMMER/hmmsearch.out
+- test/data/KEGG/1.1.1.1.enzyme
+- test/data/KEGG/C00025.compound
+- test/data/KEGG/D00063.drug
+- test/data/KEGG/G00024.glycan
+- test/data/KEGG/G01366.glycan
+- test/data/KEGG/K02338.orthology
+- test/data/KEGG/M00118.module
+- test/data/KEGG/R00006.reaction
+- test/data/KEGG/T00005.genome
+- test/data/KEGG/T00070.genome
+- test/data/KEGG/b0529.gene
+- test/data/KEGG/ec00072.pathway
+- test/data/KEGG/hsa00790.pathway
+- test/data/KEGG/ko00312.pathway
+- test/data/KEGG/map00030.pathway
+- test/data/KEGG/map00052.pathway
+- test/data/KEGG/rn00250.pathway
+- test/data/KEGG/test.kgml
+- test/data/SOSUI/sample.report
+- test/data/TMHMM/sample.report
+- test/data/aaindex/DAYM780301
+- test/data/aaindex/PRAM900102
+- test/data/bl2seq/cd8a_cd8b_blastp.bl2seq
+- test/data/bl2seq/cd8a_p53_e-5blastp.bl2seq
+- test/data/blast/2.2.15.blastp.m7
+- test/data/blast/b0002.faa
+- test/data/blast/b0002.faa.m0
+- test/data/blast/b0002.faa.m7
+- test/data/blast/b0002.faa.m8
+- test/data/blast/blastp-multi.m7
+- test/data/clustalw/example1-seqnos.aln
+- test/data/clustalw/example1.aln
+- test/data/command/echoarg2.bat
+- test/data/command/echoarg2.sh
+- test/data/embl/AB090716.embl
+- test/data/embl/AB090716.embl.rel89
+- test/data/fasta/EFTU_BACSU.fasta
+- test/data/fasta/example1.txt
+- test/data/fasta/example2.txt
+- test/data/fastq/README.txt
+- test/data/fastq/error_diff_ids.fastq
+- test/data/fastq/error_double_qual.fastq
+- test/data/fastq/error_double_seq.fastq
+- test/data/fastq/error_long_qual.fastq
+- test/data/fastq/error_no_qual.fastq
+- test/data/fastq/error_qual_del.fastq
+- test/data/fastq/error_qual_escape.fastq
+- test/data/fastq/error_qual_null.fastq
+- test/data/fastq/error_qual_space.fastq
+- test/data/fastq/error_qual_tab.fastq
+- test/data/fastq/error_qual_unit_sep.fastq
+- test/data/fastq/error_qual_vtab.fastq
+- test/data/fastq/error_short_qual.fastq
+- test/data/fastq/error_spaces.fastq
+- test/data/fastq/error_tabs.fastq
+- test/data/fastq/error_trunc_at_plus.fastq
+- test/data/fastq/error_trunc_at_qual.fastq
+- test/data/fastq/error_trunc_at_seq.fastq
+- test/data/fastq/error_trunc_in_plus.fastq
+- test/data/fastq/error_trunc_in_qual.fastq
+- test/data/fastq/error_trunc_in_seq.fastq
+- test/data/fastq/error_trunc_in_title.fastq
+- test/data/fastq/illumina_full_range_as_illumina.fastq
+- test/data/fastq/illumina_full_range_as_sanger.fastq
+- test/data/fastq/illumina_full_range_as_solexa.fastq
+- test/data/fastq/illumina_full_range_original_illumina.fastq
+- test/data/fastq/longreads_as_illumina.fastq
+- test/data/fastq/longreads_as_sanger.fastq
+- test/data/fastq/longreads_as_solexa.fastq
+- test/data/fastq/longreads_original_sanger.fastq
+- test/data/fastq/misc_dna_as_illumina.fastq
+- test/data/fastq/misc_dna_as_sanger.fastq
+- test/data/fastq/misc_dna_as_solexa.fastq
+- test/data/fastq/misc_dna_original_sanger.fastq
+- test/data/fastq/misc_rna_as_illumina.fastq
+- test/data/fastq/misc_rna_as_sanger.fastq
+- test/data/fastq/misc_rna_as_solexa.fastq
+- test/data/fastq/misc_rna_original_sanger.fastq
+- test/data/fastq/sanger_full_range_as_illumina.fastq
+- test/data/fastq/sanger_full_range_as_sanger.fastq
+- test/data/fastq/sanger_full_range_as_solexa.fastq
+- test/data/fastq/sanger_full_range_original_sanger.fastq
+- test/data/fastq/solexa_full_range_as_illumina.fastq
+- test/data/fastq/solexa_full_range_as_sanger.fastq
+- test/data/fastq/solexa_full_range_as_solexa.fastq
+- test/data/fastq/solexa_full_range_original_solexa.fastq
+- test/data/fastq/wrapping_as_illumina.fastq
+- test/data/fastq/wrapping_as_sanger.fastq
+- test/data/fastq/wrapping_as_solexa.fastq
+- test/data/fastq/wrapping_original_sanger.fastq
+- test/data/gcg/pileup-aa.msf
+- test/data/genbank/CAA35997.gp
+- test/data/genbank/SCU49845.gb
+- test/data/genscan/sample.report
+- test/data/go/selected_component.ontology
+- test/data/go/selected_gene_association.sgd
+- test/data/go/selected_wikipedia2go
+- test/data/iprscan/merged.raw
+- test/data/iprscan/merged.txt
+- test/data/litdb/1717226.litdb
+- test/data/medline/20146148_modified.medline
+- test/data/meme/db
+- test/data/meme/mast
+- test/data/meme/mast.out
+- test/data/meme/meme.out
+- test/data/paml/codeml/control_file.txt
+- test/data/paml/codeml/models/aa.aln
+- test/data/paml/codeml/models/aa.dnd
+- test/data/paml/codeml/models/aa.ph
+- test/data/paml/codeml/models/alignment.phy
+- test/data/paml/codeml/models/results0-3.txt
+- test/data/paml/codeml/models/results7-8.txt
+- test/data/paml/codeml/output.txt
+- test/data/paml/codeml/rates
+- test/data/phyloxml/apaf.xml
+- test/data/phyloxml/bcl_2.xml
+- test/data/phyloxml/made_up.xml
+- test/data/phyloxml/ncbi_taxonomy_mollusca_short.xml
+- test/data/phyloxml/phyloxml_examples.xml
+- test/data/pir/CRAB_ANAPL.pir
+- test/data/prosite/prosite.dat
+- test/data/refseq/nm_126355.entret
+- test/data/rpsblast/misc.rpsblast
+- test/data/sanger_chromatogram/test_chromatogram_abif.ab1
+- test/data/sanger_chromatogram/test_chromatogram_scf_v2.scf
+- test/data/sanger_chromatogram/test_chromatogram_scf_v3.scf
+- test/data/sim4/complement-A4.sim4
+- test/data/sim4/simple-A4.sim4
+- test/data/sim4/simple2-A4.sim4
+- test/data/soft/GDS100_partial.soft
+- test/data/soft/GSE3457_family_partial.soft
+- test/data/uniprot/p53_human.uniprot
+- test/functional/bio/sequence/test_output_embl.rb
+- test/functional/bio/test_command.rb
+- test/network/bio/appl/blast/test_remote.rb
+- test/network/bio/appl/test_blast.rb
+- test/network/bio/appl/test_pts1.rb
+- test/network/bio/io/test_pubmed.rb
+- test/network/bio/io/test_togows.rb
+- test/network/bio/test_command.rb
+- test/runner.rb
+- test/unit/bio/appl/bl2seq/test_report.rb
+- test/unit/bio/appl/blast/test_ncbioptions.rb
+- test/unit/bio/appl/blast/test_report.rb
+- test/unit/bio/appl/blast/test_rpsblast.rb
+- test/unit/bio/appl/clustalw/test_report.rb
+- test/unit/bio/appl/gcg/test_msf.rb
+- test/unit/bio/appl/genscan/test_report.rb
+- test/unit/bio/appl/hmmer/test_report.rb
+- test/unit/bio/appl/iprscan/test_report.rb
+- test/unit/bio/appl/mafft/test_report.rb
+- test/unit/bio/appl/meme/mast/test_report.rb
+- test/unit/bio/appl/meme/test_mast.rb
+- test/unit/bio/appl/meme/test_motif.rb
+- test/unit/bio/appl/paml/codeml/test_rates.rb
+- test/unit/bio/appl/paml/codeml/test_report.rb
+- test/unit/bio/appl/paml/codeml/test_report_single.rb
+- test/unit/bio/appl/paml/test_codeml.rb
+- test/unit/bio/appl/sim4/test_report.rb
+- test/unit/bio/appl/sosui/test_report.rb
+- test/unit/bio/appl/targetp/test_report.rb
+- test/unit/bio/appl/test_blast.rb
+- test/unit/bio/appl/test_fasta.rb
+- test/unit/bio/appl/test_pts1.rb
+- test/unit/bio/appl/tmhmm/test_report.rb
+- test/unit/bio/data/test_aa.rb
+- test/unit/bio/data/test_codontable.rb
+- test/unit/bio/data/test_na.rb
+- test/unit/bio/db/biosql/tc_biosql.rb
+- test/unit/bio/db/biosql/ts_suite_biosql.rb
+- test/unit/bio/db/embl/test_common.rb
+- test/unit/bio/db/embl/test_embl.rb
+- test/unit/bio/db/embl/test_embl_rel89.rb
+- test/unit/bio/db/embl/test_embl_to_bioseq.rb
+- test/unit/bio/db/embl/test_uniprot.rb
+- test/unit/bio/db/embl/test_uniprotkb.rb
+- test/unit/bio/db/embl/test_uniprotkb_new_part.rb
+- test/unit/bio/db/fasta/test_defline.rb
+- test/unit/bio/db/fasta/test_defline_misc.rb
+- test/unit/bio/db/fasta/test_format_qual.rb
+- test/unit/bio/db/genbank/test_common.rb
+- test/unit/bio/db/genbank/test_genbank.rb
+- test/unit/bio/db/genbank/test_genpept.rb
+- test/unit/bio/db/kegg/test_compound.rb
+- test/unit/bio/db/kegg/test_drug.rb
+- test/unit/bio/db/kegg/test_enzyme.rb
+- test/unit/bio/db/kegg/test_genes.rb
+- test/unit/bio/db/kegg/test_genome.rb
+- test/unit/bio/db/kegg/test_glycan.rb
+- test/unit/bio/db/kegg/test_kgml.rb
+- test/unit/bio/db/kegg/test_module.rb
+- test/unit/bio/db/kegg/test_orthology.rb
+- test/unit/bio/db/kegg/test_pathway.rb
+- test/unit/bio/db/kegg/test_reaction.rb
+- test/unit/bio/db/pdb/test_pdb.rb
+- test/unit/bio/db/sanger_chromatogram/test_abif.rb
+- test/unit/bio/db/sanger_chromatogram/test_scf.rb
+- test/unit/bio/db/test_aaindex.rb
+- test/unit/bio/db/test_fasta.rb
+- test/unit/bio/db/test_fastq.rb
+- test/unit/bio/db/test_gff.rb
+- test/unit/bio/db/test_go.rb
+- test/unit/bio/db/test_lasergene.rb
+- test/unit/bio/db/test_litdb.rb
+- test/unit/bio/db/test_medline.rb
+- test/unit/bio/db/test_nbrf.rb
+- test/unit/bio/db/test_newick.rb
+- test/unit/bio/db/test_nexus.rb
+- test/unit/bio/db/test_phyloxml.rb
+- test/unit/bio/db/test_phyloxml_writer.rb
+- test/unit/bio/db/test_prosite.rb
+- test/unit/bio/db/test_qual.rb
+- test/unit/bio/db/test_rebase.rb
+- test/unit/bio/db/test_soft.rb
+- test/unit/bio/io/flatfile/test_autodetection.rb
+- test/unit/bio/io/flatfile/test_buffer.rb
+- test/unit/bio/io/flatfile/test_splitter.rb
+- test/unit/bio/io/test_fastacmd.rb
+- test/unit/bio/io/test_flatfile.rb
+- test/unit/bio/io/test_togows.rb
+- test/unit/bio/sequence/test_aa.rb
+- test/unit/bio/sequence/test_common.rb
+- test/unit/bio/sequence/test_compat.rb
+- test/unit/bio/sequence/test_dblink.rb
+- test/unit/bio/sequence/test_na.rb
+- test/unit/bio/sequence/test_quality_score.rb
+- test/unit/bio/sequence/test_sequence_masker.rb
+- test/unit/bio/shell/plugin/test_seq.rb
+- test/unit/bio/test_alignment.rb
+- test/unit/bio/test_command.rb
+- test/unit/bio/test_db.rb
+- test/unit/bio/test_feature.rb
+- test/unit/bio/test_location.rb
+- test/unit/bio/test_map.rb
+- test/unit/bio/test_pathway.rb
+- test/unit/bio/test_reference.rb
+- test/unit/bio/test_sequence.rb
+- test/unit/bio/test_shell.rb
+- test/unit/bio/test_tree.rb
+- test/unit/bio/util/restriction_enzyme/analysis/test_calculated_cuts.rb
+- test/unit/bio/util/restriction_enzyme/analysis/test_cut_ranges.rb
+- test/unit/bio/util/restriction_enzyme/analysis/test_sequence_range.rb
+- test/unit/bio/util/restriction_enzyme/double_stranded/test_aligned_strands.rb
+- test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair.rb
+- test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_location_pair_in_enzyme_notation.rb
+- test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations.rb
+- test/unit/bio/util/restriction_enzyme/double_stranded/test_cut_locations_in_enzyme_notation.rb
+- test/unit/bio/util/restriction_enzyme/single_strand/test_cut_locations_in_enzyme_notation.rb
+- test/unit/bio/util/restriction_enzyme/test_analysis.rb
+- test/unit/bio/util/restriction_enzyme/test_cut_symbol.rb
+- test/unit/bio/util/restriction_enzyme/test_dense_int_array.rb
+- test/unit/bio/util/restriction_enzyme/test_double_stranded.rb
+- test/unit/bio/util/restriction_enzyme/test_single_strand.rb
+- test/unit/bio/util/restriction_enzyme/test_single_strand_complement.rb
+- test/unit/bio/util/restriction_enzyme/test_sorted_num_array.rb
+- test/unit/bio/util/restriction_enzyme/test_string_formatting.rb
+- test/unit/bio/util/test_color_scheme.rb
+- test/unit/bio/util/test_contingency_table.rb
+- test/unit/bio/util/test_restriction_enzyme.rb
+- test/unit/bio/util/test_sirna.rb
+homepage: http://bioruby.org/
+licenses:
+- Ruby
+metadata: {}
 post_install_message: 
 rdoc_options:
-- !binary |-
-  LS1tYWlu
-- !binary |-
-  UkVBRE1FLnJkb2M=
-- !binary |-
-  LS10aXRsZQ==
-- !binary |-
-  QmlvUnVieSBBUEkgZG9jdW1lbnRhdGlvbg==
-- !binary |-
-  LS1leGNsdWRl
-- !binary |-
-  XC55YW1sXHo=
-- !binary |-
-  LS1saW5lLW51bWJlcnM=
-- !binary |-
-  LS1pbmxpbmUtc291cmNl
+- "--main"
+- README.rdoc
+- "--title"
+- BioRuby API documentation
+- "--exclude"
+- "\\.yaml\\z"
+- "--line-numbers"
+- "--inline-source"
 require_paths:
-- !binary |-
-  bGli
+- lib
 required_ruby_version: !ruby/object:Gem::Requirement
-  none: false
   requirements:
-  - - ! '>='
+  - - ">="
     - !ruby/object:Gem::Version
       version: '0'
 required_rubygems_version: !ruby/object:Gem::Requirement
-  none: false
   requirements:
-  - - ! '>='
+  - - ">="
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubyforge_project: !binary |-
-  YmlvcnVieQ==
-rubygems_version: 1.8.23
+rubyforge_project: 
+rubygems_version: 2.4.8
 signing_key: 
-specification_version: 3
-summary: !binary |-
-  QmlvaW5mb3JtYXRpY3MgbGlicmFyeQ==
+specification_version: 4
+summary: Bioinformatics library
 test_files: []
diff --git a/sample/benchmark_clustalw_report.rb b/sample/benchmark_clustalw_report.rb
new file mode 100644
index 0000000..5799877
--- /dev/null
+++ b/sample/benchmark_clustalw_report.rb
@@ -0,0 +1,47 @@
+#
+# = sample/benchmark_clustalw_report.rb - Benchmark tests for Bio::ClustalW::Report
+#
+# Copyright::   Copyright (C) 2013
+#               Andrew Grimm <andrew.j.grimm at gmail.com>
+# License::     The Ruby License
+
+require 'pathname'
+load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 1, "test",
+                            'bioruby_test_helper.rb')).cleanpath.to_s
+
+require 'benchmark'
+require 'bio'
+
+class BenchmarkClustalWReport
+
+  DataDir = File.join(BioRubyTestDataPath, 'clustalw')
+  Filenames = [ 'example1.aln', 'example1-seqnos.aln' ]
+
+  def self.benchmark_clustalw_report
+    Filenames.each do |fn|
+      print "\n", fn, "\n"
+      fullpath = File.join(DataDir, fn)
+      self.new(fullpath).benchmark
+    end
+  end
+
+  def initialize(aln_filename)
+    @text = File.open(aln_filename, 'rb') { |f| f.read }
+    @text.freeze
+  end
+
+  def benchmark
+    GC.start
+    Benchmark.bmbm do |x|
+      x.report do
+        for i in 1...10_000
+          aln = Bio::ClustalW::Report.new(@text)
+          aln.alignment
+        end
+      end
+    end
+  end
+
+end #class BenchmarkClustalWReport
+
+BenchmarkClustalWReport.benchmark_clustalw_report
diff --git a/sample/biofetch.rb b/sample/biofetch.rb
index 702787d..42490e3 100755
--- a/sample/biofetch.rb
+++ b/sample/biofetch.rb
@@ -1,8 +1,10 @@
-#!/usr/proj/bioruby/bin/ruby
+#!/usr/bin/env ruby
+# coding: utf-8
 #
-# biofetch.rb : BioFetch server (interface to GenomeNet/DBGET via KEGG API)
+# biofetch.rb : BioFetch server (interface to TogoWS)
 #
 #   Copyright (C) 2002-2004 KATAYAMA Toshiaki <k at bioruby.org>
+#                 2013      GOTO Naohisa <ng at bioruby.org>
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
@@ -18,15 +20,97 @@
 #  along with this program; if not, write to the Free Software
 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #
-#  $Id: biofetch.rb,v 1.16 2005/08/07 10:02:41 k Exp $
 #
 
 require 'cgi'
-require 'html/template'
-require 'bio/io/keggapi'
+require 'erb'
+require 'open-uri'
+require 'fileutils'
+require 'tempfile'
 
 MAX_ID_NUM = 50
 
+# script name
+SCRIPT_NAME = File.basename(__FILE__)
+
+# full URL for this CGI
+BASE_URL = "http://bioruby.org/cgi-bin/#{SCRIPT_NAME}"
+
+# cache directory for metadata
+# Note: The cache is only for metadata (database list and format list).
+# Data entries are NOT cached.
+CACHE_DIR = '/tmp/biofetch_rb.cache'
+
+# cache lifetime
+CACHE_LIFETIME = 60 * 60 # 1 hour
+
+module TogoWS
+  TOGOWS_URL = 'http://togows.dbcls.jp/'
+
+  def togows_database_complete_list
+    result = togows_get_cached('/entry/')
+    result.to_s.split(/\n/).collect {|x| x.split(/\t/) }
+  end
+
+  def togows_database_formats(db)
+    db = CGI.escape(db)
+    result = togows_get_cached("/entry/#{db}/?formats")
+  end
+
+  def togows_get(path)
+    uristr = TOGOWS_URL + path
+    begin
+      result = OpenURI.open_uri(uristr).read
+    rescue OpenURI::HTTPError
+      result = nil
+    end
+    result
+  end
+
+  private
+
+  def togows_get_cached(path)
+    filepath = path.sub(/\A\//, '').sub(/\/\z/, '')
+    filepath = filepath.gsub(/\//, " ")
+    filepath = filepath.sub(/\?/, '_')
+    filepath = File.join(CACHE_DIR, filepath)
+    result = nil
+    begin
+      if Time.now - File.mtime(filepath) > CACHE_LIFETIME
+        # delete expired cache file
+        File.delete(filepath)
+      end
+      result = File.read(filepath)
+    rescue IOError, SystemCallError
+      result = nil
+    end
+    unless result then
+      # valid cache is not found
+      result = togows_get(path)
+      if result then
+        # create cache directory if not found
+        FileUtils.mkdir_p(CACHE_DIR, :mode => 0700)
+        # simple security check for the cache dir
+        if File.stat(CACHE_DIR).mode & 0022 != 0 then
+          raise SecurityError, "CACHE_DIR #{CACHE_DIR} is writeable by others"
+        end
+
+        # write to temporary file
+        tmp = Tempfile.open('temp', CACHE_DIR)
+        tmp.print result
+        tmp.close
+        # create a hard link from the temporary to the cache file
+        begin
+          File.link(tmp.path, filepath)
+        rescue IOError, SystemCallError
+        end
+        # the temporay file will be automatically removed at exit
+      end
+    end
+    result
+  end
+
+end #module TogoWS
 
 module BioFetchError
 
@@ -36,32 +120,50 @@ module BioFetchError
     exit
   end
 
+  def print_html_page(str)
+    print "Content-type: text/html; charset=UTF-8\n\n"
+    print "<pre>", CGI.escapeHTML(str), "</pre>\n"
+    exit
+  end
+
   def error1(db)
+    db = CGI.escapeHTML(db.to_s) # to avoid potential XSS with old IE
     str = "ERROR 1 Unknown database [#{db}]."
     print_text_page(str)
   end
 
   def error2(style)
+    style = CGI.escapeHTML(style.to_s) # to avoid potential XSS with old IE
     str = "ERROR 2 Unknown style [#{style}]."
     print_text_page(str)
   end
 
   def error3(format, db)
+    # to avoid potential XSS with old IE which ignores Content-Type
+    db = CGI.escapeHTML(db.to_s)
+    format = CGI.escapeHTML(format.to_s)
     str = "ERROR 3 Format [#{format}] not known for database [#{db}]."
     print_text_page(str)
   end
 
   def error4(entry_id, db)
+    # to avoid potential XSS with old IE which ignores Content-Type
+    entry_id = CGI.escapeHTML(entry_id.to_s)
+    db = CGI.escapeHTML(db.to_s)
     str = "ERROR 4 ID [#{entry_id}] not found in database [#{db}]."
     print_text_page(str)
   end
 
   def error5(count)
+    # to avoid potential XSS with old IE which ignores Content-Type
+    count = CGI.escapeHTML(count.to_s)
     str = "ERROR 5 Too many IDs [#{count}]. Max [#{MAX_ID_NUM}] allowed."
     print_text_page(str)
   end
 
   def error6(info)
+    # to avoid potential XSS with old IE which ignores Content-Type
+    count = CGI.escapeHTML(info.to_s)
     str = "ERROR 6 Illegal information request [#{info}]."
     print_text_page(str)
   end
@@ -70,23 +172,35 @@ end
 
 
 
-module KeggAPI
+module ApiBridge
 
   include BioFetchError
+  include TogoWS
+
+  def list_databases_with_synonyms
+    togows_database_complete_list
+  end
 
   def list_databases
-    serv = Bio::KEGG::API.new
-    results = serv.list_databases
-    results.collect {|x| x.entry_id}
+    list_databases_with_synonyms.flatten
   end
 
   def bget(db, id_list, format)
-    serv = Bio::KEGG::API.new
+    case format
+    when 'fasta'
+      format = '.fasta'
+    else
+      format = ''
+    end
+    db = CGI.escape(db)
+    
     results = ''
     id_list.each do |query_id|
-      entry_id = "#{db}:#{query_id}"
-      result = serv.get_entries([entry_id])
-      if result.empty?
+      query_id = CGI.escape(query_id)
+      path = "/entry/#{db}/#{query_id}#{format}"
+      result = togows_get(path)
+
+      if !result or result.empty? or /\AError\: / =~ result then
         error4(query_id, db)
       else
         results << result
@@ -95,78 +209,41 @@ module KeggAPI
     return results
   end
 
-end
-
-
-
-
-class BioFetch
-
-  include BioFetchError
-  include KeggAPI
-
-  def initialize(db, id_list, style, format)
-    check_style(style)
-    check_format(format, db)
-    check_number_of_id(id_list.length)
-    check_dbname(db)
+  def check_fasta_ok?(db)
+    result = togows_database_formats(db)
+    /^fasta$/ =~ result.to_s
+  end
 
-    if /html/.match(style)
-      goto_html_style_page(db, id_list, format)
-    end
+end #module ApiBridge
 
-    entries = bget(db, id_list, format)
+module BioFetchCheck
 
-    if /fasta/.match(format) and entries
-      entries = convert_to_fasta_format(entries, db)
-    end
-
-    print_text_page(entries)
-  end
+  include ApiBridge
 
   private
 
-  def convert_to_fasta_format(str, db)
-    require 'bio'
-    require 'stringio'
-
-    fasta = Array.new
-
-    entries = StringIO.new(str)
-    Bio::FlatFile.auto(entries) do |ff|
-      ff.each do |entry|
-        seq = nil
-        if entry.respond_to?(:seq)
-          seq = entry.seq
-        elsif entry.respond_to?(:aaseq)
-          seq = entry.aaseq
-        elsif entry.respond_to?(:naseq)
-          seq = entry.naseq
-        end
-        if seq
-          entry_id   = entry.respond_to?(:entry_id)   ? entry.entry_id   : ''
-          definition = entry.respond_to?(:definition) ? entry.definition : ''
-          fasta << seq.to_fasta("#{db}:#{entry_id} #{definition}", 60)
-        end
-      end
-    end
-    return fasta.join
-  end
-
-  def goto_html_style_page(db, id_list, format)
-    url = "http://www.genome.jp/dbget-bin/www_bget"
-    opt = '-f+' if /fasta/.match(format)
-    ids = id_list.join('%2B')
-    print "Location: #{url}?#{opt}#{db}+#{ids}\n\n"
-    exit
-  end
-
   def check_style(style)
-    error2(style) unless /html|raw/.match(style)
+    style = style.to_s.downcase
+    error2(style) unless /\A(html|raw)\z/.match(style)
+    style
   end
 
   def check_format(format, db)
-    error3(format, db) if format && ! /fasta|default/.match(format)
+    fmt = format ? format.to_s.downcase : nil
+    case fmt
+    when 'fasta'
+      db = check_dbname(db)
+      fmt = nil unless check_fasta_ok?(db)
+    when 'default'
+      # do nothing
+    when nil
+      fmt = 'default'
+    else
+      fmt = nil
+    end
+
+    error3(format, db) unless fmt
+    fmt
   end
 
   def check_number_of_id(num)
@@ -174,22 +251,50 @@ class BioFetch
   end
 
   def check_dbname(db)
+    db = db.to_s.downcase
     error1(db) unless list_databases.include?(db)
+    db
   end
 
-end
+end #module BioFetchCheck
+
+class BioFetch
+
+  include BioFetchCheck
+  include BioFetchError
+  include ApiBridge
+
+  def initialize(db, id_list, style, format)
+    style = check_style(style)
+    format = check_format(format, db)
+    check_number_of_id(id_list.length)
+    db = check_dbname(db)
+
+    entries = bget(db, id_list, format)
+
+    if style == 'html' then
+      print_html_page(entries)
+    else
+      print_text_page(entries)
+    end
+
+  end
+
+end #class BioFetch
 
 
 
 class BioFetchInfo
 
+  include BioFetchCheck
   include BioFetchError
-  include KeggAPI
+  include ApiBridge
 
   def initialize(info, db)
     @db = db
+
     begin
-      send(info)
+      check_info(info) ? __send__(info) : raise
     rescue
       error6(info)
     end
@@ -197,13 +302,18 @@ class BioFetchInfo
 
   private
 
+  def check_info(meth_name)
+    /\A(dbs|formats|maxids)\z/ =~ meth_name
+  end
+
   def dbs
     str = list_databases.sort.join(' ')
     print_text_page(str)
   end
 
   def formats
-    fasta = " fasta" if check_fasta_ok
+    db = check_dbname(@db)
+    fasta = " fasta" if check_fasta_ok?(db)
     str = "default#{fasta}"
     print_text_page(str)
   end
@@ -213,17 +323,14 @@ class BioFetchInfo
     print_text_page(str)
   end
 
-  def check_fasta_ok
-    # sequence databases supported by Bio::FlatFile.auto
-    /genes|gb|genbank|genpept|rs|refseq|emb|sp|swiss|pir/.match(@db)
-  end
-
-end
+end #class BioFetchInfo
 
 
 
 class BioFetchCGI
 
+  include ApiBridge
+
   def initialize(cgi)
     @cgi = cgi
     show_page
@@ -244,11 +351,14 @@ class BioFetchCGI
   end
 
   def show_query_page
-    html = HTML::Template.new
-    html.set_html(DATA.read)
-    html.param('max_id_num' => MAX_ID_NUM)
-    @cgi.out do
-      html.output
+    html = ERB.new(DATA.read)
+    max_id_num = MAX_ID_NUM
+    databases_with_synonyms = list_databases_with_synonyms
+    databases = list_databases
+    script_name = SCRIPT_NAME
+    base_url = BASE_URL
+    @cgi.out({ "type" => "text/html", "charset" => "utf-8" }) do
+      html.result(binding)
     end
   end
 
@@ -269,7 +379,7 @@ class BioFetchCGI
   end
 
   def id_list
-    @cgi['id'].split(/\W/)		# not only ','
+    @cgi['id'].strip.split(/[\,\s]+/)
   end
 
   def style
@@ -295,9 +405,8 @@ BioFetchCGI.new(CGI.new)
 This program was created during BioHackathon 2002, Tucson and updated
 in Cape Town :)
 
-Rewrited in 2004 to use KEGG API as the bioruby.org server left from Kyoto
-University (where DBGET runs) and the old version could not run without
-having internally accessible DBGET server.
+Rewrited in 2013 to use TogoWS API as the bioruby.org server left from The
+University of Tokyo and the old SOAP-based KEGG API is discontinued.
 
 =end
 
@@ -308,7 +417,7 @@ __END__
 <HEAD>
   <LINK href="http://bioruby.org/img/favicon.png" rel="icon" type="image/png">
   <LINK href="http://bioruby.org/css/bioruby.css" rel="stylesheet" type="text/css">
-  <TITLE>BioFetch interface to GenomeNet/DBGET</TITLE>
+  <TITLE>BioFetch interface to TogoWS</TITLE>
 </HEAD>
 
 <BODY bgcolor="#ffffff">
@@ -316,37 +425,26 @@ __END__
 <H1>
 <IMG src="http://bioruby.org/img/ruby.png" align="middle">
 BioFetch interface to
-<A href="http://www.genome.jp/dbget/">GenomeNet/DBGET</A>
+<A href="http://togows.dbcls.jp/">TogoWS</A>
 </H1>
 
-<P>This page allows you to retrieve up to <!var:max_id_num> entries at a time from various up-to-date biological databases.</P>
+<P>This page allows you to retrieve up to <%= max_id_num %> entries at a time from various up-to-date biological databases.</P>
 
 <HR>
 
-<FORM METHOD="post" ENCTYPE="application/x-www-form-urlencoded" action="biofetch.rb">
+<FORM METHOD="post" ENCTYPE="application/x-www-form-urlencoded" action="<%= script_name %>">
 
 <SELECT name="db">
-<OPTION value="genbank">GenBank</OPTION>
-<OPTION value="refseq">RefSeq</OPTION>
-<OPTION value="embl">EMBL</OPTION>
-<OPTION value="swissprot">Swiss-Prot</OPTION>
-<OPTION value="pir">PIR</OPTION>
-<OPTION value="prf">PRF</OPTION>
-<OPTION value="pdb">PDB</OPTION>
-<OPTION value="pdbstr">PDBSTR</OPTION>
-<OPTION value="epd">EPD</OPTION>
-<OPTION value="transfac">TRANSFAC</OPTION>
-<OPTION value="prosite">PROSITE</OPTION>
-<OPTION value="pmd">PMD</OPTION>
-<OPTION value="litdb">LITDB</OPTION>
-<OPTION value="omim">OMIM</OPTION>
-<OPTION value="ligand">KEGG/LIGAND</OPTION>
-<OPTION value="pathway">KEGG/PATHWAY</OPTION>
-<OPTION value="brite">KEGG/BRITE</OPTION>
-<OPTION value="genes">KEGG/GENES</OPTION>
-<OPTION value="genome">KEGG/GENOME</OPTION>
-<OPTION value="linkdb">LinkDB</OPTION>
-<OPTION value="aaindex">AAindex</OPTION>
+<% databases_with_synonyms.each do |dbs|
+     a = dbs[1..-1]
+     synonyms = unless a.empty? then
+                  " (abbr: " + a.join(", ") + ")"
+                else
+                  ""
+                end
+%>
+<OPTION value="<%= dbs[0] %>"><%= dbs[0] %><%= synonyms %></OPTION>
+<% end %>
 </SELECT>
 
 <INPUT name="id" size="40" type="text" maxlength="1000">
@@ -369,7 +467,7 @@ BioFetch interface to
 
 <H2>Direct access</H2>
 
-<P>http://bioruby.org/cgi-bin/biofetch.rb?format=(default|fasta|...);style=(html|raw);db=(genbank|embl|...);id=ID[,ID,ID,...]</P>
+<P><%= base_url %>?format=(default|fasta|...);style=(html|raw);db=(nuccore|embl|...);id=ID[,ID,ID,...]</P>
 <P>(NOTE: the option separator ';' can be '&')</P>
 
 <DL>
@@ -380,7 +478,7 @@ BioFetch interface to
   <DD> html|raw
 
   <DT> <U>db</U> (required)
-  <DD> genbank|refseq|embl|swissprot|pir|prf|pdb|pdbstr|epd|transfac|prosite|pmd|litdb|omim|ligand|pathway|brite|genes|genome|linkdb|aaindex|...
+  <DD> <%= databases.join('|') %>
 
   <DT> <U>id</U> (required)
   <DD> comma separated list of IDs
@@ -392,66 +490,65 @@ BioFetch interface to
 
 <DL>
   <DT> <A href="?info=dbs">What databases are available?</A>
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?info=dbs
+  <DD> <%= base_url %>?info=dbs
 
   <DT> <A href="?info=formats;db=embl">What formats does the database X have?</A>
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?info=formats;db=embl
+  <DD> <%= base_url %>?info=formats;db=embl
 
   <DT> <A href="?info=maxids">How many entries can be retrieved simultaneously?</A>
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?info=maxids
+  <DD> <%= base_url %>?info=maxids
 </DL>
 
 <H2>Examples</H2>
 
 <DL>
-  <DT> <A href="?format=default;style=raw;db=genbank;id=AJ617376">gb:AJ617376</A> (default/raw)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=raw;db=genbank;id=AJ617376
+  <DT> <A href="?format=default;style=raw;db=nuccore;id=AJ617376">nuccore/AJ617376</A> (default/raw)
+  <DD> <%= base_url %>?format=default;style=raw;db=nuccore;id=AJ617376
 
-  <DT> <A href="?format=fasta;style=raw;db=genbank;id=AJ617376">gb:AJ617376</A> (fasta/raw)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=fasta;style=raw;db=genbank;id=AJ617376
+  <DT> <A href="?format=fasta;style=raw;db=nuccore;id=AJ617376">nuccore/AJ617376</A> (fasta/raw)
+  <DD> <%= base_url %>?format=fasta;style=raw;db=nuccore;id=AJ617376
 
-  <DT> <A href="?format=default;style=html;db=genbank;id=AJ617376">gb:AJ617376</A> (default/html)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=html;db=genbank;id=AJ617376
+  <DT> <A href="?format=default;style=html;db=nuccore;id=AJ617376">nuccore/AJ617376</A> (default/html)
+  <DD> <%= base_url %>?format=default;style=html;db=nuccore;id=AJ617376
 
-  <DT> <A href="?format=default;style=raw;db=genbank;id=AJ617376,AJ617377">gb:AJ617376,AJ617377</A> (default/raw, multiple)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=raw;db=genbank;id=AJ617376,AJ617377
+  <DT> <A href="?format=default;style=raw;db=nuccore;id=AJ617376,AJ617377">nuccore/AJ617376,AJ617377</A> (default/raw, multiple)
+  <DD> <%= base_url %>?format=default;style=raw;db=nuccore;id=AJ617376,AJ617377
 
-  <DT> <A href="?format=default;style=raw;db=embl;id=BUM">embl:BUM</A> (default/raw)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=raw;db=embl;id=BUM
+  <DT> <A href="?format=default;style=raw;db=embl;id=J00231">embl/J00231</A> (default/raw)
+  <DD> <%= base_url %>?format=default;style=raw;db=embl;id=J00231
 
-  <DT> <A href="?format=default;style=raw;db=swissprot;id=CYC_BOVIN">sp:CYC_BOVIN</A> (default/raw)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=raw;db=swissprot;id=CYC_BOVIN
+  <DT> <A href="?format=default;style=raw;db=uniprot;id=CYC_BOVIN">uniprot/CYC_BOVIN</A> (default/raw)
+  <DD> <%= base_url %>?format=default;style=raw;db=uniprot;id=CYC_BOVIN
 
-  <DT> <A href="?format=fasta;style=raw;db=swissprot;id=CYC_BOVIN">sp:CYC_BOVIN</A> (fasta/raw)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=fasta;style=raw;db=swissprot;id=CYC_BOVIN
+  <DT> <A href="?format=fasta;style=raw;db=uniprot;id=CYC_BOVIN">uniprot/CYC_BOVIN</A> (fasta/raw)
+  <DD> <%= base_url %>?format=fasta;style=raw;db=uniprot;id=CYC_BOVIN
 
-  <DT> <A href="?format=default;style=raw;db=genes;id=b0015">genes:b0015</A> (default/raw)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=raw;db=genes;id=b0015
+  <DT> <A href="?format=default;style=raw;db=genes;id=eco%3Ab0015">genes/eco:b0015</A> (default/raw)
+  <DD> <%= base_url %>?format=default;style=raw;db=genes;id=eco%3Ab0015
+  <DD> <%= base_url %>?format=default;style=raw;db=genes;id=eco:b0015
 
-  <DT> <A href="?format=default;style=raw;db=prosite;id=PS00028">ps:PS00028</A> (default/raw)
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=raw;db=prosite;id=PS00028
 </DL>
 
 <H2>Errors</H2>
 
 <DL>
   <DT> <A href="?format=default;style=raw;db=nonexistent;id=AJ617376">Error1</A> sample : DB not found
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=raw;db=nonexistent;id=AJ617376"
+  <DD> <%= base_url %>?format=default;style=raw;db=nonexistent;id=AJ617376
 
-  <DT> <A href="?format=default;style=nonexistent;db=genbank;id=AJ617376">Error2</A> sample : unknown style
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=nonexistent;db=genbank;id=AJ617376"
+  <DT> <A href="?format=default;style=nonexistent;db=nuccore;id=AJ617376">Error2</A> sample : unknown style
+  <DD> <%= base_url %>?format=default;style=nonexistent;db=nuccore;id=AJ617376
 
-  <DT> <A href="?format=nonexistent;style=raw;db=genbank;id=AJ617376">Error3</A> sample : unknown format
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=nonexistent;style=raw;db=genbank;id=AJ617376"
+  <DT> <A href="?format=nonexistent;style=raw;db=nuccore;id=AJ617376">Error3</A> sample : unknown format
+  <DD> <%= base_url %>?format=nonexistent;style=raw;db=nuccore;id=AJ617376
 
-  <DT> <A href="?format=default;style=raw;db=genbank;id=nonexistent">Error4</A> sample : ID not found
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?format=default;style=raw;db=genbank;id=nonexistent"
+  <DT> <A href="?format=default;style=raw;db=nuccore;id=nonexistent">Error4</A> sample : ID not found
+  <DD> <%= base_url %>?format=default;style=raw;db=nuccore;id=nonexistent
 
   <DT> <A href="?style=raw;db=genes;id=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51">Error5</A> sample : too many IDs
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?style=raw;db=genes;id=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51
+  <DD> <%= base_url %>?style=raw;db=genes;id=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51
 
   <DT> <A href="?info=nonexistent">Error6</A> sample : unknown info
-  <DD> http://bioruby.org/cgi-bin/biofetch.rb?info=nonexistent"
+  <DD> <%= base_url %>?info=nonexistent"
 </DL>
 
 <H2>Other BioFetch implementations</H2>
diff --git a/sample/dbget b/sample/dbget
deleted file mode 100755
index 9f733fa..0000000
--- a/sample/dbget
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env ruby
-#
-# dbget - DBGET client
-#
-#  Interface to GenomeNet DBGET system - http://www.genome.jp/dbget/
-#
-#   Copyright (C) 2001 KATAYAMA Toshiaki <k at bioruby.org>
-#
-#  This program is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2 of the License, or
-#  (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software
-#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-#
-#  $Id: dbget,v 1.7 2004/08/24 00:09:24 k Exp $
-#
-
-require "bio/io/dbget"
-
-# DBGET command
-com = File.basename($0)			# e.g. $PATH/bget db entry
-com = ARGV.shift if com == "dbget"	# e.g. $PATH/dbget bget db entry
-
-# DBGET query strings
-arg = ARGV.join(" ")
-
-# DBGET result
-print Bio::DBGET.dbget(com, arg)
-
diff --git a/sample/demo_ddbjxml.rb b/sample/demo_ddbjxml.rb
deleted file mode 100644
index 9900816..0000000
--- a/sample/demo_ddbjxml.rb
+++ /dev/null
@@ -1,212 +0,0 @@
-#
-# = sample/demo_ddbjxml.rb - demonstration of Bio::DDBJ::XML, DDBJ SOAP access
-#
-# Copyright::	Copyright (C) 2003, 2004
-#		Toshiaki Katayama <k at bioruby.org>
-# License::	The Ruby License
-#
-#
-#
-# == Description
-#
-# Demonstration of Bio::DDBJ::XML, DDBJ SOAP server access class.
-#
-# == Requirements
-#
-# Internet connection is needed.
-#
-# == Usage
-#
-# Simply run this script.
-#
-#  $ ruby demo_ddbjxml.rb
-#
-# == Notes
-#
-# It can not be run with Ruby 1.9 because SOAP4R (SOAP support for Ruby)
-# currently does not support Ruby 1.9.
-#
-# == Development information
-#
-# The code was moved from lib/bio/io/ddbjxml.rb.
-#
-
-require 'bio'
-
-#if __FILE__ == $0
-
-  begin
-    require 'pp'
-    alias p pp
-  rescue LoadError
-  end
-
-  puts ">>> Bio::DDBJ::XML::Blast"
-  serv = Bio::DDBJ::XML::Blast.new
-# serv.log = STDERR
-
-  query = "MSSRIARALALVVTLLHLTRLALSTCPAACHCPLEAPKCAPGVGLVRDGCGCCKVCAKQL"
-
-  puts "### searchSimple('blastp', 'SWISS', query)"
-  puts serv.searchSimple('blastp', 'SWISS', query)
-
-  puts "### searchParam('tblastn', 'ddbjvrl', query, '-m 8')"
-  puts serv.searchParam('tblastn', 'ddbjvrl', query, '-m 8')
-
-
-  puts ">>> Bio::DDBJ::XML::ClustalW"
-  serv = Bio::DDBJ::XML::ClustalW.new
-
-  query = <<END
-> RABSTOUT   rabbit Guinness receptor
-   LKMHLMGHLKMGLKMGLKGMHLMHLKHMHLMTYTYTTYRRWPLWMWLPDFGHAS
-   ADSCVCAHGFAVCACFAHFDVCFGAVCFHAVCFAHVCFAAAVCFAVCAC
-> MUSNOSE   mouse nose drying factor
-    mhkmmhkgmkhmhgmhmhglhmkmhlkmgkhmgkmkytytytryrwtqtqwtwyt
-    fdgfdsgafdagfdgfsagdfavdfdvgavfsvfgvdfsvdgvagvfdv
-> HSHEAVEN    human Guinness receptor repeat
- mhkmmhkgmkhmhgmhmhg   lhmkmhlkmgkhmgkmk  ytytytryrwtqtqwtwyt
- fdgfdsgafdagfdgfsag   dfavdfdvgavfsvfgv  dfsvdgvagvfdv
- mhkmmhkgmkhmhgmhmhg   lhmkmhlkmgkhmgkmk  ytytytryrwtqtqwtwyt
- fdgfdsgafdagfdgfsag   dfavdfdvgavfsvfgv  dfsvdgvagvfdv
-END
-
-  puts "### analyzeSimple(query)"
-  puts serv.analyzeSimple(query)
-
-  puts "### analyzeParam(query, '-align -matrix=blosum')"
-  puts serv.analyzeParam(query, '-align -matrix=blosum')
-
-
-  puts ">>> Bio::DDBJ::XML::DDBJ"
-  serv = Bio::DDBJ::XML::DDBJ.new
-
-  puts "### getFFEntry('AB000050')"
-  puts serv.getFFEntry('AB000050')
-
-  puts "### getXMLEntry('AB000050')"
-  puts serv.getXMLEntry('AB000050')
-
-  puts "### getFeatureInfo('AB000050', 'cds')"
-  puts serv.getFeatureInfo('AB000050', 'cds')
-
-  puts "### getAllFeatures('AB000050')"
-  puts serv.getAllFeatures('AB000050')
-
-  puts "### getRelatedFeatures('AL121903', '59000', '64000')"
-  puts serv.getRelatedFeatures('AL121903', '59000', '64000')
-
-  puts "### getRelatedFeaturesSeq('AL121903', '59000', '64000')"
-  puts serv.getRelatedFeaturesSeq('AL121903', '59000', '64000')
-
-
-  puts ">>> Bio::DDBJ::XML::Fasta"
-  serv = Bio::DDBJ::XML::Fasta.new
-
-  query = ">Test\nMSDGAVQPDG GQPAVRNERA TGSGNGSGGG GGGGSGGVGI"
-
-  puts "### searchSimple('fasta34', 'PDB', query)"
-  puts serv.searchSimple('fasta34', 'PDB', query)
-
-  query = ">Test\nAGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC"
-
-  puts "### searchParam('fastx34_t', 'PDB', query, '-n')"
-  puts serv.searchParam('fastx34_t', 'PDB', query, '-n')
-
-
-  puts ">>> Bio::DDBJ::XML::GetEntry"
-  serv = Bio::DDBJ::XML::GetEntry.new
-
-  puts "### getDDBJEntry('AB000050')"
-  puts serv.getDDBJEntry('AB000050')
-
-  puts "### getPDBEntry('1AAR')"
-  puts serv. getPDBEntry('1AAR')
-
-
-  puts ">>> Bio::DDBJ::XML::Gib"
-  serv = Bio::DDBJ::XML::Gib.new
-
-  puts "### getOrganismList"
-  puts serv.getOrganismList
-
-  puts "### getChIDList"
-  puts serv.getChIDList
-
-  puts "### getOrganismNameFromChid('Sent_CT18:')"
-  puts serv.getOrganismNameFromChid('Sent_CT18:')
-
-  puts "### getChIDFromOrganismName('Aquifex aeolicus VF5')"
-  puts serv.getChIDFromOrganismName('Aquifex aeolicus VF5')
-
-  puts "### getAccession('Ecol_K12_MG1655:')"
-  puts serv.getAccession('Ecol_K12_MG1655:')
-
-  puts "### getPieceNumber('Mgen_G37:')"
-  puts serv.getPieceNumber('Mgen_G37:')
-
-  puts "### getDivision('Mgen_G37:')"
-  puts serv.getDivision('Mgen_G37:')
-
-  puts "### getType('Mgen_G37:')"
-  puts serv.getType('Mgen_G37:')
-
-  puts "### getCDS('Aaeo_VF5:ece1')"
-  puts serv.getCDS('Aaeo_VF5:ece1')
-
-  puts "### getFlatFile('Nost_PCC7120:pCC7120zeta')"
-  puts serv.getFlatFile('Nost_PCC7120:pCC7120zeta')
-
-  puts "### getFastaFile('Nost_PCC7120:pCC7120zeta')"
-  puts serv.getFastaFile('Nost_PCC7120:pCC7120zeta', 'cdsaa')
-
-
-  puts ">>> Bio::DDBJ::XML::Gtop"
-  serv = Bio::DDBJ::XML::Gtop.new
-
-  puts "### getOrganismList"
-  puts serv.getOrganismList
-
-  puts "### getMasterInfo"
-  puts serv.getMasterInfo('thrA', 'ecol0')
-
-
-#  puts ">>> Bio::DDBJ::XML::PML"
-#  serv = Bio::DDBJ::XML::PML.new
-#
-#  puts "### getVariation('1')"
-#  puts serv.getVariation('1')
-
-
-  puts ">>> Bio::DDBJ::XML::SRS"
-  serv = Bio::DDBJ::XML::SRS.new
-
-  puts "### searchSimple('[pathway-des:sugar]')"
-  puts serv.searchSimple('[pathway-des:sugar]')
-
-  puts "### searchParam('[swissprot-des:cohesin]', '-f seq -sf fasta')"
-  puts serv.searchParam('[swissprot-des:cohesin]', '-f seq -sf fasta')
-
-
-  puts ">>> Bio::DDBJ::XML::TxSearch"
-  serv = Bio::DDBJ::XML::TxSearch.new
-
-  puts "### searchSimple('*coli')"
-  puts serv.searchSimple('*coli')
-
-  puts "### searchSimple('*tardigrada*')"
-  puts serv.searchSimple('*tardigrada*')
-
-  puts "### getTxId('Escherichia coli')"
-  puts serv.getTxId('Escherichia coli')
-
-  puts "### getTxName('562')"
-  puts serv.getTxName('562')
-
-  query = "Campylobacter coli\nEscherichia coli"
-  rank = "family\ngenus"
-
-  puts "### searchLineage(query, rank, 'Bacteria')"
-  puts serv.searchLineage(query, rank, 'Bacteria')
-
-#end
diff --git a/sample/demo_kegg_taxonomy.rb b/sample/demo_kegg_taxonomy.rb
deleted file mode 100644
index 6a272d5..0000000
--- a/sample/demo_kegg_taxonomy.rb
+++ /dev/null
@@ -1,92 +0,0 @@
-#
-# = sample/demo_kegg_taxonomy.rb - demonstration of Bio::KEGG::Taxonomy
-#
-# Copyright::  Copyright (C) 2007 Toshiaki Katayama <k at bioruby.org>
-# License::    The Ruby License
-#
-#
-# == Description
-#
-# IMPORTANT NOTE: currently, this sample does not work!
-#
-# Demonstration of Bio::KEGG::Taxonomy.
-#
-# == Usage
-#
-# Specify a file containing KEGG Taxonomy data.
-#
-#  $ ruby demo_kegg_taxonomy.rb file
-#
-# Optionally, when a file containing organisms list (1 line per 1 organism)
-# is specified after the file, only the specified organisms are shown.
-#
-#  $ ruby demo_kegg_taxonomy.rb kegg_taxonomy_file org_list_file
-#
-# == Example of running this script
-#
-# Download test data.
-#
-#  $ wget ftp://ftp.genome.jp/pub/kegg/genes/taxonomy
-#
-# The downloaded filename is "taxonomy".
-#
-# Run this script.
-#
-#  $ ruby -Ilib sample/demo_kegg_taxonomy.rb taxonomy
-#
-# == Development information
-#
-# The code was moved from lib/bio/db/kegg/taxonomy.rb.
-#
-
-require 'bio'
-
-#if __FILE__ == $0
-
-  # Usage:
-  # % wget ftp://ftp.genome.jp/pub/kegg/genes/taxonomy
-  # % ruby taxonomy.rb taxonomy | less -S
-
-  taxonomy = ARGV.shift
-  org_list = ARGV.shift || nil
-
-  if org_list
-    orgs = File.readlines(org_list).map{|x| x.strip}
-  else
-    orgs = nil
-  end
-
-  tree = Bio::KEGG::Taxonomy.new(taxonomy, orgs)
-
-  puts ">>> tree - original"
-  puts tree
-
-  puts ">>> tree - after compact"
-  tree.compact
-  puts tree
-
-  puts ">>> tree - after reduce"
-  tree.reduce
-  puts tree
-
-  puts ">>> path - sorted"
-  tree.path.sort.each do |path|
-    puts path.join("/")
-  end
-
-  puts ">>> group : orgs"
-  tree.dfs(tree.root) do |parent, children|
-    if orgs = tree.organisms(parent)
-      puts "#{parent.ljust(30)} (#{orgs.size})\t#{orgs.join(', ')}"
-    end
-  end
-
-  puts ">>> group : subgroups"
-  tree.dfs_with_level(tree.root) do |parent, children, level|
-    subgroups = children.keys.sort
-    indent = " " * level
-    label  = "#{indent} #{level} #{parent}"
-    puts "#{label.ljust(35)}\t#{subgroups.join(', ')}"
-  end
-
-#end
diff --git a/sample/demo_keggapi.rb b/sample/demo_keggapi.rb
deleted file mode 100644
index 9d0e12d..0000000
--- a/sample/demo_keggapi.rb
+++ /dev/null
@@ -1,502 +0,0 @@
-#
-# = sample/demo_keggapi.rb - demonstration of Bio::KEGG::API web service client
-#
-# Copyright::  Copyright (C) 2003, 2004 Toshiaki Katayama <k at bioruby.org>
-# License::    The Ruby License
-#
-#
-# == Description
-#
-# Demonstration of Bio::KEGG::API, the KEGG API web service client via
-# SOAP/WSDL.
-#
-# == Requirements
-#
-# Internet connection is needed.
-#
-# == Usage
-#
-# Simply run this script.
-#
-#  $ ruby demo_keggapi.rb
-#
-# == Notes
-#
-# * It may take long time to run this script.
-# * It can not be run with Ruby 1.9 because SOAP4R (SOAP support for Ruby)
-#   currently does not support Ruby 1.9.
-#
-# == Development information
-#
-# The code was moved from lib/bio/io/keggapi.rb, and modified as below:
-#
-# * Commented out deprecated methods: get_neighbors_by_gene,
-#   get_similarity_between_genes, get_ko_members, get_oc_members_by_gene,
-#   get_pc_members_by_gene.
-# * Commented out some methods internally using the deprecated methods:
-#   get_all_neighbors_by_gene, get_all_oc_members_by_gene,
-#   get_all_pc_members_by_gene.
-#
-
-require 'bio'
-
-#if __FILE__ == $0
-
-  begin
-    require 'pp'
-    alias p pp
-  rescue LoadError
-  end
-
-  puts ">>> KEGG API"
-  serv = Bio::KEGG::API.new
-# serv.log = STDERR
-
-  puts "# * parameters"
-  puts "        wsdl : #{serv.wsdl}"
-  puts "         log : #{serv.log}"
-  puts "       start : #{serv.start}"
-  puts " max_results : #{serv.max_results}"
-
-  puts "=== META"
-
-  puts "### list_databases"
-  list = serv.list_databases
-  list.each do |db|
-    print db.entry_id, "\t", db.definition, "\n"
-  end
-
-  puts "### list_organisms"
-  list = serv.list_organisms
-  list.each do |org|
-    print org.entry_id, "\t", org.definition, "\n"
-  end
-
-  puts "### list_pathways('map') : reference pathway"
-  list = serv.list_pathways("map")
-  list.each do |path|
-    print path.entry_id, "\t", path.definition, "\n"
-  end
-
-  puts "### list_pathways('eco') : E. coli pathway"
-  list = serv.list_pathways("eco")
-  list.each do |path|
-    print path.entry_id, "\t", path.definition, "\n"
-  end
-
-  puts "=== DBGET"
-
-  puts "### binfo('all')"
-  puts serv.binfo("all")
-
-  puts "### binfo('genbank')"
-  puts serv.binfo("genbank")
-
-  puts "### bfind('genbank kinase cell cycle human')"
-  puts serv.bfind("genbank kinase cell cycle human")
-
-  puts "### bget('gb:AJ617376')"
-  puts serv.bget("gb:AJ617376")
-
-  puts "### bget('eco:b0002 eco:b0003')"
-  puts serv.bget("eco:b0002 eco:b0003")
-
-  puts "### btit('eco:b0002 eco:b0003')"
-  puts serv.btit("eco:b0002 eco:b0003")
-
-  puts "# * get_entries(['eco:b0002', 'eco:b0003'])"
-  puts serv.get_entries(["eco:b0002", "eco:b0003"])
-
-  puts "# * get_aaseqs(['eco:b0002', 'eco:b0003'])"
-  puts serv.get_aaseqs(["eco:b0002", "eco:b0003"])
-
-  puts "# * get_naseqs(['eco:b0002', 'eco:b0003'])"
-  puts serv.get_naseqs(["eco:b0002", "eco:b0003"])
-
-  puts "# * get_definitions(['eco:b0002', 'eco:b0003'])"
-  puts serv.get_definitions(["eco:b0002", "eco:b0003"])
-
-  puts "# * get_definitions(('eco:b0001'..'eco:b0200').to_a)"
-  puts serv.get_definitions(("eco:b0001".."eco:b0200").to_a)
-
-  puts "=== LinkDB"
-
-  puts "### get_linkdb_by_entry('eco:b0002', 'pathway', 1, 5)"
-  list = serv.get_linkdb_by_entry("eco:b0002", "pathway", 1, 5)
-  list.each do |link|
-    puts [ link.entry_id1, link.entry_id2, link.type, link.path ].join("\t")
-  end
-
-  puts "# * get_all_linkdb_by_entry('eco:b0002', 'pathway')"
-  list = serv.get_all_linkdb_by_entry("eco:b0002", "pathway")
-  list.each do |link|
-    puts [ link.entry_id1, link.entry_id2, link.type, link.path ].join("\t")
-  end
-
-  puts "=== SSDB"
-
-  # The method "get_neighbors_by_gene" is deprecated in 2005-02-20.
-  #
-  #puts "### get_neighbors_by_gene('eco:b0002', 'all', 1, 5)"
-  #list = serv.get_neighbors_by_gene("eco:b0002", "all", 1, 5)
-  #list.each do |hit|
-  #  puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  #end
-
-  # The method "get_all_neighbors_by_gene" can not be used because
-  # it internally uses the deprecated "get_neighbors_by_gene" method.
-  #
-  #puts "# * get_all_neighbors_by_gene('eco:b0002', 'bsu')"
-  #list = serv.get_all_neighbors_by_gene("eco:b0002", "bsu")
-  #list.each do |hit|
-  #  puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  #end
-
-  puts "### get_best_best_neighbors_by_gene('eco:b0002', 1, 5)"
-  list = serv.get_best_best_neighbors_by_gene("eco:b0002", 1, 5)
-  list.each do |hit|
-    puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  end
-
-  puts "# * get_all_best_best_neighbors_by_gene('eco:b0002')"
-  list = serv.get_all_best_best_neighbors_by_gene("eco:b0002")
-  list.each do |hit|
-    puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  end
-
-  puts "### get_best_neighbors_by_gene('eco:b0002', 1, 5)"
-  list = serv.get_best_neighbors_by_gene("eco:b0002", 1, 5)
-  list.each do |hit|
-    puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  end
-
-  puts "# * get_all_best_neighbors_by_gene('eco:b0002')"
-  list = serv.get_all_best_neighbors_by_gene("eco:b0002")
-  list.each do |hit|
-    puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  end
-
-  puts "### get_reverse_best_neighbors_by_gene('eco:b0002', 1, 5)"
-  list = serv.get_reverse_best_neighbors_by_gene("eco:b0002", 1, 5)
-  list.each do |hit|
-    puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  end
-
-  puts "# * get_all_reverse_best_neighbors_by_gene('eco:b0002')"
-  list = serv.get_all_reverse_best_neighbors_by_gene("eco:b0002")
-  list.each do |hit|
-    puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  end
-
-  puts "### get_paralogs_by_gene('eco:b0002', 1, 5)"
-  list = serv.get_paralogs_by_gene("eco:b0002", 1, 5)
-  list.each do |hit|
-    puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  end
-
-  puts "# * get_all_paralogs_by_gene('eco:b0002')"
-  list = serv.get_all_paralogs_by_gene("eco:b0002")
-  list.each do |hit|
-    puts [ hit.genes_id1, hit.genes_id2, hit.sw_score ].join("\t")
-  end
-
-  # The method "get_similarity_between_genes" is deprecated in 2005-02-20.
-  #
-  #puts "### get_similarity_between_genes('eco:b0002', 'bsu:BG10350')"
-  #relation = serv.get_similarity_between_genes("eco:b0002", "bsu:BG10350")
-  #puts "        genes_id1 : #{relation.genes_id1}"		# string
-  #puts "        genes_id2 : #{relation.genes_id2}"		# string
-  #puts "         sw_score : #{relation.sw_score}"		# int
-  #puts "        bit_score : #{relation.bit_score}"		# float
-  #puts "         identity : #{relation.identity}"		# float
-  #puts "          overlap : #{relation.overlap}"		# int
-  #puts "  start_position1 : #{relation.start_position1}"	# int
-  #puts "    end_position1 : #{relation.end_position1}"		# int
-  #puts "  start_position2 : #{relation.start_position2}"	# int
-  #puts "    end_position2 : #{relation.end_position2}"		# int
-  #puts "   best_flag_1to2 : #{relation.best_flag_1to2}"		# boolean
-  #puts "   best_flag_2to1 : #{relation.best_flag_2to1}"		# boolean
-  #puts "      definition1 : #{relation.definition1}"		# string
-  #puts "      definition2 : #{relation.definition2}"		# string
-  #puts "          length1 : #{relation.length1}"		# int
-  #puts "          length2 : #{relation.length2}"		# int
-
-  puts "=== MOTIF"
-
-  puts "### get_motifs_by_gene('eco:b0002', 'pfam')"
-  list = serv.get_motifs_by_gene("eco:b0002", "pfam")
-  list.each do |motif|
-    puts motif.motif_id
-  end if list
-
-  puts "### get_motifs_by_gene('eco:b0002', 'tfam')"
-  list = serv.get_motifs_by_gene("eco:b0002", "tfam")
-  list.each do |motif|
-    puts motif.motif_id
-  end if list
-
-  puts "### get_motifs_by_gene('eco:b0002', 'pspt')"
-  list = serv.get_motifs_by_gene("eco:b0002", "pspt")
-  list.each do |motif|
-    puts motif.motif_id
-  end if list
-
-  puts "### get_motifs_by_gene('eco:b0002', 'pspf')"
-  list = serv.get_motifs_by_gene("eco:b0002", "pspf")
-  list.each do |motif|
-    puts motif.motif_id
-  end if list
-
-  puts "### get_motifs_by_gene('eco:b0002', 'all')"
-  list = serv.get_motifs_by_gene("eco:b0002", "all")
-  list.each do |motif|
-    puts "# * motif result"
-    puts "       motif_id : #{motif.motif_id}"
-    puts "     definition : #{motif.definition}"
-    puts "       genes_id : #{motif.genes_id}"
-    puts " start_position : #{motif.start_position}"
-    puts "   end_position : #{motif.end_position}"
-    puts "          score : #{motif.score}"
-    puts "         evalue : #{motif.evalue}"
-  end
-
-  puts "### get_genes_by_motifs(['pf:ACT', 'ps:ASPARTOKINASE'], 1, 5)"
-  list = serv.get_genes_by_motifs(["pf:ACT", "ps:ASPARTOKINASE"], 1, 5)
-  list.each do |gene|
-    puts [ gene.entry_id, gene.definition ].join("\t")
-  end
-
-  puts "# * get_all_genes_by_motifs(['pf:ACT', 'ps:ASPARTOKINASE'])"
-  list = serv.get_all_genes_by_motifs(["pf:ACT", "ps:ASPARTOKINASE"])
-  list.each do |gene|
-    puts [ gene.entry_id, gene.definition ].join("\t")
-  end
-
-  puts "=== KO, OC, PC"
-
-  puts "### get_ko_by_gene('eco:b0002')"
-  list = serv.get_ko_by_gene("eco:b0002")
-  list.each do |ko|
-    puts ko
-  end
-
-  # The method "get_ko_members" is removed in 2005-06-01.
-  # 
-  #puts "### get_ko_members('ko:K00003')"
-  #list = serv.get_ko_members("ko:K00003")
-  #list.each do |gene|
-  #  puts gene
-  #end
-
-  # The method "get_oc_members_by_gene" is removed in 2006-10-04.
-  #
-  #puts "### get_oc_members_by_gene('eco:b0002', 1, 5)"
-  #list = serv.get_oc_members_by_gene("eco:b0002", 1, 5)
-  #list.each do |gene|
-  #  puts gene
-  #end
-
-  # The method "get_all_oc_members_by_gene" can not be used because
-  # it internally uses the deprecated "get_oc_members_by_gene" method.
-  #
-  #puts "# * get_all_oc_members_by_gene('eco:b0002')"
-  #list = serv.get_all_oc_members_by_gene("eco:b0002")
-  #list.each do |gene|
-  #  puts gene
-  #end
-
-  # The method "get_pc_members_by_gene" is removed in 2006-10-04.
-  #
-  #puts "### get_pc_members_by_gene('eco:b0002', 1, 5)"
-  #list = serv.get_pc_members_by_gene("eco:b0002", 1, 5)
-  #list.each do |gene|
-  #  puts gene
-  #end
-
-  # The method "get_all_pc_members_by_gene" can not be used because
-  # it internally uses the deprecated "get_pc_members_by_gene" method.
-  #
-  #puts "# * get_all_pc_members_by_gene('eco:b0002')"
-  #list = serv.get_all_pc_members_by_gene("eco:b0002")
-  #list.each do |gene|
-  #  puts gene
-  #end
-
-  puts "=== PATHWAY"
-
-  puts "==== coloring pathway"
-
-  puts "### mark_pathway_by_objects('path:eco00260', obj_list)"
-  puts "  obj_list = ['eco:b0002', 'cpd:C00263']"
-  obj_list = ["eco:b0002", "cpd:C00263"]
-  url = serv.mark_pathway_by_objects("path:eco00260", obj_list)
-  puts url
-
-  puts "### color_pathway_by_objects('path:eco00053', obj_list, fg_list, bg_list)"
-  puts "  obj_list = ['eco:b0207', 'eco:b1300']"
-  puts "  fg_list  = ['blue', '#00ff00']"
-  puts "  bg_list  = ['#ff0000', 'yellow']"
-  obj_list = ["eco:b0207", "eco:b1300"]
-  fg_list  = ["blue", "#00ff00"]
-  bg_list  = ["#ff0000", "yellow"]
-  url = serv.color_pathway_by_objects("path:eco00053", obj_list, fg_list, bg_list)
-  puts url
-
-  #puts "# * save_image(#{url})"
-  #filename = serv.save_image(url, "test.gif")
-  #filename = serv.save_image(url)
-  #puts filename
-
-  puts "==== objects on pathway"
-
-  puts "### get_genes_by_pathway('path:map00010')"
-  list = serv.get_genes_by_pathway("path:map00010")
-  list.each do |gene|
-    puts gene
-  end
-
-  puts "### get_genes_by_pathway('path:eco00010')"
-  list = serv.get_genes_by_pathway("path:eco00010")
-  list.each do |gene|
-    puts gene
-  end
-
-  puts "### get_enzymes_by_pathway('path:map00010')"
-  list = serv.get_enzymes_by_pathway("path:map00010")
-  list.each do |enzyme|
-    puts enzyme
-  end
-
-  puts "### get_enzymes_by_pathway('path:eco00010')"
-  list = serv.get_enzymes_by_pathway("path:eco00010")
-  list.each do |enzyme|
-    puts enzyme
-  end
-
-  puts "### get_compounds_by_pathway('path:map00010')"
-  list = serv.get_compounds_by_pathway("path:map00010")
-  list.each do |compound|
-    puts compound
-  end
-
-  puts "### get_compounds_by_pathway('path:eco00010')"
-  list = serv.get_compounds_by_pathway("path:eco00010")
-  list.each do |compound|
-    puts compound
-  end
-
-  puts "### get_reactions_by_pathway('path:map00010')"
-  list = serv.get_reactions_by_pathway("path:map00010")
-  list.each do |reaction|
-    puts reaction
-  end
-
-  puts "### get_reactions_by_pathway('path:eco00010')"
-  list = serv.get_reactions_by_pathway("path:eco00010")
-  list.each do |reaction|
-    puts reaction
-  end
-
-  puts "==== pathway by objects"
-
-  puts "### get_pathways_by_genes(['eco:b0756', 'eco:b1002'])"
-  list = serv.get_pathways_by_genes(["eco:b0756", "eco:b1002"])
-  list.each do |path|
-    puts path
-  end
-
-  puts "### get_pathways_by_enzymes(['ec:5.1.3.3', 'ec:3.1.3.10'])"
-  list = serv.get_pathways_by_enzymes(["ec:5.1.3.3", "ec:3.1.3.10"])
-  list.each do |path|
-    puts path
-  end
-
-  puts "### get_pathways_by_compounds(['cpd:C00221', 'cpd:C00267'])"
-  list = serv.get_pathways_by_compounds(["cpd:C00221", "cpd:C00267"])
-  list.each do |path|
-    puts path
-  end
-
-  puts "### get_pathways_by_reactions(['rn:R00014', 'rn:R00710'])"
-  list = serv.get_pathways_by_reactions(["rn:R00014", "rn:R00710"])
-  list.each do |path|
-    puts path
-  end
-
-  puts "==== relation between objects"
-
-  puts "### get_linked_pathways('path:eco00620')"
-  list = serv.get_linked_pathways('path:eco00620')
-  list.each do |path|
-    puts path
-  end
-
-  puts "### get_genes_by_enzyme('ec:1.1.1.1', 'eco')"
-  list = serv.get_genes_by_enzyme("ec:1.1.1.1", "eco")
-  list.each do |gene|
-    puts gene
-  end
-
-  puts "### get_enzymes_by_gene('eco:b0002')"
-  list = serv.get_enzymes_by_gene("eco:b0002")
-  list.each do |enzyme|
-    puts enzyme
-  end
-
-  puts "### get_enzymes_by_compound('cpd:C00345')"
-  list = serv.get_enzymes_by_compound("cpd:C00345")
-  list.each do |enzyme|
-    puts enzyme
-  end
-
-  puts "### get_enzymes_by_reaction('rn:R00100')"
-  list = serv.get_enzymes_by_reaction("rn:R00100")
-  list.each do |enzyme|
-    puts enzyme
-  end
-
-  puts "### get_compounds_by_enzyme('ec:2.7.1.12')"
-  list = serv.get_compounds_by_enzyme("ec:2.7.1.12")
-  list.each do |compound|
-    puts compound
-  end
-
-  puts "### get_compounds_by_reaction('rn:R00100')"
-  list = serv.get_compounds_by_reaction("rn:R00100")
-  list.each do |compound|
-    puts compound
-  end
-  
-  puts "### get_reactions_by_enzyme('ec:2.7.1.12')"
-  list = serv.get_reactions_by_enzyme("ec:2.7.1.12")
-  list.each do |reaction|
-    puts reaction
-  end
-
-  puts "### get_reactions_by_compound('cpd:C00199')"
-  list = serv.get_reactions_by_compound("cpd:C00199")
-  list.each do |reaction|
-    puts reaction
-  end
-  
-  puts "=== GENES"
-
-  puts "### get_genes_by_organism('mge', 1, 5)"
-  list = serv.get_genes_by_organism("mge", 1, 5)
-  list.each do |gene|
-    puts gene
-  end
-
-  puts "# * get_all_genes_by_organism('mge')"
-  list = serv.get_all_genes_by_organism("mge")
-  list.each do |gene|
-    puts gene
-  end
-  
-  puts "=== GENOME"
-
-  puts "### get_number_of_genes_by_organism(org)"
-  puts serv.get_number_of_genes_by_organism("mge")
-
-#end
-
diff --git a/sample/psortplot_html.rb b/sample/psortplot_html.rb
deleted file mode 100644
index 33d56a6..0000000
--- a/sample/psortplot_html.rb
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/usr/bin/env ruby
-#
-# psortplot_html.rb - A KEGG API demo script. Generates a HTML file of 
-#                     genes marked by PSORT II predictions onto a 
-#                     KEGG/PATHWAY map.
-#
-#  Usage:
-#
-#   % ruby psortplot_html.rb
-#   % cat sce00010_psort2.html
-#   % ruby psortplot_html.rb path:eco00010
-#   % cat eco00010_psort2.html
-#
-# Copyright::  Copyright (C) 2005
-#              Mitsuteru C. Nakao <n at bioruby.org>
-# License::    The Ruby License
-#
-#  $Id: psortplot_html.rb,v 1.3 2007/04/05 23:35:42 trevor Exp $
-#
-
-require 'bio'
-
-class KEGG
-  DBGET_BASEURI = 'http://kegg.com/dbget-bin'
-  WWW_BGET_BASEURI = DBGET_BASEURI + '/www_bget'
-  WWW_PATHWAY_BASEURI = DBGET_BASEURI + '/get_pathway'
-
-  # path := path:sce00010
-  def self.link_pathway(path0)
-    path, path = path0.split(':')
-    org_name = path.scan(/(^\w{3})/).to_s
-    mapno = path.sub(org_name, '')
-    str = "<a href='#{WWW_PATHWAY_BASEURI}?org_name=#{org_name}&mapno=#{mapno}'>#{path0}</a>"
-  end
-  
-  # ec_num := ec:1.2.3.4
-  def self.link_ec(ec_num)
-    ec = ec_num.sub(/^ec:/, '')
-    str = "<a href='#{WWW_BGET_BASEURI}?enzyme+#{ec}'>#{ec_num}</a>"
-    return str
-  end
-
-  # gene := eco:b0002
-  def self.link_genes(gene)
-    org_name, gene_name = gene.split(':')
-    str = "<a href='#{WWW_BGET_BASEURI}?#{org_name}+#{gene_name}'>#{gene}</a>"
-    return str
-  end
-end
-
-
-class PSORT
-  COLOR_Palette = {
-    'csk' => "#FF0000",   # 'cytoskeletal'
-    'cyt' => "#FF8000",   # 'cytoplasmic'
-    'nuc' => "#FFFF00",   # 'nuclear'
-    'mit' => "#80FF00",   # 'mitochondrial'
-    'ves' => "#00FF00",	# 'vesicles of secretory system'
-    'end' => "#00FF80",	# 'endoplasmic reticulum'
-    'gol' => "#00FFFF",	# 'Golgi'
-    'vac' => "#0080FF",	# 'vacuolar'
-    'pla' => "#0000FF",	# 'plasma membrane'
-    'pox' => "#8000FF",	# 'peroxisomal'
-    'exc' => "#FF00FF",	# 'extracellular, including cell wall'
-    '---' => "#FF0080"	# 'other'
-  }
-end
-
-
-
-
-keggapi = Bio::KEGG::API.new
-psort2serv = Bio::PSORT::PSORT2.imsut
-
-# Obtains a list of genes on specified pathway
-pathway = ARGV.shift || "path:sce00010"
-genes = keggapi.get_genes_by_pathway(pathway)
-
-scl = Hash.new # protein subcelluler localizations
-ec = Hash.new  # EC numbers
-
-serial = 0
-sync_default = $stdout.sync
-$stdout.sync = true
-genes.each do |gene|
-  print "#{(serial += 1).to_s.rjust(genes.size.to_s.size)}\t#{gene}\t"
-  # Obtains amino acid sequence from KEGG GENES entry
-  aaseq = keggapi.get_aaseqs([gene])
-
-  # Predicts protein subcellualr localization
-  result = psort2serv.exec(aaseq)
-  scl[gene] = result.pred
-  print "#{scl[gene]}\t"
-
-  # Obtains the EC number from KEGG GENES entry
-  ec[gene] = keggapi.get_enzymes_by_gene(gene)
-  puts "#{ec[gene].inspect}"
-end
-$stdout.sync = sync_default
-
-
-
-
-fg_list = Array.new
-bg_list = Array.new
-
-genes.each do |gene|
-  fg_list << "#FF0000"
-  bg_list << PSORT::COLOR_Palette[scl[gene]]
-end
-
-# coloring KEGG pathway according to gene's localization
-url = keggapi.color_pathway_by_objects(pathway, genes, fg_list, bg_list)
-puts "#{url} downloaded."
-
-# remove "path:" prefix from pathway_id
-path_code = pathway.sub(/^path:/, '')
-
-# save the result image
-image_file = "#{path_code}_psort2.gif"
-begin
-  keggapi.save_image(url, image_file)
-end
-
-
-# create html with a color palette
-html = <<END
-<html>
-<head>
-<title>PSORT II prediction protein subcellular localization map of KEGG/PATHWAY (#{pathway})</title>
-<style>
-table { border-collapse: collapse; }
-td { border: 1px solid black; padding: 5px; }
-td.outer { border: none; vertical-align: top; }
-</style>
-</head>
-<body>
-<h1><li><a href="http://psort.ims.u-tokyo.ac.jp/helpwww2.html">PSORT II</a> prediction protein subcellular localization map of <a href="http://kegg.com/kegg/pathway.html">KEGG/PATHWAY</a> (<a href="">#{KEGG.link_pathway(pathway)})</h1>
-
-<table>
-<tr>
-  <td class=outer>
-    <table>
-    <tr>
-      <th></th>
-      <th>EC</th>
-      <th>Gene</th>
-      <th>Localization</th>
-    </tr>
-END
-
-
-# generate gene table with localization
-names = Bio::PSORT::PSORT2::SclNames
-multi_genes = Hash.new(0)
-
-ec.values.flatten.sort.uniq.each do |ec_num|
-  ec.find_all {|x| x[1].include?(ec_num) }.each do |gene|
-    gene = gene[0]
-    loc = scl[gene]
-    color = PSORT::COLOR_Palette[loc]
-    name = names[loc]
-    multi_genes[gene] += 1
-
-    html += <<END
-    <tr>
-      <td>#{multi_genes[gene]}</td>
-      <td>#{KEGG.link_ec(ec_num)}</td>
-      <td>#{KEGG.link_genes(gene)}</td>
-      <td bgcolor="#{color}">#{name}</td>
-    </tr>
-END
-  end
-end
-
-html += <<END
-    </table>
-  </td>
-  <td class=outer>
-    <table>
-    <tr>
-      <th>Code</th>
-      <th>Color</th>
-    </tr>
-END
-
-# generate color code table also
-PSORT::COLOR_Palette.sort.each do |code, color|
-  html += <<END
-    <tr>
-      <td>#{code}</td>
-      <td bgcolor="#{color}">#{names[code]}</td>
-    </tr>
-END
-end
-
-html += <<END
-    </table>
-  </td>
-</tr>
-</table>
-<br>
-<img src="#{image_file}">
-</body>
-</html>
-END
-
-# save generated HTML file
-html_file = "#{path_code}_psort2.html" 
-File.open(html_file, "w+") do |file|
-  file.puts html
-end
-
-puts "Open #{html_file}"
diff --git a/setup.rb b/setup.rb
index 6f83fae..03d37e7 100644
--- a/setup.rb
+++ b/setup.rb
@@ -104,7 +104,7 @@ class ConfigTable
   def remove(name)
     item = lookup(name)
     @items.delete_if {|i| i.name == name }
-    @table.delete_if {|name, i| i.name == name }
+    @table.delete_if {|na, i| i.name == na }
     item
   end
 
@@ -189,7 +189,7 @@ class ConfigTable
       path.sub(/\A#{Regexp.quote(c['prefix'])}/, '$prefix')
     }
 
-    if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg }
+    if arg = c['configure_args'].split.detect {|a| /--with-make-prog=/ =~ a }
       makeprog = arg.sub(/'/, '').split(/=/, 2)[1]
     else
       makeprog = 'make'
@@ -281,7 +281,6 @@ class ConfigTable
     'site-ruby-common' => 'siteruby',     # For backward compatibility
     'site-ruby'        => 'siterubyver',  # For backward compatibility
     'bin-dir'          => 'bindir',
-    'bin-dir'          => 'bindir',
     'rb-dir'           => 'rbdir',
     'so-dir'           => 'sodir',
     'data-dir'         => 'datadir',
@@ -779,14 +778,14 @@ class ToplevelInstaller
   end
 
   def ToplevelInstaller.load_rbconfig
-    if arg = ARGV.detect {|arg| /\A--rbconfig=/ =~ arg }
+    if arg = ARGV.detect {|a| /\A--rbconfig=/ =~ a }
       ARGV.delete(arg)
       load File.expand_path(arg.split(/=/, 2)[1])
       $".push 'rbconfig.rb'
     else
       require 'rbconfig'
     end
-    ::Config::CONFIG
+    ::RbConfig::CONFIG
   end
 
   def initialize(ardir_root, config)
@@ -920,8 +919,8 @@ class ToplevelInstaller
       end
       set.push name
     end
-    evalopt.each do |name, value|
-      @config.lookup(name).evaluate value, @config
+    evalopt.each do |na, va|
+      @config.lookup(na).evaluate va, @config
     end
     # Check if configuration is valid
     set.each do |n|
diff --git a/test/data/clustalw/example1-seqnos.aln b/test/data/clustalw/example1-seqnos.aln
new file mode 100644
index 0000000..5016848
--- /dev/null
+++ b/test/data/clustalw/example1-seqnos.aln
@@ -0,0 +1,58 @@
+CLUSTAL 2.0.9 multiple sequence alignment
+
+
+query                      -MKNTLLKLGVCVSLLGITPFVSTISSVQAERTVEHKVIKNETGTISISQ 49
+gi|115023|sp|P10425|       MKKNTLLKVGLCVSLLGTTQFVSTISSVQASQKVEQIVIKNETGTISISQ 50
+gi|115030|sp|P25910|       -MKTVFILISMLFPVAVMAQKSVKIS-----------------DDISITQ 32
+gi|2984094                 MGGFLFFFLLVLFSFSSEYPKHVKET------------------LRKITD 32
+gi|282554|pir||S25844      -------------------------------------------MTVEVRE 7
+                                                                         .: :
+
+query                      LNKNVWVHTELGYFSG-EAVPSNGLVLNTSKGLVLVDSSWDDKLTKELIE 98
+gi|115023|sp|P10425|       LNKNVWVHTELGYFNG-EAVPSNGLVLNTSKGLVLVDSSWDNKLTKELIE 99
+gi|115030|sp|P25910|       LSDKVYTYVSLAEIEGWGMVPSNGMIVINNHQAALLDTPINDAQTEMLVN 82
+gi|2984094                 RIYGVFGVYEQVSYEN-RGFISNAYFYVADDGVLVVDALSTYKLGKELIE 81
+gi|282554|pir||S25844      VAEGVYAYEQAP---G-GWCVSNAGIVVGGDGALVVDTLSTIPRARRLAE 53
+                               *:   .     .     **. .   ..   ::*:       . * :
+
+query                      MVEKKFKKRVTDVIITHAHADRIGGMKTLKERGIKAHSTALTAELAKKNG 148
+gi|115023|sp|P10425|       MVEKKFQKRVTDVIITHAHADRIGGITALKERGIKAHSTALTAELAKKSG 149
+gi|115030|sp|P25910|       WVTDSLHAKVTTFIPNHWHGDCIGGLGYLQRKGVQSYANQMTIDLAKEKG 132
+gi|2984094                 SIRSVTNKPIRFLVVTHYHTDHFYGAKAFREVGAEVIAHEWAFDYISQPS 131
+gi|282554|pir||S25844      WVDKLAAGPGRTVVNTHFHGDHAFGNQVFAP-GTRIIAHEDMRSAMVTTG 102
+                            : .        .: .* * *   *   :   * .  :     .     .
+
+query                      --------------------YEEPLGDLQSVTNLKFGN----MKVETFYP 174
+gi|115023|sp|P10425|       --------------------YEEPLGDLQTVTNLKFGN----TKVETFYP 175
+gi|115030|sp|P25910|       --------------------LPVPEHGFTDSLTVSLDG----MPLQCYYL 158
+gi|2984094                 SYNFFLARKKILKEHLEGTELTPPTITLTKNLNVYLQVGKEYKRFEVLHL 181
+gi|282554|pir||S25844      ----LALTGLWPRVDWGEIELRPPNVTFRDRLTLHVGE----RQVELICV 144
+                                                  *   :    .: .        .:    
+
+query                      GKGHTEDNIVVWLPQYQILAGGCLVKSASSKDLGNVADAYVNEWSTSIEN 224
+gi|115023|sp|P10425|       GKGHTEDNIVVWLPQYQILAGGCLVKSAEAKNLGNVADAYVNEWSTSIEN 225
+gi|115030|sp|P25910|       GGGHATDNIVVWLPTENILFGGCMLKDNQATSIGNISDADVTAWPKTLDK 208
+gi|2984094                 CRAHTNGDIVVWIPDEKVLFSGDIVFDGRLPFLG---SGNSRTWLVCLDE 228
+gi|282554|pir||S25844      GPAHTDHDVVVWLPEERVLFAGDVVMSGVTPFAL---FGSVAGTLAALDR 191
+                             .*:  ::***:*  .:* .* :: .           .        ::.
+
+query                      VLKRYGNINLVVPGHGEVGDR-----GLLLHTLDLLK------------- 256
+gi|115023|sp|P10425|       MLKRYRNINLVVPGHGKVGDK-----GLLLHTLDLLK------------- 257
+gi|115030|sp|P25910|       VKAKFPSARYVVPGHGDYGGT-----ELIEHTKQIVNQYIESTSKP---- 249
+gi|2984094                 ILKMKPRILLPGHGEALIGEKKIK--EAVSWTRKYIKDLRETIRKLYEEG 276
+gi|282554|pir||S25844      LAELEPEVVVGGHGPVAGPEVIDANRDYLRWVQRLAADAVDRRLTPLQAA 241
+                           :            *              :  .                  
+
+query                      --------------------------------------------------
+gi|115023|sp|P10425|       --------------------------------------------------
+gi|115030|sp|P25910|       --------------------------------------------------
+gi|2984094                 --CDVECVRERINEELIKIDPSYAQVPVFF-NVNPVNAYYVYFEIENEIL 323
+gi|282554|pir||S25844      RRADLGAFAGLLDAERLVANLHRAHEELLGGHVRDAMEIFAELVAYNGGQ 291
+                                                                             
+
+query                      ------
+gi|115023|sp|P10425|       ------
+gi|115030|sp|P25910|       ------
+gi|2984094                 MGE--- 326
+gi|282554|pir||S25844      LPTCLA 297
+                                 
diff --git a/test/network/bio/appl/blast/test_remote.rb b/test/network/bio/appl/blast/test_remote.rb
index 2855845..2e799b9 100644
--- a/test/network/bio/appl/blast/test_remote.rb
+++ b/test/network/bio/appl/blast/test_remote.rb
@@ -1,5 +1,5 @@
 #
-# = test/functional/bio/appl/blast/test_remote.rb - Unit test for Bio::Blast::Remote::Genomenet and Bio::Blast::Remote::DDBJ with network connection
+# = test/functional/bio/appl/blast/test_remote.rb - Unit test for Bio::Blast::Remote::Genomenet with network connection
 #
 # Copyright::   Copyright (C) 2011
 #               Naohisa Goto <ng at bioruby.org>
@@ -74,20 +74,6 @@ module FuncTestBlastRemote
     end
   end #class NetTestBlastRemoteGenomeNet
 
-  # This test class only contains tests for meta information.
-  # BLAST execution tests are written in ../test_blast.rb 
-  class NetTestBlastRemoteDDBJ < Test::Unit::TestCase
-
-    include NetTestBlastRemoteCommon
-
-    BLASTN_DBNAME_KEYWORDS = [ /ddbj/i, /nt/i ]
-    BLASTP_DBNAME_KEYWORDS = [ /uniprot/i, /pdb/i ]
-
-    def setup
-      @klass = Bio::Blast::Remote::DDBJ
-    end
-  end #class NetTestBlastRemoteDDBJ
-
 end #module FuncTestBlastRemote
 end #module Bio
 
diff --git a/test/network/bio/appl/test_blast.rb b/test/network/bio/appl/test_blast.rb
index 93b4995..8808490 100644
--- a/test/network/bio/appl/test_blast.rb
+++ b/test/network/bio/appl/test_blast.rb
@@ -44,18 +44,6 @@ module FunctTestBlast
     end
   end #class NetTestBlast_GenomeNet
 
-  class NetTestBlast_DDBJ < Test::Unit::TestCase
-    include NetTestBlastCommonProteinQuery
-
-    def setup
-      @blast = Bio::Blast.new('blastp', 'SWISS',
-                              ['-e', '1e-10',
-                              '-v', '10',
-                              '-b', '10' ],
-                              'ddbj')
-    end
-  end #class NetTestBlast_DDBJ
-
 end #module FuncTestBlast
 end #module Bio
 
diff --git a/test/network/bio/io/test_ddbjrest.rb b/test/network/bio/io/test_ddbjrest.rb
deleted file mode 100644
index 49046a2..0000000
--- a/test/network/bio/io/test_ddbjrest.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# test/functional/bio/io/test_ddbjrest.rb - Functional test for Bio::DDBJ::REST
-#
-# Copyright::   Copyright (C) 2011
-#               Naohisa Goto <ng at bioruby.org>
-# License::     The Ruby License
-#
-
-# loading helper routine for testing bioruby
-require 'pathname'
-load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
-                            'bioruby_test_helper.rb')).cleanpath.to_s
-
-# libraries needed for the tests
-require 'bio/io/ddbjrest'
-require 'test/unit'
-
-module Bio
-module NetTestDDBJREST
-
-  class TestDDBJ < Test::Unit::TestCase
-
-    def setup
-      @obj = Bio::DDBJ::REST::DDBJ.new
-    end
-
-    def test_countBasePair
-      text = @obj.countBasePair("AF237819")
-      expected = {
-        "a" => 47,
-        "t" => 38,
-        "g" => 48,
-        "c" => 38
-      }
-      h = {}
-      text.each_line do |line|
-        base, count, percent = line.split(/\t/)
-        count = count.to_i
-        h[base] = count if count > 0
-      end
-      assert_equal(expected, h)
-    end
-
-  end #class TestDDBJ
-
-end #module NetTestDDBJREST
-end #module Bio
diff --git a/test/network/bio/io/test_ensembl.rb b/test/network/bio/io/test_ensembl.rb
deleted file mode 100644
index b048d70..0000000
--- a/test/network/bio/io/test_ensembl.rb
+++ /dev/null
@@ -1,230 +0,0 @@
-#
-# test/functional/bio/io/test_ensembl.rb - Functional test for Bio::Ensembl
-#
-# Copyright::   Copyright (C) 2007
-#               Mitsuteru C. Nakao <n at bioruby.org>
-# License::     The Ruby License
-#
-#  $Id:$
-#
-
-# loading helper routine for testing bioruby
-require 'pathname'
-load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
-                            'bioruby_test_helper.rb')).cleanpath.to_s
-
-# libraries needed for the tests
-require 'test/unit'
-require 'bio/io/ensembl'
-
-module Bio
-
-class FuncTestEnsembl < Test::Unit::TestCase
-  def setup
-    @serv = Bio::Ensembl.new('Homo_sapiens')
-  end
-  
-  def test_class
-    assert_equal(Bio::Ensembl, @serv.class)
-  end
-end
-
-class FuncTestEnsemblHuman < Test::Unit::TestCase
-  def setup
-    @serv = Bio::Ensembl.human
-  end 
-
-  def test_organism
-    assert_equal("Homo_sapiens", @serv.organism)
-  end
-  
-  def test_server
-    assert_equal("http://www.ensembl.org", @serv.server)
-  end
-end
-
-class FuncTestEnsemblHumanExportView < Test::Unit::TestCase
-  def setup
-    @serv = Bio::Ensembl.new('Homo_sapiens',
-                             'http://jul2008.archive.ensembl.org')
-  end
-
-  def test_fna_exportview
-    seq = ">4 dna:chromosome chromosome:NCBI36:4:1149206:1149209:1\nGAGA\n"
-    fna = @serv.exportview(4, 1149206, 1149209)
-    assert_equal(seq, fna)
-  end
-
-  def test_fasta_exportview_with_hash_4th_params
-    fna = @serv.exportview(4, 1149206, 1149209, :upstream => 10)
-    fna10 = @serv.exportview(4, 1149196, 1149209)
-    assert_equal(fna10, fna)
-  end
-
-  def test_fna_exportview_with_named_args
-    seq = ">4 dna:chromosome chromosome:NCBI36:4:1149206:1149209:1\nGAGA\n"
-    fna = @serv.exportview(:seq_region_name => 4,
-                           :anchor1 => 1149206,
-                           :anchor2 => 1149209)
-    assert_equal(seq, fna)
-  end 
-
-  def test_fasta_exportview_with_named_args_and_hash_4th_params
-    fna = @serv.exportview(:seq_region_name => 4, 
-                           :anchor1 => 1149206, 
-                           :anchor2 => 1149209, 
-                           :upstream => 10)
-    fna10 = @serv.exportview(:seq_region_name => 4, 
-                             :anchor1 => 1149196, 
-                             :anchor2 => 1149209)
-    assert_equal(fna10, fna)
-  end
-
-   def test_gff_exportview_for_empty_result
-     gff = @serv.exportview(4, 1149206, 1149209, ['gene'])
-     assert_equal('', gff)
-   end
-
-   def test_gff_exportview
-     # OR1A1 (Olfactory receptor 1A1)
-     lines = [ [ "17",
-                 "Ensembl",
-                 "Gene",
-                 "3065665",
-                 "3066594",
-                 ".",
-                 "+",
-                 "1",
-                 "gene_id=ENSG00000172146; transcript_id=ENST00000304094; exon_id=ENSE00001137815; gene_type=KNOWN_protein_coding"
-               ],
-               [ "17",
-                 "Vega",
-                 "Gene",
-                 "3065665",
-                 "3066594",
-                 ".",
-                 "+",
-                 "1",
-                 "gene_id=OTTHUMG00000090637; transcript_id=OTTHUMT00000207292; exon_id=OTTHUME00001080001; gene_type=KNOWN_protein_coding"
-               ]
-             ]
-     line = lines.collect { |x| x.join("\t") + "\n" }.join('')
-     gff = @serv.exportview(17, 3065665, 3066594, ['gene'])
-     assert_equal(line, gff)
-   end
-
-   def test_gff_exportview_with_named_args_for_empty_result
-     gff = @serv.exportview(:seq_region_name => 4,
-                            :anchor1 => 1149206,
-                            :anchor2 => 1149209, 
-                            :options => ['gene'])
-     assert_equal('', gff)
-   end 
-
-   def test_gff_exportview_with_named_args
-     # OR1A1 (Olfactory receptor 1A1)
-     lines = [ [ "17",
-                 "Ensembl",
-                 "Gene",
-                 "3065665",
-                 "3066594",
-                 ".",
-                 "+",
-                 "1",
-                 "gene_id=ENSG00000172146; transcript_id=ENST00000304094; exon_id=ENSE00001137815; gene_type=KNOWN_protein_coding"
-               ],
-               [ "17",
-                 "Vega",
-                 "Gene",
-                 "3065665",
-                 "3066594",
-                 ".",
-                 "+",
-                 "1",
-                 "gene_id=OTTHUMG00000090637; transcript_id=OTTHUMT00000207292; exon_id=OTTHUME00001080001; gene_type=KNOWN_protein_coding"
-               ]
-             ]
-     line = lines.collect { |x| x.join("\t") + "\n" }.join('')
-     gff = @serv.exportview(:seq_region_name => 17,
-                            :anchor1 => 3065665,
-                            :anchor2 => 3066594, 
-                            :options => ['gene'])
-     assert_equal(line, gff)
-   end 
-
-   def test_tab_exportview_with_named_args_for_empty_result
-     line = ["seqname",
-             "source",
-             "feature",
-             "start",
-             "end",
-             "score",
-             "strand",
-             "frame",
-             "gene_id",
-             "transcript_id",
-             "exon_id",
-             "gene_type"].join("\t") + "\n"
-     gff = @serv.exportview(:seq_region_name => 4,
-                            :anchor1 => 1149206,
-                            :anchor2 => 1149209, 
-                            :options => ['gene'],
-                            :format => 'tab')
-     assert_equal(line, gff)
-   end 
-
-   def test_tab_exportview_with_named_args
-     # OR1A1 (Olfactory receptor 1A1)
-     lines = [ [ "seqname",
-                 "source",
-                 "feature",
-                 "start",
-                 "end",
-                 "score",
-                 "strand",
-                 "frame",
-                 "gene_id",
-                 "transcript_id",
-                 "exon_id",
-                 "gene_type"
-               ],
-               [ "17",
-                 "Ensembl",
-                 "Gene",
-                 "3065665",
-                 "3066594",
-                 ".",
-                 "+",
-                 "1",
-                 "ENSG00000172146",
-                 "ENST00000304094",
-                 "ENSE00001137815",
-                 "KNOWN_protein_coding"
-               ],
-               [ "17",
-                 "Vega",
-                 "Gene",
-                 "3065665",
-                 "3066594",
-                 ".",
-                 "+",
-                 "1",
-                 "OTTHUMG00000090637",
-                 "OTTHUMT00000207292",
-                 "OTTHUME00001080001",
-                 "KNOWN_protein_coding"
-               ]
-             ]
-     line = lines.collect { |x| x.join("\t") + "\n" }.join('')
-     gff = @serv.exportview(:seq_region_name => 17,
-                            :anchor1 => 3065665,
-                            :anchor2 => 3066594, 
-                            :options => ['gene'],
-                            :format => 'tab')
-     assert_equal(line, gff)
-   end 
-
-
-end
-
-end # module Bio
diff --git a/test/network/bio/io/test_pubmed.rb b/test/network/bio/io/test_pubmed.rb
index b289680..8e34fff 100644
--- a/test/network/bio/io/test_pubmed.rb
+++ b/test/network/bio/io/test_pubmed.rb
@@ -108,6 +108,55 @@ module Bio
       assert(str.index(/\<PubmedArticleSet\>/))
     end
 
+    def test_search
+      a = @pm.search('(bioruby OR ruby) AND bioinformatics')
+      assert_kind_of(Array, a)
+      # Maximum number of results of Bio::PubMed#search is limited to 20.
+      assert_equal(20, a.size,
+                   'The failure may be caused by changes of NCBI PubMed.')
+      a.each do |x|
+        assert_kind_of(String, x)
+        assert_equal(x.strip, x.to_i.to_s,
+                     'PMID is not an integer value. This suggests that NCBI have changed the PMID policy.')
+      end
+    end
+
+    def test_query
+      pmid = 20739307
+      str = @pm.query(pmid)
+      assert_kind_of(String, str)
+      check_pubmed_entry(pmid, str)
+    end
+
+    def test_query_single_str
+      pmid = "20739307"
+      str = @pm.query(pmid)
+      assert_kind_of(String, str)
+      check_pubmed_entry(pmid, str)
+    end
+
+    def test_query_multiple
+      arg = [ "16734914", 16381885, "10592173" ]
+      str = @pm.query(*arg)
+      assert_kind_of(String, str)
+      str.split(/\n\n/).each do |s|
+        check_pubmed_entry(arg.shift, s)
+      end
+    end
+
+    def test_pmfetch
+      pmid = 20739307
+      str = @pm.pmfetch(pmid)
+      assert_kind_of(String, str)
+      check_pubmed_entry(pmid, str)
+    end
+
+    def test_pmfetch_str
+      pmid = "20739307"
+      str = @pm.pmfetch(pmid)
+      assert_kind_of(String, str)
+      check_pubmed_entry(pmid, str)
+    end
   end #module FuncTestPubmedCommon
 
   class FuncTestPubmed < Test::Unit::TestCase
diff --git a/test/network/bio/io/test_soapwsdl.rb b/test/network/bio/io/test_soapwsdl.rb
deleted file mode 100644
index e22d22c..0000000
--- a/test/network/bio/io/test_soapwsdl.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# test/functional/bio/io/test_soapwsdl.rb - Functional test for SOAP/WSDL
-#
-# Copyright::   Copyright (C) 2005,2007
-#               Mitsuteru C. Nakao <n at bioruby.org>
-# License::     The Ruby License
-#
-#  $Id:$ 
-#
-
-# loading helper routine for testing bioruby
-require 'pathname'
-load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
-                            'bioruby_test_helper.rb')).cleanpath.to_s
-
-# libraries needed for the tests
-require 'test/unit'
-require 'bio/io/soapwsdl'
-
-module Bio
-
-class FuncTestSOAPWSDL < Test::Unit::TestCase
-
-  def setup
-    @wsdl = 'http://www.ebi.ac.uk/xembl/XEMBL.wsdl'
-    @obj = Bio::SOAPWSDL.new(@wsdl)
-  end
-
-  def test_wsdl
-    assert_equal(@wsdl, @obj.wsdl)
-  end
-  
-  def test_set_wsdl
-    @obj.wsdl = 'http://soap.genome.jp/KEGG.wsdl'
-    assert_equal('http://soap.genome.jp/KEGG.wsdl', @obj.wsdl)
-  end
-
-  def test_log
-    assert_equal(nil, @obj.log)
-  end
-
-  def test_set_log
-    require 'stringio'
-    io = StringIO.new
-    @obj.log = io
-
-    assert_equal(StringIO, @obj.log.class)
-  end
-
-end
-
-end
-
diff --git a/test/network/bio/io/test_togows.rb b/test/network/bio/io/test_togows.rb
index e9ff3ba..03eba43 100644
--- a/test/network/bio/io/test_togows.rb
+++ b/test/network/bio/io/test_togows.rb
@@ -5,7 +5,6 @@
 #               Naohisa Goto <ng at bioruby.org>
 # License::     The Ruby License
 #
-#  $Id:$
 #
 
 # loading helper routine for testing bioruby
diff --git a/test/network/bio/test_command.rb b/test/network/bio/test_command.rb
index 0c1dc55..815d96f 100644
--- a/test/network/bio/test_command.rb
+++ b/test/network/bio/test_command.rb
@@ -1,7 +1,7 @@
 #
 # test/network/bio/test_command.rb - Functional test for network connection methods in Bio::Command
 #
-# Copyright::	Copyright (C) 2008, 2011
+# Copyright::	Copyright (C) 2008, 2011, 2015
 # 		Naohisa Goto <ng at bioruby.org>
 # License::	The Ruby License
 #
@@ -17,19 +17,82 @@ require 'bio/command'
 
 module Bio
   class FuncTestCommandNet < Test::Unit::TestCase
+    def setup
+      @host = "bioruby.open-bio.org"
+      @port = 80 
+      @path = "/"
+      @url = "http://bioruby.open-bio.org:80/"
+    end
+
     def test_read_uri
+      str = nil
       assert_nothing_raised {
-        Bio::Command.read_uri("http://bioruby.open-bio.org/")
+        str = Bio::Command.read_uri(@url)
       }
+      assert(!str.to_s.empty?)
     end
 
     def test_start_http
+      ht = Bio::Command.start_http(@host, @port)
+      assert_kind_of(Net::HTTP, ht)
+      res = ht.get(@path)
+      assert_kind_of(Net::HTTPResponse, res)
+    end
+
+    def test_start_http_with_block
+      res = Bio::Command.start_http(@host, @port) do |ht|
+        assert_kind_of(Net::HTTP, ht)
+        ht.get(@path)
+      end
+      assert_kind_of(Net::HTTPResponse, res)
+    end
+
+    def test_start_http_default_port
+      ht = Bio::Command.start_http(@host)
+      assert_kind_of(Net::HTTP, ht)
+      res = ht.get(@path)
+      assert_kind_of(Net::HTTPResponse, res)
     end
 
     def test_new_http
+      ht = Bio::Command.new_http(@host, @port)
+      assert_kind_of(Net::HTTP, ht)
+      res = ht.get(@path)
+      assert_kind_of(Net::HTTPResponse, res)
+    end
+
+    def test_new_http_default_port
+      ht = Bio::Command.new_http(@host)
+      assert_kind_of(Net::HTTP, ht)
+      res = ht.get(@path)
+      assert_kind_of(Net::HTTPResponse, res)
     end
 
     def test_post_form
+      res = Bio::Command.post_form(@url, { 'test' => 'bioruby' })
+      assert_kind_of(Net::HTTPResponse, res)
     end
+
+    def test_http_post_form
+      ht = Bio::Command.new_http(@host)
+      res = Bio::Command.http_post_form(ht, @path,
+                                        { 'test' => 'bioruby' },
+                                        { 'Content-Language' => 'en' })
+      assert_kind_of(Net::HTTPResponse, res)
+    end
+
+    def test_post
+      res = Bio::Command.post(@url, "this is test\n" * 10)
+      assert_kind_of(Net::HTTPResponse, res)
+    end
+
+    def test_http_post
+      ht = Bio::Command.new_http(@host)
+      res = Bio::Command.http_post(ht, @path,
+                                        "this is test\n" * 10,
+                                        { 'Content-Language' => 'en' })
+      assert_kind_of(Net::HTTPResponse, res)
+    end
+
   end #class FuncTestCommandNet
 end
diff --git a/test/unit/bio/appl/bl2seq/test_report.rb b/test/unit/bio/appl/bl2seq/test_report.rb
index b9a29e9..06f7116 100644
--- a/test/unit/bio/appl/bl2seq/test_report.rb
+++ b/test/unit/bio/appl/bl2seq/test_report.rb
@@ -40,7 +40,6 @@ module Bio
 
   class TestBl2seqReportConstants < Test::Unit::TestCase
     def test_rs
-      rs = nil
       assert_equal(nil, Bio::Blast::Bl2seq::Report::RS)
       assert_equal(nil, Bio::Blast::Bl2seq::Report::DELIMITER)
     end
diff --git a/test/unit/bio/appl/blast/test_report.rb b/test/unit/bio/appl/blast/test_report.rb
index 381d822..3c7773b 100644
--- a/test/unit/bio/appl/blast/test_report.rb
+++ b/test/unit/bio/appl/blast/test_report.rb
@@ -62,7 +62,7 @@ module Bio
     end
   end #module TestBlastReportHelper
 
-  class TestBlastReport < Test::Unit::TestCase
+  module TemplateTestBlastReport
     include TestBlastReportHelper
 
     def setup
@@ -90,9 +90,7 @@ module Bio
     end
 
     def test_reference
-      xml_quoted_str = "~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."
       text_str = '~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.'
-#      assert_equal(xml_quoted_str, @report.reference)
       assert_equal(text_str, @report.reference)
     end
 
@@ -203,9 +201,10 @@ module Bio
     def test_message
       assert_equal(nil, @report.message)
     end
-  end
-  
-  class TestBlastReportIteration < Test::Unit::TestCase
+  end #module TemplateTestBlastReport
+
+
+  module TemplateTestBlastReportIteration
     include TestBlastReportHelper
 
     def setup
@@ -231,9 +230,10 @@ module Bio
     def test_message
       assert_equal(nil, @itr.message)
     end
-  end
+  end #module TemplateTestBlastReportIteration
 
-  class TestBlastReportHit < Test::Unit::TestCase
+
+  module TemplateTestBlastReportHit
     include TestBlastReportHelper
 
     def setup
@@ -343,9 +343,10 @@ module Bio
     def test_Hit_lap_at
       assert_equal([1, 820, 1, 820], @hit.lap_at)
     end
-  end
+  end #module TemplateTestBlastReportHit
 
-  class TestBlastReportHsp < Test::Unit::TestCase
+
+  module TemplateTestBlastReportHsp
     include TestBlastReportHelper
 
     def setup
@@ -444,37 +445,63 @@ module Bio
       assert_nothing_raised { @hsp.mismatch_count }
     end
 
-  end 
+  end #module TestBlastReportHsp
+
+  class TestBlastReport < Test::Unit::TestCase
+    include TemplateTestBlastReport
+  end
+
+  class TestBlastReportIteration < Test::Unit::TestCase
+    include TemplateTestBlastReportIteration
+  end
 
-  class TestBlastReportREXML < TestBlastReport
+  class TestBlastReportHit < Test::Unit::TestCase
+    include TemplateTestBlastReportHit
   end
 
-  class TestBlastReportIterationREXML < TestBlastReportIteration
+  class TestBlastReportHsp < Test::Unit::TestCase
+    include TemplateTestBlastReportHsp
   end
 
-  class TestBlastReportHitREXML < TestBlastReportHit
+  class TestBlastReportREXML < Test::Unit::TestCase
+    include TemplateTestBlastReport
   end
 
-  class TestBlastReportHspREXML < TestBlastReportHsp
+  class TestBlastReportIterationREXML < Test::Unit::TestCase
+    include TemplateTestBlastReportIteration
+  end
+
+  class TestBlastReportHitREXML < Test::Unit::TestCase
+    include TemplateTestBlastReportHit
+  end
+
+  class TestBlastReportHspREXML < Test::Unit::TestCase
+    include TemplateTestBlastReportHsp
   end
 
   if defined? XMLParser then
 
-  class TestBlastReportXMLParser < TestBlastReport
+  class TestBlastReportXMLParser < Test::Unit::TestCase
+    include TemplateTestBlastReport
   end
 
-  class TestBlastReportIterationXMLParser < TestBlastReportIteration
+  class TestBlastReportIterationXMLParser < Test::Unit::TestCase
+    include TemplateTestBlastReportIteration
   end
 
-  class TestBlastReportHitXMLParser < TestBlastReportHit
+  class TestBlastReportHitXMLParser < Test::Unit::TestCase
+    include TemplateTestBlastReportHit
   end
 
-  class TestBlastReportHspXMLParser < TestBlastReportHsp
+  class TestBlastReportHspXMLParser < Test::Unit::TestCase
+    include TemplateTestBlastReportHsp
   end
 
   end #if defined? XMLParser
 
-  class TestBlastReportDefault < TestBlastReport
+  class TestBlastReportDefault < Test::Unit::TestCase
+    include TemplateTestBlastReport
+
     undef test_entrez_query
     undef test_filter
     undef test_hsp_len
@@ -519,13 +546,16 @@ module Bio
     def test_gapped_entropy
       assert_equal(0.140, @report.gapped_entropy)
     end
-  end
+  end #class TestBlastReportDefault
 
-  class TestBlastReportIterationDefault < TestBlastReportIteration
+  class TestBlastReportIterationDefault < Test::Unit::TestCase
+    include TemplateTestBlastReportIteration
     undef test_statistics
   end
 
-  class TestBlastReportHitDefault < TestBlastReportHit
+  class TestBlastReportHitDefault < Test::Unit::TestCase
+    include TemplateTestBlastReportHit
+
     undef test_Hit_accession
     undef test_Hit_hit_id
     undef test_Hit_num
@@ -560,9 +590,11 @@ module Bio
       seq = @filtered_query_sequence.gsub(/x/, 'X')
       assert_equal(seq, @hit.query_seq)
     end
-  end
+  end #class TestBlastReportHitDefault
+
+  class TestBlastReportHspDefault < Test::Unit::TestCase
+    include TemplateTestBlastReportHsp
 
-  class TestBlastReportHspDefault < TestBlastReportHsp
     undef test_Hsp_density
     undef test_Hsp_mismatch_count
     undef test_Hsp_num
@@ -612,7 +644,8 @@ module Bio
       # differs from XML because not available in the default BLASTP format
       assert_equal(nil, @hsp.query_frame)
     end
-  end
+  end #class TestBlastReportHspDefault
+
 
   module TestBlastReportTabularHelper
     def def_test_assert_nil(test_method)
@@ -634,10 +667,11 @@ module Bio
         assert_nil(instance_variable_get(instance).__send__(method))
       end
     end
-  end #module 
+  end #module TestBlastReportTabularHelper
 
-  class TestBlastReportTabular < TestBlastReport
+  class TestBlastReportTabular < Test::Unit::TestCase
     extend TestBlastReportTabularHelper
+    include TemplateTestBlastReport
 
     def_test_assert_nil :test_db
     def_test_assert_nil :test_db_len
@@ -678,7 +712,8 @@ module Bio
     end
   end #class TestBlastReportTabular
 
-  class TestBlastReportIterationTabular < TestBlastReportIteration
+  class TestBlastReportIterationTabular < Test::Unit::TestCase
+    include TemplateTestBlastReportIteration
 
     # No statistics information available in the "-m 8" format
     def test_statistics
@@ -686,8 +721,9 @@ module Bio
     end
   end #class TestBlastReportIterationTabular
 
-  class TestBlastReportHitTabular < TestBlastReportHit
+  class TestBlastReportHitTabular < Test::Unit::TestCase
     extend TestBlastReportTabularHelper
+    include TemplateTestBlastReportHit
 
     def_test_assert_nil :test_Hit_hit_id
     def_test_assert_nil :test_Hit_identity
@@ -714,8 +750,9 @@ module Bio
     end
   end #class TestBlastReportHitTabular
 
-  class TestBlastReportHspTabular < TestBlastReportHsp
+  class TestBlastReportHspTabular < Test::Unit::TestCase
     extend TestBlastReportTabularHelper
+    include TemplateTestBlastReportHsp
 
     def_test_assert_nil :test_Hsp_density
     def_test_assert_nil :test_Hsp_hit_frame
@@ -738,7 +775,7 @@ module Bio
   # with the result of multiple query sequences
   ########################################################################
 
-  class TestBlastReportMulti < Test::Unit::TestCase
+  module TemplateTestBlastReportMulti
     include TestBlastReportHelper
 
     def setup
@@ -955,9 +992,9 @@ module Bio
         assert_equal(nil, r.message)
       end
     end
-  end
-  
-  class TestBlastReportIterationMulti < Test::Unit::TestCase
+  end #module TemplateTestBlastReportMulti
+
+  module TemplateTestBlastReportIterationMulti
     include TestBlastReportHelper
 
     def setup
@@ -1005,9 +1042,9 @@ module Bio
     def test_message
       assert_equal(nil, @itr.message)
     end
-  end
+  end #module TemplateTestBlastReportIterationMulti
 
-  class TestBlastReportHitMulti < Test::Unit::TestCase
+  module TemplateTestBlastReportHitMulti
     include TestBlastReportHelper
 
     def setup
@@ -1119,9 +1156,9 @@ module Bio
     def test_Hit_lap_at
       assert_equal([190, 311, 569, 668], @hit.lap_at)
     end
-  end
+  end #module TemplateTestBlastReportHitMulti
 
-  class TestBlastReportHspMulti < Test::Unit::TestCase
+  module TemplateTestBlastReportHspMulti
     include TestBlastReportHelper
 
     def setup
@@ -1220,34 +1257,59 @@ module Bio
       assert_nothing_raised { @hsp.mismatch_count }
     end
 
-  end 
+  end #module TemplateTestBlastReportHspMulti
+
+
+  class TestBlastReportMulti < Test::Unit::TestCase
+    include TemplateTestBlastReportMulti
+  end
+
+  class TestBlastReportIterationMulti < Test::Unit::TestCase
+    include TemplateTestBlastReportIterationMulti
+  end
+
+  class TestBlastReportHitMulti < Test::Unit::TestCase
+    include TemplateTestBlastReportHitMulti
+  end
+
+  class TestBlastReportHspMulti < Test::Unit::TestCase
+    include TemplateTestBlastReportHspMulti
+  end
 
   # Tests for REXML version
-  class TestBlastReportMultiREXML < TestBlastReportMulti
+  class TestBlastReportMultiREXML < Test::Unit::TestCase
+    include TemplateTestBlastReportMulti
   end
 
-  class TestBlastReportIterationMultiREXML < TestBlastReportIterationMulti
+  class TestBlastReportIterationMultiREXML < Test::Unit::TestCase
+    include TemplateTestBlastReportIterationMulti
   end
 
-  class TestBlastReportHitMultiREXML < TestBlastReportHitMulti
+  class TestBlastReportHitMultiREXML < Test::Unit::TestCase
+    include TemplateTestBlastReportHitMulti
   end
 
-  class TestBlastReportHspMultiREXML < TestBlastReportHspMulti
+  class TestBlastReportHspMultiREXML < Test::Unit::TestCase
+    include TemplateTestBlastReportHspMulti
   end
 
   # Tests for XMLParser version
   if defined? XMLParser then
 
-  class TestBlastReportMultiXMLParser < TestBlastReportMulti
+  class TestBlastReportMultiXMLParser < Test::Unit::TestCase
+    include TemplateTestBlastReportMulti
   end
 
-  class TestBlastReportIterationMultiXMLParser < TestBlastReportIterationMulti
+  class TestBlastReportIterationMultiXMLParser < Test::Unit::TestCase
+    include TemplateTestBlastReportIterationMulti
   end
 
-  class TestBlastReportHitMultiXMLParser < TestBlastReportHitMulti
+  class TestBlastReportHitMultiXMLParser < Test::Unit::TestCase
+    include TemplateTestBlastReportHitMulti
   end
 
-  class TestBlastReportHspMultiXMLParser < TestBlastReportHspMulti
+  class TestBlastReportHspMultiXMLParser < Test::Unit::TestCase
+    include TemplateTestBlastReportHspMulti
   end
 
   end #if defined? XMLParser
diff --git a/test/unit/bio/appl/clustalw/test_report.rb b/test/unit/bio/appl/clustalw/test_report.rb
index 076dc96..a2e8d99 100644
--- a/test/unit/bio/appl/clustalw/test_report.rb
+++ b/test/unit/bio/appl/clustalw/test_report.rb
@@ -13,15 +13,9 @@ require 'bio/appl/clustalw/report'
 
 module Bio
 
-  class TestClustalWReport < Test::Unit::TestCase
-
-    def setup
-      test_data_path = Pathname.new(File.join(BioRubyTestDataPath, 'clustalw')).cleanpath.to_s
-      aln_filename = File.join(test_data_path, 'example1.aln')
-      text = File.read(aln_filename)
-      @aln = Bio::ClustalW::Report.new(text)
-    end
+  module TestClustalWReport
 
+    #--
     # CLUSTAL 2.0.9 multiple sequence alignment
     #
     #
@@ -34,47 +28,69 @@ module Bio
     # query                      LNKNVWVHTELGYFSG-EAVPSNGLVLNTSKGLVLVDSSWDDKLTKELIE
     # gi|115023|sp|P10425|       LNKNVWVHTELGYFNG-EAVPSNGLVLNTSKGLVLVDSSWDNKLTKELIE
     #                                *:   .     .     **. .   ..   ::*:       . * :
+    #++
+
+    module CommonTestMethods
+
+      def test_header
+        assert_equal('CLUSTAL 2.0.9 multiple sequence alignment', at aln.header)
+      end
+
+      def test_sequence0
+        seq = @aln.get_sequence(0)
+        assert_equal('query',seq.definition)
+        assert_equal("-MKNTLLKLGVCVSLLGITPFVSTISSVQAERTVEHKVIKNETGTISISQLNKNVWVHTELGYFSG-EAVPSNGLVLNTSKGLVLVDSSWDDKLTKELIEMVEKKFKKRVTDVIITHAHADRIGGMKTLKERGIKAHSTALTAELAKKNG--------------------YEEPLGDLQSVTNLKFGN----MKVETFYPGKGHTEDNIVVWLPQYQILAGGCLVKSASSKDLGNVADAYVNEWSTSIENVLKRYGNINLVVPGHGEVGDR-----GLLLHTLDLLK---------------------------------------------------------------------",seq.to_s)
+      end
+
+      def test_sequence1
+        seq = @aln.get_sequence(1)
+        assert_equal('gi|115023|sp|P10425|',seq.definition)
+        assert_equal("MKKNTLLKVGLCVSLLGTTQFVSTISSVQASQKVEQIVIKNETGTISISQLNKNVWVHTELGYFNG-EAVPSNGLVLNTSKGLVLVDSSWDNKLTKELIEMVEKKFQKRVTDVIITHAHADRIGGITALKERGIKAHSTALTAELAKKSG--------------------YEEPLGDLQTVTNLKFGN----TKVETFYPGKGHTEDNIVVWLPQYQILAGGCLVKSAEAKNLGNVADAYVNEWSTSIENMLKRYRNINLVVPGHGKVGDK-----GLLLHTLDLLK---------------------------------------------------------------------",seq.to_s)
+      end
+
+      def test_alignment
+        assert_equal("???????????SN?????????????D??????????L??????????????????H?H?D", at aln.alignment.consensus[60..120])
+      end
+
+      def test_match_line
+        assert_equal("                                              .: :    *:   .     .     **. .   ..   ::*:       . * : : .        .: .* * *   *   :   * .  :     .     .                       *   :    .: .        .:      .*:  ::***:*  .:* .* :: .           .        ::.:            *              :  .                                                                          " , at aln.match_line)
+      end
+
+    end #module CommonTestMethods
+
+    class TestClustalWReport < Test::Unit::TestCase
+      include CommonTestMethods
+
+      def setup
+        aln_filename = File.join(BioRubyTestDataPath, 'clustalw',
+                                 'example1.aln')
+        text = File.read(aln_filename)
+        @aln = Bio::ClustalW::Report.new(text)
+      end
+    end # class TestClustalWReport
+
+    class TestClustalWReportWith2ndArgument < Test::Unit::TestCase
+      include CommonTestMethods
+
+      def setup
+        aln_filename = File.join(BioRubyTestDataPath, 'clustalw',
+                                 'example1.aln')
+        text = File.read(aln_filename)
+        @aln = Bio::ClustalW::Report.new(text, "PROTEIN")
+      end
+    end #class TestClustalWReportWith2ndArgument
+
+    class TestClustalWReportSeqnos < Test::Unit::TestCase
+      include CommonTestMethods
+
+      def setup
+        aln_filename = File.join(BioRubyTestDataPath, 'clustalw',
+                                 'example1-seqnos.aln')
+        text = File.read(aln_filename)
+        @aln = Bio::ClustalW::Report.new(text)
+      end
+    end #class TestClustalWReportSeqnos
+
+  end #module TestClustalWReport
 
-    def test_header
-      assert_equal('CLUSTAL 2.0.9 multiple sequence alignment', at aln.header)
-    end
-
-    def test_sequences
-      seq = @aln.get_sequence(0)
-      assert_equal('query',seq.definition)
-      assert_equal("-MKNTLLKLGVCVSLLGITPFVSTISSVQAERTVEHKVIKNETGTISISQLNKNVWVHTELGYFSG-EAVPSNGLVLNTSKGLVLVDSSWDDKLTKELIEMVEKKFKKRVTDVIITHAHADRIGGMKTLKERGIKAHSTALTAELAKKNG--------------------YEEPLGDLQSVTNLKFGN----MKVETFYPGKGHTEDNIVVWLPQYQILAGGCLVKSASSKDLGNVADAYVNEWSTSIENVLKRYGNINLVVPGHGEVGDR-----GLLLHTLDLLK---------------------------------------------------------------------",seq.to_s)
-      seq = @aln.get_sequence(1)
-      assert_equal('gi|115023|sp|P10425|',seq.definition)
-      assert_equal("MKKNTLLKVGLCVSLLGTTQFVSTISSVQASQKVEQIVIKNETGTISISQLNKNVWVHTELGYFNG-EAVPSNGLVLNTSKGLVLVDSSWDNKLTKELIEMVEKKFQKRVTDVIITHAHADRIGGITALKERGIKAHSTALTAELAKKSG--------------------YEEPLGDLQTVTNLKFGN----TKVETFYPGKGHTEDNIVVWLPQYQILAGGCLVKSAEAKNLGNVADAYVNEWSTSIENMLKRYRNINLVVPGHGKVGDK-----GLLLHTLDLLK---------------------------------------------------------------------",seq.to_s)
-    end
-
-    def test_alignment
-      assert_equal("???????????SN?????????????D??????????L??????????????????H?H?D", at aln.alignment.consensus[60..120])
-    end
-
-    def test_match_line
-      assert_equal("                                              .: :    *:   .     .     **. .   ..   ::*:       . * : : .        .: .* * *   *   :   * .  :     .     .                       *   :    .: .        .:      .*:  ::***:*  .:* .* :: .           .        ::.:            *              :  .                                                                          " , at aln.match_line)
-    end
-
-  end # class TestClustalwFormat
-
-  class TestClustalWReportWith2ndArgument < Test::Unit::TestCase
-
-    def setup
-      aln_filename = File.join(BioRubyTestDataPath, 'clustalw',
-                               'example1.aln')
-      text = File.read(aln_filename)
-      @aln = Bio::ClustalW::Report.new(text, "PROTEIN")
-    end
-
-    def test_sequences
-      seq = @aln.get_sequence(0)
-      assert_equal('query',seq.definition)
-      assert_equal("-MKNTLLKLGVCVSLLGITPFVSTISSVQAERTVEHKVIKNETGTISISQLNKNVWVHTELGYFSG-EAVPSNGLVLNTSKGLVLVDSSWDDKLTKELIEMVEKKFKKRVTDVIITHAHADRIGGMKTLKERGIKAHSTALTAELAKKNG--------------------YEEPLGDLQSVTNLKFGN----MKVETFYPGKGHTEDNIVVWLPQYQILAGGCLVKSASSKDLGNVADAYVNEWSTSIENVLKRYGNINLVVPGHGEVGDR-----GLLLHTLDLLK---------------------------------------------------------------------",seq.to_s)
-      seq = @aln.get_sequence(1)
-      assert_equal('gi|115023|sp|P10425|',seq.definition)
-      assert_equal("MKKNTLLKVGLCVSLLGTTQFVSTISSVQASQKVEQIVIKNETGTISISQLNKNVWVHTELGYFNG-EAVPSNGLVLNTSKGLVLVDSSWDNKLTKELIEMVEKKFQKRVTDVIITHAHADRIGGITALKERGIKAHSTALTAELAKKSG--------------------YEEPLGDLQTVTNLKFGN----TKVETFYPGKGHTEDNIVVWLPQYQILAGGCLVKSAEAKNLGNVADAYVNEWSTSIENMLKRYRNINLVVPGHGKVGDK-----GLLLHTLDLLK---------------------------------------------------------------------",seq.to_s)
-    end
-
-  end #class TestClustalWReportWith2ndArgument
-end
+end #module Bio
diff --git a/test/unit/bio/appl/sim4/test_report.rb b/test/unit/bio/appl/sim4/test_report.rb
index 42f429b..b44b9f3 100644
--- a/test/unit/bio/appl/sim4/test_report.rb
+++ b/test/unit/bio/appl/sim4/test_report.rb
@@ -5,7 +5,6 @@
 #              Naohisa Goto <ng at bioruby.org>
 # License::    The Ruby License
 #
-#  $Id:$
 #
 
 # loading helper routine for testing bioruby
@@ -56,7 +55,7 @@ module Bio
   end #class TestDataForSim4Report
 
 
-  class TestSim4Report < Test::Unit::TestCase
+  module TemplateTestSim4Report
 
     def setup
       @sim4 = TestDataForSim4Report.report1
@@ -126,9 +125,9 @@ module Bio
       assert_equal(94, @sim4.query_len)
     end
 
-  end #class TestSim4Report
+  end #module TemplateTestSim4Report
 
-  class TestSim4ReportHit < Test::Unit::TestCase
+  module TemplateTestSim4ReportHit
 
     def setup
       @hit = TestDataForSim4Report.report1.hits.first
@@ -258,9 +257,9 @@ module Bio
     def test_target_len
       assert_equal(599, @hit.target_len)
     end
-  end #class TestSim4ReportHit
+  end #module TemplateTestSim4ReportHit
 
-  class TestSim4ReportSegmentPair_exon < Test::Unit::TestCase
+  module TemplateTestSim4ReportSegmentPair_exon
     def setup
       @exon = TestDataForSim4Report.report1.hits[0].exons[1]
     end
@@ -329,9 +328,9 @@ module Bio
       assert_equal("TCTACACATCACTAGCCTGGGTGGGCGGAA GAGCAGCTCGCCACTTCAAGCTAA",
                    @exon.seq2.seq)
     end
-  end #class TestSim4ReportSegmentPair_exon
+  end #module TemplateTestSim4ReportSegmentPair_exon
 
-  class TestSim4ReportSegmentPair_intron < Test::Unit::TestCase
+  module TemplateTestSim4ReportSegmentPair_intron
     def setup
       @intron = TestDataForSim4Report.report1.hits[0].introns[0]
     end
@@ -392,10 +391,28 @@ module Bio
       assert_equal(403, @intron.seq2.to)
       assert_equal("CTG...TAC", @intron.seq2.seq)
     end
-  end #class TestSim4ReportSegmentPair_intron
+  end #module TemplateTestSim4ReportSegmentPair_intron
+
+
+  class TestSim4Report < Test::Unit::TestCase
+    include TemplateTestSim4Report
+  end
+
+  class TestSim4ReportHit < Test::Unit::TestCase
+    include TemplateTestSim4ReportHit
+  end
 
+  class TestSim4ReportSegmentPair_exon < Test::Unit::TestCase
+    include TemplateTestSim4ReportSegmentPair_exon
+  end
+
+  class TestSim4ReportSegmentPair_intron < Test::Unit::TestCase
+    include TemplateTestSim4ReportSegmentPair_intron
+  end
+
+  class TestSim4Report2 < Test::Unit::TestCase
+    include TemplateTestSim4Report
 
-  class TestSim4Report2 < TestSim4Report
     def setup
       @sim4 = TestDataForSim4Report.report2
     end
@@ -410,7 +427,9 @@ module Bio
     private :exec_test_seq1_len
   end #class TestSim4Report2
 
-  class TestSim4ReportHit2 < TestSim4ReportHit
+  class TestSim4ReportHit2 < Test::Unit::TestCase
+    include TemplateTestSim4ReportHit
+
     def setup
       @hit = TestDataForSim4Report.report2.hits.first
     end
@@ -441,7 +460,9 @@ module Bio
   end #class TestSim4ReportHit2
 
 
-  class TestSim4ReportSegmentPair2_exon < TestSim4ReportSegmentPair_exon
+  class TestSim4ReportSegmentPair2_exon < Test::Unit::TestCase
+    include TemplateTestSim4ReportSegmentPair_exon
+
     def setup
       @exon = TestDataForSim4Report.report2.hits[0].exons[1]
     end
@@ -463,14 +484,17 @@ module Bio
   end #class TestSim4ReportSegmentPair2_exon
 
 
-  class TestSim4ReportSegmentPair2_intron < TestSim4ReportSegmentPair_intron
+  class TestSim4ReportSegmentPair2_intron < Test::Unit::TestCase
+    include TemplateTestSim4ReportSegmentPair_intron
+
     def setup
       @intron = TestDataForSim4Report.report2.hits[0].introns[0]
     end
   end #class TestSim4ReportSegmentPair2_intron
 
 
-  class TestSim4Report4 < TestSim4Report
+  class TestSim4Report4 < Test::Unit::TestCase
+    include TemplateTestSim4Report
 
     def setup
       @sim4 = TestDataForSim4Report.report4
@@ -504,7 +528,8 @@ module Bio
 
   end #class TestSim4Report4
 
-  class TestSim4ReportHit4 < TestSim4ReportHit
+  class TestSim4ReportHit4 < Test::Unit::TestCase
+    include TemplateTestSim4ReportHit
 
     def setup
       @hit = TestDataForSim4Report.report4.hits.first
@@ -632,7 +657,9 @@ module Bio
     end
   end #class TestSim4ReportHit4
 
-  class TestSim4ReportSegmentPair4_exon < TestSim4ReportSegmentPair_exon
+  class TestSim4ReportSegmentPair4_exon < Test::Unit::TestCase
+    include TemplateTestSim4ReportSegmentPair_exon
+
     def setup
       @exon = TestDataForSim4Report.report4.hits[0].exons[1]
     end
@@ -704,7 +731,9 @@ module Bio
   end #class TestSim4ReportSegmentPair4_exon
 
 
-  class TestSim4ReportSegmentPair4_intron < TestSim4ReportSegmentPair_intron
+  class TestSim4ReportSegmentPair4_intron < Test::Unit::TestCase
+    include TemplateTestSim4ReportSegmentPair_intron
+
     def setup
       @intron = TestDataForSim4Report.report4.hits[0].introns[0]
     end
diff --git a/test/unit/bio/appl/test_blast.rb b/test/unit/bio/appl/test_blast.rb
index 7a8f0fb..c851919 100644
--- a/test/unit/bio/appl/test_blast.rb
+++ b/test/unit/bio/appl/test_blast.rb
@@ -274,5 +274,5 @@ module Bio
      def test_exec_ncbi
        # to be tested in test/functional/bio/test_blast.rb
      end
-   end
- end
+  end
+end
diff --git a/test/unit/bio/db/embl/test_embl.rb b/test/unit/bio/db/embl/test_embl.rb
index 8cd0665..6d111bd 100644
--- a/test/unit/bio/db/embl/test_embl.rb
+++ b/test/unit/bio/db/embl/test_embl.rb
@@ -118,7 +118,6 @@ module Bio
 
     # Bio::EMBLDB::COMMON#kw
     def test_kw 
-      k = []
       assert_equal([], @obj.kw)
       assert_equal([], @obj.keywords)
     end
diff --git a/test/unit/bio/db/embl/test_embl_rel89.rb b/test/unit/bio/db/embl/test_embl_rel89.rb
index 0919e7b..11c7f43 100644
--- a/test/unit/bio/db/embl/test_embl_rel89.rb
+++ b/test/unit/bio/db/embl/test_embl_rel89.rb
@@ -123,7 +123,6 @@ module Bio
 
     # Bio::EMBLDB::COMMON#kw
     def test_kw 
-      k = []
       assert_equal([], @obj.kw)
       assert_equal([], @obj.keywords)
     end
diff --git a/test/unit/bio/db/embl/test_sptr.rb b/test/unit/bio/db/embl/test_uniprotkb.rb
similarity index 94%
rename from test/unit/bio/db/embl/test_sptr.rb
rename to test/unit/bio/db/embl/test_uniprotkb.rb
index 93c42e5..c841836 100644
--- a/test/unit/bio/db/embl/test_sptr.rb
+++ b/test/unit/bio/db/embl/test_uniprotkb.rb
@@ -1,10 +1,9 @@
 #
-# test/unit/bio/db/embl/test_sptr.rb - Unit test for Bio::SPTR
+# test/unit/bio/db/embl/test_uniprotkb.rb - Unit tests for Bio::UniProtKB
 #
 # Copyright:::  Copyright (C) 2005 Mitsuteru Nakao <n at bioruby.org>
 # License::     The Ruby License
 #
-#  $Id:$
 #
 
 # loading helper routine for testing bioruby
@@ -14,15 +13,15 @@ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4,
 
 # libraries needed for the tests
 require 'test/unit'
-require 'bio/db/embl/sptr'
+require 'bio/db/embl/uniprotkb'
 
 module Bio
-  class TestSPTR < Test::Unit::TestCase
+  class TestUniProtKB < Test::Unit::TestCase
 
     def setup
       data = File.read(File.join(BioRubyTestDataPath, 
                                  'uniprot', 'p53_human.uniprot'))
-      @obj = Bio::SPTR.new(data)
+      @obj = Bio::UniProtKB.new(data)
     end
 
     def test_id_line
@@ -150,13 +149,11 @@ module Bio
     end
 
     def test_gn_uniprot_parser
-      gn_uniprot_data = ''
       assert_equal([{:orfs=>[], :loci=>[], :name=>"TP53", :synonyms=>["P53"]}], 
                    @obj.instance_eval("gn_uniprot_parser"))
     end
 
     def test_gn_old_parser
-      gn_old_data = ''
       assert_equal([["Name=TP53; Synonyms=P53;"]], 
                    @obj.instance_eval("gn_old_parser"))
     end
@@ -235,7 +232,7 @@ module Bio
       assert_equal({"NCBI_TaxID"=>["9606"]}, @obj.ox)
     end
 
-    def test_ref # Bio::SPTR#ref
+    def test_ref # Bio::UniProtKB#ref
       assert_equal(Array, @obj.ref.class)
     end
 
@@ -326,15 +323,15 @@ module Bio
       assert_equal(seq, @obj.aaseq)
     end
 
-  end # class TestSPTR
+  end # class TestUniProtKB
 
 
 
-  class TestSPTRCC < Test::Unit::TestCase
+  class TestUniProtKB_CC < Test::Unit::TestCase
     def test_allergen
       # ALLERGEN	Information relevant to allergenic proteins
       data = 'CC   -!- ALLERGEN: Causes an allergic reaction in human.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(['Causes an allergic reaction in human.'], 
                    sp.cc['ALLERGEN'])
       assert_equal(['Causes an allergic reaction in human.'], 
@@ -352,7 +349,7 @@ CC         Note=Contains a N-acetylmethionine at position 1 (By
 CC         similarity);"
 
       res = ["Event=Alternative initiation; Named isoforms=2; Name=Long; IsoId=P68250-1; Sequence=Displayed; Name=Short; IsoId=P68250-2; Sequence=VSP_018631; Note=Contains a N-acetylmethionine at position 1 (By similarity);"]
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(res,
                    sp.cc['ALTERNATIVE PRODUCTS'])
     end
@@ -369,7 +366,7 @@ CC         IsoId=P68250-2; Sequence=VSP_018631;
 CC         Note=Contains a N-acetylmethionine at position 1 (By
 CC         similarity);"
 
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal({"Comment"=>"",
                     "Named isoforms"=>"2",
                     "Variants"=>
@@ -393,7 +390,7 @@ CC       Name=2; Synonyms=I9RET;
 CC         IsoId=P04637-2; Sequence=VSP_006535, VSP_006536;
 CC         Note=Seems to be non-functional. Expressed in quiescent
 CC         lymphocytes;"
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal({"Comment"=>"",
                     "Named isoforms"=>"2",
                     "Variants"=>
@@ -425,7 +422,7 @@ CC         Note=May be produced by alternative promoter usage;
 CC       Name=5; Synonyms=AAT1-beta, AAT1-gamma;
 CC         IsoId=Q7Z4T9-5; Sequence=VSP_014909;
 CC         Note=May be produced by alternative promoter usage;"
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal({"Comment"=>"Additional isoforms (AAT-1L and AAT-1S) may exist",
                     "Named isoforms"=>"5",
                     "Variants"=>
@@ -454,7 +451,7 @@ CC         Note=May be produced by alternative promoter usage;"
     end
     def test_alternative_products_rf
       data = ""
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal({},
                    sp.cc('ALTERNATIVE PRODUCTS'))
     end
@@ -468,7 +465,7 @@ CC         KM=45 uM for AdoMet;
 CC         Vmax=32 uM/h/mg enzyme;
 CC       pH dependence:
 CC         Optimum pH is 8.2;'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Kinetic parameters: KM=45 uM for AdoMet; Vmax=32 uM/h/mg enzyme; pH dependence: Optimum pH is 8.2;"],
                    sp.cc['BIOPHYSICOCHEMICAL PROPERTIES'])
       assert_equal({"Redox potential" => "",
@@ -494,7 +491,7 @@ CC       Redox potential:
 CC         free_text;
 CC       Temperature dependence:
 CC         free_text;"
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal({"Redox potential"=>"free_text",
                     "Temperature dependence"=>"free_text",
                     "Kinetic parameters"=>
@@ -514,7 +511,7 @@ CC       improved ripening tomato by Monsanto. ACC is the immediate
 CC       precursor of the phytohormone ethylene which is involved in the
 CC       control of ripening. ACC deaminase reduces ethylene biosynthesis
 CC       and thus extends the shelf life of fruits and vegetables.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Introduced by genetic manipulation and expressed in improved ripening tomato by Monsanto. ACC is the immediate precursor of the phytohormone ethylene which is involved in the control of ripening. ACC deaminase reduces ethylene biosynthesis and thus extends the shelf life of fruits and vegetables."],
                    sp.cc['BIOTECHNOLOGY'])
     end
@@ -524,7 +521,7 @@ CC       and thus extends the shelf life of fruits and vegetables.'
       data = 'CC   -!- CATALYTIC ACTIVITY: Hydrolysis of alkylated DNA, releasing 3-
 CC       methyladenine, 3-methylguanine, 7-methylguanine and 7-
 CC       methyladenine.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Hydrolysis of alkylated DNA, releasing 3-methyladenine, 3-methylguanine, 7-methylguanine and 7-methyladenine."],
                    sp.cc['CATALYTIC ACTIVITY'])
     end
@@ -534,7 +531,7 @@ CC       methyladenine.'
       data = 'CC   -!- CAUTION: Ref.1 sequence differs from that shown due to a Leu codon
 CC       in position 480 which was translated as a stop codon to shorten
 CC       the sequence.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Ref.1 sequence differs from that shown due to a Leu codon in position 480 which was translated as a stop codon to shorten the sequence."],
                    sp.cc['CAUTION'])
       assert_equal("Ref.1 sequence differs from that shown due to a Leu codon in position 480 which was translated as a stop codon to shorten the sequence.",
@@ -546,7 +543,7 @@ CC       the sequence.'
       # COFACTOR	Description of any non-protein substance required by an enzyme for its catalytic activity
       data = 'CC   -!- COFACTOR: Cl(-). Is unique in requiring Cl(-) for its activity.
 CC   -!- COFACTOR: Mg(2+).'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Cl(-). Is unique in requiring Cl(-) for its activity.", 
                     "Mg(2+)."],
                    sp.cc['COFACTOR'])
@@ -561,7 +558,7 @@ CC   -!- COFACTOR: Mg(2+).'
       data = 'CC   -!- DEVELOPMENTAL STAGE: In females, isoform 1 is expressed at day 35
 CC       with higher levels detected at day 56. Isoform 1 is not detected
 CC       in males of any age.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["In females, isoform 1 is expressed at day 35 with higher levels detected at day 56. Isoform 1 is not detected in males of any age."],
                    sp.cc['DEVELOPMENTAL STAGE'])
       assert_equal("In females, isoform 1 is expressed at day 35 with higher levels detected at day 56. Isoform 1 is not detected in males of any age.",
@@ -580,7 +577,7 @@ CC       and aggressiveness of the disease. The Iowa type demonstrated no
 CC       cerebral hemorrhaging but is characterized by progressive
 CC       cognitive decline. Beta-APP40 is the predominant form of
 CC       cerebrovascular amyloid.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Defects in APP are a cause of hereditary cerebral hemorrhage with amyloidosis (HCHWAD) [MIM:609065, 104760]. This disorder is characterized by amyloid deposits in cerebral vessels. The principal clinical characteristics are recurring cerebral hemorrhages, sometimes preceded by migrainous headaches or mental cleavage. Various types of HCHWAD are known. They differ in onset and aggressiveness of the disease. The Iowa type demonstrated no cerebral hemorrhaging but is ch [...]
                    sp.cc['DISEASE'])
       assert_equal("Defects in APP are a cause of hereditary cerebral hemorrhage with amyloidosis (HCHWAD) [MIM:609065, 104760]. This disorder is characterized by amyloid deposits in cerebral vessels. The principal clinical characteristics are recurring cerebral hemorrhages, sometimes preceded by migrainous headaches or mental cleavage. Various types of HCHWAD are known. They differ in onset and aggressiveness of the disease. The Iowa type demonstrated no cerebral hemorrhaging but is cha [...]
@@ -601,7 +598,7 @@ CC       require the YENPTY motif for full interaction. These interactions
 CC       are independent of phosphorylation on the terminal tyrosine
 CC       residue. The NPXY site is also involved in clathrin-mediated
 CC       endocytosis (By similarity).'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["The basolateral sorting signal (BaSS) is required for sorting of membrane proteins to the basolateral surface of epithelial cells.",
  "The NPXY sequence motif found in many tyrosine-phosphorylated proteins is required for the specific binding of the PID domain. However, additional amino acids either N-or C-terminal to the NPXY motif are often required for complete interaction. The PID domain-containing proteins which bind APP require the YENPTY motif for full interaction. These interactions are independent of phosphorylation on the terminal tyrosine residue. The NPXY site is also involved in clathrin-mediated endocyto [...]
                    sp.cc['DOMAIN'])
@@ -614,7 +611,7 @@ CC       endocytosis (By similarity).'
       # ENZYME REGULATION	Description of an enzyme regulatory mechanism
       data = 'CC   -!- ENZYME REGULATION: Insensitive to calcium/calmodulin. Stimulated
 CC       by the G protein beta and gamma subunit complex.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Insensitive to calcium/calmodulin. Stimulated by the G protein beta and gamma subunit complex."],
                    sp.cc['ENZYME REGULATION'])
       assert_equal("Insensitive to calcium/calmodulin. Stimulated by the G protein beta and gamma subunit complex.",
@@ -627,7 +624,7 @@ CC       by the G protein beta and gamma subunit complex.'
 CC       interplay between intracellular calcium and cAMP determines the
 CC       cellular function. May be a physiologically relevant docking site
 CC       for calcineurin (By similarity).'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["May play a fundamental role in situations where fine interplay between intracellular calcium and cAMP determines the cellular function. May be a physiologically relevant docking site for calcineurin (By similarity)."],
                    sp.cc['FUNCTION'])
       assert_equal("May play a fundamental role in situations where fine interplay between intracellular calcium and cAMP determines the cellular function. May be a physiologically relevant docking site for calcineurin (By similarity).",
@@ -637,7 +634,7 @@ CC       for calcineurin (By similarity).'
     def test_induction
       # INDUCTION	Description of the compound(s) or condition(s) that regulate gene expression
       data = 'CC   -!- INDUCTION: By pheromone (alpha-factor).'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["By pheromone (alpha-factor)."],
                    sp.cc['INDUCTION'])
       assert_equal("By pheromone (alpha-factor).",
@@ -649,7 +646,7 @@ CC       for calcineurin (By similarity).'
       data = 'CC   -!- INTERACTION:
 CC       P62158:CALM1 (xeno); NbExp=1; IntAct=EBI-457011, EBI-397435;
 CC       P62155:calm1 (xeno); NbExp=1; IntAct=EBI-457011, EBI-397568;'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["P62158:CALM1 (xeno); NbExp=1; IntAct=EBI-457011, EBI-397435; P62155:calm1 (xeno); NbExp=1; IntAct=EBI-457011, EBI-397568;"],
                    sp.cc['INTERACTION'])
       assert_equal([{'SP_Ac' => 'P62158', 
@@ -671,7 +668,7 @@ CC       P62155:calm1 (xeno); NbExp=1; IntAct=EBI-457011, EBI-397568;'
 CC       NOTE=Ref.1.
 CC   -!- MASS SPECTROMETRY: MW=2892.2; METHOD=Electrospray; RANGE=1-29;
 CC       NOTE=Ref.2."
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["MW=2894.9; MW_ERR=3; METHOD=MALDI; RANGE=1-29; NOTE=Ref.1.",
                     "MW=2892.2; METHOD=Electrospray; RANGE=1-29; NOTE=Ref.2."],
                    sp.cc['MASS SPECTROMETRY'])
@@ -692,7 +689,7 @@ CC       NOTE=Ref.2."
       # MISCELLANEOUS	Any comment which does not belong to any of the other defined topics
       data = 'CC   -!- MISCELLANEOUS: There are two isozymes; a cytoplasmic one and a
 CC       mitochondrial one.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["There are two isozymes; a cytoplasmic one and a mitochondrial one."],
                    sp.cc['MISCELLANEOUS'])
     end
@@ -701,7 +698,7 @@ CC       mitochondrial one.'
       # PATHWAY	Description of the metabolic pathway(s) with which a protein is associated
       data = 'CC   -!- PATHWAY: Carbohydrate degradation; glycolysis; D-glyceraldehyde 3-
 CC       phosphate and glycerone phosphate from D-glucose: step 4.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Carbohydrate degradation; glycolysis; D-glyceraldehyde 3-phosphate and glycerone phosphate from D-glucose: step 4."],
                    sp.cc['PATHWAY'])
       assert_equal(["Carbohydrate degradation", 
@@ -718,7 +715,7 @@ CC       phosphate and glycerone phosphate from D-glucose: step 4.'
 CC       Lutrepulse or Lutrelef (Ferring Pharmaceuticals) and Relisorm
 CC       (Serono). Used in evaluating hypothalamic-pituitary gonadotropic
 CC       function.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Available under the names Factrel (Ayerst Labs), Lutrepulse or Lutrelef (Ferring Pharmaceuticals) and Relisorm (Serono). Used in evaluating hypothalamic-pituitary gonadotropic function."],
                    sp.cc['PHARMACEUTICAL'])
     end
@@ -734,7 +731,7 @@ CC       like macroglycopeptide (Pro/Thr-rich) domain. Allele D (shown
 CC       here) contains one repeat starting at position 415, allele C
 CC       contains two repeats, allele B contains three repeats and allele A
 CC       contains four repeats.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Position 161 is associated with platelet-specific alloantigen Siba. Siba(-) has Thr-161 and Siba(+) has Met-161. Siba is involved in neonatal alloimmune thrombocytopenia (NATP).",
                     "Polymorphisms arise from a variable number of tandem 13-amino acid repeats of S-E-P-A-P-S-P-T-T-P-E-P-T in the mucin-like macroglycopeptide (Pro/Thr-rich) domain. Allele D (shown here) contains one repeat starting at position 415, allele C contains two repeats, allele B contains three repeats and allele A contains four repeats."],
                    sp.cc['POLYMORPHISM'])
@@ -745,7 +742,7 @@ CC       contains four repeats.'
       data = 'CC   -!- PTM: N-glycosylated, contains approximately 8 kDa of N-linked
 CC       carbohydrate.
 CC   -!- PTM: Palmitoylated.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["N-glycosylated, contains approximately 8 kDa of N-linked carbohydrate.",
  "Palmitoylated."],
                    sp.cc['PTM'])
@@ -762,7 +759,7 @@ CC       positions 50, 78, 104, 260 and 264 are modified to sense codons.'
 CC       brain. Heteromerically expressed edited GLUR2 (R) receptor
 CC       complexes are impermeable to calcium, whereas the unedited (Q)
 CC       forms are highly permeable to divalent ions (By similarity).'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Modified_positions=607; Note=Fully edited in the brain. Heteromerically expressed edited GLUR2 (R) receptor complexes are impermeable to calcium, whereas the unedited (Q) forms are highly permeable to divalent ions (By similarity)."],
                    sp.cc['RNA EDITING'])
       assert_equal({"Modified_positions" => ['607'], 
@@ -774,7 +771,7 @@ CC       forms are highly permeable to divalent ions (By similarity).'
       # SIMILARITY	Description of the similaritie(s) (sequence or structural) of a protein with other proteins
       data = 'CC   -!- SIMILARITY: Contains 1 protein kinase domain.
 CC   -!- SIMILARITY: Contains 1 RGS domain.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Contains 1 protein kinase domain.", "Contains 1 RGS domain."],
                    sp.cc['SIMILARITY'])
     end
@@ -803,7 +800,7 @@ CC       endocytic compartment. Associates with lysosome membranes."
       data = "CC   -!- SUBCELLULAR LOCATION: Plastid; chloroplast; chloroplast membrane;
 CC       peripheral membrane protein. Plastid; chloroplast; chloroplast
 CC       stroma."
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Plastid; chloroplast; chloroplast membrane; peripheral membrane protein. Plastid; chloroplast; chloroplast stroma."],
                    sp.cc['SUBCELLULAR LOCATION'])
       assert_equal([["Plastid",
@@ -822,7 +819,7 @@ CC       stroma."
 CC       MAPK9, MAPK10 and MAPK12.'
 
       data = 'CC   -!- SUBUNIT: Homotetramer.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Homotetramer."],
                    sp.cc['SUBUNIT'])
     end
@@ -838,7 +835,7 @@ CC       thymus, testis, embryo and proliferating blood lymphocytes."
 CC       heart, spleen, kidney and blood. Isoform 2 is expressed (at
 CC       protein level) in the spleen, skeletal muscle and gastrointestinal
 CC       epithelia."
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["Isoform 2 is highly expressed in the brain, heart, spleen, kidney and blood. Isoform 2 is expressed (at protein level) in the spleen, skeletal muscle and gastrointestinal epithelia."],
                    sp.cc['TISSUE SPECIFICITY'])
     end
@@ -846,7 +843,7 @@ CC       epithelia."
     def test_toxic_dose
       # TOXIC DOSE	Description of the lethal dose (LD), paralytic dose (PD) or effective dose of a protein
       data = 'CC   -!- TOXIC DOSE: LD(50) is 12 mg/kg by intraperitoneal injection.'
-      sp = Bio::SPTR.new(data)
+      sp = Bio::UniProtKB.new(data)
       assert_equal(["LD(50) is 12 mg/kg by intraperitoneal injection."],
                    sp.cc['TOXIC DOSE'])
     end
@@ -859,7 +856,7 @@ CC   -!- WEB RESOURCE: NAME=Connexin-deafness homepage;
 CC       URL="http://www.crg.es/deafness/".
 CC   -!- WEB RESOURCE: NAME=GeneReviews;
 CC       URL="http://www.genetests.org/query?gene=GJB1".'
-            sp = Bio::SPTR.new(data)
+            sp = Bio::UniProtKB.new(data)
       assert_equal(['NAME=Inherited peripheral neuropathies mutation db; URL="http://www.molgen.ua.ac.be/CMTMutations/".',
                     'NAME=Connexin-deafness homepage; URL="http://www.crg.es/deafness/".',
                     'NAME=GeneReviews; URL="http://www.genetests.org/query?gene=GJB1".'],
@@ -874,10 +871,10 @@ CC       URL="http://www.genetests.org/query?gene=GJB1".'
 
     end
 
-  end # class TestSPTRCC
+  end # class TestUniProtKB_CC
 
   # http://br.expasy.org/sprot/userman.html#Ref_line
-  class TestSPTRRef < Test::Unit::TestCase
+  class TestUniProtKB_Ref < Test::Unit::TestCase
 
     def setup
       data = 'RN   [1]
@@ -894,7 +891,7 @@ RT   exceptionally basic N-terminal domains to capture and localize an
 RT   atypical protein kinase C: characterization of Caenorhabditis elegans
 RT   C kinase adapter 1, a protein that avidly binds protein kinase C3.";
 RL   J. Biol. Chem. 276:10463-10475(2001).'
-      @obj = SPTR.new(data)
+      @obj = UniProtKB.new(data)
     end
 
     def test_ref
@@ -963,11 +960,11 @@ RL   J. Biol. Chem. 276:10463-10475(2001).'
                    @obj.ref.first['RL'])
     end
     
-  end # class TestSPTRReferences
+  end # class TestUniProtKB_References
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel41.0
-  class TestSPTRSwissProtRel41_0 < Test::Unit::TestCase
+  class TestUniProtKB_SwissProtRel41_0 < Test::Unit::TestCase
     # Progress in the conversion of Swiss-Prot to mixed-case characters
 
     # Multiple RP lines
@@ -975,7 +972,7 @@ RL   J. Biol. Chem. 276:10463-10475(2001).'
       data = "RN    [1]
 RP   SEQUENCE FROM N.A., SEQUENCE OF 23-42 AND 351-365, AND
 RP   CHARACTERIZATION."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['SEQUENCE FROM N.A.', 
                     'SEQUENCE OF 23-42 AND 351-365',
                     'CHARACTERIZATION'],
@@ -985,7 +982,7 @@ RP   CHARACTERIZATION."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel41.1
-  class TestSPTRSwissProtRel41_1 < Test::Unit::TestCase
+  class TestUniProtKB_SwissProtRel41_1 < Test::Unit::TestCase
     # New syntax of the CC line topic ALTERNATIVE PRODUCTS
     def test_alternative_products
       data = "ID   TEST_ENTRY      STANDARD;      PRT;   393 AA.
@@ -1004,7 +1001,7 @@ CC         Sequence=VSP_identifier_1, VSP_identifier_2;
 CC         Note=Free text;
 CC       Event=Alternative initiation;
 CC         Comment=Free text;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       res = {"Comment" => "Free text",
              "Named isoforms" => "2", 
              "Variants" => [{"Name" => "Isoform_1",
@@ -1049,7 +1046,7 @@ FT   VARSPLIC   1655   1705       Missing (in isoform 3A and isoform 3B).
 FT                                /FTId=VSP_004794.
 FT   VARSPLIC   1790   1790       Missing (in isoform Del-1790).
 FT                                /FTId=VSP_004795."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       
       assert_equal({"Comment" => "",
                     "Named isoforms" => "6",
@@ -1114,14 +1111,14 @@ FT                                /FTId=VSP_004795."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel41.10
-  class TestSPTRSwissProtRel41_10 < Test::Unit::TestCase
+  class TestUniProtKB_SwissProtRel41_10 < Test::Unit::TestCase
     # Reference Comment (RC) line topics may span lines
     def test_RC_lines
       data = "RN    [1]
 RC   STRAIN=AZ.026, DC.005, GA.039, GA2181, IL.014, IN.018, KY.172, KY2.37,
 RC   LA.013, MN.001, MNb027, MS.040, NY.016, OH.036, TN.173, TN2.38,
 RC   UT.002, AL.012, AZ.180, MI.035, VA.015, and IL2.17;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{"Text"=>"AZ.026", "Token"=>"STRAIN"}, 
                     {"Text"=>"DC.005", "Token"=>"STRAIN"},
                     {"Text"=>"GA.039", "Token"=>"STRAIN"},
@@ -1150,11 +1147,11 @@ RC   UT.002, AL.012, AZ.180, MI.035, VA.015, and IL2.17;"
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel41.20
-  class TestSPTRSwissProtRel41_20 < Test::Unit::TestCase
+  class TestUniProtKB_SwissProtRel41_20 < Test::Unit::TestCase
     # Case and wording change for submissions to Swiss-Prot in reference location (RL) lines
     def test_RL_lines
       data = "RL   Submitted (MAY-2002) to the SWISS-PROT data bank."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal('',
                     sp.ref.first['RL'])
     end
@@ -1164,7 +1161,7 @@ RC   UT.002, AL.012, AZ.180, MI.035, VA.015, and IL2.17;"
       data = "CC   -!- ALLERGEN: Causes an allergic reaction in human. Binds IgE. It is a
 CC       partially heat-labile allergen that may cause both respiratory and
 CC       food-allergy symptoms in patients with the bird-egg syndrome."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(["Causes an allergic reaction in human. Binds IgE. It is a partially heat-labile allergen that may cause both respiratory and food-allergy symptoms in patients with the bird-egg syndrome."],
                    sp.cc("ALLERGEN"))
     end
@@ -1172,11 +1169,11 @@ CC       food-allergy symptoms in patients with the bird-egg syndrome."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel42.6
-  class TestSPTRSwissProtRel42_6 < Test::Unit::TestCase
+  class TestUniProtKB_SwissProtRel42_6 < Test::Unit::TestCase
     # New comment line (CC) topic RNA EDITING
     def test_CC_rna_editing
       data = "CC   -!- RNA EDITING: Modified_positions=393, 431, 452, 495."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({"Note"=>"", 
                     "Modified_positions"=>['393', '431', '452', '495']},
                    sp.cc("RNA EDITING"))
@@ -1184,7 +1181,7 @@ CC       food-allergy symptoms in patients with the bird-egg syndrome."
       data = "CC   -!- RNA EDITING: Modified_positions=59, 78, 94, 98, 102, 121; Note=The
 CC       stop codon at position 121 is created by RNA editing. The nonsense
 CC       codon at position 59 is modified to a sense codon."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({"Note"=>"The stop codon at position 121 is created by RNA editing. The nonsense codon at position 59 is modified to a sense codon.", 
                     "Modified_positions"=>['59', '78', '94', '98', '102', '121']},
                    sp.cc("RNA EDITING"))
@@ -1192,7 +1189,7 @@ CC       codon at position 59 is modified to a sense codon."
       data = "CC   -!- RNA EDITING: Modified_positions=Not_applicable; Note=Some
 CC       positions are modified by RNA editing via nucleotide insertion or
 CC       deletion. The initiator methionine is created by RNA editing."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({'Modified_positions' => ['Not_applicable'],
                     'Note' => "Some positions are modified by RNA editing via nucleotide insertion or deletion. The initiator methionine is created by RNA editing."},
                    sp.cc("RNA EDITING"))
@@ -1201,14 +1198,14 @@ CC       deletion. The initiator methionine is created by RNA editing."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel1_12
-  class TestSPTRUniProtRel1_12 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel1_12 < Test::Unit::TestCase
     # Digital Object Identifier (DOI) in the RX line
     def test_DOI_in_RX_line
       # RX   [MEDLINE=Medline_identifier; ][PubMed=Pubmed_identifier; ][DOI=Digital_object_identifier;]
       data = "
 RN   [1]
 RX   MEDLINE=97291283; PubMed=9145897; DOI=10.1007/s00248-002-2038-4;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({'MEDLINE' => '97291283', 
                     'PubMed' => '9145897', 
                      'DOI' => '10.1007/s00248-002-2038-4'},
@@ -1221,7 +1218,7 @@ RX   MEDLINE=97291283; PubMed=9145897; DOI=10.1007/s00248-002-2038-4;"
 RN   [1]
 RG   The C. elegans sequencing consortium;
 RG   The Brazilian network for HIV isolation and characterization;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['The C. elegans sequencing consortium', 
                     'The Brazilian network for HIV isolation and characterization'],
                    sp.ref.first['RG'])
@@ -1230,14 +1227,14 @@ RG   The Brazilian network for HIV isolation and characterization;"
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel2_0
-  class TestSPTRUniProtRel2_0 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel2_0 < Test::Unit::TestCase
     # New format for the GN (Gene Name) line
     # GN   Name=<name>; Synonyms=<name1>[, <name2>...]; OrderedLocusNames=<name1>[, <name2>...];
     # xsGN   ORFNames=<name1>[, <name2>...];
     def test_GN_line
       data = "GN   Name=atpG; Synonyms=uncG, papC;
 GN   OrderedLocusNames=b3733, c4659, z5231, ECs4675, SF3813, S3955;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{:orfs => [],
                      :loci => ["b3733", "c4659", "z5231", "ECs4675", "SF3813", "S3955"],
                      :name => "atpG",
@@ -1245,7 +1242,7 @@ GN   OrderedLocusNames=b3733, c4659, z5231, ECs4675, SF3813, S3955;"
                    sp.gn)
 
       data = "GN   ORFNames=SPAC1834.11c;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{:orfs => ['SPAC1834.11c'], 
                      :loci => [], 
                      :name => '', 
@@ -1256,7 +1253,7 @@ GN   OrderedLocusNames=b3733, c4659, z5231, ECs4675, SF3813, S3955;"
 GN   ORFNames=MTCY164.27;
 GN   and
 GN   Name=cysA2; OrderedLocusNames=Rv0815c, MT0837; ORFNames=MTV043.07c;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{:orfs => ["MTCY164.27"],
                      :loci => ["Rv3117", "MT3199"],
                      :name => "cysA1", 
@@ -1270,12 +1267,12 @@ GN   Name=cysA2; OrderedLocusNames=Rv0815c, MT0837; ORFNames=MTV043.07c;"
   end
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel2_1
-  class TestSPTRUniProtRel2_1 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel2_1 < Test::Unit::TestCase
     # Format change in the comment line (CC) topic: MASS SPECTROMETRY
     def test_CC_mass_spectrometry
       data = "CC   -!- MASS SPECTROMETRY: MW=32875.93; METHOD=MALDI;
 CC       RANGE=1-284 (Isoform 3); NOTE=Ref.6."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{"RANGE"=>"1-284",
                      "METHOD"=>"MALDI",
                      "MW_ERR"=>nil,
@@ -1287,11 +1284,11 @@ CC       RANGE=1-284 (Isoform 3); NOTE=Ref.6."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel2_3
-  class TestSPTRUniProtRel2_3 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel2_3 < Test::Unit::TestCase
     # New RL line structure for electronic publications
     def test_RL_line
       data = "RL   Submitted (XXX-YYYY) to the HIV data bank."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal('',
                    sp.ref.first['RL'])
     end
@@ -1299,7 +1296,7 @@ CC       RANGE=1-284 (Isoform 3); NOTE=Ref.6."
     # Format change in the cross-reference to PDB
     def test_DR_PDB
       data = "DR   PDB; 1NB3; X-ray; A/B/C/D=116-335, P/R/S/T=98-105."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([["1NB3", "X-ray", "A/B/C/D=116-335, P/R/S/T=98-105"]],
                    sp.dr['PDB'])
     end
@@ -1307,7 +1304,7 @@ CC       RANGE=1-284 (Isoform 3); NOTE=Ref.6."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel3_4
-  class TestSPTRUniProtRel3_4 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel3_4 < Test::Unit::TestCase
     # Changes in the RP (Reference Position) line
     def test_RP_line
       data = "
@@ -1315,7 +1312,7 @@ RN   [1]
 RP   NUCLEOTIDE SEQUENCE [LARGE SCALE MRNA] (ISOFORM 1), PROTEIN SEQUENCE 
 RP   OF 108-131; 220-231 AND 349-393, CHARACTERIZATION, AND MUTAGENESIS OF 
 RP   ARG-336."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['NUCLEOTIDE SEQUENCE [LARGE SCALE MRNA] (ISOFORM 1)', 
                     'PROTEIN SEQUENCE OF 108-131; 220-231 AND 349-393', 
                     'CHARACTERIZATION', 
@@ -1325,7 +1322,7 @@ RP   ARG-336."
       data = "
 RN   [1]
 RP   NUCLEOTIDE SEQUENCE [GENOMIC DNA / MRNA]."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['NUCLEOTIDE SEQUENCE [GENOMIC DNA / MRNA]'],
                    sp.ref.first['RP'])
     end
@@ -1339,7 +1336,7 @@ CC         Abs(max)=395 nm;
 CC         Note=Exhibits a smaller absorbance peak at 470 nm. The
 CC         fluorescence emission spectrum peaks at 509 nm with a shoulder
 CC         at 540 nm;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({"Redox potential" => "", 
                     "Temperature dependence" => "", 
                     "Kinetic parameters" => {}, 
@@ -1357,7 +1354,7 @@ CC         Vmax=0.11 mmol/min/mg enzyme with maltose as substrate;
 CC         Note=Acetylates glucose, maltose, mannose, galactose, and
 CC         fructose with a decreasing relative rate of 1, 0.55, 0.20, 0.07,
 CC         0.04;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({"Redox potential" => "", 
                     "Temperature dependence" => "", 
                     "Kinetic parameters" => {"KM" => "62 mM for glucose; KM=90 mM for maltose",  
@@ -1375,7 +1372,7 @@ CC         Optimum pH is 7.5. Active from pH 5.0 to 9.0;
 CC       Temperature dependence:
 CC         Optimum temperature is 45 degrees Celsius. Active from 30 to 60
 CC         degrees Celsius;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({"Redox potential" => "", 
                     "Temperature dependence" => "Optimum temperature is 45 degrees Celsius. Active from 30 to 60 degrees Celsius", 
                     "Kinetic parameters" => {},
@@ -1387,7 +1384,7 @@ CC         degrees Celsius;"
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel3_5
-  class TestSPTRUniProtRel3_5 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel3_5 < Test::Unit::TestCase
     # Extension of the Swiss-Prot entry name format
     def test_entry_name_format
       # TBD
@@ -1395,7 +1392,7 @@ CC         degrees Celsius;"
   end
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel4_0
-  class TestSPTRUniProtRel4_0 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel4_0 < Test::Unit::TestCase
     # Extension of the TrEMBL entry name format
 
     # Change of the entry name in many Swiss-Prot entries
@@ -1404,7 +1401,7 @@ CC         degrees Celsius;"
     def test_CC_interaction
       data = "CC   -!- INTERACTION:
 CC       P11450:fcp3c; NbExp=1; IntAct=EBI-126914, EBI-159556;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{"SP_Ac" => "P11450",
                      "identifier" => "fcp3c",
                      "optional_identifier" => nil,
@@ -1416,7 +1413,7 @@ CC       P11450:fcp3c; NbExp=1; IntAct=EBI-126914, EBI-159556;"
     def test_CC_interaction_isoform
       data = "CC   -!- INTERACTION:
 CC       Q9W1K5-1:cg11299; NbExp=1; IntAct=EBI-133844, EBI-212772;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{"SP_Ac" => 'Q9W1K5-1',
                      "identifier" => 'cg11299',
                      "optional_identifier" => nil,
@@ -1428,7 +1425,7 @@ CC       Q9W1K5-1:cg11299; NbExp=1; IntAct=EBI-133844, EBI-212772;"
     def test_CC_interaction_no_gene_name
       data = "CC   -!- INTERACTION:
 CC       Q8NI08:-; NbExp=1; IntAct=EBI-80809, EBI-80799;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{"SP_Ac" => 'Q8NI08',
                      "identifier" => '-',
                      "optional_identifier" => nil,
@@ -1441,7 +1438,7 @@ CC       Q8NI08:-; NbExp=1; IntAct=EBI-80809, EBI-80799;"
       data = "ID   TEST_ENTRY      STANDARD;      PRT;   393 AA.
 CC   -!- INTERACTION:
 CC       Self; NbExp=1; IntAct=EBI-123485, EBI-123485;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{"SP_Ac" => 'TEST_ENTRY',
                      "identifier" => 'TEST_ENTRY',
                      "optional_identifier" => nil,
@@ -1453,7 +1450,7 @@ CC       Self; NbExp=1; IntAct=EBI-123485, EBI-123485;"
     def test_CC_interaction_The_source_organisms_of_the_interacting_proteins_are_different
       data = "CC   -!- INTERACTION:
 CC       Q8C1S0:2410018m14rik (xeno); NbExp=1; IntAct=EBI-394562, EBI-398761;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{"SP_Ac" => 'Q8C1S0', 
                      "identifier" => '2410018m14rik',
                      "optional_identifier" => '(xeno)',  
@@ -1466,7 +1463,7 @@ CC       Q8C1S0:2410018m14rik (xeno); NbExp=1; IntAct=EBI-394562, EBI-398761;"
       data = "CC   -!- INTERACTION:
 CC       P51617:irak1; NbExp=1; IntAct=EBI-448466, EBI-358664;
 CC       P51617:irak1; NbExp=1; IntAct=EBI-448472, EBI-358664;"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{"SP_Ac" => "P51617", 
                      "identifier" => "irak1",
                      "optional_identifier" => nil,
@@ -1483,7 +1480,7 @@ CC       P51617:irak1; NbExp=1; IntAct=EBI-448472, EBI-358664;"
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel5_0
-  class TestSPTRUniProtRel5_0 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel5_0 < Test::Unit::TestCase
     # Format change in the DR line
     # DR   DATABASE_IDENTIFIER; PRIMARY_IDENTIFIER; SECONDARY_IDENTIFIER[; TERTIARY_IDENTIFIER][; QUATERNARY_IDENTIFIER].
     def test_DR_line
@@ -1491,7 +1488,7 @@ CC       P51617:irak1; NbExp=1; IntAct=EBI-448472, EBI-358664;"
 DR   EMBL; M68939; AAA26107.1; -; Genomic_DNA.
 DR   EMBL; U56386; AAB72034.1; -; mRNA."
 
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([["M68939", "AAA26107.1", "-", "Genomic_DNA"],
                     ["U56386", "AAB72034.1", "-", "mRNA"]],
                    sp.dr['EMBL'])
@@ -1512,12 +1509,12 @@ DR   EMBL; U56386; AAB72034.1; -; mRNA."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel5_4
-  class TestSPTRUniProtRel5_4 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel5_4 < Test::Unit::TestCase
     # Multiple comment line (CC) topics COFACTOR
     def test_multiple_cofactors
       data = "CC   -!- COFACTOR: Binds 1 2Fe-2S cluster per subunit (By similarity).
 CC   -!- COFACTOR: Binds 1 Fe(2+) ion per subunit (By similarity)."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(["Binds 1 2Fe-2S cluster per subunit (By similarity).", 
                     "Binds 1 Fe(2+) ion per subunit (By similarity)."],
                    sp.cc['COFACTOR'])
@@ -1529,38 +1526,38 @@ CC   -!- COFACTOR: Binds 1 Fe(2+) ion per subunit (By similarity)."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel6_0
-  class TestSPTRUniProtRel6_0 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel6_0 < Test::Unit::TestCase
     # Changes in the OG (OrGanelle) line
     def test_OG_line
       data = "OG   Plastid."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['Plastid'], sp.og)
 
       data = "OG   Plastid; Apicoplast."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['Plastid', 'Apicoplast'], sp.og)
 
       data = "OG   Plastid; Chloroplast."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['Plastid', 'Chloroplast'], sp.og)
 
       data = "OG   Plastid; Cyanelle."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['Plastid', 'Cyanelle'], sp.og)
 
       data = "OG   Plastid; Non-photosynthetic plastid."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(['Plastid', 'Non-photosynthetic plastid'], sp.og)
     end
   end
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel6_1
-  class TestSPTRUniProtRel6_1 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel6_1 < Test::Unit::TestCase
     # Annotation changes concerning the feature key METAL
     def test_FT_metal
       old_data = "FT   METAL        61     61       Copper and zinc."
-      sp = SPTR.new(old_data)
+      sp = UniProtKB.new(old_data)
       assert_equal([{'From' => 61,
                      'To' => 61,
                      'Description' => 'Copper and zinc.',
@@ -1571,7 +1568,7 @@ CC   -!- COFACTOR: Binds 1 Fe(2+) ion per subunit (By similarity)."
 
       new_data = "FT   METAL        61     61       Copper.
 FT   METAL        61     61       Zinc."
-      sp = SPTR.new(new_data)
+      sp = UniProtKB.new(new_data)
       assert_equal([{"From" => 61, 
                      "To" => 61, 
                      "Description" => "Copper.",
@@ -1590,7 +1587,7 @@ FT   METAL        61     61       Zinc."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel6_5
-  class TestSPTRUniProtRel6_5 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel6_5 < Test::Unit::TestCase
     # Changes in the keywlist.txt file
     # * Modification of the HI line format:
     def test_HI_line
@@ -1599,7 +1596,7 @@ FT   METAL        61     61       Zinc."
       data = "HI   Molecular function: Ionic channel; Calcium channel.
 HI   Biological process: Transport; Ion transport; Calcium transport; Calcium channel.
 HI   Ligand: Calcium; Calcium channel."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal([{'Category' => 'Molecular function', 
                      'Keywords' => ['Ionic channel'], 
                      'Keyword' => 'Calcium channel'},
@@ -1615,13 +1612,13 @@ HI   Ligand: Calcium; Calcium channel."
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel7.0
-  class TestSPTRUniProtRel7_0 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel7_0 < Test::Unit::TestCase
     # Changes concerning dates and versions numbers (DT lines)
     def test_DT_line
       up_sp_data = "DT   01-JAN-1998, integrated into UniProtKB/Swiss-Prot.
 DT   15-OCT-2001, sequence version 3.
 DT   01-APR-2004, entry version 14."
-      sp = SPTR.new(up_sp_data)
+      sp = UniProtKB.new(up_sp_data)
       assert_equal({"sequence" => "15-OCT-2001, sequence version 3.", 
                     "annotation" => "01-APR-2004, entry version 14.", 
                     "created" => "01-JAN-1998, integrated into UniProtKB/Swiss-Prot."},
@@ -1630,7 +1627,7 @@ DT   01-APR-2004, entry version 14."
       up_tr_data = "DT   01-FEB-1999, integrated into UniProtKB/TrEMBL.
 DT   15-OCT-2000, sequence version 2.
 DT   15-DEC-2004, entry version 5."
-      sp = SPTR.new(up_tr_data)
+      sp = UniProtKB.new(up_tr_data)
       assert_equal({"sequence" => "15-OCT-2000, sequence version 2.", 
                     "annotation" => "15-DEC-2004, entry version 5.",
                     "created" => "01-FEB-1999, integrated into UniProtKB/TrEMBL."},
@@ -1645,33 +1642,32 @@ DT   15-DEC-2004, entry version 5."
 CC   Copyrighted by the UniProt Consortium, see http://www.uniprot.org/terms
 CC   Distributed under the Creative Commons Attribution-NoDerivs License
 CC   -----------------------------------------------------------------------"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({}, sp.cc)
     end
   end
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel7.6
-  class TestSPTRUniProtRel7_6 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel7_6 < Test::Unit::TestCase
     # Sequences with over 10000 amino acids in UniProtKB/Swiss-Prot
     def test_10000aa
-      entry_id = 'Q09165'
       data = ["SQ   SEQUENCE   393 AA;  43653 MW;  AD5C149FD8106131 CRC64;\n",
               "     MEEPQSDPSV EPPLSQETFS DLWKLLPENN VLSPLPSQAM DDLMLSPDDI EQWFTEDPGP\n" * 200,
               "//\n"].join
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(12000, sp.seq.size)
     end
   end
 
 
   # Changes in http://br.expasy.org/sprot/relnotes/sp_news.html#rel8.0
-  class TestSPTRUniProtRel8_0 < Test::Unit::TestCase
+  class TestUniProtKB_UniProtRel8_0 < Test::Unit::TestCase
     # Replacement of the feature key VARSPLIC by VAR_SEQ
     def test_FT_VER_SEQ
       data = "FT   VAR_SEQ       1     34       Missing (in isoform 3).
 FT                                /FTId=VSP_004099."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       res = [{'From' => 1, 
               'To' => 34, 
               'Description' => 'Missing (in isoform 3).', 
@@ -1709,7 +1705,7 @@ CC       Name=2; Synonyms=p19ARF;
 CC         IsoId=O77618-1; Sequence=External;
 FT   VAR_SEQ       1     34       Missing (in isoform 3).
 FT                                /FTId=VSP_004099."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal({"Comment" => "Isoform 1 and isoform 2 arise due to the use of two alternative first exons joined to a common exon 2 at the same acceptor site but in different reading frames, resulting in two completely different isoforms", 
                      "Named isoforms" => "3",
                      "Variants" =>  [{"IsoId" => ["O77617-1"], 
@@ -1779,14 +1775,14 @@ OH   NCBI_TaxID=3603; Vitis.'
              {'NCBI_TaxID' => '4113', 'HostName' => 'Solanum tuberosum (Potato)'},
              {'NCBI_TaxID' => '13305', 'HostName' => 'Tulipa'},
              {'NCBI_TaxID' => '3603', 'HostName' => 'Vitis'}]
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal(res, sp.oh)
     end
 
     def test_OH_line_exception
       data = "ID   TEST_ENTRY      STANDARD;      PRT;   393 AA.
 OH   NCBI_TaxID=23216x: Rubus (bramble)."
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_raise(ArgumentError) { sp.oh }
     end
 
@@ -1795,13 +1791,13 @@ OH   NCBI_TaxID=23216x: Rubus (bramble)."
   class TestOSLine < Test::Unit::TestCase
     def test_uncapitalized_letter_Q32725_9POAL
       data = "OS   unknown cyperaceous sp.\n"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal('unknown cyperaceous sp.', sp.os.first['os'])
     end
 
     def test_period_trancation_O63147
       data = "OS   Hippotis sp. Clark and Watts 825.\n"
-      sp = SPTR.new(data)
+      sp = UniProtKB.new(data)
       assert_equal('Hippotis sp. Clark and Watts 825.', sp.os.first['os'])
     end
   end
diff --git a/test/unit/bio/db/embl/test_uniprot_new_part.rb b/test/unit/bio/db/embl/test_uniprotkb_new_part.rb
similarity index 89%
rename from test/unit/bio/db/embl/test_uniprot_new_part.rb
rename to test/unit/bio/db/embl/test_uniprotkb_new_part.rb
index 24ea552..0fd2b20 100644
--- a/test/unit/bio/db/embl/test_uniprot_new_part.rb
+++ b/test/unit/bio/db/embl/test_uniprotkb_new_part.rb
@@ -1,5 +1,5 @@
 #
-# test/unit/bio/db/embl/test_uniprot_new_part.rb - Unit test for Bio::UniProt for new file formats using part of psudo entries
+# test/unit/bio/db/embl/test_uniprotkb_new_part.rb - Unit test for Bio::UniProtKB for new file formats using part of psudo entries
 #
 # Copyright::  Copyright (C) 2011 Naohisa Goto <ng at bioruby.org>
 # License::    The Ruby License
@@ -12,14 +12,14 @@ load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 4,
 
 # libraries needed for the tests
 require 'test/unit'
-require 'bio/db/embl/uniprot'
+require 'bio/db/embl/uniprotkb'
 
 module Bio
-  class TestUniProt_ID_since_rel9_0 < Test::Unit::TestCase
+  class TestUniProtKB_ID_since_rel9_0 < Test::Unit::TestCase
 
     def setup
       text = "ID   ABC_DEFGH               Reviewed;         256 AA.\n"
-      @obj = Bio::UniProt.new(text)
+      @obj = Bio::UniProtKB.new(text)
     end
 
     def test_id_line
@@ -55,9 +55,9 @@ module Bio
     def test_molecule
       assert_nil(@obj.molecule)
     end
-  end #class TestUniProt_ID_since_rel9_0
+  end #class TestUniProtKB_ID_since_rel9_0
 
-  class TestUniProt_DE_since_rel14_0 < Test::Unit::TestCase
+  class TestUniProtKB_DE_since_rel14_0 < Test::Unit::TestCase
 
     def setup
       text = <<the_end_of_the_text
@@ -87,7 +87,7 @@ DE              Short=CPAC;
 DE   Flags: Precursor; Fragment;
 the_end_of_the_text
 
-      @obj = Bio::UniProt.new(text)
+      @obj = Bio::UniProtKB.new(text)
     end
 
     def test_private_parse_DE_line_rel14
@@ -165,9 +165,9 @@ the_end_of_the_text
       assert_equal(expected, @obj.synonyms)
     end
 
-  end #class TestUniProt_DE_since_rel14_0
+  end #class TestUniProtKB_DE_since_rel14_0
 
-  class TestUniProt_CC_WEB_RESOURCE_since_rel12_2 < Test::Unit::TestCase
+  class TestUniProtKB_CC_WEB_RESOURCE_since_rel12_2 < Test::Unit::TestCase
 
     def setup
       text = <<the_end_of_the_text
@@ -182,7 +182,7 @@ CC   -!- WEB RESOURCE: Name=BioRuby Wiki site;
 CC       URL="http://bioruby.open-bio.org/wiki/";
 the_end_of_the_text
 
-      @obj = Bio::UniProt.new(text)
+      @obj = Bio::UniProtKB.new(text)
     end
 
     def test_cc_web_resource
@@ -203,6 +203,6 @@ the_end_of_the_text
 
       assert_equal(expected, @obj.cc('WEB RESOURCE'))
     end
-  end #class TestUniProt_CC_WEB_RESOURCE_since_rel12_2
+  end #class TestUniProtKB_CC_WEB_RESOURCE_since_rel12_2
 
 end #module Bio
diff --git a/test/unit/bio/db/genbank/test_genbank.rb b/test/unit/bio/db/genbank/test_genbank.rb
index 416a4db..773015f 100644
--- a/test/unit/bio/db/genbank/test_genbank.rb
+++ b/test/unit/bio/db/genbank/test_genbank.rb
@@ -202,7 +202,7 @@ module Bio
  "Saccharomycetaceae",
  "Saccharomyces"]
       assert_equal(expected, @obj.classification)
-    end
+   end
 
     def test_strandedness
       assert_equal(nil, @obj.strandedness)
@@ -222,10 +222,10 @@ module Bio
       expected_topology = "linear"
       expected_strandedness = nil
       expected_keywords = []
-      expected_sequence_version = "1"
-      expected_date_modified = "2010-03-23"
+      expected_sequence_version = 1
+      expected_date_modified = Date.parse("2010-03-23")
       expected_definition = "Saccharomyces cerevisiae TCP1-beta gene, partial cds; and Axl2p (AXL2) and Rev7p (REV7) genes, complete cds."
-      expected_species = []
+      expected_species = 'Saccharomyces cerevisiae'
       expected_classification= ["Eukaryota", "Fungi", "Dikarya", "Ascomycota", "Saccharomyceta", "Saccharomycotina", "Saccharomycetes", "Saccharomycetales", "Saccharomycetaceae", "Saccharomyces"]
       expected_comments = ""
       expected_references = [{
@@ -353,9 +353,15 @@ module Bio
       seqids = seq.other_seqids.first
       actual_other_seqids = [seqids.id, seqids.database, seqids.secondary_ids]
       assert_equal(expected_other_seqids, actual_other_seqids)
+      assert_equal(expected_molecule_type, seq.molecule_type)
       assert_equal(expected_division, seq.division)
+      assert_equal(expected_topology, seq.topology)
       assert_equal(expected_strandedness, seq.strandedness)
       assert_equal(expected_keywords, seq.keywords)
+      assert_equal(expected_sequence_version, seq.sequence_version)
+      assert_equal(expected_date_modified, seq.date_modified)
+      assert_equal(expected_definition, seq.definition)
+      assert_equal(expected_species, seq.species)
       assert_equal(expected_classification, seq.classification)
       assert_equal(expected_comments, seq.comments)
       refs = seq.references
diff --git a/test/unit/bio/db/pdb/test_pdb.rb b/test/unit/bio/db/pdb/test_pdb.rb
index efca85d..54670b6 100644
--- a/test/unit/bio/db/pdb/test_pdb.rb
+++ b/test/unit/bio/db/pdb/test_pdb.rb
@@ -6,7 +6,6 @@
 #
 # License:: The Ruby License
 #
-#  $Id:$
 #
 
 # loading helper routine for testing bioruby
@@ -2517,7 +2516,8 @@ EOS
   # test of Bio::PDB::Record::ATOM
   class TestResidue < Test::Unit::TestCase
     def setup
-      @res = Bio::PDB::Residue.new(resName="ALA",resSeq = 7, iCode = "", chain = nil)
+      # resName="ALA",resSeq = 7, iCode = "", chain = nil
+      @res = Bio::PDB::Residue.new("ALA", 7, "", nil)
       @res.addAtom(Bio::PDB::Record::ATOM.new.initialize_from_string("ATOM      1  N   ALA A   7      23.484 -35.866  44.510  1.00 28.52           N"))
       @res.addAtom(Bio::PDB::Record::ATOM.new.initialize_from_string("ATOM      2  CA  ALA A   7      23.849 -34.509  44.904  1.00 27.89           C"))
       @res.addAtom(Bio::PDB::Record::ATOM.new.initialize_from_string("ATOM      3  C   ALA A   7      23.102 -34.082  46.159  1.00 26.68           C"))
@@ -2615,14 +2615,16 @@ expected = [{:serial=>1, :name=>"N", :altLoc=>" ", :resName=>"ALA", :chainID=>"A
       assert_equal(expected,actual)
     end
     def test_update_resudue_id
-      res = Bio::PDB::Residue.new(resName="ALA", resSeq = nil, iCode = nil, chain = nil)
+      # resName="ALA", resSeq = nil, iCode = nil, chain = nil
+      res = Bio::PDB::Residue.new("ALA", nil, nil, nil)
       assert_equal(nil, res.residue_id)
     end
   end
   
   class TestHeterogen < Test::Unit::TestCase
     def setup
-      @res = Bio::PDB::Heterogen.new(resName="EDO",resSeq = 701, iCode = "", chain = nil)
+      # resName="EDO",resSeq = 701, iCode = "", chain = nil
+      @res = Bio::PDB::Heterogen.new("EDO", 701, "", nil)
       @res.addAtom(Bio::PDB::Record::HETATM.new.initialize_from_string("HETATM30583  O1  EDO A 701      -1.516 -26.859  49.587  1.00 35.20           O"))
       @res.addAtom(Bio::PDB::Record::HETATM.new.initialize_from_string("HETATM30584  C2  EDO A 701      -0.275 -28.124  51.219  1.00 34.49           C"))
       @res.addAtom(Bio::PDB::Record::HETATM.new.initialize_from_string("HETATM30585  O2  EDO A 701      -1.442 -28.941  51.167  1.00 33.95           O"))
@@ -2716,7 +2718,8 @@ expected = [{:z=>49.587, :resName=>"EDO", :altLoc=>" ", :resSeq=>701, :occupancy
       assert_equal(expected,actual)
     end
     def test_update_resudue_id
-      res = Bio::PDB::Heterogen.new(resName="EDD", resSeq = nil, iCode = nil, chain = nil)
+      # resName="EDD", resSeq = nil, iCode = nil, chain = nil
+      res = Bio::PDB::Heterogen.new("EDD", nil, nil, nil)
       assert_equal(nil, res.residue_id)
     end
   end
@@ -2770,13 +2773,15 @@ expected = [{:z=>49.587, :resName=>"EDO", :altLoc=>" ", :resSeq=>701, :occupancy
         assert_equal(expected, actual)
       end
       def test_addResidue
-        assert_nothing_raised{ @chain.addResidue(Bio::PDB::Residue.new(resName="ALA",resSeq = 9, iCode = 1, chain = @chain))}
+        # resName="ALA",resSeq = 9, iCode = 1, chain = @chain
+        assert_nothing_raised{ @chain.addResidue(Bio::PDB::Residue.new("ALA", 9, 1, @chain))}
       end
       def test_aaseq
         assert_equal("AAA", @chain.aaseq)
       end
       def test_addLigand
-         assert_nothing_raised{ @chain.addLigand(Bio::PDB::Heterogen.new(resName="EDD",resSeq = 10, iCode = 2, chain = @chain)) }
+         # resName="EDD",resSeq = 10, iCode = 2, chain = @chain
+         assert_nothing_raised{ @chain.addLigand(Bio::PDB::Heterogen.new("EDD", 10, 2, @chain)) }
       end
       def test_atom_seq
         assert_equal("AAA", @chain.atom_seq)
@@ -2940,7 +2945,8 @@ expected = [{:z=>49.587, :resName=>"EDO", :altLoc=>" ", :resSeq=>701, :occupancy
   #this class tests Bio::PDB::Utils with Bio::PDB::Residue class witch is generated directly
   class TestUtils < Test::Unit::TestCase
     def setup
-      @res = Bio::PDB::Residue.new(resName="ALA",resSeq = 7, iCode = "", chain = nil)
+      # resName="ALA",resSeq = 7, iCode = "", chain = nil
+      @res = Bio::PDB::Residue.new("ALA", 7, "", nil)
       @res.addAtom(Bio::PDB::Record::ATOM.new.initialize_from_string("ATOM      1  N   ALA A   7      23.484 -35.866  44.510  1.00 28.52           N"))
       @res.addAtom(Bio::PDB::Record::ATOM.new.initialize_from_string("ATOM      2  CA  ALA A   7      23.849 -34.509  44.904  1.00 27.89           C"))
       @res.addAtom(Bio::PDB::Record::ATOM.new.initialize_from_string("ATOM      3  C   ALA A   7      23.102 -34.082  46.159  1.00 26.68           C"))
diff --git a/test/unit/bio/db/test_fasta.rb b/test/unit/bio/db/test_fasta.rb
index bd37e10..d672b17 100644
--- a/test/unit/bio/db/test_fasta.rb
+++ b/test/unit/bio/db/test_fasta.rb
@@ -95,7 +95,7 @@ END
     def test_entry_id
       assert_equal('sce:YBR160W', @obj.entry_id)
     end
-
+    
     def test_acc_version
       assert_equal(nil, @obj.acc_version)
     end
@@ -109,6 +109,10 @@ END
       data = "sce:YBR160W  CDC28, SRM5; cyclin-dependent protein kinase catalytic subunit [EC:2.7.1.-] [SP:CC28_YEAST]"
       assert_equal(data, @obj.definition)
     end
+    
+    def test_first_name
+      assert_equal('sce:YBR160W', @obj.first_name)
+    end
 
     def test_data
       data = "\nMSGELANYKRLEKVGEGTYGVVYKALDLRPGQGQRVVALKKIRLESEDEG\nVPSTAIREISLLKELKDDNIVRLYDIVHSDAHKLYLVFEFLDLDLKRYME\nGIPKDQPLGADIVKKFMMQLCKGIAYCHSHRILHRDLKPQNLLINKDGNL\nKLGDFGLARAFGVPLRAYTHEIVTLWYRAPEVLLGGKQYSTGVDTWSIGC\nIFAEMCNRKPIFSGDSEIDQIFKIFRVLGTPNEAIWPDIVYLPDFKPSFP\nQWRRKDLSQVVPSLDPRGIDLLDKLLAYDPINRISARRAAIHPYFQES\n"
@@ -225,7 +229,43 @@ END
     def test_acc_version
       assert_equal('AAV50056.1', @obj.acc_version)
     end
+    
+    def test_first_name
+      assert_equal('gi|55416189|gb|AAV50056.1|', @obj.first_name)
+    end
 
   end # class TestFastaFormat
 
+
+  class TestFastaFirstName < Test::Unit::TestCase
+    def test_first_name1
+      data = ">abc def\nATGC"
+      assert_equal 'abc', Bio::FastaFormat.new(data).first_name
+    end
+    
+    def test_first_name_multi_identifier
+      data = ">gi|398365175|ref|NP_009718.3| Cdc28p [Saccharomyces cerevisiae S288c] #=> 'gi|398365175|ref|NP_009718.3|\nATGCTG"
+      assert_equal 'gi|398365175|ref|NP_009718.3|', Bio::FastaFormat.new(data).first_name
+    end
+    
+    def test_first_name_single_worded_defintion
+      data = ">abc\nATGC"
+      assert_equal 'abc', Bio::FastaFormat.new(data).first_name
+    end
+    
+    def test_no_definition
+      data = ">\nATGC"
+      assert_equal '', Bio::FastaFormat.new(data).first_name
+    end
+    
+    def test_tabbed_defintion
+      data = ">gabc\tdef\nATGC"
+      assert_equal 'gabc', Bio::FastaFormat.new(data).first_name
+    end
+    
+    def test_space_before_first_name
+      data = "> gabcds\tdef\nATGC"
+      assert_equal 'gabcds', Bio::FastaFormat.new(data).first_name
+    end
+  end
 end
diff --git a/test/unit/bio/db/test_fastq.rb b/test/unit/bio/db/test_fastq.rb
index 24688ff..ac2ceda 100644
--- a/test/unit/bio/db/test_fastq.rb
+++ b/test/unit/bio/db/test_fastq.rb
@@ -795,7 +795,7 @@ _9_
       ERRORS = [ Bio::Fastq::Error::Long_qual.new ]
     end #class TestFastq_error_short_qual
 
-    class TestFastq_error_spaces < Test::Unit::TestCase
+    module TemplateTestFastq_error_spaces
       include TestFastq_error
 
       FILENAME = 'error_spaces.fastq'
@@ -821,22 +821,32 @@ _9_
           end
         end
       end
+    end #module TemplateTestFastq_error_spaces
+
+    class TestFastq_error_spaces < Test::Unit::TestCase
+      include TemplateTestFastq_error_spaces
     end #class TestFastq_error_spaces
 
-    class TestFastq_error_tabs < TestFastq_error_spaces
+    class TestFastq_error_tabs < Test::Unit::TestCase
+      include TemplateTestFastq_error_spaces
       FILENAME = 'error_tabs.fastq'
     end #class TestFastq_error_tabs
 
-    class TestFastq_error_trunc_at_plus < Test::Unit::TestCase
+    module TemplateTestFastq_error_trunc_at_plus
       include TestFastq_error
 
       FILENAME = 'error_trunc_at_plus.fastq'
       PRE_SKIP = 4
       POST_SKIP = 0
       ERRORS = [ Bio::Fastq::Error::No_qual.new ]
+    end #module TemplateTestFastq_error_trunc_at_plus
+
+    class TestFastq_error_trunc_at_plus < Test::Unit::TestCase
+      include TemplateTestFastq_error_trunc_at_plus
     end #class TestFastq_error_trunc_at_plus
 
-    class TestFastq_error_trunc_at_qual < TestFastq_error_trunc_at_plus
+    class TestFastq_error_trunc_at_qual < Test::Unit::TestCase
+      include TemplateTestFastq_error_trunc_at_plus
       FILENAME = 'error_trunc_at_qual.fastq'
     end #class TestFastq_error_trunc_at_qual
 
diff --git a/test/unit/bio/db/test_gff.rb b/test/unit/bio/db/test_gff.rb
index 57ddc24..a3c143e 100644
--- a/test/unit/bio/db/test_gff.rb
+++ b/test/unit/bio/db/test_gff.rb
@@ -268,7 +268,7 @@ END_OF_DATA
       assert_equal(val_Target, @obj.attribute('Target'))
       assert_equal('0.0003', @obj.attribute('E_value'))
       val_Align0 = Bio::GFF::GFF2::Record::Value.new(['101', '11'])
-      val_Align1 = Bio::GFF::GFF2::Record::Value.new(['179', '36'])
+      #val_Align1 = Bio::GFF::GFF2::Record::Value.new(['179', '36'])
       assert_equal(val_Align0, @obj.attribute('Align'))
       val_Comment = Bio::GFF::GFF2::Record::Value.new(["Please ignore this \"Comment\" attribute; Escape \x1a\037 and \\\t\r\n\f\b\a\e\v; This is test.", "123", "4.56e-34", "Test for freetext"])
       assert_equal(val_Comment, @obj.attribute('Comment'))
@@ -285,7 +285,7 @@ END_OF_DATA
       assert_equal(val_Target, @obj.get_attribute('Target'))
       assert_equal('0.0003', @obj.get_attribute('E_value'))
       val_Align0 = Bio::GFF::GFF2::Record::Value.new(['101', '11'])
-      val_Align1 = Bio::GFF::GFF2::Record::Value.new(['179', '36'])
+      #val_Align1 = Bio::GFF::GFF2::Record::Value.new(['179', '36'])
       assert_equal(val_Align0, @obj.get_attribute('Align'))
       val_Comment = Bio::GFF::GFF2::Record::Value.new(["Please ignore this \"Comment\" attribute; Escape \x1a\037 and \\\t\r\n\f\b\a\e\v; This is test.", "123", "4.56e-34", "Test for freetext"])
       assert_equal(val_Comment, @obj.get_attribute('Comment'))
diff --git a/test/unit/bio/db/test_phyloxml.rb b/test/unit/bio/db/test_phyloxml.rb
index e5065c0..c24278d 100644
--- a/test/unit/bio/db/test_phyloxml.rb
+++ b/test/unit/bio/db/test_phyloxml.rb
@@ -36,43 +36,43 @@ module Bio
 
   module TestPhyloXMLData
 
-  PHYLOXML_TEST_DATA = Pathname.new(File.join(BioRubyTestDataPath, 'phyloxml')).cleanpath.to_s
+    PHYLOXML_TEST_DATA = Pathname.new(File.join(BioRubyTestDataPath, 'phyloxml')).cleanpath.to_s
 
-  def self.example_xml
-    File.join PHYLOXML_TEST_DATA, 'phyloxml_examples.xml'
-    #If you want to test the output of writer, then do this:
-    #File.join PHYLOXML_TEST_DATA, 'phyloxml_examples_test.xml'
-    # But make sure you run ruby test/unit/bio/db/test_phyloxml_writer.rb before
-  end
+    def self.example_xml
+      File.join PHYLOXML_TEST_DATA, 'phyloxml_examples.xml'
+      #If you want to test the output of writer, then do this:
+      #File.join PHYLOXML_TEST_DATA, 'phyloxml_examples_test.xml'
+      # But make sure you run ruby test/unit/bio/db/test_phyloxml_writer.rb before
+    end
 
-  def self.made_up_xml
-    File.join PHYLOXML_TEST_DATA, 'made_up.xml'
-    #If you want to test the output of writer, then do this:
-    #File.join PHYLOXML_TEST_DATA, 'made_up_test.xml'
-    # But make sure you run ruby test/unit/bio/db/test_phyloxml_writer.rb before
-  end
+    def self.made_up_xml
+      File.join PHYLOXML_TEST_DATA, 'made_up.xml'
+      #If you want to test the output of writer, then do this:
+      #File.join PHYLOXML_TEST_DATA, 'made_up_test.xml'
+      # But make sure you run ruby test/unit/bio/db/test_phyloxml_writer.rb before
+    end
 
-  def self.metazoa_xml
-    File.join PHYLOXML_TEST_DATA, 'ncbi_taxonomy_metazoa.xml'
-  end
+    def self.metazoa_xml
+      File.join PHYLOXML_TEST_DATA, 'ncbi_taxonomy_metazoa.xml'
+    end
 
-  def self.mollusca_xml
-    File.join PHYLOXML_TEST_DATA, 'ncbi_taxonomy_mollusca.xml'
-  end
+    def self.mollusca_xml
+      File.join PHYLOXML_TEST_DATA, 'ncbi_taxonomy_mollusca.xml'
+    end
 
-  def self.life_xml
-    File.join PHYLOXML_TEST_DATA, 'tol_life_on_earth_1.xml'
-  end
+    def self.life_xml
+      File.join PHYLOXML_TEST_DATA, 'tol_life_on_earth_1.xml'
+    end
 
-  def self.dollo_xml
-    File.join PHYLOXML_TEST_DATA, 'o_tol_332_d_dollo.xml'
-  end
+    def self.dollo_xml
+      File.join PHYLOXML_TEST_DATA, 'o_tol_332_d_dollo.xml'
+    end
 
-  def self.mollusca_short_xml
-    File.join PHYLOXML_TEST_DATA, 'ncbi_taxonomy_mollusca_short.xml'
-  end
+    def self.mollusca_short_xml
+      File.join PHYLOXML_TEST_DATA, 'ncbi_taxonomy_mollusca_short.xml'
+    end
 
-end #end module TestPhyloXMLData
+  end #end module TestPhyloXMLData
 
   
 
@@ -100,7 +100,7 @@ end #end module TestPhyloXMLData
     end
 
     def test_new
-      str = File.read(TestPhyloXMLData.example_xml)
+      str = File.open(TestPhyloXMLData.example_xml, "rb") { |f| f.read }
       assert_instance_of(Bio::PhyloXML::Parser,
                          phyloxml = Bio::PhyloXML::Parser.new(str))
       common_test_next_tree(phyloxml)
diff --git a/test/unit/bio/db/test_phyloxml_writer.rb b/test/unit/bio/db/test_phyloxml_writer.rb
index 1c29c74..4e6cd26 100644
--- a/test/unit/bio/db/test_phyloxml_writer.rb
+++ b/test/unit/bio/db/test_phyloxml_writer.rb
@@ -172,7 +172,7 @@ module Bio
       writer.write(tree)
 
       assert_nothing_thrown do
-        tree2  = Bio::PhyloXML::Parser.open(filename) { |px| true }
+        Bio::PhyloXML::Parser.open(filename) { |px| true }
       end
 
       #File.delete(filename)
@@ -192,7 +192,7 @@ module Bio
       writer.write(@tree)
 
       assert_nothing_thrown do
-        tree2  = Bio::PhyloXML::Parser.open(filename) { |px| true }
+        Bio::PhyloXML::Parser.open(filename) { |px| true }
       end
       
       #File.delete(filename)
diff --git a/test/unit/bio/io/flatfile/test_autodetection.rb b/test/unit/bio/io/flatfile/test_autodetection.rb
index a829419..afc2ab0 100644
--- a/test/unit/bio/io/flatfile/test_autodetection.rb
+++ b/test/unit/bio/io/flatfile/test_autodetection.rb
@@ -5,7 +5,6 @@
 #
 # License:: The Ruby License
 #
-#  $Id:$
 #
 
 # loading helper routine for testing bioruby
@@ -349,7 +348,7 @@ __END_OF_TEXT__
 
     def test_fastq
       fn = File.join(TestDataPath, 'fastq', 'longreads_original_sanger.fastq')
-      text = File.read(fn, length=300)
+      text = File.read(fn, 300)
       assert_equal(Bio::Fastq, @ad.autodetect(text))
     end
 
diff --git a/test/unit/bio/io/flatfile/test_buffer.rb b/test/unit/bio/io/flatfile/test_buffer.rb
index 442184c..a1d4c59 100644
--- a/test/unit/bio/io/flatfile/test_buffer.rb
+++ b/test/unit/bio/io/flatfile/test_buffer.rb
@@ -184,7 +184,13 @@ module Bio::TestFlatFileBufferedInputStream
         assert_equal(TestDataFastaFormat01, obj.path)
         obj2 = obj
       end
-      assert_raise(IOError) { obj2.close }
+      # Since Ruby 2.3.0, calling IO#close to closed IO object is allowed
+      # without error.
+      if RUBY_VERSION >= "2.3.0"
+        assert_nothing_raised { obj2.close }
+      else
+        assert_raise(IOError) { obj2.close }
+      end
     end
   end #class TestBufferedInputStreamClassMethod
 
diff --git a/test/unit/bio/io/flatfile/test_splitter.rb b/test/unit/bio/io/flatfile/test_splitter.rb
index 1918572..335cf52 100644
--- a/test/unit/bio/io/flatfile/test_splitter.rb
+++ b/test/unit/bio/io/flatfile/test_splitter.rb
@@ -251,7 +251,7 @@ __END_OF_DATA__
             flag_header = add_header_line(line)
           end
           unless flag_header then
-            r = add_line(line)
+            add_line(line)
           end
         end
       end
diff --git a/test/unit/bio/io/test_ddbjxml.rb b/test/unit/bio/io/test_ddbjxml.rb
deleted file mode 100644
index 878b233..0000000
--- a/test/unit/bio/io/test_ddbjxml.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# test/unit/bio/io/test_ddbjxml.rb - Unit test for DDBJ XML.
-#
-# Copyright:: Copyright (C) 2005 Mitsuteru Nakao <n at bioruby.org>
-# License::   The Ruby License
-#
-#  $Id:$ 
-#
-
-# loading helper routine for testing bioruby
-require 'pathname'
-load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
-                            'bioruby_test_helper.rb')).cleanpath.to_s
-
-# libraries needed for the tests
-require 'test/unit'
-require 'bio/io/ddbjxml'
-
-module Bio
-
-class TestDDBJXMLConstants < Test::Unit::TestCase
-
-  def test_constants
-    constants = ["DDBJ", "TxSearch", "ClustalW", "PML", "Gib", "Fasta", 
-                 "BASE_URI", "SRS", "SERVER_URI", "Gtop", "GetEntry",
-                 "Blast", "RequestManager"].sort
-    assert_equal(constants, Bio::DDBJ::XML.constants.sort.collect{|x| x.to_s})
-  end
-
-  def test_base_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/", Bio::DDBJ::XML::BASE_URI)
-  end
-
-  def test_blast_server_rul
-    assert_equal("http://xml.nig.ac.jp/wsdl/Blast.wsdl", Bio::DDBJ::XML::Blast::SERVER_URI)
-  end
-
-  def test_clustalw_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/ClustalW.wsdl", Bio::DDBJ::XML::ClustalW::SERVER_URI)
-  end
-
-  def test_ddbj_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/DDBJ.wsdl", Bio::DDBJ::XML::DDBJ::SERVER_URI)
-  end
-
-  def test_fasta_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/Fasta.wsdl", Bio::DDBJ::XML::Fasta::SERVER_URI)
-  end
-
-  def test_getentry_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/GetEntry.wsdl", Bio::DDBJ::XML::GetEntry::SERVER_URI)
-  end
-
-  def test_gib_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/Gib.wsdl", Bio::DDBJ::XML::Gib::SERVER_URI)
-  end
-
-  def test_gtop_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/Gtop.wsdl", Bio::DDBJ::XML::Gtop::SERVER_URI)
-  end
-
-  def test_pml_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/PML.wsdl", Bio::DDBJ::XML::PML::SERVER_URI)
-  end
-
-  def test_srs_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/SRS.wsdl", Bio::DDBJ::XML::SRS::SERVER_URI)
-  end
-
-  def test_txsearch_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/TxSearch.wsdl", Bio::DDBJ::XML::TxSearch::SERVER_URI)
-  end
-
-  def test_requestmanager_server_url
-    assert_equal("http://xml.nig.ac.jp/wsdl/RequestManager.wsdl", Bio::DDBJ::XML::RequestManager::SERVER_URI)
-  end
-
-end
-
-
-end
diff --git a/test/unit/bio/io/test_ensembl.rb b/test/unit/bio/io/test_ensembl.rb
deleted file mode 100644
index a960cb1..0000000
--- a/test/unit/bio/io/test_ensembl.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-#
-# = test/unit/bio/io/test_ensembl.rb - Unit test for Bio::Ensembl.
-#
-# Copyright::   Copyright (C) 2006, 2007
-#               Mitsuteru C. Nakao <n at bioruby.org>
-# License::     The Ruby License
-#
-# $Id:$
-#
-
-# loading helper routine for testing bioruby
-require 'pathname'
-load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
-                            'bioruby_test_helper.rb')).cleanpath.to_s
-
-# libraries needed for the tests
-require 'test/unit'
-require 'bio/io/ensembl'
-
-# tests for ensembl.rb,v 1.4
-class TestEnsembl_v14 < Test::Unit::TestCase
-  def test_ensembl_url
-    assert_equal('http://www.ensembl.org', Bio::Ensembl::ENSEMBL_URL)
-  end
-  
-  def test_server
-    obj = Bio::Ensembl.new('Homo_sapiens')
-    assert_equal('http://www.ensembl.org', obj.server)
-  end
-
-  def test_organism
-    organism = 'Homo_sapiens'
-    obj = Bio::Ensembl.new(organism)
-    assert_equal(organism, obj.organism)
-  end
-  
-  def test_self_human
-    organism = 'Homo_sapiens'    
-    obj = Bio::Ensembl.human
-    assert_equal(organism, obj.organism)
-  end
-
-  def test_self_mouse
-    organism = 'Mus_musculus'
-    obj = Bio::Ensembl.mouse
-    assert_equal(organism, obj.organism)
-  end
-
-  def test_new_with_2_args
-    organism = 'Oryza_sativa'
-    server_url = 'http://www.gramene.org'
-    obj = Bio::Ensembl.new(organism, server_url)
-    assert_equal(organism, obj.organism)
-    assert_equal(server_url, obj.server)
-  end
-end
-
-
-class TestEnsembl < Test::Unit::TestCase
-  def test_server_name
-    assert_equal('http://www.ensembl.org', Bio::Ensembl::EBIServerURI)
-  end
-
-  def test_server_uri
-    assert_equal('http://www.ensembl.org', Bio::Ensembl.server_uri)
-  end
-  
-  def test_set_server_uri
-    host = 'http://localhost'
-    Bio::Ensembl.server_uri(host)
-    assert_equal(host, Bio::Ensembl.server_uri)
-  end
-end
-
-
-class TestEnsemblBase < Test::Unit::TestCase
-  def test_exportview
-    
-  end
-end
-
-class TestEnsemblBaseClient < Test::Unit::TestCase
-  def test_class
-
-  end
-end
-
-
-class TestEnsemblHuman < Test::Unit::TestCase
-  def test_organism
-    assert_equal("Homo_sapiens", Bio::Ensembl::Human::Organism)
-  end
-end
-
-class TestEnsemblMouse < Test::Unit::TestCase
-  def test_organism
-    assert_equal("Mus_musculus", Bio::Ensembl::Mouse::Organism)
-  end
-end
-
-
-class TestEnsemblOldStyleClient < Test::Unit::TestCase
-  class Rice < Bio::Ensembl::Base
-    Organism = 'Oryza_sativa'
-  end
-
-  def test_organism
-    assert_equal('Oryza_sativa', Rice::Organism)
-  end
-end
-  
diff --git a/test/unit/bio/io/test_soapwsdl.rb b/test/unit/bio/io/test_soapwsdl.rb
deleted file mode 100644
index bd4056d..0000000
--- a/test/unit/bio/io/test_soapwsdl.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-#
-# test/unit/bio/io/test_soapwsdl.rb - Unit test for SOAP/WSDL
-#
-# Copytight::   Copyright (C) 2005 Mitsuteru Nakao <n at bioruby.org>
-# License::     The Ruby License
-#
-#  $Id:$ 
-#
-
-# loading helper routine for testing bioruby
-require 'pathname'
-load Pathname.new(File.join(File.dirname(__FILE__), ['..'] * 3,
-                            'bioruby_test_helper.rb')).cleanpath.to_s
-
-# libraries needed for the tests
-require 'test/unit'
-require 'bio/io/soapwsdl'
-
-module Bio
-
-class TestSOAPWSDL < Test::Unit::TestCase
-
-  def setup
-    @obj = Bio::SOAPWSDL
-  end
-
-  def test_methods
-    methods = ['list_methods','wsdl', 'wsdl=', 'log', 'log=']
-    assert_equal(methods.sort, (@obj.instance_methods - Object.methods).sort.collect { |x| x.to_s })
-  end
-
-end
-end
diff --git a/test/unit/bio/io/test_togows.rb b/test/unit/bio/io/test_togows.rb
index 2bb7bd1..0ac26e0 100644
--- a/test/unit/bio/io/test_togows.rb
+++ b/test/unit/bio/io/test_togows.rb
@@ -5,7 +5,6 @@
 #               Naohisa Goto <ng at bioruby.org>
 # License::     The Ruby License
 #
-#  $Id:$
 #
 
 # loading helper routine for testing bioruby
@@ -59,7 +58,9 @@ module Bio
       a_and_q = {
         '/ab/cde/fghi' => [ 'ab', 'cde', 'fghi' ],
         '/a+b/a%2Bb/a%2Fb/a%26b/a%3Bb/a%2Cb/a%3Bb' =>
-        [ 'a b', 'a+b', 'a/b', 'a&b', 'a;b', 'a,b', 'a;b' ]
+        [ 'a b', 'a+b', 'a/b', 'a&b', 'a;b', 'a,b', 'a;b' ],
+        '/123,456/789%2C012,&345' =>
+        [ '123', :",", '456', '789,012', :",", :"&", '345' ]
       }
       count = 0
       a_and_q.each do |k,v|
diff --git a/test/unit/bio/sequence/test_dblink.rb b/test/unit/bio/sequence/test_dblink.rb
index f90b1d5..6a8074e 100644
--- a/test/unit/bio/sequence/test_dblink.rb
+++ b/test/unit/bio/sequence/test_dblink.rb
@@ -54,7 +54,7 @@ module Bio
       assert_equal('Z14088', xref.id)
       assert_equal([ 'CAA78466.1', '-', 'mRNA' ],
                    xref.secondary_ids)
-      end
+    end
   end #class
 
 end #module Bio
diff --git a/test/unit/bio/sequence/test_na.rb b/test/unit/bio/sequence/test_na.rb
index 318a74e..9fa20eb 100644
--- a/test/unit/bio/sequence/test_na.rb
+++ b/test/unit/bio/sequence/test_na.rb
@@ -65,6 +65,7 @@ module Bio
       fcomp = @obj.forward_complement
       assert_equal(str_fcomp, @obj.forward_complement)
       assert_equal(str, @obj)
+      assert_not_equal(fcomp.__id__, @obj.forward_complement.__id__)
       assert_equal(str_fcomp, @obj.forward_complement!)
       assert_equal(str_fcomp, @obj)
     end
@@ -72,9 +73,10 @@ module Bio
     def test_reverse_complement
       str       = 'atgcatgcatgcatgcaaaa'
       str_rcomp = 'tacgtacgtacgtacgtttt'.reverse
-      rcomp = @obj.forward_complement
+      rcomp = @obj.reverse_complement
       assert_equal(str_rcomp, @obj.reverse_complement)
       assert_equal(str, @obj)
+      assert_not_equal(rcomp.__id__, @obj.reverse_complement.__id__)
       assert_equal(str_rcomp, @obj.reverse_complement!)
       assert_equal(str_rcomp, @obj)
     end
diff --git a/test/unit/bio/test_alignment.rb b/test/unit/bio/test_alignment.rb
index b0d7f53..5977cd6 100644
--- a/test/unit/bio/test_alignment.rb
+++ b/test/unit/bio/test_alignment.rb
@@ -6,7 +6,6 @@
 #              2005 Naohisa Goto <ng at bioruby.org>
 # License::    The Ruby License
 #
-#  $Id:$
 #
 
 # loading helper routine for testing bioruby
@@ -178,7 +177,7 @@ module Bio
         'a' => [ 'a' ],
         'c' => [ 'c' ],
         'g' => [ 'g' ],
-        't' => [ 't' ],
+#        't' => [ 't' ],
         't' => [ 't', 'u' ],
         'm' => [ 'a', 'c' ],
         'r' => [ 'a', 'g' ],
diff --git a/test/unit/bio/test_command.rb b/test/unit/bio/test_command.rb
index e233819..eaa54fa 100644
--- a/test/unit/bio/test_command.rb
+++ b/test/unit/bio/test_command.rb
@@ -344,11 +344,12 @@ module Bio
     end
 
     def test_make_cgi_params_by_string
-      string = "type1=bp&type2=bp&downstream=&upstream=&format=fasta&options=similarity&options=gene&action=export&_format=Text&output=txt&submit=Continue%20%3E%3E"
-      # In this case, only URI escaping is performed.
+      ##Before BioRuby 1.4.3.0001, only URI escaping was performed.
+      #string = "type1=bp&type2=bp&downstream=&upstream=&format=fasta&options=similarity&options=gene&action=export&_format=Text&output=txt&submit=Continue%20%3E%3E"
       query = " type1=bp&type2=bp&downstream=&upstream=&format=fasta&options=similarity&options=gene&action=export&_format=Text&output=txt&submit=Continue >> "
-      result = Bio::Command.make_cgi_params(query)
-      assert_equal(string, result)
+      assert_raise(TypeError) {
+        Bio::Command.make_cgi_params(query)
+      }
     end
 
   end
diff --git a/test/unit/bio/test_db.rb b/test/unit/bio/test_db.rb
index 0d12b13..1f4c087 100644
--- a/test/unit/bio/test_db.rb
+++ b/test/unit/bio/test_db.rb
@@ -4,7 +4,6 @@
 # Copyright::  Copyright (C) 2005 Mitsuteru Nakao <n at bioruby.org>
 # License::    The Ruby License
 #
-#  $Id:$
 #
 
 # loading helper routine for testing bioruby
@@ -21,7 +20,10 @@ module Bio
     def setup
       
      @obj = Bio::DB.new
-      @obj.instance_eval { @orig = {"TAG" => "TAG value1\n    value2"} }
+      @obj.instance_eval {
+        @orig = {"TAG" => "TAG value1\n    value2"}
+        @tagsize = nil
+      }
     end
 
     def test_open
diff --git a/test/unit/bio/test_pathway.rb b/test/unit/bio/test_pathway.rb
index 199742f..b8b9f3c 100644
--- a/test/unit/bio/test_pathway.rb
+++ b/test/unit/bio/test_pathway.rb
@@ -43,18 +43,33 @@ module Bio
     end
 
     class TestRelation < Test::Unit::TestCase
+	def setup
+	    @r1 = Relation.new('a', 'b', 1)
+	    @r2 = Relation.new('b', 'a', 1)
+	    @r3 = Relation.new('b', 'a', 2)
+	    @r4 = Relation.new('a', 'b', 1)
+	end
+
 	def test_comparison_operator
-	    r1 = Relation.new('a', 'b', 1)
-	    r2 = Relation.new('b', 'a', 1)
-	    r3 = Relation.new('b', 'a', 2)
-	    r4 = Relation.new('a', 'b', 1)
-	    assert(r1 === r2, "r1 === r2 not true, === not symmetric wrt nodes")
-	    assert(!(r1 === r3), "r1 === r3 not false, === does not take edge into account")
-	    assert(r1 === r4, "r1 === r4 not true, === is not reflexive wrt nodes")
-	    assert_equal([r1, r3], [ r1, r2, r3, r4 ].uniq, "uniq did not have expected effect")
-	    assert(r1.eql?(r2), "r1 not eql r2")
-	    assert(!r3.eql?(r2), "r3 eql to r2")
+	    assert(@r1 === @r2, "@r1 === @r2 not true, === not symmetric wrt nodes")
+	    assert(!(@r1 === @r3), "@r1 === @r3 not false, === does not take edge into account")
+	    assert(@r1 === @r4, "@r1 === @r4 not true, === is not reflexive wrt nodes")
+	    assert(@r1.eql?(@r2), "@r1 not eql @r2")
+	    assert(!@r3.eql?(@r2), "@r3 eql to @r2")
 	end
+
+        def test_uniq
+            a =  [ @r1, @r2, @r3, @r4 ].uniq
+            # Array#uniq does not guarantee that the first value is always
+            # chosen, though the "bug" is fixed.
+            # (https://bugs.ruby-lang.org/issues/9340 )
+            # (https://github.com/bioruby/bioruby/issues/92 )
+            # #assert_equal([@r1, @r3], a, "uniq did not have expected effect")
+            assert_equal(2, a.size)
+	    assert(@r1 === a[0])
+	    assert(@r3 === a[1])
+	end
+
     end
 
     class TestSampleGraph < Test::Unit::TestCase
diff --git a/test/unit/bio/util/test_sirna.rb b/test/unit/bio/util/test_sirna.rb
index 67db56a..6a0287d 100644
--- a/test/unit/bio/util/test_sirna.rb
+++ b/test/unit/bio/util/test_sirna.rb
@@ -63,7 +63,7 @@ module Bio
       target = "G" * 9
       assert_equal(false, @obj.reynolds?(target))
       target = "aaaaAaaaaaaUaaAaaaaaAaa"
-      assert_equal(true, @obj.reynolds?(target))
+      assert_equal(8, @obj.reynolds?(target))
     end
 
     def test_uitei
@@ -111,23 +111,23 @@ module Bio
     end
 
     def test_target
-      assert_equal("gcggacguaaggaguauuccugu", @obj.target)
+      assert_equal("uucggugcggacguaaggaguau", @obj.target)
     end
 
     def test_sense
-      assert_equal("ggacguaaggaguauuccugu", @obj.sense)
+      assert_equal("cggugcggacguaaggaguau", @obj.sense)
     end
 
     def test_antisense
-      assert_equal("aggaauacuccuuacguccgc", @obj.antisense)
+      assert_equal("acuccuuacguccgcaccgaa", @obj.antisense)
     end
 
     def test_start
-      assert_equal(9, @obj.start)
+      assert_equal(3, @obj.start)
     end
 
     def test_stop
-      assert_equal(32, @obj.stop)
+      assert_equal(26, @obj.stop)
     end
 
     def test_rule
@@ -135,19 +135,19 @@ module Bio
     end
 
     def test_gc_percent
-      assert_equal(52.0, @obj.gc_percent)
+      assert_equal(57.0, @obj.gc_percent)
     end
 
     def test_report
 report =<<END
 ### siRNA
-Start: 9
-Stop:  32
+Start: 3
+Stop:  26
 Rule:  uitei
-GC %:  52
-Target:    GCGGACGUAAGGAGUAUUCCUGU
-Sense:       GGACGUAAGGAGUAUUCCUGU
-Antisense: CGCCUGCAUUCCUCAUAAGGA
+GC %:  57
+Target:    UUCGGUGCGGACGUAAGGAGUAU
+Sense:       CGGUGCGGACGUAAGGAGUAU
+Antisense: AAGCCACGCCUGCAUUCCUCA
 END
       assert_equal(report, @obj.report)
     end
@@ -172,7 +172,7 @@ END
 
     def test_top_strand
       @obj.design
-      assert_equal("caccggacguaaggaguauuccugugtgtgctgtccacaggaauacuccuuacgucc", @obj.top_strand)
+      assert_equal("caccgcggugcggacguaaggaguaugtgtgctgtccauacuccuuacguccgcaccg", @obj.top_strand)
     end
 
     def test_top_strand_class
@@ -186,7 +186,7 @@ END
 
     def test_bottom_strand
       @obj.design
-      assert_equal("aaaaggacguaaggaguauuccuguggacagcacacacaggaauacuccuuacgucc", @obj.bottom_strand)
+      assert_equal("aaaacggugcggacguaaggaguauggacagcacacauacuccuuacguccgcaccgc", @obj.bottom_strand)
     end
 
     def test_bottom_strand_class
@@ -207,11 +207,11 @@ END
     end
 
     def test_blocK_it
-      assert_equal("aaaaggacguaaggaguauuccuguggacagcacacacaggaauacuccuuacgucc", @obj.block_it)
+      assert_equal("aaaacggugcggacguaaggaguauggacagcacacauacuccuuacguccgcaccgc", @obj.block_it)
     end
 
     def test_blocK_it_BLOCK_iT
-      assert_equal("aaaaggacguaaggaguauuccuguggacagcacacacaggaauacuccuuacgucc", @obj.block_it)
+      assert_equal("aaaacggugcggacguaaggaguauggacagcacacauacuccuuacguccgcaccgc", @obj.block_it)
     end
 
     def test_blocK_it_BLOCK_IT
@@ -219,7 +219,7 @@ END
     end
 
     def test_blocK_it_piGene
-      assert_equal("aaaaggacguaaggaguauuccuguggacagcacacacaggaauacuccuuacgucc", @obj.block_it('piGENE'))
+      assert_equal("aaaacggugcggacguaaggaguauggacagcacacauacuccuuacguccgcaccgc", @obj.block_it('piGENE'))
     end
 
     def test_blocK_it_
@@ -229,10 +229,10 @@ END
     def test_report
       report =<<END
 ### shRNA
-Top strand shRNA (57 nt):
-  5'-CACCGGACGUAAGGAGUAUUCCUGUGTGTGCTGTCCACAGGAAUACUCCUUACGUCC-3'
-Bottom strand shRNA (57 nt):
-      3'-CCUGCAUUCCUCAUAAGGACACACACGACAGGUGUCCUUAUGAGGAAUGCAGGAAAA-5'
+Top strand shRNA (58 nt):
+  5'-CACCGCGGUGCGGACGUAAGGAGUAUGTGTGCTGTCCAUACUCCUUACGUCCGCACCG-3'
+Bottom strand shRNA (58 nt):
+      3'-CGCCACGCCUGCAUUCCUCAUACACACGACAGGUAUGAGGAAUGCAGGCGUGGCAAAA-5'
 END
       #@obj.design
       @obj.block_it

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-bio.git



More information about the Pkg-ruby-extras-commits mailing list