From 48269005ae64955b5f1a0e9bde711b4094102cf5 Mon Sep 17 00:00:00 2001 From: Annie Wang Date: Fri, 4 Oct 2024 10:44:50 -0700 Subject: [PATCH 1/7] update camera setting before closing the popup window --- src/navigate/controller/sub_controllers/menus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/navigate/controller/sub_controllers/menus.py b/src/navigate/controller/sub_controllers/menus.py index 854b9a9ff..c389b2918 100644 --- a/src/navigate/controller/sub_controllers/menus.py +++ b/src/navigate/controller/sub_controllers/menus.py @@ -1143,8 +1143,8 @@ def func(*args): popup.popup.protocol( "WM_DELETE_WINDOW", combine_funcs( + camera_setting_controller.update_experiment_values, popup.popup.dismiss, - camera_setting_controller.update_experiment_values(), lambda: delattr(self.parent_controller, controller_name), ), ) From a9f26cd6fc33c18c6c984ee33d426846cf2efc9b Mon Sep 17 00:00:00 2001 From: Annie Wang Date: Fri, 4 Oct 2024 10:59:37 -0700 Subject: [PATCH 2/7] remove empty feature lists --- src/navigate/model/model.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/navigate/model/model.py b/src/navigate/model/model.py index 8b1f47f90..08024387d 100644 --- a/src/navigate/model/model.py +++ b/src/navigate/model/model.py @@ -1485,15 +1485,16 @@ def load_feature_records(self): } ) - i = 0 - while i < len(feature_records): + i = len(feature_records) - 1 + while i >= 0: temp = feature_records[i] if not os.path.exists(f"{feature_lists_path}/{temp['yaml_file_name']}"): del feature_records[i] continue item = load_yaml_file(f"{feature_lists_path}/{temp['yaml_file_name']}") if item is None: - i += 1 + del feature_records[i] + i -= 1 continue if item["module_name"]: @@ -1512,7 +1513,7 @@ def load_feature_records(self): else: del feature_records[i] continue - i += 1 + i -= 1 save_yaml_file(feature_lists_path, feature_records, "__sequence.yml") def get_feature_list(self, idx): From d24df894b3f124d43470c622b4a57db4134e99d5 Mon Sep 17 00:00:00 2001 From: Annie Wang Date: Fri, 4 Oct 2024 11:04:39 -0700 Subject: [PATCH 3/7] fix error: inconsistent feature parameters --- src/navigate/controller/sub_controllers/features_popup.py | 2 ++ src/navigate/model/features/feature_container.py | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/navigate/controller/sub_controllers/features_popup.py b/src/navigate/controller/sub_controllers/features_popup.py index 738f65ef5..40c801021 100644 --- a/src/navigate/controller/sub_controllers/features_popup.py +++ b/src/navigate/controller/sub_controllers/features_popup.py @@ -463,6 +463,8 @@ def func(event): # if there is any parameters if args_value is not None and "args" in feature: for i, a in enumerate(feature["args"]): + if i >= len(args_value): + break args_value[i] = a kwargs = {} if "true" in feature: diff --git a/src/navigate/model/features/feature_container.py b/src/navigate/model/features/feature_container.py index 670b8e527..91122b8bc 100644 --- a/src/navigate/model/features/feature_container.py +++ b/src/navigate/model/features/feature_container.py @@ -33,6 +33,7 @@ # Standard Library Imports import logging import traceback +import inspect # Third Party Imports @@ -827,7 +828,12 @@ def create_node(feature_dict): if variable_name not in shared_variables: shared_variables[variable_name] = list(arg["value"]) args[i] = shared_variables[variable_name] - feature = feature_dict["name"](model, *args) + + parameter_num = len(inspect.signature(feature_dict["name"].__init__).parameters) - 2 + if len(args) > parameter_num: + feature = feature_dict["name"](model, *args[:parameter_num]) + else: + feature = feature_dict["name"](model, *args) node_config = feature.config_table.get("node", {}) # if signal function has a waiting func, From 212c3999d39e58818f712c88f1bf6c7b8b9d7289 Mon Sep 17 00:00:00 2001 From: Annie Wang Date: Fri, 4 Oct 2024 11:24:28 -0700 Subject: [PATCH 4/7] fix index out of bounds error in customized mode --- src/navigate/controller/sub_controllers/camera_view.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/navigate/controller/sub_controllers/camera_view.py b/src/navigate/controller/sub_controllers/camera_view.py index 11f036071..654dc8a2c 100644 --- a/src/navigate/controller/sub_controllers/camera_view.py +++ b/src/navigate/controller/sub_controllers/camera_view.py @@ -501,7 +501,7 @@ def identify_channel_index_and_slice(self): else: channel_idx = 0 - slice_idx = self.image_count + slice_idx = self.image_count % self.number_of_slices self.image_count += 1 return channel_idx, slice_idx From c6b7fc87b5e97dfb3e8dfe76aca3f33d70a0fd76 Mon Sep 17 00:00:00 2001 From: Annie Wang Date: Fri, 4 Oct 2024 11:26:18 -0700 Subject: [PATCH 5/7] fix parameter TypeError of SetCameraParameters --- src/navigate/model/features/common_features.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/navigate/model/features/common_features.py b/src/navigate/model/features/common_features.py index 7282623ef..d8aac6169 100644 --- a/src/navigate/model/features/common_features.py +++ b/src/navigate/model/features/common_features.py @@ -1632,7 +1632,7 @@ def __init__( #: int: The number of pixels for the rolling shutter. try: self.rolling_shutter_width = int(rolling_shutter_width) - except ValueError: + except (ValueError, TypeError): self.rolling_shutter_width = None def signal_func(self): From 2449545f729c48dec4a73bce5c35f3b026f49639 Mon Sep 17 00:00:00 2001 From: Annie Wang Date: Fri, 4 Oct 2024 11:48:02 -0700 Subject: [PATCH 6/7] tweak autofocus --- src/navigate/model/features/autofocus.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/navigate/model/features/autofocus.py b/src/navigate/model/features/autofocus.py index 291c37bb7..e9b6c53c3 100644 --- a/src/navigate/model/features/autofocus.py +++ b/src/navigate/model/features/autofocus.py @@ -372,8 +372,9 @@ def in_func_data(self, frame_ids=[]): frame_ids : list List of frame ids to be processed. """ - - self.get_frames_num += len(frame_ids) + # self.get_frames_num += len(frame_ids) + if self.get_frames_num == self.total_frame_num: + self.get_frames_num += len(frame_ids) while True: try: if self.f_frame_id < 0: @@ -387,6 +388,8 @@ def in_func_data(self, frame_ids=[]): except Exception: break + self.get_frames_num += 1 + entropy = fast_normalized_dct_shannon_entropy( input_array=self.model.data_buffer[self.f_frame_id], psf_support_diameter_xy=3, @@ -409,8 +412,6 @@ def in_func_data(self, frame_ids=[]): self.focus_pos = self.f_pos self.target_frame_id = self.f_frame_id - self.f_frame_id = -1 - if self.frame_num == 1: self.frame_num = 10 # any value but not 1 self.model.logger.info( @@ -420,6 +421,10 @@ def in_func_data(self, frame_ids=[]): # find out the focus self.autofocus_pos_queue.put(self.focus_pos) # return [self.target_frame_id] + if frame_ids.index(self.f_frame_id) < len(frame_ids) - 1: + self.get_frames_num += 1 + + self.f_frame_id = -1 if self.get_frames_num > self.total_frame_num: return frame_ids From e39fb03e271e43ddec8ff50b48d0706e3d102dea Mon Sep 17 00:00:00 2001 From: Annie Wang Date: Fri, 4 Oct 2024 13:25:23 -0700 Subject: [PATCH 7/7] remove empty feature lists --- src/navigate/model/model.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/navigate/model/model.py b/src/navigate/model/model.py index 08024387d..1ef2e257a 100644 --- a/src/navigate/model/model.py +++ b/src/navigate/model/model.py @@ -1485,8 +1485,8 @@ def load_feature_records(self): } ) - i = len(feature_records) - 1 - while i >= 0: + i = 0 + while i < len(feature_records): temp = feature_records[i] if not os.path.exists(f"{feature_lists_path}/{temp['yaml_file_name']}"): del feature_records[i] @@ -1494,7 +1494,6 @@ def load_feature_records(self): item = load_yaml_file(f"{feature_lists_path}/{temp['yaml_file_name']}") if item is None: del feature_records[i] - i -= 1 continue if item["module_name"]: @@ -1513,7 +1512,7 @@ def load_feature_records(self): else: del feature_records[i] continue - i -= 1 + i += 1 save_yaml_file(feature_lists_path, feature_records, "__sequence.yml") def get_feature_list(self, idx):