From c3a933ce84a963b46b70f73888b0918984fcdb49 Mon Sep 17 00:00:00 2001 From: Michael McCowan Date: Mon, 19 Aug 2013 12:42:28 -0400 Subject: [PATCH] Adaptations to accomodate Tribble API changes, comprising mostly of the following. * Refactoring implementations of readHeader(LineReader) -> readActualHeader(LineIterator), including nullary implementations where applicable. * Galvanizing fo generic types. * Test fixups, mostly to pass around LineIterators instead of LineReaders. * New rev of tribble, which incorporates a fix that addresses a problem with TribbleIndexedFeatureReader reading a header twice in some instances. * New rev of sam, to make AbstractIterator visible (was moved from picard -> sam in Tribble API refactor). --- .../HaplotypeCallerIntegrationTest.java | 8 +-- .../variantutils/CombineVariantsUnitTest.java | 15 +++-- .../ConcordanceMetricsUnitTest.java | 60 ++++++++---------- .../storage/VariantContextWriterStorage.java | 16 ++--- .../utils/codecs/beagle/BeagleCodec.java | 13 ++-- .../utils/codecs/hapmap/RawHapMapCodec.java | 20 +++--- .../utils/codecs/refseq/RefSeqCodec.java | 10 ++- .../codecs/sampileup/SAMPileupCodec.java | 8 ++- .../utils/codecs/samread/SAMReadCodec.java | 8 ++- .../sting/utils/codecs/table/TableCodec.java | 43 ++++++------- .../sting/utils/variant/GATKVCFUtils.java | 57 +++++++---------- .../org/broadinstitute/sting/BaseTest.java | 6 +- .../gatk/EngineFeaturesIntegrationTest.java | 9 ++- .../gatk/refdata/utils/TestFeatureReader.java | 2 +- .../BandPassActivityProfileUnitTest.java | 8 ++- .../utils/codecs/hapmap/HapMapUnitTest.java | 39 ++++++------ .../variant/VariantContextBenchmark.java | 4 +- .../sting/queue/util/VCF_BAM_utilities.scala | 6 +- settings/repository/net.sf/sam-1.96.1515.xml | 3 - .../{sam-1.96.1515.jar => sam-1.96.1525.jar} | Bin 623321 -> 636980 bytes settings/repository/net.sf/sam-1.96.1525.xml | 3 + ...le-1.96.1525.jar => tribble-1.96.1526.jar} | Bin 301966 -> 302059 bytes ...le-1.96.1525.xml => tribble-1.96.1526.xml} | 2 +- 23 files changed, 173 insertions(+), 167 deletions(-) delete mode 100644 settings/repository/net.sf/sam-1.96.1515.xml rename settings/repository/net.sf/{sam-1.96.1515.jar => sam-1.96.1525.jar} (94%) mode change 100644 => 100755 create mode 100644 settings/repository/net.sf/sam-1.96.1525.xml rename settings/repository/org.broad/{tribble-1.96.1525.jar => tribble-1.96.1526.jar} (93%) rename settings/repository/org.broad/{tribble-1.96.1525.xml => tribble-1.96.1526.xml} (76%) diff --git a/protected/java/test/org/broadinstitute/sting/gatk/walkers/haplotypecaller/HaplotypeCallerIntegrationTest.java b/protected/java/test/org/broadinstitute/sting/gatk/walkers/haplotypecaller/HaplotypeCallerIntegrationTest.java index e3f7bd706..e216a8af2 100644 --- a/protected/java/test/org/broadinstitute/sting/gatk/walkers/haplotypecaller/HaplotypeCallerIntegrationTest.java +++ b/protected/java/test/org/broadinstitute/sting/gatk/walkers/haplotypecaller/HaplotypeCallerIntegrationTest.java @@ -47,7 +47,7 @@ package org.broadinstitute.sting.gatk.walkers.haplotypecaller; import net.sf.picard.reference.IndexedFastaSequenceFile; -import org.broad.tribble.readers.AsciiLineReader; +import org.broad.tribble.readers.LineIterator; import org.broad.tribble.readers.PositionalBufferedStream; import org.broadinstitute.sting.WalkerTest; import org.broadinstitute.sting.utils.GenomeLoc; @@ -190,9 +190,9 @@ public class HaplotypeCallerIntegrationTest extends WalkerTest { // confirm that the call is the correct one final VCFCodec codec = new VCFCodec(); final FileInputStream s = new FileInputStream(outputVCF); - final AsciiLineReader lineReader = new AsciiLineReader(new PositionalBufferedStream(s)); - codec.readHeader(lineReader); - final String line = lineReader.readLine(); + final LineIterator lineIterator = codec.makeSourceFromStream(new PositionalBufferedStream(s)); + codec.readHeader(lineIterator); + final String line = lineIterator.next(); Assert.assertFalse(line == null); final VariantContext vc = codec.decode(line); Assert.assertTrue(vc.isBiallelic()); diff --git a/protected/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsUnitTest.java b/protected/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsUnitTest.java index 6d38940bc..f369ad210 100644 --- a/protected/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsUnitTest.java +++ b/protected/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/CombineVariantsUnitTest.java @@ -46,16 +46,20 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; -import org.broad.tribble.readers.AsciiLineReader; import org.broad.tribble.readers.PositionalBufferedStream; import org.broadinstitute.sting.utils.SampleUtils; -import org.broadinstitute.variant.vcf.*; +import org.broadinstitute.variant.vcf.VCFCodec; +import org.broadinstitute.variant.vcf.VCFHeader; +import org.broadinstitute.variant.vcf.VCFHeaderLine; +import org.broadinstitute.variant.vcf.VCFUtils; import org.testng.Assert; - import org.testng.annotations.Test; import java.io.StringBufferInputStream; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; /** * test out pieces of the combine variants code @@ -154,7 +158,8 @@ public class CombineVariantsUnitTest { private VCFHeader createHeader(String headerStr) { VCFCodec codec = new VCFCodec(); - VCFHeader head = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(headerStr)))); + VCFHeader head = null; + head = (VCFHeader) codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(headerStr)))); return head; } diff --git a/protected/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/ConcordanceMetricsUnitTest.java b/protected/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/ConcordanceMetricsUnitTest.java index bd9ff4f80..50c896450 100755 --- a/protected/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/ConcordanceMetricsUnitTest.java +++ b/protected/java/test/org/broadinstitute/sting/gatk/walkers/variantutils/ConcordanceMetricsUnitTest.java @@ -46,25 +46,20 @@ package org.broadinstitute.sting.gatk.walkers.variantutils; +import net.sf.picard.reference.ReferenceSequenceFile; +import org.broad.tribble.readers.PositionalBufferedStream; import org.broadinstitute.sting.BaseTest; -import org.broadinstitute.sting.utils.GenomeLocParser; +import org.broadinstitute.sting.utils.BaseUtils; import org.broadinstitute.sting.utils.GenomeLoc; +import org.broadinstitute.sting.utils.GenomeLocParser; import org.broadinstitute.sting.utils.collections.Pair; import org.broadinstitute.sting.utils.fasta.CachingIndexedFastaSequenceFile; -import org.broadinstitute.sting.utils.BaseUtils; -import org.broadinstitute.variant.variantcontext.Allele; -import org.broadinstitute.variant.variantcontext.Genotype; -import org.broadinstitute.variant.variantcontext.GenotypeBuilder; -import org.broadinstitute.variant.variantcontext.GenotypeType; -import org.broadinstitute.variant.variantcontext.VariantContext; -import org.broadinstitute.variant.variantcontext.VariantContextBuilder; +import org.broadinstitute.variant.variantcontext.*; import org.broadinstitute.variant.vcf.VCFCodec; import org.broadinstitute.variant.vcf.VCFHeader; -import org.testng.annotations.Test; -import org.broad.tribble.readers.AsciiLineReader; -import org.broad.tribble.readers.PositionalBufferedStream; import org.testng.Assert; import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; import java.io.File; import java.io.FileNotFoundException; @@ -72,7 +67,6 @@ import java.io.StringBufferInputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import net.sf.picard.reference.ReferenceSequenceFile; public class ConcordanceMetricsUnitTest extends BaseTest { @@ -139,8 +133,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { VariantContext eval = data.getFirst(); VariantContext truth = data.getSecond(); VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); - VCFHeader compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); ConcordanceMetrics metrics = new ConcordanceMetrics(evalHeader,compHeader); metrics.update(eval,truth); Assert.assertEquals(eval.getGenotype("test1_sample2").getType().ordinal(), 2); @@ -189,8 +183,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { VariantContext eval = data.getFirst(); VariantContext truth = data.getSecond(); VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); - VCFHeader compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); ConcordanceMetrics metrics = new ConcordanceMetrics(evalHeader,compHeader); metrics.update(eval,truth); Assert.assertEquals(eval.getGenotype("test1_sample2").getType().ordinal(), 2); @@ -209,8 +203,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { eval = data.getSecond(); truth = data.getFirst(); codec = new VCFCodec(); - evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); - compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); metrics = new ConcordanceMetrics(evalHeader,compHeader); metrics.update(eval,truth); Assert.assertEquals(eval.getGenotype("test1_sample2").getType().ordinal(), 2); @@ -264,8 +258,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { VariantContext eval = data.getFirst(); VariantContext truth = data.getSecond(); VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); - VCFHeader compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); ConcordanceMetrics metrics = new ConcordanceMetrics(evalHeader,compHeader); metrics.update(eval,truth); Assert.assertEquals(metrics.getGenotypeConcordance("test1_sample1").getnMismatchingAlt(),1); @@ -317,8 +311,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { VariantContext eval = data.getFirst(); VariantContext truth = data.getSecond(); VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); - VCFHeader compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); ConcordanceMetrics metrics = new ConcordanceMetrics(evalHeader,compHeader); metrics.update(eval,truth); Assert.assertEquals(metrics.getGenotypeConcordance("test1_sample2").getnMismatchingAlt(),0); @@ -366,8 +360,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { VariantContext eval = data.getFirst(); VariantContext truth = data.getSecond(); VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); - VCFHeader compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); ConcordanceMetrics metrics = new ConcordanceMetrics(evalHeader,compHeader); metrics.update(eval,truth); Assert.assertTrue(eval.getGenotype("test1_sample2").getType().equals(GenotypeType.UNAVAILABLE)); @@ -520,8 +514,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { List> data = getData6(); VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_2_HEADER)))); - VCFHeader compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_2_HEADER)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_2_HEADER)))); + VCFHeader compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_2_HEADER)))); ConcordanceMetrics metrics = new ConcordanceMetrics(evalHeader,compHeader); for ( Pair contextPair : data ) { @@ -554,8 +548,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { VariantContext eval = data.getFirst(); VariantContext truth = data.getSecond(); VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); - VCFHeader compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); + VCFHeader compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_1_HEADER)))); ConcordanceMetrics metrics = new ConcordanceMetrics(evalHeader,compHeader); int[][] table = metrics.getOverallGenotypeConcordance().getTable(); // set up the table @@ -588,9 +582,9 @@ public class ConcordanceMetricsUnitTest extends BaseTest { @Test(enabled=true) public void testRobustness() { VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_3_HEADER_1)))); - VCFHeader disjointCompHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_3_HEADER_2)))); - VCFHeader overlapCompHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_3_HEADER_3)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_3_HEADER_1)))); + VCFHeader disjointCompHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_3_HEADER_2)))); + VCFHeader overlapCompHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_3_HEADER_3)))); ConcordanceMetrics disjointMetrics = new ConcordanceMetrics(evalHeader,disjointCompHeader); ConcordanceMetrics overlapMetrics = new ConcordanceMetrics(evalHeader,overlapCompHeader); @@ -720,8 +714,8 @@ public class ConcordanceMetricsUnitTest extends BaseTest { @Test(enabled = true) public void testSites() { VCFCodec codec = new VCFCodec(); - VCFHeader evalHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_2_HEADER)))); - VCFHeader compHeader = (VCFHeader)codec.readHeader(new AsciiLineReader(new PositionalBufferedStream(new StringBufferInputStream(TEST_2_HEADER)))); + VCFHeader evalHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_2_HEADER)))); + VCFHeader compHeader = (VCFHeader)codec.readActualHeader(codec.makeSourceFromStream(new PositionalBufferedStream(new StringBufferInputStream(TEST_2_HEADER)))); ConcordanceMetrics metrics = new ConcordanceMetrics(evalHeader,compHeader); List> data = getData7(); diff --git a/public/java/src/org/broadinstitute/sting/gatk/io/storage/VariantContextWriterStorage.java b/public/java/src/org/broadinstitute/sting/gatk/io/storage/VariantContextWriterStorage.java index 80841bae7..e1dc36f5c 100644 --- a/public/java/src/org/broadinstitute/sting/gatk/io/storage/VariantContextWriterStorage.java +++ b/public/java/src/org/broadinstitute/sting/gatk/io/storage/VariantContextWriterStorage.java @@ -28,17 +28,18 @@ package org.broadinstitute.sting.gatk.io.storage; import net.sf.samtools.util.BlockCompressedOutputStream; import org.apache.log4j.Logger; import org.broad.tribble.AbstractFeatureReader; +import org.broad.tribble.Feature; import org.broad.tribble.FeatureCodec; import org.broadinstitute.sting.gatk.io.stubs.VariantContextWriterStub; import org.broadinstitute.sting.gatk.refdata.tracks.FeatureManager; -import org.broadinstitute.variant.bcf2.BCF2Utils; -import org.broadinstitute.variant.vcf.VCFHeader; import org.broadinstitute.sting.utils.exceptions.ReviewedStingException; import org.broadinstitute.sting.utils.exceptions.UserException; +import org.broadinstitute.variant.bcf2.BCF2Utils; import org.broadinstitute.variant.variantcontext.VariantContext; import org.broadinstitute.variant.variantcontext.writer.Options; import org.broadinstitute.variant.variantcontext.writer.VariantContextWriter; import org.broadinstitute.variant.variantcontext.writer.VariantContextWriterFactory; +import org.broadinstitute.variant.vcf.VCFHeader; import java.io.*; import java.util.Arrays; @@ -205,12 +206,11 @@ public class VariantContextWriterStorage implements Storage codec = fd.getCodec(); - final AbstractFeatureReader source = - AbstractFeatureReader.getFeatureReader(file.getAbsolutePath(), codec, false); - - for ( final VariantContext vc : source.iterator() ) { - target.writer.add(vc); + final FeatureCodec codec = fd.getCodec(); + final AbstractFeatureReader source = AbstractFeatureReader.getFeatureReader(file.getAbsolutePath(), codec, false); + + for ( final Feature vc : source.iterator() ) { + target.writer.add((VariantContext) vc); } source.close(); diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleCodec.java index 6ab3c9a16..4a6becf6f 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleCodec.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/beagle/BeagleCodec.java @@ -51,9 +51,8 @@ package org.broadinstitute.sting.utils.codecs.beagle; import org.broad.tribble.AsciiFeatureCodec; -import org.broad.tribble.Feature; import org.broad.tribble.exception.CodecLineParsingException; -import org.broad.tribble.readers.LineReader; +import org.broad.tribble.readers.LineIterator; import org.broadinstitute.sting.gatk.refdata.ReferenceDependentFeatureCodec; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.GenomeLocParser; @@ -131,8 +130,8 @@ public class BeagleCodec extends AsciiFeatureCodec implements Ref this.genomeLocParser = genomeLocParser; } - public Object readHeader(LineReader reader) - { + @Override + public Object readActualHeader(LineIterator reader) { int[] lineCounter = new int[1]; try { header = readHeader(reader, lineCounter); @@ -181,14 +180,14 @@ public class BeagleCodec extends AsciiFeatureCodec implements Ref return header; } - private static String[] readHeader(final LineReader source, int[] lineCounter) throws IOException { + private static String[] readHeader(final LineIterator source, int[] lineCounter) throws IOException { String[] header = null; int numLines = 0; //find the 1st line that's non-empty and not a comment - String line; - while( (line = source.readLine()) != null ) { + while(source.hasNext()) { + final String line = source.next(); numLines++; if ( line.trim().isEmpty() ) { continue; diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/hapmap/RawHapMapCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/hapmap/RawHapMapCodec.java index 38ff35c3f..b2b31b572 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/hapmap/RawHapMapCodec.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/hapmap/RawHapMapCodec.java @@ -28,9 +28,7 @@ package org.broadinstitute.sting.utils.codecs.hapmap; import org.broad.tribble.AsciiFeatureCodec; import org.broad.tribble.FeatureCodecHeader; import org.broad.tribble.annotation.Strand; -import org.broad.tribble.readers.AsciiLineReader; -import org.broad.tribble.readers.LineReader; -import org.broad.tribble.readers.PositionalBufferedStream; +import org.broad.tribble.readers.LineIterator; import java.io.IOException; import java.util.Arrays; @@ -112,18 +110,16 @@ public class RawHapMapCodec extends AsciiFeatureCodec { headerLine); } - public Object readHeader(LineReader reader) { - try { - headerLine = reader.readLine(); - } catch (IOException e) { - throw new IllegalArgumentException("Unable to read a line from the line reader"); - } + @Override + public Object readActualHeader(final LineIterator lineIterator) { + this.headerLine = lineIterator.next(); return headerLine; } @Override - public FeatureCodecHeader readHeader(final PositionalBufferedStream stream) throws IOException { - final AsciiLineReader br = new AsciiLineReader(stream); - return new FeatureCodecHeader(readHeader(br), br.getPosition()); + public FeatureCodecHeader readHeader(final LineIterator lineIterator) throws IOException { + final String header = (String) readActualHeader(lineIterator); + // TODO: This approach may cause issues with files formatted with \r\n-style line-endings. + return new FeatureCodecHeader(header, header.length() + 1); } } diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqCodec.java index 82ee76a81..3c2329b8f 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqCodec.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/refseq/RefSeqCodec.java @@ -28,6 +28,7 @@ package org.broadinstitute.sting.utils.codecs.refseq; import org.broad.tribble.AsciiFeatureCodec; import org.broad.tribble.Feature; import org.broad.tribble.TribbleException; +import org.broad.tribble.readers.LineIterator; import org.broadinstitute.sting.gatk.refdata.ReferenceDependentFeatureCodec; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.GenomeLocParser; @@ -93,7 +94,8 @@ public class RefSeqCodec extends AsciiFeatureCodec implements Ref } @Override - public Feature decodeLoc(String line) { + public Feature decodeLoc(final LineIterator lineIterator) { + final String line = lineIterator.next(); if (line.startsWith("#")) return null; String fields[] = line.split("\t"); if (fields.length < 3) throw new TribbleException("RefSeq (decodeLoc) : Unable to parse line -> " + line + ", we expected at least 3 columns, we saw " + fields.length); @@ -160,4 +162,10 @@ public class RefSeqCodec extends AsciiFeatureCodec implements Ref feature.setExon_frames(exon_frames); return feature; } + + @Override + public Object readActualHeader(LineIterator lineIterator) { + // No header for this format + return null; + } } diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupCodec.java index 37e44bf8c..34705c4c9 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupCodec.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/sampileup/SAMPileupCodec.java @@ -26,8 +26,8 @@ package org.broadinstitute.sting.utils.codecs.sampileup; import org.broad.tribble.AsciiFeatureCodec; -import org.broad.tribble.Feature; import org.broad.tribble.exception.CodecLineParsingException; +import org.broad.tribble.readers.LineIterator; import org.broad.tribble.util.ParsingUtils; import java.util.ArrayList; @@ -163,6 +163,12 @@ public class SAMPileupCodec extends AsciiFeatureCodec { return feature; } + @Override + public Object readActualHeader(LineIterator lineIterator) { + // No header for this format + return null; + } + private void parseIndels(String genotype,SAMPileupFeature feature) { String [] obs = genotype.split("/"); // get observations, now need to tinker with them a bit diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadCodec.java index 69127b289..cfc5d2c2d 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadCodec.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/samread/SAMReadCodec.java @@ -29,8 +29,8 @@ import net.sf.samtools.Cigar; import net.sf.samtools.TextCigarCodec; import net.sf.samtools.util.StringUtil; import org.broad.tribble.AsciiFeatureCodec; -import org.broad.tribble.Feature; import org.broad.tribble.exception.CodecLineParsingException; +import org.broad.tribble.readers.LineIterator; import org.broad.tribble.util.ParsingUtils; /** @@ -114,4 +114,10 @@ public class SAMReadCodec extends AsciiFeatureCodec { bases, qualities); } + + @Override + public Object readActualHeader(LineIterator lineIterator) { + // No header for this format + return null; + } } diff --git a/public/java/src/org/broadinstitute/sting/utils/codecs/table/TableCodec.java b/public/java/src/org/broadinstitute/sting/utils/codecs/table/TableCodec.java index 9e66056f2..f69001d9d 100644 --- a/public/java/src/org/broadinstitute/sting/utils/codecs/table/TableCodec.java +++ b/public/java/src/org/broadinstitute/sting/utils/codecs/table/TableCodec.java @@ -26,14 +26,14 @@ package org.broadinstitute.sting.utils.codecs.table; import org.broad.tribble.AsciiFeatureCodec; -import org.broad.tribble.readers.LineReader; +import org.broad.tribble.readers.LineIterator; import org.broadinstitute.sting.gatk.refdata.ReferenceDependentFeatureCodec; import org.broadinstitute.sting.utils.GenomeLocParser; import org.broadinstitute.sting.utils.exceptions.UserException; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; /** * Reads tab deliminated tabular text files @@ -97,30 +97,29 @@ public class TableCodec extends AsciiFeatureCodec implements Refer String[] split = line.split(delimiterRegex); if (split.length < 1) throw new IllegalArgumentException("TableCodec line = " + line + " doesn't appear to be a valid table format"); - return new TableFeature(genomeLocParser.parseGenomeLoc(split[0]),Arrays.asList(split),header); + return new TableFeature(genomeLocParser.parseGenomeLoc(split[0]),Arrays.asList(split), header); } @Override - public Object readHeader(LineReader reader) { - String line = ""; - try { - boolean isFirst = true; - while ((line = reader.readLine()) != null) { - if ( isFirst && ! line.startsWith(headerDelimiter) && ! line.startsWith(commentDelimiter)) { - throw new UserException.MalformedFile("TableCodec file does not have a header"); - } - isFirst &= line.startsWith(commentDelimiter); - if (line.startsWith(headerDelimiter)) { - if (header.size() > 0) throw new IllegalStateException("Input table file seems to have two header lines. The second is = " + line); - String spl[] = line.split(delimiterRegex); - for (String s : spl) header.add(s); - return header; - } else if (!line.startsWith(commentDelimiter)) { - break; - } + public Object readActualHeader(final LineIterator reader) { + boolean isFirst = true; + while (reader.hasNext()) { + final String line = reader.peek(); // Peek to avoid reading non-header data + if ( isFirst && ! line.startsWith(headerDelimiter) && ! line.startsWith(commentDelimiter)) { + throw new UserException.MalformedFile("TableCodec file does not have a header"); + } + isFirst &= line.startsWith(commentDelimiter); + if (line.startsWith(headerDelimiter)) { + reader.next(); // "Commit" the peek + if (header.size() > 0) throw new IllegalStateException("Input table file seems to have two header lines. The second is = " + line); + final String spl[] = line.split(delimiterRegex); + Collections.addAll(header, spl); + return header; + } else if (line.startsWith(commentDelimiter)) { + reader.next(); // "Commit" the peek + } else { + break; } - } catch (IOException e) { - throw new UserException.MalformedFile("unable to parse header from TableCodec file",e); } return header; } diff --git a/public/java/src/org/broadinstitute/sting/utils/variant/GATKVCFUtils.java b/public/java/src/org/broadinstitute/sting/utils/variant/GATKVCFUtils.java index 09db585a6..49200911b 100644 --- a/public/java/src/org/broadinstitute/sting/utils/variant/GATKVCFUtils.java +++ b/public/java/src/org/broadinstitute/sting/utils/variant/GATKVCFUtils.java @@ -28,6 +28,7 @@ package org.broadinstitute.sting.utils.variant; import org.broad.tribble.Feature; import org.broad.tribble.FeatureCodec; import org.broad.tribble.FeatureCodecHeader; +import org.broad.tribble.readers.LineIterator; import org.broad.tribble.readers.PositionalBufferedStream; import org.broadinstitute.sting.commandline.RodBinding; import org.broadinstitute.sting.gatk.CommandLineGATK; @@ -177,31 +178,26 @@ public class GATKVCFUtils { /** * Utility class to read all of the VC records from a file * - * @param source + * @param file * @param codec * @return * @throws IOException */ - public final static Pair readAllVCs( final File source, final FeatureCodec codec ) throws IOException { + public final static Pair> readAllVCs( final File file, final FeatureCodec codec) throws IOException { // read in the features - PositionalBufferedStream pbs = new PositionalBufferedStream(new FileInputStream(source)); - FeatureCodecHeader header = codec.readHeader(pbs); - pbs.close(); - - pbs = new PositionalBufferedStream(new FileInputStream(source)); - pbs.skip(header.getHeaderEnd()); - + SOURCE source = codec.makeSourceFromStream(new FileInputStream(file)); + FeatureCodecHeader header = codec.readHeader(source); final VCFHeader vcfHeader = (VCFHeader)header.getHeaderValue(); - return new Pair(vcfHeader, new VCIterable(pbs, codec, vcfHeader)); + return new Pair<>(vcfHeader, new VCIterable<>(source, codec, vcfHeader)); } - public static class VCIterable implements Iterable, Iterator { - final PositionalBufferedStream pbs; - final FeatureCodec codec; + public static class VCIterable implements Iterable, Iterator { + final SOURCE source; + final FeatureCodec codec; final VCFHeader header; - private VCIterable(final PositionalBufferedStream pbs, final FeatureCodec codec, final VCFHeader header) { - this.pbs = pbs; + private VCIterable(final SOURCE source, final FeatureCodec codec, final VCFHeader header) { + this.source = source; this.codec = codec; this.header = header; } @@ -213,17 +209,13 @@ public class GATKVCFUtils { @Override public boolean hasNext() { - try { - return ! pbs.isDone(); - } catch ( IOException e ) { - throw new RuntimeException(e); - } + return ! codec.isDone(source); } @Override public VariantContext next() { try { - final VariantContext vc = codec.decode(pbs); + final VariantContext vc = codec.decode(source); return vc == null ? null : vc.fullyDecode(header, false); } catch ( IOException e ) { throw new RuntimeException(e); @@ -249,20 +241,19 @@ public class GATKVCFUtils { final List vcs = new ArrayList(); final VCFCodec codec = new VCFCodec(); PositionalBufferedStream pbs = new PositionalBufferedStream(new FileInputStream(source)); - FeatureCodecHeader header = codec.readHeader(pbs); - pbs.close(); + final LineIterator vcfSource = codec.makeSourceFromStream(pbs); + try { + final VCFHeader vcfHeader = (VCFHeader) codec.readActualHeader(vcfSource); - pbs = new PositionalBufferedStream(new FileInputStream(source)); - pbs.skip(header.getHeaderEnd()); + while (vcfSource.hasNext()) { + final VariantContext vc = codec.decode(vcfSource); + if ( vc != null ) + vcs.add(vc); + } - final VCFHeader vcfHeader = (VCFHeader)header.getHeaderValue(); - - while ( ! pbs.isDone() ) { - final VariantContext vc = codec.decode(pbs); - if ( vc != null ) - vcs.add(vc); + return new Pair>(vcfHeader, vcs); + } finally { + codec.close(vcfSource); } - - return new Pair>(vcfHeader, vcs); } } \ No newline at end of file diff --git a/public/java/test/org/broadinstitute/sting/BaseTest.java b/public/java/test/org/broadinstitute/sting/BaseTest.java index 5efe2dfc3..9d23062c0 100644 --- a/public/java/test/org/broadinstitute/sting/BaseTest.java +++ b/public/java/test/org/broadinstitute/sting/BaseTest.java @@ -30,6 +30,8 @@ import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.spi.LoggingEvent; +import org.broad.tribble.readers.LineIterator; +import org.broad.tribble.readers.PositionalBufferedStream; import org.broadinstitute.sting.commandline.CommandLineUtils; import org.broadinstitute.sting.utils.collections.Pair; import org.broadinstitute.sting.utils.crypt.CryptUtils; @@ -450,8 +452,8 @@ public abstract class BaseTest { } public static void assertVCFandBCFFilesAreTheSame(final File vcfFile, final File bcfFile) throws IOException { - final Pair vcfData = GATKVCFUtils.readAllVCs(vcfFile, new VCFCodec()); - final Pair bcfData = GATKVCFUtils.readAllVCs(bcfFile, new BCF2Codec()); + final Pair> vcfData = GATKVCFUtils.readAllVCs(vcfFile, new VCFCodec()); + final Pair> bcfData = GATKVCFUtils.readAllVCs(bcfFile, new BCF2Codec()); assertVCFHeadersAreEqual(bcfData.getFirst(), vcfData.getFirst()); assertVariantContextStreamsAreEqual(bcfData.getSecond(), vcfData.getSecond()); } diff --git a/public/java/test/org/broadinstitute/sting/gatk/EngineFeaturesIntegrationTest.java b/public/java/test/org/broadinstitute/sting/gatk/EngineFeaturesIntegrationTest.java index c65d62149..f1839e6ac 100644 --- a/public/java/test/org/broadinstitute/sting/gatk/EngineFeaturesIntegrationTest.java +++ b/public/java/test/org/broadinstitute/sting/gatk/EngineFeaturesIntegrationTest.java @@ -28,11 +28,9 @@ package org.broadinstitute.sting.gatk; import net.sf.samtools.SAMFileReader; import net.sf.samtools.SAMReadGroupRecord; import net.sf.samtools.SAMRecord; -import org.broad.tribble.readers.AsciiLineReader; import org.broadinstitute.sting.WalkerTest; import org.broadinstitute.sting.commandline.Argument; import org.broadinstitute.sting.commandline.Output; -import org.broadinstitute.sting.gatk.contexts.AlignmentContext; import org.broadinstitute.sting.gatk.contexts.ReferenceContext; import org.broadinstitute.sting.gatk.filters.MappingQualityUnavailableFilter; import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker; @@ -48,7 +46,6 @@ import org.broadinstitute.variant.vcf.VCFCodec; import org.broadinstitute.variant.vcf.VCFHeader; import org.broadinstitute.variant.vcf.VCFHeaderLine; import org.testng.Assert; -import org.testng.TestException; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; @@ -218,7 +215,8 @@ public class EngineFeaturesIntegrationTest extends WalkerTest { 1, Arrays.asList("")); spec.disableShadowBCF(); final File vcf = executeTest("testGATKVersionInVCF", spec).first.get(0); - final VCFHeader header = (VCFHeader)new VCFCodec().readHeader(new AsciiLineReader(new FileInputStream(vcf))); + final VCFCodec codec = new VCFCodec(); + final VCFHeader header = (VCFHeader) codec.readActualHeader(codec.makeSourceFromStream(new FileInputStream(vcf))); final VCFHeaderLine versionLine = header.getMetaDataLine(GATKVCFUtils.GATK_COMMAND_LINE_KEY); Assert.assertNotNull(versionLine); Assert.assertTrue(versionLine.toString().contains("SelectVariants")); @@ -232,7 +230,8 @@ public class EngineFeaturesIntegrationTest extends WalkerTest { 1, Arrays.asList("")); spec.disableShadowBCF(); final File vcf = executeTest("testMultipleGATKVersionsInVCF", spec).first.get(0); - final VCFHeader header = (VCFHeader)new VCFCodec().readHeader(new AsciiLineReader(new FileInputStream(vcf))); + final VCFCodec codec = new VCFCodec(); + final VCFHeader header = (VCFHeader) codec.readActualHeader(codec.makeSourceFromStream(new FileInputStream(vcf))); boolean foundHC = false; boolean foundSV = false; diff --git a/public/java/test/org/broadinstitute/sting/gatk/refdata/utils/TestFeatureReader.java b/public/java/test/org/broadinstitute/sting/gatk/refdata/utils/TestFeatureReader.java index adcc21291..988355813 100644 --- a/public/java/test/org/broadinstitute/sting/gatk/refdata/utils/TestFeatureReader.java +++ b/public/java/test/org/broadinstitute/sting/gatk/refdata/utils/TestFeatureReader.java @@ -34,7 +34,7 @@ import java.io.IOException; /** * Feature reader with additional test utilities. The iterators can be checked to see if they are closed. */ -public class TestFeatureReader extends TribbleIndexedFeatureReader { +public class TestFeatureReader extends TribbleIndexedFeatureReader { public TestFeatureReader(String featurePath, FeatureCodec codec) throws IOException { super(featurePath, codec, true); } diff --git a/public/java/test/org/broadinstitute/sting/utils/activeregion/BandPassActivityProfileUnitTest.java b/public/java/test/org/broadinstitute/sting/utils/activeregion/BandPassActivityProfileUnitTest.java index 2470364c4..fb238ef54 100644 --- a/public/java/test/org/broadinstitute/sting/utils/activeregion/BandPassActivityProfileUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/activeregion/BandPassActivityProfileUnitTest.java @@ -31,6 +31,7 @@ package org.broadinstitute.sting.utils.activeregion; import net.sf.picard.reference.ReferenceSequenceFile; import org.apache.commons.lang.ArrayUtils; +import org.broad.tribble.readers.LineIterator; import org.broadinstitute.sting.BaseTest; import org.broadinstitute.sting.utils.GenomeLoc; import org.broadinstitute.sting.utils.GenomeLocParser; @@ -48,7 +49,10 @@ import org.testng.annotations.Test; import java.io.File; import java.io.FileNotFoundException; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; public class BandPassActivityProfileUnitTest extends BaseTest { @@ -261,7 +265,7 @@ public class BandPassActivityProfileUnitTest extends BaseTest { final File file = new File(path); final VCFCodec codec = new VCFCodec(); - final Pair reader = GATKVCFUtils.readAllVCs(file, codec); + final Pair> reader = GATKVCFUtils.readAllVCs(file, codec); final List incRegions = new ArrayList(); final BandPassActivityProfile incProfile = new BandPassActivityProfile(genomeLocParser, null); diff --git a/public/java/test/org/broadinstitute/sting/utils/codecs/hapmap/HapMapUnitTest.java b/public/java/test/org/broadinstitute/sting/utils/codecs/hapmap/HapMapUnitTest.java index 5cd13b818..1ac79dcf3 100644 --- a/public/java/test/org/broadinstitute/sting/utils/codecs/hapmap/HapMapUnitTest.java +++ b/public/java/test/org/broadinstitute/sting/utils/codecs/hapmap/HapMapUnitTest.java @@ -26,7 +26,9 @@ package org.broadinstitute.sting.utils.codecs.hapmap; import org.broad.tribble.annotation.Strand; -import org.broad.tribble.readers.AsciiLineReader; +import org.broad.tribble.readers.LineIterator; +import org.broad.tribble.readers.LineIteratorImpl; +import org.broad.tribble.readers.LineReaderUtil; import org.broad.tribble.readers.PositionalBufferedStream; import org.broadinstitute.sting.BaseTest; import org.testng.Assert; @@ -53,15 +55,13 @@ public class HapMapUnitTest extends BaseTest { @Test public void testReadHeader() { RawHapMapCodec codec = new RawHapMapCodec(); - AsciiLineReader reader = getReader(); + final LineIterator reader = getLineIterator(); try { - String header = reader.readLine(); - reader.close(); - Assert.assertTrue(header.equals(codec.readHeader(getReader()))); - } catch (IOException e) { - Assert.fail("Unable to read from file " + hapMapFile); + String header = reader.next(); + Assert.assertTrue(header.equals(codec.readActualHeader(getLineIterator()))); + } finally { + codec.close(reader); } - reader.close(); } @Test @@ -114,22 +114,20 @@ public class HapMapUnitTest extends BaseTest { public void testReadCorrectNumberOfRecords() { // setup the record for reading our 500 line file (499 records, 1 header line) RawHapMapCodec codec = new RawHapMapCodec(); - AsciiLineReader reader = getReader(); + final LineIterator reader = getLineIterator(); - String line; int count = 0; try { codec.readHeader(reader); - line = reader.readLine(); - while (line != null) { - codec.decode(line); - line = reader.readLine(); + while (reader.hasNext()) { + codec.decode(reader.next()); ++count; } } catch (IOException e) { Assert.fail("IOException " + e.getMessage()); + } finally { + codec.close(reader); } - reader.close(); Assert.assertEquals(count,499); } @@ -137,25 +135,26 @@ public class HapMapUnitTest extends BaseTest { public void testGetSampleNames() { // setup the record for reading our 500 line file (499 records, 1 header line) RawHapMapCodec codec = new RawHapMapCodec(); - AsciiLineReader reader = getReader(); + final LineIterator reader = getLineIterator(); String line; try { codec.readHeader(reader); - line = reader.readLine(); + line = reader.next(); RawHapMapFeature feature = (RawHapMapFeature) codec.decode(line); Assert.assertEquals(feature.getSampleIDs().length,87); } catch (IOException e) { Assert.fail("IOException " + e.getMessage()); + } finally { + codec.close(reader); } - reader.close(); } - public AsciiLineReader getReader() { + public LineIterator getLineIterator() { try { - return new AsciiLineReader(new PositionalBufferedStream(new FileInputStream(hapMapFile))); + return new LineIteratorImpl(LineReaderUtil.fromBufferedStream(new PositionalBufferedStream(new FileInputStream(hapMapFile)))); } catch (FileNotFoundException e) { Assert.fail("Unable to open hapmap file : " + hapMapFile); } diff --git a/public/java/test/org/broadinstitute/sting/utils/variant/VariantContextBenchmark.java b/public/java/test/org/broadinstitute/sting/utils/variant/VariantContextBenchmark.java index 51a47d86d..381b282e0 100644 --- a/public/java/test/org/broadinstitute/sting/utils/variant/VariantContextBenchmark.java +++ b/public/java/test/org/broadinstitute/sting/utils/variant/VariantContextBenchmark.java @@ -105,7 +105,7 @@ public class VariantContextBenchmark extends SimpleBenchmark { public void run(T vc); } - private void runBenchmark(FeatureCodec codec, FunctionToBenchmark func) { + private void runBenchmark(FeatureCodec codec, FunctionToBenchmark func) { // TODO -- update for new Tribble interface // try { // InputStream is = new ByteArrayInputStream(INPUT_STRING.getBytes()); @@ -129,7 +129,7 @@ public class VariantContextBenchmark extends SimpleBenchmark { public void timeV14(int rep) { for ( int i = 0; i < rep; i++ ) { FunctionToBenchmark func = getV14FunctionToBenchmark(); - FeatureCodec codec = new VCFCodec(); + final VCFCodec codec = new VCFCodec(); runBenchmark(codec, func); } } diff --git a/public/scala/src/org/broadinstitute/sting/queue/util/VCF_BAM_utilities.scala b/public/scala/src/org/broadinstitute/sting/queue/util/VCF_BAM_utilities.scala index 73c4ccf64..5802faff2 100644 --- a/public/scala/src/org/broadinstitute/sting/queue/util/VCF_BAM_utilities.scala +++ b/public/scala/src/org/broadinstitute/sting/queue/util/VCF_BAM_utilities.scala @@ -31,14 +31,12 @@ import scala.io.Source._ import net.sf.samtools.SAMFileReader import org.broadinstitute.variant.vcf.{VCFHeader, VCFCodec} import scala.collection.JavaConversions._ -import org.broad.tribble.{FeatureCodec, AbstractFeatureReader} -import org.broadinstitute.variant.variantcontext.VariantContext +import org.broad.tribble.AbstractFeatureReader object VCF_BAM_utilities { def getSamplesFromVCF(vcfFile: File): List[String] = { - val codec: FeatureCodec[VariantContext] = new VCFCodec().asInstanceOf[FeatureCodec[VariantContext]] - AbstractFeatureReader.getFeatureReader(vcfFile.getPath, codec).getHeader.asInstanceOf[VCFHeader].getGenotypeSamples.toList + AbstractFeatureReader.getFeatureReader(vcfFile.getPath, new VCFCodec()).getHeader.asInstanceOf[VCFHeader].getGenotypeSamples.toList } def getSamplesInBAM(bam: File): List[String] = { diff --git a/settings/repository/net.sf/sam-1.96.1515.xml b/settings/repository/net.sf/sam-1.96.1515.xml deleted file mode 100644 index 6c436926a..000000000 --- a/settings/repository/net.sf/sam-1.96.1515.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/settings/repository/net.sf/sam-1.96.1515.jar b/settings/repository/net.sf/sam-1.96.1525.jar old mode 100644 new mode 100755 similarity index 94% rename from settings/repository/net.sf/sam-1.96.1515.jar rename to settings/repository/net.sf/sam-1.96.1525.jar index 391432b4a072011cecdb7176ef19a5f7a80dbe71..73dd0ee48385d71b86d9d0fb6dcf8d0b07744e4e GIT binary patch delta 19334 zcma)E349bq*01iF>7JfUk_ovll8_K`K@uRGA>`nc1Onj@WUY9|JOa;JrjZ5=2w~SepTOC?HNXRJkea$wx=g7hXwGv;UL_ZhR^SM+ zJcDl)X2%)(VsVqF)~4@+TXT|J1jb%Z%uzb_JEzS19o2Mv_*5*OeNCu!cOr; z6%kdxd5;)rRDbqNMf$@q(ub|QhYcz4N5%00I`(xZ8oMWCGBzQT zq!7)^XImT|mq)C~)Y+{0RNStQMvv{BctT|pL*Dbjcj6ku9OwNcCXd#!mcCSQNVYI0 zTQsbdlLd$8@nM!QLrKR*S~jXSN*$;eZD}w%f3(?mEngZG9;>!&P$5Jicbz5I(8BUI%kpf!%{zax)EYx#(m_j; zVXr-JSvn0y=AN{)=}yA)@duXAw&)06skL&WCrj(CXAJq2ueNS5#^GDnTZ;@!j=j

#6WSB?<+crH9^-Dq^6 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 diff --git a/settings/repository/net.sf/sam-1.96.1525.xml b/settings/repository/net.sf/sam-1.96.1525.xml new file mode 100644 index 000000000..efc11ce6c --- /dev/null +++ b/settings/repository/net.sf/sam-1.96.1525.xml @@ -0,0 +1,3 @@ + + + diff --git a/settings/repository/org.broad/tribble-1.96.1525.jar b/settings/repository/org.broad/tribble-1.96.1526.jar similarity index 93% rename from settings/repository/org.broad/tribble-1.96.1525.jar rename to settings/repository/org.broad/tribble-1.96.1526.jar index 8e4deaa7a8cd13a9cbfb6ac2327ed2c1a4747088..0f45dbf5228aa1321764270812652f61dfbbb16e 100644 GIT binary patch delta 7513 zcma)Bd0bW1_Fwy)4fk@n%%dQJA~Oi&6e=oOmLQ5*Drp6&DW-x00uEeo#(}|uY{AS4 zpQaWV;!RD_v@Cm1&C>k+{FO~l%jsb@{7QSgwf8<;xF7#{d_L=(wfA?ewbxpEojqL2 zt)927o-P?_Dm4KZ0rCsIs$3$C3kto4e>UlrK2^yx9G~bL_iAF_s{NsAUV&HDXTjq2 zAdJ7XKoZB_O=;wjgJ4n(<&wE(UhE-yGP|vI6U_H#O2%=7k5uY5(u=sF?C>wh!@XW^0A6maq*e82A@gZulO;7s4zewCrjM{- z&i!2~I?msrh@O4uj&h^Hn~Z_3Bm?EfLJWBh;>mb;hD_8F z_gyBFHN*bBK3U*EUPbxWz)Yrq3z-V3WO~z?{T?K07I=}_5JKia6v>6BNFK}}^B{*T zfLWvf=95BLPKsa+S={vR1N%t!3NVnBU?gkM$~sglheT2VeMu!eNjAb{qM>>e1DaEVl{9Im z8kTiA0`BA}1d!v zqPzLXf8&om2H0zWw+ygPOH3Q4{kSDc3v4>Wf_;@_?RwLojo*zzKxD* zy_+}CIvhmH9Nn$yyXHg^o(zM{Fa)wt*bMK$6azGvp%D%ePytK#OVMnw+S-HM-2oGem=pF5fuV?}01$6* z1Y8YZrgq>&S4;RYFk~JBV`i+UlNC%>a2`O9fjP4a^-zDbg3IVV;L6(qb{QQPa|m1y zgWF+npBRn2N8AzcRG=BWqOIV45Y18;hR1m-qSvs11QczxjxRWOfy`=LAdLqxV=$4J9{7{{TTRRw*51$(8V+0 zFa*XN!Icw`@eGo!ZoC!j8G)F!aD04{eEQ#339osb=(ECOQCT69~>IG2;4a z#`V<+S4I=AuP(y-5Ol%?bD0S*qGRZe9)|;Fc9N(b9+9sN;}JL8NH&w@lUmaK&W#VY0e_Kk14)PB(}n!MLRNz%3*c`jIf`Pr_jsiNKx65(!U} zDBM$`VK#}gRcL?AXC`E0%#*PmUxg`{;iqwkOqhy&Q8?^0kyp$^r<&mzmRJ&|RbuVc z69^6tk09CrliM(ZnBNTkc+HY-fa#HT^*RG{Ez5NTj>_$rjzL_eXD=(nw_r;ZAD<&f zNMfhzHFfet)-&(n;}iV)+HHC7GY9=t-LG88LjwxTg;acdBG(%?=#j|BUnFt_@A}s{2GNmrBT;l%Zp@Jf($?E6yhKkyTZ=gLS(6mv z?aaHZ87^dli{QQqARh<=*4;hG4Kwd!JX~f#h>>;AFX;YADMnCPsfd z&xT+Ba>~mlA1o#x*4Tsi3lSDyOg*iQX~bKcQLSgQh|yadYFC|D9QZEoAn!WZq@54v zlTU@~*7J)66Ya?vXB>vW2dVCPfX%rvRG<0yhpx@6!>Dt))Ook_r!3Dc6Gp`c=JhS()2Zqp638dNujtz2ss89GqE5?RwEZ$(q&PjzcBH7mYBOI<6u3H{Y9nUkYWwxe2#nlD3i9-~f@XikQDNd`7}yxK?f?a7~@ItoV$ zUs8Wp#jRpo#oGJqt1zV-3z@1$Sl`c9ou$^f*VK!$hPKX8e-c_{xoWPA?cpl5NDfo5 zMh%cByMBY*q!=-)+xKx8d+G6-d2an`b#;e?v~t7htx(n*c(UHU{N;g#0~Wc zG1!9}szp?tHNRE$m4?fIQIlm&o>%D0vex5G^es8WHE+65PTTV#bc!^5G>o2?j;@QK zp;5x}!3V!qlq48XjO`b!=?6c}QG+Fd~F^5hNOs`z}nqXKiohX=}bLsPf z8JS1N2xdzjeL*k}^5`VNjGaqU1@q=yU8Z%eF7xa>njy93(XoR0*E~8+FcaqMG7a-} z^+)sROabLA(3vX>bm77IG+RJB^XUx1xGdCNUAU0W6Fs*V(j37|D4^p+E%7Tad$)kj zvfWo%cp;tcf>{`DyQ8tXLi&o(dsIjRmAW(R+Xcj1+kQ5XeU(ea2gqJ3LgbgP1+wuw zXI5K8%^}>%osl_ZVFmzBQMlT-|J9eqU)QBQ*sUVnOdB_|<%R%Q!XoM}Z0zw_5g3Y# zD5r#W1Ng2lz0fWiObo2`dE&rI7E!TYu^o%h)X+P+sdiiozT?OSF4LW>bnR7IjC(Yv za67|i+iZ%iY*ilh6pqYE-!l6g{+_}q-cG(uVW$?;7*?^EdIs~jUoZIe<}eokPWC=; zXD1iaA;R8SwxV`+#TB^K&+j`)1B1#hAF2hqZlpvWp`L)4X@*7 zvIRF(;d~>=;JM5ylk&aR5z}JD61?Zj_i7=?)Ksm zblYP?hgo)SJqhfeUN&%ih?$KoqXF7CmmJt_U9)B-0zKRX zz)t=_%&ZO(k%ZJ*51_IK_p%v66Ndo}c8VBExNvC)*yWxH11# zx{qPxc_kSIiF;4aso;H&kk70Sg=(!QGK3a{wx)pLLo>dkr z4lI3*ZtB;l%SWn$065uylWD7^{5$QUlZ_EO3UI;aG~5;v|E}V8bJ1iLR7Sl;^z>Bj z#H$|o!!1&Zov6cpE;>d?`MQ+6u>^l<;l%Gs?SJ*9gN}2lJ}mw?=Jbu_ddi*FVi>NU za43|ueysSgm)GjhY!3Z&o)>#_MeHiK9~jOxaoZQnY}5Kz7g z}H`p`Xi19#CO6+ZP20Y4G8V&FQA%oifgDwy+qEQ9bHpej1|HuxjkX{ zt}ituwTs6K$-65@eBKiagi}8|$?sF-m>J2cuW(n$&ssF>fj3?tIN9$Llg6;_l{AFC zGZqil*UEJtTg%bMBN;Zx%#tc}XmkZa<>NUN-Z8+U<-2+|W9@LV-+(`yz(r$N!vxj9 zGBs)zTj|!TIo%H68qUdH{$mzWsc+c)?EMgbw&66yF3JzGrO^vBRCji?Qg`h_B~SWv z4n;HHD!n(R3VZL);k`j@NUmyT+A{qEnSJ()if(vA;bfo2|H+l|C#&>r{T8=^pAAlU z5IZ>w_lShmsw10d(bt6Etn2oj#pQ{UeZ8MuV^i{D{h2;=>FW9^!!a&S{q17=VXK%y zE#zgtj(T&^aQG!V<=p1&#vp7}(=+zDDbL`MfKwkkOHI2v$+zyt3AWYeIc{&%J2u>f zxmQzhcVW@h2vr^I1m#szU$NGdaVV+T26?f|)q0k1ap=xb8|2J-ZPG*S#V*p4dbKg)jeyjPhYCHxSCM|Ezkk_!|8* z_*dZSOAqnO;1tn59=_{Kzh+rARNU!VZ4K&oQ(0myIxy6cIsM zqZsza_{d&&UpyGr;baPh1`gGSNN7WM>cjqQhuk(JWD2)IPHgmMJumA28o#|B3Bbwz zuzoE<$ZM6j^|VBwYx_6rtJYC&j*OM&S~t_~;%l|N$4kbguBQ3c`??Pn{H$6{NEJ*tnc|A`)c4*=e) zyrA^bY9kGr-^kB|$nB9Es6dJm*Ga^BjJq_`d%PMOC)upDv`-satzKq(wI-uhFrD+;4ntZ z-r}p3G`VSeFS<54?#!Uhp8_T4!IoSAXVL+^$VF{sRX(|-eP31V{1rHmzkxgX8a&B2 z(2x9GTeZ8$h8vA-z5CCmhr6Af0>+^3Sd<$FZe%?8k|dN%hA@%>kt7YqlBcxj!E)Z{xHcd0s|=q8?pwitV6X85KT715V8q|lPxfnY(@2QRNV%7WIN=O zo$w;r1tp{k){)(?o>W5_c^P()y|9z)gI%Ns>Pan}BnO~_)WH|zHO=--GdZfYzqzJY z6F8A(@Fr#mAgvHY-iBau9HPiO+SG=bq)lsUNGBsTkH#!f?!x;+KVI$vz#+c7+$pVg z+NvbS;!kZM26Bxs2=Z(p9~K*72`sgNWky&IFBo8j0amJD=l~;j_9`P7pn!`N8ep{% z>|vE1ya+|yL@~!oIIq-*uWLAMtpQ##z&Zo0H-abR*+3b8Zm@%mu*n8C^Jmr;PTFb% z<@{|Mf2lBn2W;o&cJLp~06UEk47&_aX#+I0j}DybZ@qFa@TXU5P>ck2D3f08E&c*j1`HvQ7X7mTH{8k;uc47qcn6E(;oZa z8A!*#c%fu5t+4*j7K;YrDS31=c}jwbEkz#H)dY&DYX+d<%s9R4o8KtJ)$pR!o7;DE()#$vgG7x94N z0R$CEFWj7c@i6d%p`;HCBmOXo1mKy{7oH@6csK;XBGOM(b1-H&3^&$iU>fE;6Fu{ZaCgYBa+l+Tn0&phkRXE%*p87^kHkyqv$ z1mV!NXhHbuTCN;6Q#)UB6@z4j!@$xaT!SLkcAfOn@;ePp4<7CkbDp_UA#QeD&wSLL zY_%6yoDX?d4tD!4_4&2N1i&F&yA|P%%9M4krXJ?U1Igb3oGQ zL;o?&-s}jl*^y;WpY*LHrB}}myYl$m!Dxub9wuXFW zErMLMkqi@74sImN#Q19Ny_L)s7+Y6Ch6?7X3Np?pFxzTUD=SpLmz;7Cv_;;7*(^S1mCGUs_Um~iRu~#|L8+D|FLo+7Jq7IyRjowr_(Bg6Da|<-le7;9 z*L^N*ze2oNML*Tk9Pg^W;UYAC3RZ`R8k_q?s+(j2&BN3zSsBj}>gSSnGf`bGlggQ> zPLbRX($qi6%2cPTgXJZvVC{jR7QB|Uu#Pk}m?czD7qe@I+GZt!*?W0@?|M9P>s59! zO$}nT^Hn>u<8<|;T#^gf>NC<{zjp!b;vTeguI$gwW-eRP$ z%K(PE(--7QHu}?9(yeC*Jud_Ot{)8?ApAN^q7_nie+GR^ws!gydSA+=PouxcBqz+I z4<$Ek4h<6+E1E|~2qUfYXsWe}muP0prNg_g(JU#Kiq>IexipeXvg5gQh(K=T(l~)c z=h0^cvN?~=70AzdG(#X0^Xbz9c`ct#6v%(_=`#XJTTG`2oTcJbeUI| z&@`#FgiaDj%2GN=1+*BN(@gEm_FYX*ae`Bx#fWrVhSGxY{O8?ZY z<*emjv1X|SRPN|g3(#i#HEz?(@ptxEEoUx~OfBw)8~eUM59I;p{NuV%(;|MbVUHE+ zoU}sZEO;n6SAH_GZOG}vqsvXLUUUwFzdVQlME!+IQ27cP7Pt#7E>30ZqVY$vM^ZHmy3GwuS>FJ?_Q zy5n$$5N_dcu2Ar0HL1kJs*3cA9xXy!ty$cbFPoT+8|i~0ef8{%k@fyE$x2v>T2Cy~ zi}P$%*_1Ewxa442?e+pGUt3HALN&=hVvar)jI5!4f9Uv+>?{25+X8Ti>N1JXy3(hGMmW2G0f_j$78hrv;Aq5Q zgoS8L^G6Fyz;ixyt>yp)QmN>Bao4dM-v(En5BeeVnI7{W-z$os& zqz7qQheCh1W7%cYn`PZ4R&3llU4I&9y^lkm&N8uDWQj^|^{g7`>V{WtgjkCxv)ILT zbi63F-+I*lI9Tf6d_Y`Seu(1E3fJqdH*tPoSU2B;eX(A5-N{*Tv69shtGN83EqXYG zfbJLGt8Zm-wMbFTRhK#v8gT36VEKvM5>kOIYN2AozAV%I-Yi4EH|BE#$l5^V7?!yK zsc)^&sS6boySWMv>KQ8)Yu2zq&!&wF-B{m4$Zn%<)qf+hI_e}VYa<;f%CntQ4;}7S z@MbuhS+l&&(qQE#WM6qlvJ*DZK#>r+_x^!0Yz+=WyVK@hL*qwM)Zr7wk+p2nU7zDt zww&iIZ#Xx zyL22`a)o}rW>=uK=cjdXJXk}8?x&4&=41;FJ3UM7!#ua^bqe2(tdn!QlpI*rJPcvg zc71KE!|u%9k5%Fj(N!&c)|FP|N^@;KxS;3JoG9?35C6QawOQ>>Sm3`TNek* zQ>lyvXmpHFU!b9SpI4;O)32!}cKQ|75ca!iX>?HdQ?th6Y{Ox&ML_B78;y<@Sr%XY zYuGP%0&$435c=t;bda@^1_@E^z2x6A@wDU+Z6P|iQIBP({^18UKAbTVmzsm+3I0{H zF4~~FvY1_Z?aH(fpZ^7i9S)W=&$d=6U$Tpe8y>6Og~>Nw<5V}6pQc#O|EH-f3#!z6XGA4h&ABP9KDyX!>EiF_{L-I$@UPy+Cg=JAeDr(2 zCPVedDVKxgLD;TP*6xq9UpS*)LiU#3p2FvFO*mMtOJAcdTau)BvTo&(Fx z|M3_;2g^;NE=^ZR-Aw~T2QJ=?c7|n8)|f#f*{R*S*H1aQ6L(c4hp;VE@SiTdy3E&? z{(SWab~Ojf!>x0wPzYiZr&DW|zeg{r?auZCC$TFz^s`vUe`X7XzN};>D)0nEP=DQn q-mlH>O0F8;aB0{;j=0U!$qm)iz@D$xRSGyStp{(2^}a - +