Bioperl的简单快速安装

Bioperl 由于涉及到的包太多,需要超过12000的单独的检测,安装起来比较麻烦,而且很多检测都通不过,对于新手过于繁杂,现在bioperl官网介绍了一种简单快速安装的方法————用第三方工具进行安装,经亲自测试,效果非常好,现简要介绍而下。
1 安装perlbrew(https://perlbrew.pl/)
在终端输入

curl -L https://install.perlbrew.pl | bash

如果系统没有curl命令
对于linux系统

wget -O - https://install.perlbrew.pl | bash

FreeBSD系统

fetch -o- https://install.perlbrew.pl | sh

也可以用cpan安装,在终端输入(注意不需要先打开cpan)

1
2
sudo cpan App::perlbrew
perlbrew init

如果是用cpan安装,perlbrew程序安装在/usr/bin/perlbrew 或者 /usr/local/bin/perlbrew,默认的perlbrew的根目录是~/perl5/perlbrew 。

2 安装cpanm

perlbrew install-cpanm

3 安装Bio::perl

cpanm Bio::Perl

如果找不到cpanm,就输入cpanm的绝对路径

/root/perl5/perlbrew/bin/cpanm Bio::Perl

如果其中报错缺少哪个模块或者哪个模块版本太老,就先安装报错的模块,我的显示是 Test::More 模块版本太老,我就用cpan “install Test::More”就好了。如果正确安装会显示

–> Working on Bio::Perl
Fetching http://www.cpan.org/authors/id/C/CJ/CJFIELDS/BioPerl-1.007001.tar.gz … OK
Configuring BioPerl-1.007001 … OK
Building and testing BioPerl-1.007001 … OK
Successfully installed BioPerl-1.007001
1 distribution installed

一般在第一步“Working on Bio::Perl”会等一段时间,因为是要下载安装包,只要没有报错,等着就可以了。

Xming + PuTTY 在Windows终端运行图形界面的程序

有些程序需要运行图形界面,特别是用java写的程序,例如R,试着用Xming + PuTTY可以实现。
1、下载xming
这个百度一下吧,我忘了在哪里下了,好像网上介绍的网址有些不对,多试一下就可以。
2、登录xming
第一次登录用XLaunch,一路默认就可以,再点xming运行xming服务。
3、修改putty
Connection\SSH\X11:Enable X11 Forwarding前加对勾,X display Location设为127.0.0.1:0,这里的 0 就是配置 Xming X server 时指定的 Display Number,127.0.0.1是localhost地址,最好写这个IP地址,而不是像网上介绍的写“localhost”。
4、修改SSH配置文件
切换到根用户,vim /etc/ssh/sshd_config
AllowTcpForwarding yes
X11Forwarding yes
如果有“X11Forwarding no”就把它注释掉。
5、安装x11
yum -y install xorg-x11-xauth
6、重启服务器,登录putty后,在终端运行”xterm”就可以了。

TGICL安装和使用

TGI Clustering tools(简称TGICL),是对大量EST或者转录本数据进行快速聚类的软件,也就是将序列进行组装拼接。原理是先用NCBI的megablast先粗略进行聚类,然后用CAP3进行组装。
1、下载
TGICL在sourceforge网站可以下载到(TGICL-2.1.tar.gz),我这里是下载的是最新的2.1版。
2、安装
$tar zxvf TGICL-2.1.tar.gz
$cd TGICL-2.1

$perl Makefile.PL
$make
$make test
$make install
完成

或者
perl Build.PL
./Build
./Build test
./Build install

tgicl就安在用户目录上了,可将刚安装好的perl包和程序分别拷贝到/usr/local/lib64/perl5/ 和/usr/local/bin/perl5/中。
用的时候调用此程序就可以了,如
/usr/local/bin/perl5/tgicl -F /home/用户/all.contigs.fasta

3、安装存在的问题及解决方法
(1)Can’t locate TGI/Mailer.pm in @INC (@INC contains:
那是找不到Mailer.pm,将TGICL-2.1/lib里的文件拷贝到/usr/local/lib64/perl5/中去就可以了。
(2)Can’t locate File/HomeDir.pm in @INC (@INC contains:
那是缺少perl的File/HomeDir.pm包,进入cpan,install File::HomeDir.pm
(3)Package main, File ./tgicl, Line 27 == Failed to find tgicl.cfg config file in
那是因为tgicl.cfg配置文件没有找到,将TGICL-2.1/conf/tgicl.cfg拷贝到tgicl所在的目录,如/usr/local/bin/perl5/。
(4)Use of :locked is deprecated at ……/TGI/DBDrv.pm line 36.
打开此文件,在our $VERSION = ‘0.01’;这句的下面加上一行,
no warnings ‘deprecated’;
###直接忽略掉deprecated警告
(5)运行时产生错误err_tgicl_all_contigs.fa.log文件显示不能运行formatdb程序,因为tgicl是32 bit系统的程序,在64位系统不能运行,要安装32位运行库glibc.i686和libstdc++.i686。直接yum install glibc.i686和yum install libstdc++.i686
(6)error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
安装zlib.i686
sudo yum install zlib.i686

CentOS7 安装php5.6+nginx1.7.5

由于版本的变化最新的php和nginx安装与配置和前面版本的有稍许差异,首先卸载旧版本,下载最新的软件的软体安装包,安装方法可以参照centos 7 min 编译安装php5.6+nginx1.7.5 笔记这里主要补充一点,就是怎样在nginx中运行php的问题。如果是想单独建一个www的用户的话,上面的安装的基础上需要做如下修改。
1、创建www用户
groupadd www
useradd -g www www -s /bin/false
2、修改nginx.conf配置文件
vi /usr/local/nginx/conf/nginx.conf
user www www; #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php/etc/php-fpm.conf中的user,group配置相同,否则php运行出错,具体方法是打开php-fpm.conf文件,如果在上面路径中找不到这个文件,就在安装包里面找到复制到这里,找到有user和group的行,去掉前面的;号,将nobody改为www。
3、重启nginx和php-fpm
nginx -s reload
/usr/local/php/sbin/php-fpm
4、测试
在www用户目录下创建test.php文件,输入;在浏览器中找开就可以看到PHP配置情况。

centOS7 安装mysql5.6

因为mysql被Oracle收购后会逐渐走向收费,为避免以后的版权纠纷,centos7已经不支持mysql,而是内部集成mariadb代替,而安装mysql的话会和mariadb产生文件冲突,所以安装mysql前要先卸载mariadb。
1、卸载mariadb
rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64
###会提示错误:依赖检测失败
###加上–nodeps参数强制卸载
rpm -e –nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
如果找不到就用yum -y remove mariadb-libs.x86_64
2、下载mysql5.6
centos7等同与Red Hat7,下载此版本下的MySQL-client-5.6.21-1.el7.x86_64 .rpm MySQL-server-5.6.21-1.el7.x86_64.rpm就可以了,如果点击Download会提示你要先登录Oracle帐户,如果没有帐户或者不想登录,在其它地方下载相同的包也可以,如果不想在其它地方找又没有Oracle帐户,顺便注册一个就可以了。
如果嫌麻烦,也可一个FTP站点下载,里面包含了几乎所有的mysql版本。
3、安装mysql
进入到安装包所在目录
rpm -ivh MySQL-client-5.6.21-1.el7.x86_64.rpm
rpm -ivh MySQL-server-5.6.21-1.el7.x86_64.rpm
也可从源代码安装,不过先得安装cmake,软件包为mysql-5.6.24.tar.gz
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc
make
make install
4、生成mysql系统数据库
如果你马上登录mysql会提示找不到/var/lib/mysql/下的sock文件,因为还没有生成系统数据库。
mysql_install_db –user=mysql –basedir=/usr/share/mysql
###生成mysql系统数据库
5、登录mysql
mysql_install_db –random-passwords
###生成随机密码
随机密码保存在$HOME/.mysql_secret文件中,打开这个文件,找到密码。
mysql -u=root -p
###登录mysql,输入随机密码
6、修改root密码
mysql> SET PASSWORD FOR root@localhost=PASSWORD(‘yourpassword’);
###这时不要想着运行其它语句,初次登录时只能改密码
退出mysql
7、添加用户和数据库
用新密码重新登录数据库,创建用户和数据库

基因注释

很多人觉得基因注释很高深,特别对于那些不太懂编程的来说,感到无从下手,去年我也折腾了差不多半年,最后发现也就那么回事。一开始我是找各种基因注释的工具,例如研究geneontology自带的perl程序,里面涉及了众多模板,而且是模块里面又有模块,运行时不是少了这个模块就是那个模块有问题,最后折腾了两三个月也没有得到理想结果。后来用了blast2go这个程序用起来是没有问题,可实在是太慢,几个小时下去,泡都不冒一个。最后默默在躺在床上反思,我的目的是什么,注释的原理是什么。按照这个思路,慢慢的去找这些问题的答案,最后终于开窍了,想明白了真的好简单,现将思路简单归纳如下:
1、基因注释方法
1)根据已注释的信息,利用序列相似性原则,去注释未知序列。
2)查找文献资料注释基因功能。
基因批量注释的话都是采用第一种。
2、所需资料
1)将需要注释的序列翻译成氨基酸序列;
2)下载现有的已注释的蛋白序列(uniprot_sprot.fasta.gz,文件大小为78MB);
3)下载联系蛋白序号和注释号(GO的accession)的文件(idmapping.td.gz,文件大小为2.17G);
4)下载最新的GO数据库文件assocdb-data.gz
3、注释方法
1)利用formatdb格式化已注释的蛋白序列为blast库;
2)将需要注释的序列与blast库做blast;
3)找到与需注释序列相似度高的蛋白序列号;
4)找到这些蛋白序列号对应的注释号(GO号);
5)用GO号在GO数据库文件中的term表中找到注释信息或者在geneontology官网用GO号就可以查到详细的注释信息;

