======Analysis of Shoulder Angular Velocity between Elite Level and Average Collegiate Pitchers====== ====Abstract==== Shoulder angular velocity is a key metric in evaluating the effectiveness of a baseball pitch. While pitch performance is often linked to shoulder angular velocity, the complex nature of shoulder biomechanics presents challenges in standard analysis. In this study, we focus on the Z-axis (internal-external rotation) of shoulder angular velocity using a Y-X-Z Cardan sequence, particularly analyzing elite-level college pitchers and average collegiate pitchers. We compare the top 10 pitchers, defined by their pitch speed, to the general college pitcher population. Contrary to our initial expectations, the findings reveal that there are no significant differences between the Elite Level Pitchers and the average collegiate pitching population in terms of shoulder angular velocity as found through an SPM analysis. This study provides insights into the complexity of shoulder motion in elite pitchers, highlighting that factors beyond shoulder angular velocity may contribute to superior pitch performance. This investigation shows the utilization of Sift as a powerful tool that allows for efficient data processing and comparison to analyze motion capture data while evaluating the following research question: **How does the shoulder angular velocity, measured at the maximum height of the arm prior to ball release, differ between elite-level college pitchers (top 10 based on pitch speed) and average collegiate pitchers?** ====Data + Downloads and Relevant Links==== This tutorial will be utilizing the public dataset available in **Driveline Baseball’s R&D OpenBiomechanics Project** which provides marker-based motion capture data of baseball players at varying levels of completion including independent, high school, college and the minor leagues. This dataset is available here: [[https://github.com/drivelineresearch/openbiomechanics|OpenBiomechanics Project: Driveline Baseball Data]] {{:sift:tutorials:openbiomechanics_project:drivelinebaseball_dataset.png?400|}} This dataset was made available because of an initiative started by Driveline Baseball to “provide raw (in the form of cleaned C3D files) and processed (full signal + point of interest) sports biomechanics data to the general public.” The aim is to accelerate progress in sports biomechanics by allowing researchers to study motion capture data and contribute to the understanding of athletic performance. It also provides a platform to foster collaboration between academic, industry and independent researchers. Prior to beginning the process, you will need to process this large dataset, which can take a long time. Sift is designed to streamline the process by creating CMZ files which make it easier to inspect and group the data in the application. A detailed process of building CMZ files specified to this dataset is available on the wiki page at the tutorial for [[https://wiki.has-motion.com/doku.php?id=sift:tutorials:openbiomechanics_project:build_cmz_files| Build CMZ Files.]] In order to complete this process, you will need to download [[https://www.has-motion.com/download/Katie/Driveline_CMotionFiles.zip|HAS-Motion Specific Files]] which has relevant files such as scripts for the command pipeline, workspace and query files relevant to the dataset, and some of which need to be applied in order to make sense of the data. Alternatively, you may opt to download a [[https://has-motion.com/download/baseball pitching tutorial.zip|Pre-Built ZIP File]] to streamline the process, containing the following: * Pre-built CMZ Files * Query Definitions (Shoulder Angular Velocity (Z), Pitch Speed, Elite SAV (Z)) * Normal Database containing summary averages of the general pitching population * Build Model MDH (File that defines the structure of the model and relationships between body segments) * Command Scripts in order to adjust coordinate system and define events (end_event, updated_shoulderangle) * Elite Pitchers folder (tag applied) The focus of this investigation will be the **baseball_pitching** file which contains a data, code and imgs folder. A **README** fule is also present which provides some explanation on how the data was collected, which is strongly recommended to be read to boost your understanding of the concept being analyzed. The data which is being used for analysis is contained within the c3d folder, with the motion capture parameters of 100 pitchers from different playing levels. However, to cut down the size of the dataset and explore the differences within the same level of competition, we decided to focus on only the majority group - **college baseball pitchers**. To remain uniform with directionality, only right handed players were used. A **metadata** file is also available in the **baseball_pitching** folder which provides information on the dataset. The metric parameter of **highest_playing_level** is used to be able to specify college players. The static model of a participant is shown below from both front and back, also showing the setup of the trial environment. This contains 3 force plates, one for the player's back foot and two for the landing foot depending on the pitcher's handedness. {{:sift:tutorials:openbiomechanics_project:screenshot_2024-09-12_141350.png?400|}} {{:sift:tutorials:openbiomechanics_project:screenshot_2024-09-12_141618.png?400|}} The pitching data was gathered through the use of 39 markers dispersed around the participant’s body. Specifically to this investigation, it is important to understand the coordinate system of the shoulder, as this is the area focused on for the tutorial. {{:sift:tutorials:openbiomechanics_project:screenshot_2024-09-12_141911.png?600|}} As can be seen from the image, each joint has a specific coordinate system to understand the movement. Generally, for each coordinate system the following rules apply: * X = Red, Y = Green, Z = Blue * Use the right-hand rule for each direction of the coordinate system to find the rotation. The shoulder overall is complex to analyze in biomechanics due to its complex range of motion and multiaxial movement. The __Y-X-Z Cardan Sequence coordinate system__ is used because it captures this complexity by describing the shoulder's rotation in three planes, making it suitable [[visual3d:documentation:pipeline:model_based_data_commands:joint_angle|[1]]]. In pitching, the X and Y aces have less direct meaning towards the pitch because the dominant motion occurs around the longitudinal axis (Z), where rotation is more critical for understanding the shoulder's contribution to pitch speed and mechanics. The tag, signal and refinement options used during the analysis are shown in the table below: __Table 1: Relevant Definitions__ |Type|Specification|Definition| |TAG|R|Specifying RHP| |TAG|Elite|Top 10 Pitcher by Pitch Speed| |SIGNALS|Right_ShoulderAngularVelocity|Rate of change of angular position of the shoulder over time (deg/s)| |REFINEMENT|College|Filters c3d file, and retains data entries where "highest_playing_level" value equals "college" to receive only COLLEGE players.| ====Building Normal Database==== In order to make the comparisons between the top-level collegiate pitchers and the average college baseball pitcher population, we must make a normal database. This is used as a reference or baseline for comparing a group’s biomechanical data to a broader population. If you are interested, there is a Sift tutorial for building NDs found here: [[sift:build_nds:building_normal_databases| Normal Databases in Sift]] __**Loading Data into Sift**__ \\ Select {{:sift_library_load.png}} **Load Library** on the left sidebar of the main load page in Sift \\ In the load library dialog, select {{:sift_browser.png}}**Browse** and navigate to the **openbiomechanics-main** folder, then to **baseball_pitching**, and finally to the c3d folder where the participant data is placed. \\ Then we can click **Select Folder** and **Load** to load in the dataset to the project. Once loaded, we are able to see the participant files in the main widget of the load page. \\ The **+** button can be selected beside each CMZ file in order to expand and reveal the contents. Here we can check the subject tags present, in this case the handedness of the pitcher. __**Build Necessary Queries for Normal Database**__ If you are interested in going through the process of building your own queries, follow steps **A-E**. If you have downloaded the pre-built ZIP file, the required queries should already be available, simply selecting the Load Query Definitions button, and selecting the appropriate file should display the queries. **A**. Navigate to the Explore Page and select the {{:sift_query_builder.png}}**Query Builder** button. **B**. Click {{:sift_action_add.png}} in the queries list to add a query. Give it the name **R_ShoulderAngularVelocity_Z**, click save. The condition name can also be the same. **C**. The **Signals Tab** (allows the user to select specific signals according to their names in the Data tree): \\ Type: LINK_MODEL_BASED \\ Folder: ORIGINAL \\ Signal Name: Right_ShoulderAngularVelocity \\ Component: Z **D**. The **Events Tab** (allows the user to specify the desired event sequence to extract data from): \\ Event Sequence: R_MAXShoulderAngle, END **E**. The **Refinement Tab** (allows the user to refine their selected signal using two separate and distinct methods. The first being according to tags and the other being according to the signals contained within the workspace files.): \\ Select: Refine using Tag \\ Select: Refine using Signal \\ Select: 'R' Tag \\ Click **Add Refinement**, when the dialog box appears enter the following: Name: College \\ Select: 'Global Value' \\ Type: TEXT_DATA \\ Value: college \\ After completing this process, select __Calculate All Queries__. Selecting the group and then checking the **Select All Workspaces** box will allow the plot to appear. {{:sift:tutorials:openbiomechanics_project:original_sav_plot.jpg?600|}} __**Clean Data**__ \\ Looking at the plot created, you will be able to notice certain signals that may look like a faulty force assignment. For example, a marker may have fallen off the subject resulting in a large spike in an area where this behaviour is uncharacteristic. You may right-click on the signal and click on “Show Animation” to possibly find out what is causing the anomaly. __If you wish for the signal to be excluded:__\\ Make sure to **left-click** on the specific signal to be excluded to focus on it \\ **Right-click** on the focused signal, select **Exclude data, Exclude Trace (raw data)** Going through each of the workspaces and excluding certain trials can be helpful in improving the accuracy, consistency and overall model performance. __**Build 'Elite' Group based on Top 10 Pitchers determined by Pitch Speed**__ For this comparison, we need to find the top 10 pitchers based on the metric of pitch speed, this will need to be found using another query. This query will represent the metric data and plot the pitch speed. \\ Query Name: PitchSpeed \\ Condition Name: PitchSpeed \\ **Signals Tab**: \\ Type: METRIC \\ Folder: meta \\ Signal Name: pitch_speed_mph \\ Component: X **Events Tab**: No need to input the event sequence here as the metric data is unaffected. \\ **Refinement Tab**: \\ Select: Refine using Tag \\ Select: 'Elite' Tag Select __Calculate All Queries__, the plot should show a bar graph of pitching speeds of each subject. In the **Plot Editor Box**: \\ Select: Plot Workspace Mean \\ Unselect: Plot All Traces {{:sift:tutorials:openbiomechanics_project:pitchspeed_plot.jpg?600|}} This way it is easy to analyze the bar graph to select the top 10 pitchers. By left clicking to select the subject, and then right clicking to open the file it will open the Visual3D file of this individual. __**Adding 'Elite' Tag**__ Each of the top 10 pitchers will need to have an 'Elite' tag, which can be done in the Visual3D workspace by: 1. Clicking on the {{:sift:tutorials:openbiomechanics_project:add_new_file_tag.png?200|}} button \\ 2. Naming it 'Elite' \\ 3. Selecting each trial for the Pitcher \\ 4. Saving the workspace This will allow us to refine the dataset to make a group of just the elite level pitchers to compare to the average college population of players not having an 'Elite' tag. In our investigation, it was determined that the following subjects were 'Elite': __Table 2: List of Elite Pitchers___ |Subject (File #)|Pitch Speed (mph)| |001596|93.8| |001621|92.53| |001667|91.1| |001618|91.0| |000874|90.9| |001691|90.6| |000750|90.4| |001592|90.12| |000952|89.3| |000675|89.18| \\ __**Build ND**__ 1. Select the **Build ND** button on the explore page \\ {{:sift:tutorials:openbiomechanics_project:buildnd_dialogbox.png?600|}} 2. On the left box for Query Groups, select R_ShoulderAngularVelocity_Z \\ 3. On the right box for Meta Data and Summary Statistics, select Mean \\ 4. Check: ALL Summary Levels (Library, Workspace and Trial) and Generate \\ 5. Remember to save this normal database by clicking the "Browse" button and selecting a name and location. ====Comparing Elite Players to Normal Database==== With a **new blank workspace** in Sift, we are able to start the process of comparing the shoulder angular velocities of the 'Elite' group versus the average college pitcher population which is saved in the normal database. __**Load 'Elite' Players**__ \\ We want to load in our 'Elite' group in order to build queries for comparison This can be done again use the {{:sift_library_load.png}} **Load Library** button and including "Elite" in the Library Query textbox within the Load Library dialog. This will search through the c3d folder within the baseball_pitching data to load just the players we have tagged. Alternatively, an 'Elite Pitchers' folder is included within the data folder downloaded in the provided ZIP file, in which case you may select {{:sift_browser.png}} **Browse** and navigate to this folder. __**Load Normal Database**__ Next, we can load in the normal database created to begin the process in comparing the “Elite” group to the average pitcher group. We can select **Load ND** from the Load page as well and select {{:sift_browser.png}}**Browse** to navigate to the location the normal database created earlier in this tutorial or sourced from the pre-built ZIP file is saved. Once loaded in, information about the normal database should be shown on the lower half of the Load page. {{:sift:tutorials:openbiomechanics_project:buildnd_dialogbox.png?600|}} __**Build Elite Queries**__ Now we can navigate to the “Explore” page on Sift. We need to construct a query to group the Right shoulder angular velocity signals of the elite pitchers. We can use the same process as before when we were building the average college pitcher shoulder angular velocity query with some minor adjustments. Alternatively, you may load in the pre-built Elite pitcher query definitions by selecting the LOAD QUERY DEFINITIONS button in the query builder and selecting the elite query definitions file. Select the {{:sift_query_builder.png}} **Query Builder** button to open the dialog box and select the {{:sift_action_add.png}}**Add Query** on the queries list and fill out the following information. Query Name: Elite_ShoulderAngularVelocity_Z \\ Condition Name: Elite_ShoulderAngularVelocity_Z **Signals and Events tab remain uniform with the previously built queries.** * In the refinment tab, select **refine using tag** and select 'Elite'. Remember to select __Calculate All Queries__ after completing this step. __**Build Normal Database Queries**__ Next, we can begin to construct our normal database queries to retrieve the queries for both the library and workspace summaries for the Z-direction. These are useful when creating the plots and deeper into the analysis when performing SPM. When you query the **library summary**, you’re retrieving aggregate data which represents what the “average” college pitcher looks like in terms of shoulder angular velocity in the Z-direction. This data is used to compare the elite pitchers’ SAV to the baseline averages, giving insight into how the elite athletes differ from the norm. Workspace summary queries allow you to make more granular comparisons. Instead of looking at overall population means, you can compare individual trials for average collegiate pitchers to those of elite pitchers. This can help in assessing consistency in performance and how much variation exists between trials for elite pitchers versus the average college pitcher population. Select the **ND Query Builder** button in the explore page to open the dialog box. {{:sift:tutorials:openbiomechanics_project:nd_query_dialogbox.png?600|}} __Query #1: Library Summary__ Query Name: R_SAV_Z_Lib \\ ND Signal: R_ShoulderAngularVelocity_Z \\ Summary Level: LIBRARY_SUMMARY \\ Summary Statistic: Mean __Query #2: Workspace Summary__ Query Name: R_SAV_Z_Workspace \\ ND Signal: R_ShoulderAngularVelocity_Z \\ Summary Level: WORKSPACE_SUMMARY \\ Summary Statistic: Mean These ND Query Definitions are also available on the pre-built ZIP file. Which can be loaded in by selecting the **Load ND Query Definitions** button in the dialog box. After creating these queries, we can select the **Query ND Signals** button. {{:sift:tutorials:openbiomechanics_project:comp_query_groups.png?400|}} All queries should show on the ‘group’ tab, you can see that for a regular query the type is stated as ‘Q’ and for a normal database query it is ‘N’. We are now able to compare the Elite Pitchers against the normal database of the average college pitchers. ====Analysis and Results==== __**Library Summary Comparisons**__ The library summary represents a mean signal derived from a large number of individuals, providing a baseline of what is considered a typical movement for the general college pitcher population. By using this as a reference, you can see how the elite pitchers deviate from or align with the general college pitcher population. On the explore page, **Hold Down CTRL** and **Left-Click** both the **Elite_ShoulderAngularVelocity_Z** query as well as the **R_SAV_Z_Lib**. Make sure __Select All Workspaces__ is checked off. In the plot editor box, select __Plot Group Mean__ and __Plot Group Dispersion__. Unselect __Plot All Traces__. This will provide the first plot of comparison between the Elite and average population groups, which can be used for analysis. Make sure that the colour palette and thickness of the data allows for easy viewing of the differentiation between the two groups. If you need to edit this, navigate to the **Data Styles** dialog box and edit any required settings. {{:sift:tutorials:openbiomechanics_project:data_styles_box.png?600|}} In order to present the plot formally, you will need to add axes titles, a plot title and a legend in order to provide a reader with context of the plot. This can be done with the settings within the **Plot Styles** dialog box. __**Comparison of Elite Pitcher SAV Internal-External Rotation Signal vs. Normal Database Mean (Z-Direction)**__ {{:sift:tutorials:openbiomechanics_project:elite_vs_nd_libgraph.png?600|}} This plot shows the comparison of elite pitcher shoulder angular velocity for the internal-external rotation signal (Z-direction) versus the normal database mean for the same, which represents the general college pitcher population. Typically, the expectation going into this investigation was that elite pitchers tend to have a higher shoulder angular velocity in order to increase pitch speed. However, the data presented in the graph shows an unexpected result: the mean shoulder angular velocity in the Z-direction for elite pitchers (blue line) is lower than that of the normal database mean (red line). To get a better understanding of the differences between the elite level and average collegiate pitcher population, we can move on to performing further statistical analysis such as SPM. ====SPM Analysis==== Statistical Parametric Mapping (SPM) is used in biomechanics to assess whether there are statistically significant differences between time-dependent data series. In this case, the SPM analysis is comparing the internal-external rotation signals of elite pitchers (Group 1) and the normal population workspace summaries (Group 2). First, we can navigate to the “Analyze” page to begin to perform our SPM. Select the **Elite_ShoulderAngular_Z** and **R_SAV_Z_Workspace** by holding down CTRL and selecting all workspaces. Switch to the __SPM Tab__ and create a GLM. The following information can be inputted into the dialog box: GLM Name: GLM_SAVZ \\ Group by: Group Then move to the statistics page, and select Compute SPM, the dialog box should open. {{:sift:tutorials:openbiomechanics_project:spm_dialogbox.png?400|}} The following can be entered: \\ SPM Name: SPM_SAVZ \\ Statistic: t Statistic \\ Group 1: Elite_ShoulderAngularVelocity_Z \\ Group 2: R_SAV_Z_Workspace {{:sift:tutorials:openbiomechanics_project:spm_graph_editedalpha.jpg?800|}} The SPM plot analysis, using an alpha level of 0.05, reveals a critical t-statistic threshold of 2.73, indicated by the dashed red line at the top of the graph. This threshold represents the point beyond which differences in shoulder angular velocity (SAV-Z) between elite pitchers and the general collegiate population would be considered statistically significant. However, throughout the entire range of normalized motion, the observed t-statistic consistently remains below this threshold, suggesting that there are no statistically significant differences in SAV-Z between the two groups. ====Conclusion==== Using Sift, we were able to streamline the analysis of shoulder angular velocity in the Z-direction between elite and average collegiate pitchers. The tool enabled precise comparison through query building and statistical parametric mapping (SPM). Although our results showed that the Elite Pitcher group had a lower mean SAV-Z than the average college population, the SPM showed no significant differences between the two groups. Due to the complexity of elite-level pitching mechanics, factors beyond shoulder angular velocity may be contributing to their superior performance such as lower body kinetics, trunk rotation, core stability and more. ====References==== **Data Set**: OpenBiomechanics Project is an initiative started by Driveline Baseball Research & Development to provide raw (in the form of cleaned C3D files) and processed (full signal + point of interest) sports biomechanics data to the general public [[https://github.com/drivelineresearch/openbiomechanics|[2]]]