参数
仅仅运行blast的基本运行命令,得到的结果往往不能清晰准确的表示出有用的信息。最大的问题就是有太多的冗余,很多很短的比对都会出现在输出结果中,导致结果杂乱无章。例如:
Sequences producing significant alignments:
Contig3421
Contig3424
Contig3423
Contig3314
……
>Contig3423
Score = 30.2 bits (15), Expect = 4.9
Query: 571
Sbjct: 103697 aaagaataaaattat 103711
可以很明显的看出,query序列和Contig3423的比对结果不能表示两条序列的相关性。事实上这个比对结果只是一个偶然出现的重复。这样的结果不但会浪费大量的运算和存储资源,更给结果分析带来了沉重的负担。为了处理杂乱无章的比对结果,满足各种比对需求,blast设置了很多参数来限制比对的范围和输出的形式。以下多数结果以blastn举例,如不做特殊说明,这些参数适用于所有比对方式。
1.-e参数:
-e(value)参数是用来过滤比对较差的结果的,用"-e"参数指定一个实数,blast会过滤掉期望值大于这个数的比对结果。这样不但简化了结果,还缩短了运行时间和结果占用的空间。比如在上一个例子中,在命令行中加上限制期望值:
blastall -i query.fasta -d db.seq -o blast.out -p blastn -e 1e-10
那么结果中就会只剩下比对较好的结果:
Sequences producing significant alignments:
Contig3421
Contig3424
……
通常,对于不同物种间的比对,期望值设在1e-5左右即可;而对于同源性较高的物种或者同种的比对,可以适当将期望值调得更小来过滤垃圾结果。比如同一物种cDNA和染色体的比对,参数可用1e-10或更高。
2.-F参数:
-F(T/F)参数是用来屏蔽简单重复和低复杂度序列的。如果选"T",程序在比对过程中会屏蔽掉query中的简单重复和低复杂度序列;选"F"则不会屏蔽。缺省值为"T"。例如,我们将如下含有两段简单重复的序列自己和自己进行比对(重复区用小写字母表示):
>test1
TACAATAAATAAAAAAGAGCTGTCTACAGTCTTTTcgcgcgcgcgcgT
CACTATACAtttttttGTTTGTTCTTCTCAATTTAGGAAACTCAATGA
AACTATTATTACCAGTAAATACAAGTAATAC
第一次比对采用缺省参数:
blastall -i test.seq -d test.seq -o test.blast -p blastn -e 1e-5
得到的结果:
>test1
Score =
Query: 1
Sbjct: 1
Query: 61
Sbjct: 61
Query: 121 aactattattaccagtaaatacaagtaatac 151
Sbjct: 121 aactattattaccagtaaatacaagtaatac 151
……
第二次运行采用参数“-F F”:
blastall -i test.seq -d test.seq -o test.blast -p blastn -e 1e-5 -F F
得到的结果:
>test1
Score =
Query: 1
Sbjct: 1
Query: 61
Sbjct: 61
Query: 121 aactattattaccagtaaatacaagtaatac 151
Sbjct: 121 aactattattaccagtaaatacaagtaatac 151
比较两个结果,我们看出使用缺省参数的比对结果损失了一部分信息,得到的统计结果也出现失真,期望值和identity都没有反映出真实情况。有时较长的重复序列甚至会导致比对终止。加了"-F F"就保证了比对结果的完整性。通常在大规模、低精度的比对中,往往用缺省参数,这样能避免程序把过多的时间浪费在无意义的简单重复上,提高运行速度;而在小规模、高精度的比对中,需要加上参数"-F F",保证比对的精确度和完整性。
3.-m参数:
“-e”参数能够做到筛选适当的比对结果,但是即使如此,blast的输出结果仍然非常庞大并且难以处理。为了精简输出、节省存储空间、实现更多功能并使结果易于处理,blast提供了参数“-m (integer)”来设定输出格式,可供选择的值为0~11之间的整数,缺省为0。下面就通过实例逐个解析“-m”参数能够实现的输出功能。
输入文件的内容(针对-m 0到-m 7),其中:加粗的区域是三条序列的重合位置,注意subject1多一个碱基。
query.fasta:
>query1
TACAATAAATAAAATAGAGCTGTCTACAGTACTTTTTCAGGAACTCCT
CACTATACAtttttttGTTTGTTC
AACTATTATTACCAGTAAATACAAGTAATAC
database.fasta:
>subject1
TCCTTCAGAAGTAAAGCACTATAC
AATGAACAATGAATAC
>subject2
AATTTAGGAAACTCAATGAACAATGAATACGAACTATTATTACCAGTAAATACA
输出:
-m 0:缺省参数,显示一个query和一个subject两两比对的信息。
>subject1
Score = 93.7 bits (47), Expect = 1e-24
Query: 45
Sbjct: 1
……
-m 1:显示query在所有subjects上的定位信息,并显示一致性比对信息,subject之间不同的碱基会被标出。
Sequences producing significant alignments:
subject2
subject1
QUERY 45
1
0
……
-m 2:显示query在所有subjects上的定位信息但是不显示一致性比对信息,subject之间不同的碱基会被标出。
Sequences producing significant alignments:
subject2
subject1
QUERY 45
1
0
……
-m 3:显示query在所有subjects的定位和一致性比对信息,不显示subjects之间的差异。
Sequences producing significant alignments:
subject2
subject1
QUERY 45
1
0
……
-m 4:显示query在所有subjects上的定位信息但是不显示一致性比对信息,不显示subjects之间的差异。
Sequences producing significant alignments:
subject2
subject1
QUERY 45
1
0
……
-m 5:显示query在所有subjects上的定位信息但是不显示每个碱基的比对信息,补充"-"对齐比对区域,subjects之间不同的碱基会被标出。
Sequences producing significant alignments:
subject2
subject1
QUERY 45
1
0
……
-m 6:显示query在所有subjects上的定位信息但是不显示每个碱基的比对信息,补充"-"对齐比对区域,不显示subjects之间的差异。
Sequences producing significant alignments:
subject2
subject1
QUERY 45
1
0
……
-m 7:输出XML格式的blast结果。
……
-m 8:列表格式的比对结果。从左到右各列的意义依次是:query名、subject名、identity、比对长度、错配数、空位数、query比对起始坐标、query比对终止坐标、subject比对起始坐标、subject比对终止坐标、期望值、比对得分。
query1 sub24
query1 sub21
query1 sub21
query1 sub21
query2 sub21
query2 sub21
query2 sub21
query2 sub21
query2 sub14
query2 sub24
query2 sub24
在m8格式中通过subject的比对起止位置可以判断出序列的比对方向。比如上述结果中第1行,subject的起始坐标小于终止坐标,则两条序列是同方向比对上的;第2行中subject起始坐标大于终止坐标,则query序列是和subject的互补链比上的。
-m 9:带注释行的列表格式。格式和-m 8一样,只是在每个query的比对结果前面加了注释行用以说明列表中各列的意义。
# BLASTN 2.2.8 [Jan-05-2004]
# Query: query1
# Database: database.seq
# Fields: Query id, Subject id, % identity, alignment length, mismatches, gap openings, q. start, q. end, s. start, s. end, e-value, bit score
query1 sub24
query1 sub21
query1 sub21
query1 sub21
# BLASTN 2.2.8 [Jan-05-2004]
# Query: query1
# Database: database.seq
# Fields: Query id, Subject id, % identity, alignment length, mismatches, gap openings, q. start, q. end, s. start, s. end, e-value, bit score
query2 sub21
query2 sub21
query2 sub21
query2 sub21
query2 sub14
query2 sub24
query2 sub24
-m 10和11:分别是ASN格式的文本文件和二进制文件,这里就不做介绍了。
“-m”参数的值从1到6都是为了便于在subjects之间做比较而设立的功能;8和9保留了所有比对结果的原貌,只是统计成了列表的格式,从而大幅度降低了存储空间的消耗,并使结果更加清晰易读。但是m8/m9格式也有相应的缺点,就是损失了一部分比对信息,除了序列长度信息和比对条形图以外,还会在blastx、tblastn和tblastx的比对中损失关键的相位信息,这是要尽量避免的。因此在大规模的blastn比对任务中,往往要采用m8格式的输出结果来节省空间;而在小规模高精度比对中,通常用默认的输出格式,再用其他程序来提取结果中的有用信息。
4.-v参数和-b参数:
这两个参数都是限制输出结果的数量的。
-v (integer):规定输出中每一个query的比对列表最多显示subject个数(即"Sequences producing significant alignments:"后面列出的subjects数目),缺省为500条。
-b (integer):规定输出中每个query最多显示与多少条subject的比对条形图(即每条query的结果中">"的个数),缺省为250条。
如果同时使用"-m 8"参数,则输出结果中的subjects数量和"-b"参数规定的数量一致。
在database数据中能和query比上的subjects过多的时候,这两个参数就能够帮助我们把其中比对结果最好的一部分挑出来,屏蔽掉相对差的结果。当然有些时候我们是不希望屏蔽掉这些结果的,比如在某个大基因组的Contig数据集中统计一条转座子的重复次数,就需要把"-v"和"-b"参数定的足够大以显示所有结果。
5.-T参数:
-T (T/F)参数用于决定是否输出html格式的比对结果,缺省值为"F"。选择"-T T"就会输出html格式的比对结果。如果在建库过程中选择了"-o T",并且database数据中的序列是以gi号命名的,那么在html结果中以gi号命名的相应序列会自动链接到NCBI的数据库上。如图3-14:
图3-16 html格式的blast结果
做有关蛋白的比对时,需要用"-M"参数指定取代矩阵,比如BLOSUM45、BLOSUM62、BLOSUM80等,缺省值为BLOSUM62。这三个矩阵都可以在blast安装目录的da
#
#
#
#
#
#
A
R -1
N -2
D -2 -2
C
Q -1
E -1
G
H -2
I -1 -3 -3 -3 -1 -3 -3 -4 -3
L -1 -2 -3 -4 -1 -2 -3 -4 -3
K -1
M -1 -1 -2 -3 -1
F -2 -3 -3 -3 -2 -3 -3 -3 -1
P -1 -2 -2 -1 -3 -1 -1 -2 -2 -3 -3 -1 -2 -4
S
T
W -3 -3 -4 -4 -2 -2 -3 -2 -2 -3 -2 -3 -1
Y -2 -2 -2 -3 -2 -1 -2 -3
V
B -2 -1
Z -1
X
* -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4
7.-W参数:
-W(integer):指定做比对时的“字”的长度。缺省值是0(代表blastn的搜索字长为11,megablast是28,其他是3)。这个参数多数时候不用调整,但是需要做短序列的比对时,可能要适当调短字长,来增加比对的敏感度。
以上为blastall 的常用参数,对于一些不常用的参数,可以查找blast的参数表,此参数表可以通过直接运行blastall得到。
评论