?PhysioMSKNet now answers: a package help page gives one paragraph on what the
package is for, the main entry points grouped by task, and where to go next.R CMD check.@examples added or corrected across 100 help pages. Each runs
offline in seconds, writes nothing outside tempdir(), and is executed by
R CMD check; anything needing a device, a download or an optional backend is
fenced with the reason stated.?PhysioMSKNet) with a
task-grouped index of entry points, a "Getting started" vignette, and
runnable @examples across the core hypergraph, metric, community,
simulation, null-model, Hill-model and visualization functions.R/hill-elastic.R):
tendonForceLength() — tendon force-length curve.equilibriumFiberLength() — solves the quasi-static muscle-tendon force
equilibrium for the fiber length, accounting for tendon compliance.emgDrivenForceElastic() — EMG-driven force with a compliant tendon.R/hill-model.R): turns an EMG
envelope into physical muscle force and joint torque (N.m), replacing the
amplitude proxy.
excitationToActivation() — first-order activation dynamics (Thelen 2003).forceLengthActive(), forceLengthPassive(), forceVelocity(),
hillMuscleForce() — the Hill contractile + passive elements.emgToExcitation(), emgDrivenForce(), emgDrivenJointMoment() — the
forward EMG-to-moment pipeline over normalised fiber kinematics from
muscleTendonKinematics().calibrateEMGDrivenModel() — CEINMS-style calibration to measured joint
moments.Initial release as a standalone package in the x-biosignal ecosystem. PhysioMSKNet brings network-science analysis of the human musculoskeletal system to R, implementing the hypergraph model of Murphy et al. (2018, PLOS Biology) and bridging it to multi-modal physiological signals (EMG, MoCap, IMU, EEG, OpenSim) for rehabilitation-oriented analysis.
MSKHypergraph() constructs the model from a sparse incidence matrix,
with a bundled 173-bone x 270-muscle anatomical dataset loadable via
loadMSKData(), loadIncidenceMatrix(), loadMuscleMetadata(), and
loadValidationData().projectBoneGraph() and projectMuscleGraph(),
plus hyperedgeDegree(), vertexDegree(), and degreeDistribution().mskSimulate() sets up a spring-mass system (spring constant
1/(deg-1) per muscle); mskImpactScore() and mskImpactScoreAll()
perturb muscles via velocity-Verlet integration in a 4th spatial
dimension to quantify network-wide displacement.mskNullHypergraph() / mskNullEnsemble() generate degree-preserving
randomized null models, and mskImpactDeviation() scores each muscle
against its degree-matched null distribution.mskCommunityDetect() and mskConsensusPartition() run Louvain
community detection (with a pure-R fallback when igraph is absent),
with mskModularity(), mskZRand(), and mskConsensusPartition()
consensus over repeated runs.mskNetworkMetrics(),
mskBetweenness() (Brandes), mskCloseness(), and
mskShortestPaths().mskRobustRegression() (weighted / MASS::rlm robust fitting),
mskImpactRecoveryModel(), and mskHomuncCorrelation() reproduce the
impact-vs-recovery and community-vs-homunculus results, and
mskReproducePaper() runs the full validation pipeline end to end.plotMSKNetwork(),
plotDegreeDistribution(), plotCommunityStructure(),
plotImpactVsDegree(), plotImpactVsRecovery(), and plotHomunculus().emgToMSKMapping() matches EMG channels to muscles, and
emgStructuralCoherence(), emgCommunityCompare(), and
emgMSKEnrichment() compare functional coherence and activation against
network structure (with a Mantel test and Welch-coherence fallback).mocapToMSKMapping() / imuToMSKMapping() resolve
segment and sensor names to bones, and mocapNetworkKinematics(),
mocapImpactPrediction(), mocapCommunityDynamics(),
imuNetworkKinematics(), imuImpactPrediction(), and
imuCommunityDynamics() propagate kinematic stress and movement synchrony
through the network.opensimToMSKHypergraph() builds a hypergraph directly
from an .osim model (parsing PathPoint attachments), with
opensimNetworkAnalysis(), opensimCompareModels(), and
opensimForceToImpact() for force-weighted impact analysis.neuromechCorticomuscularCoupling(), neuromechDirectionalCoupling()
via Granger causality / transfer entropy), electromechanical delay
(neuromechElectromechanicalDelay()), joint-torque estimation from moment
arms (neuromechJointTorque()), NMF/PCA muscle-synergy decomposition
(neuromechMuscleSynergy()), motor-drive topography, integrated
vulnerability, and a neuromechSummary() orchestrator.mskAnnotate(),
mskEnrichKG() (hypergeometric enrichment), mskPathwayQuery(),
mskCommunityProfile(), mskClinicalEvidence(), and mskKGSummary().mskClinicalPredictor(),
mskRecoveryTimeline(), mskInjuryRiskProfile(), mskRehabProtocol(),
and the mskOutcomeSummary() orchestrator.mskDetectCompensation(),
mskCompensationRiskScore(), mskCompensationEvolution(),
mskCompensationNetwork(), and mskCompensationSummary() identify and
track compensatory activation in muscles neighboring an injury.mskLongitudinalTracker() with ICC-based
mskMinimalDetectableChange(), parametric mskRecoveryTrajectoryFit()
(exponential / sigmoid / linear), mskDetectResponderStatus(),
mskDetectRecoveryPlateau(), mskSynergyChangeIndex(),
mskNeuralAdaptationIndex(), and mskCoordinationQualityScore().mskPredictFunctionalOutcome() (ROM,
strength, composite score), mskFunctionalMilestones(),
mskOutcomeConfidenceInterval(), mskReassess(), mskAdaptProtocol(),
and mskOutcomeReport().igraph, MASS, readxl, and the sibling PhysioEMG / PhysioMoCap /
PhysioOpenSim / PhysioCrossModal / PhysioAnnotationHub packages are
optional (Suggests); pure-R and minimal fallbacks are used when absent.