From 32d14d988ec8a3c72b25efddc605381dc7aab40d Mon Sep 17 00:00:00 2001 From: ebanks Date: Mon, 22 Feb 2010 04:13:54 +0000 Subject: [PATCH] Overload parseIntervalRegion() to allow for the interval merging rule to be passed in (so one is not required to use the value from the GATK arg collection). Now the IndelRealigner can use this functionality without being forced to merge abutting intervals (which was actually causing a problem with the cleaning). git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2862 348d0f76-0448-11de-a6fe-93d51630548a --- .../sting/gatk/GenomeAnalysisEngine.java | 18 +++++++++++++++--- .../gatk/walkers/indels/IndelRealigner.java | 3 ++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java index 7da0bcd6f..9b85ccb8a 100755 --- a/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java +++ b/java/src/org/broadinstitute/sting/gatk/GenomeAnalysisEngine.java @@ -41,6 +41,7 @@ import org.broadinstitute.sting.gatk.datasources.shards.MonolithicShardStrategy; import org.broadinstitute.sting.gatk.executive.MicroScheduler; import org.broadinstitute.sting.gatk.arguments.GATKArgumentCollection; import org.broadinstitute.sting.gatk.arguments.ValidationExclusion; +import org.broadinstitute.sting.gatk.arguments.IntervalMergingRule; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum; import org.broadinstitute.sting.gatk.walkers.*; @@ -299,6 +300,17 @@ public class GenomeAnalysisEngine { * @return a list of genomeLoc representing the interval file */ public static List parseIntervalRegion(final List intervals) { + return parseIntervalRegion(intervals, GenomeAnalysisEngine.instance.getArguments().intervalMerging); + } + + /** + * setup the interval regions, from either the interval file of the genome region string + * + * @param intervals the list of intervals to parse + * @param mergingRule the rule for merging intervals + * @return a list of genomeLoc representing the interval file + */ + public static List parseIntervalRegion(final List intervals, IntervalMergingRule mergingRule) { List locs = new ArrayList(); for (String interval : intervals) { if (new File(interval).exists()) { @@ -307,12 +319,12 @@ public class GenomeAnalysisEngine { Utils.warnUser("Bed files are 0 based half-open intervals, which are converted to 1-based closed intervals in the GATK. " + "Be aware that all output information and intervals are 1-based closed intervals."); BedParser parser = new BedParser(new File(interval)); - locs.addAll(parser.getSortedAndMergedLocations(GenomeAnalysisEngine.instance.getArguments().intervalMerging)); + locs.addAll(parser.getSortedAndMergedLocations(mergingRule)); } else { - locs.addAll(GenomeLocParser.intervalFileToList(interval,GenomeAnalysisEngine.instance.getArguments().intervalMerging)); + locs.addAll(GenomeLocParser.intervalFileToList(interval,mergingRule)); } } else { - locs.addAll(GenomeLocParser.parseGenomeLocs(interval,GenomeAnalysisEngine.instance.getArguments().intervalMerging)); + locs.addAll(GenomeLocParser.parseGenomeLocs(interval,mergingRule)); } } diff --git a/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java b/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java index 46d375b93..8561711cb 100755 --- a/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java +++ b/java/src/org/broadinstitute/sting/gatk/walkers/indels/IndelRealigner.java @@ -3,6 +3,7 @@ package org.broadinstitute.sting.gatk.walkers.indels; import org.broadinstitute.sting.utils.*; import org.broadinstitute.sting.gatk.walkers.ReadWalker; import org.broadinstitute.sting.gatk.GenomeAnalysisEngine; +import org.broadinstitute.sting.gatk.arguments.IntervalMergingRule; import org.broadinstitute.sting.gatk.refdata.*; import org.broadinstitute.sting.utils.cmdLine.Argument; @@ -115,7 +116,7 @@ public class IndelRealigner extends ReadWalker { throw new RuntimeException("Entropy threshold must be a fraction between 0 and 1"); // read in the intervals for cleaning - List locs = GenomeAnalysisEngine.parseIntervalRegion(Arrays.asList(intervalsFile)); + List locs = GenomeAnalysisEngine.parseIntervalRegion(Arrays.asList(intervalsFile), IntervalMergingRule.OVERLAPPING_ONLY); intervals = GenomeLocSortedSet.createSetFromList(locs).iterator(); currentInterval = intervals.hasNext() ? intervals.next() : null;