关于Blast算法和软件,我最早接触的时候是2013年左右,前后写过几次关于blast如何本地化的博文,后来由于站点从github迁移到云主机上(微信公众号上也写过《Blast本地化快速上手教程》),之前的写的内容大多丢失了,本文就旧瓶装新酒,再次介绍一下blast。

Basic Local Alignment Search Tool (Altschul et al., 1990 & 1997) ,blast算法采用了一种启发式算法,首先将输入的序列打断成子片段,称之为seed,然后将seed与预先索引好的序列进行比对,选择seed连续打分较高的位置采用动态规划算法进行延伸并且进行打分,当打分低于某一阈值延伸过程就会终止,最后产生了一系列高得分序列。最后使用E-value对其显著性进行评估,选出比对结果最好的序列。即Blast算法原理如下:

Blast+是目前比较常用的序列查找工具,包括核酸、蛋白序列的查找比对、同源性分析等。一般使用网页进行比对查询,如果有大量数据需要处理则需要安装独立程序进行分析,目前最新版本是BLAST+ 2.11.0,主要改进了对大数据的支持和新增了一些功能特性:更新历史

独立运行程序下载地址:

https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/

Web版程序地址:

https://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastp&PAGE_TYPE=BlastSearch&LINK_LOC=blasthome

下面以linux下构建本地分析为例:

1)下载安装完成后,使用BLAST+自带的update_blastdb.pl脚本下载nr和nt等库文件,直接运行下列命令即可自动下载,或者fasta手动格式化数据库。

2)格式化数据库

示例:makeblastdb -in demo.fasta -dbtype prot -parse_seqids -out dbname

        参数说明:

        -in:待格式化的序列文件

        -dbtype:数据库类型,prot或nucl

        -out:数据库名

3)序列比对,以蛋白序列比对为例

blastp -query demo.fasta -out demo.blast -db dbname -outfmt 6 -evalue 1e-5 -num_descriptions 10 -num_threads 8

        参数说明:

        -query: 输入文件路径及文件名

        -out:输出文件路径及文件名

        -db:格式化了的数据库路径及数据库名

        -outfmt:输出文件格式,总共有12种格式

        -evalue:设置输出结果的e-value阈值

        -num_threads:线程数

详细的参数建议多看看官方文档。

参考资料:

1.https://www.ncbi.nlm.nih.gov/books/NBK131777/

2.https://blast.ncbi.nlm.nih.gov/

3.https://www.ncbi.nlm.nih.gov/books/NBK51062/