User Tools

Site Tools


sift:tutorials:openbiomechanics_project:sanford_stride_project_using_vector

Sanford Stride Project: Using Vector Coding and Coupling Angle Variability to Compare Lower Limb Joint Kinematics

Abstract

Marathon running biomechanics research often examines how movement patterns influence running efficiency and performance. While lower body running mechanics have been widely studied, there has been limited research on how joint angles relate to trunk angle variability. The Sanford Stride Project is a public markerless motion-capture dataset containing marathon runners alongside survey data including injuries, training history and running experience. This tutorial demonstrates how Visual3D and Sift can be used to conduct vector coding analysis and calculate Coupling Angle Variability(CAV) alongside PCA, SPM, and K-Means clustering techniques to determine relationships between CAV and lower limb joint angles.

Sample visual of one participant running through markerless motion capture with the Torso CAV and Coupling Angle between the pelvis and torso plotted.

Data

The following section will break down how to download the dataset, generate CMZ files using Sift, and process the data using pipelines in Visual3D.

1. Dataset

This tutorial uses a public dataset by Bond, Colin.(2025). Sanford Stride Project. The original dataset can be found on this Github page. It includes motion tracking data captured with Theia along with self-reported survey results such as injuries, training, experience, etc.

Download the ZIP folder by selecting Code on the upper right corner of the page, then select Download Zip, you will need to extract all files.

2. Generate CMZs

Once you have downloaded the project data for this tutorial, extract the data from “\Sanford_Stride_Project_Public-main\Sanford_Stride_Project_Public-main\Sioux_Falls_Marathon_2025\Data\C3D_Files\C3D_Files.zip”.

Launch Sift, select Load Data under the Load page :

  • Click on Browse to select the C3D_Files folder that contains the data
  • Check the check box next to Build CMZs and select Merge Data

  • In the popup window of the Merge File Selections option, follow the configurations below:

Once complete, close the window and select Build CMZs. Click on Load Data to load in the data after finished building and close the window.

Now, execute the pipeline script to add the required information to the data. From the toolbar at the top of the page, click Run V3D Engine . Then click on Add Script, select the V3D_Pipeline script from the HAS_Motion folder, and click Run Scripts.

Once complete, switch to Visual3D for data processing.

3. Processing the Data in Visual3D

There are two methods that can be followed to process the data in Visual3D. You can follow the step by step instruction shown in 3.1, or use the pre-made pipeline by following the steps shown in 3.2. This pipeline can be arranged into 3 sections. First computing all the necesscary segment angles, second computing Vector Coding on those angles, and third using the coupling angle from the vector coding to determine Coupling Angle Variability metrics.

  • Open Visual3D and click on the pipeline icon on the top left.

3.1. Creating pipeline from scratch

  • Create a loop using the 'For_Each' pipeline control command and clicking '»' in the workshop. Set the Iteration_Parameter_Name to 'INDEX' and use index values from 1 to 34 to loop through all the data and create the items.
For_Each
/Iteration_Parameter_Name= INDEX
/Items= 1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34
;
  • Open a file using the 'File_Open' command under File Open/Import. Change the file directory in FILENAME to match your desired location.
  File_Open
/FILE_NAME=C:\Users\22qhsw\Desktop\CAV2\Sanford_Stride_Project_Public-main (5)\Sanford_Stride_Project_Public-main\Sioux_Falls_Marathon_2025\Data\C3D_Files\C3D_Files\&::INDEX&\&::INDEX&.cmz
! /FILE_PATH=
! /SEARCH_SUBFOLDERS=FALSE
! /SUFFIX=
! /SET_PROMPT=File_Open
! /ON_FILE_NOT_FOUND=PROMPT
! /FILE_TYPES_ON_PROMPT=
;
  • Now we are ready to compute the necessary segment angles. This is done by using the Compute_Model_Based_Data command. We will need segment angles for the right and left foot, shank, and thigh, as well as the pelvis and torso. Below I show an example for the RIGHT_FOOT_ANGLE the same structure is used to compute all 8 model based computations. The only changes between segment angles should be the RESULT_NAME and the SEGMENT.
