admin管理员组

文章数量:1446760

BLAST—序列相似性搜索必备神器

工欲善其事 必先利其器

BLAST

BLAST(Basic Local Alignment Search Tool) 是一款用于在蛋白质或 DNA 数据库中进行相似性搜索的分析工具。BLAST 程序能够快速比对查询序列与公开数据库中的序列,并计算相似性得分,以进行统计分析。

自 1997 年发布以来,BLAST 经过多次升级,功能与性能不断优化。然而,随着时间推移,BLAST 的源代码变得越来越复杂和难以维护,限制了进一步的功能扩展和优化。与此同时,NCBI 推出的 C++ Toolkit 项目也促使 BLAST 的维护者决定从零开始,重新开发 BLAST 代码。

2009 年 7 月,NCBI 发布了全新的 BLAST+ 。BLAST+ 在继承 BLAST 核心算法和优势功能的基础上,进行了模块化重构,提升了性能和可维护性。新版本的改进包括:

  • blastn、blastp、blastx 等工具拆分为独立程序,取代了原有的 blastall -p blastn 这种调用方式。
  • 新增了 makeblastdb、blastdb_aliastool、blastdbcmd 等与数据库相关的工具,增强了数据库管理和操作能力。
  • 重点优化了长序列比对的性能,提高了计算效率和易用性。

由于 BLAST+ 在性能和可扩展性方面的显著提升,NCBI 也建议用户放弃旧版 BLAST,转而使用 BLAST+。

BLAST 常用程序

网页端:.cgi

网页端

网页端

命令

查询序列

数据库

适用场景

blastp

蛋白质

蛋白质

蛋白功能预测、同源比对

blastn

核酸

核酸

核酸序列比对、基因组研究

blastx

核酸

蛋白质

预测编码区、功能推测

tblastn

蛋白质

核酸

在基因组/转录组中搜索蛋白编码基因

tblastx

核酸(翻译)

核酸(翻译)

物种间的编码基因比对

如何安装

Blast安装非常简单,官网提供预编译的二进制安装包,下载解压即可使用。

  • .html
  • +/LATEST/
代码语言:javascript代码运行次数:0运行复制
##下载软件安转包,网速慢的话,可以本地下载再上传到服务器
wget -c +/LATEST/ncbi-blast-2.16.0+-x64-linux.tar.gz

##文件大小
246M 3月   9 22:51 ncbi-blast-2.16.0+-x64-linux.tar.gz

##解压,软件包为预编译的二进制包,解压就能使用
tar -xf ncbi-blast-2.10.0+-x64-linux.tar.gz
解压即可

解压即可

基本使用

构建数据库

代码语言:javascript代码运行次数:0运行复制
makeblastdb -in genome.fasta -dbtype nucl -out ./dbname

-in: #构建数据库所用的序列文件
-dbtype: #数据库类型。构建的数据库是核苷酸数据库时,dbtype设置为nucl,数据库是氨基酸数据库时,dbtype设置为prot。
-out: #输出结果(自定义数据库名称)

#注:构建数据库的时候不要加`-parse_seqids`参数

当然NCBI也提供的有以及构建好的数据库,可以直接下载使用【Get NCBI BLAST databases:/】:

代码语言:javascript代码运行次数:0运行复制
#查看可以有哪些可以下载的数据库
update_blastdb.pl --showall [*]

支持的数据库

代码语言:javascript代码运行次数:0运行复制
$./update_blastdb.pl --showall [*]
28S_fungal_sequences
16S_ribosomal_RNA
ITS_RefSeq_Fungi
18S_fungal_sequences
Betacoronavirus
ITS_eukaryote_sequences
LSU_eukaryote_rRNA
LSU_prokaryote_rRNA
SSU_eukaryote_rRNA
env_nt
env_nr
human_genome
landmark
mito
mouse_genome
nr
nt_euk
nt
nt_others
nt_prok
nt_viruses
pataa
patnt
pdbaa
pdbnt
ref_euk_rep_genomes
ref_prok_rep_genomes
ref_viroids_rep_genomes
ref_viruses_rep_genomes
refseq_select_rna
refseq_select_prot
refseq_protein
refseq_rna
swissprot
tsa_nr
tsa_nt
taxdb
core_nt

