Dev/matterhorn decoder (#324)
Build on RHEL9 / build (push) Successful in 2m49s
Build on RHEL8 / build (push) Successful in 3m35s
Run tests using data on local RHEL8 / build (push) Successful in 4m1s
Build on local RHEL8 / build (push) Successful in 3m9s

- reshape image directly in decoder such that first dimension is num
counters
- take into account chip artefact in decoder.

---------

Co-authored-by: Erik Fröjdh <erik.frojdh@psi.ch>
This commit is contained in:
2026-06-11 15:04:20 +02:00
committed by GitHub
co-authored by GitHub Erik Fröjdh
parent 2041c7310a
commit ee7503082d
4 changed files with 24 additions and 14 deletions
+8 -9
View File
@@ -8,10 +8,10 @@ def test_matterhorn10_16bit(test_data_path):
with CtbRawFile(test_data_path / "raw/Matterhorn10/16bit_master_0.json", transform = transform.Matterhorn10Transform(dynamic_range=16, num_counters=1)) as f:
headers, frames = f.read_frame()
assert frames.shape == (256, 256)
assert frames.shape == (1, 256, 256)
assert frames.dtype == np.uint16
expected_data = np.tile(np.arange(255, -1, -1,dtype=np.uint16), (256, 1)) # TODO: endianess issue ?
expected_data = np.tile(np.arange(255, -1, -1,dtype=np.uint16), (1, 256, 1)) # TODO: endianess issue ?
assert np.all(frames == expected_data)
@@ -22,24 +22,23 @@ def test_matterhorn10_8bit(test_data_path):
with CtbRawFile(test_data_path / "raw/Matterhorn10/8bit_master_1.json", transform = transform.Matterhorn10Transform(dynamic_range=8, num_counters=1)) as f:
headers, frames = f.read_frame()
assert frames.shape == (256, 256)
assert frames.shape == (1, 256, 256)
assert frames.dtype == np.uint8
expected_data = np.tile(np.arange(255, -1, -1,dtype=np.uint8), (256, 1)) # TODO: endianess issue ?
expected_data = np.tile(np.arange(255, -1, -1,dtype=np.uint8), (1, 256, 1)) # TODO: endianess issue ?
assert np.all(frames == expected_data)
@pytest.mark.withdata
def test_matterhorn10_4bit(test_data_path):
""" Matterhorn10Transform 1 counter 4 bit dynamic range """
with CtbRawFile(test_data_path / "raw/Matterhorn10/newnewrun_4bit_1counter_master_0.json", transform = transform.Matterhorn10Transform(dynamic_range=4, num_counters=1)) as f:
headers, frames = f.read_frame()
assert frames.shape == (256, 256)
assert frames.shape == (1, 256, 256)
assert frames.dtype == np.uint8
expected_data = np.tile(np.tile(np.arange(15, -1, -1, dtype=np.uint8), 16), (256, 1)) # TODO: endianess issue ?
expected_data = np.tile(np.tile(np.arange(15, -1, -1, dtype=np.uint8), 16), (1, 256, 1)) # TODO: endianess issue ?
assert np.all(frames == expected_data)
@@ -50,9 +49,9 @@ def test_matterhorn10_16bit_4counters(test_data_path):
with CtbRawFile(test_data_path / "raw/Matterhorn10/4counter_16bit_master_4.json", transform = transform.Matterhorn10Transform(dynamic_range=16, num_counters=4)) as f:
headers, frames = f.read_frame()
assert frames.shape == (4*256, 256)
assert frames.shape == (4, 256, 256)
assert frames.dtype == np.uint16
expected_data = np.tile(np.arange(255, -1, -1,dtype=np.uint16), (4*256, 1)) # TODO: endianess issue ?
expected_data = np.tile(np.arange(255, -1, -1,dtype=np.uint16), (4, 256, 1)) # TODO: endianess issue ?
assert np.all(frames == expected_data)