I have called SNVs with Mutect2, now in filter column of a file called filtered vcf I have a lot of things like

> length(unique(filtered.vcf$FILTER)) [1] 409 > 

> unique(filtered.vcf $FILTER)
  [1] "germline"                                                                             
  [2] "PASS"                                                                                 
  [3] "clustered_events"                                                                     
  [4] "clustered_events;panel_of_normals"                                                    
  [5] "weak_evidence"                                                                        
  [6] "haplotype"                                                                            
  [7] "base_qual;haplotype"                                                                  
  [8] "clustered_events;germline;haplotype"                                                  
  [9] "base_qual;clustered_events;germline;haplotype"                                        
 [10] "clustered_events;haplotype"                                                           
 [11] "clustered_events;haplotype;weak_evidence"                                             
 [12] "base_qual;clustered_events;haplotype"                                                 
 [13] "haplotype;map_qual"                                                                   
 [14] "germline;panel_of_normals"                                                            
 [15] "base_qual"                                                                            
 [16] "germline;haplotype"                                                                   
 [17] "germline;panel_of_normals;position"                                                   
 [18] "clustered_events;orientation"                                                         
 [19] "clustered_events;orientation;strand_bias"                                             
 [20] "base_qual;haplotype;map_qual"                                                         
 [21] "clustered_events;fragment;haplotype"                                                  
 [22] "base_qual;clustered_events"                                                           
 [23] "germline;haplotype;panel_of_normals"                                                  
 [24] "clustered_events;germline;haplotype;panel_of_normals"                                 
 [25] "fragment"                                                                             
 [26] "clustered_events;haplotype;map_qual"                                                  
 [27] "clustered_events;germline"                                                            
 [28] "clustered_events;germline;panel_of_normals"                                           
 [29] "germline;weak_evidence"                                                               
 [30] "orientation"       

     I tought that the filtered.vcf Mutect2 output file contain only the filtered events, but the values I see suggest otherwise. How should I understand the output?


1 Answer 1


You haven't told us what commands you ran, so I am assuming you first ran Mutect2 and then FilterMutectCalls. If so, the FilterMutectCalls does not remove any variants from its input, it will simply flag any that fail its builtin filters. Any variants that did not fail a filter are marked as PASS and the rest have a filter added.

Now, whether you want to filter these out or not is up to you. You need to look at the VCF header where each of the filters is defined (admittedly, not very clearly) and make a judgment call on whether you consider this filter to be a deal breaker or not.

For instance, the germline flag means:

##FILTER=<ID=germline,Description="Evidence indicates this site is germline, not somatic">

So that indicates that gatk believes this is more likely to be a germline variant than a somatic one, that it is more likely to be a constituent variant present in the sample's germline cells than a variant that is only found in the sample's tumor cells.

Another clear case is the base_qual filter which means:

##FILTER=<ID=base_qual,Description="alt median base quality">

When a variant is flagged with this filter, it means that the median fastq base quality of the reads supporting the variant was significantly lower than the median fastq base quality of the reads supporting the reference alele at the same position, making it likely that the variant is a false positive.

You need to read the VCF headers and any gatk documentation you can find (warning: these filters are not very well documented at all, in my experience), understand what the filters are and then decide what variants you consider real based on what you know about your sample, your experimental design and the question you are trying to answer.

  • $\begingroup$ How did you get to the explanation of base_qual from just the "alt median base quality"? I'd like to explain each filter in simple English like you've done for base_qual above and there seems to be very little proper documentation. $\endgroup$
    – Ram RS
    Sep 21, 2022 at 16:16
  • $\begingroup$ @RamRS yes, extremely little. I got this one from parsing "alt median base quality" as "median base quality in the reads supporting the alternative allele" and it has also been borne out by manual testing. Unfortunately, there is almost no documentation available at all for these things. $\endgroup$
    – terdon
    Sep 21, 2022 at 16:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.