Skip to content

Commit 25c9013

Browse files
committed
DaskImageDataStackTest created
1 parent 051c804 commit 25c9013

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

mantidimaging/gui/windows/live_viewer/model.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class DaskImageDataStack:
3030

3131
def __init__(self, image_list: list[Image_Data], create_delayed_array: bool = True):
3232
self.image_list = image_list
33+
self.create_delayed_array = create_delayed_array
3334

3435
if image_list and create_delayed_array:
3536
arrays = self.get_delayed_arrays()
@@ -47,9 +48,9 @@ def shape(self):
4748
return self.delayed_stack.shape
4849

4950
def get_delayed_arrays(self) -> list[dask.array.Array] | None:
50-
if self.image_list[0].image_path.suffix.lower() in [".tif", ".tiff"]:
51+
if self.image_list[0].image_path.suffix.lower() in [".tif", ".tiff"] and self.create_delayed_array:
5152
return [dask_image.imread.imread(image_data.image_path)[0] for image_data in self.image_list]
52-
elif self.image_list[0].image_path.suffix.lower() == ".fits":
53+
elif self.image_list[0].image_path.suffix.lower() == ".fits" and self.create_delayed_array:
5354
return [dask.delayed(fits.open)(image_data.image_path)[0].data for image_data in self.image_list]
5455
else:
5556
return None

mantidimaging/gui/windows/live_viewer/test/model_test.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from PyQt5.QtCore import QFileSystemWatcher, pyqtSignal
1111

12-
from mantidimaging.gui.windows.live_viewer.model import ImageWatcher
12+
from mantidimaging.gui.windows.live_viewer.model import ImageWatcher, DaskImageDataStack, Image_Data
1313
from mantidimaging.test_helpers.unit_test_helper import FakeFSTestCase
1414

1515

@@ -29,7 +29,6 @@ def setUp(self) -> None:
2929
self.watcher.create_delayed_array = False
3030
self.mock_signal_image = mock.create_autospec(pyqtSignal, emit=mock.Mock())
3131
self.watcher.image_changed = self.mock_signal_image
32-
self.watcher.create_delayed_array = False
3332

3433
def _make_simple_dir(self, directory: Path, t0: float = 1000):
3534
file_list = [directory / f"abc_{i:06d}.tif" for i in range(5)]
@@ -161,3 +160,30 @@ def test_WHEN_sub_directory_change_THEN_images_emitted(self, _mock_time):
161160

162161
emitted_images = self._get_recent_emitted_files()
163162
self._file_list_count_equal(emitted_images, file_list2)
163+
164+
165+
class DaskImageDataStackTest(FakeFSTestCase):
166+
167+
def setUp(self):
168+
super().setUp()
169+
self.top_path = Path("/live")
170+
file_list = self._make_simple_dir(self.top_path)
171+
self.image_data_list = [Image_Data(path) for path in file_list]
172+
173+
def _make_simple_dir(self, directory: Path, t0: float = 1000):
174+
file_list = [directory / f"abc_{i:06d}.tif" for i in range(5)]
175+
if not directory.exists():
176+
self.fs.create_dir(directory)
177+
os.utime(directory, (10, t0))
178+
n = 1
179+
for file in file_list:
180+
self.fs.create_file(file)
181+
os.utime(file, (10, t0 + n))
182+
n += 1
183+
184+
return file_list
185+
186+
def test_WHEN_not_create_delayed_array_THEN_no_delayed_array_created(self):
187+
self.delayed_image_stack = DaskImageDataStack(self.image_data_list, create_delayed_array=False)
188+
delayed_array = self.delayed_image_stack.get_delayed_arrays()
189+
self.assertIsNone(delayed_array)

0 commit comments

Comments
 (0)