加载中…
正文 字体大小:

每日一生信--blast2go本地化(终极版)

(2013-11-05 09:16:46)
标签:

blast2go本地化

分类: 注释annnoation
    充斥着各种绝望,无知若我,菜鸟若我,经过一个星期的折腾,总算把blast2go本地化了,前面也说到,本地化的目的是为了解决我>8000bp不能上传的问题,同时也能提速(我服务器还算可以,所以这个问题不算问题)。
    本人的系统是Ubuntu12.04LST,确切点来说是bio-linux(搞生物分析的神器,具体安装步骤见我之前博文http://blog.sina.com.cn/s/blog_670445240101i82m.html),同时我也是有root权限的。由于官网上的内容过时,同时对于一个菜鸟来说有的地方不好理解,而有的帖子针对的只是自己电脑的情况,所以结合自己痛苦经历以及参照各种大神的帖子,做此博文。
   
1,安装java
    Java运行环境:一定要Oracle  JDK (6、7都行),不要用OpenJDK,否则无法运行b2g4pipe!
    java -version   你可以看到自己java的版本
    update-alternatives  --display java  检查java安装情况
    由于版权等问题,我的系统就是默认的自带的OpenJDK,所以,我需要下载一个Oracle JDK。我选择的是jdk-7u45-linux-x64.tar.gz(从http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html下载最新jdk源码)
    1.1 解压到/usr/java目录
     sudo tar -zxvf jdk-7u45-linux-x64.tar.gz -C /usr/java   
           注:   注意版本不同的话就修改;
                  同时我在usr下新建了一个文件夹cd /usr ,然后sudo mkdir java)
                  如果提示找不到该文件,可以cd到你放jdk的文件夹,或在jdk前面加上他的路径
    1.2建立软连接
       cd /usr/java
       sudo ln -s jdk1.7.0_45 latest
       sudo ln -s /usr/java/latest default 
       然后通过ls -lh /usr/java/  结果如下:
               总用量 4
             lrwxrwxrwx 1 root root   16 Nov  4 22:22 default -> /usr/java/latest
             drwxr-xr-x 8 uucp  143 4096 Oct  8 21:03 jdk1.7.0_45
             lrwxrwxrwx 1 root root   11 Nov  4 22:00 latest -> jdk1.7.0_45
                   注:-s是软连接的标志,
                       为什么加软连接,我得到现在也没搞明白
    1.3 修改配置环境变量
          在/etc/profile或者/etc/bashrc中加入下列几行:
           export JAVA_HOME=/usr/java/latest
           export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
           export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
               注:我的/etc/bashr木有,所以我sudo vi /etc/profile
            使其生效:  source /etc/profile
                   注:为什么这个时候我出现的$符号,不明白
     1.4 配置系统默认java 
           sudo update-alternatives --install /usr/bin/java java /usr/java/latest/jre/bin/java
           sudo update-alternatives --config java
           选择你安装的版本即可。
           同理可以设置其它java命令如javac, javaw ,只需要换掉java就可以了。
          1.5测试
             java -version   

2 修改mysql的datadir
   mysql默认的datadir=var/lib/mysql,mysql大量的数据(>50G)会产生在var/lib/mysql,mysql这个文件夹里面,基于此,我想把他放在一个稍微大点的盘中去 
   具体内容见我之前博文 http://blog.sina.com.cn/s/blog_670445240101iv3w.html


