diff --git a/src/openflexure_microscope_server/things/autofocus.py b/src/openflexure_microscope_server/things/autofocus.py index bd2d807f..ddfb76bb 100644 --- a/src/openflexure_microscope_server/things/autofocus.py +++ b/src/openflexure_microscope_server/things/autofocus.py @@ -274,7 +274,7 @@ class JPEGSharpnessMonitor: dependency as required by the underlying class. :param method: The sharpness metric used when evaluating autofocus. :param record: Bitmask of sharpness metrics to record while monitoring. - If ``None``, only the metric specified by ``method`` is recorded. + If ``None`` or 0, only the metric specified by ``method`` is recorded. :raises ValueError: If ``method`` is not included in ``record``. :raises ValueError: If ``SharpnessMethod.FOCUS_FOM`` is requested but @@ -283,7 +283,7 @@ class JPEGSharpnessMonitor: self.camera = camera self.stage = stage self.method = method - self.record = method if record is None else record + self.record = method if record is None or record == 0 else record if not self.method & self.record: raise ValueError( diff --git a/tests/unit_tests/test_autofocus.py b/tests/unit_tests/test_autofocus.py index 3401f2d4..0880712b 100644 --- a/tests/unit_tests/test_autofocus.py +++ b/tests/unit_tests/test_autofocus.py @@ -129,6 +129,17 @@ def test_record_defaults_to_method(mock_stage, mock_camera): assert monitor.record == SharpnessMethod.FOCUS_FOM +def test_zero_record_defaults_to_method(mock_stage, mock_camera): + """If record=0, only the selected method is recorded.""" + monitor = JPEGSharpnessMonitor( + mock_stage, + mock_camera, + method=SharpnessMethod.FOCUS_FOM, + record=0, + ) + + assert monitor.record == SharpnessMethod.FOCUS_FOM + def test_record_must_include_selected_method(mock_stage, mock_camera): """The selected autofocus metric must also be recorded."""