Skip to main content
Dryad

Data from: Understanding mechanisms of generalization following locomotor adaptation

Cite this dataset

Rossi, Cristina; Roemmich, Ryan; Bastian, Amy (2024). Data from: Understanding mechanisms of generalization following locomotor adaptation [Dataset]. Dryad. https://doi.org/10.5061/dryad.g4f4qrfwc

Abstract

Our nervous system has the remarkable ability to adapt our gait to accommodate changes in our body or surroundings. However, our adapted walking patterns often generalize only partially (or not at all) between different contexts. Here, we sought to understand how the nervous system generalizes adapted gait patterns from one context to another. Through a series of split-belt treadmill walking experiments, we evaluated different mechanistic hypotheses (i.e., the mechanism specific, credit assignment, and slow switching hypotheses) to explain the partial generalization of adapted gait patterns from split-belt treadmill to overground walking. In support of the credit assignment hypothesis, our experiments revealed the central finding that adaptation involves 1) the recalibration of forward models of our body that generalize to overground walking, and 2) models of the treadmill that do not generalize.

README: Project title: Understanding mechanisms of generalization following locomotor adaptation.

GENERAL INFORMATION

Authors: Cristina Rossi(a,b), Ryan T. Roemmich(b,c), Amy J. Bastian(a,b,)
(a) Department of Neuroscience, The Johns Hopkins University School of Medicine, Baltimore, MD, 21205, USA;
(b) Center for Movement Studies, Kennedy Krieger Institute, Baltimore, MD, 21205, USA;
(c) Department of Physical Medicine and Rehabilitation, The Johns Hopkins University School of Medicine, Baltimore, MD, 21205, USA.
(
) Corresponding author: Amy J. Bastian. Email: bastian@kennedykrieger.org

Please cite this data as follows:
Rossi et al., 2023. Dataset for Understanding mechanisms of generalization following locomotor adaptation.

Paradigm information: kinematic and behavioral test data was collected in a human walking experiment on a split-belt treadmill.
Details are found in the associated manuscript.

Acknowledgments:
Supported by NIH grant 5 R37 NS090610 to AJB,
American Heart Association predoctoral fellowship 20PRE35180131 to CR.

SOURCE DATA

raw task data + standardly processed kinematic measures

Location: 'data' folder

Info: contains .mat data files with 'raw' kinematic measures and behavioral tasks measures for all participants in the study.

Files: one file per experimental group

  • ShortPreferred.mat (group of Experiment 1)
  • LongPreferred.mat (group of Experiment 1)
  • ShortSlow.mat (group of Experiment 1)
  • SwitchSlow.mat (group of Experiment 2)
  • SwitchControl.mat (group of Experiment 2)

Variables: each group file contains a variable with the same name, which is a struct containing the following fields:

