使用fastp+gencore的去重流程以及fgbio流程均是默认把dups删除,而不是类似picard MarkDuplicates以及sambamba那样把dups标记到flags值中。不过应该可以利用MarkDuplicates的–BARCODE_TAG来去重。
以index-umiA-template-umiB-index结构的双端 4bpUMI为例,首先将fastq(过滤adapter后)转为ubam
gatk FastqToSam -F1 cleanReads.R1.fq.gz -F2 cleanReads.R2.fq.gz \ -O Test.ubam \ -SM Test -PL illumina -PU Test
然后使用fgbio提取UMI,注意提取的结构是4M1S+T,即4bp UMI然后跳过1bp,剩余的均是Template
java -jar fgbio.jar ExtractUmisFromBam \ -i Test.ubam -o Test.umi.ubam \ -r 4M1S+t 4M1S+T -t ZA ZB -s RX
然后比对,由于fgbio默认Read Group 的ID是A,为了避免后续合并报错,比对时也将ID记为A,有需要更改的话,可以使用gatk AddOrReplaceReadGroups来更改
samtools fastq Test.umi.ubam \ | bwa mem -t 8 -p -R "@RG\tPL:illumina\tSM:Test\tID:A\tPU:Test" \ ref.fa /dev/stdin \ | samtools view -bSh - > Test.umi.bam
然后把ubam和bam合并,即把ubam中提取出的tag加入到bam中
gatk MergeBamAlignment \ -R ref.fa \ -ALIGNED Test.umi.bam -UNMAPPED Test.umi.ubam \ -O Test.umi.merge.bam \ --ALIGNER_PROPER_PAIR_FLAGS true \ --ATTRIBUTES_TO_RETAIN XS
接下来本来应该是使用fgbio来去重的,但是这里强行转到MarkDuplicates了
gatk MarkDuplicates \ -I Test.umi.merge.bam \ -O Test.marked.bam \ -M Test.dups.txt \ --CREATE_INDEX true \ --BARCODE_TAG RX
又或者用GATK中的实验流程UmiAwareMarkDuplicatesWithMateCigar来去重
gatk UmiAwareMarkDuplicatesWithMateCigar \ -I Test.umi.merge.bam \ -O Test.marked.bam -M Test.dups.txt \ --UMI_METRICS Test.umi.txt --BARCODE_TAG RX --DUPLEX_UMI true