From 68eed7b313ed15c7caf1cc4bc9dc0863f6de1e10 Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Thu, 14 Jun 2012 13:22:31 -0400 Subject: [PATCH] Optimizations for VCF and BCF2 -- encodeTyped in BCF2Encoder now with specialized versions for int, float, and string, avoiding unnecessary intermediate list creation and dynamic type checking. encodeTypedMissing also includes inline operations now instead of using Collections.emptyList() version. Lots of contracts. User code updated to use specialized versions where possible -- Misc code refactoring -- Updated VCF float formating to always include 3 sig digits for values < 1, and 2 for > 1. Updating MD5s accordingly -- Expanded testing of BCF2Decoder to really use all of the encodeTyped* operations --- .../sting/utils/codecs/bcf2/BCF2Type.java | 4 + .../sting/utils/codecs/bcf2/BCF2Utils.java | 28 ++++ .../variantcontext/writer/BCF2Encoder.java | 129 +++++++++--------- .../writer/BCF2FieldEncoder.java | 6 +- .../writer/BCF2FieldWriter.java | 4 +- .../variantcontext/writer/BCF2Writer.java | 27 ++-- .../VariantAnnotatorIntegrationTest.java | 22 +-- .../walkers/beagle/BeagleIntegrationTest.java | 4 +- .../UnifiedGenotyperIntegrationTest.java | 54 ++++---- .../CombineVariantsIntegrationTest.java | 26 ++-- .../SelectVariantsIntegrationTest.java | 14 +- .../bcf2/BCF2EncoderDecoderUnitTest.java | 64 +++++++++ 12 files changed, 235 insertions(+), 147 deletions(-) diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Type.java b/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Type.java index 0eae0ac61..f874b14cd 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Type.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Type.java @@ -109,4 +109,8 @@ public enum BCF2Type { * An enum set of the types that might represent Integer values */ public final static EnumSet INTEGERS = EnumSet.of(INT8, INT16, INT32); + + public boolean isIntegerType() { + return INTEGERS.contains(this); + } } diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Utils.java b/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Utils.java index 64e9121e9..761c369ac 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Utils.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/bcf2/BCF2Utils.java @@ -35,6 +35,7 @@ import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.util.*; /** @@ -297,4 +298,31 @@ public final class BCF2Utils { else if ( o instanceof List ) return (List)o; else return Collections.singletonList(o); } + + public final static void encodeRawBytes(final int value, final BCF2Type type, final OutputStream encodeStream) throws IOException { + switch ( type.getSizeInBytes() ) { + case 1: + encodeStream.write(0xFF & value); + break; + case 2: + encodeStream.write((0xFF00 & value) >> 8); + encodeStream.write(0xFF & value); + break; + case 4: + encodeStream.write((0xFF000000 & value) >> 24); + encodeStream.write((0x00FF0000 & value) >> 16); + encodeStream.write((0x0000FF00 & value) >> 8); + encodeStream.write((0x000000FF & value)); + break; + default: + throw new ReviewedStingException("BUG: unexpected type size " + type); + } +// general case for reference +// for ( int i = type.getSizeInBytes() - 1; i >= 0; i-- ) { +// final int shift = i * 8; +// int mask = 0xFF << shift; +// int byteValue = (mask & value) >> shift; +// encodeStream.write(byteValue); +// } + } } diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Encoder.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Encoder.java index 62da3174d..2f4ec4612 100644 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Encoder.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Encoder.java @@ -24,6 +24,7 @@ package org.broadinstitute.sting.utils.variantcontext.writer; +import com.google.java.contract.Ensures; import com.google.java.contract.Requires; import org.broadinstitute.sting.utils.codecs.bcf2.BCF2Type; import org.broadinstitute.sting.utils.codecs.bcf2.BCF2Utils; @@ -31,7 +32,6 @@ import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.OutputStream; import java.util.*; /** @@ -51,48 +51,73 @@ public final class BCF2Encoder { // // -------------------------------------------------------------------------------- - public int getRecordSizeInBytes() { - return encodeStream.size(); - } - + @Ensures("result != null") public byte[] getRecordBytes() { byte[] bytes = encodeStream.toByteArray(); encodeStream.reset(); return bytes; } - /** - * Method for writing raw bytes to the encoder stream - * - * The purpose this method exists is to allow lazy decoding of genotype data. In that - * situation the reader has loaded a block of bytes, and never decoded it, so we - * are just writing it back out immediately as a raw stream of blocks. Any - * bad low-level formatting or changes to that byte[] will result in a malformed - * BCF2 block. - * - * @param bytes a non-null byte array - * @throws IOException - */ - public void writeRawBytes(final byte[] bytes) throws IOException { - assert bytes != null; - encodeStream.write(bytes); - } - // -------------------------------------------------------------------------------- // // Writing typed values (have type byte) // // -------------------------------------------------------------------------------- + @Ensures("encodeStream.size() > old(encodeStream.size())") public final void encodeTypedMissing(final BCF2Type type) throws IOException { - encodeTyped(Collections.emptyList(), type); + encodeType(0, type); } - // todo -- should be specialized for each object type for efficiency - public final void encodeTyped(final Object v, final BCF2Type type) throws IOException { - encodeTyped(Collections.singletonList(v), type); + @Ensures("encodeStream.size() > old(encodeStream.size())") + public final void encodeTyped(final Object value, final BCF2Type type) throws IOException { + if ( value == null ) + encodeTypedMissing(type); + else { + switch ( type ) { + case INT8: + case INT16: + case INT32: encodeTypedInt((Integer)value, type); break; + case FLOAT: encodeTypedFloat((Double) value); break; + case CHAR: encodeTypedString((String) value); break; + default: throw new ReviewedStingException("Illegal type encountered " + type); + } + } } + @Ensures("encodeStream.size() > old(encodeStream.size())") + public final void encodeTypedInt(final int v) throws IOException { + final BCF2Type type = BCF2Utils.determineIntegerType(v); + encodeTypedInt(v, type); + } + + @Requires("type.isIntegerType()") + @Ensures("encodeStream.size() > old(encodeStream.size())") + public final void encodeTypedInt(final int v, final BCF2Type type) throws IOException { + encodeType(1, type); + encodeRawInt(v, type); + } + + @Ensures("encodeStream.size() > old(encodeStream.size())") + public final void encodeTypedString(final String s) throws IOException { + if ( s == null ) + encodeType(0, BCF2Type.CHAR); + else { + encodeType(s.length(), BCF2Type.CHAR); + for ( int i = 0; i < s.length(); i++ ) { + final byte c = (byte)s.charAt(i); + encodeRawChar(c); + } + } + } + + @Ensures("encodeStream.size() > old(encodeStream.size())") + public final void encodeTypedFloat(final double d) throws IOException { + encodeType(1, BCF2Type.FLOAT); + encodeRawFloat(d); + } + + @Ensures("encodeStream.size() > old(encodeStream.size())") public final void encodeTyped(List v, final BCF2Type type) throws IOException { if ( type == BCF2Type.CHAR && v.size() != 0 ) { final String s = v.size() > 1 ? BCF2Utils.collapseStringList((List) v) : (String)v.get(0); @@ -123,7 +148,7 @@ public final class BCF2Encoder { switch (type) { case INT8: case INT16: - case INT32: encodePrimitive((Integer)value, type); break; + case INT32: encodeRawBytes((Integer) value, type); break; case FLOAT: encodeRawFloat((Double) value); break; case CHAR: encodeRawChar((Byte) value); break; default: throw new ReviewedStingException("Illegal type encountered " + type); @@ -134,13 +159,13 @@ public final class BCF2Encoder { } } + @Ensures("encodeStream.size() > old(encodeStream.size())") public final void encodeRawMissingValue(final BCF2Type type) throws IOException { - encodePrimitive(type.getMissingBytes(), type); + encodeRawBytes(type.getMissingBytes(), type); } + @Requires("size >= 0") public final void encodeRawMissingValues(final int size, final BCF2Type type) throws IOException { - if ( size <= 0 ) throw new ReviewedStingException("BUG: size <= 0"); - for ( int i = 0; i < size; i++ ) encodeRawMissingValue(type); } @@ -156,25 +181,28 @@ public final class BCF2Encoder { } public final void encodeRawFloat(final double value) throws IOException { - encodePrimitive(Float.floatToIntBits((float)value), BCF2Type.FLOAT); + encodeRawBytes(Float.floatToIntBits((float) value), BCF2Type.FLOAT); } @Requires("size >= 0") + @Ensures("encodeStream.size() > old(encodeStream.size())") public final void encodeType(final int size, final BCF2Type type) throws IOException { final byte typeByte = BCF2Utils.encodeTypeDescriptor(size, type); encodeStream.write(typeByte); if ( BCF2Utils.willOverflow(size) ) { // write in the overflow size - encodeTyped(size, BCF2Utils.determineIntegerType(size)); + encodeTypedInt(size); } } + @Ensures("encodeStream.size() > old(encodeStream.size())") public final void encodeRawInt(final int value, final BCF2Type type) throws IOException { - encodePrimitive(value, type, encodeStream); + BCF2Utils.encodeRawBytes(value, type, encodeStream); } - public final void encodePrimitive(final int value, final BCF2Type type) throws IOException { - encodePrimitive(value, type, encodeStream); + @Ensures("encodeStream.size() > old(encodeStream.size())") + public final void encodeRawBytes(final int value, final BCF2Type type) throws IOException { + BCF2Utils.encodeRawBytes(value, type, encodeStream); } // -------------------------------------------------------------------------------- @@ -184,7 +212,7 @@ public final class BCF2Encoder { // -------------------------------------------------------------------------------- @Requires({"s != null", "sizeToWrite >= 0"}) - public void encodeString(final String s, final int sizeToWrite) throws IOException { + public void encodeRawString(final String s, final int sizeToWrite) throws IOException { final byte[] bytes = s.getBytes(); for ( int i = 0; i < sizeToWrite; i++ ) if ( i < bytes.length ) @@ -201,6 +229,7 @@ public final class BCF2Encoder { * @param o * @return */ + @Requires("o != null") public final BCF2Type encode(final Object o) throws IOException { if ( o == null ) throw new ReviewedStingException("Generic encode cannot deal with null values"); @@ -215,6 +244,7 @@ public final class BCF2Encoder { } } + @Requires("arg != null") private final BCF2Type determineBCFType(final Object arg) { final Object toType = arg instanceof List ? ((List)arg).get(0) : arg; @@ -228,33 +258,6 @@ public final class BCF2Encoder { throw new ReviewedStingException("No native encoding for Object of type " + arg.getClass().getSimpleName()); } - public final static void encodePrimitive(final int value, final BCF2Type type, final OutputStream encodeStream) throws IOException { - switch ( type.getSizeInBytes() ) { - case 1: - encodeStream.write(0xFF & value); - break; - case 2: - encodeStream.write((0xFF00 & value) >> 8); - encodeStream.write(0xFF & value); - break; - case 4: - encodeStream.write((0xFF000000 & value) >> 24); - encodeStream.write((0x00FF0000 & value) >> 16); - encodeStream.write((0x0000FF00 & value) >> 8); - encodeStream.write((0x000000FF & value)); - break; - default: - throw new ReviewedStingException("BUG: unexpected type size " + type); - } -// general case for reference -// for ( int i = type.getSizeInBytes() - 1; i >= 0; i-- ) { -// final int shift = i * 8; -// int mask = 0xFF << shift; -// int byteValue = (mask & value) >> shift; -// encodeStream.write(byteValue); -// } - } - private final List stringToBytes(final String v) throws IOException { if ( v == null || v.equals("") ) return Collections.emptyList(); diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2FieldEncoder.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2FieldEncoder.java index 8e5d6fdef..4266d1cfb 100644 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2FieldEncoder.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2FieldEncoder.java @@ -107,7 +107,7 @@ public abstract class BCF2FieldEncoder { */ @Requires("encoder != null") public final void writeFieldKey(final BCF2Encoder encoder) throws IOException { - encoder.encodeTyped(dictionaryOffset, dictionaryOffsetType); + encoder.encodeTypedInt(dictionaryOffset, dictionaryOffsetType); } @Override @@ -321,7 +321,7 @@ public abstract class BCF2FieldEncoder { @Override public void encodeValue(final BCF2Encoder encoder, final Object value, final BCF2Type type, final int minValues) throws IOException { final String s = javaStringToBCF2String(value); - encoder.encodeString(s, Math.max(s.length(), minValues)); + encoder.encodeRawString(s, Math.max(s.length(), minValues)); } // @@ -378,7 +378,7 @@ public abstract class BCF2FieldEncoder { @Override @Requires("minValues <= 1") public void encodeValue(final BCF2Encoder encoder, final Object value, final BCF2Type type, final int minValues) throws IOException { - encoder.encodePrimitive(1, getStaticType()); + encoder.encodeRawBytes(1, getStaticType()); } } diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2FieldWriter.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2FieldWriter.java index 1c62590a8..9e0c27045 100644 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2FieldWriter.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2FieldWriter.java @@ -255,10 +255,10 @@ public abstract class BCF2FieldWriter { final Allele a = g.getAllele(i); final int offset = getAlleleOffset(a); final int encoded = ((offset+1) << 1) | (g.isPhased() ? 0x01 : 0x00); - encoder.encodePrimitive(encoded, encodingType); + encoder.encodeRawBytes(encoded, encodingType); } else { // we need to pad with missing as we have ploidy < max for this sample - encoder.encodePrimitive(encodingType.getMissingBytes(), encodingType); + encoder.encodeRawBytes(encodingType.getMissingBytes(), encodingType); } } } diff --git a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Writer.java b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Writer.java index b328dfc59..ae5e2bdcb 100644 --- a/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Writer.java +++ b/public/java/src/org/broadinstitute/sting/utils/variantcontext/writer/BCF2Writer.java @@ -138,7 +138,7 @@ class BCF2Writer extends IndexingVariantContextWriter { final byte[] headerBytes = capture.toByteArray(); outputStream.write(BCF2Utils.MAGIC_HEADER_LINE); - BCF2Encoder.encodePrimitive(headerBytes.length, BCF2Type.INT32, outputStream); + BCF2Utils.encodeRawBytes(headerBytes.length, BCF2Type.INT32, outputStream); outputStream.write(headerBytes); } catch (IOException e) { throw new UserException.CouldNotCreateOutputFile("BCF2 stream", "Got IOException while trying to write BCF2 header", e); @@ -251,14 +251,14 @@ class BCF2Writer extends IndexingVariantContextWriter { } private void buildID( VariantContext vc ) throws IOException { - encoder.encodeTyped(vc.getID(), BCF2Type.CHAR); + encoder.encodeTypedString(vc.getID()); } private void buildAlleles( VariantContext vc ) throws IOException { final boolean needsPadding = VariantContextUtils.needsPadding(vc); for ( final Allele allele : vc.getAlleles() ) { final String s = needsPadding ? VariantContextUtils.padAllele(vc,allele) : allele.getDisplayString(); - encoder.encodeTyped(s, BCF2Type.CHAR); + encoder.encodeTypedString(s); } } @@ -320,8 +320,8 @@ class BCF2Writer extends IndexingVariantContextWriter { */ @Requires({"infoBlock.length > 0", "genotypesBlock.length >= 0"}) private void writeBlock(final byte[] infoBlock, final byte[] genotypesBlock) throws IOException { - BCF2Encoder.encodePrimitive(infoBlock.length, BCF2Type.INT32, outputStream); - BCF2Encoder.encodePrimitive(genotypesBlock.length, BCF2Type.INT32, outputStream); + BCF2Utils.encodeRawBytes(infoBlock.length, BCF2Type.INT32, outputStream); + BCF2Utils.encodeRawBytes(genotypesBlock.length, BCF2Type.INT32, outputStream); outputStream.write(infoBlock); outputStream.write(genotypesBlock); } @@ -330,7 +330,6 @@ class BCF2Writer extends IndexingVariantContextWriter { @Ensures("BCF2Type.INTEGERS.contains(result)") private final BCF2Type encodeStringsByRef(final Collection strings) throws IOException { final List offsets = new ArrayList(strings.size()); - BCF2Type maxType = BCF2Type.INT8; // start with the smallest size // iterate over strings until we find one that needs 16 bits, and break for ( final String string : strings ) { @@ -338,21 +337,11 @@ class BCF2Writer extends IndexingVariantContextWriter { if ( got == null ) throw new ReviewedStingException("Format error: could not find string " + string + " in header as required by BCF"); final int offset = got; offsets.add(offset); - - if ( maxType != BCF2Type.INT32) { // don't bother looking if we already are at 32 bit ints - final BCF2Type type1 = BCF2Utils.determineIntegerType(offset); - switch ( type1 ) { - case INT8: break; - case INT16: if ( maxType == BCF2Type.INT8 ) maxType = BCF2Type.INT16; break; - case INT32: maxType = BCF2Type.INT32; break; - default: throw new ReviewedStingException("Unexpected type " + type1); - } - } } - // we've checked the types for all strings, so write them out - encoder.encodeTyped(offsets, maxType); - return maxType; + final BCF2Type type = BCF2Utils.determineIntegerType(offsets); + encoder.encodeTyped(offsets, type); + return type; } /** diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java index 674513ba8..6cbd21824 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/annotator/VariantAnnotatorIntegrationTest.java @@ -40,7 +40,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testHasAnnotsAsking2() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G Standard --variant:VCF3 " + testDir + "vcfexample3.vcf -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,000-10,050,000", 1, - Arrays.asList("edf35b2cfd033d5abafc33fe739759e2")); + Arrays.asList("74d894fd31b449deffca88d0e465f01b")); executeTest("test file has annotations, asking for annotations, #2", spec); } @@ -74,7 +74,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testNoAnnotsAsking2() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G Standard --variant:VCF3 " + testDir + "vcfexample3empty.vcf -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,000,000-10,050,000", 1, - Arrays.asList("7e5b8ad0c7005036e39739de77546023")); + Arrays.asList("a25eacb0ceea2c082af349f8d7776c8a")); executeTest("test file doesn't have annotations, asking for annotations, #2", spec); } @@ -90,7 +90,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testOverwritingHeader() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G Standard --variant " + testDir + "vcfexample4.vcf -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -L 1:10,001,292", 1, - Arrays.asList("341fbac1802c54b1ee658b4bb54e963e")); + Arrays.asList("5c2fded3b6a96b0b0788086bbb2409ed")); executeTest("test overwriting header", spec); } @@ -98,7 +98,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testNoReads() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " -G Standard --variant " + testDir + "vcfexample3empty.vcf -L " + testDir + "vcfexample3empty.vcf", 1, - Arrays.asList("f44f1a10a2e3b8e749d1903db7429f44")); + Arrays.asList("c590088d85edce786604fd600f5d5e75")); executeTest("not passing it any reads", spec); } @@ -106,7 +106,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testDBTagWithDbsnp() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " --dbsnp " + b36dbSNP129 + " -G Standard --variant " + testDir + "vcfexample3empty.vcf -L " + testDir + "vcfexample3empty.vcf", 1, - Arrays.asList("cb0ee4261b72caf652c77c6d75bc7c85")); + Arrays.asList("ade9354a4cdd6cc92c169f252fb36f3f")); executeTest("getting DB tag with dbSNP", spec); } @@ -114,7 +114,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testMultipleIdsWithDbsnp() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " --alwaysAppendDbsnpId --dbsnp " + b36dbSNP129 + " -G Standard --variant " + testDir + "vcfexample3withIDs.vcf -L " + testDir + "vcfexample3withIDs.vcf", 1, - Arrays.asList("e2b9cb00137bb4f2cb86b77d30b35dd3")); + Arrays.asList("f496f40e1e9efa743e3b473f6fe6e6d3")); executeTest("adding multiple IDs with dbSNP", spec); } @@ -122,7 +122,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testDBTagWithHapMap() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " --comp:H3 " + testDir + "fakeHM3.vcf -G Standard --variant " + testDir + "vcfexample3empty.vcf -L " + testDir + "vcfexample3empty.vcf", 1, - Arrays.asList("b501a8f92abb1623e71c4593b68e8b31")); + Arrays.asList("d383fbd741d604625c9507d4da1c5a27")); executeTest("getting DB tag with HM3", spec); } @@ -138,7 +138,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testUsingExpression() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " --resource:foo " + testDir + "targetAnnotations.vcf -G Standard --variant:VCF3 " + testDir + "vcfexample3empty.vcf -E foo.AF -L " + testDir + "vcfexample3empty.vcf", 1, - Arrays.asList("33926902898f1c9ad871afe54c64e5b5")); + Arrays.asList("067792efcffea93ade632e52a80d0d8f")); executeTest("using expression", spec); } @@ -146,7 +146,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { public void testUsingExpressionWithID() { WalkerTestSpec spec = new WalkerTestSpec( baseTestString() + " --resource:foo " + testDir + "targetAnnotations.vcf -G Standard --variant:VCF3 " + testDir + "vcfexample3empty.vcf -E foo.ID -L " + testDir + "vcfexample3empty.vcf", 1, - Arrays.asList("636d9557a04648e639674069004a2315")); + Arrays.asList("66c68deb0508348324eb47d524e756de")); executeTest("using expression with ID", spec); } @@ -187,7 +187,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { @Test public void testTDTAnnotation() { - final String MD5 = "240e31b14db09b5ce43c40e21ca52dc2"; + final String MD5 = "81f85f0ce8cc36df7c717c478e100ba1"; WalkerTestSpec spec = new WalkerTestSpec( "-T VariantAnnotator -R " + b37KGReference + " -A TransmissionDisequilibriumTest --variant:vcf " + testDir + "ug.random50000.subset300bp.chr1.family.vcf" + " -L " + testDir + "ug.random50000.subset300bp.chr1.family.vcf --no_cmdline_in_header -ped " + testDir + "ug.random50000.family.ped -o %s", 1, @@ -198,7 +198,7 @@ public class VariantAnnotatorIntegrationTest extends WalkerTest { @Test public void testChromosomeCountsPed() { - final String MD5 = "d8ff51b00001e6f1b2cb7347b024c8bf"; + final String MD5 = "9830fe2247651377e68ad0b0894e9a4e"; WalkerTestSpec spec = new WalkerTestSpec( "-T VariantAnnotator -R " + b37KGReference + " -A ChromosomeCounts --variant:vcf " + testDir + "ug.random50000.subset300bp.chr1.family.vcf" + " -L " + testDir + "ug.random50000.subset300bp.chr1.family.vcf --no_cmdline_in_header -ped " + testDir + "ug.random50000.family.ped -o %s", 1, diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/beagle/BeagleIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/beagle/BeagleIntegrationTest.java index 52dbd93d3..e50d7b708 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/beagle/BeagleIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/beagle/BeagleIntegrationTest.java @@ -41,7 +41,7 @@ public class BeagleIntegrationTest extends WalkerTest { "--beagleR2:BEAGLE " + beagleValidationDataLocation + "inttestbgl.r2 " + "--beagleProbs:BEAGLE " + beagleValidationDataLocation + "inttestbgl.gprobs " + "--beaglePhased:BEAGLE " + beagleValidationDataLocation + "inttestbgl.phased " + - "-o %s --no_cmdline_in_header", 1, Arrays.asList("0f7ffd3c9c8010e765c26fce994be389")); + "-o %s --no_cmdline_in_header", 1, Arrays.asList("cdbf8cc557f5be9ac778e52338c0d906")); executeTest("test BeagleOutputToVCF", spec); } @@ -72,7 +72,7 @@ public class BeagleIntegrationTest extends WalkerTest { "--beagleR2:beagle /humgen/gsa-hpprojects/GATK/data/Validation_Data/EUR_beagle_in_test.r2 "+ "--beagleProbs:beagle /humgen/gsa-hpprojects/GATK/data/Validation_Data/EUR_beagle_in_test.gprobs.bgl "+ "--beaglePhased:beagle /humgen/gsa-hpprojects/GATK/data/Validation_Data/EUR_beagle_in_test.phased.bgl "+ - "-L 20:1-70000 -o %s --no_cmdline_in_header ",1,Arrays.asList("c92561016b7d8bd1d5c107bce8386b33")); + "-L 20:1-70000 -o %s --no_cmdline_in_header ",1,Arrays.asList("8c05bda0630155bcd0ebaf155ed5e491")); executeTest("testBeagleChangesSitesToRef",spec); } diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperIntegrationTest.java index 48f57c01f..e4a70db9d 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/genotyper/UnifiedGenotyperIntegrationTest.java @@ -29,7 +29,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testMultiSamplePilot1() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "low_coverage_CEU.chr1.10k-11k.bam -o %s -L 1:10,022,000-10,025,000", 1, - Arrays.asList("40dae29480e26efb117344e0e82e997c")); + Arrays.asList("b6c677b2375541fd2db775d0029571e6")); executeTest("test MultiSample Pilot1", spec); } @@ -37,7 +37,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testWithAllelesPassedIn1() { WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( baseCommand + " --genotyping_mode GENOTYPE_GIVEN_ALLELES -alleles " + testDir + "allelesForUG.vcf -I " + validationDataLocation + "pilot2_daughters.chr20.10k-11k.bam -o %s -L 20:10,000,000-10,025,000", 1, - Arrays.asList("96b9f6005d9437bf527344cf98319739")); + Arrays.asList("3400dfae6db8ed7e1351b1aa52341714")); executeTest("test MultiSample Pilot2 with alleles passed in", spec1); } @@ -45,7 +45,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testWithAllelesPassedIn2() { WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( baseCommand + " --output_mode EMIT_ALL_SITES --genotyping_mode GENOTYPE_GIVEN_ALLELES -alleles " + testDir + "allelesForUG.vcf -I " + validationDataLocation + "pilot2_daughters.chr20.10k-11k.bam -o %s -L 20:10,000,000-10,025,000", 1, - Arrays.asList("02c5c466ad26104b64166beb788a618c")); + Arrays.asList("0bb67b07ee5315d0486f3a0045a03757")); executeTest("test MultiSample Pilot2 with alleles passed in and emitting all sites", spec2); } @@ -53,7 +53,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testSingleSamplePilot2() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,100,000", 1, - Arrays.asList("7cc7ec249243a0dcb9e3a3033d4704e4")); + Arrays.asList("5c5bf3d2676e1a26d521f1f902f73526")); executeTest("test SingleSample Pilot2", spec); } @@ -61,7 +61,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testMultipleSNPAlleles() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( "-T UnifiedGenotyper -R " + b37KGReference + " -nosl --no_cmdline_in_header -glm BOTH --dbsnp " + b37dbSNP129 + " -I " + testDir + "multiallelic.snps.bam -o %s -L " + testDir + "multiallelic.snps.intervals", 1, - Arrays.asList("c0416efb6ff481889542e7807baa495c")); + Arrays.asList("eb6c8b7680f40b5fdac6e451c623ab81")); executeTest("test Multiple SNP alleles", spec); } @@ -77,7 +77,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testReverseTrim() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( "-T UnifiedGenotyper -R " + b37KGReference + " -nosl --no_cmdline_in_header -glm INDEL -I " + validationDataLocation + "CEUTrio.HiSeq.b37.chr20.10_11mb.bam -o %s -L 20:10289124 -L 20:10090289", 1, - Arrays.asList("976694d7aedd0272a3e2ba46e00581f5")); + Arrays.asList("0c195201574815559757885c693b6640")); executeTest("test reverse trim", spec); } @@ -87,7 +87,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // // -------------------------------------------------------------------------------------------------------------- - private final static String COMPRESSED_OUTPUT_MD5 = "c0f3d88386367fcd66d196b49a22bfaa"; + private final static String COMPRESSED_OUTPUT_MD5 = "6209a19a33ac9e187a9074cee549f93b"; @Test public void testCompressedOutput() { @@ -140,7 +140,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testMinBaseQualityScore() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,010,000 --min_base_quality_score 26", 1, - Arrays.asList("ac4c8e0fdaf94a7949ceb157d3c836a9")); + Arrays.asList("f48e4898c741c84354da3a0562cb44e1")); executeTest("test min_base_quality_score 26", spec); } @@ -148,7 +148,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testSLOD() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( "-T UnifiedGenotyper -R " + b36KGReference + " --no_cmdline_in_header -glm BOTH --dbsnp " + b36dbSNP129 + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,010,000", 1, - Arrays.asList("751cfe684b0ed19b0d509bb7a315d65d")); + Arrays.asList("f4ef85f1ed72e35b91b0469edf5956ad")); executeTest("test SLOD", spec); } @@ -156,7 +156,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testNDA() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommand + " --annotateNDA -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,010,000", 1, - Arrays.asList("cbf1b8b261f726abe43045806e17e841")); + Arrays.asList("ea219bdce9596e8649ad1d39e24e333a")); executeTest("test NDA", spec); } @@ -164,23 +164,23 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testCompTrack() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( "-T UnifiedGenotyper -R " + b36KGReference + " --no_cmdline_in_header -glm BOTH -comp:FOO " + b36dbSNP129 + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,010,000", 1, - Arrays.asList("70fd3b551f9def332393b7f3976440ac")); + Arrays.asList("9d5c51379e1b1031da5735aa8c965766")); executeTest("test using comp track", spec); } @Test public void testOutputParameterSitesOnly() { - testOutputParameters("-sites_only", "9700208609431548b2651dc582f1ea10"); + testOutputParameters("-sites_only", "ac8bea16be247d9e39d66a6305409f57"); } @Test public void testOutputParameterAllConfident() { - testOutputParameters("--output_mode EMIT_ALL_CONFIDENT_SITES", "b7bfc2a5298f86e3aef1bb70bebfb38e"); + testOutputParameters("--output_mode EMIT_ALL_CONFIDENT_SITES", "1e908a3164adbab10dcb6415e2645954"); } @Test public void testOutputParameterAllSites() { - testOutputParameters("--output_mode EMIT_ALL_SITES", "90dcce8cd6de92258f332b261e64a5e9"); + testOutputParameters("--output_mode EMIT_ALL_SITES", "eee23523912b51b249472e6d5fc0aece"); } private void testOutputParameters(final String args, final String md5) { @@ -194,7 +194,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testConfidence() { WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,010,000 -stand_call_conf 10 ", 1, - Arrays.asList("c5311739d1bba16cd59fb33e5f92ff49")); + Arrays.asList("355bee3d375e994e4a3b07f7a8d267a0")); executeTest("test confidence 1", spec1); } @@ -202,7 +202,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testConfidence2() { WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( baseCommand + " -I " + validationDataLocation + "NA12878.1kg.p2.chr1_10mb_11_mb.SLX.bam -o %s -L 1:10,000,000-10,010,000 -stand_emit_conf 10 ", 1, - Arrays.asList("189f5b7026595a0814e1eb1466834760")); + Arrays.asList("72d9ea93591b17535b7f5b53e1d064cb")); executeTest("test confidence 2", spec2); } @@ -213,12 +213,12 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { // -------------------------------------------------------------------------------------------------------------- @Test public void testHeterozyosity1() { - testHeterozosity( 0.01, "a818570e33316086ad5cb95992faca69" ); + testHeterozosity( 0.01, "0ffd19f90b05652e45f58e4a959ae304" ); } @Test public void testHeterozyosity2() { - testHeterozosity( 1.0 / 1850, "3bfdba9bcc9c84d326750ad4a879897f" ); + testHeterozosity( 1.0 / 1850, "b6dbfb567e433273fe90b0d038556a9f" ); } private void testHeterozosity(final double arg, final String md5) { @@ -242,7 +242,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { " -o %s" + " -L 1:10,000,000-10,100,000", 1, - Arrays.asList("1bd18653e8d9bf72c180142c2287eb5e")); + Arrays.asList("c9675bc1ca6c82cb60d39d9395881c96")); executeTest(String.format("test multiple technologies"), spec); } @@ -261,7 +261,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { " -L 1:10,000,000-10,100,000" + " -baq CALCULATE_AS_NECESSARY", 1, - Arrays.asList("1defb30f6b870fbe5bcb27aed22ffb04")); + Arrays.asList("6e4089986d08d46a8d0b4ddfd611a7c3")); executeTest(String.format("test calling with BAQ"), spec); } @@ -280,7 +280,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { " -o %s" + " -L 1:10,000,000-10,500,000", 1, - Arrays.asList("2d52f5243da578c4070b03881852aae3")); + Arrays.asList("80a5a499cc553ee579ba93dcb967e5ef")); executeTest(String.format("test indel caller in SLX"), spec); } @@ -308,7 +308,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { " -o %s" + " -L 1:10,000,000-10,500,000", 1, - Arrays.asList("80f0221c47c30a03cb902b1c54c1eb12")); + Arrays.asList("d77a379429ca848cea552c4697b86472")); executeTest(String.format("test indel calling, multiple technologies"), spec); } @@ -318,7 +318,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( baseCommandIndels + " --genotyping_mode GENOTYPE_GIVEN_ALLELES -alleles " + testDir + "indelAllelesForUG.vcf -I " + validationDataLocation + "pilot2_daughters.chr20.10k-11k.bam -o %s -L 20:10,000,000-10,100,000", 1, - Arrays.asList("ce40ff952025e806638156c3cd002927")); + Arrays.asList("f83c4f370ed0a343ca0808e5da3d997d")); executeTest("test MultiSample Pilot2 indels with alleles passed in", spec); } @@ -328,7 +328,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { baseCommandIndels + " --output_mode EMIT_ALL_SITES --genotyping_mode GENOTYPE_GIVEN_ALLELES -alleles " + testDir + "indelAllelesForUG.vcf -I " + validationDataLocation + "pilot2_daughters.chr20.10k-11k.bam -o %s -L 20:10,000,000-10,100,000", 1, - Arrays.asList("4738fa9e68a010e05c64ae965ed94de3")); + Arrays.asList("ca5459e93a9955aec8f93abf7f84e5ed")); executeTest("test MultiSample Pilot2 indels with alleles passed in and emitting all sites", spec); } @@ -336,7 +336,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testMultiSampleIndels1() { WalkerTest.WalkerTestSpec spec1 = new WalkerTest.WalkerTestSpec( baseCommandIndels + " -I " + validationDataLocation + "low_coverage_CEU.chr1.10k-11k.bam -o %s -L 1:10450700-10551000", 1, - Arrays.asList("0b0114364680a23e125f469208b96c6f")); + Arrays.asList("04aaeff1e9f97bbf2dc2d6d754f25a0d")); List result = executeTest("test MultiSample Pilot1 CEU indels", spec1).getFirst(); WalkerTest.WalkerTestSpec spec2 = new WalkerTest.WalkerTestSpec( @@ -385,7 +385,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testMinIndelFraction0() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( assessMinIndelFraction + " -minIndelFrac 0.0", 1, - Arrays.asList("eb9d8d1b19617190762f62bad139263a")); + Arrays.asList("90e8140f114e026f2a0e7a881baa3f20")); executeTest("test minIndelFraction 0.0", spec); } @@ -393,7 +393,7 @@ public class UnifiedGenotyperIntegrationTest extends WalkerTest { public void testMinIndelFraction25() { WalkerTest.WalkerTestSpec spec = new WalkerTest.WalkerTestSpec( assessMinIndelFraction + " -minIndelFrac 0.25", 1, - Arrays.asList("952f46506d3ef9c11cafcc072a00750a")); + Arrays.asList("db70b7a015fa882c8ce1e4c43f589f22")); executeTest("test minIndelFraction 0.25", spec); } diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java index f206e47dc..dce60e228 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsIntegrationTest.java @@ -78,23 +78,23 @@ public class CombineVariantsIntegrationTest extends WalkerTest { executeTest("combine PLs 1:" + new File(file1).getName() + " 2:" + new File(file2).getName(), spec); } - @Test public void test1SNP() { test1InOut("pilot2.snps.vcf4.genotypes.vcf", "d406bdc37f85d69cb3bf11a173399078"); } - @Test public void test2SNP() { test1InOut("pilot2.snps.vcf4.genotypes.vcf", "f780b4f5b424d9c85fc923004ec830ef", " -setKey foo"); } - @Test public void test3SNP() { test1InOut("pilot2.snps.vcf4.genotypes.vcf", "e93fdfaf8667b433dfe918ddc4134df2", " -setKey null"); } - @Test public void testOfficialCEUPilotCalls() { test1InOut("CEU.trio.2010_03.genotypes.vcf.gz", "253d44579b9d726c4700fd1f3a80b857"); } // official project VCF files in tabix format + @Test public void test1SNP() { test1InOut("pilot2.snps.vcf4.genotypes.vcf", "6469fce8a5cd5a0f77e5ac5d9e9e192b"); } + @Test public void test2SNP() { test1InOut("pilot2.snps.vcf4.genotypes.vcf", "a4cedaa83d54e34cafc3ac4b80acf5b4", " -setKey foo"); } + @Test public void test3SNP() { test1InOut("pilot2.snps.vcf4.genotypes.vcf", "ac58a5fde17661e2a19004ca954d9781", " -setKey null"); } + @Test public void testOfficialCEUPilotCalls() { test1InOut("CEU.trio.2010_03.genotypes.vcf.gz", "67a8076e30b4bca0ea5acdc9cd26a4e0"); } // official project VCF files in tabix format - @Test public void test1Indel1() { test1InOut("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "adf8f5a11fe0dce021c32938ecc8125b"); } - @Test public void test1Indel2() { test1InOut("CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "8e5826184e4999f8639918b443e863ee"); } + @Test public void test1Indel1() { test1InOut("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "ef2d249ea4b25311966e038aac05c661"); } + @Test public void test1Indel2() { test1InOut("CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "cdb448aaa92ca5a9e393d875b42581b3"); } - @Test public void combineWithPLs() { combinePLs("combine.3.vcf", "combine.4.vcf", "9596b94b3506923109d877b255be78c4"); } + @Test public void combineWithPLs() { combinePLs("combine.3.vcf", "combine.4.vcf", "284083f60792c5f817899445dfa63a42"); } - @Test public void combineTrioCalls() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "YRI.trio.2010_03.genotypes.vcf.gz", "", "bc09ce3328339268838ec4e0819c940a"); } // official project VCF files in tabix format + @Test public void combineTrioCalls() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "YRI.trio.2010_03.genotypes.vcf.gz", "", "4efdf983918db822e4ac13d911509576"); } // official project VCF files in tabix format @Test public void combineTrioCallsMin() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "YRI.trio.2010_03.genotypes.vcf.gz", " -minimalVCF", "848d4408ee953053d2307cefebc6bd6d"); } // official project VCF files in tabix format - @Test public void combine2Indels() { combine2("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "06cd6666003cea545c21948bdec0ac39"); } + @Test public void combine2Indels() { combine2("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "91f6087e6e2bf3df4d1c9700eaff958b"); } - @Test public void combineSNPsAndIndels() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "a66fbe674c7de0ecaeb0d3062393bfae"); } + @Test public void combineSNPsAndIndels() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "a9be239ab5e03e7e97caef58a3841dd2"); } - @Test public void uniqueSNPs() { combine2("pilot2.snps.vcf4.genotypes.vcf", "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "", "7f9272950475fe0c95c00752510456eb"); } + @Test public void uniqueSNPs() { combine2("pilot2.snps.vcf4.genotypes.vcf", "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "", "0b1815c699e71e143ed129bfadaffbcb"); } @Test public void omniHM3Union() { combineSites(" -filteredRecordsMergeType KEEP_IF_ANY_UNFILTERED", "def52bcd3942bbe39cd7ebe845c4f206"); } @Test public void omniHM3Intersect() { combineSites(" -filteredRecordsMergeType KEEP_IF_ALL_UNFILTERED", "5f61145949180bf2a0cd342d8e064860"); } @@ -110,7 +110,7 @@ public class CombineVariantsIntegrationTest extends WalkerTest { " -priority NA19240_BGI,NA19240_ILLUMINA,NA19240_WUGSC,denovoInfo" + " -genotypeMergeOptions UNIQUIFY -L 1"), 1, - Arrays.asList("59cbe0d9a2aa562b59bd546e20b9abad")); + Arrays.asList("c0d4d601aa5d2b29927c535868448d2a")); executeTest("threeWayWithRefs", spec); } @@ -127,7 +127,7 @@ public class CombineVariantsIntegrationTest extends WalkerTest { executeTest("combineComplexSites 1:" + new File(file1).getName() + " 2:" + new File(file2).getName() + " args = " + args, spec); } - @Test public void complexTestFull() { combineComplexSites("", "69da09747b0d02e516672dd1f36d9f2f"); } + @Test public void complexTestFull() { combineComplexSites("", "7d587bf49bbc9f8239476bab84bf9708"); } @Test public void complexTestMinimal() { combineComplexSites(" -minimalVCF", "4d1e0c12d95f50e472493fc14af3cc06"); } @Test public void complexTestSitesOnly() { combineComplexSites(" -sites_only", "9a98b01b9b2a28ae6af3125edc131dea"); } @Test public void complexTestSitesOnlyMinimal() { combineComplexSites(" -sites_only -minimalVCF", "9a98b01b9b2a28ae6af3125edc131dea"); } diff --git a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariantsIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariantsIntegrationTest.java index 8eecfa5be..1f2d5b5c5 100755 --- a/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariantsIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/SelectVariantsIntegrationTest.java @@ -31,7 +31,7 @@ public class SelectVariantsIntegrationTest extends WalkerTest { WalkerTestSpec spec = new WalkerTestSpec( baseTestString(" -sn A -sn B -sn C --variant " + testfile), 1, - Arrays.asList("6c1a9e64a00a5b312531729bc73b5183") + Arrays.asList("b2ee12588ebda200727762a903b8c972") ); executeTest("testRepeatedLineSelection--" + testfile, spec); @@ -59,7 +59,7 @@ public class SelectVariantsIntegrationTest extends WalkerTest { WalkerTestSpec spec = new WalkerTestSpec( baseTestString(" -sn A -se '[CDH]' -sf " + samplesFile + " -env -ef -select 'DP < 250' --variant " + testfile), 1, - Arrays.asList("eb1d0ff1db27413c14ea1af52b2f74c8") + Arrays.asList("446eea62630bc5325ffab30b9b9fbfe4") ); spec.disableShadowBCF(); executeTest("testComplexSelection--" + testfile, spec); @@ -73,7 +73,7 @@ public class SelectVariantsIntegrationTest extends WalkerTest { WalkerTestSpec spec = new WalkerTestSpec( "-T SelectVariants -R " + b36KGReference + " -L 1:1-1000000 -o %s --no_cmdline_in_header -xl_sn A -xl_sf " + samplesFile + " --variant " + testfile, 1, - Arrays.asList("ed0f40334a82aa8e4698d5bfd8ed4d52") + Arrays.asList("b24f31db48d254d8fe15295955173486") ); spec.disableShadowBCF(); @@ -115,7 +115,7 @@ public class SelectVariantsIntegrationTest extends WalkerTest { WalkerTestSpec spec = new WalkerTestSpec( "-T SelectVariants -R " + b36KGReference + " -sn NA12892 --variant:dbsnp " + testFile + " -o %s --no_cmdline_in_header", 1, - Arrays.asList("4eeab0dd18712d0ca5ebe77c24ec989f") + Arrays.asList("8bf557aaa07eccb294c81f491225bf9e") ); executeTest("testUsingDbsnpName--" + testFile, spec); @@ -169,7 +169,7 @@ public class SelectVariantsIntegrationTest extends WalkerTest { spec = new WalkerTestSpec( baseTestString(" -sn A -se '[CDH]' -sf " + samplesFile + " -env -ef -select 'DP < 250' --variant " + testfile + " -nt 2"), 1, - Arrays.asList("eb1d0ff1db27413c14ea1af52b2f74c8") + Arrays.asList("446eea62630bc5325ffab30b9b9fbfe4") ); spec.disableShadowBCF(); executeTest("testParallelization (2 threads)--" + testfile, spec); @@ -183,7 +183,7 @@ public class SelectVariantsIntegrationTest extends WalkerTest { spec = new WalkerTestSpec( baseTestString(" -sn A -se '[CDH]' -sf " + samplesFile + " -env -ef -select 'DP < 250' --variant " + testfile + " -nt 4"), 1, - Arrays.asList("eb1d0ff1db27413c14ea1af52b2f74c8") + Arrays.asList("446eea62630bc5325ffab30b9b9fbfe4") ); spec.disableShadowBCF(); @@ -197,7 +197,7 @@ public class SelectVariantsIntegrationTest extends WalkerTest { WalkerTestSpec spec = new WalkerTestSpec( "-T SelectVariants -R " + b37KGReference + " -o %s --no_cmdline_in_header -sf " + samplesFile + " --excludeNonVariants --variant " + testfile, 1, - Arrays.asList("e3d2e00dc7bfff85b87f78b6162ad333") + Arrays.asList("2f2a342812ba914bcce666e42ef761d7") ); executeTest("test select from multi allelic with excludeNonVariants --" + testfile, spec); } diff --git a/public/java/test/org/broadinstitute/sting/utils/codecs/bcf2/BCF2EncoderDecoderUnitTest.java b/public/java/test/org/broadinstitute/sting/utils/codecs/bcf2/BCF2EncoderDecoderUnitTest.java index 0e42c3173..ef8a67d47 100644 --- a/public/java/test/org/broadinstitute/sting/utils/codecs/bcf2/BCF2EncoderDecoderUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/codecs/bcf2/BCF2EncoderDecoderUnitTest.java @@ -189,6 +189,70 @@ public class BCF2EncoderDecoderUnitTest extends BaseTest { return tests.toArray(new Object[][]{}); } + private interface EncodeMe { + public void encode(final BCF2Encoder encoder, final BCF2TypedValue tv) throws IOException; + } + + + @Test(dataProvider = "BCF2EncodingTestProviderBasicTypes") + public void testBCF2BasicTypesWithStaticCalls(final List toEncode) throws IOException { + testBCF2BasicTypesWithEncodeMe(toEncode, + new EncodeMe() { + @Override + public void encode(final BCF2Encoder encoder, final BCF2TypedValue tv) throws IOException { + switch ( tv.type ) { + case INT8: + case INT16: + case INT32: + encoder.encodeTypedInt((Integer)tv.value, tv.type); + break; + case FLOAT: + encoder.encodeTypedFloat((Double)tv.value); + break; + case CHAR: + encoder.encodeTypedString((String)tv.value); + break; + } + } + }); + } + + @Test(dataProvider = "BCF2EncodingTestProviderBasicTypes") + public void testBCF2BasicTypesWithObjectType(final List toEncode) throws IOException { + testBCF2BasicTypesWithEncodeMe(toEncode, + new EncodeMe() { + @Override + public void encode(final BCF2Encoder encoder, final BCF2TypedValue tv) throws IOException { + encoder.encodeTyped(tv.value, tv.type); + } + }); + } + + @Test(dataProvider = "BCF2EncodingTestProviderBasicTypes") + public void testBCF2BasicTypesWithObjectNoType(final List toEncode) throws IOException { + testBCF2BasicTypesWithEncodeMe(toEncode, + new EncodeMe() { + @Override + public void encode(final BCF2Encoder encoder, final BCF2TypedValue tv) throws IOException { + encoder.encode(tv.value); + } + }); + } + + public void testBCF2BasicTypesWithEncodeMe(final List toEncode, final EncodeMe func) throws IOException { + for ( final BCF2TypedValue tv : toEncode ) { + BCF2Encoder encoder = new BCF2Encoder(); + func.encode(encoder, tv); + + BCF2Decoder decoder = new BCF2Decoder(encoder.getRecordBytes()); + final Object decoded = decoder.decodeTypedValue(); + + Assert.assertNotNull(decoded); + Assert.assertFalse(decoded instanceof List); + myAssertEquals(tv, decoded); + } + } + @Test(dataProvider = "BCF2EncodingTestProviderBasicTypes") public void testBCF2EncodingVectors(final List toEncode) throws IOException { for ( final BCF2TypedValue tv : toEncode ) {