├─── Measures recorded once per experiment:
|              ├─── Trials: a table with N rows, N=number of experimental trials for this group. Has 3 columns:
|                   |             ├─── Environment: string with information on whether the trial was overground ('OG') or on the treadmill ('TM')
|                   |                   ├─── Condition: string with corresponding experimental phase ('Baseline', 'Adaptation', 'Catch', 'Post-adaptation')
|                   |                   └─── Task: string with information on whether the trial was followed by a speed match task
|                   |
|              └─── Questionnaire: 1xN Trials cell, the cell corresponding to the post-adapt. OG trial contains:
|                          N Participants X 2 matrix, containing participants response to whether the right leg felt it was moving:
|                         "as expected" (coded as 0), or "not as expected" (coded as 1) (first column: "beginning of this trial", second column: "end of this trial")
\|                                     (Experiment 1 only)
|
├─── Kinematic measures computed by stride:
|               │                                 *  each of the following fields is a (1 x N Trials) cell,
\|                   │                                      with each cell element a (N Participants X N Strides in Trial) matrix,
|               │                                      with each element in the matrix a sample of that measure for the specific trial, participant and stride)
|               │
\|                   │                                 * The following variables/abbreviations are used for kinematic measures:
|               │\
|               │                                         Legs:
|               │                                            f = "fast" leg = leg positioned on the belt that is fast in adaptation
\|                   │                                            s = "slow" leg = leg positioned on the belt that is slow in adaptation
\|                   │
\|                   │                                        Markers:
|               │                                             toe5 = fifth metatarsal head
\|                   │                                             ankle = lateral malleolous
\|                   │                                             knee = lateral femoral epicondyle
\|                   │                                             trochanter = greater trochanter
\|                   │
|               │                                        Gait events:
\|                   │                                            shs = slow heel strike
\|                   │                                            fhs = fast heel strike
\|                   │                                            sto = slow toe off
\|                   │                                            fto = fast toe off
\|                   │                                            (heel strikes/toe offs are detected as the positive/negative peaks in ankle anterior-posterior position for that leg)
\|                   │
|               ├─── SLA: step length asymmetry
\|                   │                                                (Units: normalized, unitless)\
\|                   │                                                (Definition: (fast step length - slow step length)/(fast step length + slow step length),
\|                   │                                                             fast step length = anterior-posterior distance between feet at fast heel strike,
\|                   │                                                             slow step length = anterior-posterior distance between feet at slow heel strike)\
\|                   │                                                (see manuscript for details; computed for all groups)
|               │
|               ├─── joint angles at gait events (ShortPreferred only; see manuscript for definition):
|               │                                                                         shs_fAnkleAngle, shs_sHipAngle, shs_sKneeAngle, shs_sAnkleAngle, shs_fHipAngle, shs_fKneeAngle,
\|                   │                                                                         fto_fAnkleAngle, fto_sHipAngle, fto_sKneeAngle, fto_sAnkleAngle, fto_fHipAngle, fto_fKneeAngle,
|               │                                                                         fhs_fAnkleAngle, fhs_sHipAngle, fhs_sKneeAngle, fhs_sAnkleAngle, fhs_fHipAngle, fhs_fKneeAngle,
|               │                                                                         sto_fAnkleAngle, sto_sHipAngle, sto_sKneeAngle, sto_sAnkleAngle, sto_fHipAngle, sto_fKneeAngle\
\|                   │                                                           (Units: degrees)\
|               │                                                           (Overall variable name is defined as [gait event]*[leg][joint]Angle =
|               │* *                           *                                             angle of the [joint] of the [leg] measured at [gait event])
*|               │*  *                           *                               (Overall variable name, example: sto_fAnkleAngle = fast leg ankle angle [fAnkleAngle] at slow toe off [sto])
*|               │*  *                           *                               (Angle definitions:
*|               │*  *                           *Ankle = angle between knee, ankle, toe5 markers,
|               │*  *                           *                                                     0deg if ankle-toe5 segment is perpendicular to the ankle-knee segment,
*|               │*  *                           *                                                     dorsiflexion is positive;
*|               │*  *                           *Hip = angle of the trochanter-knee segment relative to a vertical line,
|               │*  *                           *0deg if the segment is vertical,
|               │*  *                           *flexion is positive;\
|               │*  *                           *Knee = angle between trochanter, knee, ankle markers,
|               │*  *                           *0deg if the knee is fully extended (the three markers are in a line)
|               │*  *                           *flexion is positive.)
|               │*  *                          * 
*|               ├─── joint marker position at gait events (ShortPreferred only; see manuscript for definition):
|               │*  *                           *shs_sAnkleX, shs_sKneeX, shs_sTrochanterX, shs_fTrochanterX, shs_fKneeX, shs_fAnkleX,
|               │*  *                           * fto_sAnkleX, fto_sKneeX, fto_sTrochanterX, fto_fTrochanterX, fto_fKneeX, fto_fAnkleX,
*|               │*  *                           * fhs_fAnkleX, fhs_fKneeX, fhs_fTrochanterX, fhs_sTrochanterX, fhs_sKneeX, fhs_sAnkleX,
*|               │*  *                           * sto_fAnkleX, sto_fKneeX, sto_fTrochanterX, sto_sTrochanterX, sto_sKneeX, sto_sAnkleX,
*|               │*  *                           * shs_sAnkleY, shs_sKneeY, shs_sTrochanterY, shs_fTrochanterY, shs_fKneeY, shs_fAnkleY,
*|               │*  *                           * fto_sAnkleY, fto_sKneeY, fto_sTrochanterY, fto_fTrochanterY, fto_fKneeY, fto_fAnkleY,
*|               │*  *                           * fhs_fAnkleY, fhs_fKneeY, fhs_fTrochanterY, fhs_sTrochanterY, fhs_sKneeY, fhs_sAnkleY,
*|               │*  *                           * sto_fAnkleY, sto_fKneeY, sto_fTrochanterY, sto_sTrochanterY, sto_sKneeY, sto_sAnkleY\
*|               │*  *                           * (Units: meters)\
*|               │*  *                           * (Overall variable name is defined as [gait event][leg][joint][coordinate] =
|               │  *                            position of the [joint] marker of the [leg] measured at [gait event], along axis [coordinate])\
|               │  *                            (Coordinates: X = anterior-posterior, forward is positive; Y = vertical, upward is positive;\
|               │  *                            all positions are expressed relative to the hip center position =\
|               │  *                            the average of the fast and slow trochanter markers for each frame)
|               │  *                           \
|               └─── support times (ShortPreferred only; see manuscript for definition): dstF, sstS, dstS, sstF\
|                                                                                 (Units: seconds)\
|                                                                                 (Abbreviations:\
|                                                                                        dstF = fast double support = time from shs to fto,\
|                                                                                       sstS = slow single support = time from fto to fhs,\
|                                                                                       dstS = slow double support = time from fhs to sto,\
|                                                                                       sstF = fast single support = time from sto to shs)
|\
├─── Timeseries measures at 100Hz
|               │  *                            * each of the following fields is a (1 x N Trials) cell,
|               │  *                                     with each cell element a (N Participants X N frames in Trial) matrix,
|               │  *                                     with each element in the matrix a sample of that measure for the specific trial, participant and timestamp
|               │  *                           \
|               │  *                                 * The following abbreviations/definitions are used:
|               │*  *                            slowlead: variables referring to strides that are defined as the period between two consecutive SLOW heel strikes\
|               │*  *                            fastlead: variables referring to strides that are defined as the period between two consecutive FAST heel strikes\
|               │*  *                            (these are support/dummy variables used for plotting within-leg gait cycle measures)
|               │*  *                           
|               ├─── timeseries_slowlead_stride, timeseries_fastlead_stride (ShortPreferred only):
|               │*  *                            (Definition: stride number, for strides defined using "slowlead" or "fastlead" definitions above)
|               │*  *                           \
|               ├─── timeseries_slowlead_Sstance, timeseries_slowlead_Fstance, timeseries_fastlead_Sstance, timeseries_fastlead_Fstance (ShortPreferred only):
|               │*  *                            (Definition: flag (0: swing, 1: stance) for whether S(slow) or F(fast) foot is in stance,
|               │*  *                            for strides defined using "slowlead" or "fastlead" definitions above)
|               │*  *                           \
|               ├─── timeseries_sHipAngle, timeseries_sKneeAngle, timeseries_sAnkleAngle, timeseries_fHipAngle, timeseries_fKneeAngle, timeseries_fAnkleAngle (ShortPreferred only):
|               │*  *                            (Units: degrees)
|               │*  *                            (Definition: joint angles for each frame, defined as described in the "kinematic measures" above)
|               │*  *                           \
|               ├─── timeseries_slowlead_pass, timeseries_fastlead_pass (ShortPreferred, overground trials only):
|               │*  *                            (Definition: overground pass number, for strides defined using "slowlead" or "fastlead" definitions above)
|               │*  *                           
|               ├─── TaskTime (all groups):
|               │*  *                            (Units: seconds)
|               │*  *                            (Definition: time stamp for the TaskRightSpeed measure)
|               │*  *                           \
|               └─── TaskRightSpeed (all groups):
|                          (Units:  meters/seconds)
|                         (Definition: speed of the right belt)
|\
|\
├─── Measures recorded once per overgorund pass:\
|                    │       (1 x N Trials) cell,\
|                │             with each cell element a N Participants X N Overground Passes in that trial,\
|                    │             with each element in the matrix a sample of that measure for the specific Overground pass & participant.
|                    │
|                    └─── OvergroundSpeed: walking speed for that overground pass
|                                          (Units: meters/seconds)
|\
└─── Measures recorded once per trial:
│                      (1 x N Speed Match Tasks) cell,
│                          with each cell element a N Participants X 1 matrix,
│                         with each element in the matrix a sample of that measure for the specific task & participant.
│
└─── TaskRightSpeedFinal: speed of the right belt at the end of each iteration of the speed match task\
               (Units: meters/seconds)

