/** * Set the output file for the next <code>VariantContextWriter</code> created by this builder. * Determines file type implicitly from the filename. * * @param outFile the file the <code>VariantContextWriter</code> will write to * @return this <code>VariantContextWriterBuilder</code> */ public VariantContextWriterBuilder setOutputFile(final String outFile) { return setOutputFile(new File(outFile)); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testSetInvalidFileType() { new VariantContextWriterBuilder() .setReferenceDictionary(dictionary) .setOutputFile("test.bam") .setOutputFileType(VariantContextWriterBuilder.OutputType.VCF_STREAM) .build(); }
/** * Set the output file for the next <code>VariantContextWriter</code> created by this builder. * Determines file type implicitly from the filename. * * @param outFile the file the <code>VariantContextWriter</code> will write to * @return this <code>VariantContextWriterBuilder</code> */ public VariantContextWriterBuilder setOutputFile(final String outFile) { return setOutputFile(new File(outFile)); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testRefDictRequiredForVCFIndexOnTheFly() { new VariantContextWriterBuilder() .setOutputFile(vcf) .setOption(Options.INDEX_ON_THE_FLY) .build(); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testRefDictRequiredForBCFIndexOnTheFly() { new VariantContextWriterBuilder() .setOutputFile(bcf) .setOption(Options.INDEX_ON_THE_FLY) .build(); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testInvalidImplicitFileType() { new VariantContextWriterBuilder() .setReferenceDictionary(dictionary) .setOutputFile("test.bam") .build(); }
@Test public void testStdOut() { final VariantContextWriter writer = new VariantContextWriterBuilder().setOutputFile("/dev/stdout").clearOptions().build(); OutputStream s = ((VCFWriter) writer).getOutputStream(); Assert.assertNotNull(((VCFWriter) writer).getOutputStream()); Assert.assertNotEquals(((VCFWriter) writer).getStreamName(), IndexingVariantContextWriter.DEFAULT_READER_NAME); }
private void writeSortedOutput(final VCFHeader outputHeader, final SortingCollection<VariantContext> sortedOutput) { final ProgressLogger writeProgress = new ProgressLogger(log, 25000, "wrote", "records"); final EnumSet<Options> options = CREATE_INDEX ? EnumSet.of(Options.INDEX_ON_THE_FLY) : EnumSet.noneOf(Options.class); final VariantContextWriter out = new VariantContextWriterBuilder(). setReferenceDictionary(outputHeader.getSequenceDictionary()). setOptions(options). setOutputFile(OUTPUT).build(); out.writeHeader(outputHeader); for (final VariantContext variantContext : sortedOutput) { out.add(variantContext); writeProgress.record(variantContext.getContig(), variantContext.getStart()); } out.close(); } }
@Test public void testAsync() { final VariantContextWriterBuilder builder = new VariantContextWriterBuilder() .setReferenceDictionary(dictionary) .setOutputFile(vcf); VariantContextWriter writer = builder.build(); Assert.assertEquals(writer instanceof AsyncVariantContextWriter, Defaults.USE_ASYNC_IO_WRITE_FOR_TRIBBLE, "testAsync default"); writer = builder.setOption(Options.USE_ASYNC_IO).build(); Assert.assertTrue(writer instanceof AsyncVariantContextWriter, "testAsync option=set"); writer = builder.unsetOption(Options.USE_ASYNC_IO).build(); Assert.assertFalse(writer instanceof AsyncVariantContextWriter, "testAsync option=unset"); }
private void writeSortedOutput(final VCFHeader outputHeader, final SortingCollection<VariantContext> sortedOutput) { final ProgressLogger writeProgress = new ProgressLogger(log, 25000, "wrote", "records"); final EnumSet<Options> options = CREATE_INDEX ? EnumSet.of(Options.INDEX_ON_THE_FLY) : EnumSet.noneOf(Options.class); final VariantContextWriter out = new VariantContextWriterBuilder(). setReferenceDictionary(outputHeader.getSequenceDictionary()). setOptions(options). setOutputFile(OUTPUT).build(); out.writeHeader(outputHeader); for (final VariantContext variantContext : sortedOutput) { out.add(variantContext); writeProgress.record(variantContext.getContig(), variantContext.getStart()); } out.close(); } }
public VariantContextWriterBuilder getVariantContextWriterBuilder(File output, boolean createIndex) { VariantContextWriterBuilder builder = new VariantContextWriterBuilder() .setOutputFile(output) .setReferenceDictionary(getReference().getSequenceDictionary()); builder.clearOptions(); if (createIndex) { builder.setOption(Options.INDEX_ON_THE_FLY); } else { builder.clearIndexCreator(); } return builder; } /**
private VariantContextWriter getWriter() { SAMSequenceDictionary seqDict = new SAMSequenceDictionary(); EnumSet<Options> options = VariantContextWriterBuilder.DEFAULT_OPTIONS; options.add(Options.ALLOW_MISSING_FIELDS_IN_HEADER); VariantContextWriterBuilder builder = new VariantContextWriterBuilder() .setReferenceDictionary(seqDict) .setOptions(options); VariantContextWriter writer = builder.setOutputFile(outFile).build(); return writer; }
@Override public VariantContextWriter makeWriter(final File file, final EnumSet<Options> baseOptions) { return new VariantContextWriterBuilder() .setOutputFile(file) .setReferenceDictionary(dictionary) .setOptions(baseOptions) .build(); }
@Override public VariantContextWriter makeWriter(final File file, final EnumSet<Options> baseOptions) { return new VariantContextWriterBuilder() .setOutputFile(file) .setReferenceDictionary(dictionary) .setOptions(baseOptions) .build(); }
@Test(expectedExceptions = IllegalStateException.class) public void testChangeHeaderAfterWritingHeader() throws IOException { final File bcfOutputFile = File.createTempFile("testWriteAndReadVCF.", ".bcf", tempDir); bcfOutputFile.deleteOnExit(); final VCFHeader header = createFakeHeader(); // prevent changing header if it's already written try (final VariantContextWriter writer = new VariantContextWriterBuilder() .setOutputFile(bcfOutputFile).setReferenceDictionary(header.getSequenceDictionary()) .unsetOption(Options.INDEX_ON_THE_FLY) .build()) { writer.writeHeader(header); writer.setHeader(header); } }
@Test(expectedExceptions = IllegalStateException.class) public void testWriteHeaderTwice() throws IOException { final File bcfOutputFile = File.createTempFile("testWriteAndReadVCF.", ".bcf", tempDir); bcfOutputFile.deleteOnExit(); final VCFHeader header = createFakeHeader(); // prevent writing header twice try (final VariantContextWriter writer = new VariantContextWriterBuilder() .setOutputFile(bcfOutputFile).setReferenceDictionary(header.getSequenceDictionary()) .unsetOption(Options.INDEX_ON_THE_FLY) .build()) { writer.writeHeader(header); writer.writeHeader(header); } }
@Test public void testBuffering() { final VariantContextWriterBuilder builder = new VariantContextWriterBuilder() .setReferenceDictionary(dictionary) .setOutputFile(vcf) .unsetOption(Options.INDEX_ON_THE_FLY); // so the potential BufferedOutputStream is not wrapped in a PositionalOutputStream VariantContextWriter writer = builder.build(); Assert.assertTrue(((VCFWriter) writer).getOutputStream() instanceof BufferedOutputStream, "testBuffering was not buffered by default"); writer = builder.unsetBuffering().build(); Assert.assertFalse(((VCFWriter) writer).getOutputStream() instanceof BufferedOutputStream, "testBuffering was buffered when unset"); writer = builder.setBuffer(8192).build(); Assert.assertTrue(((VCFWriter) writer).getOutputStream() instanceof BufferedOutputStream, "testBuffering was not buffered when set"); }
@Test(expectedExceptions = IllegalStateException.class) public void testWriteHeaderTwice() { final File fakeVCFFile = VariantBaseTest.createTempFile("testBasicWriteAndRead.", IOUtil.VCF_FILE_EXTENSION); fakeVCFFile.deleteOnExit(); final SAMSequenceDictionary sequenceDict = createArtificialSequenceDictionary(); final VCFHeader header = createFakeHeader(metaData, additionalColumns, sequenceDict); // prevent writing header twice try (final VariantContextWriter writer1 = new VariantContextWriterBuilder() .setOutputFile(fakeVCFFile) .setReferenceDictionary(sequenceDict) .build()) { writer1.writeHeader(header); writer1.writeHeader(header); } }
@Test(expectedExceptions = IllegalStateException.class) public void testChangeHeaderAfterWritingHeader() { final File fakeVCFFile = VariantBaseTest.createTempFile("testBasicWriteAndRead.", IOUtil.VCF_FILE_EXTENSION); fakeVCFFile.deleteOnExit(); final SAMSequenceDictionary sequenceDict = createArtificialSequenceDictionary(); final VCFHeader header = createFakeHeader(metaData, additionalColumns, sequenceDict); // prevent changing header if it's already written try (final VariantContextWriter writer2 = new VariantContextWriterBuilder() .setOutputFile(fakeVCFFile) .setReferenceDictionary(sequenceDict) .build()) { writer2.writeHeader(header); writer2.setHeader(header); } }
@Test(expectedExceptions = IllegalStateException.class) public void testChangeHeaderAfterWritingBody() throws IOException { final File bcfOutputFile = File.createTempFile("testWriteAndReadVCF.", ".bcf", tempDir); bcfOutputFile.deleteOnExit(); final VCFHeader header = createFakeHeader(); // prevent changing header if part of body is already written try (final VariantContextWriter writer = new VariantContextWriterBuilder() .setOutputFile(bcfOutputFile).setReferenceDictionary(header.getSequenceDictionary()) .unsetOption(Options.INDEX_ON_THE_FLY) .build()) { writer.setHeader(header); writer.add(createVC(header)); writer.setHeader(header); } }