详见:http://blog.shenwei.me/local-blast-installation/

Linux系统中NCBI BLAST+本地化教程

本文面向初学者(最好还是懂得基本的linux使用),高手可直接忽视。不介绍Windows系统中的安装方法,一是因为思路一样,二是因为Linux中BLAST效率更高,系统更稳定,不会卡死。所以,请用Linux服务器,我想你也不忍心让自己心爱的本本跑几十个小时的程序吧。

请不要因为篇幅长,而觉得很困难,只是为了初学者能懂,叙述比较详(luo)细(suo)而已

——————-[ 做好心理准备,开始了]——————-

1. 安装配置BLAST+程序

ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/中下载最新的BLAST可执行程序(不要下载源代码`,源码编译非常慢),选择预编译版本,如ncbi-blast-2.2.30+-x64-linux.tar.gz。如果服务器能联网,可直接用wget下载。或者,下载后用SFTP客户端传输到服务器上。

wget ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.2.30+-x64-linux.tar.gz
解压缩: tar -zxvf ncbi-blast-2.2.+-x64-linux.tar.gz

(按理说解压缩后就可以通过绝对路径直接使用了,但为了今后的方便,还是继续配置吧)为了方便,将其移动到我安装本地程序的目录(参考《[Linux上设置良好的目录结构][1]》),并重命名(固定命名,不带版本号,避免因升级而修改配置文件),统一管理。

mv ncbi-blast-2.2.+ ~/local/app/ # 移动
cd ~/local/app/ # 进入本地程序安装路径
mv ncbi-blast-2.2.+ blast # 修改目录名

现在,已经将BLAST+安装到~/local/app/blast 中了(~知道吧,就是用户的家目录,可用环境变量$HOME代替)。

[shenwei@mu01 blast]$ pwd # 查看当前目录的绝对路径
/db/home/shenwei/local/app/blast
[shenwei@mu01 blast]$ ls # 查看当前目录的内容
bin ChangeLog doc LICENSE ncbi_package_info README

将BLAST+可执行程序所在目录(bin)的绝对路径加入到环境变量$PATH中,方便通过程序名直接调用。编辑~/.bashrc文件,在最后加入以下行:

export PATH=/db/home/shenwei/local/app/blast/bin:$PATH

如果不会使用vi/vim等编辑器,可直接运行下列一行命令,将上述内容添加到~/.bashrc文件(看清楚,和上面不同的是:$被转义了的):

echo "export PATH=/db/home/shenwei/local/app/blast/bin:\$PATH" >> ~/.bashrc

让配置生效:

source ~/.bashrc

到此,你就可以直接输入BLAST的子程序,如blastn进行比对了。试试输入blast -version ,看看是否如下显示:

[shenwei@mu01 blast]$ blastn -version
blastn: 2.2.+
Package: blast 2.2., build Dec ::

——————-[ 休息一下,鼓励一下自己 ]  ——————-

2. 配置本地BLAST库

当需要进行大量比对的时候,将BLAST数据库本地化能极大提高效率。

我存放库文件的目录为~/data/blast 。建立并编辑(如果还不会编辑,就复制到本地的一个文本文件ncbirc.txt,然后传到服务器,再改名mv ncbirc.txt .ncbirc )NCBI BLAST全局配置文件(在家目录),内容如下:

[shenwei@mu01 ~]$ cat .ncbirc  # 这是查看文件内容的命令,下面才是内容
; Start the section for BLAST configuration [BLAST] ; Specifies the path where BLAST databases are installed
BLASTDB=/db/home/shenwei/data/blast ; Specifies the data sources to use for automatic resolution ; for sequence identifiers
DATA_LOADERS=blastdb ; Specifies the BLAST database to use resolve protein sequences
BLASTDB_PROT_DATA_LOADER=/db/home/shenwei/data/blast/nr ; Specifies the BLAST database to use resolve protein sequences
BLASTDB_NUCL_DATA_LOADER=/db/home/shenwei/data/blast/nt BATCH_SIZE=10G ; Windowmasker settings [WINDOW_MASKER]
WINDOW_MASKER_PATH=/db/home/shenwei/data/blast/windowmasker ; end of file

配置好后,后面选择库的时候就可以只输入名称(比如nr),不用输入绝对路径了。

3. 下载库文件

配置好之后,使用BLAST+自带的update_blastdb.pl脚本下载nr和nt等库文件(不建议下载序列文件,一是因为后者文件更大,二是因为可以从库文件中提取序列blastdbcmd -db nr -dbtype prot -entry all -outfmt "%f" -out nr.fa ,最主要是建库需要花费很长时间),直接运行下列命令即可自动下载。

update_blastdb.pl nt nr

提醒:下载文件较大,耗费时间较长,最好将任务转入后台。详见《Shell Note》中“用screen运行大量后台任务”部分。简单的做法,也可用nohup命令(下面nohup后面用了time命令,是为了看看整个消耗的时间):

nohup time update_blastdb.pl nt nr > log &

监控库文件是否下载完成,如何判断? 1. 查看log文件是否有提示;2. 查看update_blastdb.pl是否还在运行:执行ps -aef | grep update_blastdb.pl | grep -v update_blastdb.pl 命令,如过没有结果,则说明没有运行了。

下载完成后解压所有tar.gz文件(用通配符)即可:

nohup time tar -zxvf *.tar.gz > log2 &

提示:今后要更新库文件的时候,按照上述方法重新下载解压即可。

常用的BLAST库文件(比如基因组参考序列)也可以加入其中,今后调用的时候就不用输入库 文件的绝对路径了。

——————-[ 赞扬一下自己 ]  ——————-

4. 基本用法

可直接Google中文教程。更权威,更详细的请参考BLAST手册《BLAST Command Line Applications User Manual》。具体参数信息可直接输入blastn -help` 查阅。

提示blast输出格式有多种,其中11包含信息最全,其它格式都可用blast_formatter程序由11转化为其它格式。所以,比对结果请使用11格式。

1)如果本地化了nt库,直接在nt库中比对,部分参数的中文意义可见《BLAST+使用方法》。