CODE

Location: 'code' folder

Info: Contains .m code files for data analysis [all files are saved with .m extension]

Files:

->Main File: "RunAll.m" calls all files in the correct order

->Files used for Background Computations (computing .mat files in analyses folder):

E123_bootstrapSamples
    % %% E123_bootstrapSamples.m
    % %% Experiments 1, 2 and 3. 
    % %% creates bootstrap samples of participants for each group 
    % %% (10,000 samples of N participants, N=group size)
    % %% Output: .mat file with participants indexes for each bootstrap sample
    % %% in analyses\[groupname]BootstrapSamples.mat

E3_ComputeInterpolatedAngles
    % %% E3_ComputeInterpolatedAngles.m
    % %% Experiment 3. 
    % %% computes interpolated angles, by stride, averaged over strides for each epoch of interest
    % %% Output: .mat file with variables 'interpolatedAngleData' (interpolated angles in deg)
    % %%      and 'interpolatedAngleEvents' (interpolated HS and TO, % of stride times)
    % %% in analyses\ShortPreferred_InterpolatedAngleData.mat

E3_ComputeOGChange
    % %% E3_ComputeOGChange.m
    % %% Related to Experiment 3
    % %% computes OG baseline to post-adaptation change for different kinematics  
    % %% Output 1: computes epoch difference for segment lengths at to/hs events 
    % %% Output 2: computes epoch difference for joint angles at to/hs events 
    % %% Output 3: computes epoch difference for support times 
    % %% in analyses\ShortPreferred_EpochData.mat, struct epochData 

