From 27bdba282d05e3f35ccf2c32c3777d68d14d86ef Mon Sep 17 00:00:00 2001 From: davidpagnon Date: Fri, 20 Sep 2024 20:32:36 +0200 Subject: [PATCH] updated docstrings --- Content/Capture d’écran 2024-09-20 195347.jpg | Bin 0 -> 92922 bytes Pose2Sim/Pose2Sim.py | 1 - Pose2Sim/kinematics.py | 195 ++++++++++++------ setup.cfg | 2 +- 4 files changed, 129 insertions(+), 69 deletions(-) create mode 100644 Content/Capture d’écran 2024-09-20 195347.jpg diff --git a/Content/Capture d’écran 2024-09-20 195347.jpg b/Content/Capture d’écran 2024-09-20 195347.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4997f232faf38482eb1b81213ceddc2f0497cac5 GIT binary patch literal 92922 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 literal 0 HcmV?d00001 diff --git a/Pose2Sim/Pose2Sim.py b/Pose2Sim/Pose2Sim.py index 9234649..b707db6 100644 --- a/Pose2Sim/Pose2Sim.py +++ b/Pose2Sim/Pose2Sim.py @@ -468,7 +468,6 @@ def markerAugmentation(config=None): def kinematics(config=None): ''' Performing OpenSim scaling and inverse kinematics. - Select the 10% slowest frames from trc for scaling Save scaled model as .osim and output motion as .mot config can be a dictionary, diff --git a/Pose2Sim/kinematics.py b/Pose2Sim/kinematics.py index b5e6aa4..f737d74 100644 --- a/Pose2Sim/kinematics.py +++ b/Pose2Sim/kinematics.py @@ -7,22 +7,28 @@ ## KINEMATICS PROCESSING ## ########################################################################### -Process kinematic data using OpenSim tools. + Runs OpenSim scaling and inverse kinematics + + Scaling: + - No need for a static trial: scaling is done on the triangulated coordinates (trc file) + - Remove 10% fastest frames (potential outliers) + - Remove frames where coordinate speed is null (person probably out of frame) + - Remove 40% most extreme calculated segment values (potential outliers) + - For each segment, scale on the mean of the remaining segment values + + Inverse Kinematics: + - Run on the scaled model with the same trc file + - Model markers follow the triangulated markers while respecting the model kinematic constraints + - Joint angles are computed -This script performs scaling, inverse kinematics, and related processing -on 3D motion capture data (TRC files). The scaling process adjusts the -generic model to match the subject's physical dimensions, while inverse -kinematics computes the joint angles based on the motion data. + INPUTS: + - config_dict (dict): Generated from a .toml calibration file -Set your parameters in Config.toml. - -INPUTS: -- a directory containing TRC files -- kinematic processing parameters in Config.toml - -OUTPUT: -- scaled OpenSim model files (.osim) -- joint angle data files (.mot) + OUTPUTS: + - A scaled .osim model for each person + - Joint angle data files (.mot) for each person + - Optionally, OpenSim scaling and IK setup files saved to the kinematics directory + - Pose2Sim and OpenSim logs saved to files ''' @@ -63,7 +69,7 @@ def read_trc(trc_path): - trc_path (str): The path to the TRC file. OUTPUTS: - - tuple: A tuple containing the Q coordinates, frames column, time column, and header. + - tuple: A tuple containing the Q coordinates, frames column, time column, marker names, and header. ''' try: @@ -85,6 +91,9 @@ def get_opensim_setup_dir(): ''' Locate the OpenSim setup directory within the Pose2Sim package. + INPUTS: + - None + OUTPUTS: - Path: The path to the OpenSim setup directory. ''' @@ -130,12 +139,13 @@ def get_model_path(model_name, osim_setup_dir): raise ValueError(f"Pose model '{model_name}' not found.") unscaled_model_path = osim_setup_dir / pose_model_file + return unscaled_model_path def get_scaling_setup(model_name, osim_setup_dir): ''' - Retrieve the OpenSim scaling setup file path. + Retrieve the path of the OpenSim scaling setup file. INPUTS: - model_name (str): Name of the model @@ -169,12 +179,13 @@ def get_scaling_setup(model_name, osim_setup_dir): raise ValueError(f"Pose model '{model_name}' not found.") scaling_setup_path = osim_setup_dir / scaling_setup_file + return scaling_setup_path def get_IK_Setup(model_name, osim_setup_dir): ''' - Retrieve the OpenSim inverse kinematics setup file path. + Retrieve the path of the OpenSim inverse kinematics setup file. INPUTS: - model_name (str): Name of the model @@ -211,37 +222,11 @@ def get_IK_Setup(model_name, osim_setup_dir): return ik_setup_path -# def get_output_dir(config_dir, person_id): - ''' - Determines the correct output directory based on the configuration and the person identifier. - - INPUTS: - - config_dir (Path): The root directory where the configuration file is located. - - person_id (str): Identifier for the person (e.g., 'SinglePerson', 'P1'). - - OUTPUTS: - - Path: The path where the output files should be stored. - ''' - - output_dir = config_dir / 'kinematics' # Assuming 'opensim' as the default output subdirectory - - # Append the person_id to the output directory if it's a multi-person setup - if person_id != "SinglePerson": - output_dir = output_dir / person_id - - logging.info(f"Output directory determined as: {output_dir}") - - # Create the directory if it does not exist - if not output_dir.exists(): - output_dir.mkdir(parents=True, exist_ok=True) - - return output_dir - - def get_kpt_pairs_from_tree(root_node): ''' - Get name pairs for all parent-child relationships in the tree. + Get marker pairs for all parent-child relationships in the tree. # Excludes the root node. + # Not used in the current version. INPUTS: - root_node (Node): The root node of the tree. @@ -262,17 +247,31 @@ def get_kpt_pairs_from_tree(root_node): def get_kpt_pairs_from_scaling(scaling_root): ''' - Get name pairs for all marker pairs in the scaling setup file. + Get all marker pairs from the scaling setup file. + + INPUTS: + - scaling_root (Element): The root element of the scaling setup file. + + OUTPUTS: + - pairs: A list of marker pairs. ''' - pairs = [pair.find('markers').text.strip().split(' ') for pair in scaling_root[0].findall(".//MarkerPair")] + pairs = [pair.find('markers').text.strip().split(' ') + for pair in scaling_root[0].findall(".//MarkerPair")] return pairs def dict_segment_marker_pairs(scaling_root, right_left_symmetry=True): ''' - + Get a dictionary of segment names and their corresponding marker pairs. + + INPUTS: + - scaling_root (Element): The root element of the scaling setup file. + - right_left_symmetry (bool): Whether to consider right and left side of equal size. + + OUTPUTS: + - segment_markers_dict: A dictionary of segment names and their corresponding marker pairs. ''' segment_markers_dict = {} @@ -301,8 +300,21 @@ def dict_segment_marker_pairs(scaling_root, right_left_symmetry=True): return segment_markers_dict -def dict_segment_ratio(scaling_root, unscaled_model, Q_coords_scaling, markers, right_left_symmetry=True): +def dict_segment_ratio(scaling_root, unscaled_model, Q_coords_scaling, markers, trimmed_extrema_percent=0.5, right_left_symmetry=True): ''' + Calculate the ratios between the size of the actual segment and the size of the model segment. + X, Y, and Z ratios are calculated separately if the original scaling setup file asks for it. + + INPUTS: + - scaling_root (Element): The root element of the scaling setup file. + - unscaled_model (Model): The original OpenSim model before scaling. + - Q_coords_scaling (DataFrame): The triangulated coordinates of the markers. + - markers (list): The list of marker names. + - trimmed_extrema_percent (float): The proportion of the most extreme segment values to remove before calculating their mean. + - right_left_symmetry (bool): Whether to consider right and left side of equal size. + + OUTPUTS: + - segment_ratio_dict: A dictionary of segment names and their corresponding X, Y, and Z ratios. ''' # segment_pairs = get_kpt_pairs_from_tree(eval(model_name)) @@ -314,7 +326,7 @@ def dict_segment_ratio(scaling_root, unscaled_model, Q_coords_scaling, markers, for (pt1,pt2) in segment_pairs]) # trc_segment_lengths = np.median(trc_segment_lengths, axis=1) # trc_segment_lengths = np.mean(trc_segment_lengths, axis=1) - trc_segment_lengths = np.array([trimmed_mean(arr, trimmed_percent=0.5) for arr in trc_segment_lengths]) + trc_segment_lengths = np.array([trimmed_mean(arr, trimmed_extrema_percent=trimmed_extrema_percent) for arr in trc_segment_lengths]) # Get model segment lengths model_markers = [marker for marker in markers if marker in [m.getName() for m in unscaled_model.getMarkerSet()]] @@ -341,6 +353,14 @@ def dict_segment_ratio(scaling_root, unscaled_model, Q_coords_scaling, markers, def deactivate_measurements(scaling_root): ''' + Deactivate all scalings based on marker positions (called 'measurements' in OpenSim) in the scaling setup file. + (will use scaling based on segment sizes instead (called 'manual' in OpenSim)) + + INPUTS: + - scaling_root (Element): The root element of the scaling setup file. + + OUTPUTS: + - scaling_root with deactivated measurements. ''' measurement_set = scaling_root.find(".//MeasurementSet/objects") @@ -351,6 +371,15 @@ def deactivate_measurements(scaling_root): def update_scale_values(scaling_root, segment_ratio_dict): ''' + Remove previous scaling values ('manual') and + add new scaling values based on calculated segment ratios. + + INPUTS: + - scaling_root (Element): The root element of the scaling setup file. + - segment_ratio_dict (dict): A dictionary of segment names and their corresponding X, Y, and Z ratios. + + OUTPUTS: + - scaling_root with updated scaling values. ''' # Get the ScaleSet/objects element @@ -379,17 +408,28 @@ def update_scale_values(scaling_root, segment_ratio_dict): def perform_scaling(trc_file, kinematics_dir, osim_setup_dir, model_name, right_left_symmetry=True, subject_height=1.75, subject_mass=70, remove_scaling_setup=True): ''' Perform model scaling based on the (not necessarily static) TRC file: - - Retrieve the 80% slowest frames, excluding frames where the person is out of frame. - - From these frames, measure median segment lengths. - - Calculate ratio between model and measured segment lengths -> OpenSim manual scaling. + - Remove 10% fastest frames (potential outliers) + - Remove frames where coordinate speed is null (person probably out of frame) + - Remove 40% most extreme calculated segment values (potential outliers) + - For each segment, scale on the mean of the remaining segment values INPUTS: - - config_dict (dict): The configuration dictionary. - - person_id (str): The person identifier (e.g., 'SinglePerson', 'P1'). - - trc_files (list): List of TRC files to be processed. - - output_dir (Path): The directory where the output files should be saved. + - trc_file (Path): The path to the TRC file. + - kinematics_dir (Path): The directory where the kinematics files are saved. + - osim_setup_dir (Path): The directory where the OpenSim setup and model files are stored. + - model_name (str): The name of the model. + - right_left_symmetry (bool): Whether to consider right and left side of equal size. + - subject_height (float): The height of the subject. + - subject_mass (float): The mass of the subject. + - remove_scaling_setup (bool): Whether to remove the scaling setup file after scaling. + + OUTPUTS: + - A scaled OpenSim model file. ''' + fastest_frames_to_remove_percent = 0.1 + trimmed_extrema_percent = 0.4 # proportion of the most extreme segment values to remove before calculating their mean + try: # Load model opensim.ModelVisualizer.addDirToGeometrySearchPaths(str(osim_setup_dir / 'Geometry')) @@ -412,11 +452,12 @@ def perform_scaling(trc_file, kinematics_dir, osim_setup_dir, model_name, right_ # Using 80% slowest frames for scaling, removing frames when person is out of frame Q_diff = Q_coords.diff(axis=0).sum(axis=1) Q_diff = Q_diff[Q_diff != 0] # remove when speed is 0 (person out of frame) - min_speed_indices = Q_diff.abs().nsmallest(int(len(Q_diff) * 0.8)).index + min_speed_indices = Q_diff.abs().nsmallest(int(len(Q_diff) * (1-fastest_frames_to_remove_percent))).index Q_coords_scaling = Q_coords.iloc[min_speed_indices].reset_index(drop=True) # Get manual scale values (scale on trimmed mean of measured segments rather than on raw keypoints) - segment_ratio_dict = dict_segment_ratio(scaling_root, unscaled_model, Q_coords_scaling, markers, right_left_symmetry=right_left_symmetry) + segment_ratio_dict = dict_segment_ratio(scaling_root, unscaled_model, Q_coords_scaling, markers, + trimmed_extrema_percent=trimmed_extrema_percent, right_left_symmetry=right_left_symmetry) # Update scaling setup file scaling_root[0].find('mass').text = str(subject_mass) @@ -445,13 +486,19 @@ def perform_scaling(trc_file, kinematics_dir, osim_setup_dir, model_name, right_ def perform_IK(trc_file, kinematics_dir, osim_setup_dir, model_name, remove_IK_setup=True): ''' - Perform inverse kinematics on the TRC files according to the OpenSim configuration. + Perform inverse kinematics based on a TRC file and a scaled OpenSim model: + - Model markers follow the triangulated markers while respecting the model kinematic constraints + - Joint angles are computed INPUTS: - - config_dict (dict): The configuration dictionary. - - person_id (str): The person identifier (e.g., 'SinglePerson', 'P1'). - - trc_files (list): List of TRC files to be processed. - - output_dir (Path): The directory where the output files should be saved. + - trc_file (Path): The path to the TRC file. + - kinematics_dir (Path): The directory where the kinematics files are saved. + - osim_setup_dir (Path): The directory where the OpenSim setup and model files are stored. + - model_name (str): The name of the model. + - remove_IK_setup (bool): Whether to remove the IK setup file after running IK. + + OUTPUTS: + - A joint angle data file (.mot). ''' try: @@ -488,14 +535,28 @@ def perform_IK(trc_file, kinematics_dir, osim_setup_dir, model_name, remove_IK_s def kinematics(config_dict): ''' - Runs OpenSim scaling and inverse kinematics on the trc files of triangulated coordinates. + Runs OpenSim scaling and inverse kinematics + + Scaling: + - No need for a static trial: scaling is done on the triangulated coordinates (trc file) + - Remove 10% fastest frames (potential outliers) + - Remove frames where coordinate speed is null (person probably out of frame) + - Remove 40% most extreme calculated segment values (potential outliers) + - For each segment, scale on the mean of the remaining segment values + + Inverse Kinematics: + - Run on the scaled model with the same trc file + - Model markers follow the triangulated markers while respecting the model kinematic constraints + - Joint angles are computed INPUTS: - config_dict (dict): Generated from a .toml calibration file OUTPUTS: - - A scaled .osim model for each person. - - Joint angle data files (.mot) for each person. + - A scaled .osim model for each person + - Joint angle data files (.mot) for each person + - Optionally, OpenSim scaling and IK setup files saved to the kinematics directory + - Pose2Sim and OpenSim logs saved to files ''' # Read config_dict diff --git a/setup.cfg b/setup.cfg index 09bc17f..95eb1ca 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = pose2sim -version = 0.9.13 +version = 0.10.0 author = David Pagnon author_email = contact@david-pagnon.com description = Perform a markerless kinematic analysis from multiple calibrated views as a unified workflow from an OpenPose input to an OpenSim result.