From 01a6048ce31d8adbe91a907b921150ee3f5967d5 Mon Sep 17 00:00:00 2001 From: sronilsson Date: Wed, 12 Feb 2025 19:58:35 -0500 Subject: [PATCH] roi interactive 3.10 --- App.py | 1 - setup.py | 2 +- simba/data_processors/agg_clf_calculator.py | 5 +++-- simba/roi_tools/roi_ui_mixin.py | 3 --- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/App.py b/App.py index a62499042..f08845374 100644 --- a/App.py +++ b/App.py @@ -1,4 +1,3 @@ -import simba from simba.SimBA import main as App if __name__ == '__main__': diff --git a/setup.py b/setup.py index c9595b97f..91c85fd52 100644 --- a/setup.py +++ b/setup.py @@ -29,7 +29,7 @@ # Setup configuration setuptools.setup( name="simba_uw_tf_dev", - version="2.6.8", + version="2.7.1", author="Simon Nilsson, Jia Jie Choong, Sophia Hwang", author_email="sronilsson@gmail.com", description="Toolkit for computer classification and analysis of behaviors in experimental animals", diff --git a/simba/data_processors/agg_clf_calculator.py b/simba/data_processors/agg_clf_calculator.py index ca3214a59..dee3f4278 100644 --- a/simba/data_processors/agg_clf_calculator.py +++ b/simba/data_processors/agg_clf_calculator.py @@ -65,8 +65,9 @@ def __init__(self, else: data_measures = DATA_OPTIONS check_valid_lst(data=classifiers, source=f'{self.__class__.__name__} classifiers', min_len=1, valid_dtypes=(str,), valid_values=self.clf_names) - if video_meta_data is not None: - check_valid_lst(data=video_meta_data, source=f'{self.__class__.__name__} data_measures', min_len=1, valid_dtypes=(str,), valid_values=["Frame count", "Video length (s)"]) + if (video_meta_data is not None): + if isinstance(video_meta_data, list) and len(video_meta_data) > 0: + check_valid_lst(data=video_meta_data, source=f'{self.__class__.__name__} data_measures', min_len=0, valid_dtypes=(str,), valid_values=["Frame count", "Video length (s)"]) else: video_meta_data = [] check_valid_boolean(value=[transpose, detailed_bout_data], source=self.__class__.__name__) diff --git a/simba/roi_tools/roi_ui_mixin.py b/simba/roi_tools/roi_ui_mixin.py index f133c5d48..fc76ccdec 100644 --- a/simba/roi_tools/roi_ui_mixin.py +++ b/simba/roi_tools/roi_ui_mixin.py @@ -270,7 +270,6 @@ def on_click(event): self.shape_info_btn.configure(text="SHOW SHAPE INFO") shape_name = self.shape_name_eb.entry_get.strip() self.click_event, self.got_attributes = BooleanVar(value=False), False - self.win_x, self.win_y, _, _ = cv2.getWindowImageRect(DRAW_FRAME_NAME) self.root = parent_frame if not check_str(name=f'shape name', value=shape_name, allow_blank=False, raise_error=False)[0]: @@ -435,7 +434,6 @@ def delete_named_shape(self, name: str): msg = 'No ROI selected. First select an ROI in drop-down to delete it' self.set_status_bar_panel(text=msg, fg='red') raise NoROIDataError(msg=msg, source=self.__class__.__name__) - self.win_x, self.win_y, _, _ = cv2.getWindowImageRect(DRAW_FRAME_NAME) self.rectangles_df = self.rectangles_df[self.rectangles_df['Name'] != name].reset_index(drop=True) self.polygon_df = self.polygon_df[self.polygon_df['Name'] != name].reset_index(drop=True) self.circles_df = self.circles_df[self.circles_df['Name'] != name].reset_index(drop=True) @@ -460,7 +458,6 @@ def duplicate_selected(self): self.set_status_bar_panel(text=msg, fg='red') raise NoROIDataError(msg=msg, source=self.__class__.__name__) shape_to_duplicate = copy(self.roi_dict[selected_roi_name]) - self.win_x, self.win_y, _, _ = cv2.getWindowImageRect(DRAW_FRAME_NAME) if selected_roi_name in list(self.rectangles_df['Name'].unique()): duplicated_shape_entry = create_duplicated_rectangle_entry(shape_entry=shape_to_duplicate, jump_size=self.settings['DUPLICATION_JUMP_SIZE']) elif selected_roi_name in list(self.circles_df['Name'].unique()):