Package: dlc2kinematics
A post-deeplabcut module for kinematic analysisThis 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 withDeepLabCut. Currently, this code requires python 3.8 onwards. We recommend using theDEEPLABCUT conda file, and then simply runpip install dlc2kinematicswithin your environment.Quick startpipinstalldlc2kinematicsUseageimportdlc2kinematicsLoad data:df,bodyparts,scorer=dlc2kinematics.load_data(<pathoftheh5file>)Basic OperationsCompute 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'])Computations in joint coordinatesTo 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 withjoint_angles=dlc2kinematics.compute_joint_angles(df,joints_dict)Compute joint angular velocity withjoint_vel=dlc2kinematics.compute_joint_velocity(joint_angles)Compute joint angular acceleration withjoint_acc=dlc2kinematics.compute_joint_acceleration(joint_angles)Compute correlation of angular velocitycorr=dlc2kinematics.compute_correlation(joint_vel,plot=True)Compute PCA of angular velocity withpca=dlc2kinematics.compute_pca(joint_vel,plot=True)PCA-based reconstruction of posturesCompute 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)UMAP Embeddingsembedding,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))ContributingIf you spot an issue or have a question, please open anissuewith a suitable tag.Forcode contributions:please see thecontributing guide.Please reference all issues this PR addresses in the description text.Before submitting your PR, ensure all code is formatted properly by runningblack.in the root directory.Assign a reviewer, typicallyMMathisLab.sign CLA.AcknowledgementsThis 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}
}