其中nt为核酸数据库,nr为蛋白质数据库

nt 数据库

database:/

nt.*tar.gz :来自 GenBank、EMBL 和 DDBJ 的所有传统分类中部分非冗余核苷酸序列,不包括 GSS、STS、PAT、EST、HTG 和 WGS。

/

/

代码语言:javascript代码运行次数:0运行复制
screen -r ncbi

##下载nt数据库(默认下载到当前目录)
update_blastdb.pl --decompress nt 
下载nt数据库

下载nt数据库

由于单个文件2.5G,整个nt数据库比较大,这里就不再一一下载,后面示例直接使用共享服务器提供的公共数据库。满足你生信分析计算需求的低价解决方案

代码语言:javascript代码运行次数:0运行复制
##单个文件
2.5G 3月  10 16:59 nt.231.tar.gz

##每个nt.*.tar.gz 解压:
 33M 3月   6 05:52 nt.231.nhd
747K 3月   6 05:52 nt.231.nhi
331M 3月   6 05:52 nt.231.nhr
 22M 3月   6 05:52 nt.231.nin
 15M 3月   6 05:52 nt.231.nnd
 60K 3月   6 05:52 nt.231.nni
7.2M 3月   6 05:52 nt.231.nog
2.8G 3月   6 05:52 nt.231.nsq
229K 3月   6 05:52 nt.231.nxm
共享服务器公共数据库

共享服务器公共数据库

blastn

代码语言:javascript代码运行次数:0运行复制
blastn -query input.fa -db ./dbname -evalue 1e-6 -outfmt 6 -num_threads 6 -out out_file

-query: #输入文件路径及文件名
-out:#输出文件路径及文件名
-db:#构建的数据库路径及数据库名
-outfmt:#设定输出文件格式,6是tabular格式对应BLAST的m8格式
-evalue:#设置输出结果的e-value值
-num_descriptions:#tabular格式输出结果的条数
-num_threads:#线程数

-outfmt 输出文件选项

代码语言:javascript代码运行次数:0运行复制
 Formatting options
 -outfmt <String>
   alignment view options:
     0 = Pairwise,
     1 = Query-anchored showing identities,
     2 = Query-anchored no identities,
     3 = Flat query-anchored showing identities,
     4 = Flat query-anchored no identities,
     5 = BLAST XML,
     6 = Tabular,
     7 = Tabular with comment lines,
     8 = Seqalign (Text ASN.1),
     9 = Seqalign (Binary ASN.1),
    10 = Comma-separated values,
    11 = BLAST archive (ASN.1),
    12 = Seqalign (JSON),
    13 = Multiple-file BLAST JSON,
    14 = Multiple-file BLAST XML2,
    15 = Single-file BLAST JSON,
    16 = Single-file BLAST XML2,
    17 = Sequence Alignment/Map (SAM),
    18 = Organism Report

示例

代码语言:javascript代码运行次数:0运行复制
~/biosoft/ncbi-blast-2.16.0+/bin/blastn -query ~/seqtk_test/SRR23698412_2_subset.fasta \
    -db /refdir/database/nt_makeblastdb/nt \
    -out SRR23698412_2_subset.xml \
    -max_target_seqs 1 -outfmt 5 -num_threads 4 -evalue 1e-5
blastn

blastn

至此,我们对blast有了一个基本的了解,也成功运行了一个很简单的示例,下一篇我们会再围绕一个具体使用场景介绍说明。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-03-11,如有侵权请联系 cloudcommunity@tencent 删除数据库服务器搜索性能优化

本文标签: BLAST序列相似性搜索必备神器