public class CompressionHeaderEncodingMap
extends java.lang.Object
ByteArrayLenEncoding
, and does not use the 'BB' or 'QQ'
DataSeries when writing CRAM at all. Relies heavily on GZIP and RANS for compression.
See EncodingFactory
for details on how an EncodingDescriptor
is mapped to the codec that actually transfers data to and from underlying Slice blocks.Modifier and Type | Field and Description |
---|---|
static java.util.Set<DataSeries> |
DATASERIES_NOT_READ_BY_HTSJDK |
Constructor and Description |
---|
CompressionHeaderEncodingMap(CRAMEncodingStrategy encodingStrategy)
Constructor used to create the default encoding map for writing CRAMs.
|
CompressionHeaderEncodingMap(java.io.InputStream inputStream)
Constructor used to discover an encoding map from a serialized CRAM stream.
|
Modifier and Type | Method and Description |
---|---|
Block |
createCompressedBlockForStream(java.lang.Integer contentId,
java.io.ByteArrayOutputStream outputStream)
|
boolean |
equals(java.lang.Object o) |
ExternalCompressor |
getBestExternalCompressor(byte[] data,
CRAMEncodingStrategy encodingStrategy)
Return the best external compressor to use for the provided byte array (compressor that results in the
smallest compressed size).
|
EncodingDescriptor |
getEncodingDescriptorForDataSeries(DataSeries dataSeries)
Get the encoding params that should be used for a given DataSeries.
|
java.util.List<java.lang.Integer> |
getExternalIDs()
Get a list of all external IDs for this encoding map
|
int |
hashCode() |
void |
putExternalEncoding(DataSeries dataSeries,
EncodingDescriptor encodingDescriptor,
ExternalCompressor compressor) |
void |
putTagBlockCompression(int tagId,
ExternalCompressor compressor)
Add an external compressor for a tag block
|
void |
write(java.io.OutputStream outputStream)
Write the encoding map out to a CRAM Stream
|
public static final java.util.Set<DataSeries> DATASERIES_NOT_READ_BY_HTSJDK
public CompressionHeaderEncodingMap(CRAMEncodingStrategy encodingStrategy)
encodingStrategy
- CRAMEncodingStrategy
containing parameter values to use when creating
the encoding mappublic CompressionHeaderEncodingMap(java.io.InputStream inputStream)
inputStream
- the CRAM input stream to be consumedpublic void putTagBlockCompression(int tagId, ExternalCompressor compressor)
tagId
- the tag as a content IDcompressor
- compressor to be used for this tag blockpublic EncodingDescriptor getEncodingDescriptorForDataSeries(DataSeries dataSeries)
dataSeries
- public java.util.List<java.lang.Integer> getExternalIDs()
public Block createCompressedBlockForStream(java.lang.Integer contentId, java.io.ByteArrayOutputStream outputStream)
Block
for that ID by obtaining the contents of the stream,
compressing it using the compressor for that contentID, and converting the result to a Block
.contentId
- contentID to useoutputStream
- stream to compresspublic void write(java.io.OutputStream outputStream) throws java.io.IOException
outputStream
- stream to writejava.io.IOException
public ExternalCompressor getBestExternalCompressor(byte[] data, CRAMEncodingStrategy encodingStrategy)
data
- byte array to compressencodingStrategy
- encoding strategy parameters to useExternalCompressor
to use for this datapublic void putExternalEncoding(DataSeries dataSeries, EncodingDescriptor encodingDescriptor, ExternalCompressor compressor)
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object