From c8077b7a22c801bd7b6df07950e233de0ddb7197 Mon Sep 17 00:00:00 2001 From: aaron Date: Thu, 4 Mar 2010 16:02:21 +0000 Subject: [PATCH] =?UTF-8?q?Waypoint=20check-in:=20a=20couple=20of=20change?= =?UTF-8?q?s=20to=20for=20Tribble,=20and=20adding=20some=20options=20to=20?= =?UTF-8?q?the=20integration=20test=20for=20passing=20in=20auxillary=20fil?= =?UTF-8?q?es=20that=20aren=E2=80=99t=20=E2=80=9C%s=E2=80=9D=20command=20l?= =?UTF-8?q?ine=20options.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2925 348d0f76-0448-11de-a6fe-93d51630548a --- .../refdata/tracks/FeatureReaderTrack.java | 10 ++++++ .../sting/gatk/refdata/tracks/RMDTrack.java | 6 ++++ .../gatk/refdata/tracks/RODRMDTrack.java | 23 +++++++++--- .../org/broadinstitute/sting/WalkerTest.java | 35 ++++++++++++++++--- 4 files changed, 65 insertions(+), 9 deletions(-) diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/FeatureReaderTrack.java b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/FeatureReaderTrack.java index d9392f112..648ac17c2 100644 --- a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/FeatureReaderTrack.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/FeatureReaderTrack.java @@ -72,6 +72,16 @@ public class FeatureReaderTrack extends RMDTrack implements QueryableTrack { } } + /** + * do we support the query interface? + * + * @return true + */ + @Override + public boolean supportsQuery() { + return true; + } + @Override public Iterator query(GenomeLoc interval) throws IOException { return new FeatureToGATKFeatureIterator(reader.query(interval.getContig(),(int)interval.getStart(),(int)interval.getStop()),this.getName()); diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrack.java b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrack.java index 89d1673b3..bedfee538 100644 --- a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrack.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RMDTrack.java @@ -85,4 +85,10 @@ public abstract class RMDTrack { public boolean matches(String name, String type) { return (name.equals(this.name) && type.equals(this.type.getSimpleName())); } + + /** + * do we support the query interface? + * @return true if we can be cast to the QueryableTrack interface + */ + public abstract boolean supportsQuery(); } diff --git a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RODRMDTrack.java b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RODRMDTrack.java index 863582da9..250128485 100644 --- a/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RODRMDTrack.java +++ b/java/src/org/broadinstitute/sting/gatk/refdata/tracks/RODRMDTrack.java @@ -24,7 +24,6 @@ package org.broadinstitute.sting.gatk.refdata.tracks; import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedData; -import org.broadinstitute.sting.gatk.refdata.SeekableRODIterator; import org.broadinstitute.sting.gatk.refdata.utils.GATKFeature; import org.broadinstitute.sting.gatk.refdata.utils.LocationAwareSeekableRODIterator; import org.broadinstitute.sting.gatk.refdata.utils.RODRecordList; @@ -40,7 +39,7 @@ import java.util.Iterator; * * Class RODRMDTrack * - * wrap a reference ordered data object in the new track style. This will hopefully be phased-out as we move to + * wrap a reference ordered data object in the new track style. This track will hopefully be phased-out as we move to * a FeatureReader based system. */ public class RODRMDTrack extends RMDTrack { @@ -67,15 +66,29 @@ public class RODRMDTrack extends RMDTrack { */ @Override public Iterator getIterator() { - return new SRIToIterator(data.iterator()); + return new RODIteratorToRMDIterator(data.iterator()); + } + + /** + * do we support the query interface? + * + * @return false + */ + @Override + public boolean supportsQuery() { + return false; // sadly no, we don't } } -class SRIToIterator implements Iterator { +/** + * this class wraps a ROD iterator, so that it produces GATKFeatures (basicly features that can generate a GenomeLoc + * for its position). + */ +class RODIteratorToRMDIterator implements Iterator { private RODRecordList list = null; private LocationAwareSeekableRODIterator iterator = null; - SRIToIterator(LocationAwareSeekableRODIterator iter) { + RODIteratorToRMDIterator(LocationAwareSeekableRODIterator iter) { iterator = iter; } diff --git a/java/test/org/broadinstitute/sting/WalkerTest.java b/java/test/org/broadinstitute/sting/WalkerTest.java index bc53720d9..ba57511b8 100755 --- a/java/test/org/broadinstitute/sting/WalkerTest.java +++ b/java/test/org/broadinstitute/sting/WalkerTest.java @@ -15,8 +15,7 @@ import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import java.security.MessageDigest; -import java.util.ArrayList; -import java.util.List; +import java.util.*; public class WalkerTest extends BaseTest { public String assertMatchingMD5(final String name, final File resultsFile, final String expectedMD5 ) { @@ -90,6 +89,8 @@ public class WalkerTest extends BaseTest { List md5s = null; List exts = null; + Map auxillaryFiles = new HashMap(); + public WalkerTestSpec(String args, int nOutputFiles, List md5s) { this.args = args; this.nOutputFiles = nOutputFiles; @@ -102,6 +103,10 @@ public class WalkerTest extends BaseTest { this.md5s = md5s; this.exts = exts; } + + public void addAuxFile(String expectededMD5sum, File outputfile) { + auxillaryFiles.put(expectededMD5sum,outputfile); + } } protected boolean parameterize() { @@ -125,6 +130,28 @@ public class WalkerTest extends BaseTest { System.out.println(Utils.dupString('-', 80)); System.out.println(String.format("Executing test %s with GATK arguments: %s", name, args)); + List md5s = new LinkedList(); + md5s.addAll(spec.md5s); + + // check to see if they included any auxillary files, if so add them to the list + for (String md5 : spec.auxillaryFiles.keySet()) { + md5s.add(md5); + tmpFiles.add(spec.auxillaryFiles.get(md5)); + } + + return executeTest(name, md5s, tmpFiles, args); + } + + + /** + * execute the test, given the following: + * @param name the name of the test + * @param md5s the list of md5s + * @param tmpFiles the temp file corresponding to the md5 list + * @param args the argument list + * @return a pair of file and string lists + */ + private Pair, List> executeTest(String name, List md5s, List tmpFiles, String args) { CommandLineGATK instance = new CommandLineGATK(); String[] command; @@ -142,8 +169,8 @@ public class WalkerTest extends BaseTest { throw new RuntimeException("Error running the GATK with arguments: " + args); } - return new Pair, List>(tmpFiles, assertMatchingMD5s(name, tmpFiles, spec.md5s)); - } + return new Pair, List>(tmpFiles, assertMatchingMD5s(name, tmpFiles, md5s)); + } private static String[] escapeExpressions(String args, String delimiter) { String[] command = {};