1 為什么要進行 MarkDuplicates
重復 reads 被定義為源自單個 DNA 模板的序列。臨床應用場景下比如檢測腫瘤的突變頻率,當測序的reads中 發(fā)生/不發(fā)生 變異是相互獨立的事件時,計算出的突變頻率才是準確的。但是PCR過程或者測序儀光學偽影導致的測序reads重復會打破相互獨立這個條件,導致后續(xù)檢測過程不準確。
2 導致 Duplicates 的原因
導致 Duplicates 的原因有兩個:1及刻、建庫 PCR 步驟導致的 PCR duplicates镀裤;2、測序儀的光學傳感器錯誤地將單個擴增的簇檢測為多個簇缴饭,會導致 Optical duplicates暑劝。而且PCR 重復的比例會因測序量的增加而增加,光學重復是隨機分布的茴扁。
3 怎樣確認 Duplicates reads sets
MarkDuplicates 工具的主要原理是比較SAM/BAM 文件中 reads 的 5' 端的序列铃岔。Duplicates reads 集都是來自于同一個 DNA 模板,所以我們可以認為這些 reads 在基因組上有相同的5‘端起始位置峭火。此外毁习,BWA 在將 reads 比對到 reference 時,會在末端形成 “clips” 卖丸,這會使起始位置的情況發(fā)生變化纺且。此外,當reads 比對到負鏈時稍浆,它的起始位置應該在3‘端载碌。因此需要使用SAM 文件中的 flags(正負鏈) + CIGAR + start_pos 信息共同確認5‘端起始位置。
以下是不同情況下Duplicates sets判定:
(1)r1,r3,r5,r6是一個Duplicates sets衅枫,它們比對到了正鏈嫁艇,起始位置都是1
(2)r2,r4是一個Duplicates sets,它們比對到了負鏈弦撩,起始位置都是7
(3)r7是一個Duplicates sets步咪,起始位置是3
4 GATK MarkDuplicates 命令
MarkDuplicates 命令有很多參數(shù),主要介紹一下幾個參數(shù):
--ASSUME_SORT_ORDER
可以接受 coordinate 排序輸入益楼,也可以接受 query 排序輸入猾漫,但行為略有不同。當輸入為 coordinate 排序輸入時感凤,比對上的 unmapped mates 不會標記為重復悯周。但是,輸入為query 排序輸入時陪竿,比對上的 unmapped mates 會標記為重復禽翼。
--REMOVE_DUPLICATES=true
該參數(shù)為 true 時會直接刪除duplicates序列,選擇reads中堿基質(zhì)量值加和最大的序列作為代表性序列族跛。
該參數(shù)為 false 時會將重復標簽加到flags中捐康,其中1024代表重復序列(samtools flags 1024),GATK 后續(xù)處理軟件會自動識別該參數(shù)庸蔼,將其當做重復reads處理
-M 會輸出一個 metrics 文件 用來記錄單端和雙端 reads 的重復數(shù)目
-I 輸入BAM文件
-O 輸出BAM文件
# markdup
/bioapp/java8/bin/java -Xmx16g -Djava.io.tmpdir=${outdir}/${sample}_tmp -jar /bioapp/gatk-package-4.0.11.0-local.jar \
MarkDuplicates \
--ASSUME_SORT_ORDER=coordinate --REMOVE_DUPLICATES=true \
-M=${outdir}/${sample}_gatk4.metrics \
-I=${outdir}/${sample}.sort.bam \
-O=${outdir}/${sample}_rmdup_realigned_recal.bam
5 參考資料
https://gatk.broadinstitute.org/hc/en-us/articles/360037052812-MarkDuplicates-Picard-
https://hpc.nih.gov/training/gatk_tutorial/markdup.html
https://cloud.tencent.com/developer/article/1626945
https://qcb.ucla.edu/wp-content/uploads/sites/14/2016/03/GATKwr12-2-Marking_duplicates.pdf