diff --git a/src/openflexure_microscope_server/things/scan_workflows.py b/src/openflexure_microscope_server/things/scan_workflows.py index 9bc61846..6c35a189 100644 --- a/src/openflexure_microscope_server/things/scan_workflows.py +++ b/src/openflexure_microscope_server/things/scan_workflows.py @@ -350,7 +350,9 @@ class HistoScanWorkflow(RectGridWorkflow[HistoScanSettingsModel]): Defaults to 1 unless you need to see either side of focus """ - stack_min_images_to_test: int = lt.setting(default=9, ge=5, le=13) + stack_min_images_to_test: int = lt.setting( + default=9, ge=MIN_TEST_IMAGE_COUNT, le=MAX_TEST_IMAGE_COUNT + ) """The minimum number of images to capture in a stack. This many images are captures and tested for focus, if the focus is not central @@ -425,21 +427,7 @@ class HistoScanWorkflow(RectGridWorkflow[HistoScanSettingsModel]): """ # Coerce min_images_to_test parameter min_images_to_test = self.stack_min_images_to_test - if min_images_to_test < MIN_TEST_IMAGE_COUNT: - self.logger.warning( - f"Cannot test only {min_images_to_test} image(s) as this will fail. " - "Setting min images to test to lowest possible value of" - f"{MIN_TEST_IMAGE_COUNT}." - ) - min_images_to_test = MIN_TEST_IMAGE_COUNT - elif min_images_to_test > MAX_TEST_IMAGE_COUNT: - self.logger.warning( - f"Testing {min_images_to_test} images will cause defocus. " - "Setting min images to test to highest possible value of " - f"{MAX_TEST_IMAGE_COUNT}." - ) - min_images_to_test = MAX_TEST_IMAGE_COUNT - elif min_images_to_test % 2 == 0: + if min_images_to_test % 2 == 0: min_images_to_test += 1 self.logger.warning( "Minimum number of images to test should be odd, setting to " @@ -448,15 +436,10 @@ class HistoScanWorkflow(RectGridWorkflow[HistoScanSettingsModel]): # Set the Thing property to the coerced value self.stack_min_images_to_test = min_images_to_test - # Coerce the images to save parameter to be positive, odd, and less than + # Coerce the images to save parameter to be odd, and less than # min_images_to_save images_to_save = self.stack_images_to_save - if images_to_save <= 0: - self.logger.warning( - "At least 1 images must be saved. Setting images to save to 1." - ) - images_to_save = 1 - elif images_to_save > min_images_to_test: + if images_to_save > min_images_to_test: self.logger.warning( f"Cannot save {images_to_save} images as this above the minimum " f"number to test. Setting images to save to {MAX_TEST_IMAGE_COUNT}." diff --git a/tests/unit_tests/test_stack.py b/tests/unit_tests/test_stack.py index 900e58ab..6adf2df7 100644 --- a/tests/unit_tests/test_stack.py +++ b/tests/unit_tests/test_stack.py @@ -14,8 +14,6 @@ from labthings_fastapi.testing import create_thing_without_server from openflexure_microscope_server.scan_directories import IMAGE_REGEX from openflexure_microscope_server.things.autofocus import ( EXTRA_STACK_CAPTURES, - MAX_TEST_IMAGE_COUNT, - MIN_TEST_IMAGE_COUNT, AutofocusThing, CaptureInfo, NotAPeakError, @@ -286,10 +284,7 @@ def test_create_stack(histo_scan_workflow, caplog): @pytest.mark.parametrize( ("initial_test_ims", "coerced_test_ims", "expected_log_start"), [ - (0, MIN_TEST_IMAGE_COUNT, "Cannot test only 0"), - (-1, MIN_TEST_IMAGE_COUNT, "Cannot test only -1"), - (10, MAX_TEST_IMAGE_COUNT, "Testing 10 images will"), - (4, 5, "Minimum number of images to test should be odd"), + (6, 7, "Minimum number of images to test should be odd"), ], ) def test_coercing_stack_test_ims( @@ -314,9 +309,7 @@ def test_coercing_stack_test_ims( @pytest.mark.parametrize( ("initial_save_ims", "coerced_save_ims", "expected_log_start"), [ - (0, 1, "At least 1 images must be saved"), - (-1, 1, "At least 1 images must be saved"), - (10, 9, "Cannot save 10 images"), + (9, 7, "Cannot save 9 images"), (4, 5, "Images to save should be odd, setting to 5"), ], ) @@ -324,6 +317,8 @@ def test_coercing_stack_save_ims( initial_save_ims, coerced_save_ims, expected_log_start, histo_scan_workflow, caplog ): """Run create stack with images to save set to values requiring coercion, and check result.""" + # First set the min images to test to 7 + histo_scan_workflow.stack_min_images_to_test = 7 histo_scan_workflow.stack_images_to_save = initial_save_ims with caplog.at_level(logging.WARNING):