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 ) {