blastn -query test.fa -db nt -outfmt  -out "test.blastn@nr.asn" -num_threads 

其中输出文件名test.blastn@nr.asn是个人习惯,即“序列文件名.blast子程序名@库名.结果格式”,这样是不是很直观?

转换格式(如自定义表格格式):

blast_formatter -archive "test.blastn@nr.asn" -outfmt "7 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore staxids salltitles" > "test.blastn@nr.tab"

转为默认格式 :

blast_formatter -archive "test.blastn@nr.asn" -outfmt  > "test.blastn@nr.blast"

2)如果没有本地化nt库,可添加-remote选项(就不能使用-num_threads参数了),进行在线比对(当然要慢一些,适合数据不多的情况):

blastn -query test.fa -db nt -outfmt  -out "test.blastn@nr.asn" -remote

3)用自己的序列建库

makeblastdb -in db.fasta -dbtype nucl -parse_seqids -out dbname

如果该库需要经常使用,可将库文件移到前面配置的库文件的目录,今后在其它目录运行blast的时候,便可直接输入库名(不用输入绝对路径),直接使用。

mv dbname.* ~/data/blast

  

————- [ 在实践中学习,不会的请google、看手册] ————-

 

ncbi-blast 本地安装的更多相关文章

  1. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  2. npm全局安装和本地安装和本地开发安装(npm install --g/--save/--save-dev)

    详细说明参考:http://www.cnblogs.com/PeunZhang/p/5629329.html 我个人理解: 1.全局安装(npm install -g)是为了用命令行,比如在windo ...

  3. maven本地安装jar包同时生成pom文件

    maven 本地安装jar包:mvn install:install-file -Dfile=本地路径/ojdbc12.jar -DgroupId=com.oracle -DartifactId=oj ...

  4. 本地yum库制作及本地安装Docker

    生产环境中,我们总是会遇到服务器无法连接外网的情况,这样,如果想安装某个应用,而这个应用依赖的其他类库又特别多,就很痛苦了.这个时候,就需要自己制作个本地的yum库,进行本地安装.本文将以Docker ...

  5. 本地安装xssing

    本地安装xssing 环境为apache+mysql+php,linux下和Windows均进行了尝试. 步骤: (1)Mysql中创建xing数据库,将xssing.sql中的语句复制并在xing数 ...

  6. 使用XAMPP本地安装Wordpress博客

    最近一直在研究博客,也知道了大名鼎鼎的wordpress,因此也希望动手尝试一下,看看跟网站提供的博客有何区别. 第一个问题:能什么安装wordPress,能否用tocmat? 虽然问题很可笑,但是之 ...

  7. 本地安装discuz

    出处:http://jingyan.baidu.com/article/b87fe19eb57ff252183568d9.html 网站建目前都很简单,建站容易,管理难,网站做大优化更难.本人有建站经 ...

  8. nodejs npm install全局安装和本地安装的区别

    npm的包安装分为本地安装(local).全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如:代码如下:复制代码npm install # 本地安装npm install - ...

  9. Discuz建站教程:本地安装discuz网站

    网站建目前都很简单,建站容易,管理难,网站做大优化更难.本人有建站经验,目前给大家分享一下如何建站,当然,目前使用的是本地建站,因为非本地建站需要购买域名和网站空间,当然,朋友们想真正建站的,对于一些 ...

