diff --git a/build.xml b/build.xml index a4caa96c9..babf31506 100644 --- a/build.xml +++ b/build.xml @@ -67,6 +67,8 @@ + + @@ -118,6 +120,16 @@ + + + + + + + + + + @@ -507,7 +519,7 @@ docletpathref="doclet.classpath" classpathref="external.dependencies" classpath="${java.classes}" - additionalparam="${gatkdocs.include.hidden.arg} -private -build-timestamp "${build.timestamp}" -absolute-version ${build.version} -quiet -J-Xdebug -J-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"> + additionalparam="${gatkdocs.include.hidden.arg} -private -build-timestamp "${build.timestamp}" -absolute-version ${build.version} -quiet"> @@ -827,10 +839,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -851,6 +907,7 @@ - - - - - - - - - - @@ -902,6 +949,10 @@ + + + + @@ -914,62 +965,81 @@ + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - - + + - - + + @@ -1027,14 +1097,14 @@ - + - - + + @@ -1043,8 +1113,8 @@ - - + + @@ -1055,11 +1125,11 @@ - + - + @@ -1068,7 +1138,7 @@ - + @@ -1076,14 +1146,14 @@ - - - + + + - - - + + + @@ -1119,7 +1189,7 @@ - + diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/qc/TestVariantContextWalker.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/qc/TestVariantContextWalker.java new file mode 100755 index 000000000..7607049db --- /dev/null +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/qc/TestVariantContextWalker.java @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2010 The Broad Institute + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +package org.broadinstitute.sting.gatk.walkers.qc; + +import org.broadinstitute.sting.commandline.Argument; +import org.broadinstitute.sting.commandline.ArgumentCollection; +import org.broadinstitute.sting.commandline.Output; +import org.broadinstitute.sting.gatk.arguments.DbsnpArgumentCollection; +import org.broadinstitute.sting.gatk.arguments.StandardVariantContextInputArgumentCollection; +import org.broadinstitute.sting.gatk.contexts.AlignmentContext; +import org.broadinstitute.sting.gatk.contexts.ReferenceContext; +import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; +import org.broadinstitute.sting.gatk.refdata.VariantContextAdaptors; +import org.broadinstitute.sting.gatk.walkers.Reference; +import org.broadinstitute.sting.gatk.walkers.RodWalker; +import org.broadinstitute.sting.gatk.walkers.Window; +import org.broadinstitute.sting.utils.codecs.vcf.VCFWriter; +import org.broadinstitute.sting.utils.variantcontext.VariantContext; + +import java.io.PrintStream; +import java.util.Arrays; +import java.util.EnumSet; +import java.util.List; + +/** + * Test routine for new VariantContext object + */ +@Reference(window=@Window(start=-20,stop=1)) +public class TestVariantContextWalker extends RodWalker { + @Output + PrintStream out; + + @ArgumentCollection + protected StandardVariantContextInputArgumentCollection variantCollection = new StandardVariantContextInputArgumentCollection(); + + @Argument(fullName="takeFirstOnly", doc="Only take the first second at a locus, as opposed to all", required=false) + boolean takeFirstOnly = false; + + @Argument(fullName="onlyContextsOfType", doc="Only take variant contexts of this type", required=false) + VariantContext.Type onlyOfThisType = null; + + @Argument(fullName="onlyContextsStartinAtCurrentPosition", doc="Only take variant contexts at actually start at the current position, excluding those at span to the current location but start earlier", required=false) + boolean onlyContextsStartinAtCurrentPosition = false; + + @Argument(fullName="printPerLocus", doc="If true, we'll print the variant contexts, in addition to counts", required=false) + boolean printContexts = false; + + @Argument(fullName="outputVCF", doc="If provided, we'll convert the first input context into a VCF", required=false) + VCFWriter writer = null; + + private boolean wroteHeader = false; + + public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { + if ( ref == null ) + return 0; + else { + EnumSet allowedTypes = onlyOfThisType == null ? null : EnumSet.of(onlyOfThisType); + + int n = 0; + List contexts; + if ( onlyContextsStartinAtCurrentPosition ) + contexts = tracker.getValues(variantCollection.variants, context.getLocation()); + else // ! onlyContextsStartinAtCurrentPosition + contexts = tracker.getValues(variantCollection.variants); + + for ( VariantContext vc : contexts ) { + if ( allowedTypes == null || allowedTypes.contains(vc.getType()) ) { + // we need to trigger decoding of the genotype string to pass integration tests + vc.getGenotypes(); + + if ( writer != null && n == 0 ) { + if ( ! wroteHeader ) { + writer.writeHeader(VariantContextAdaptors.createVCFHeader(null, vc)); + wroteHeader = true; + } + + writer.add(vc); + } + + n++; + if ( printContexts ) out.printf(" %s%n", vc); + if ( takeFirstOnly ) break; + } + } + + if ( n > 0 && printContexts ) { + out.printf("%s => had %d variant context objects%n", context.getLocation(), n); + out.printf("---------------------------------------------%n"); + } + + return n; + } + } + + public Integer reduceInit() { + return 0; + } + + public Integer reduce(Integer point, Integer sum) { + return point + sum; + } + + @Override + public void onTraversalDone(Integer result) { + // Double check traversal result to make count is the same. + // TODO: Is this check necessary? + out.println("[REDUCE RESULT] Traversal result is: " + result); + } +} diff --git a/public/java/test/org/broadinstitute/sting/utils/R/RScriptExecutorUnitTest.java b/public/java/test/org/broadinstitute/sting/utils/R/RScriptExecutorUnitTest.java index 1bbf74db9..836a4473f 100644 --- a/public/java/test/org/broadinstitute/sting/utils/R/RScriptExecutorUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/R/RScriptExecutorUnitTest.java @@ -26,21 +26,12 @@ package org.broadinstitute.sting.utils.R; import org.apache.commons.io.FileUtils; import org.broadinstitute.sting.BaseTest; -import org.broadinstitute.sting.gatk.walkers.diffengine.DiffElement; -import org.broadinstitute.sting.gatk.walkers.diffengine.DiffEngine; -import org.broadinstitute.sting.gatk.walkers.diffengine.DiffNode; -import org.broadinstitute.sting.gatk.walkers.diffengine.Difference; import org.broadinstitute.sting.utils.exceptions.UserException; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; import java.util.List; /** @@ -49,7 +40,6 @@ import java.util.List; public class RScriptExecutorUnitTest extends BaseTest { final static String testrscript = "print(\"hello, world\")\n"; final static String publicRScript = "plot_Tranches.R"; - final static String privateRScript = "variantCallQC.R"; // -------------------------------------------------------------------------------- // @@ -74,17 +64,6 @@ public class RScriptExecutorUnitTest extends BaseTest { @Test public void testPublic() { testOne(publicRScript, null, null, true); } - @Test - public void testPrivate() { testOne(privateRScript, null, null, true); } - - // make sure we don't break finding something in private by adding another directory - @Test - public void testPrivateWithAdditionalPath1() { testOne(privateRScript, null, "dist", true); } - - // make sure we don't break finding something in private by adding another directory - @Test - public void testPrivateWithAdditionalPath2() { testOne(privateRScript, null, "doesNotExist", true); } - @Test(expectedExceptions = UserException.class) public void testNonExistantScriptException() { testOne("does_not_exist.R", null, null, true); } diff --git a/public/packages/GATKEngine.xml b/public/packages/GATKEngine.xml index 4364988e7..e6056408e 100644 --- a/public/packages/GATKEngine.xml +++ b/public/packages/GATKEngine.xml @@ -26,14 +26,10 @@ - - - - - - + + - +