QD scores smaller than expected for indel calls

Dear support,

According to the definition of QD, it equals to the variant confidence (from the QUAL field) divided by the unfiltered depth of non-reference samples.

However, when I ran the Unified Genotyper (v2.8.1) on a pair of samples for indel calls, the QD score for some indels are much lower than expected. For example,

chrX 51075762 . GCAGCTGCGT G 142.15 . AC=1;AF=0.250;AN=4;BaseCounts=0,0,204,0;BaseQRankSum=-1.435;DP=204;FS=0.000;GC=70.82;LowMQ=0.0049,0.0049,204;MLEAC=1;MLEAF=0.250;MQ=55.32;MQ0=0;MQRankSum=-2.698;QD=0.15;ReadPosRankSum=-3.784;Samples=tumor_DNA_2C;VariantType=DELETION.NumRepetitions_1.EventLength_9 GT:AD:DP:GQ:PL 0/0:94,0:95:99:0,283,11503 0/1:101,7:108:99:181,0,11532

in this case, the expected QD = 142.15 / 108 = 1.32, but the reported QD = 0.15

chr21 45649571 . C CCTGGACCCGCCCTGGACACCCCACGGGGG 526.15 . AC=1;AF=0.250;AN=4;BaseCounts=0,78,0,0;BaseQRankSum=0.787;DP=78;FS=0.000;GC=65.84;LowMQ=0.0000,0.0000,78;MLEAC=1;MLEAF=0.250;MQ=60.33;MQ0=0;MQRankSum=1.453;QD=0.44;ReadPosRankSum=-3.875;Samples=tumor_DNA_2C;VariantType=INSERTION.NOVEL_10orMore GT:AD:DP:GQ:PL 0/0:31,1:37:86:0,86,3672 0/1:30,6:41:99:565,0,4204

the expected QD = 526.15 / 41 = 12.83, the reported QD 0.44 is much smaller.

Do you know what's happening? Should I filter those indel calls (since QD < 2.0)?




  • KurtKurt Member ✭✭✭

    Pre GATK 3, QD for indels was further normalized by event length. This was removed by the time GATK 3 was released (around New Years 2014...after 2.8.1). See;


    towards the end.

  • freshtuofreshtuo Member
    edited August 2014

    Thanks a lot, Kurt. After multiplying by event length, the reported QD matches perfectly to the expected value.

    I re-called indels using the newest version GATK (v3.2.2) and checked the QD scores for the above two cases:

    case# indel_size GATK_v2.8.1 GATK_v3.2.2 fold_change

    1) 9 0.15 0.44 3

    2) 29 0.44 1.33 3

    It seems that GATK_v3.2.2 somehow compensates QD scores for longer indels but in a non-linear way. However, this does not solve my problem, I still have a large fraction (~75%) of indel calls with QD scores less than 1.5.

    I'm in similar situation as you and looking for indels in paired samples. I'm wondering if you can share your experience, does QD score work in your experiments? what cutoff did you choose?

    Thank you!


  • KurtKurt Member ✭✭✭


    Huh, I thought that i had checked after the fix went in (using a nightly build before 3.0) and that QD for indels was just QUAL/DP{INFO} and no longer normalized by event length at all...For all of my current projects, I'm using the gvcf+joint calling workflow and have been able to use VQSR so haven't come across it lately.

    But for that particular project, in the end I couldn't wait until the fix went in (the project requirements were that the versioning had to be frozen and upgrades would/could only happen after 6 to 18 months, b/c everything had to be re-validated and documented, so I was stuck with using 2.7-4). So for that project, I ended up making a conditional argument that for INDEL/MIXED that it had to fail both QD<2.0 and QUAL < 1000 in VariantFiltration;

    --filterExpression 'QD < 2.0 && QUAL < 1000.0'

    given their expected depths and what they were capturing, that was good enough to separate FP from TP. That pipeline is still being run and haven't heard any complaints about it from the people that are running it yet.

  • freshtuofreshtuo Member

    Many thanks, @Kurt

    I'll try to incorporate QD and QUAL for indel filtering, and maybe manually adjust QD scores according to indel size.


Sign In or Register to comment.