GenomicsRNA-seq基因组学

构建本地化Blast2GO数据库

2020-08-06  本文已影响0人  大号在这里

一、背景说明

Blast2GO官方提供的在线版本,第一速度非常慢,第二不利于我们提交后台进行大规模地对各种物种进行GO注释,因此公布自己实际操作过的搭建本地化Blast2GO流程,尽量让更多的师弟师妹们少走弯路。

二、主要功能:

1将序列比对到NCBI的Nr数据库,得到Nr注释

2对核酸或蛋白质序列进行InterPro注释

3在得带Nr注释之后,通过Blast2GO数据库,将Nr注释结果转换为可信的GO注释;

三、环境的准备

1. java环境

1. 查看是否安装了java环境,使用java -version查看是否安装了java。

java -version

如果出现类似如下提示,则说明已经安装过了。可以跳过本节。

openjdk version "1.8.0_192"
OpenJDK Runtime Environment (Zulu 8.33.0.1-linux64) (build 1.8.0_192-b01)
OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-linux64) (build 25.192-b01, mixed mode)

2. java的安装:

  1. 进入 Oracle 官方网站 下载合适的 JDK 版本,准备安装。
    注意:这里需要下载 Linux 版本。这里以jdk-8u151-linux-x64.tar.gz为例进行安装
  2. 创建目录并解压
    /usr/local目录下创建java目录,
    把下载的文件 jdk-8u151-linux-x64.tar.gz 放在/usr/local/java/目录并下解压。
tar -zxvf jdk-8u151-linux-x64.tar.gz**
  1. 设置环境变量
vi ~/.bashrc

在 ~/.bashrc文件中添加如下内容并保存:

#set java environment
JAVA_HOME=/usr/local/java/jdk1.8.0_151        
JRE_HOME=/usr/local/java/jdk1.8.0_151/jre     
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

注意:其中 JAVA_HOME, JRE_HOME 请根据自己的实际安装路径及 JDK 版本配置。

  1. 让修改生效:
source /etc/profile

或conda安装

conda install java

2. MYSQL环境

  1. 下载 MySQL 所需要的安装包 官网https://dev.mysql.com/downloads/mysql/
  2. Select Operating System: 选择 Red Hat ,CentOS 是基于红帽的,Select OS Version: 选择 linux 7
  3. 选择 RPM Bundle 点击 Download
  4. 上传至服务器指定目录中(/mnt/nas1/wanghw/software/mysql/mysql-5.7.30/),tar -zxvf解压并用rpm安装
rpm -ivh mysql-community-common-5.7.30-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-5.7.30-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-5.7.30-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-5.7.30-1.el6.x86_64.rpm --force --nodeps

如果想要进行卸载

rpm -ev mysql-community-server-5.7.30-1.el6.x86_64 mysql-community-common-5.7.30-1.el6.x86_64 mysql-community-libs-5.7.30-1.el6.x86_64 mysql-community-client-5.7.30-1.el6.x86_64 --nodeps
  1. mysql初始化
mysqld --initialize;
chown mysql:mysql /var/lib/mysql -R;
service mysqld start 
  1. 修改登录密码
    通过 cat /var/log/mysqld.log | grep password 命令查看数据库的密码:fidjjz333
mysql -uroot -pfidjjz333 
mysql> set global validate_password_length=4;
mysql> alter user 'root'@'localhost' identified by '123456';
  1. mysql 数据库存储路径更改
