public static void write(final int major, final Slice slice, final OutputStream outputStream) throws IOException { slice.nofBlocks = 1 + slice.external.size() + (slice.embeddedRefBlock == null ? 0 : 1); { slice.contentIDs = new int[slice.external.size()]; final int i = 0; for (final int id : slice.external.keySet()) slice.contentIDs[i] = id; } slice.headerBlock = Block.createRawSliceHeaderBlock(createSliceHeaderBlockContent(major, slice)); slice.headerBlock.write(major, outputStream); slice.coreBlock.write(major, outputStream); for (final Block block : slice.external.values()) block.write(major, outputStream); }
public static void write(final int major, final Slice slice, final OutputStream outputStream) { slice.nofBlocks = 1 + slice.external.size() + (slice.embeddedRefBlock == null ? 0 : 1); { slice.contentIDs = new int[slice.external.size()]; final int i = 0; for (final int id : slice.external.keySet()) slice.contentIDs[i] = id; } slice.headerBlock = Block.createRawSliceHeaderBlock(createSliceHeaderBlockContent(major, slice)); slice.headerBlock.write(major, outputStream); slice.coreBlock.write(major, outputStream); for (final Block block : slice.external.values()) block.write(major, outputStream); }
/** * Write this CompressionHeader out to an internal OutputStream, wrap it in a Block, and write that * Block out to the passed-in OutputStream. * * @param cramVersion the CRAM major version number * @param blockStream the stream to write to */ public void write(final Version cramVersion, final OutputStream blockStream) { try (final ByteArrayOutputStream internalOutputStream = new ByteArrayOutputStream()) { internalWrite(internalOutputStream); final Block block = Block.createRawCompressionHeaderBlock(internalOutputStream.toByteArray()); block.write(cramVersion.major, blockStream); } catch (final IOException e) { throw new RuntimeIOException(e); } }
/** * Write this CompressionHeader out to an internal OutputStream, wrap it in a Block, and write that * Block out to the passed-in OutputStream. * * @param cramVersion the CRAM major version number * @param blockStream the stream to write to */ public void write(final Version cramVersion, final OutputStream blockStream) { try (final ByteArrayOutputStream internalOutputStream = new ByteArrayOutputStream()) { internalWrite(internalOutputStream); final Block block = Block.createRawCompressionHeaderBlock(internalOutputStream.toByteArray()); block.write(cramVersion.major, blockStream); } catch (final IOException e) { throw new RuntimeIOException(e); } }
private static long writeContainerForSamFileHeader(final int major, final SAMFileHeader samFileHeader, final OutputStream os) { final byte[] data = toByteArray(samFileHeader); final int length = Math.max(1024, data.length + data.length / 2); final byte[] blockContent = new byte[length]; System.arraycopy(data, 0, blockContent, 0, Math.min(data.length, length)); final Block block = Block.createRawFileHeaderBlock(blockContent); final Container container = new Container(); container.blockCount = 1; container.blocks = new Block[]{block}; container.landmarks = new int[0]; container.slices = new Slice[0]; container.alignmentSpan = Slice.NO_ALIGNMENT_SPAN; container.alignmentStart = Slice.NO_ALIGNMENT_START; container.bases = 0; container.globalRecordCounter = 0; container.nofRecords = 0; container.sequenceId = 0; final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); block.write(major, byteArrayOutputStream); container.containerByteSize = byteArrayOutputStream.size(); final int containerHeaderByteSize = ContainerIO.writeContainerHeader(major, container, os); try { os.write(byteArrayOutputStream.toByteArray(), 0, byteArrayOutputStream.size()); } catch (final IOException e) { throw new RuntimeIOException(e); } return containerHeaderByteSize + byteArrayOutputStream.size(); }
private Block roundTrip(final Block in, final Version version) throws IOException { byte[] written; try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) { in.write(version.major, os); written = os.toByteArray(); } try (final InputStream is = new ByteArrayInputStream(written)) { return Block.read(version.major, is); } }
if (isFileHeaderContainer) { final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); firstBlock.write(version.major, byteArrayOutputStream); container.containerByteSize = byteArrayOutputStream.size();
block.write(newHeader.getVersion().major, byteArrayOutputStream); if (byteArrayOutputStream.size() > c.containerByteSize) { log.error("Failed to replace CRAM header because the new header does not fit.");
private static long writeContainerForSamFileHeader(final int major, final SAMFileHeader samFileHeader, final OutputStream os) throws IOException { final byte[] data = toByteArray(samFileHeader); final int length = Math.max(1024, data.length + data.length / 2); final byte[] blockContent = new byte[length]; System.arraycopy(data, 0, blockContent, 0, Math.min(data.length, length)); final Block block = Block.createRawFileHeaderBlock(blockContent); final Container container = new Container(); container.blockCount = 1; container.blocks = new Block[]{block}; container.landmarks = new int[0]; container.slices = new Slice[0]; container.alignmentSpan = Slice.NO_ALIGNMENT_SPAN; container.alignmentStart = Slice.NO_ALIGNMENT_START; container.bases = 0; container.globalRecordCounter = 0; container.nofRecords = 0; container.sequenceId = 0; final ExposedByteArrayOutputStream byteArrayOutputStream = new ExposedByteArrayOutputStream(); block.write(major, byteArrayOutputStream); container.containerByteSize = byteArrayOutputStream.size(); final int containerHeaderByteSize = ContainerIO.writeContainerHeader(major, container, os); os.write(byteArrayOutputStream.getBuffer(), 0, byteArrayOutputStream.size()); return containerHeaderByteSize + byteArrayOutputStream.size(); }
block.write(newHeader.getVersion().major, byteArrayOutputStream); if (byteArrayOutputStream.size() > c.containerByteSize) { log.error("Failed to replace CRAM header because the new header does not fit.");
if (isFileHeaderContainer) { final ExposedByteArrayOutputStream byteArrayOutputStream = new ExposedByteArrayOutputStream(); firstBlock.write(version.major, byteArrayOutputStream); container.containerByteSize = byteArrayOutputStream.size();