Compute_Model_Based_Data
/RESULT_NAME= RIGHT_FOOT_ANGLE
/FUNCTION=SEG_PROGRESSION_ANGLE
/SEGMENT=Right Foot
! /REFERENCE_SEGMENT=LAB
! /RESOLUTION_COORDINATE_SYSTEM=LAB
! /USE_CARDAN_SEQUENCE=FALSE
! /NORMALIZATION=FALSE
! /NORMALIZATION_METHOD=
! /NORMALIZATION_METRIC=
! /NEGATEX=FALSE
! /NEGATEY=FALSE
! /NEGATEZ=FALSE
! /AXIS1=X
! /AXIS2=Y
! /AXIS3=Z
! /INCLUDE_REMOTE_ANGULAR_MOMENTUM=FALSE
! /TREADMILL_DATA=FALSE
! /TREADMILL_DIRECTION=UNIT_VECTOR(0,1,0)
! /TREADMILL_SPEED=0.0
;
  • With all the segment angles we can now use the Vector_Coding command to compute the coupling angle for the desired joints. This command is based on an article by Robert Needham, with more information available here. We will compute the coupling angle for the right and left ankle, knee and hip as well as the waist. When using the Vector_Coding command you must have the proximal segment as SIGNAL1 and the distal segment as SIGNAL2. Below I show an example calculating the Right_Ankle_Couple.
Vector_Coding
/SIGNAL_OWNER1=*.c3d
/SIGNAL_TYPE1=LINK_MODEL_BASED
/SIGNAL_FOLDER1=ORIGINAL
/SIGNAL_NAME1=RIGHT_SHANK_ANGLE
/SIGNAL_COMPONENT1=X
/SIGNAL_OWNER2=*.c3d
/SIGNAL_TYPE2=LINK_MODEL_BASED
/SIGNAL_FOLDER2=ORIGINAL
/SIGNAL_NAME2=RIGHT_FOOT_ANGLE
/SIGNAL_COMPONENT2=X
/RESULT_OWNER=*.c3d
!/RESULT_FOLDER=PROCESSED
/RESULT_NAME=Right_Ankle_Couple
;
  • With all of the Coupling Angles calculated the CAV metric can now be computed. There is no Visual3D command to compute the CAV as of now so we will do the calculation manually. This calculation follows the equations shown below from Needham 2014 [1]. Note that these equations demonstrate across several trial while this example has only one.

(1) (2) (3)

  • The first step is to use the Evaluate_Expression command to break the Coupling Angles into X and Y components using the cos() and sine() expressions respectively. I will show the CAV calculations for the ankle. Since this must be repeated for all 7 coupling angles which can be quite tedious I recommend following along for the ankle then using the premade pipeline for the rest.
Evaluate_Expression
/EXPRESSION= cos(DERIVED::PROCESSED::Right_Ankle_Couple)
/SIGNAL_TYPES= DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES=Right_Ankle_Couple
!/SIGNAL_COMPONENTS=
/RESULT_TYPES=DERIVED
/RESULT_FOLDERS=PROCESSED
/RESULT_NAME= RACX
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE

;
Evaluate_Expression
/EXPRESSION= sin(DERIVED::PROCESSED::Right_Ankle_Couple)
/SIGNAL_TYPES= DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES=Right_Ankle_Couple
!/SIGNAL_COMPONENTS=
/RESULT_TYPES=DERIVED
/RESULT_FOLDERS=PROCESSED
/RESULT_NAME= RACY
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;
  • Once split into components the length of the coupling angle must be calculated. We will use the Evaluate_Expression command to calculate the sum of the squares of the two components followed by the Square_Root command to compute the square root.
Evaluate_Expression
/EXPRESSION=DERIVED::PROCESSED::RACX^2+DERIVED::PROCESSED::RACX^2
/SIGNAL_TYPES=DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES= RACX+RACY
! /SIGNAL_COMPONENTS=
/RESULT_TYPES=DERIVED
/RESULT_FOLDERS=PROCESSED
/RESULT_NAME= RACL
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;

Square_Root
/SIGNAL_TYPES=DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES=RACL
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=RACR
!/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;
  • With the length value calculated we can now calculate the CAV using this equation: . The pipeline commands used are Evaluate_Expression to calculate under the radical, Square_Root to compute the root, and Evaluate_Expression to convert to degrees.