#停止mysql服务
service mysqld stop
#创建新的数据库存放目录
mkdir /data/mysql
#移动/复制之前存放数据库目录文件,到新的数据库存放目录位置
mv /usr/local/mysql/data/* /data/mysql
#修改mysql数据库目录权限以及配置文件
chown mysql:mysql -R /data/mysql/
vi /etc/my.cnf
datadir=/data/mysql #制定为新的数据存放目录
#启动数据库服务
service mysqld start

四、Blast2go的数据和软件准备

1.首先,下载4个数据数据库(目前有两个数据官网已经下架了,需要的找我私聊!!!)

go_monthly-assocdb-data.gz :共6.22G
gene_info.gz:共417M
gene2accession.gz:共1.18G
idmapping.tb.gz:共5.76G

wget -c http://archive.geneontology.org/latest-full/go_monthly-assocdb-data.gz
wget -c ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene_info.gz 
wget -c ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene2accession.gz 
wget -c ftp://ftp.pir.georgetown.edu/databases/idmapping/idmapping.tb.gz
# 解压数据
gzip -dv go_monthly-assocdb-data.gz
gzip -dv gene_info.gz
gzip -dv gene2accession.gz
gzip -dv idmapping.tb.gz
# gzip -d解压文件后会删除原来的压缩文件

gene_info.gz
来自于NCBI。对NR蛋白基因进行汇总,包含对每个基因的功能描述。
gene2accession.gz
来自NCBI。是记录geneID与accession关系的数据表。包括了来自international sequence collaboration、Swiss-Prot和 RefSeq的序列。该文件包含的RefSeq序列也被放在gene2refseq文件中。
idmapping.tb.gz
来自于UniProt(Universal Protein Resource)数据库,这个数据库整合了3个数据库来源:swiss-prot、TrEMBL和PIR-PSD。

2. 创建blast2go数据库

网上很多教程给的下载地址都失效了,这是废了九牛二虎之力找到的(需要的找我私聊!!!)
链接:https://pan.baidu.com/s/1X0ep8o11sKGaosxXappJ3Q
提取码:****

# 解压后即可使用里边的程序。
unzip local_b2g_db.zip
unzip b2g4pipe_v2.5.zip
# 把数据库准备的软件跟数据库放到一起,方便后续操作
mysql -u root -ptsTS001001 < b2gdb.sql
mysql -u root -ptsTS001001 -e "GRANT ALL ON b2gdb.* TO 'blast2go'@'localhost' IDENTIFIED BY 'blast4it';"
mysql -u root -ptsTS001001 -e "FLUSH PRIVILEGES;"
# import database
mysql -h localhost -u root -ptsTS001001 b2g < go_monthly-assocdb-data
mysql -u root -ptsTS001001 b2g -e "LOAD DATA LOCAL INFILE '/mnt/nas1/wanghw/database/blast2go/gene2accession' INTO TABLE gene2accession FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';"
mysql -u root -ptsTS001001 b2g -e "LOAD DATA LOCAL INFILE '/mnt/nas1/wanghw/database/blast2go/gene_info' INTO TABLE gene_info FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';"
java -cp .:mysql-connector-java-5.0.8-bin.jar: ImportIdMapping /mnt/nas1/wanghw/database/blast2go/idmapping.tb localhost b2g blast2go blast4it
3. 进入mysql中查看blast2go的基本信息:
# 使用blast2go账号进行数据库登陆。
$ mysql -ublast2go -pblast4it
# 进入b2g database
mysql> use b2g;
# 统计表gi2uniprot的数据行数
mysql> select count(*) from gi2uniprot;
#由于默认下blast2go用户的权限较高,现在将其改为只读权限:
$ mysql -uroot -p123456
mysql> grant select on b2g.* TO 'blast2go'@'%' identified by 'blast4it';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
$ mysql -uroot -p123456
mysql> use b2g;
# 查看导入的go_monthly-assocdb-data数据的目录
mysql> show tables;
# 首先,进入information_schema数据库
mysql> use information_schema;
# 查看指定数据库b2gdb的大小
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='b2gdb';
# 查看指定数据库的所有表单的大小
mysql>SELECT TABLE_NAME,TABLE_ROWS,concat(round(DATA_LENGTH/1024/1024),' MB') "DATA_LENGTH",CREATE_TIME,TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'b2gdb' ORDER BY TABLE_ROWS DESC;
mysql> quit

另一种查看数据库表单大小的方法

# 进入数据库所在位置
cd /data/mysql/b2g
# 查看大小,并按从大到小顺序排序
ls -alSh

五、Blast2go的使用

以上搭建好的blast2go就可以运行了,个人习惯将搭建的blast2go放在/mnt/nas1/wanghw/software/下方便以后直接运行

1. blast2go软件设置:
vi /mnt/nas1/wanghw/software/blast2go/b2gPipe.properties
#将b2gPipe.properties修改内容如下:
// GO and B2G-Mapping Database
Dbacces.dbhost=127.0.0.1:3306
Dbacces.dbname=b2g
Dbacces.dbuser=blast2go
Dbacces.dbpasswd=blast4it
2. GO注释

软件安装好,同时获得了blast得到的xml的结果,就可以进行GO注释了。
blast 的版本不能太高,因为blast2go的版本就很低(高版本的blast2go无法本地化),我这里blast版本 2.2.31+,

nohup blastp -db /mnt/nas1/wanghw/database/nr/nr -query /mnt/nas1/wanghw/software/blast2go/b2g4pipe/test.60.fa -out /mnt/nas1/wanghw/software/blast2go/b2g4pipe/test.60.2.31.xml -num_threads 2 -outfmt 5  &

其中使用java -cp :ext/: es.blast2go.prog.B2GAnnotPipe和java -jar blast2go.jar进行GO注释都是可以的,二者是等效的。例如下边两条命令起始等效:

java -jar blast2go.jar -in test.60.xml -out test.xml -v -a -prop b2gPipe.properties
java -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe  -in test.60.xml -out test.xml -v -a -prop b2gPipe.properties 

注释结果

      1 RcuChr04m0053   GO:0044260      uncharacterized protein loc110656900
      2 RcuChr04m0053   GO:0090304      uncharacterized protein loc110656900
      3 RcuChr04m0059   GO:0031224      probable l-type lectin-domain containing receptor kinase
      4 RcuChr04m0059   GO:0004713      probable l-type lectin-domain containing receptor kinase
      5 RcuChr04m0059   GO:0006468      probable l-type lectin-domain containing receptor kinase
      6 RcuChr04m0059   GO:0032550      probable l-type lectin-domain containing receptor kinase
      7 RcuChr04m0060   GO:0031224      probable l-type lectin-domain containing receptor kinase
      8 RcuChr04m0060   GO:0004713      probable l-type lectin-domain containing receptor kinase
      9 RcuChr04m0060   GO:0006468      probable l-type lectin-domain containing receptor kinase
     10 RcuChr04m0060   GO:0032550      probable l-type lectin-domain containing receptor kinase

参数含义:
-cp :ext/:java程序的参数,表示当前目录和ext下的所有jar文件构成java执行库。

es.blast2go.prog.B2GAnnotPipe:它是执行库中的一个静态main类。这个类存在blast2go.jar中。

-in:xml格式blast(ncbi-style)比对结果文件。即命令行版本提供的blast2go是从blast得到的结果为起点的。

-out:输出文件名(后缀会基于这个给定文件名进行添加)。默认情况下是输入文件名字的基础上+后缀。
-prop <property文件>:含有应用设置的文件。默认是./b2gPipe.properties

-v :显示程序执行的消息

-a/-annot:生成注释文件(.annot)

六、max_connections和max_user_connections的修改

原因:当提交多个任务运行时,mysql数据库会报超出最大连接数的错误,因此我们需要修改一下max_connections和max_user_connections。

 max_connections: 为设置最大的连接数,默认为151。
 max_user_connections:设置每用户最大的连接数。
mysql -uroot -p
Enter password:******* #输入你的密码
show global variables like "max%connections"; #查看默认设置
set GLOBAL max_connections=1000; 
set GLOBAL max_user_connections=0;
show global variables like "max%connections";
quit;

参考资料
https://www.cnblogs.com/yanglang/p/10782941.html
https://mp.weixin.qq.com/s/W_OwUVe9Ww4SxzayQgYpbw

上一篇下一篇

猜你喜欢

热点阅读