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.

For known problems, see KNOWN_ISSUES.rdoc.


Full support of Ruby 2.0.0, 2.1, and 2.2

Ruby 2.0.0, 2.1, and 2.2 are now recommended Ruby versions for running BioRuby codes.

Support of Ruby 1.8 will be stopped

This release is the final BioRuby version that can be run on Ruby 1.8.

License is updated to the new Ruby’s License

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. 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.

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 is NOT subject to the Semantic Versioning.

New features and improvements

New method Bio::FastaFormat#first_name

Bio::FastaFormat#first_name method is added to get the first word in the definition line. This method was proposed by Ben J. Woodcroft.

Accuracy of Bio::SiRNA

Accuracy of siRNA designing algorithms in Bio::SiRNA is improved, contributed by meso_cacase.

Speed up of Bio::ClustalW::Report

Running speed of Bio::ClustalW::Report is optimized, contributed by Andrew Grimm.

Many warning messages are squashed

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.

Bug fixes

Bugs due to remote server changes


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 did not work because of the API server URL is changed.



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.


Contributed by Brynjar Smari Bjarnason.

Bugs found in data format parsers

Other bugs

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.

Deprecated features

Bio::RefSeq, Bio::DDBJ

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.

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.

Removed features


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.


Bio::EBI::SOAP (lib/bio/io/ebisoap.rb) is removed because Bio::SOAPWSDL is removed.


Bio::KEGG::API is removed because KEGG API SOAP service was discontinued in December 31, 2012. See for the announcement of service discontinuation.


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 for details.


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 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 (lib/bio/io/higet.rb) is removed because the HiGet web server have been down since 2011, and we think that the server will not be restored again.


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 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, 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, 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.


The BioRuby default BioFetch server, 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:

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 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.


Bio::PDB should be updated to follow PDB format version 3.3.


NCBI announces that that they are makeing a new version of BLAST XML data format. BioRuby should support it.


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.