private static void writeVCsToFile(final VariantContextWriter writer, final VCFHeader header, final Iterable<VariantContext> vcs) { // write writer.writeHeader(header); for ( VariantContext vc : vcs ) if (vc != null) writer.add(vc); writer.close(); }
@Override public void setHeader(final VCFHeader header) { this.underlyingWriter.setHeader(header); }
/** * initialize this VCF header * * @param header the header */ public void writeHeader(VCFHeader header) { writer.writeHeader(header); }
public VariantContextWriter reduce(final VariantContext vc, final VariantContextWriter writer) { if ( vc != null ) writer.add(vc); return writer; }
/** * Close the VCF storage object. */ public void close() { writer.close(); closed = true; }
private void writeAllViolations(final MendelianViolationDetector.Result result) { if (VCF_DIR != null) { LOG.info(String.format("Writing family violation VCFs to %s/", VCF_DIR.getAbsolutePath())); final VariantContextComparator vcComparator = new VariantContextComparator(inputHeader.get().getContigLines()); final Set<VCFHeaderLine> headerLines = new LinkedHashSet<>(inputHeader.get().getMetaDataInInputOrder()); headerLines.add(new VCFInfoHeaderLine(MendelianViolationDetector.MENDELIAN_VIOLATION_KEY, 1, VCFHeaderLineType.String, "Type of mendelian violation.")); headerLines.add(new VCFInfoHeaderLine(MendelianViolationDetector.ORIGINAL_AC, VCFHeaderLineCount.A, VCFHeaderLineType.Integer, "Original AC")); headerLines.add(new VCFInfoHeaderLine(MendelianViolationDetector.ORIGINAL_AF, VCFHeaderLineCount.A, VCFHeaderLineType.Float, "Original AF")); headerLines.add(new VCFInfoHeaderLine(MendelianViolationDetector.ORIGINAL_AN, 1, VCFHeaderLineType.Integer, "Original AN")); for (final PedFile.PedTrio trio : pedFile.get().values()) { final File outputFile = new File(VCF_DIR, IOUtil.makeFileNameSafe(trio.getFamilyId() + IOUtil.VCF_FILE_EXTENSION)); LOG.info(String.format("Writing %s violation VCF to %s", trio.getFamilyId(), outputFile.getAbsolutePath())); final VariantContextWriter out = new VariantContextWriterBuilder() .setOutputFile(outputFile) .unsetOption(INDEX_ON_THE_FLY) .build(); final VCFHeader newHeader = new VCFHeader(headerLines, CollectionUtil.makeList(trio.getMaternalId(), trio.getPaternalId(), trio.getIndividualId())); final TreeSet<VariantContext> orderedViolations = new TreeSet<>(vcComparator); orderedViolations.addAll(result.violations().get(trio.getFamilyId())); out.writeHeader(newHeader); orderedViolations.forEach(out::add); out.close(); } } }
@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); } }
@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); } }
@Override public void writeHeader(final VCFHeader header) { for ( final VariantContextWriter writer : writers ) writer.writeHeader(header); }
@Override public void add(final VariantContext vc) { for ( final VariantContextWriter writer : writers ) writer.add(vc); }
@Override public boolean close() { variantContextWriter.close(); return true; } }
private void innerWriteToFifo(String pathToFifo) { // Do not enable INDEX_OF_THE_FLY because that is not compatible with writing to a pipe. final VariantContextWriterBuilder builder = new VariantContextWriterBuilder() .clearOptions() .setReferenceDictionary(dictionary); Path vcfPath = Paths.get(pathToFifo); VariantContextWriter writer = builder.setOutputPath(vcfPath).build(); writer.writeHeader(new VCFHeader()); writer.close(); }
@Test(expectedExceptions = IllegalStateException.class) public void testChangeHeaderAfterWritingBody() { 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 part of body is already written try (final VariantContextWriter writer3 = new VariantContextWriterBuilder() .setOutputFile(fakeVCFFile) .setReferenceDictionary(sequenceDict) .build()) { writer3.setHeader(header); writer3.add(createVC(header)); writer3.setHeader(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); } }
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(); } }
@Override public void writeHeader(VCFHeader header) { innerWriter.writeHeader(header); }
@Override protected void synchronouslyWrite(final VariantContext item) { this.underlyingWriter.add(item); }
@Override public void close() { for ( final VariantContextWriter writer : writers ) writer.close(); }
@Test public void testWriteHeader() throws Exception { FeatureCodec codec = CodecFactory.getCodec(inpath, genome); AbstractFeatureReader<Feature, ?> bfs = AbstractFeatureReader.getFeatureReader(inpath, codec, false); VCFHeader header0 = (VCFHeader) bfs.getHeader(); VariantContextWriter writer = getWriter(); writer.writeHeader(header0); writer.close(); AbstractFeatureReader<Feature, ?> bfs1 = AbstractFeatureReader.getFeatureReader(outFile.getAbsolutePath(), codec, false); VCFHeader header1 = (VCFHeader) bfs1.getHeader(); assertHeadersEquals(header0, header1); }