随机推荐

  1. 数据库中间件分片算法之enum

    前言 最近挺焦虑的,不知道未来该做什么,方向又是什么.只能用别慌,月亮也正在大海的某处迷茫.来安慰下自己.不过学习的初心咱们还是不要忘记.今天我们学习的是enum分片算法. 1.hash分区算法 2. ...

  2. DM7的SQL批量插入for、while方法

    示例1,for用法: begin for i in 1...10000 loop insert into test values(i,i,'aaa',sysdate); if i mod 20 = 0 ...

  3. 5.pycharm中导入第三方模块的方法

    最近刚入门学习python,网上查找了一些资料,发现python编程用的软件pycharm还是比较多的,于是就跟随大众,学习使用pycharm,在学习的过程中,想要导入第三方模块pyperclip,但 ...

  4. ThinkPHP5——接入腾讯云短信API

    接入腾讯云短信API相当简单,最重要的是第一次使用腾讯云短信的话有100条免费短信可以测试,对于开发人员是足够了,下面我就教大家接入腾讯云短信. 第一步:准备工作 首先要在腾讯云短信申请短信签名与短信 ...

  5. PHP实现取得HTTP请求的原文【转】

    本文实例讲述了PHP实现取得HTTP请求的原文的方法,具体步骤如下: 1. 取得请求行:Method.URI.协议 可以从超级变量$_SERVER中获得,三个变量的值如下: $_SERVER['REQ ...

  6. 体验.NET Core 命令行应用程序-CommandLineUtils

    前言 在我们开发中可能需要设计一次性应用程序,这些实用程序可以利用接近原始源代码的优势,但可以在与主Web应用程序完全独立的安全性上下文中启动.具体在 [管理过程](https://12factor. ...

  7. Java ArrayList类的简单介绍

    ArrayList类的说明: ArrayList类是List接口的实现类,java.util.ArrayList集合数据存储的结构是数组结构. 特点: 元素增删慢,查找快.(由于日常开发中使用最多的功 ...

  8. 简单的c语言程序

    我猜大部分人第一门掌握的语言是c语言吧(我第一门学的是python). 在接下来的文章里我会逐步的介绍有关自己对c语言的理解,希望对一些小伙伴有帮助,有哪里有错误希望大佬指出. 首先这是第一个c语言程 ...

  9. 简单介绍HTTP的请求(get请求和post请求)以及对应的响应的内容

    链接解析: https://oa.hbgf.net.cn/login.jsp;jsessionid=47084322738F8DB18D60752944DFD1AA http或者https表示使用的是 ...

  10. playbooks框架与子文件编写规范

    Test Playbooks框架 ​ 详细目录testenv文件 ​ 主任务文件main.yml ​ 任务入口文件deploy.yml ​ Ansible连接playbooks需要添加ssh协议认证 ...