Evaluate_Expression
/EXPRESSION= 2*(1-DERIVED::PROCESSED::RACR)
/SIGNAL_TYPES=DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES=RACR
! /SIGNAL_COMPONENTS=
/RESULT_TYPES=DERIVED
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME= RACR2
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;

Square_Root
/SIGNAL_TYPES=DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES=RACR2
! /RESULT_FOLDERS=PROCESSED
/RESULT_NAME=RACCAV
!/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;

Evaluate_Expression
/EXPRESSION=DERIVED::PROCESSED::RACCAV*180/PI
/SIGNAL_TYPES=DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES=RACCAV
! /SIGNAL_COMPONENTS=
/RESULT_TYPES=DERIVED
/RESULT_FOLDERS=PROCESSED
/RESULT_NAME=Right_Ankle_Coordination_Variability
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;
  • Once we have calculated the *CAV* at each instance we will compute a mean value to create a metric allowing for sorting into groups. This is an additional step beyond standard *CAV* calculations. Before computing this average we are going to filter the data. This is done using the Lowpass_Filter command seen below as was done as the CAV data was very noisy and difficult to interpret.
Lowpass_Filter
/SIGNAL_TYPES= DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES= Right_Ankle_Coordination_Variability
! /RESULT_FOLDER=PROCESSED
! /RESULT_SUFFIX=
! /FILTER_CLASS=BUTTERWORTH
! /FREQUENCY_CUTOFF=6.0
! /NUM_REFLECTED=6
! /NUM_EXTRAPOLATED=0
! /TOTAL_BUFFER_SIZE=6
! /NUM_BIDIRECTIONAL_PASSES=1
;
Metric_Mean
! /RESULT_METRIC_FOLDER=PROCESSED
/RESULT_METRIC_NAME= Right_Ankle_CAV_MEAN
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
/SIGNAL_TYPES= DERIVED
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES=Right_Ankle_Coordination_Variability
! /COMPONENT_SEQUENCE=
!/EVENT_SEQUENCE=
!/EXCLUDE_EVENTS=
! /GENERATE_MEAN_AND_STDDEV=TRUE
! /GENERATE_MEAN_AND_STDDEV_ACROSS_SUBJECTS=FALSE
! /APPEND_TO_EXISTING_VALUES=FALSE
;
  • There is an effectively infinite number of possible coupling angles and a correspondingly larger number of CAV metrics. The 7 coupling angles calculations shown above were chosen for their relevance to this example but coupling angles can be computed between any two segments in the body. For this example there are 7 total CAV metrics. Of those 7 the Torso CAV and an average of the lower limb CAV shown below give the most insight for this analysis. The command below shows how to compute the average CAV in the right leg.
Evaluate_Expression
/EXPRESSION=(METRIC::PROCESSED::Right_Ankle_CAV_MEAN+METRIC::PROCESSED::Right_Knee_CAV_MEAN+METRIC::PROCESSED::Right_Hip_CAV_MEAN)/3
/SIGNAL_TYPES=METRIC
/SIGNAL_FOLDER=PROCESSED
/SIGNAL_NAMES=Right_Ankle_CAV_MEAN+Right_Knee_CAV_MEAN+Right_Hip_CAV_MEAN
! /SIGNAL_COMPONENTS=
/RESULT_TYPES=Metric
/RESULT_FOLDERS=PROCESSED
/RESULT_NAME= Right_CAV_MEAN
! /APPLY_AS_SUFFIX_TO_SIGNAL_NAME=FALSE
;
  • The files must be saved, closed and loop ended. To save each file use the File_Save command with all parameters being left as default.
File_Save
! /SET_PROMPT=Save CMZ file
;
  • Now clear each workspace by creating a new file using the command 'File_New'.
File_New
;
  • Exit the loop by executing End_for_Each command with the iteration parameter being set to the same parameter as when the loop was started which for this example was 'INDEX'.
End_For_Each
/Iteration_Parameter_Name=INDEX
;
  • Now that the pipeline is complete click execute pipeline to run the commands.

