当前位置:首页 > 组装组参考文档version1
附录二 纠错流程
1 纠错策略
建立高频kmer表.。
遍历reads, 在一个read上找到一个连续高频kmer最多的一个区域,做为下一步动态规划的起始点S。
从S向左向右遍历,如下图所示:
read S Kmer ,X=A kmer??,X??=A, X??=A … kmer??,X??=T, X??=A … kmer??,X=T kmer??,X??=A, X??=T … kmer??,X??=T, X??=T
以向左遍历为例:在S左端取n-1长度的序列Ni,其中n为kmer的长度。当Xi依次
为A,C,G,T四种碱基时,考察kmeri= Xi+Ni是否为高频kmer,, 若kmeri是高频则存入table,初始化其上游指针为NULL,若当前Xi的值与对应位点read上的碱基一致,则其scorei=0,否则scorei=1。在kmeri左端取n-1长度的序列Ni?1,考察kmeri?1= Xi?1+Ni?1
是否为高频 ,, 若kmeri?1是高频则存入table,初始化其上游指针指向kmeri,若当前Xi?1的值与对应位点read上的碱基一致,则其scorei?1= scorei,否则scorei?1= scorei+1。继续上述迭代,迭代结束后,遍历table找到一条分数最低的路径作为最优解。
2 纠错流程
程序路径:
/share/data2/shizhb/workspace/MySoftware/assembly/correction/ 流程:kmerfreq -> unicorn -> merge_pair_lst.pl 1. kmerfreq
使用kmerfreq程序读入所有需纠错的文件(尽量挑取高质量无偏向性数据),统计kmer频数,生成频数表。 Usage:
kmerfreq [options]
-i
-q
-s
-n
-f
-l
-h -? Help
脚本 /share/data2/shizhb/workspace/MySoftware/assembly/correction/kmerfreq -i kmer.lst -o ant -f 1 -l 1 -n 0 >kmer.log 输出文件 ant.stat 和ant.freq 樊老师新纠错程序:
/ifs1/GAG/assemble/fanw/Assembly/source_codes/correct_error/correct_error_v1.0/
2. unicorn
使用unicorn程序读入需纠错的文件和频数表进行纠错。 Usage:
unicorn [options]
-i
-r
-n
-k
-e
-d
-s
-t
-l
脚本:/share/data2/shizhb/workspace/MySoftware/assembly/correction/unicorn -i corr.lst -r ant.freq -n 0 -f 1 -l 1 >corr.log 输出文件:corr.lst中的文件纠错后的*.corr文件。
3. 合并
使用merge_pair.pl或merge_pair_lst.pl程序将pair reads合并成一个文件。用merge_pair_lst.pl进行合并时 merge_pair_lst.pl和merge_pair.pl须放在同一目录下。 脚本:perl /share/data2/shizhb/workspace/MySoftware/assembly/correction/merge_pair_lst.pl corr.lst
corr.lst文件中,纠错后的reads1和reads2文件放在一起,read1在前,read2在后。
3 内存及时间损耗
kmerfreq程序kmer等于17mer的时候占用内存16G。 unicorn程序kmer等于17mer的时候占用内存16G。另外每个线程在处理一个文件的时候需要将该文件的所有reads读入内存。现在reads一般长度75bp, reads name 75个字节,每个文件至少25M个reads,那么一个文件要占4G左右内存。每个线程还有单独的动态规划表占1G内存。一个线程5G,unicorn程序默认开设4个线程要占36G。 merge_pair_lst.pl 程序所耗内存很少
kmerfreq程序统计kmer频数,输出频数表的耗时跟文件的多少和io状况有关。处理一个文件约需100s,african总共606个文件耗时15h。
unicorn程序可将所有需纠错文件拆分处理,处理一个文件约需1000s,100个文件4个线程耗时1000s*100/4 = 25000s = 7h。african 606个文件拆分成6份耗时7h。 African纠错总共耗时22h。
参考文献:http://soap.genomics.org.cn/about.html
附录三 Kmer分析总论 1 引言 Kmerfreq程序说明 程序功能: 统计测序read中kmer频数。 参数介绍: -k 设定kmer长度,建议设定为奇数,默认17,占用内存16G。 -a 将read从头截取长度。 -d 将read从尾截取长度。这两个参数根据实际测序质量进行调整。 -r 设定固定read长度,每个read仅仅截取该固定长度,用于提取kmer。建议-r和-d不要同时使用。 -n 设定输出最小kmer深度。只输出深度大于该值的深度频数列表。 -t 设定总碱基数上限,读取碱基数达到该值时不再读取文件。 基因组大小估计: 获得深度分布曲线和深度乘积曲线各自峰值深度,综合考虑估计准确峰值位置,然后根据公式:G=kmer_num/kmer_depth,估计基因组大小。 通过深度1处频数估计错误率,特异kmer数参考估计基因组大小。 输出图表: xx 17-mer depth distribution543210161116212631364146 1num kmer_num pkdepth genome_size used_base X node_num Xxx 306358 999579000 8 124947375 1189975000 9.5 101166945 其中1num为深度为1处的kmer频数,其余均由程序自身生成(*.log文件)。
共分享92篇相关文档