mirror of
https://github.com/paulscherrerinstitute/sf_daq_broker.git
synced 2026-08-05 02:32:25 +02:00
Bug fix in image assembly code
This commit is contained in:
@@ -42,7 +42,7 @@ class RamBuffer(object):
|
||||
|
||||
# Pulse_id slot offset + data buffer offset
|
||||
data_offset_start = pulse_id_offset + META_FRAME_BYTES * self.n_modules
|
||||
data_offset_end = data_offset_start + DATA_FRAME_BYTES
|
||||
data_offset_end = data_offset_start + DATA_FRAME_BYTES * self.n_modules
|
||||
|
||||
meta_buffer = memoryview(self.raw_buffer)[meta_offset_start:meta_offset_end]
|
||||
data_buffer = memoryview(self.raw_buffer)[data_offset_start:data_offset_end]
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import unittest
|
||||
|
||||
import numpy
|
||||
|
||||
from sf_daq_broker.detector.buffer_reader import FrameMetadata, META_FRAME_BYTES
|
||||
from sf_daq_broker.detector.image_assembler import JF_N_PACKETS_PER_FRAME
|
||||
from sf_daq_broker.detector.ram_buffer import RamBuffer
|
||||
@@ -29,9 +31,14 @@ class TestRamBuffer(unittest.TestCase):
|
||||
metadata.daq_rec = pulse_id + 10000
|
||||
metadata.n_recv_packets = JF_N_PACKETS_PER_FRAME
|
||||
|
||||
data = numpy.frombuffer(image_buffer, dtype="uint16")
|
||||
data += module_id
|
||||
|
||||
for pulse_id in pulse_ids:
|
||||
image_meta, image_buffer = ram_buffer.get_image_buffers(pulse_id)
|
||||
|
||||
image = numpy.frombuffer(image_buffer, dtype="uint16").reshape(1024 * n_modules, 512)
|
||||
|
||||
for module_id in range(n_modules):
|
||||
metadata = FrameMetadata.from_buffer(image_meta, module_id * META_FRAME_BYTES)
|
||||
self.assertEqual(pulse_id, metadata.pulse_id)
|
||||
@@ -40,3 +47,13 @@ class TestRamBuffer(unittest.TestCase):
|
||||
self.assertEqual(pulse_id+10000, metadata.daq_rec)
|
||||
self.assertEqual(JF_N_PACKETS_PER_FRAME, metadata.n_recv_packets)
|
||||
|
||||
start_offset = module_id * 1024
|
||||
end_offset = start_offset + 1024
|
||||
|
||||
frame_data = image[start_offset:end_offset, :]
|
||||
# We test only first and last line. Improves speed and we can still test modules boundary.
|
||||
first_line = frame_data[0, :]
|
||||
last_line = frame_data[-1, :]
|
||||
|
||||
self.assertTrue(all((x == module_id for x in first_line)))
|
||||
self.assertTrue(all((x == module_id for x in last_line)))
|
||||
|
||||
Reference in New Issue
Block a user