Overview

今天闲暇之余,看到了一篇关于BioPerl的博客 初品BioPerl(第三篇:从本地文件中获取fasta序列),发现BioPerl可以让很多事变得简单,fasta格式处理起来也事半功倍。 其实宋老师之前已经跟我提过BioPerl了,只不过我一直以任务为导向,觉得perl脚本就够处理,所以一直也没去了解。好东西自然马上就要用起来,我也马上装上了BioPerl,这里记录下来BioPerl的安装,以后有需要,就把BioPerl相关的东西持续写下去。

1. BioPerl的安装

直接查看BioPerl的文档 BioPerl Main Page,提供了从安装到快速入门等各种文档,这里我参考的是Installing BioPerl on Unix,实际上,无论你用的是Mac还是各种版本的Linux,都可以参考这个页面,因为这里提供了一种通用形式的安装方式:Installing using CPAN

1.1 perl的版本

使用

perl -version

查看你系统中的perl版本号,我的系统中perl版本信息为:

This is perl 5, version 16, subversion 3 (v5.16.3) built for darwin-thread-multi-2level

Young说使用perl 6没办法安装BioPerl,可能是因为perl 6版本太新了,还没有对应的BioPerl模块,所以这里我们安装前要确保使用的perl版本号是perl 5

1.2 CPAN是什么?

百度百科关于CPAN的解释清晰明了:

CPAN(Comprehensive Perl Archive Network)中译为“Perl综合典藏网”,“Perl综合档案网”或者“Perl程序库”。它包含了极多用Perl写成的软件和其文件。
CPAN亦是一支Perl程序的名字,其作用是让使用者容易从CPAN下载、安装、更新及管理其他在CPAN上的Perl程式。
CPAN的成功引来很多其他编程语言社群的模仿。CTAN和CRAN都参考了CPAN的命名方式。另外PEAR(PHP Extension and Application Repository)也是类似CPAN的PHP程式网站。

你也可以通过 CPAN官网 查看CPAN相关的各种信息,比如CPAN中的模块,CPAN的镜像等。

其实不止PHP,如果有使用R语言的经验,就会马上想起到R语言的程序库CRAN,当你使用R语言的install.packages函数去安装包时,实际上R语言就是去CRAN中找到这个包,然后下载下来并安装到你的本地环境中。

CPAN安装BioPerl只需要几句命令就可以了,perl会自动把BioPerl放在指定的位置并配置到路径,完全不需要手动参与。

1.3 升级CPAN

既然CPANperl的在线程序库,那么CPAN中的内容就是一直不停更新的,所以安装一个perl库之前,先升级一下CPAN总是好的。

假设你的电脑上已经安装配置好了perl,使用下面的命令更新CPAN

perl -MCPAN -e shell

执行了这条命令,命令行就会进入CPAN的执行环境,等待你输入新的指令,输入

install Bundle::CPAN

执行CPAN升级,注意这句命令的名字是install,如果你本地还没有CPAN,那么就会下载配置最新的CPAN到本地,如果已经有了CPAN,那么更新到最新。

安装或者更新完CPAN之后,使用

q

退出CPAN的执行环境。

1.4 安装/升级Module::Build,并设置为默认安装器

使用

cpan

进入CPAN的执行环境,并依次输入下面几条指令:

install Module::Build
o conf prefer_installer MB
o conf commit
q

上面几条执行依次完成了安装,配置,提交配置,退出CPAN的执行环境。

1.5 安装expat库 (Optional)

其实我装BioPerl的时候并没有装这个库,而是在写这篇blog的时候才装,如果你需要处理xml文件,可能你需要安装expat库,

  • 如果使用的是Ubuntu,可以直接使用下面的命令安装:

    sudo aptitude install libexpat-dev

  • 如果使用的是别的linux系统或者mac,使用下面的方式:

    1. 使用wget下载expat

       wget http://sourceforge.net/projects/expat/files/expat/2.0.1/expat-2.0.1.tar.gz
      

      或者直接在浏览器中输入

       http://sourceforge.net/projects/expat/files/expat/2.0.1/expat-2.0.1.tar.gz/download
      

      下载。

    2. 解压expat-2.0.1.tar.gz并进入

       tar  -zxvf expat-2.0.1.tar.gz
       cd expat-2.0.1
      
    3. 配置expat

       ./configure --prefix=/usr/bin
      
    4. 如果你没有将expat库安装在/usr/bin这样的系统目录,而是安装在了自己的自定义目录,比如/non-standard这个目录,你需要告诉CPAN,进入CPAN的执行环境:

       cpan
      

      输入下面的指令:

       o conf makepl_arg "EXPATLIBPATH=/non-standard/lib EXPATINCPATH=/non-standard/include"
       o conf commit
       q
      

    不过不推荐这种方式。

