下面这个报错信息较常见,但是如果每一条bam记录都是这样,就不常见了,我这两天遇到了这种情况。
先看看正常情况下是如何报错的:
WARNING: Query SRR3286802-24999 is marked as paired, but its mate does not occur next to it in your BAM file. Skipping.
之所以这样报错,是因为SRR3286802-24999的两条reads(/1, /2)只有一条reads比对成功了,而另一条reads没有比对成功,所以在bam文件中没有mate的记录。
而异常情况下,是每一条记录都这样报错:
bedtools bamtofastq -i SRR3286802.namesort.bam -fq PE1.fq -fq2 PE2.fq # bamtofastq要求先按照reads name排序
WARNING: Query SRR3286802-1-1 is marked as paired, but its mate does not occur next to it in your BAM file. Skipping.
WARNING: Query SRR3286802-1-2 is marked as paired, but its mate does not occur next to it in your BAM file. Skipping.
从这儿应该可以看出区别了,bam中reads的名称不一样,上面SRR3286802-24999去掉了原始fq中reads名称后缀(/1, /2),而SRR3286802-1-1、SRR3286802-1-2在bam中都保留了后缀(-1, -2)。
那为什么都是比对,得到的bam文件有的去掉后缀,有的没有。原来啊,是软件可以自动识别以下的命名,在得到bam文件中,去掉后缀。
测序下机数据对fastq中reads的有规则的命名,如
@CL100072545L1C001R001_6/1
@CL100072545L1C001R001_6/2
@ST-J00123:99:HTYTJBBXX:4:1101:1763:1455 1:N:0:ATGTCA
@ST-J00123:99:HTYTJBBXX:4:1101:1763:1455 2:N:0:ATGTCA
及自定义的命名
@SRR3286802-1/1
@SRR3286802-1/2
而对于SRR3286802-1-1这类自定义的命名是不能自动去掉后缀的。换句话说,在bam中,PE1和PE2两条reads的名称应该是一样的。这一点也是自己做比对这么久没怎么留意的。
那从sra文件中解压fastq的时候,怎么定义fastq中reads的名称呢?额外加上
fastq-dump --defline-seq '@$ac-$si/$ri'
这个选项,之前 '@$ac-$si/$ri'
这里没注意写的'@$ac-$si-$ri'
,才引发了接下来的惨案(对于双端数据,cufflinks要求bam中read和mate的ID相同,不然影响结果,而trinity要求fastq中以/1 /2为reads后缀不然无法运行)。
不过话说回来,做双端数据的时候,用的是下机数据,做SRA数据的时候,用的是单端数据。所以以上bam转fastq一直WARNING的问题直到今天才遇到,这几天用双端数据学转录组才真正意识到这个问题的重要性。
网友评论