BLAST(2.12.0+)使用记录

文章仅是记录自己的学习使用,有错误请指出,我立刻改正!

官方说明:https://www.ncbi.nlm.nih.gov/books/NBK279684/#appendices.Options_for_the_commandline_a

一、Blast简介

1、Blast,全称Basic Local Alignment Search Tool,即"基于局部比对算法的搜索工具",由Altschul等人于1990年发布。Blast能够实现比较两段核酸或者蛋白序列之间的同源性的功能,它能够快速的找到两段序列之间的同源序列并对比对区域进行打分以确定同源性的高低。
2、Blast的运行方式是先用目标序列建数据库(这种数据库称为database,里面的每一条序列称为subject),然后用待查的序列(称为 query)在database中搜索,每一条query与database中的每一条subject都要进行双序列比对,从而得出全部比对结果。

Blast是一个集成的程序包,通过调用不同的比对模块,blast实现了五种可能的序列比对方式:
blastp:蛋白序列与蛋白库做比对,直接比对蛋白序列的同源性。
blastx:核酸序列对蛋白库的比对,先将核酸序列翻译成蛋白序列(根据相位可以翻译为6种可能的蛋白序列),然后再与蛋白库做比对。
blastn:核酸序列对核酸库的比对,直接比较核酸序列的同源性。
tblastn:蛋白序列对核酸库的比对,将库中的核酸翻译成蛋白序列,然后进行比对。
tblastx:核酸序列对核酸库在蛋白级别的比对,将库和待查序列都翻译成蛋白序列,然后对蛋白序列进行比对。
  • Blast提供了核酸和蛋白序列之间所有可能的比对方式,同时具有较快的比对速度和较高的比对精度,因此在常规双序列比对分析中应用最为广泛。可以毫不夸张的说,blast是做比较基因组学乃至整个生物信息学研究所必须掌握的一种比对工具。

二、模式选择

  • blastn 和blastp 程序有一个''–task'' 选项。 此选项将参数(例如,word-size或gap values)设置特定类型搜索。 例如,–task“megablast”针对种内比较进行了优化,它使用了较大的word-size,而“blastn”则更适合具有较短word-size的种间比较。 这些选项类似于 BLAST 网页的“程序选择”部分。

  • fig1.png

三、报错说明

  • fig2.png

四、使用介绍(makeblastdb)

makeblastdb -in db.fasta -dbtype nucl -parse_seqids -out dbname
参数说明:
-in:待格式化的序列文件
-input_type:输入文件中指定的数据类型,默认fasta
-parse_seqids:对于输入FASTA文件,此选项作用为解析seqid,对于其他输入类型,seqid将自动解析(推荐加上)
-dbtype:数据库类型,核酸为nucl,氨基酸为prot
-out:数据库名
-logfile:日志文件,默认为输出到屏幕
-input_type:输入文件类型,默认fasta,其他支持文件asn1_bin,asn1_txt, blastdb
blastn -query test.fasta -db test.blastdb -out blastn_results.xls -task blastn
参数说明:
-query:要比对的序列文件
-db:指定搜索数据库,这里只需要输入前缀就可以了
-task:搜索算法,默认为blastn,
-evalue:保留序列的evalue值,默认10.0
-out:输出文件名称
-outfmt:输出格式,总共有12种格式(1-12)
-num_threads:设置线程数,默认为1
-max_hsps:根据evalue,为每query-subject对保留最大 HSP(对齐)数,其保证输出中每个query-subject对是唯一
-num_descriptions:显示此数量的数据库序列的单行描述结果,默认500
-num_alignments:显示此数量的数据库序列的比对结果,默认250
-max_target_seqs:显示此数量对齐(query)序列的比对结果,默认500,与num_descriptions 或 num_alignments 不兼容,作用于outformt>4

五、使用注意

《Misunderstood parameter of NCBI BLAST impacts the correctness of bioinformatics workflows》这篇文章所说-max_target_seqs输出的并不是最优匹配的一条结果,其输出取决于序列在数据库中出现的顺序。

  • 文章链接:https://academic.oup.com/bioinformatics/article/35/9/1613/5106166

  • max_target_seqs参数设置为1,使用同一query序列比较两个不同排列顺序的subject序列,输出结果不同。

blastn -query query.fasta -db subject1 -num_threads 20 -outfmt 6 -out result1.txt -max_target_seqs 1
blastn -query query.fasta -db subject2 -num_threads 20 -outfmt 6 -out result2.txt -max_target_seqs 1
  • Result:

  • fig3.png
  • 结论:目前blast无法进行(query)最佳匹配的输出,需要自己构建脚本进行筛选,如果只是根据e-value值简单筛选,可以输出比对结果后使用awk '!a[$1]++{print}' result.txt > uniq_result.txt,筛选每个query的最佳匹配(最小e-value值)。

  • -num_alignments 1 输出的不是每一条subject序列的最佳匹配(当数据库中有多条可匹配序列且每条序列有不同潜在匹配时,其输出最先匹配到的那条序列的几个匹配)

六、输出格式

1 = query-anchored showing identities,
2 = query-anchored no identities,
3 = flat query-anchored, show identities,
4 = flat query-anchored, no identities,
5 = XML Blast output,
6 = tabular 表格
7 = tabular with comment lines 带有注释行的表格
8 = Text ASN.1 文本 ASN.1
9 = Binary ASN.1 二进制 ASN.1
10 = Comma-separated values 逗号分隔的值
11 = BLAST archive format (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

outfmt6格式说明:选项 6、7 和 10 还可以生成由空格分隔的自定义格式。
Query id:查询序列ID标识
Subject id:比对上的目标序列ID标识
% identity:序列比对的一致性百分比
alignment length:符合比对的比对区域的长度
mismatches:比对区域的错配数
gap openings:比对区域的gap数目
q. start:比对区域在查询序列(Query id)上的起始位点
q. end:比对区域在查询序列(Query id)上的终止位点
s. start:比对区域在目标序列(Subject id)上的起始位点
s. end:比对区域在目标序列(Subject id)上的终止位点
e-value:比对结果的期望值,将比对序列随机打乱重新组合,和数据库进行比对。如果功能越保守,则该值越低;越高说明比对的高得分值是由GC区域,重复序列导致的。
bit score:比对结果的bit score值

你可能感兴趣的:(BLAST(2.12.0+)使用记录)