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
既然CPAN
是perl
的在线程序库,那么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,使用下面的方式:
使用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
下载。
解压
expat-2.0.1.tar.gz
并进入tar -zxvf expat-2.0.1.tar.gz cd expat-2.0.1
配置
expat
库./configure --prefix=/usr/bin
如果你没有将
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
了。