如果用NCBI数据库,方法也差不多,先下载已注释的蛋白序列,格式化数据成blast库,将需注释的序列与这个blast库比对,找到相似度高的已注释的蛋白序列号,用此序列号用NCBI中gene_info.gz和gene2access找到蛋白序列的gene号,然后将此号用gene2go数据找到go号,最后用go号找到其注释信息就行了。

如果按照以上方法操作的话,其实基因注释非常简单,几乎只要做个blast,然后将信息对应过来就可以了,远没有那么复杂。

Perl输出函数传递的二维数组

最近用DBI模块写个了mysql接入函数,但得到的return一直不能输出结果,后来经过思考,原来是二维数组传递的问题,终于解决了,特此为记。

下面这个是mysql接入函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub mysql_connect(){
        use DBI;
	my ($sql,$db)=@_;
	my $usr="selectonly";
	my $passwd="yuyin_110";
	my $dbh=DBI->connect("DBI:mysql:$db",$usr,$passwd);
 
	if(!$dbh){
		print "connect lost\n";
	}else{
		my $sth=$dbh->prepare($sql)or die "Can’t prepare $sql: $dbh->errstr\n";
		$sth->execute()or die "Can’t execute the query: $sth->errstr";
		my $data=$sth->fetchall_arrayref();
		$sth->finish;
		return $data;
	}
}