->Files used for Figures and Stats:

E1_PlotsAndStats
    % %% E1_PlotsAndStats.m
    % %% Related to Experiment 1, Fig. 1, 2, 3, S1, S2, S3, and Stats #1, 2, 3
    % %% plots and statistics for E1    
    % %% Output #1. Fig. 1B & S2A,B Top. SLA Timeseries
    % %% Output #2. Fig. S1C & S2A,B Bottom. R-L Speed at the end of each iteration of the speed match tasks
    % %% Output #3. Fig. 2D. R Speed in speed match tasks (BL mean, post-adapt, post-OG) Timeseries for ShortPreferred.
    % %% Output #4. Fig. 2D & 3E. Post-adapt. overground perceptual questionnaire
    % %% Output #5. Fig. 1C, 2D, 3B-C-D-F, S1A-B, S2C-D, and Stats #1-2, generalization and OG block characteristics measures
    % %% Output #6. Fig. S3 and Stats #3, individual OG speeds 

E2_PlotsAndStats
    % %% E2_PlotsAndStats.m
    % %% Related to Experiment 2, Fig. 4, 5, S4, and Stats #4, 5
    % %% plots and statistics for E2
    % %% Output #1. Fig. 4C, S4A-B.  SLA Timeseries
    % %% Output #2. Fig. 5B. R-L Speed at the end of each iteration of the speed match tasks
    % %% Output #3. Fig. 4C right, 5C, S4C-D, and Stats #4-5. Generalization and OG block characteristics measures

E3_AnglePlots
    % %% E3_AnglePlots.m
    % %% Related to Experiment 3, Fig. 6A, S6, S7, S8
    % %% Output: Plots of Knee Vs Hip angle traces

E3_BarPlotsAndStats
    % %% E3_BarPlotsAndStats.m
    % %% Related to Experiment 3, Fig. 6A insets, 6B insets, Stats 6-7
    % %% Output 1: Plots support times 
    % %% Output 2: Plots and Stats for segment angles and support times 
    % %%    in 'stats\Stats6_E3_Epochs.csv'
    % %% Output 3: Plots and stats for peak angles
    % %%    in 'stats\Stats7_E3_PeakAngles.csv'

E3_ProjectionPlots
    % %% E3_ProjectionPlots.m
    % %% Related to Experiment 3, Fig. S5
    % %% Output: Plots bird-eye view projections of limb segments for all epochs

E3_SegmentPlots
    % %% E3_SegmentPlots.m
    % %% Related to Experiment 3, Fig. 6B
    % %% Output: Plots stick figures of limb segments for each epoch

->Background helper files are located both in the main "code" folder, as well as the "lib" subfolder folder

GENERATED FILES

files obtained processing source data with code provided

ANALYSED DATA
-> data obtained processing source data with code provided

Location: 'analyses' folder

Info: Contains .mat data files generated from the code and the source data provided in other folders.
Analysed data is an intermediate steps to plotting figures and computing statistics

STATS
-> .csv files with computed stats

Location: 'stats' folder

Info: Contains .csv files for selected statistical comparisons (involving a large number of results / presented in tables; other stats are included in figure generation)

Methods

Participants walked on a split-belt treadmill with two separate belts (Motek, Amsterdam, NL), with the speed of each belt was independently controlled using a custom-written D-Flow program. Participants also walked overground on a 6-meter walkway. Step length asymmetry and other kinematic measures were computed from motion capture data collected with a Vicon motion capture system (Oxford, UK), which uses infrared-emitting markers, or with a Zeno Walkway (ProtoKinetics, Havertown, PA), which uses force plates. We also obtained perceptual measures using a method of adjustment perceptual task to measure the belt speed difference perceived as "equal speeds" after adaptation. All methods are described in the manuscript. 

Funding

National Institute of Neurological Disorders and Stroke, Award: 5 R37 NS090610

American Heart Association, Award: 20PRE35180131