The current GATK version is 3.7-0
Examples: Monday, today, last week, Mar 26, 3/26/04

#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

You can opt in to receive email notifications, for example when your questions get answered or when there are new announcements, by following the instructions given here.

#### ☞ Did you remember to?

1. Search using the upper-right search box, e.g. using the error message.
3. Include tool and Java versions.
4. Tell us whether you are following GATK Best Practices.
5. Include relevant details, e.g. platform, DNA- or RNA-Seq, WES (+capture kit) or WGS (PCR-free or PCR+), paired- or single-end, read length, expected average coverage, somatic data, etc.
6. For tool errors, include the error stacktrace as well as the exact command.
7. For format issues, include the result of running ValidateSamFile for BAMs or ValidateVariants for VCFs.
8. For weird results, include an illustrative example, e.g. attach IGV screenshots according to Article#5484.
9. For a seeming variant that is uncalled, include results of following Article#1235.

#### ☞ Formatting tip!

Wrap blocks of code, error messages and BAM/VCF snippets--especially content with hashes (#)--with lines with three backticks ( ` ) each to make a code block as demonstrated here.

GATK 3.7 is here! Be sure to read the Version Highlights and optionally the full Release Notes.

# UnifiedGenotyper - How are regions to examine for Variant Calling (SNPs, Indels) detected?

Posts: 19

Hi there,

I just had a look at the code of the UnifiedGenotyper and how its Variant Calling algorithm is implemented (very well documented by the way . But now I wonder how GATK reads in the SAM file and finds out where the differences to the reference (SNPs, Indels) are that are then examined in the Variant Calling. I only see that the UnifiedGenotyper gets a set of alleles, but not where the alleles are actually determined. I have also found out that GATK is using Samtools for parsing SAM files, but have not found the point where the actual reads are parsed and processed (e.g., by using the CIGAR string). Are you maybe doing a local realignment before the actual Variant Calling from which you get the alleles?

I would appreciate if you could guide me to the right direction where this happens in the code.

Best regards,

Cindy

Tagged:

Hi Cindy,

UG does not do any local realignment before calling, unlike HaplotypeCaller, our newer caller, which does so.

The alleles are "served" to the UG by the GATK engine during traversal of the genome. The engine's job here is to read in data from the bam (using samtools as you correctly identified), filter it and feed it to the UG in an appropriate way. Specifically, since the UG is what we call a LocusWalker, the engine takes the pileup of bases at each position in turn, does a few basic manipulations to identify alleles and attach relevant meta/quality information, and feeds that to the UG variant calling module.

I can't point you to the relevant classes right now because I'm on a smartphone (not terribly convenient for navigating code) but if you look at it in an IDE you should be able to swim up the stream to where the alleles are constructed.

If that doesn't help let me know and I'll give you more details once I'm at the office.

Geraldine Van der Auwera, PhD

• Posts: 19

Hi Geraldine,
thanks for such an immediate reply!
So far, I have ended up at class TraversalEngine from which several other Traversal-classes (TraverseReadsNano?) inherit. I also found the ReadWalkers, but there does not seem to be the code I am looking for. I feel I am very close to the code segment I am interested in, but still could not figure out where it is hidden... I would appreciate if you could provide more details.

Best regards,

Cindy