现在的问题是输出$data的内容,而$data返回的是一个二维数组的引用地址,可以用以下方法分层输出这个数组:

1
2
3
4
5
6
7
8
9
10
11
	my $sql="select * from test limit 1000";
	my $b=mysql_connect($sql,"test");
	my @r=@$b;    #####因为$b获得的只是一个引用地址,可以用@变成数组,这个数组这储存了一系列一维数组地址
	foreach(@r){
		my @each=@$_;            ######道理与获得二维地址一样
		foreach(@each){
			print  $_."\t";
		}
		print  "\n";
 
	}

Bioperl的简单安装

按照Bioperl上介绍的方法在linux下安装Bioperl老是安不上,或者是安装上了,但不能用,上面介绍的几种方法都试了,全不行,后面自己想了个办法,就是利用cpan只对要用到的模块进行单独安装,简单适应,如果你和我碰到了同样的问题不妨试试。
0、用root用户登录,不能由于权限问题,安装不上去。
1、确定cpan能用。
>perl -MCPAN -e shell
cpan>install Bundle::CPAN
cpan>q
2、升级cpan,保证安装的模块是最新的。
>cpan
cpan>install Module::Build
cpan>o conf prefer_installer MB
cpan>o conf commit
cpan>q
3、安装Bioperl最重要的模块SeqIO(该模块可以实现文件格式转换,计算序列长度,blast信息提取等),中间会有些选项要求选择,一路回车采用默认的就行了。
cpan>install Bio::SeqIO
4、安装SeqFeature模块(序列特征信息的获取或解析)。
cpan>install Bio::SeqFeature
5、安装GenBank模块
cpan>install Bio::GenBank
6、安装AlignIO和AlignI模块(数据格式格式转换)。
cpan>install Bio::AlignIO
cpan>install Bio::AlignI
7、安装DNAstatistics模块(序列统计分析,进化距离计算)。
cpan>install Bio::DNAstatistics

