This repo will continue to grow, but here are some helper functions to get you started. Note, the API is subject to change. You can run the functions on data files obtained from running inference with DeepLabCut. Currently, this code requires python 3.8 onwards. We recommend using the DEEPLABCUT conda file, and then simply run pip install dlc2kinematics
within your environment.
pip install dlc2kinematics
import dlc2kinematics
Load data:
df, bodyparts, scorer = dlc2kinematics.load_data(<path of the h5 file>)
Compute velocity:
- For all bodyparts:
df_vel = dlc2kinematics.compute_velocity(df,bodyparts=['all'])
- For only few bodyparts:
df_vel = dlc2kinematics.compute_velocity(df,bodyparts=['nose','joystick'])
Compute acceleration:
- For all bodyparts:
df_acc = dlc2kinematics.compute_acceleration(df,bodyparts=['all'])
- For only few bodyparts:
df_vel = dlc2kinematics.compute_acceleration(df,bodyparts=['nose','joystick'])
Compute speed:
df_speed = dlc2kinematics.compute_speed(df,bodyparts=['nose','joystick'])
To compute joint angles, we first create a dictionary where keys are the joint angles and the corresponding values are the set of bodyparts:
joints_dict= {}
joints_dict['R-Elbow'] = ['R_shoulder', 'Right_elbow', 'Right_wrist']
and compute the joint angles with
joint_angles = dlc2kinematics.compute_joint_angles(df,joints_dict)
Compute joint angular velocity with
joint_vel = dlc2kinematics.compute_joint_velocity(joint_angles)
Compute joint angular acceleration with
joint_acc = dlc2kinematics.compute_joint_acceleration(joint_angles)
Compute correlation of angular velocity
corr = dlc2kinematics.compute_correlation(joint_vel, plot=True)
Compute PCA of angular velocity with
pca = dlc2kinematics.compute_pca(joint_vel, plot=True)
Compute and plot PCA based on posture reconstruction with:
dlc2kinematics.plot_3d_pca_reconstruction(df_vel, n_components=10, framenumber=500,
bodyparts2plot=bodyparts2plot, bp_to_connect=bp_to_connect)
embedding, transformed_data = dlc2kinematics.compute_umap(df, key=['LeftForelimb', 'RightForelimb'], chunk_length=30, fit_transform=True, n_neighbors=30, n_components=3,metric="euclidean")
dlc2kinematics.plot_umap(transformed_data, size=5, alpha=1, color="indigo", figsize=(10, 6))
- If you spot an issue or have a question, please open an issue with a suitable tag.
- For code contributions:
- please see the contributing guide.
- Please reference all issues this PR addresses in the description text.
- Before submitting your PR, ensure all code is formatted properly by running
in the root directory.
black .
- Assign a reviewer, typically MMathisLab.
- sign CLA.
This code is a collect of contributions from members of the Mathis Laboratory over the years. In particular (alphabetical): Michael Beauzile, Sebastien Hausmann, Jessy Lauer, Alexander Mathis, Mackenzie Mathis, Tanmay Nath, Kai Sandbrink, Steffen Schneider.
If you use this code, please cite:
@software{dlc2kinematics,
author = {Mathis, Mackenzie and
Lauer, Jessy and
Nath, Tanmay and
Sandbrink, Kai and
Beauzile, Michael and
Hausmann, Sébastien and
Schneider, Steffen and
Mathis, Alexander},
title = {{DLC2Kinematics: a post-deeplabcut module for
kinematic analysis}},
month = feb,
year = 2020,
publisher = {Zenodo},
version = {v0.0.4},
doi = {10.5281/zenodo.6669074},
url = {https://doi.org/10.5281/zenodo.6669074}
}