3.2. Using Completed Pipeline

  • Extract process_data.zip and open the pre-made pipeline script in a text editor. Update FILE_NAME in the File_Open command to match your desired file directory. All other parameters can be left as default.
  • Make sure there is nothing in your pipeline, click on Open Pipeline and select process_data.v3s.

  • Click on Execute Pipeline. It may take a couple of minutes to execute this pipeline. You should see a progress pop shown below running through for each of the 34 participants.

Define queries and calculate groups

This section will explain how to build queries and plot groups to show more relationships.

1. Reload Data

After processing data in Visual3D, return to sift to do more analysis. As changes were made in Visual3D you must reload the data in Sift. Go back to the Load Data button on the top left and click on Load Data, you should not have to find the library path again as it should already be correct from earlier.

2. Create Queries

Once the data is loaded into Sift, queries have to be made to select and group our data.

First it can be helpful and insightful to visualize your data. Since we converted our time-series CAV data into a single metric we lose some information about location of peaks and valleys, trends, variability, rates of change and more. Therefore, before sorting the joint angles using the mean_CAV metric, we will plot our time series CAV results. To do this use the steps below for any CAV waveforms you would like to investigate. This tutorial uses the Torso CAV.

Step 1. Click the plus button on the top of the query builder to create a query

Step 2. Set the query name to be 'Torso_CAVSignal', and press save

Step 3. Condition name can remain as condition 1 for this query

Step 4. Under the signals tab of the condition, ensure the type is Derived, folder is PROCESSED, signal name is Torso_Coordination_Variabililty and component is X

Step 5. Under Events change the right sequence to RIGHT_ON to RIGHT_ON by selecting RIGHT_ON and pressing > twice.

Step 6. Press Save Calculate All Queries

Once calculated select that query ensure all workspaces are selected and press refresh plot. This data may look like a bit of a mess which is ok. It is also valuable to do further investigation into individual workspaces which can be done by selecting the desired workspace and refreshing the plot.

As mentioned briefly above there are three CAV metrics that would give the most insight for this analysis. Torso CAV or the Right and Left leg CAV Averages. This tutorial will use the Torso CAV for its analysis, but the same process can be followed for both.

Follow the steps below to build a query using the Torso CAV. You can also download the premade queries attached below.

Torso CAV Queries

Using Torso CAV

Step 1. Click the plus button on the top of the query builder to create a query

Step 2. Set the query name to be 'TorsoCAV', and press save

Step 3. Condition name can remain as condition 1 for this query

Step 4. Under the signals tab of the condition, ensure the type is METRIC, folder is PROCESSED, signal name is Torso_CAV_MEAN and component is X

Step 5. Click Save

In order to categorize the joint angles by higher and lower CAV the standard deviation and the mean of all 34 Torso_CAV_MEAN values will be used. The following steps outline how to determine the mean:

  • Ensure your plot type is Metric
  • Select Plot Group Mean
  • Leave all other boxes unchecked
  • Click Refresh Plot

The following graph should be generated. Click on the bar to see the mean value. This value will be used in the following query's for signal refinement. As seen below, the mean value is 50.01.

To determine the standard deviation select Export Settings File , select Group Std. Dev., select Generate Preview. You should see the dialog shown below pop up and the STD value is shown below TorsoCAV in line 1.

This mean and standard deviation will be used to group the participants in to the higher and lower CAV groups using refinements in the queries. The upper group will be greater than the mean plus the STD (51.295) and the lower group will be the mean minus the STD (48.725).

Now all other queries must be defined. This tutorial will go through a few definitions step by step.

Ankle Angle With Greater CAV

Step 1. Click on plus button on the top of the query builder to create another query

Step 2. Name this query 'Ankle_High_CAV', then press save

Step 3. Name the first condition 'Right_Ankle'

Step 4. Under the signal tab of the condition, ensure the type is LINK_MODEL_BASED, folder is PROCESSED, signal name is RIGHT_ANKLE_ANGLES and component is X

Step 5. Under the Events tab, select 'RIGHT_ON' and press the ‘>’ symbol to move it to the event sequence. Do that again for RIGHT_ON

Step 6. In the Refinement tab, click on Refine using signal, then press the Add button.

  • Name it 'Ankle_High'
  • Make the type 'METRIC'
  • Make the folder 'PROCESSED'
  • Make the name 'Torso_CAV_MEAN' (Second to last of the very long dropdown)
  • Ensure the value must be Greater Than with a value of 51.295 as found above
  • Press save to save to refinement ensuring it looks like the image below