上面是一引起常用的模块,至于其它的一些模块如果要用到就按这种方法安装就行了。
利用cpan安装的模块默认路径是当前用户的perl5/lib/perl5目录下面,如/root/perl5/lib/perl5/,如果运行perl -e “use Bio::SeqIO”还是找不到该模块的话,可以将 /当前用户/perl5/lib/perl5/下的文件拷贝到@INC目录中,如/usr/local/lib64/perl5/中,最好也将/当前用户/perl5/bin/中的文件拷贝到/usr/local/bin/perl5中,以后可在那里调用。

PHP中的$_SERVER

$_SERVER[‘PHP_SELF’] 当前正在执行脚本的文件名,与 document root相关。
$_SERVER[‘argv’] 传递给该脚本的参数。
$_SERVER[‘argc’] 包含传递给程序的命令行参数的个数(如果运行在命令行模式)。
$_SERVER[‘GATEWAY_INTERFACE’] 服务器使用的 CGI 规范的版本。例如,“CGI/1.1”。
$_SERVER[‘SERVER_NAME’] 当前运行脚本所在服务器主机的名称。
$_SERVER[‘SERVER_SOFTWARE’] 服务器标识的字串,在响应请求时的头部中给出。
$_SERVER[‘SERVER_PROTOCOL’] 请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。
$_SERVER[‘REQUEST_METHOD’] 访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER[‘QUERY_STRING’] 查询(query)的字符串。
$_SERVER[‘DOCUMENT_ROOT’] 当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER[‘HTTP_ACCEPT’] 当前请求的 Accept: 头部的内容。
$_SERVER[‘HTTP_ACCEPT_CHARSET’] 当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。
$_SERVER[‘HTTP_ACCEPT_ENCODING’] 当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。
$_SERVER[‘HTTP_ACCEPT_LANGUAGE’] 当前请求的 Accept-Language: 头部的内容。例如:“en”。
$_SERVER[‘HTTP_CONNECTION’] 当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
$_SERVER[‘HTTP_HOST’] 当前请求的 Host: 头部的内容。
$_SERVER[‘HTTP_REFERER’] 链接到当前页面的前一页面的 URL 地址。
$_SERVER[‘HTTP_USER_AGENT’] 当前请求的 User_Agent: 头部的内容。
$_SERVER[‘HTTPS’] 如果通过https访问,则被设为一个非空的值(on),否则返回off
$_SERVER[‘REMOTE_ADDR’] 正在浏览当前页面用户的 IP 地址。
$_SERVER[‘REMOTE_HOST’] 正在浏览当前页面用户的主机名。
$_SERVER[‘REMOTE_PORT’] 用户连接到服务器时所使用的端口。
$_SERVER[‘SCRIPT_FILENAME’] 当前执行脚本的绝对路径名。
$_SERVER[‘SERVER_ADMIN’] 管理员信息
$_SERVER[‘SERVER_PORT’] 服务器所使用的端口
$_SERVER[‘SERVER_SIGNATURE’] 包含服务器版本和虚拟主机名的字符串。
$_SERVER[‘PATH_TRANSLATED’] 当前脚本所在文件系统(不是文档根目录)的基本路径。
$_SERVER[‘SCRIPT_NAME’] 包含当前脚本的路径。这在页面需要指向自己时非常有用。
$_SERVER[‘REQUEST_URI’] 访问此页面所需的 URI。例如,“/index.html”。
$_SERVER[‘PHP_AUTH_USER’] 当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。
$_SERVER[‘PHP_AUTH_PW’] 当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。
$_SERVER[‘AUTH_TYPE’] 当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型。

