From c3c7b84de0394beeee85dec5185a8fd33ae1762e Mon Sep 17 00:00:00 2001 From: samuelbray32 Date: Fri, 20 Dec 2024 14:53:17 -0800 Subject: [PATCH] Cleanup errors from removal of PoseOutput --- src/spyglass/behavior/core.py | 8 +++++++- src/spyglass/behavior/moseq.py | 8 ++++---- src/spyglass/position/position_merge.py | 7 ++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/spyglass/behavior/core.py b/src/spyglass/behavior/core.py index 658080928..79b804c6c 100644 --- a/src/spyglass/behavior/core.py +++ b/src/spyglass/behavior/core.py @@ -1,3 +1,4 @@ +import warnings from pathlib import Path from typing import List @@ -45,6 +46,11 @@ def create_group( group_key = { "pose_group_name": group_name, } + if self & group_key: + warnings.warn( + f"Pose group {group_name} already exists. Skipping insertion." + ) + return self.insert1( { **group_key, @@ -87,7 +93,7 @@ def fetch_pose_datasets( video_name = Path( (PositionOutput & merge_key).fetch_video_path() ).name - bodyparts_df = (PositionOutput & merge_key).fetch_dataframe() + bodyparts_df = (PositionOutput & merge_key).fetch_pose_dataframe() if bodyparts is None: bodyparts = ( bodyparts_df.keys().get_level_values(0).unique().values diff --git a/src/spyglass/behavior/moseq.py b/src/spyglass/behavior/moseq.py index 324095d69..a20a76dfc 100644 --- a/src/spyglass/behavior/moseq.py +++ b/src/spyglass/behavior/moseq.py @@ -114,10 +114,10 @@ def make(self, key): # set up the project and config project_dir = ( - "/home/sambray/Documents/moseq_test_proj2" # TODO: make this better + "/home/sambray/Documents/moseq_test_proj3" # TODO: make this better ) video_dir = ( - "/home/sambray/Documents/moseq_test_vids2" # TODO: make this better + "/home/sambray/Documents/moseq_test_vids3" # TODO: make this better ) # make symlinks to the videos in a single directory os.makedirs(video_dir, exist_ok=True) @@ -289,12 +289,12 @@ def validate_bodyparts(self, key): return model_bodyparts = (PoseGroup & key).fetch1("bodyparts") merge_key = {"merge_id": key["pose_merge_id"]} - bodyparts_df = (PositionOutput & merge_key).fetch_dataframe() + bodyparts_df = (PositionOutput & merge_key).fetch_pose_dataframe() data_bodyparts = bodyparts_df.keys().get_level_values(0).unique().values for bodypart in model_bodyparts: if bodypart not in data_bodyparts: raise ValueError( - f"Error in row {row}: " + f"Bodypart {bodypart} not in data" + f"Error in row {key}: " + f"Bodypart {bodypart} not in data" ) diff --git a/src/spyglass/position/position_merge.py b/src/spyglass/position/position_merge.py index 7b25172ae..8a9d07a27 100644 --- a/src/spyglass/position/position_merge.py +++ b/src/spyglass/position/position_merge.py @@ -3,10 +3,7 @@ from pandas import DataFrame from spyglass.common.common_position import IntervalPositionInfo as CommonPos -from spyglass.position.v1.position_dlc_pose_estimation import ( - DLCPoseEstimation, - DLCPoseEstimationSelection, -) +from spyglass.position.v1.position_dlc_pose_estimation import DLCPoseEstimation from spyglass.position.v1.position_dlc_selection import DLCPosV1 from spyglass.position.v1.position_trodes_position import TrodesPosV1 from spyglass.utils import SpyglassMixin, _Merge @@ -91,7 +88,7 @@ def fetch_pose_dataframe(self): ) return query.fetch_pose_dataframe() - def fetch_video_parh(self): + def fetch_video_path(self): key = self.merge_restrict(self.proj()).proj() query = ( source_class_dict[