Step 7. Click Save to save the condition

Step 8. Reflect the right side condition to create the left side condition by right clicking on the condition and pressing reflect. Ensure that all of the settings under signals reflected correctly, the Signal Name will need to be corrected.

Ankle Angle With Lower CAV

Step 1. Click on plus button on the top of the query builder to create another query

Step 2. Name this query 'AnkleLowCAV', then press save

Step 3. Name the first condition 'Right_Ankle'

Step 4. Under the Signal tab of the condition, ensure the type is LINK_MODEL_BASED, folder is PROCESSED, signal name is RIGHT_ANKLE_ANGLES and component is X

Step 5. Under the Events tab, select 'RIGHT_ON' and press the ‘>’ symbol to move it to the event sequence. Do that again for 'RIGHT_ON', as shown above

Step 6. In the Refinement tab, click on Refine using signal, then press the Add button.

  • Name it 'Ankle_Low'
  • Make the type 'METRIC'
  • Make the folder 'PROCESSED'
  • Make the name 'Torso_CAV_MEAN'
  • Use component X
  • Ensure the value must be Less Than with a value of 48.725 as found above
  • Press save

Step 7. Click Save

Step 8. Reflect for the left side as shown above.

These steps are repeated for Knee and Hip angles in the X component for high and low CAV. Once all Queries are completed select Calculate all Queries and you should see all the made queries as groups in the explore page.

Before conducting any statistical analysis again it is good to visualize your data and see if you can qualitatively see any differences between the plots. To create six plots first select Show General Options from the top toolbar. At the bottom of the popup window, change the number of Graph Rows to 2 and number of Graph Columns to 3.

You should now see six blank graphs on the right and are ready to plot the waveforms. This tutorial will plot the high and low waveforms for each CAV on the top plot and the group means and deviations on the bottom. First ensure that your plot type is Signal_Time Plot, then select the high and low groups for one of the joints, ensuring you select Plot All Traces and Select All Workspaces click refresh plot. You should see your desired waveform with the title automatically generated. Repeat for all 3 joints. To plot the means and deviation follow the same procedure then select Plot Group Mean and Plot Group Dispersion also ensure Plot All Traces is unselected. Your final result should resemble the image below with the colours slightly different you can change the colours in the Show Data Options menu . As you might notice, there is some abnormal data within each group. To exclude this data, select and highlight it by clicking the traces in the plot. Then right click and select Exclude → Exclude Trace. To highlight all data in all plots, simply press ctrl + H to return to the full plot.

Perform Principal Component Analysis

This section will explain how to perform PCAs on the processed data.

1. Running Principal Component Analysis

Go to the Analyze tab and select the groups to include in the PCA analysis. In this example, AnkleHighCAV and AnkleLowCAV are selected. Make sure Select All Workspaces is checked, then click Run PCA from the toolbar at the top of the page. For this example, use Ankle as the PCA Name and set the Number of PCs to 4.

In this example, the first 4 PCs explain 94.619% of the variation. The selected PCs should account for at least 95% of the variation; as they do not in this example we will rerun increasing the number of PCs until this threshold is met. With 5 PCs 96.9984% of the variation is explained so we will stop there

Now, apply PCA to knee angle and ankle angle similarly.

Further investigation can be conducted on the PCA Analysis by looking at the different tabs at the bottom of the screen such as Workspace Scores, Group Scores, and Extreme Plot. When analyzing the Workspace Scores look for plots where there are clear discrepancies between the PCs. The Group Scores should be used to determine which PCs to compare on the Workspace Score plot by finding the PC furthest apart from the central axis including their error bars. This can be changed under first and second axis dropdown tabs on the top of the Workspace scores page. Below there are the Group Score and Workspace Score plots for the knee.

Ensure that you Display Styles From Group which can be done by selecting the Show Data Options from the toolbar on the top left.

3. Run K-Means

