Exploring the effect of different neural strategies on the knee joint contact forces during walking in adults.
The 4 matches · 3 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
- [1] § Methods › MSK modelling and biomechanical simulations ↔ MatlabStaticOptimization/MAIN_StaticOptimization.m, the whole file · a weak match · score 0.69 · joint reaction, static optimization, OpenSim, muscle activations, API, angles
- [2] § Methods › Data analyses ↔ Codes/Plotting/Figures_7_8_boxplots.m, lines 1–22 · score 0.69 · BFL, LG, MG, SM, VL, VM
- [3] § Methods › MSK modelling and biomechanical simulations ↔ TestData/results_SO/API_staticOpt_settings.m, the whole file · a weak match · score 0.64 · joint reaction, OpenSim, static optimization, API, muscle activations, angles
- [4] § Results › Comparison between the reference solution and the solutions associated to minimum and maximum knee loads ↔ Codes/DataExtraction/calc_musc_force_variation.m, the whole file · a weak match · score 0.59 · young adults, knee joint, muscle forces, variation, zeroed, elderly
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
MATLAB · 119 lines · 6.1 KB · Apache-2.0 · 1 match
- % Custom static optimization code. Author: Scott Uhlrich, Stanford
- % University, 2020. Please cite:
- % Uhlrich, S.D., Jackson, R.W., Seth, A., Kolesar, J.A., Delp S.L.
- % Muscle coordination retraining inspired by musculoskeletal simulations
- % reduces knee contact force. Sci Rep 12, 9842 (2022).
- % https://doi.org/10.1038/s41598-022-13386-9
- function [] = MAIN_StaticOptimizationAPI()
- % This main loop allows you to run StaticOptimizationAPI.m
- clear all; close all; format compact; clc; fclose all;
- % % Path to the data and utility functions. No need to change this, unless
- % you rearrange the folder structure, differently from github.
- baseDir = [pwd '\TestData\'] ; % Base Directory to base results directory.
- addpath(genpath('Utilities'))
- % % % Fill Path names
- INPUTS.trialname = 'walking_baseline1' ;
- INPUTS.forceFilePath = [baseDir '\walking_baseline1_forces.mot'] ; % Full path of forces file
- INPUTS.ikFilePath = [baseDir '\results_ik.sto'] ; % Full path of IK file
- INPUTS.idFilePath = [baseDir '\results_id.sto'] ; % Full path of ID file
- INPUTS.emgFilePath = [baseDir '\EMG_allMuscles.sto'] ; % location of *.mot file with normalized EMG (if using EMG)
- INPUTS.outputFilePath = [baseDir '\results_SO\'] ; % full path for SO & JRA outputs
- INPUTS.modelDir = [baseDir] ; % full path to folder where model is
- INPUTS.modelName = 'Rajagopal_scaled_Sub1_gasAvoid.osim' ; % model file name
- geometryPath = [baseDir '\Geometry'] ; % full path to geometry folder for Model. If pointing to Geometry folder in OpenSim install, leave this field blank: []
- % % % Set time for simulation % % %
- INPUTS.startTime = 10.9 ;
- INPUTS.endTime = 11.7 ;
- INPUTS.leg = 'l' ; % If deleteContralateralMuscles flag is true, actuates this leg
- % with muscles and contralateral leg with coordinate actuators
- % only. If deleteContralateralMuscles flag is false,
- % this input doesn't matter.
- % Flags
- % % Load up the INPUTS structure for static optimization parameters that are constant across all
- % trials and subjects
- INPUTS.filtFreq = 6 ; % Lowpass filter frequency for IK coordinates. -1 if no filtering
- % Flags
- INPUTS.appendActuators = true ; % Append reserve actuators at all coordinates?
- INPUTS.appendForces = true ; % True if you want to append grfs?
- INPUTS.deleteContralateralMuscles = false ; % replace muscles on contralateral leg with powerful reserve actuators (makes SO faster)
- INPUTS.useEmgRatios = false ; % true if you want to track EMG ratios defined in INPUTS.emgRatioPairs
- INPUTS.useEqualMuscles = false ; % true if you want to constrain INPUTS.equalMuscles muscle pairs to be equivalent
- INPUTS.useEmgConstraints = false ; % true if you want to constrain muscle activations to follow EMG input INPUTS.emgConstrainedMuscles
- INPUTS.changePassiveForce = false ; % true if want to turn passive forces off
- INPUTS.ignoreTendonCompliance = false ; % true if making all tendons rigid
- % Degrees of Freedom to ignore (patellar coupler constraints, etc.) during moment matching constraint
- INPUTS.fixedDOFs = {'knee_angle_r_beta','knee_angle_l_beta'} ;
- % EMG file
- INPUTS.emgRatioPairs = {} ; % nPairs x 2 cell for muscle names whos ratios you want to constrain with EMG. Can leave off '_[leg]' if you want it to apply to both
- INPUTS.equalMuscles = {} ; % nPairs x 2 cell of muscles for whom you want equal activations
- INPUTS.emgConstrainedMuscles = {} ; % nMuscles x 1 cell of muscles for which you want activation to track EMG. Can leave off '_[leg]' if you want it to apply to both
- INPUTS.emgSumThreshold = 0 ; % If sum of emg pairs is less than this it won't show up in the constraint or cost (wherever you put it)
- % Weights for reserves, muscles. The weight is in
- % the cost function as sum(w*(whatever^2)), so the weight is not squared.
- INPUTS.reserveActuatorWeights = 1 ;
- INPUTS.muscleWeights = 1 ;
- INPUTS.ipsilateralActuatorStrength = 1 ;
- INPUTS.contralateralActuatorStrength = 100 ;
- INPUTS.weightsToOverride = {} ; % Overrides the general actuator weight for muscles or reserves.
- % Can be a partial name. Eg. 'hip_rotation' will change hip_rotation_r and hip_rotation_l
- % or 'gastroc' to override the weight for the right and left gastroc muscles
- INPUTS.overrideWeights = [] ; % A column vector the same size as weights
- INPUTS.prescribedActuationCoords = {} ; % A column cell with coordinates (exact name) that will be prescribed from ID moments eg. 'knee_adduction_r'
- % The muscles will not aim to balance the moment at this DOF,
- % but their contribution to the moment will be computed at the
- % end of the optimization step, and the remaining moment generated by
- % the reserve actuator
- % External Forces Definitions
- INPUTS.externalForceName = {'GRF_r','GRF_l'} ; % nForces x 1 cell
- INPUTS.applied_to_body = {'calcn_r','calcn_l'} ;
- INPUTS.force_expressed_in_body = {'ground','ground'} ;
- INPUTS.force_identifier = {'ground_force_v','1_ground_force_v'} ;
- INPUTS.point_expressed_in_body = {'ground','ground'} ;
- INPUTS.point_identifier = {'ground_force_p','1_ground_force_p'} ;
- % Joint Reaction Fields
- INPUTS.jRxn.inFrame = 'child' ;
- INPUTS.jRxn.onBody = 'child' ;
- INPUTS.jRxn.jointNames = ['all'] ;
- INPUTS.passiveForceStrains = [3 4] ; % Default = [0,.7] this is strain at zero force and strain at 1 norm force in Millard model
- % This only matters if ignorePassiveForces = true
- % % % % % END OF USER INPUTS % % % % %% % % % %% % % % %% % % % %% % % % %
- if ~isempty(INPUTS.overrideWeights)
- disp('YOU ARE OVERRIDING SOME ACTUATOR WEIGHTS');
- end
- if ~isempty(geometryPath)
- org.opensim.modeling.ModelVisualizer.addDirToGeometrySearchPaths(geometryPath)
- end
- % Run it!
- StaticOptimizationAPIVectorized(INPUTS) ; % Run StaticOptimizationAPI
- % Save this script in the folder to reference settings
- FileNameAndLocation=[mfilename('fullpath')];
- newbackup=[INPUTS.outputFilePath 'API_staticOpt_settings.m'];
- currentfile=strcat(FileNameAndLocation, '.m');
- copyfile(currentfile,newbackup);
- end % Main
MAIN_StaticOptimization.m at commit 6c7f7f3, under Apache-2.0 · at the source
Overview
- Department of Industrial Engineering, Alma Mater Studiorum - University of Bologna, Bologna, Italy
- Physical Medicine and Rehabilitation Unit, IRCCS Istituto Ortopedico Rizzoli, Bologna, Italy
- Department of Biomedical and Neuromotor Sciences, Alma Mater Studiorum - University of Bologna, Bologna, Italy
- Medical Technology Lab, IRCCS Istituto Ortopedico Rizzoli, Bologna, Italy
Abstract
Identifying the different neural strategies that a person may adopt to perform simple locomotor tasks, such as walking, may enable the definition of rehabilitation plans aimed to reduce joint loads while preserving joint kinematics. Abnormal detrimental loading conditions that would likely reduce a person’s quality of life, especially among the elderly, could thus be prevented. Leveraging on previous works, we employed musculoskeletal models and biomechanical simulations (1) to explore how healthy young and elder adults recruit their muscles to perform a walking task, and (2) to determine whether the use of electromyography data to inform the simulations would allow to reduce the solution space. For the 15 tested subjects (10 young, 5 elderly), we estimated 10k sets of muscle and knee joint contact forces combining a static optimization approach with a Markov-chain Monte Carlo algorithm. We observed that the bands of solutions were narrower among the young adults than the elderly, showing how different neural strategies that prioritize the use of different muscles while ensuring the same kinematics are more likely to result in larger changes in the joint contact forces among older adults. In addition, while the neural strategies associated to the maximal knee contact forces were similar between populations, some differences emerged when analysing the strategies to minimise the knee loads. Last, the use of electromyography data allowed for a reduction of the solution band by up to 69%.
Supplementary Information: The online version contains supplementary material available at 10.1038/
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 4 matches between paragraphs and lines of code.
GiorgioD89/ProtoAgingMCMC
532031d9ea5ea53dafed89a11e0dfc3d80c369bb, 28 April 2026Availability: 1 check, the latest on 29 September 2026: the link answers
- 29 September 2026: the link answers
10 files
- Codes/
DataExtraction/ , MATLAB, 117 lines, 1 matchcalc_musc_force_variatio n.m - Codes/
DataExtraction/ , MATLAB, 119 linesfind_hip_ankle_jcf_varia tion.m - Codes/
DataExtraction/ , MATLAB, 80 linesgen_jra_data_matrices.m - Codes/
DataExtraction/ , MATLAB, 377 linesmisc_analyses_stats.m - Codes/
Plotting/ , Python, 79 linesFigure_5_barplot.py - Codes/
Plotting/ , Python, 72 linesFigure_6_barplot.py - Codes/
Plotting/ , MATLAB, 95 linesFigures_2_3_4_quantiles. m - Codes/
Plotting/ , MATLAB, 51 lines, 1 matchFigures_7_8_boxplots.m - LICENSE, License, 201 lines
- README.md, Text, 47 lines
stanfordnmbl/MatlabStaticOptimization
7a54da3008cb9949722681b346ebe8d8f1bf04e7, 14 October 2022Availability: 1 check, the latest on 29 September 2026: the link answers
- 29 September 2026: the link answers
9 files
- MAIN_StaticOptimization.
m , MATLAB, 119 lines - TestData/
results_SO/ , MATLAB, 118 lines, 1 matchAPI_staticOpt_settings.m - Utilities/
CostFunction.m , MATLAB, 27 lines - Utilities/
DynamicsConstraint_accel , MATLAB, 84 lineserationMatching.m - Utilities/
DynamicsConstraint_momen , MATLAB, 95 linestMatching.m - Utilities/
StaticOptimizationAPIVec , MATLAB, 848 linestorized.m - Utilities/
getMuscleParams.m , MATLAB, 58 lines - LICENSE, License, 201 lines
- README.md, Text, 29 lines
HansUniVie/MuscleCoordinationRetraining
6c7f7f3c1e75cdd36401f1511410f050e5736a1a, 13 November 2023Availability: 1 check, the latest on 29 September 2026: the link answers
- 29 September 2026: the link answers
13 files
- MatlabStaticOptimization
/ , MATLAB, 119 lines, 1 matchMAIN_StaticOptimization. m - MatlabStaticOptimization
/ , MATLAB, 27 linesUtilities/ CostFunction.m - MatlabStaticOptimization
/ , MATLAB, 84 linesUtilities/ DynamicsConstraint_accel erationMatching.m - MatlabStaticOptimization
/ , MATLAB, 95 linesUtilities/ DynamicsConstraint_momen tMatching.m - MatlabStaticOptimization
/ , MATLAB, 848 linesUtilities/ StaticOptimizationAPIVec torized.m - MatlabStaticOptimization
/ , MATLAB, 58 linesUtilities/ getMuscleParams.m - Script01_Montecarlo_para
llel_input_example.m , MATLAB, 96 lines - Script02_MontecarloSimul
ation_parallel_example.m , MATLAB, 34 lines - Script03_SummarizeResult
s_eample.m , MATLAB, 56 lines - checkMuscleMomentArms.m, MATLAB, 164 lines
- load_sto_file.m, MATLAB, 74 lines
- LICENSE, License, 201 lines
- README.md, Text, 34 lines
Code availability
The Monte Carlo simulations implementing the unconstrained and EMG-constrained Static Optimization are based on the codes by Uhlrich et al.9 and Kainz et al.23, which can be found at the following links: https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 26 scripts, each with its path and the digest of its content;
- 4 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
- zenodo:15100077, at Zenodo; found in “Data availability”
Data Availability Statement
The input data and models used to perform the Monte Carlo simulations are available at: (https://
The Monte Carlo simulations implementing the unconstrained and EMG-constrained Static Optimization are based on the codes by Uhlrich et al.9 and Kainz et al.23, which can be found at the following links: https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 29 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 5 authors, 7 keywords, 11 MeSH terms, 1 funder, 53 references.
Cite
This paper
Davico, G., Toccaceli, E., Labanca, L., Benedetti, M. G., & Viceconti, M. (2026). Exploring the effect of different neural strategies on the knee joint contact forces during walking in adults. Scientific reports, 16(1), 16676. https://
BibTeX
@article{davico2026explo
author = {Davico, Giorgio and Toccaceli, Enrico and Labanca, Luciana and Benedetti, Maria Grazia and Viceconti, Marco},
title = {{Exploring the effect of different neural strategies on the knee joint contact forces during walking in adults}},
journal = {Scientific reports},
year = {2026},
month = apr,
volume = {16},
number = {1},
pages = {16676},
publisher = {Nature Publishing Group},
issn = {2045-2322},
doi = {10.1038/
url = {https://
pmid = {41957392},
pmcid = {PMC13219765}
}
RIS
TY - JOUR
AU - Davico, Giorgio
AU - Toccaceli, Enrico
AU - Labanca, Luciana
AU - Benedetti, Maria Grazia
AU - Viceconti, Marco
TI - Exploring the effect of different neural strategies on the knee joint contact forces during walking in adults
T2 - Scientific reports
J2 - Sci Rep
PY - 2026
DA - 2026/
VL - 16
IS - 1
SP - 16676
SN - 2045-2322
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "Exploring the effect of different neural strategies on the knee joint contact forces during walking in adults",
"container-title": "Scientific reports",
"author": [
{
"family": "Davico",
"given": "Giorgio"
},
{
"family": "Toccaceli",
"given": "Enrico"
},
{
"family": "Labanca",
"given": "Luciana"
},
{
"family": "Benedetti",
"given": "Maria Grazia"
},
{
"family": "Viceconti",
"given": "Marco"
}
],
"container-title-short":
"volume": "16",
"issue": "1",
"page": "16676",
"DOI": "10.1038/
"PMID": "41957392",
"PMCID": "PMC13219765",
"ISSN": "2045-2322",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
9
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1002/hbm.70602 [code]
- Neuroimaging Correlates of Post-Stroke Pain After Ischemic Stroke: Secondary Analysis of the INSPiRE-TMS Trial.Journal: Human brain mappingIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools, other
- [2] doi:10.1038/s41586-026-10631-3 [code]
- A prognostic human brain network for diffuse midline glioma.Journal: NatureIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
- [3] doi:10.1111/ene.70678 [code]
- Who Falls After a Stroke? Evidence From a Prospective Stroke Cohort.Journal: European journal of neurologyIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
- [4] doi:10.1016/j.celrep.2026.117404 [code]
- Action and rest tremor map to distinct networks within the primary motor cortex.Journal: Cell reportsIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
- [5] doi:10.1038/s42003-026-10276-y [code]
- The cellular correlates and adolescent reorganisation of cortical myelination networks in the common marmoset.Journal: Communications biologyIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
- [6] doi:10.1002/ana.78206 [code]
- Multimodal Image Guidance in Subthalamic Deep Brain Stimulation for Parkinson's Disease.Journal: Annals of neurologyIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
- [7] doi:10.1038/s41467-026-71151-2 [code]
- Common and distinct neural correlates of social interaction processing and theory of mind in narratives.Journal: Nature communicationsIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
- [8] doi:10.1002/mrm.70336 [code]
- Offline Reconstruction of Diffusion MRI Acquisitions for Comparison Between Complex PCA-Based and AI-Based Denoising.Journal: Magnetic resonance in medicineIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
- [9] doi:10.1126/sciadv.aeh7220 [code]
- Central complex representations of self-movement are sufficient to compute wind direction in flight.Journal: Science advancesIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
- [10] doi:10.1038/s41593-026-02357-2 [code]
- Experience reorganizes content-specific memory traces in macaques.Journal: Nature neuroscienceIn common: Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, 3 other tools
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 3 repositories of the authors' code, each at its verified commit and with its license, 26 scripts, and 4 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:2cb726aee4c8324b…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