1.6 使用CPAN安装BioPerl

使用

perl -MCPAN -e shell

或者直接使用

cpan

进入CPAN的执行环境,输入:

d /bioperl/

会显示出来下面的信息:

cpan[1]> d /bioperl/
Reading '/Users/wangjiawei/.cpan/Metadata'
Database was generated on Fri, 25 Dec 2015 03:17:02 GMT
Distribution    BOZO/Fry-Lib-BioPerl-0.15.tar.gz
Distribution    CDRAUG/Dist-Zilla-PluginBundle-BioPerl-0.20.tar.gz
Distribution    CJFIELDS/BioPerl-1.6.901.tar.gz
Distribution    CJFIELDS/BioPerl-1.6.923.tar.gz
Distribution    CJFIELDS/BioPerl-1.6.924.tar.gz
Distribution    CJFIELDS/BioPerl-DB-1.006900.tar.gz
Distribution    CJFIELDS/BioPerl-Network-1.006902.tar.gz
Distribution    CJFIELDS/BioPerl-Run-1.006900.tar.gz
Distribution    CJFIELDS/Bundle-BioPerl-2.1.9.tar.gz
Distribution    CJFIELDS/Dist-Zilla-PluginBundle-BioPerl-0.23.tar.gz
Distribution    RBUELS/Dist-Zilla-PluginBundle-Bioperl-0.01.tar.gz
11 items found

每个人的电脑显示的信息可能稍有不同,依然是在CPAN的执行环境中,安装CJFIELDS/BioPerl-1.6.924.tar.gz

force install CJFIELDS/BioPerl-1.6.924.tar.gz

注意:这里必须添加force,因为在安装了BioPerl之后,会默认执行大量的test,测试BioPerl的每一个函数,而这些函数依赖很多其他库,如果这些依赖库没有安装在你的电脑里,那么这个测试就会被skip,最后的测试报告就是有大量测试不通过,默认就不会安装BioPerl。但实际上,我们不可能把所有的依赖库都安装上,不安装这些库,依然不影响我们使用BioPerl的常用功能。并且,如果我们用到了一个BioPerl函数依赖某个没安装的库,我们再安装就可以了。使用force就可以忽视这些不通过的测试,依然将BioPerl安装到我们的电脑上。

1.7 运行一个例子

我们采用一个例子(来自 初品BioPerl(第二篇:构造一条fasta序列 )来检查下BioPerl是否已安装:

#!/usr/bin/perl -w

#加载Bio::Seq模块。
use Bio::Seq;  

#调用Bio::Seq模块的new方法,可以建立一个序列对象,命名为$seq_obj。
$seq_obj = Bio::Seq->new; 

#给这个新建的$seq_obj对象赋予三个属性的值:dispaly_name(序列的名称),desc(序列的描述)以及seq(序列的内容) 
$seq_obj->display_name("gi|147605|gb|J01673.1|ECORHO");
$seq_obj->desc("E.coli rho gene coding for transcription termination factor");
$seq_obj->seq("AACCCTAGCACTGCGCCGAAATATGGCATCCGTGGTATCCCGACTCTGCTGCTGTTCAAAAACGGTGAAG");

#创建了三个普通的标量变量来存放三个属性值
my ($fasta_name,$fasta_desc,$fasta_seq); 

#调用对象的display_name方法来得到名称
$fasta_name = $seq_obj->display_name; 
#调用对象的desc方法来得到描述
$fasta_desc = $seq_obj->desc; 
#调用对象的seq方法来得到序列        
$fasta_seq = $seq_obj->seq;     

#现在可以打印三个属性值了 
print "NAME:\t$fasta_name\nDESCRIBE:\t$fasta_desc\nSEQUENCE:\t$fasta_seq\n";

执行这个perl脚本,打印出来下面的结果:

NAME:   gi|147605|gb|J01673.1|ECORHO
DESCRIBE:   E.coli rho gene coding for transcription termination factor
SEQUENCE:   AACCCTAGCACTGCGCCGAAATATGGCATCCGTGGTATCCCGACTCTGCTGCTGTTCAAAAACGGTGAAG

可以看到,已经可以正常使用BioPerl了。