Skip to content

Commit be6b5e2

Browse files
committed
Add int_trunc filter
1 parent 02adc2c commit be6b5e2

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

blosc2/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class Filter(Enum):
4646
NDCELL = 32
4747
NDMEAN = 33
4848
BYTEDELTA = 35
49+
INT_TRUNC = 36
4950

5051

5152
class SplitMode(Enum):

doc/reference/autofiles/top_level/blosc2.Filter.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@
1616
~Filter.TRUNC_PREC
1717
~Filter.NDCELL
1818
~Filter.NDMEAN
19+
~Filter.BYTEDELTA
20+
~Filter.INT_TRUNC
1921

tests/test_compress2.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,37 @@ def test_compress2_numpy(obj, cparams, dparams, gil):
6868
assert np.array_equal(dest4, obj)
6969

7070

71+
@pytest.mark.parametrize("gil", [True, False])
72+
@pytest.mark.parametrize(
73+
"obj, cparams, dparams",
74+
[
75+
(
76+
np.random.randint(0, 10, 10, dtype=np.int64),
77+
{"codec": blosc2.Codec.LZ4, "clevel": 6, "filters_meta": [-50]},
78+
{}
79+
),
80+
(
81+
np.arange(10, dtype="int32"),
82+
{"filters_meta": [-20]},
83+
{"nthreads": 4},
84+
),
85+
(np.arange(45, dtype=np.int16), {"codec": blosc2.Codec.LZ4HC, "filters_meta": [-10]}, {}),
86+
(np.arange(50, dtype=np.int8), {"filters_meta": [-5]}, blosc2.dparams_dflts),
87+
],
88+
)
89+
def test_compress2_int_trunc(obj, cparams, dparams, gil):
90+
blosc2.set_releasegil(gil)
91+
cparams["filters"] = [blosc2.Filter.INT_TRUNC]
92+
cparams["typesize"] = obj.dtype.itemsize
93+
c = blosc2.compress2(obj, **cparams)
94+
95+
dest = np.empty(obj.shape, obj.dtype)
96+
blosc2.decompress2(c, dst=dest, **dparams)
97+
98+
for i in range(obj.shape[0]):
99+
assert (obj[i] - dest[i]) <= (2**((-1)*cparams["filters_meta"][0]))
100+
101+
71102
@pytest.mark.parametrize("gil", [True, False])
72103
@pytest.mark.parametrize(
73104
"nbytes, cparams, dparams",

0 commit comments

Comments
 (0)