/** * Reads next container from the stream. * * @param inputStream the stream to read from * @return CRAM container or null if no more data * @throws IOException */ private static Container readContainer(final int major, final InputStream inputStream) throws IOException { return readContainer(major, inputStream, 0, Integer.MAX_VALUE); }
protected Container containerFromStream(final Version cramVersion, final CountingInputStream countingStream) { final Container container = ContainerIO.readContainerHeader(cramVersion.major, countingStream); InputStreamUtils.skipFully(countingStream, container.containerByteSize); return container; }
@Override public void run() { try { container = CramSerilization.convert(records, samFileHeader, source, lossyOptions); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ContainerIO.writeContainer(cramVersion, container, baos); bytes = baos.toByteArray(); batchResultQueue.put(this); } catch (Exception e) { exceptionInWorker(e); } }
@SuppressWarnings("SameParameterValue") private static Container readContainer(final int major, final InputStream inputStream, final int fromSlice, int howManySlices) throws IOException { final Container container = readContainerHeader(major, inputStream); if (container.isEOF()) { return container; } container.header = CompressionHeader.read(major, inputStream); howManySlices = Math.min(container.landmarks.length, howManySlices); if (fromSlice > 0) //noinspection ResultOfMethodCallIgnored inputStream.skip(container.landmarks[fromSlice]); final List<Slice> slices = new ArrayList<Slice>(); for (int sliceCount = fromSlice; sliceCount < howManySlices - fromSlice; sliceCount++) { final Slice slice = new Slice(); SliceIO.read(major, slice, inputStream); slice.index = sliceCount; slices.add(slice); } container.slices = slices.toArray(new Slice[slices.size()]); calculateSliceOffsetsAndSizes(container); log.debug("READ CONTAINER: " + container.toString()); return container; }
@Override public OrderedByteArray get() { OrderedByteArray cb = new OrderedByteArray(); Container containerHeader; try { containerHeader = ContainerIO.readContainerHeader(cramHeader.getVersion().major, is); log.debug("Read container: " + containerHeader.toString()); if (containerHeader.isEOF()) { log.info("EOF container"); return null; } ByteArrayOutputStream baos = new ByteArrayOutputStream(containerHeader.containerByteSize + 1024 * 10); ContainerIO.writeContainerHeader(cramHeader.getVersion().major, containerHeader, baos); byte[] blocks = InputStreamUtils.readFully(is, containerHeader.containerByteSize); baos.write(blocks); cb.bytes = baos.toByteArray(); cb.order = order++; return cb; } catch (IOException e) { throw new RuntimeIOException(e); } } }
Container container = ContainerIO.readContainer(version, cramSeekableStream); Assert.assertNotNull(container); Container eof = ContainerIO.readContainer(version, cramSeekableStream); Assert.assertNotNull(eof); Assert.assertTrue(eof.isEOF()); ContainerIO.readContainerHeader(version.major, cramSeekableStream);
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(); }
@SuppressWarnings("SameParameterValue") private static Container readContainer(final int major, final InputStream inputStream, final int fromSlice, int howManySlices) { final Container container = readContainerHeader(major, inputStream); if (container.isEOF()) { return container; } container.header = CompressionHeader.read(major, inputStream); howManySlices = Math.min(container.landmarks.length, howManySlices); try { if (fromSlice > 0) //noinspection ResultOfMethodCallIgnored inputStream.skip(container.landmarks[fromSlice]); } catch (final IOException e) { throw new RuntimeIOException(e); } final List<Slice> slices = new ArrayList<Slice>(); for (int sliceCount = fromSlice; sliceCount < howManySlices - fromSlice; sliceCount++) { final Slice slice = new Slice(); SliceIO.read(major, slice, inputStream); slice.index = sliceCount; slices.add(slice); } container.slices = slices.toArray(new Slice[slices.size()]); calculateSliceOffsetsAndSizes(container); log.debug("READ CONTAINER: " + container.toString()); return container; }
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(); }
/** * Reads next container from the stream. * * @param inputStream the stream to read from * @return CRAM container or null if no more data */ private static Container readContainer(final int major, final InputStream inputStream) { return readContainer(major, inputStream, 0, Integer.MAX_VALUE); }
protected Container containerFromStream(final Version cramVersion, final CountingInputStream countingStream) throws IOException { final Container container = ContainerIO.readContainerHeader(cramVersion.major, countingStream); InputStreamUtils.skipFully(countingStream, container.containerByteSize); return container; }
offset += ContainerIO.writeContainer(cramVersion, container, outputStream); if (indexer != null) {
/** * Consume the entirety of the next container from the stream. * @param cramVersion * @param countingStream * @return The next Container from the stream. * @throws IOException */ protected Container containerFromStream(final Version cramVersion, final CountingInputStream countingStream) throws IOException { return ContainerIO.readContainer(cramHeader.getVersion(), countingStream); }
private static SAMFileHeader readSAMFileHeader(final Version version, InputStream inputStream, final String id) throws IOException { final Container container = ContainerIO.readContainerHeader(version.major, inputStream); final Block block;
ContainerIO.writeContainer(header.getVersion(), container, baos); } catch (IOException e) { throw new RuntimeIOException();
/** * Consume the entirety of the next container from the stream. * @param cramVersion * @param countingStream * @return The next Container from the stream. */ protected Container containerFromStream(final Version cramVersion, final CountingInputStream countingStream) { return ContainerIO.readContainer(cramHeader.getVersion(), countingStream); }
private static SAMFileHeader readSAMFileHeader(final Version version, InputStream inputStream, final String id) { final Container container = ContainerIO.readContainerHeader(version.major, inputStream); final Block block;
offset += ContainerIO.writeContainer(cramVersion, container, outputStream); if (indexer != null) {