@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new BetaIntegerCodec(coreBlockInputStream, coreBlockOutputStream, offset, bitsPerValue); }
@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new SubexponentialIntegerCodec(coreBlockInputStream, coreBlockOutputStream, offset, k); }
@Override public CRAMCodec<Byte> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new CanonicalHuffmanByteCodec(coreBlockInputStream, coreBlockOutputStream, values, bitLengths); } }
@DataProvider(name = "negativeConstructor") public static Object[][] negativeConstructor() { return new Object[][] { // mismatch type and encoding {DataSeriesType.BYTE, new BetaIntegerEncoding(0, 8).toParam()} }; }
@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new GammaIntegerCodec(coreBlockInputStream, coreBlockOutputStream, offset); }
public static GammaIntegerEncoding fromParams(final byte[] data) { final int offset = ITF8.readUnsignedITF8(data); return new GammaIntegerEncoding(offset); }
@Test(dataProvider = "bitsPerValue", expectedExceptions = IllegalArgumentException.class) public void bitsPerValue(final int bitsPerValue) { new BetaIntegerEncoding(0, bitsPerValue); } }
@Test(expectedExceptions = IllegalArgumentException.class) public void negativeK() { new SubexponentialIntegerEncoding(0, -1); } }
@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new CanonicalHuffmanIntegerCodec(coreBlockInputStream, coreBlockOutputStream, values, bitLengths); }
@Override public final void write(final Integer value) { coreBlockOutputStream.write(getAndCheckOffsetValue(value), bitsPerValue); } }
@Test(dataProvider = "basicTest") public void basicTest(final int bitsPerValue, final int offset, final int[] values) throws IOException { testCodec(offset, bitsPerValue, values); }
@Test(dataProvider = "basicTest") public void basicTest(final int offset, final int k, final int[] values, final byte[] expected) throws IOException { testCodec(offset, k, values, expected); }
@DataProvider(name = "negativeConstructor") public static Object[][] negativeConstructor() { return new Object[][] { // mismatch type and encoding {DataSeriesType.BYTE, new BetaIntegerEncoding(0, 8).toParam()} }; }
@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new BetaIntegerCodec(coreBlockInputStream, coreBlockOutputStream, offset, bitsPerValue); }
@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new SubexponentialIntegerCodec(coreBlockInputStream, coreBlockOutputStream, offset, k); }
@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new GammaIntegerCodec(coreBlockInputStream, coreBlockOutputStream, offset); }
public static GammaIntegerEncoding fromParams(final byte[] data) { final int offset = ITF8.readUnsignedITF8(data); return new GammaIntegerEncoding(offset); }
@Override public CRAMCodec<Byte> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new CanonicalHuffmanByteCodec(coreBlockInputStream, coreBlockOutputStream, values, bitLengths); } }
@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new CanonicalHuffmanIntegerCodec(coreBlockInputStream, coreBlockOutputStream, values, bitLengths); }
@Test(dataProvider = "basicTestNoOffset") public void basicTestNoOffset(final int bitsPerValue, final int[] values) throws IOException { testCodec(0, bitsPerValue, values); }