..微笑着看着杯中的花茶一片片撑开.. ..透明的花瓣里水破开的声音很轻微..
分类: 信息化
2016-06-30 17:53:29
本文翻译自CAP3自带的说明文档,由于水平有限,文中尚有存在疑义的地方,阅读时请参照原文进行解读。
若使用CAP3请引用文章:
Huang, X. and Madan, A. (1999)
CAP3: A DNA Sequence Assembly Program,
Genome Research, 9: 868-877.
我们在以下几方面对CAP序列组装程序进行了改进
1. 使用了正向-反向约束来校正组装错误和Contig的链接。
2. 在reads的组装中使用了碱基质量值。
3. 自动裁剪reads 5'和3'端的低质量区域。
4. 生成用于Consed所需的ace格式文件的组装结果。
5. CAP3可以用于Staden包中的GAP4中。
改进版的程序叫CAP3.
这些改进允许CAP3可以用错误更多、长度更长的序列生成更为精确一致的序列。
正向-反向约束一般产生自一个子克隆的两个末端的测序。
正向-反向约束指的是DNA链上处于指定距离内的相对应的链上的两个reads。
CAP3 使用大量的正向-反向约束来定位reads并校正在(序列组装)排布中的错误。
这个能力使CAP3能够解决由于重复序列所产生的组装错误。
CAP3也使用这种约束来连接被空位分开的Contigs。
这个特性会为修整序列的人提供有用的信息。
CAP3中使用的算法允许由命名错误或追踪错误导致的错误约束(匹配)。
CAP3在构建reads的比对以及为每个Contig生成一致序列的过程中使用了碱基质量。
这允许程序同时使用一个碱基位置上碱基的质量值和该位置上的覆盖度来改进当前位置碱基一致性的精度。
CAP3中的比对方法对reads的错误率有较高的容忍度。
CAP3裁剪掉reads5'和3'端的低质量区域,只适用高质量区域进行组装。因此不需要事先进行裁剪。需要注意的是使用CAP3前,reads中的载体序列必须先去掉。
CAP3使用FASTA格式的序列文件作为输入。如果reads的名字包含“.”,CAP3要求来自同一子克隆的reads的名字在第一个点之前的字符要保持一致。
CAP3有两个可选的文件:一个是以FASTA格式存储的包含碱基质量的文件;一个是正向-反向约束文件。
碱基质量的文件名需要以“.qual”为后缀结尾,正向-反向约束的文件名需要以“.con”为后缀结尾。
CAP3使用的质量文件的格式同Phrap一样。
约束文件的每一行指定一组正向-反向约束,格式如下:
ReadA ReadB MinDistance MaxDistance
ReadA和ReadB是两个reads的名字,MinDistance和MaxDistance是碱基对儿间的距离(整数)。
如果在一个Contig上,正向的ReadA出现在反向的ReadB之前,或者正向的ReadB出现在反向的ReadA之前,并且二者间的距离在MinDistance和MaxDistance之间,则这一约束就是满足条件的。
更多的使用这些约束信息将使CAP3干的更漂亮! ;)
我们有一个叫做formcon的分割程序来从序列文件中生成约束文件。这个程序以一个FASTA格式的序列文件和两个整数(最小距离和最大距离)作为输入。最小距离和最大距离在子克隆的长度内分别指定一个下限和一个上限。它为CAP3生成一个正向-反向约束文件。
一对正向和反向的reads的名字中至少包含一个“点”,并且在第一个“点”之前的部分需要一致。
由于CAP3使用的reads,其末端是由原始的reads经过剪切得到的,要估算他们的距离的话,CAP3所识别到的距离与插入的值可能存在1000到1500bp的差异。例如,如果插入的值是2000至3000bp,我们推荐你使用500作为最小距离,4000作为最大距离。这个结果在以“.con”结尾的文件中。
CAP格式的组装结果将被发送到标准输出,需要将其定向到一个文件中(译者注:例如在终端中使用“> result.out”导入到名为result.out的文件中)。要注意的是reads上被剪切掉的5'和3'序列不在CAP3格式中输出。
CAP3还生成“.ace”格式的组装结果。
这使得CAP3的输出结果可以用Consed浏览。
要注意的是ace格式的输出中包含reads上被剪切掉的5'和3'序列。
CAP3在“.contig”文件中保存组装好的一致序列以及在“.contigs.qual”文件中存储它们的质量值。未被用于组装的Reads被放在“.singlets”文件中。关于组装的其它信息在“.info”文件中。
CAP3程序报告每个每对儿约束是否合适。这个报告在“.results”文件中。一个简单的报告文件如下:
CPBKY55.F CPBKY55.R 500 6000 3210 satisfied
CPBKY92.F CPBKY92.R 500 6000 497 unsatisfied in distance
CPBKY28.F CPBKY28.R 500 6000 unsatisfied
CPBKY56.F CPBKY56.R 500 6000 10th link between CPBKI23.F+ and CPBKT37.R-
CPBKY70.F CPBKY70.R 500 6000 4th overlap between CPBKM47.F+ and CPBKN28.R-
前四列来自约束文件。
第一行表明这对儿约束是合适的,两个reads间的真实距离在第五列中给出。
第二行表示这对儿约束距离上不合适,也就是说这两个reads是在一个Contig的相反方向,但是它们的距离超出了指定的范围(在第五列中给出了值)。
第三行表示这对儿约束是不合适的。
第四行表示是这对儿约束是将这两个Contig联系在一起的第十个链接,Contig CPBKI23.F 3'端的read是正向的,链接的Contig CPBKT37.R 5'端的read是反向的。这个信息建议两个Contig应该通过中间插入的空位链接在一起。
第五行表示这对儿约束是支持CPBKM47.F和CPBKN28.R间存在重叠的第四个约束。这个重叠不能用于当前的组装。
CAP3 在Sun Ultra1用20至60分钟的时间组装一个cosmid或BAC数据集。
CAP3程序可以通过电子邮件xqhuang@cs.iastate.edu向Xiaoqiu Huang索取。
CAP3的文档可以在找到。
用法: cap3 File_of_reads [可选参数]
File_of_reads 是一个包含FASTA格式的DNA reads文件。
如果reads文件的名字为xyz,那么质量值的文件必须命名为xyz.qual,约束文件命名为xyz.con。
选项(默认值):
-a N 指定read重叠比对时对角线条带可延伸的大小N > 10 (20)
-b N 指定碱基有差异处的质量阈值N > 15 (20)
-c N 指定需要裁剪的碱基质量的阈值 N > 5 (12)
-d N 指定一个重叠区段中差异碱基的qscore总和的最大值 N > 100 (200)
-e N 指定一个重叠区段中额外的差异碱基的最大数量N > 10 (20)
-f N 指定重叠区段中最大的空位长度 N > 10 (300)
-g N 指定空位处的罚分 N > 0 (6)
-h N 指定重叠区段的突出部分最大的百分比长度N > 5 (20)
-i N 指定片段对儿的得分阈值 N > 20 (40)
-j N 指定链的得分阈值 N > 30 (80)
-k N 指定是否进行末端剪裁 N >= 0 (1)
-m N 指定碱基匹配处的得分 N > 0 (2)
-n N 指定碱基错配处的得分 N < 0 (-5)
-o N 指定重叠区段的最小长度 > 15 (40)
-p N 指定重叠区段匹配碱基的百分比N > 65 (90)
-q N 用于组装的reads长度是否大于等于30kb N >= 0 (0)
-r N 指定是否考虑使用反向reads进行组装 N >= 0 (1)
-s N 指定重叠相似度得分的阈值N > 250 (900)
-t N 指定word出现的最大数量N > 30 (500)
-u N 指定用于校对的约束的最小数量N > 0 (4)
-v N 指定用于连接的约束的最小数量N > 0 (2)
-w N 指定用于裁剪信息的文件 (none)(手工指定reads的crange和gdepth的文件)
-x N 指定输出文件名称的前缀 (cap)
-y N 指定需要裁剪的范围N > 5 (100)
-z N 指定需要裁剪处高质量reads的最小深度N > 0 (2)(即达不到则裁剪)
如果没有给定的质量文件,那么每个碱基的默认质量值为10。
以下部分解释了CAP3的各参数。
如果给定选项-k 0,那么没有read的末端不会被裁剪,整个read都将用于序列的组装。否则,以下步骤将用于决定和裁剪read低质量的末端。
CAP3同时使用碱基质量值和相似度信息来计算每个read要裁剪的位置。一个read的低质量末端区域的裁剪是由三个参数来控制的:质量阈值qualcut,裁剪区域crange和碱基高质量区域的覆盖深度gdepth。
qualcut的值由“-c”选项指定,crange由“-y”选项指定,gdepth由“-z”选项指定。
如果有质量值,CAP3计算read f上的两个位置qualpos5和qualpos3,read f上从qualpos5到qualpos3之间的区域主要由质量高于qualcut的碱基构成。如果没有质量值,qualpos5设为1而qualpos3设为read f的长度。
Read f左侧的裁剪区域是从1到qualpos5+ crange的范围,右侧的裁剪区域是从qualpos3 - crange到read f的末端。Read f左右的裁剪位置处好的一侧的覆盖区域的最小深度设为gdepth。
对以qualpos5 + crange为末端的read f的原始区域来说,设 realdepth5为其重叠区段的最大真实深度,设depth5小于realdepth5和gdepth。
如果depth5是0,那么read f左侧的裁剪位置由CAP3设为qualpos5。参数crange的值对read f来说太小的话。CAP3会在.info文件的开始处报告“read f的5'裁剪区域没有发现重叠。”如果在给定的5'裁剪区域内存在重叠,CAP3将对每个重叠区段报告一个新的裁剪区域。一个报告过的区域值可以用作为参数crange新的值。如果CAP3报告“Read f 没有发现重叠”,那么read f将不会被用于组装。要将read f用于组装就必须给出一个更大的裁剪范围。
如果 depth5大于0,read f的左侧裁剪位置的最小值为x,那么x小于qualpos5 + crange。并且read f从x位置处开始的区域与其它depth5值相同的read相似。
CAP3对read f右侧裁剪位置的计算与之类似。Crange和gdepth参数值较大时会导致对低质量末端区域更多的裁剪。Crange值较大时允许CAP3在一个较大的区域内搜索左侧的裁剪位置。Gdepth值较大时会引起CAP3修建更多的碱基以至于由read f得来的高质量序列部分会与更多的read相似。
用户可以在一个文件中为单独的read指定crange和gdepth参数的值。文件的每一行格式如下:
ReadName crange5 gdepth5 crange3 gdepth3
其中 ReadName是一个read的名字,crange5和gdepth5是5'末端的值,crange3和gdepth3为3'末端的值。
该文件通过“-w”参数指定给CAP3。
程序决定两个read间重叠部分比对时对角线条带长度的最小值。这个条带可以由用户通过“-a”参数指定的碱基数量来进行扩展。
(译者注:参考序列比对中的点阵法。点阵矩阵中,两条序列中相同的部分会沿对角线方向构成连续的条带。两条有重叠区的序列,在重叠部分即形成对角线条带。)
Reads间的重叠通过多种度量来评估。
第一种度量是基于碱基质量。
如果一个重叠在碱基质量较高的情况下仍包含大量的差异碱基,那么这个重叠就被移除。设b为碱基质量的阈值而d是差异碱基的最大分数。这两个参数的值可以使用“-b”和“-d”选项来设定。如果重叠区段包含一个差异的碱基,该位置的碱基质量为q1和q2,那么这个差异位置的分数为max(0, min(q1, q2) - b)。一个重叠区段的差异分数为每个差异的分值的总和。
例如,一个重叠区段中有两个位置有差异,其中一处的碱基质量分别为15和30,而另一处的碱基质量为40和50。在b=20的情况下,该重叠区段的差异分数为0 + 20 = 20。如果一个重叠区段的差异分数超出了d,那么这个重叠区段就被移除。当b=20时,一个带有15个差异的重叠区段其碱基质量为40或者更高,那么它的差异分值至少会有300,如果d被设为250的时候,这个重叠区段就将被移除。
第二种度量为一个重叠所包含的额外差异碱基的数量。
如果一个重叠中的差异的数量高于预期,那么这个重叠就会被移除。
设一个整数e为额外差异碱基的最大数量。
若read f和g间存在一个段重叠区。设r1为read f中重叠部分差异碱基的估计数量,r2为read e中的该值。如果重叠区域中观察到的差异碱基的数量高于r1 + r2 + e,那么这个重叠就会被移除。
参数e的这个值可以通过设定“-e”选项来改变。
重叠中差异的预期数量为r1 + r2。
将e设定为一个较小的值会导致较多的重叠被移除。
第三个度量是基于重叠区的相似度得分。
一个比对后的重叠区的相似度得分是用碱基质量值来定义的。设m为匹配的得分因子,设n为错配得分因子,设g为空位罚分因子。
这些参数的值可以通过“-m”“-n”“-g”选项来设定。
一个碱基质量为q1和q2的匹配位置,该处的得分为m* min(q1,q2)。
一个碱基质量为q1和q2的错配位置,该处的得分为n * min(q1,q2)。
一个碱基质量为q1的空位,该处的得分为-g * min(q1,q2),这里的q2是其它序列上对应该空位处的碱基的质量值。一个空位的得分等于每个碱基得分减去一个空位罚分后的总和。一个重叠区比对的相似度得分为每个匹配得分、错配得分和空位得分的总和。当m=2时,一个由25个质量为10的完全匹配的碱基构成的重叠区,它的得分为500。如果一个重叠区的相似度得分小于重叠相似度得分的阈值,那么这个重叠会被移除。
对一段重叠区的第四个要求是:重叠区的长度(bp)不小于设定的阈值。这个参数的值可以通过“-o”选项来改变。
对一段重叠区的第五个要求是:重叠区中匹配碱基的百分比不小于设定的阈值。这个值可以通过“-p”选项来改变。P值为75表示0.75或75%。
这个程序为使用者提供了一个参数(-f选项)来排除带有长空位的重叠区。设一个整数f为一段重叠区中空位的最大长度。那么程序将排除任意带有长度超过f个空位的重叠。这个参数可以通过“-f”选项来改变。注意,这个参数过小的话将导致程序移除真实的重叠并产生错误的结果。
使用者可能会将“-f”选项用于分割来自选择性剪接的reads并分配到不同的contig中。
美国基因组研究所的Geo Pertea建议将这个选项添加到程序中。
一个重叠区段中不同突出区域的总长度通过“-h”选项来控制。一个重叠区段中的突出区域是指重叠区段前面或后面有差异的末端区域。
一个重叠区的突出部分的百分比长度定义为重叠区中存在差异的突出部分的总长度除以重叠区段的长度后乘以100。如果一个重叠区段的突出部分百分比长度大于设定的最大值,则将被排除。
一些参数的默认值是用于组装长度500到1000bp的常规reads的。对于组装长度20bp的短reads,应采用以下参数。
-i 30 -j 31 -o 18 -s 300
注意:使用短reads会增加错误组装的可能性。下面我们解释下针对短reads的选项。
通过寻找成对儿的片段(segment pairs)并将片段对儿整合到链上,reads间的重叠区段会被快速的计算。
(译者注:segment pair是一段没有空位的比对,它通过搜索指定长度的精确匹配来初始化计算,并尽可能的向两侧扩展这个匹配。CAP3通过使用一个特定的界定字符将全部输入的ESTs连接成一个长的字符串,然后在每个能对的上连接后的字符串的序列中快速的识别出含有成对儿片段的高分链。)
-i选项用于指定成对儿片段的得分阈值。一个含有19个匹配的碱基和1个错配的碱基的成对片段,其得分为2 * 19 + (-5) * 1 = 33,每个匹配的碱基得2分,每个错配的碱基得-5分。
-j选项为位于链上的所有成对儿片段指定一个得分阈值。一个链的得分为每个成对儿片段得分的总和减去各片段对儿之间的空位罚分。只有一个成对儿片段的链的得分就是该片段对儿的得分。
两个reads间所有成对儿片段的所对应的高分链被算出后,reads间的重叠部分将通过计算reads间的局部最优比对而得到,这个链被用于将计算限制在动态规划矩阵的最小区域。
不同于片段对儿和链的得分,一个重叠区段的得分通过碱基质量来进行加权。因此,假设每个碱基的质量值为10时,一个由19个匹配碱基,1个错配碱基和0个空位构成的重叠区段的得分为10 * [2 * 19 + (-5) * 1] = 330。
-o选项用于指定重叠长度的阈值,而-s选项用于指定重叠的得分阈值。
-r选项用于设定CAP3在组装时是否考虑reads的反向序列。该选项的默认的值为1,表示在组装时也考虑read的反向序列。将-r指定为0时,命令CAP3只将reads按正方向进行组装。这个选项是由Patrick Schnable实验室提供的建议。
这个参数(选项-t)允许使用者在牺牲效率的前提下提高组装精度。对于一个reads f,程序通过考虑短的word匹配计算read f和其它read间的重叠区段。一个匹配的word被检查是否可以延伸为一个较长的重叠区段。如果read f同许多其它的reads间存在重叠,那么read f则同许多其它reads间存在许多短的匹配的word。
对于任意的word,这个参数为read f同其它reads间匹配的word数量提供了一个上限。对这个参数设定一个较大的值将允许程序在read f和其它reads间考虑更多匹配的word,这使得可以为read f找到更多的重叠,但降低了程序的运行速度。使用较小的值将取得相反的效果。当数据可以支持较高的覆盖度时,可以将该参数设的更大些。例如,当数据的最大覆盖度为30时,可将该值设为150,而最大覆盖度为100时,可将该值设为500。将该值设置的非常大时将导致程序运行个没完或者内存爆表。
使用正向-反向约束来校正序列的组装。设一个整数u为用于校正的约束的最小数量。考虑当read f和g之间存在一个可选的重叠区段的情况时,假设f在contig C1中,g在contig C2中。在f和g间用于支持重叠的约束中,如果不合适的约束数量超过u参数与合适的约束的数量之和,那么当前包含f和g的这个链接就不存在,f和g间的重叠会被执行。这个参数的值可通过“-u”选项来改变。
程序会报告由正向-反向约束所链接的contigs。
可以通过“-v”选项来指定用于报告两个contig间的一个链接的最小约束数量。
所有输出文件的名字都包含一个统一的前缀。不同的前缀可以通过“-x”选项来指定。
这个特性是由Harley Gorrell建议的。
如果一个序列的长度超过30kb,那么你可以使用“-q 1”选项来用一个较慢的模型进行组装。程序运行缓慢是因为需要使用动态规划算法的完全矩阵来计算长序列间的重叠。
感谢 John Quackenbush, Geo Pertea和Feng Liang为改进CAP3提供了许多建议,Jun Qian提供了对ace格式的输出以及其它方面的帮助,Kathryn Beal为将CAP3整合在GAP4中提供了建议,Tim Hunkapiller和Granger Sutton参与了讨论,Bruce Roe和Granger Sutton提供了序列数据,Sanzhen Liu和Pat Schnable建议加入-i, -j, -k的选项。这个项目由NHGRI的NIH Grant R01HG01502-02提供支持。
翻译 by 斑斑 [QQ:23920620]
欢迎来QQ群178750864交流有关生物信息学的相关内容