From c0259c8dc807dc935c9544f5f0dd6f6683fcbbf0 Mon Sep 17 00:00:00 2001 From: Dieter Weber Date: Thu, 9 Feb 2023 15:47:46 +0100 Subject: [PATCH] Avoid reshaping The reshape was just used to determine the image count. Replaced with size calculation. --- src/libertem/io/dataset/memory.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libertem/io/dataset/memory.py b/src/libertem/io/dataset/memory.py index f0805f510b..9ef79bb3ee 100644 --- a/src/libertem/io/dataset/memory.py +++ b/src/libertem/io/dataset/memory.py @@ -255,7 +255,9 @@ def __init__(self, tileshape=None, num_partitions=None, data=None, sig_dims=None sig_shape = data.shape[-sig_dims:] else: sig_shape = tuple(sig_shape) - reshaped_data = self.data.reshape((-1, *sig_shape)) + if self.data.size % prod(sig_shape) != 0: + raise ValueError("Data size is not a multiple of sig shape") + self._image_count = self.data.size // prod(sig_shape) self._nav_shape = nav_shape self._sig_shape = sig_shape self._sync_offset = sync_offset @@ -264,7 +266,6 @@ def __init__(self, tileshape=None, num_partitions=None, data=None, sig_dims=None self._tiledelay = tiledelay self._force_need_decode = force_need_decode self._nav_shape_product = int(prod(nav_shape)) - self._image_count = int(prod(reshaped_data.shape[:-sig_dims])) self._shape = Shape( nav_shape + sig_shape, sig_dims=self.sig_dims )