If you happen to see a question you know the answer to, please do chime in and help your fellow community members. We encourage our fourm members to be more involved, jump in and help out your fellow researchers with their questions. GATK forum is a community forum and helping each other with using GATK tools and research is the cornerstone of our success as a genomics research community.We appreciate your help!

Test-drive the GATK tools and Best Practices pipelines on Terra

Check out this blog post to learn how you can get started with GATK and try out the pipelines in preconfigured workspaces (with a user-friendly interface!) without having to install anything.



Recently I've been wanting to preform tasks for each interval in a file using the GATK. Are you guys planning to create an IntervalWalker class? (Or is there a workaround?) DiagnoseTargets in gatk-protected seem to work this way, but not in a very straightforward way - also since it's protected I'm not sure how much if any code I could borrow from there.


Best Answer


  • ebanksebanks Broad InstituteMember, Broadie, Dev ✭✭✭✭

    Hi Daniel,
    Walkers do have the ability to "reduce by interval". DepthOfCoverage is an example of a walker that does this in certain situations. Does this meet your needs?

  • It seems that it can to what I want. I see that DoC uses onTraversalDone() which seems powerful. The comment in the source code is good:

    (pasted here for reference to other readers)

     * Return true if your walker wants to reduce each interval separately.  Default is false.
     * If you set this flag, several things will happen.
     * The system will invoke reduceInit() once for each interval being processed, starting a fresh reduce
     * Reduce will accumulate normally at each map unit in the interval
     * However, onTraversalDone(reduce) will be called after each interval is processed.
     * The system will call onTraversalDone( GenomeLoc -> reduce ), after all reductions are done,
     *   which is overloaded here to call onTraversalDone(reduce) for each location
     * @return true if your walker wants to reduce each interval separately.
    public boolean isReduceByInterval() {
        return true; //changes default behavior.

    One question: Can I get to the interval data in onTraversalDone, for example chromosome and coordinate or do I have to pass those along between the map() calls? I will be looking for info like the reference sequence of the interval too - can that be done using built-in methods or would I have to "build" them from several reduce steps myself?

    thanks a lot!

  • Yeah, that works! Thanks.

Sign In or Register to comment.