使用sequenceserver搭建本地化blast网页服务
1. 简介
现在NCBI不再提供wwwblast软件下载。且NCBI的wwwblast软件很久没更新,界面简陋,因此不推荐使用该软件进行本地化blast分析。使用sequenceserver部署本地化blast网页服务,界面简单易用,还可以同时勾选多个数据库进行比对分析。以下讲解使用sequenceserver在CentOS7上搭建本地化blast网页服务。
![](https://img.haomeiwen.com/i24269399/228502b49d694b38.png)
![](https://img.haomeiwen.com/i24269399/b2cbc0ae0865f05d.png)
2. 安装软件
安装需要
[Ruby]:http://ruby-lang.org/ (>= 1.8.7),
[RubyGems]:https://rubygems.org/ (>= 1.3.6),
[NCBI BLAST+]:ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.25/ (>= 2.2.25+).
ruby-devel:https://repo.almalinux.org/almalinux/8.3-beta/AppStream/x86_64/os/Packages/ruby-devel-2.7.1-133.module_el8.3.0+6147+d0dfc1e4.x86_64.rpm
#ruby安装
cd
./configure
make
make install
#ruby安装
sudo yum install ruby-devel
centos7虚拟机安装
使用root用户安装sequenceserver软件。该软件使用Ruby编程,使用Rubygem即可安装软件。在CentOS7系统中需要额外安装ruby-devel软件。
sudo yum install ruby
sudo yum install ruby-devel
sudo gem install sequenceserver
无网络的本地服务器中
(1)访问ruby网址下载ruby:https://www.ruby-lang.org/en/downloads/
(2)gem官网下载sequenceserver:http://rubygems.org/](http://rubygems.org/)
gem install -I sequenceserver.gem
#-l参数意思是直接执行从本地安装
#如果该gem没有依赖包,则直接就安装成功了
#如果有依赖包,则会抱错提示缺少依赖的gem
#然后只要再去下载该包,gem install -l xxx.gem
#按照这个步骤安装虽然操作不方便,但是非常快。
#如果要新装一台机器的话,只需把所有依赖包放到一个文件夹里,依次安装所有包,那会非常节省时间的,而且不一定需要联网的。
- 使用sequenceserver
配置sequenceServe
[zf@localhost ~]$ whereis sequenceserver
sequenceserver: /home/zf/bin/sequenceserver #软件安装路径
[zf@localhost home]$ cd /home/zf/bin/
[zf@localhost bin]$ mkdir db #软件安装文件夹新建一个文件夹存放数据库
将准备建库的蛋白序列文件放入文件内
[zf@localhost db]$ sequenceserver -d ./ -m #格式化数据库
[zf@localhost db]$ sequenceserver -d ./ #弹出blast的网页就成功了
访问地址:默认情况下是 [http://localhost:4567](http://localhost:4567/)
#下边的不知道有没啥用,我的安装位置没有sequenceserver.conf这个文件
#sequenceServe默认的配置文件为`~/.sequenceserver.conf`;也可以使用`-c`参数指定对应的配置文件
#增加配置信息到对应的配置文件`-s`参数
#vim `.sequenceserver.conf` 将注释文件进行修改,加入blast路径
#bin: ~/ncbi-blast-2.2.26+/bin/
#database: /Users/me/blast_databases/
## 指定blast+ 的路径和blast库位置
#sequenceserver -c ./sequenceserve.conf -s -b /usr/local/bin/blastn/bin -d dataBase
##配置完成后,启动程序
#sequenceserver -c ./sequenceserve.conf -D -H 0.0.0.0
#sequenceserver -d /opt/biosoft/wwwblast/db -n 16 -p 8080
![](https://img.haomeiwen.com/i24269399/588e02986f24e3f5.png)
创建blast库,把新物种建库放入db文件中
<1> 使用 sequenceserver 来调用 makeblastdb 进行数据库创建
sequenceserver format-databases directory_with_fasta_files
<2> 使用 blast+ 本身所带 makeblastdb 来创建数据库
makeblastdb -dbtype <db type> -title <db title> -in <db> -parse_seqids
为了提高数据下载功能,可以在node中建一个软连接把这里的基因组数据给导过去
blast索引文件和fasta文件都放在同一个目录下,程序将会递归的搜索
makeblastdb -in Gbarbadense_gene_transcripts.fasta -title Gbarbadense_HAU_transcripts_v2.0 -parse_seqids -dbtype nucl
##将会再fasta所在目录生成对应的索引文件
更改UI设置
打算使用iframe
标签直接把sequencceserver页面引用过去,仅仅改一下UI界面。有两种方法
第一种从源代码更改
下载源代码:地址 https://github.com/wurmlab/sequenceserver/releases
参考 https://github.com/wurmlab/sequenceserver#develop-and-contribute
第二种从gem安装文件中更改
参考 https://blog.csdn.net/u014621915/article/details/62221705
gem environment
#
- GEM PATHS:
- /usr/local/lib/ruby/gems/2.7.0
- /root/.gem/ruby/2.7.0
##进入对应的目录,在进入sequenceserver源代码目录
cd /usr/local/lib/ruby/gems/2.7.0/gems/sequenceserver-1.0.14/
修改views
目录下对应的erb
文件,打算删除掉那个navbar
,只用删除search.reb
中的navbarhtml
标签内容
配合JBrowse使用
参考 https://jbrowse.org/docs/faq.html#how-can-i-link-blast-results-to-jbrowse
至此安装就大功告成了,接下来,就是界面优化了,传统的界面,是将所有物种全部列出,如果物种少,对界面没有太大的影响,但是,如果物种一多起来,那么,这个界面将被无限拉长,既不美观,也不方便他人的使用。因此,本人在此使用jstree这也小插件来解决这一问题。
jstree 的添加(涉及有关文件,本人均已准备好,无需从其他地方下载,附件2)
1)添加前需要的插件:
1、jstree的css文件,具体的,是在目录/public/css中加入themes文件夹,其中的内容,本人已经下载好,可以直接复制到该目录下。
2、jstree的js文件,只有文件jstree.js、jstree.min.js两个,在public/js中加入这两个文件即可。
2)添加前需要的操作;
1、对原始文件重新命名分别命名为A_B_genome.fasta、A_B_proteins.fasta、A_B_cds.fasta、A_B_scaffold.fasta
2、对原始文件中的进行重命名,该步骤因人而异,但中必须有物种名(links.rb中对此有严格要求)
配置系统文件,使系统支持jstree这一插件
1)在文件Gruntfile.js中指定jstree.min.js的所在位置('/public/js/d3.v3.min.js')
2)修改文件links.rb,修改的目的是为了保证sequenceserver能在后台识别blast库中的不同物种,并给这些文件取一个新名字,方便接下来的分类修改格式为
taxa["Ahnfeltiopsis_flabelliformis"] = "Ahnfeltiopsis_flabelliformis"
(说明:中括号中的信息是源文件中的序列信息,等号右边的是新取的名字)
-
在文件夹/lib/sequenceserver中加入 hierarchy.rb这一文件,该文件的作用是将不同物种按生物学依据分类
'Ahnfeltiopsis' => 'Florideophyceae'
(说明:在红藻中物种Ahnfeltiopsis flabelliformis属于Florideophyceae亚纲) -
在目录文件sequenceserver.rb(path:/lib)中添加子目录hierarchy.rb
5)对routes.rb也有相应的操作,略。
修改sequenceserver界面
直接对目录/views下的search.erb进行操作可按照需要修改导航栏,但是目前尚未解决导航栏下拉菜单显示问题。
*若sequenceserver库文件中有cds、proteins、genome、scaffold这些文件或其中三个,则应按需添加或修改search.erb 文件的几个地方:
1)如果四个文件都有(只有三个时可略过此步),则需要修改界面中栅格系统中栅格占屏的大小
(默认全屏共12个格子,“col-md-n”中n的值代表该栏具体占几个格子)
即将search.erb(附件3)文件中第270行、279行<div class="col-md-6">修改为<div class="col-md-4">
2)修改
<input id="genome_q" class="nucleotide genome" placeholder="Search Genome databases..."/>
将ID的值改为genome_q、transcripts_q、scaffolds_q 则分别表示读取genome、cds、scaffold文件
3)修改
<div id="genome" class="nucleotide treediv">
将ID的值改为genome、transcripts、scaffolds 则分别表示读取genome、cds、scaffold文件。
4)修改
('#genome_q').keyup(function () {
if(tto) { clearTimeout(tto); }
tto = setTimeout(function () {
var v = ('#genome').jstree(true).search(v);
}, 250);
});
修改“#”后面所接的内容,可按照需要统一改为genome、transcripts、scaffolds、
以上三个步骤,所修改的值必须唯一,要么全部改为genome(genome_q),要么全部改为transcripts、(transcripts_q)或者改为scaffolds、(scaffolds_q)共有三处需要修改,若文件有四个,则需要自行添加。
最后,贴张成品图,另:http://realdb.algaegenome.org:4567/可见完整的效果。
![](https://img.haomeiwen.com/i24269399/89cd9c850b964894.png)
(本说明文档仅修改、总结、其中有新添一些步骤,以上文档可在https://pan.baidu.com/s/1pLyvbDL中下载使用)