用bwa对一个自己构建的模拟数据进行比对的时候,发现bwa sampe过程中直接error跳出,报错:paired reads have different names。但是我去检查了一下报错的两条reads,这两个名字确实是一致的,并且在两fq文件中的位置一致。
网上搜了一些原因,发现了这个讨论:https://github.com/lh3/bwa/issues/228。感觉这个比较靠谱:
于是我先下载了fastq tools,打算用fastq-sort先确保一下文件是排序过,fq1和fq2名字是完全对应的。
代码语言:javascript复制 fastq-sort test_pe_100.fq1 > test_pe_100_sort.fq1
fastq-sort test_pe_100.fq2 > test_pe_100_sort.fq2
重新运行bwa aln和bwa sampe,发现还是报错。并且在bwa aln fq2的时候,我发现最后有这么一条: [bwa_sai2sam_pe_core] 913812 sequences have been processed. 这里处理的数据与我实际的数据不符,此处应该有920000条序列。所以应该是哪里构建的reads不对。
但是实在不知道哪里有问题,于是试着用截图中的第一种方法 BBtools去检查一下。
代码语言:javascript复制bash ~/bbmap/repair.sh in=${path}/test_pe_100.fq1
in2=${path}/test_pe_100.fq2
out1=${path}/renamed1.fq
out2=${path}/renamed2.fq
虽然没给我修复成功,但是中间报了一个错误,让我知道是咋回事了。报错提示的是,fq1和fq2中的某对reads长度不一致。 检查了一下发现真的是不一致。 最后重新构建了一遍数据,bwa比对就没再报错了。
bwa的sampe和mem都可能会出现这个错误,当这个错误出现时,可能存在有以下原因: 1) fq1和fq2的reads名字不一致; 2)fq1和fq2对应reads的长度不一致; 3)fq1和fq2中的reads顺序不同 ......