Once PCA has been performed, use K-means testing on the results. This is an unsupervised machine learning algorithm that separates unlabeled data into clusters based on feature similarity. A more detailed K-means tutorial can be found here.

  • Select the Outlier Detection using PCA button on the top toolbar and select K-Means from the dropdown menu

  • Number of Clusters: 2
  • Maximum Iterations: 5
  • Number of PCs: NOTE: Use the number of PCs corresponding to each PCA Result. For ANKLE_ANGLE use 5 as an example.
  • Switch Display Style to by Cluster: Checked
  • Use Custom Seed for First Centroid: Checked
  • Custom Seed: 11
  • Click Run K-Means –> Once K-means clustering is completed, you will be provided with a list of summary information on each cluster like cluster center, cluster radius, and the workspaces that get grouped in each cluster.

Viewing K-Means Results

Click on Data Options and ensure that you Display Styles From Cluster.

Perform Statistical Parametric Mapping (SPM)

This section will explain how to perform SPMs on the processed data.

1. Perform Curve Registration

Before conducting the SPM, curve registration must be done because SPM works better on registered curves. This will align key events on each graph which minimizes time variance and reduces residuals, overall resulting in stronger results.

Step 1: Select both high and low groups for each joint for this example we will use AnkleHighCAV and AnkleLowCAV

Step 2: On the Explore page select Register Curves in the bottom left corner

  • Ensure that all workspaces are selected
  • The name should automatically fill in to be Ankle(HIGH/LOW)CAV_REGISTERED
  • Select a landmark of Maximum or Minimum and fill in the corresponding range based on where the Max/Min is on the waveform plot. In this example we use the Maximum with a Range of 15-35 as shown below.

  • Click Register
  • Select and plot the result of registration. You will notice that the curves align based on the local min/max that you selected.

Step 3: Repeat for all groups ensuring to change the Max/Min range.

2. SPM Analysis

Step 1: Create GLMs

  • Select the two groups you want to compare by holding down CTRL on your keyboard and selecting groups, in this example we will show the comparison between AnkleHighCAV_Registered and AnkleLowCAV_Registered
  • Select SPM from the top toolbar
    • GLM Name: GLM_ANKLE_Registered
    • Statistical Test: Two Sample T-Test
    • Group By: Group –> Ensure the groups selected are the ones selected previously
    • Use Workspace Mean: Unchecked
    • Create GLM

  • You should see two graphs, the mean signals and the corresponding Residuals

  • Repeat for all registered and unregistered curves, noting the reduced residuals from the registered curves

NOTE: You may receive the following message when computing the GLM for the unregistered curves, this is to be expected, select OK.

Step 2: Computing the SPM

  • Select Statistics in the bottom left of the SPM page
  • Select the desired GLM results on the top of the SPM page, we will use GLM_Ankle_Registered as an example
  • Click on Compute SPM

A drop down shoul appear enter the following conditions to match the image below.

  • SPM Name: SPM_Ankle_Registered
  • Group 1: AnkleHighCAV_Registered
  • Group 2: AnkleLowCAV_Registered
  • Threshold: 0.05
  • Two-Tailed: Checked
  • Click on Compute SPM

You should see the following graph showing the SPM values throughout the event cycle.

  • Repeat for all GLM Results

Results for Joint Angle Analysis

After completing the analyses for all three joints, there is minimal evidence that lower-limb joint angles are affected by Coupling Angle Variability. This can clearly be seen in the SPM plots where all the plots have minimal regions of statistical significance. These results are reinforced by the random workspace score plots and almost no group score plots where the error bars don't touch on either side of the zero.

Conclusion

In conclusion, there is minimal evidence of a relationship between coupling angle variability and lower body joint angles in marathon runners. This shows that while runners are taught to try and keep their torso still while running it likely doesn't impact the rest of their lower body running mechanics. Further analysis could be done into determining if there is a relationship between reducing coupling angle variability and performance.

References

The Vector Coding and Coupling Angle Variability process is based on articles by Robert Needham and colleagues:

  • Needham, R., Naemi, R., & Chockalingam, N. (2014). Quantifying lumbar–pelvis coordination during gait using a modified vector coding technique. Journal of Biomechanics, 47(5), 1020–1026. DOI [1]
sift/tutorials/openbiomechanics_project/sanford_stride_project_using_vector.txt · Last modified: by wikisysop