最新blast本地化

原来做过本地blast,但那是三年前的事了,这次来新单位后要重新自己构建blast,才发现NCBI中blast已经有了很多变化,默认连接的下载页面变成了blast+,blast+中主要程序描述如下:

Program Function
blastdbcheck 检查数据库完整性
blastcmd 从blast数据库中检索序列或其它信息
blast_aliastool 创建数据库别名
blastn 核酸序列与核酸数据库比较
blastp 蛋白质序列与蛋白质数据库比较
blastx 核酸序列与蛋白持数据库比较
blast_formatter 使用指定的ID格式化网络blast结果
convert2blastmask 转换小写的masking成makeblastdb可读格式
dustmasker 过滤掉低重复序列
lagacy_blast.pl 转换一个legacy blast search程序为blast+配对并执行
makeblastdb 格式化一个FASTA文件为一个blast数据库
makembindex 为一个存在的核酸数据库建立一个megablast索引
psiblast 查找蛋白质家族,计算提供的蛋白质的遗传距离或者建立位置特异性矩阵
rpsblast 从一个蛋白质保守区域数据库中检索蛋白序列的功能区域
rpsblast 将核酸序列以六种阅读框的形式转换成蛋白序列后从蛋白保守区域数据库中检索蛋白功能区域
segmasker 过滤掉低重复序列并转换成蛋白序列
tblastn 在核酸数据库中检索蛋白序列
tblastx

核酸与核酸数据库在蛋白质水平比较

update_blastdb.pl 在NCBI中下载blast数据库

这个blast+程序虽然功能强大了,但一下子还用不习惯,而且平时用得最多的比较两个序列的程序也没有,于是想找原来的blast,阅读了大量的说明,花了我半天的时间终于找到了,地址为:ftp://ftp.ncbi.nlm.nih.gov/blast/executables/release/LATEST ,下载与系统匹配的就可以了,一般如果是windows XP 系统就下载win32的,windows 7或windows 8 64位的就下载win64,而我的系统为ubuntu 64位系统就下载了blast-2.2.26-x64-linux.tar.gz,解压后在解压文件的/bin/文件夹就可以看到熟悉的blastall,formatdb,bl2seq等程序了,具体功能描述如下(原始说明):

Program Function
bl2seq Directly comparing two FASTA sequences
blastall legacy blast containing the subfunction of blastn, blastp, blastx, tblastn, and tblastx
blastclust Clusters input FASTA sequences into related groups
blastpgp Standalone PSI-BLAST for search of distantly related protein sequences and generate position-specific matrices
copymat Copies blastpgp output for input to makemat
fastacmd Retrieves specific sequence or dumps the sequences from a formatted blast database
formatdb Convert FASTA formatted seqeucne file into BLAST database
formatrpsdb Format scoremat files into an RPSBLAST database
impala protein profile search program, mostly replaced by rpsblast
makemat Convert the copymat files into scoremat format, no loger needed by new blastpgp output
megablast Faster batch blastn program that uses greedy-algorithm. Works in contiguous or more sensitive discontiguous mode
rpsblast reverse PSI-BLAST program for searching against conserved domain database
seedtop Pattern search program

关于程序调用方法网上有很多资料,就不多在这里重复,这里只举个简单的例子,如调用bl2seq,“./bl2seq -i seq1.fa -j seq2.fa”。