3,下载数据
local_b2g_db.zip  http://blast2go.com/public-data/local_b2g_db.zip
godatabase:       http://archive.geneontology.org/latest-full/ 
gene_info.gz:      ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene_info.gz
gene2accession.gz: ftp://ftp.ncbi.nlm.nih.gov/gene/DATA/gene2accession.gz
idmapping.tb.gz: ftp://ftp.pir.georgetown.edu/databases/idmapping/idmapping.tb.gz
     注:godatabase目录下对应的go_XXXX-assocdb-data.gz,但是官网上给的lateset数据库201310那个是有问题的,你看上面标注的是4.1G,可下下来的只有2G,不可用,我下载的是201307(下载地址:http://archive.geneontology.org/full/2013-07-01/)
      你可以通过  wget  +网址    来下载
       下载后解压缩,我所有解压缩的文件都放在了/sam下面

4 执行b2gdb.sql用以创建b2gdb和一些Table:
mysql -h localhost -uroot -proot < /sam/local_b2g_db/b2gdb.sql(b2gdb.sql在哪,前面的路径指哪)
此时可以通过下面命令查看已经创建了的数据库:
mysql -uroot -proot 并回车
mysql> show databases;(输入的时候是;的,请注意)
可以看到b2gdb已经被创建。注意-p后面跟的是密码,密码不对导致的是error1045

5 创建数据库用户"blast2go":
mysql -h localhost -uroot -proot -e "GRANT ALL ON b2gdb.* TO 'blast2go'@'localhost' IDENTIFIED BY 'blast4it';"
mysql -h localhost -uroot -proot -e "FLUSH PRIVILEGES;"

6 导入上述已下载并解压了的数据库:
为了保证后面步骤的简约,建议先进入数据库存放的文件夹,比如我的解压后的数据位于"/sam",
 cd /sam
 mysql -s -h localhost -uroot -proot b2gdb < go_201307-assocdb-data
(耗时约7小时,产生55G文件)

mmysql -h localhost -uroot -proot b2gdb -e "LOAD DATA LOCAL INFILE '/sam/gene2accession' INTO TABLE gene2accession FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';"

 出现error1148
  sudo vi /etc/mysql/my.cnf
  修改如下成如下  
  [mysql]
  #no-auto-rehash # faster start of mysql but no tab completition
   local-infile
  终端输入: mysql --local-infile -uroot -proot
  
再重新输入上面命令(耗时约1小时,文件保持55G)
mysql -h localhost -uroot -proot b2gdb b2gdb -e "LOAD DATA LOCAL INFILE '/sam/gene_info' INTO TABLE gene_info FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';"
(耗时约10分钟,文件保持55G)
java -cp .:mysql-connector-java-5.0.8-bin.jar: ImportIdMapping /sam/idmapping.tb localhost b2gdb blast2go blast4it

cd /sam/b2g4pipe
sam@sam-Precision-WorkStation-T7500[b2g4pipe] java -cp blast2go.jar:ext/mysql-connector-java-3.0.11-stable-bin.jar es.blast2go.prog.util.ImportPIR /sam/idmapping.tb localhost b2gdb root sam TRUE

Starting to import /sam/idmapping.tb to b2gdb@localhost with user root
Open database connection to database b2gdb on localhost as root with password starts with sam
Open database connection to database b2gdb on localhost as root with password starts with sam
Imported 40344363 gi-uniprot mappings to the DB.
Imported 40344363 gi-uniprot mappings to the DB.
Import of gi-uniprot mapping finished
如果是出现:
Database or network connection (timeout) error for: localhost
Database or network connection (timeout) error for: localhost
Import gi-uniprot mapping: Could not connect to DB
Could not connect to DB
Import of gi-uniprot mapping finished
如果上面的步骤没有成功,很有可能是你没按照本教程来,请你删除原来安装的b2gdb,重新来过。删除方法:
mysql> DROP DATABASE b2gdb;

mysql -uroot -proot
mysql> use b2gdb;
Database changed
mysql> show tables;
+-------------------------------+
| Tables_in_b2gdb               |
+-------------------------------+
| assoc_rel                     |
| association                   |
| association_isoform           |
| association_property          |
| association_qualifier         |
| association_species_qualifier |
| db                            |
| dbxref                        |
| evidence                      |
| evidence_dbxref               |
| gene2accession                |
| gene_info                     |
| gene_product                  |
| gene_product_ancestor         |
| gene_product_count            |
| gene_product_dbxref           |
| gene_product_homology         |
| gene_product_homolset         |
| gene_product_phylotree        |
| gene_product_property         |
| gene_product_seq              |
| gene_product_subset           |
| gene_product_synonym          |
| gi2uniprot                    |
| graph_path                    |
| graph_path2term               |
| homolset                      |
| instance_data                 |
| intersection_of               |
| phylotree                     |
| phylotree_property            |
| relation_composition          |
| relation_properties           |
| seq                           |
| seq_dbxref                    |
| seq_property                  |
| source_audit                  |
| species                       |
| term                          |
| term2term                     |
| term2term_metadata            |
| term_audit                    |
| term_dbxref                   |
| term_definition               |
| term_property                 |
| term_subset                   |
| term_synonym                  |
+-------------------------------+
47 rows in set (0.00 sec)

7 运行官方的例子b2g4pipe
下载 https://blast2go.com/data/blast2go/b2g4pipe_v2.5.zip并解压。
配置b2gPipe.properties文件中b2gdb信息:(打开那个文件夹,进行如下修改)
           // GO and B2G Data Access Basic
              Dbacces.dbname=b2gdb
             Dbacces.dbhost=localhost:3306
             Dbacces.dbuser=blast2go
              Dbacces.dbpasswd=blast4it

进入到b2g4pipe目录,运行自带例子。
sh ./runPipeExample.sh
java -Xmx1000m -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe
 runPipeExample.sh文件的内容:
#!/bin/bash
java -Xmx1000m -cp *:ext/*: es.blast2go.prog.B2GAnnotPipe –in 10_BlastResults_2011.xml –out results/myproject –prop b2gPipe.properties –annot –dat –img –ips –annex –goslim –wiki html_template.html –v

参数详解:
Xms和Xmx分别表示最小和最大使用Java内存,单位为MB,如果序列数大于2000条,建议用这个参数。
-in  输入的Blast的结果,格式为XML。所有序列的Blast结果都在一个XML文件中。
-out 输出结果的前缀。如果不给,默认是的输入文件的前缀名字。
-prop 后面接的是Blast2Go的配置文件。默认为./ b2gPipe.properties。正常运行Blast2Go需要正确设定该配置文件。主要填入较新的Blast2Go数据库的信息:数据库的访问IP,数据库的名称,用户和密码。
-v  在终端显示应用信息
-annot 产生B2G注释文件,文件的后缀名为.ANNOT
-dat  生成B2G二进制的数据文件(blast2go project)结果,该文件以.dat为后缀。这一步特别消耗内存,因为所有数据需要先保存在内存中,最后一步再写出来。
-img  生成图片,仅仅在有参数-dat时才生成图片
-ips  后面接interpro结果的文件夹。该文件夹内的为每条序列的Interpro注释结果,其文件以序列  号.xml来命名。如果所有的序列在一个xml文件,可以吗?
-wiki  产生一个wiki文件,根据给的模板。
-annex  运行Annex步骤
-goslim  将GO注释转换为GoSlim版本。运行GoSlim需要相关GoSlim文件支持。

命令行仅能得到GO注释,而不能进行其他统计分析,以及富集分析。
blast2go用途就是讲NR注释和interpro注释转化为GO注释。

其内容如下,也可以直接在命令行输入,:
不到一分钟运行结束。

8运行图形界面
在自己的安装了java(安装方法请google,记得设置环境变量PATH、CLASSPATH)的电脑(也可以通过VNC远程连接服务器)上直接运行命令java -cp *:ext/*: es.blast2go.Blast2GO或者,将其写入文件Blast2GO_GUI.sh

#!/bin/bash
# Windows中不要上面这行!!!!!!!!!!!!!
# -Xmx1024M 指定java最大可使用内存,根据情况更改
java -Xmx1024M -cp *:ext/*: es.blast2go.Blast2GO
# Windows中把冒号改成分号!!!!!!!!!!!!!
# java -Xmx1024M -cp *;ext/*; es.blast2go.Blast2GO

进入到b2g4pipe目录,运行脚本
sh ./Blast2GO_GUI.sh
进入图形界面后,配置数据库:菜单栏点击“Tools”,最后一个“DB configuration”,更改Host为localhost,DB name为b2gdb,然后点击播放按钮(指向右边的三角形)生效,下次启动程序仍然有效。
sh ./Blast2GO_GUI.sh
进入图形界面后,配置数据库:菜单栏点击“Tools”,最后一个“DB configuration”,更改Host为localhost,DB name为b2gdb,然后点击播放按钮(指向右边的三角形)生效,下次启动程序仍然有效。

9数据库更新 ,导入数据中断的解决方案:
9.1 assocdb-data数据的更新: 
下载解压新的assocdb-data文件后,
mysql -s -h localhost -uroot -proot b2gdb < go_201307-assocdb-data
不用担心与旧的数据冲突,它们会被自动删除然后更新。

9.2 gene2accession、gene_info、idmapping.tb的更新
由于它们是以导入数据文件的方式导入数据库,需要登陆到数据库中,手动清空对应的原来数据表中的数据:
$ mysql -u root -p
Enter password: 
 mysql> use b2gdb;
Database changed
mysql> truncate table gene2accession;
Query OK, 0 rows affected (16.67 sec)
mysql> truncate table gene_info;
Query OK, 0 rows affected (2 min 2.49 sec)
 mysql> truncate table gi2uniprot;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
再开始导入数据

10删除数据库
mysql> DROP DATABASE b2gdb; 删除我安装的数据库


ps:尽管现在开始运行了,但有的地方仍然糊里糊涂的,有待进一步的挖掘

    参考网页:
blast2go官网 :http://blast2go.com/b2glaunch/resources/35-localb2gdb
沉默是金的博客: http://www.ncrna.net/blast2go-localization-tutorial/
爪爪的博客:     http://blog.shenwei.me/local-blast2go-installation/
无穷个大神的帖子

201417补充:
也不知道怎么回事,go的注释不好使,我又重新装了一遍,这次是按照爪爪的博客,强烈推荐一下他的博客,安装起来非常简单,因为他把过程都放在一块来执行了,就一步,不像我遮掩这么麻烦。

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有