diff --git a/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/HaplotypeResolver.java b/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/HaplotypeResolver.java index 3d32b1ea4..271b57961 100644 --- a/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/HaplotypeResolver.java +++ b/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/haplotypecaller/HaplotypeResolver.java @@ -77,8 +77,7 @@ import htsjdk.variant.variantcontext.VariantContext; import htsjdk.variant.variantcontext.VariantContextBuilder; import htsjdk.variant.variantcontext.VariantContextUtils; import htsjdk.variant.variantcontext.writer.VariantContextWriter; -import htsjdk.variant.variantcontext.writer.VariantContextWriterFactory; - +import htsjdk.variant.variantcontext.writer.SortingVariantContextWriter; import java.util.*; /** @@ -186,7 +185,7 @@ public class HaplotypeResolver extends RodWalker { headerLines.add(new VCFInfoHeaderLine(STATUS_KEY, 1, VCFHeaderLineType.String, "Extent to which records match")); final VCFHeader vcfHeader = new VCFHeader(headerLines, Collections.emptySet()); baseWriter.writeHeader(vcfHeader); - writer = VariantContextWriterFactory.sortOnTheFly(baseWriter, ACTIVE_WINDOW); + writer = new SortingVariantContextWriter(baseWriter, ACTIVE_WINDOW); } public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { diff --git a/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/phasing/ReadBackedPhasing.java b/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/phasing/ReadBackedPhasing.java index 19928c3fd..767d3a103 100644 --- a/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/phasing/ReadBackedPhasing.java +++ b/protected/gatk-tools-protected/src/main/java/org/broadinstitute/gatk/tools/walkers/phasing/ReadBackedPhasing.java @@ -81,7 +81,7 @@ import org.broadinstitute.gatk.utils.pileup.PileupElement; import org.broadinstitute.gatk.utils.pileup.ReadBackedPileup; import htsjdk.variant.variantcontext.*; import htsjdk.variant.variantcontext.writer.VariantContextWriter; -import htsjdk.variant.variantcontext.writer.VariantContextWriterFactory; +import htsjdk.variant.variantcontext.writer.SortingVariantContextWriter; import java.io.*; import java.util.*; @@ -257,7 +257,7 @@ public class ReadBackedPhasing extends RodWalker hInfo = new HashSet(); diff --git a/public/gatk-engine/src/main/java/org/broadinstitute/gatk/engine/io/storage/VariantContextWriterStorage.java b/public/gatk-engine/src/main/java/org/broadinstitute/gatk/engine/io/storage/VariantContextWriterStorage.java index b3f76fe2f..7187e78c5 100644 --- a/public/gatk-engine/src/main/java/org/broadinstitute/gatk/engine/io/storage/VariantContextWriterStorage.java +++ b/public/gatk-engine/src/main/java/org/broadinstitute/gatk/engine/io/storage/VariantContextWriterStorage.java @@ -38,7 +38,7 @@ import htsjdk.variant.bcf2.BCF2Utils; import htsjdk.variant.variantcontext.VariantContext; import htsjdk.variant.variantcontext.writer.Options; import htsjdk.variant.variantcontext.writer.VariantContextWriter; -import htsjdk.variant.variantcontext.writer.VariantContextWriterFactory; +import htsjdk.variant.variantcontext.writer.VariantContextWriterBuilder; import htsjdk.variant.vcf.VCFHeader; import java.io.*; @@ -82,8 +82,11 @@ public class VariantContextWriterStorage implements Storage options = stub.getWriterOptions(indexOnTheFly); - VariantContextWriter writer = VariantContextWriterFactory.create(file, this.stream, stub.getMasterSequenceDictionary(), stub.getIndexCreator(), options); + final VariantContextWriterBuilder.OutputType fileOutputType = allowCompressed && stub.isCompressed() ? + VariantContextWriterBuilder.OutputType.BLOCK_COMPRESSED_VCF : VariantContextWriterBuilder.OutputType.VCF; + final EnumSet options = stub.getWriterOptions(indexOnTheFly); + + VariantContextWriter writer = new VariantContextWriterBuilder() + .setOutputFile(file) + .setOutputFileType(fileOutputType) + .setReferenceDictionary(stub.getMasterSequenceDictionary()) + .setIndexCreator(stub.getIndexCreator()) + .setOptions(options) + .build(); // if the stub says to test BCF, create a secondary writer to BCF and an 2 way out writer to send to both // TODO -- remove me when argument generateShadowBCF is removed - if ( stub.alsoWriteBCFForTest() && ! VariantContextWriterFactory.isBCFOutput(file, options)) { + if ( stub.alsoWriteBCFForTest() && + ! (options.contains(Options.FORCE_BCF) || file != null && file.getName().contains(".bcf")) ) { final File bcfFile = BCF2Utils.shadowBCF(file); if ( bcfFile != null ) { - FileOutputStream bcfStream; - try { - bcfStream = new FileOutputStream(bcfFile); - } catch (FileNotFoundException e) { - throw new RuntimeException(bcfFile + ": Unable to create BCF writer", e); - } + final VariantContextWriter bcfWriter = new VariantContextWriterBuilder() + .setOutputFile(bcfFile) + .setOutputFileType(VariantContextWriterBuilder.OutputType.BCF) + .setReferenceDictionary(stub.getMasterSequenceDictionary()) + .setOptions(options) + .build(); - VariantContextWriter bcfWriter = VariantContextWriterFactory.create(bcfFile, bcfStream, stub.getMasterSequenceDictionary(), stub.getIndexCreator(), options); writer = new TestWriter(writer, bcfWriter); } } diff --git a/public/gatk-engine/src/main/java/org/broadinstitute/gatk/engine/io/stubs/VariantContextWriterStub.java b/public/gatk-engine/src/main/java/org/broadinstitute/gatk/engine/io/stubs/VariantContextWriterStub.java index 6cd63497a..276b5c309 100644 --- a/public/gatk-engine/src/main/java/org/broadinstitute/gatk/engine/io/stubs/VariantContextWriterStub.java +++ b/public/gatk-engine/src/main/java/org/broadinstitute/gatk/engine/io/stubs/VariantContextWriterStub.java @@ -34,7 +34,6 @@ import org.broadinstitute.gatk.engine.GATKVCFUtils; import htsjdk.variant.variantcontext.VariantContext; import htsjdk.variant.variantcontext.writer.Options; import htsjdk.variant.variantcontext.writer.VariantContextWriter; -import htsjdk.variant.variantcontext.writer.VariantContextWriterFactory; import htsjdk.variant.vcf.VCFHeader; import htsjdk.variant.vcf.VCFHeaderLine; @@ -216,7 +215,8 @@ public class VariantContextWriterStub implements Stub, Var if ( indexOnTheFly) options.add(Options.INDEX_ON_THE_FLY); if ( writeFullFormatField ) options.add(Options.WRITE_FULL_FORMAT_FIELD); - if ( forceBCF || (getOutputFile() != null && VariantContextWriterFactory.isBCFOutput(getOutputFile())) ) + final File file = getOutputFile(); + if ( forceBCF || (file != null && options.contains(Options.FORCE_BCF) || file != null && file.getName().contains(".bcf")) ) options.add(Options.FORCE_BCF); return options.isEmpty() ? EnumSet.noneOf(Options.class) : EnumSet.copyOf(options); diff --git a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/CatVariants.java b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/CatVariants.java index 65936795c..f361cfa33 100644 --- a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/CatVariants.java +++ b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/CatVariants.java @@ -51,7 +51,7 @@ import htsjdk.variant.variantcontext.VariantContext; import htsjdk.variant.variantcontext.VariantContextComparator; import htsjdk.variant.variantcontext.writer.Options; import htsjdk.variant.variantcontext.writer.VariantContextWriter; -import htsjdk.variant.variantcontext.writer.VariantContextWriterFactory; +import htsjdk.variant.variantcontext.writer.VariantContextWriterBuilder; import java.io.*; import java.util.*; @@ -265,11 +265,16 @@ public class CatVariants extends CommandLineProgram { } } - FileOutputStream outputStream = new FileOutputStream(outputFile); EnumSet options = EnumSet.of(Options.INDEX_ON_THE_FLY); IndexCreator idxCreator = GATKVCFUtils.makeIndexCreator(variant_index_type, variant_index_parameter, outputFile, ref.getSequenceDictionary()); - final VariantContextWriter outputWriter = VariantContextWriterFactory.create(outputFile, outputStream, ref.getSequenceDictionary(), idxCreator, options); + final VariantContextWriter outputWriter = + new VariantContextWriterBuilder() + .setOutputFile(outputFile) + .setReferenceDictionary(ref.getSequenceDictionary()) + .setIndexCreator(idxCreator) + .setOptions(options) + .build(); boolean firstFile = true; int count = 0; while(!priorityQueue.isEmpty() ){ diff --git a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/LeftAlignAndTrimVariants.java b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/LeftAlignAndTrimVariants.java index c169a2844..7d24bdd5a 100644 --- a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/LeftAlignAndTrimVariants.java +++ b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/LeftAlignAndTrimVariants.java @@ -55,7 +55,7 @@ import org.broadinstitute.gatk.utils.help.DocumentedGATKFeature; import org.broadinstitute.gatk.utils.sam.AlignmentUtils; import htsjdk.variant.variantcontext.*; import htsjdk.variant.variantcontext.writer.VariantContextWriter; -import htsjdk.variant.variantcontext.writer.VariantContextWriterFactory; +import htsjdk.variant.variantcontext.writer.SortingVariantContextWriter; import java.util.*; @@ -194,7 +194,7 @@ public class LeftAlignAndTrimVariants extends RodWalker { baseWriter.writeHeader(new VCFHeader(headerLines, samples)); - writer = VariantContextWriterFactory.sortOnTheFly(baseWriter, MAX_INDEL_LENGTH); + writer = new SortingVariantContextWriter(baseWriter, MAX_INDEL_LENGTH); referenceWindowStop = getToolkit().getArguments().reference_window_stop; } diff --git a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/RandomlySplitVariants.java b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/RandomlySplitVariants.java index ce737178a..5e50a3a97 100644 --- a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/RandomlySplitVariants.java +++ b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/RandomlySplitVariants.java @@ -44,7 +44,7 @@ import org.broadinstitute.gatk.utils.exceptions.UserException; import org.broadinstitute.gatk.utils.help.DocumentedGATKFeature; import htsjdk.variant.variantcontext.VariantContext; import htsjdk.variant.variantcontext.writer.VariantContextWriter; -import htsjdk.variant.variantcontext.writer.VariantContextWriterFactory; +import htsjdk.variant.variantcontext.writer.VariantContextWriterBuilder; import java.io.File; import java.util.*; @@ -134,14 +134,20 @@ public class RandomlySplitVariants extends RodWalker { if(splitToMany){ writers = new VariantContextWriter[numOfFiles]; for(int i = 0; i { baseWriter.writeHeader(new VCFHeader(headerLines, samples)); - vcfWriter = VariantContextWriterFactory.sortOnTheFly(baseWriter, 200); + vcfWriter = new SortingVariantContextWriter(baseWriter, 200); } public Integer map(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { diff --git a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToVCF.java b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToVCF.java index 3bf2c11b5..a2a55d69b 100644 --- a/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToVCF.java +++ b/public/gatk-tools-public/src/main/java/org/broadinstitute/gatk/tools/walkers/variantutils/VariantsToVCF.java @@ -52,7 +52,7 @@ import org.broadinstitute.gatk.utils.exceptions.UserException; import org.broadinstitute.gatk.utils.help.DocumentedGATKFeature; import htsjdk.variant.variantcontext.*; import htsjdk.variant.variantcontext.writer.VariantContextWriter; -import htsjdk.variant.variantcontext.writer.VariantContextWriterFactory; +import htsjdk.variant.variantcontext.writer.SortingVariantContextWriter; import java.io.File; import java.util.*; @@ -116,7 +116,7 @@ public class VariantsToVCF extends RodWalker { VariantOverlapAnnotator variantOverlapAnnotator = null; public void initialize() { - vcfwriter = VariantContextWriterFactory.sortOnTheFly(baseWriter, 40, false); + vcfwriter = new SortingVariantContextWriter(baseWriter, 40); variantOverlapAnnotator = new VariantOverlapAnnotator(dbsnp.dbsnp, getToolkit().getGenomeLocParser()); }