kinemotion 0.30.0__tar.gz → 0.31.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of kinemotion might be problematic. Click here for more details.

Files changed (381) hide show
  1. kinemotion-0.31.1/.basic-memory/biomechanics/camera-perspective-analysis-45deg-vs-lateral.md +195 -0
  2. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/biomechanics/cmj-physiological-bounds-for-validation.md +35 -74
  3. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/biomechanics/cmj-validation-implementation-complete.md +11 -3
  4. kinemotion-0.31.1/.basic-memory/biomechanics/technical-implementation-45deg-perspective-correction.md +396 -0
  5. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/development/cmj-phase-detection-testing-gap-analysis.md +7 -10
  6. kinemotion-0.31.1/.basic-memory/project-management/issue-12-mvp-scaffolding-complete.md +181 -0
  7. kinemotion-0.31.1/.basic-memory/project-management/issue-12-unblocked-tasks-breakdown.md +92 -0
  8. kinemotion-0.31.1/.basic-memory/project-management/issue-12-use-real-metrics-now.md +111 -0
  9. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/project-management/specialized-subagents-routing-guide.md +1 -1
  10. kinemotion-0.31.1/.basic-memory/strategy/deployment-decision-analysis-for-kinemotion.md +66 -0
  11. kinemotion-0.31.1/.claude/agents/frontend-developer.md +606 -0
  12. kinemotion-0.31.1/.claude/hooks/fix-basic-memory-names.sh +50 -0
  13. kinemotion-0.31.1/.github/dependabot.yml +54 -0
  14. kinemotion-0.31.1/.github/workflows/deploy.yml +117 -0
  15. kinemotion-0.31.1/.github/workflows/security.yml +124 -0
  16. {kinemotion-0.30.0 → kinemotion-0.31.1}/.gitignore +1 -0
  17. {kinemotion-0.30.0 → kinemotion-0.31.1}/.pre-commit-config.yaml +2 -6
  18. kinemotion-0.31.1/.serena/memories/camera-perspective-validation-study.md +154 -0
  19. {kinemotion-0.30.0 → kinemotion-0.31.1}/.serena/memories/project_overview.md +16 -1
  20. {kinemotion-0.30.0 → kinemotion-0.31.1}/CHANGELOG.md +46 -0
  21. {kinemotion-0.30.0 → kinemotion-0.31.1}/CLAUDE.md +3 -2
  22. {kinemotion-0.30.0 → kinemotion-0.31.1}/PKG-INFO +1 -1
  23. kinemotion-0.31.1/backend/.dockerignore +56 -0
  24. kinemotion-0.31.1/backend/.env.example +30 -0
  25. kinemotion-0.31.1/backend/Dockerfile +55 -0
  26. kinemotion-0.31.1/backend/README.md +519 -0
  27. kinemotion-0.31.1/backend/docs/fly-deployment.md +226 -0
  28. kinemotion-0.31.1/backend/docs/implementation-summary.md +458 -0
  29. kinemotion-0.31.1/backend/docs/setup.md +444 -0
  30. kinemotion-0.31.1/backend/docs/tests.md +503 -0
  31. kinemotion-0.31.1/backend/fly.toml +79 -0
  32. kinemotion-0.31.1/backend/pyproject.toml +120 -0
  33. kinemotion-0.31.1/backend/src/kinemotion_backend/__init__.py +3 -0
  34. kinemotion-0.31.1/backend/src/kinemotion_backend/app.py +594 -0
  35. kinemotion-0.31.1/backend/tests/README.md +430 -0
  36. kinemotion-0.31.1/backend/tests/__init__.py +1 -0
  37. kinemotion-0.31.1/backend/tests/conftest.py +192 -0
  38. kinemotion-0.31.1/backend/tests/test_api_endpoints.py +311 -0
  39. kinemotion-0.31.1/backend/tests/test_error_handling.py +261 -0
  40. kinemotion-0.31.1/backend/tests/test_health.py +72 -0
  41. kinemotion-0.31.1/backend/tests/test_r2_integration.py +403 -0
  42. kinemotion-0.31.1/backend/tests/test_validation.py +300 -0
  43. kinemotion-0.31.1/backend/uv.lock +1498 -0
  44. kinemotion-0.31.1/docs/development/agents-guide.md +396 -0
  45. kinemotion-0.31.1/docs/guides/cloud-run-deployment.md +350 -0
  46. kinemotion-0.31.1/docs/guides/cmj-recording-protocol-es.md +125 -0
  47. kinemotion-0.31.1/docs/guides/cmj-recording-protocol.md +125 -0
  48. kinemotion-0.31.1/docs/guides/deployment-checklist.md +290 -0
  49. kinemotion-0.31.1/docs/guides/local-testing.md +585 -0
  50. kinemotion-0.31.1/docs/guides/setup-issue-12.md +499 -0
  51. kinemotion-0.31.1/docs/quick-start.md +135 -0
  52. kinemotion-0.31.1/docs/reference/cloud-run-quick-reference.md +180 -0
  53. kinemotion-0.31.1/frontend/.editorconfig +8 -0
  54. kinemotion-0.31.1/frontend/.env.example +13 -0
  55. kinemotion-0.31.1/frontend/.gitattributes +4 -0
  56. kinemotion-0.31.1/frontend/.gitignore +40 -0
  57. kinemotion-0.31.1/frontend/.pnp.cjs +9737 -0
  58. kinemotion-0.31.1/frontend/.pnp.loader.mjs +2126 -0
  59. kinemotion-0.31.1/frontend/.yarn/install-state.gz +0 -0
  60. kinemotion-0.31.1/frontend/README.md +203 -0
  61. kinemotion-0.31.1/frontend/index.html +14 -0
  62. kinemotion-0.31.1/frontend/src/App.tsx +62 -0
  63. kinemotion-0.31.1/frontend/src/components/ErrorBoundary.tsx +54 -0
  64. kinemotion-0.31.1/frontend/src/components/ErrorDisplay.tsx +58 -0
  65. kinemotion-0.31.1/frontend/src/components/LoadingSpinner.tsx +50 -0
  66. kinemotion-0.31.1/frontend/src/components/RecentUploads.tsx +61 -0
  67. kinemotion-0.31.1/frontend/src/components/ResultsDisplay.tsx +165 -0
  68. kinemotion-0.31.1/frontend/src/components/ResultsSkeleton.tsx +28 -0
  69. kinemotion-0.31.1/frontend/src/components/UploadForm.tsx +183 -0
  70. kinemotion-0.31.1/frontend/src/hooks/useAnalysis.ts +140 -0
  71. kinemotion-0.31.1/frontend/src/hooks/useRecentUploads.ts +58 -0
  72. kinemotion-0.31.1/frontend/src/index.css +899 -0
  73. kinemotion-0.31.1/frontend/src/main.tsx +13 -0
  74. kinemotion-0.31.1/frontend/src/types/api.ts +130 -0
  75. kinemotion-0.31.1/frontend/src/vite-env.d.ts +9 -0
  76. kinemotion-0.31.1/frontend/vite.config.ts +23 -0
  77. kinemotion-0.31.1/frontend/yarn.lock +1707 -0
  78. kinemotion-0.31.1/local_dev.sh +173 -0
  79. {kinemotion-0.30.0 → kinemotion-0.31.1}/pyproject.toml +15 -3
  80. kinemotion-0.31.1/scripts/basic-memory-utils.sh +83 -0
  81. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/api.py +13 -7
  82. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/cmj/analysis.py +6 -3
  83. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/cmj/cli.py +11 -6
  84. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/cmj/debug_overlay.py +3 -3
  85. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/cmj/kinematics.py +10 -5
  86. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/cli_utils.py +4 -2
  87. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/cmj_metrics_validator.py +40 -21
  88. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/dropjump_metrics_validator.py +8 -5
  89. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/metadata.py +2 -1
  90. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/quality.py +5 -4
  91. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/smoothing.py +4 -2
  92. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/video_io.py +3 -2
  93. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/dropjump/analysis.py +12 -7
  94. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/dropjump/cli.py +7 -4
  95. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/dropjump/kinematics.py +6 -3
  96. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/core/test_quality.py +4 -1
  97. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_adaptive_threshold.py +18 -18
  98. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_cmj_analysis.py +76 -67
  99. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_cmj_joint_angles.py +44 -35
  100. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_cmj_kinematics.py +2 -1
  101. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_com_estimation.py +3 -3
  102. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_filtering.py +14 -13
  103. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_joint_angles.py +3 -1
  104. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_polyorder.py +3 -3
  105. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_video_io.py +2 -2
  106. {kinemotion-0.30.0 → kinemotion-0.31.1}/uv.lock +252 -45
  107. kinemotion-0.31.1/vercel.json +6 -0
  108. kinemotion-0.30.0/.claude/agents/QUICKSTART.md +0 -233
  109. kinemotion-0.30.0/.claude/agents/README.md +0 -251
  110. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/README.md +0 -0
  111. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/api/api-reference-quick-commands.md +0 -0
  112. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/biomechanics/cmj-landing-detection-window-validation.md +0 -0
  113. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/biomechanics/drop-jump-vs-cmj-key-differences.md +0 -0
  114. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/codebase/codebase-architecture-overview.md +0 -0
  115. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/development/ci-caching-issue-investigation-deep-squat-test-failure.md +0 -0
  116. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/development/ci-vs-local-test-failure-investigation.md +0 -0
  117. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/development/development-standards-quality-gates.md +0 -0
  118. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/project-management/kinemotion-project-setup-complete.md +0 -0
  119. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/strategy/mvp-feedback-collection-plan.md +0 -0
  120. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/strategy/mvp-first-strategic-direction.md +0 -0
  121. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/strategy/mvp-validation-checkpoints.md +0 -0
  122. {kinemotion-0.30.0 → kinemotion-0.31.1}/.basic-memory/strategy/strategic-priority-tasks-current-roadmap.md +0 -0
  123. {kinemotion-0.30.0 → kinemotion-0.31.1}/.claude/agents/biomechanics-specialist.md +0 -0
  124. {kinemotion-0.30.0 → kinemotion-0.31.1}/.claude/agents/computer-vision-engineer.md +0 -0
  125. {kinemotion-0.30.0 → kinemotion-0.31.1}/.claude/agents/devops-cicd-engineer.md +0 -0
  126. {kinemotion-0.30.0 → kinemotion-0.31.1}/.claude/agents/ml-data-scientist.md +0 -0
  127. {kinemotion-0.30.0 → kinemotion-0.31.1}/.claude/agents/project-manager.md +0 -0
  128. {kinemotion-0.30.0 → kinemotion-0.31.1}/.claude/agents/python-backend-developer.md +0 -0
  129. {kinemotion-0.30.0 → kinemotion-0.31.1}/.claude/agents/qa-test-engineer.md +0 -0
  130. {kinemotion-0.30.0 → kinemotion-0.31.1}/.claude/agents/technical-writer.md +0 -0
  131. {kinemotion-0.30.0 → kinemotion-0.31.1}/.dockerignore +0 -0
  132. {kinemotion-0.30.0 → kinemotion-0.31.1}/.gitattributes +0 -0
  133. {kinemotion-0.30.0 → kinemotion-0.31.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  134. {kinemotion-0.30.0 → kinemotion-0.31.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  135. {kinemotion-0.30.0 → kinemotion-0.31.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  136. {kinemotion-0.30.0 → kinemotion-0.31.1}/.github/pull_request_template.md +0 -0
  137. {kinemotion-0.30.0 → kinemotion-0.31.1}/.github/workflows/docs.yml +0 -0
  138. {kinemotion-0.30.0 → kinemotion-0.31.1}/.github/workflows/release.yml +0 -0
  139. {kinemotion-0.30.0 → kinemotion-0.31.1}/.github/workflows/test.yml +0 -0
  140. {kinemotion-0.30.0 → kinemotion-0.31.1}/.readthedocs.yml +0 -0
  141. {kinemotion-0.30.0 → kinemotion-0.31.1}/.serena/.gitignore +0 -0
  142. {kinemotion-0.30.0 → kinemotion-0.31.1}/.serena/memories/code_style_and_conventions.md +0 -0
  143. {kinemotion-0.30.0 → kinemotion-0.31.1}/.serena/memories/github-project-setup-summary.md +0 -0
  144. {kinemotion-0.30.0 → kinemotion-0.31.1}/.serena/memories/mvp-first-strategy.md +0 -0
  145. {kinemotion-0.30.0 → kinemotion-0.31.1}/.serena/memories/specialist-agents-routing.md +0 -0
  146. {kinemotion-0.30.0 → kinemotion-0.31.1}/.serena/memories/suggested_commands.md +0 -0
  147. {kinemotion-0.30.0 → kinemotion-0.31.1}/.serena/project.yml +0 -0
  148. {kinemotion-0.30.0 → kinemotion-0.31.1}/.tool-versions +0 -0
  149. {kinemotion-0.30.0 → kinemotion-0.31.1}/CODE_OF_CONDUCT.md +0 -0
  150. {kinemotion-0.30.0 → kinemotion-0.31.1}/CONTRIBUTING.md +0 -0
  151. {kinemotion-0.30.0 → kinemotion-0.31.1}/Dockerfile +0 -0
  152. {kinemotion-0.30.0 → kinemotion-0.31.1}/GEMINI.md +0 -0
  153. {kinemotion-0.30.0 → kinemotion-0.31.1}/LICENSE +0 -0
  154. {kinemotion-0.30.0 → kinemotion-0.31.1}/README.md +0 -0
  155. {kinemotion-0.30.0 → kinemotion-0.31.1}/SECURITY.md +0 -0
  156. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/README.md +0 -0
  157. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/api/cmj.md +0 -0
  158. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/api/core.md +0 -0
  159. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/api/dropjump.md +0 -0
  160. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/api/overview.md +0 -0
  161. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/development/errors-findings.md +0 -0
  162. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/development/testing.md +0 -0
  163. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/development/type-hints.md +0 -0
  164. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/development/validation-plan.md +0 -0
  165. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/development/validation-roadmap.md +0 -0
  166. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/development/wallball-norep-detection.md +0 -0
  167. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/guides/bulk-processing.md +0 -0
  168. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/guides/camera-setup.md +0 -0
  169. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/guides/cmj-guide.md +0 -0
  170. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/index.md +0 -0
  171. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/reference/json-output-format.md +0 -0
  172. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/reference/json-structure-comparison.md +0 -0
  173. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/reference/parameters.md +0 -0
  174. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/reference/pose-systems.md +0 -0
  175. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/paper-downloader/HOW-TO-FIND-DOIS.md +0 -0
  176. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/paper-downloader/README.md +0 -0
  177. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/paper-downloader/dois.txt +0 -0
  178. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/paper-downloader/download.py +0 -0
  179. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/paper-downloader/pyproject.toml +0 -0
  180. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/paper-downloader/uv.lock +0 -0
  181. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
  182. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/MANUAL-DOWNLOAD-GUIDE.md +0 -0
  183. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/README.md +0 -0
  184. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/convert_pdfs.py +0 -0
  185. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.md +0 -0
  186. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.md +0 -0
  187. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.md +0 -0
  188. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.md +0 -0
  189. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Ward_Putting-i-in-Team.md +0 -0
  190. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.md +0 -0
  191. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.md +0 -0
  192. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.md +0 -0
  193. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.md +0 -0
  194. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.md +0 -0
  195. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.md +0 -0
  196. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.md +0 -0
  197. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.md +0 -0
  198. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.md +0 -0
  199. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.md +0 -0
  200. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.md +0 -0
  201. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.md +0 -0
  202. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.md +0 -0
  203. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/jump-performance/2011_Harper_10-to-5-Jump-Test.md +0 -0
  204. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.md +0 -0
  205. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/jump-performance/2014_Samozino_FV-Imbalance.md +0 -0
  206. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.md +0 -0
  207. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.md +0 -0
  208. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.md +0 -0
  209. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/jump-performance/2022_Wells_Golf-Clubhead-CMJ.md +0 -0
  210. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.md +0 -0
  211. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.md +0 -0
  212. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.md +0 -0
  213. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/running-biomechanics/2016_Moore_Economical-Running-Technique.md +0 -0
  214. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.md +0 -0
  215. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.md +0 -0
  216. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.md +0 -0
  217. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.md +0 -0
  218. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.md +0 -0
  219. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/smartphone-technology/2022_Bishop_MyJumpLab-Validation.md +0 -0
  220. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.md +0 -0
  221. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.md +0 -0
  222. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.md +0 -0
  223. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.md +0 -0
  224. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.md +0 -0
  225. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/markdown/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.md +0 -0
  226. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/online-references-for-papers.md +0 -0
  227. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.pdf +0 -0
  228. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.pdf +0 -0
  229. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.pdf +0 -0
  230. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.pdf +0 -0
  231. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Ward_Putting-i-in-Team.pdf +0 -0
  232. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.pdf +0 -0
  233. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.pdf +0 -0
  234. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.pdf +0 -0
  235. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.pdf +0 -0
  236. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.pdf +0 -0
  237. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.pdf +0 -0
  238. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.pdf +0 -0
  239. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.pdf +0 -0
  240. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.pdf +0 -0
  241. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.pdf +0 -0
  242. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.pdf +0 -0
  243. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.pdf +0 -0
  244. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.pdf +0 -0
  245. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/jump-performance/2011_Harper_10-to-5-Jump-Test.pdf +0 -0
  246. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.pdf +0 -0
  247. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/jump-performance/2014_Samozino_FV-Imbalance.pdf +0 -0
  248. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.pdf +0 -0
  249. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.pdf +0 -0
  250. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.pdf +0 -0
  251. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/jump-performance/2022_Wells_Golf-Clubhead-CMJ.pdf +0 -0
  252. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.pdf +0 -0
  253. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.pdf +0 -0
  254. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.pdf +0 -0
  255. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Moore_Economical-Running-Technique.pdf +0 -0
  256. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.pdf +0 -0
  257. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.pdf +0 -0
  258. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.pdf +0 -0
  259. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.pdf +0 -0
  260. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.pdf +0 -0
  261. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/smartphone-technology/2022_Bishop_MyJumpLab-Validation.pdf +0 -0
  262. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.pdf +0 -0
  263. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.pdf +0 -0
  264. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.pdf +0 -0
  265. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.pdf +0 -0
  266. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.pdf +0 -0
  267. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/research/thirdparty/pdfs/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.pdf +0 -0
  268. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/1-STRATEGIC_SUMMARY.md +0 -0
  269. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/2-STRATEGIC_ANALYSIS.md +0 -0
  270. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/MVP_FEEDBACK_COLLECTION.md +0 -0
  271. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/MVP_VALIDATION_CHECKPOINTS.md +0 -0
  272. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/README.md +0 -0
  273. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/STYLE_GUIDE.md +0 -0
  274. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/01-executive-summary.md +0 -0
  275. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/02-technical-assessment.md +0 -0
  276. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/03-refactoring-roadmap.md +0 -0
  277. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/BACKEND_ARCHITECTURE/README.md +0 -0
  278. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/BIOMECHANICS/01-executive-summary.md +0 -0
  279. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/BIOMECHANICS/02-technical-assessment.md +0 -0
  280. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/BIOMECHANICS/03-reference-guide.md +0 -0
  281. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/BIOMECHANICS/README.md +0 -0
  282. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/COMPUTER_VISION/01-executive-summary.md +0 -0
  283. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/COMPUTER_VISION/02-real-time-architecture.md +0 -0
  284. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/COMPUTER_VISION/03-implementation-checklist.md +0 -0
  285. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/COMPUTER_VISION/README.md +0 -0
  286. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/CONSOLIDATED/01-agent-consensus.md +0 -0
  287. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/CONSOLIDATED/02-critical-findings.md +0 -0
  288. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/CONSOLIDATED/03-roadmap-adjustments.md +0 -0
  289. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/CONSOLIDATED/04-decision-points.md +0 -0
  290. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/CONSOLIDATED/README.md +0 -0
  291. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/CONSOLIDATED/risk-register.md +0 -0
  292. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/CONSOLIDATED/timeline-roadmap.md +0 -0
  293. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/01-executive-summary.md +0 -0
  294. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/02-infrastructure-assessment.md +0 -0
  295. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/03-implementation-roadmap.md +0 -0
  296. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/DEVOPS_CI_CD/README.md +0 -0
  297. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/01-executive-summary.md +0 -0
  298. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/02-technical-assessment.md +0 -0
  299. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/03-parameter-specifications.md +0 -0
  300. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/ML_DATA_SCIENCE/README.md +0 -0
  301. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/QA_TESTING/01-executive-summary.md +0 -0
  302. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/QA_TESTING/02-roadmap-assessment.md +0 -0
  303. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/QA_TESTING/03-testing-checklists.md +0 -0
  304. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/QA_TESTING/README.md +0 -0
  305. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/01-executive-summary.md +0 -0
  306. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/02-documentation-strategy.md +0 -0
  307. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/03-action-plan.md +0 -0
  308. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/strategy/agent-assessments/TECHNICAL_WRITING/README.md +0 -0
  309. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/technical/framerate.md +0 -0
  310. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/technical/implementation-details.md +0 -0
  311. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/technical/imu-metadata.md +0 -0
  312. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/technical/real-time-analysis.md +0 -0
  313. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/technical/triple-extension.md +0 -0
  314. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/translations/es/camera-setup.md +0 -0
  315. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/validation/determinism-test.md +0 -0
  316. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/validation/known-height-validation.md +0 -0
  317. {kinemotion-0.30.0 → kinemotion-0.31.1}/docs/validation-status.md +0 -0
  318. {kinemotion-0.30.0 → kinemotion-0.31.1}/examples/bulk/README.md +0 -0
  319. {kinemotion-0.30.0 → kinemotion-0.31.1}/examples/bulk/bulk_processing.py +0 -0
  320. {kinemotion-0.30.0 → kinemotion-0.31.1}/examples/bulk/simple_example.py +0 -0
  321. {kinemotion-0.30.0 → kinemotion-0.31.1}/examples/programmatic_usage.py +0 -0
  322. {kinemotion-0.30.0 → kinemotion-0.31.1}/justfile +0 -0
  323. {kinemotion-0.30.0 → kinemotion-0.31.1}/mkdocs.yml +0 -0
  324. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/.gitignore +0 -0
  325. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/README.md +0 -0
  326. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/demos/.gitignore +0 -0
  327. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/demos/README.md +0 -0
  328. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/demos/api_demo.ipynb +0 -0
  329. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/demos/batch_processing_demo.py +0 -0
  330. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/demos/sample_data/.gitkeep +0 -0
  331. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/presentation_guide.md +0 -0
  332. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/revealjs/.gitignore +0 -0
  333. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/revealjs/Makefile +0 -0
  334. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/revealjs/README.md +0 -0
  335. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/revealjs/slides.md +0 -0
  336. {kinemotion-0.30.0 → kinemotion-0.31.1}/presentation/speaker_script.md +0 -0
  337. {kinemotion-0.30.0 → kinemotion-0.31.1}/requirements-docs.txt +0 -0
  338. {kinemotion-0.30.0 → kinemotion-0.31.1}/samples/cmjs/README.md +0 -0
  339. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/README.md +0 -0
  340. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/SCRIPTS_QUICKREF.md +0 -0
  341. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/analyze_determinism_variance.py +0 -0
  342. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/generate_test_data.py +0 -0
  343. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/plot_validation_results.py +0 -0
  344. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project/README.md +0 -0
  345. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project/add-issue.sh +0 -0
  346. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project/batch-set-fields.sh +0 -0
  347. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project/helpers.sh +0 -0
  348. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project/list.sh +0 -0
  349. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project/set-field.sh +0 -0
  350. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project/set-status.sh +0 -0
  351. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project/summary.sh +0 -0
  352. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/project.sh +0 -0
  353. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/test_determinism.sh +0 -0
  354. {kinemotion-0.30.0 → kinemotion-0.31.1}/scripts/validate_known_heights.py +0 -0
  355. {kinemotion-0.30.0 → kinemotion-0.31.1}/sonar-project.properties +0 -0
  356. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/__init__.py +0 -0
  357. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/cli.py +0 -0
  358. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/cmj/__init__.py +0 -0
  359. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/cmj/joint_angles.py +0 -0
  360. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/__init__.py +0 -0
  361. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/auto_tuning.py +0 -0
  362. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/cmj_validation_bounds.py +0 -0
  363. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/debug_overlay_utils.py +0 -0
  364. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/dropjump_validation_bounds.py +0 -0
  365. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/filtering.py +0 -0
  366. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/formatting.py +0 -0
  367. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/core/pose.py +0 -0
  368. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/dropjump/__init__.py +0 -0
  369. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/dropjump/debug_overlay.py +0 -0
  370. {kinemotion-0.30.0 → kinemotion-0.31.1}/src/kinemotion/py.typed +0 -0
  371. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/__init__.py +0 -0
  372. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_api.py +0 -0
  373. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_aspect_ratio.py +0 -0
  374. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_cli_cmj.py +0 -0
  375. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_cli_dropjump.py +0 -0
  376. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_cli_imports.py +0 -0
  377. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_cmj_physiological_bounds.py +0 -0
  378. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_contact_detection.py +0 -0
  379. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_dropjump_validation_integration.py +0 -0
  380. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_formatting.py +0 -0
  381. {kinemotion-0.30.0 → kinemotion-0.31.1}/tests/test_kinematics.py +0 -0
@@ -0,0 +1,195 @@
1
+ ---
2
+ title: Camera Perspective Analysis - 45° vs Lateral Angle Impact on Joint Angle Calculations
3
+ type: note
4
+ permalink: biomechanics/camera-perspective-analysis-45deg-vs-lateral
5
+ tags:
6
+ - camera-angle
7
+ - ankle-angle
8
+ - perspective
9
+ - validation
10
+ - issue-10
11
+ ---
12
+
13
+ # Camera Perspective Analysis: 45° vs Lateral Angle Impact on Joint Angles
14
+
15
+ **Critical Finding:** The ankle angle and triple extension algorithms currently **DO NOT account for camera viewing angle**.
16
+
17
+ ## Current Algorithm Behavior
18
+
19
+ ### Code Analysis
20
+
21
+ **File:** `src/kinemotion/cmj/joint_angles.py`
22
+
23
+ All joint angle calculations use the same approach:
24
+ - **`calculate_angle_3_points(point1, point2, point3)`** - Generic 3-point angle calculator
25
+ - Uses law of cosines: `cos(angle) = (v1 · v2) / (|v1| * |v2|)`
26
+ - Works purely on 2D pixel coordinates from MediaPipe pose landmarks
27
+ - **No camera angle correction or perspective adjustment**
28
+
29
+ ### How Angles are Calculated
30
+
31
+ 1. **Ankle angle:** foot_index → ankle → knee (3-point angle in 2D)
32
+ 2. **Knee angle:** ankle → knee → hip (3-point angle in 2D)
33
+ 3. **Hip angle:** knee → hip → shoulder (3-point angle in 2D)
34
+ 4. **Trunk tilt:** hip-to-shoulder angle relative to vertical
35
+
36
+ All calculations assume **the 2D pixel positions directly represent true joint angles** with no perspective correction.
37
+
38
+ ## The Problem: Viewing Angle Effects
39
+
40
+ ### What MediaPipe Gives Us
41
+ - 2D pixel coordinates (x, y) in normalized frame coordinates (0-1)
42
+ - Confidence scores (z) for each landmark
43
+ - **NO 3D information** (depth is estimated but not used for angle calculations)
44
+ - **NO camera intrinsic parameters** (focal length, principal point)
45
+ - **NO camera extrinsic parameters** (viewing angle relative to subject)
46
+
47
+ ### How 45° View Differs from Lateral (90°)
48
+
49
+ #### Lateral View (90° - Pure Side View)
50
+ ```
51
+ Camera ←→ Athlete
52
+
53
+ In 2D frame coordinates:
54
+ - Ankle, knee, hip aligned on Y-axis
55
+ - Joint angles in frame ≈ true anatomical angles
56
+ - Pure sagittal plane measurement
57
+ ```
58
+
59
+ #### 45° View (Between Side and Front)
60
+ ```
61
+ Athlete
62
+ ↙ 45°
63
+ Camera
64
+
65
+ In 2D frame coordinates:
66
+ - Landmarks appear rotated in frame
67
+ - Ankle position compressed/shifted due to perspective
68
+ - Joint angles in frame ≠ true anatomical angles
69
+ - Mixed sagittal + frontal plane components
70
+ ```
71
+
72
+ ### Specific Impact on Ankle Angle
73
+
74
+ **Scenario:** Athlete plantarflexes at takeoff
75
+
76
+ **Lateral (90°) View:**
77
+ ```
78
+ Expected: 80° (neutral) → 120° (plantarflex) = 40° progression
79
+ Measured: ≈ 80° → ≈ 120° = ≈ 40° ✓ CORRECT
80
+ Reason: Pure 2D angle matches anatomical angle
81
+ ```
82
+
83
+ **45° View (Current Code - NO Correction):**
84
+ ```
85
+ Expected: 80° (neutral) → 120° (plantarflex) = 40° progression
86
+ Measured: ≈ 75° → ≈ 110° = ≈ 35° ❌ UNDERESTIMATED
87
+ Reason: Perspective foreshortening compresses ankle motion
88
+ - Foot appears less plantarflexed than reality
89
+ - 3D ankle angle compressed to 2D frame coordinates
90
+ ```
91
+
92
+ ## Mathematical Basis
93
+
94
+ ### Why This Happens
95
+
96
+ When camera is at 45°:
97
+ - Athlete's foot is partially pointing away from camera
98
+ - Plantarflexion motion has components:
99
+ 1. **In-plane (visible):** The sagittal movement toward camera
100
+ 2. **Out-of-plane (not visible):** The depth component away from camera
101
+
102
+ 2D pixel angle captures only in-plane component, **missing ~15-25% of plantarflexion**.
103
+
104
+ ### Approximate Error Estimate
105
+
106
+ For a 45° camera angle viewing a plantarflexing ankle:
107
+ - **Systematic bias:** -5° to -10° (underestimation)
108
+ - **Proportional error:** -10% to -15% of true angle progression
109
+ - **Example:** True 40° progression measured as 34-36°
110
+
111
+ ## Impact on Validation
112
+
113
+ ### Issue for CMJ Ankle Angle Validation (Issue #10)
114
+
115
+ **Current target:** 30°+ ankle angle progression (80° → 120°+)
116
+
117
+ **What happens with 45° video:**
118
+ ```
119
+ If true progression is 40° with ideal lateral view:
120
+ - Measured at 45° angle: ~34-36° ✓ Still passes criterion
121
+ - But measurement is systematically biased low
122
+ - Cannot be compared directly to lateral-view reference studies
123
+ ```
124
+
125
+ **Specific risk:**
126
+ - Videos recorded at 45° may show ankle progression at edge of acceptance
127
+ - Same athlete at lateral (90°) view would show 5-10° more progression
128
+ - Inconsistent validation across different camera angles
129
+
130
+ ### Impact on Triple Extension Analysis
131
+
132
+ Less critical than ankle, but still affected:
133
+
134
+ 1. **Hip angle:** Mostly in sagittal plane - minimal 45° effect (~2-3° error)
135
+ 2. **Knee angle:** Similar to hip - ~3-5° error
136
+ 3. **Ankle angle:** Most affected - ~5-10° error (as above)
137
+ 4. **Trunk tilt:** Depends on frame orientation - ~2-5° error
138
+
139
+ ## Solutions (Not Yet Implemented)
140
+
141
+ ### Option 1: Camera Angle Correction (Recommended)
142
+ - Add camera angle parameter to analysis
143
+ - Apply 2D→3D perspective transformation
144
+ - Requires knowing camera intrinsic/extrinsic parameters
145
+ - **Effort:** Moderate (1-2 weeks)
146
+
147
+ ### Option 2: Dual-Camera Stereo (Research-Grade)
148
+ - Use Pose2Sim for 3D reconstruction
149
+ - Eliminates perspective ambiguity entirely
150
+ - **Effort:** High (requires additional infrastructure)
151
+
152
+ ### Option 3: Validation Against Lateral View
153
+ - Record same athletes with both 45° and lateral cameras
154
+ - Create correction factors empirically
155
+ - **Effort:** Medium (requires validation study)
156
+
157
+ ### Option 4: Document Limitation (Current Approach)
158
+ - Clearly state in guidelines: "Use lateral view for accurate measurements"
159
+ - Accept that 45° view is for improved visibility, not accuracy
160
+ - **Effort:** Low (documentation only)
161
+
162
+ ## Recommendation for Recording Guidelines
163
+
164
+ **Current `INSTRUCCIONES-GRABACION-CMJ-ES.md` recommends 45° angle based on:**
165
+ - Better ankle/knee visibility (40-60% vs 18-27% in lateral)
166
+ - Reduced occlusion
167
+ - Better tracking quality
168
+
169
+ **But this introduces systematic measurement bias.**
170
+
171
+ ### Choice to Make:
172
+ 1. **Accept the trade-off:** Better visibility but ~10% ankle angle underestimation
173
+ 2. **Use lateral view instead:** Pure measurements but ~30% lower landmark visibility
174
+ 3. **Use 45° with documented correction:** Requires algorithm changes
175
+
176
+ ## Code Status Summary
177
+
178
+ | Component | Status | Impact |
179
+ |-----------|--------|--------|
180
+ | `calculate_angle_3_points()` | 2D only, no perspective correction | All joint angles affected |
181
+ | `calculate_ankle_angle()` | No camera angle consideration | 5-10° systematic error at 45° |
182
+ | `calculate_triple_extension()` | Passes through angles as-is | Depends on individual angles |
183
+ | Documentation | No mention of camera angle limitations | Users unaware of bias |
184
+
185
+ ## Evidence
186
+
187
+ - **Baldinger et al. (2025):** "Influence of the Camera Viewing Angle on OpenPose Validity in Motion Analysis" - documents ~15-20% joint angle errors with suboptimal camera angles
188
+ - **Project guidelines (docs/guides/camera-setup.md):** Recommends 45° for visibility but doesn't mention measurement accuracy trade-offs
189
+
190
+ ## Action Items for Project
191
+
192
+ 1. **Clarify recording guidelines:** Choose between visibility vs accuracy trade-off
193
+ 2. **Document limitations:** If using 45°, explicitly state ±5-10° ankle angle uncertainty
194
+ 3. **Consider 3D reconstruction:** Implement stereo or other 3D methods for future research-grade analysis
195
+ 4. **Validate empirically:** Record test videos at multiple angles, compare measurements
@@ -1,10 +1,15 @@
1
- ______________________________________________________________________
2
-
3
- ## title: CMJ Physiological Bounds for Validation type: note permalink: biomechanics/cmj-physiological-bounds-for-validation
4
-
5
- # CMJ Physiological Bounds for Validation Testing
6
-
7
- ## Overview
1
+ ---
2
+ title: CMJ Physiological Bounds for Validation
3
+ type: note
4
+ permalink: biomechanics/cmj-physiological-bounds-for-validation
5
+ tags:
6
+ - cmj
7
+ - validation
8
+ - biomechanics
9
+ - bounds
10
+ ---
11
+
12
+ # CMJ Physiological Bounds for Validation
8
13
 
9
14
  This document defines realistic physiological bounds for Counter Movement Jump (CMJ) metrics used in kinemotion. These bounds prevent false positives from noise while catching real errors in video processing and phase detection.
10
15
 
@@ -28,7 +33,7 @@ From jump height formula: h = g·t²/8, therefore t = √(8h/g)
28
33
  | **Recreational Typical** | 0.40-0.65 | Untrained to moderately trained (~20-50cm jumps) |
29
34
  | **Elite Typical** | 0.65-0.95 | Trained athletes (60-90cm jumps) |
30
35
  | **Absolute Maximum** | 1.1 | Elite male athletes only (>100cm jumps) |
31
- | **Error Threshold** | \<0.08s or >1.3s | Indicates frame rate issue or detection failure |
36
+ | **Error Threshold** | <0.08s or >1.3s | Indicates frame rate issue or detection failure |
32
37
 
33
38
  ### Calculation Examples
34
39
 
@@ -46,8 +51,6 @@ From jump height formula: h = g·t²/8, therefore t = √(8h/g)
46
51
  - **Upper bound**: Human biomechanics limits maximum upward velocity to ~4.5 m/s (elite males). Using v² = 2gh: maximum jump ~103cm → t = 1.03s.
47
52
  - **Frame rate dependency**: At lower frame rates (24fps), minimum flight time increases proportionally.
48
53
 
49
- ______________________________________________________________________
50
-
51
54
  ## 2. JUMP HEIGHT (meters)
52
55
 
53
56
  ### Definition
@@ -65,7 +68,7 @@ Maximum vertical displacement during flight, calculated from flight time: h = g
65
68
  | **Trained Typical** | 0.50-0.75 | Athletes, active individuals |
66
69
  | **Elite Typical** | 0.70-1.00 | Competitive athletes, basketball/volleyball players |
67
70
  | **Absolute Maximum** | 1.15 | Genetic outliers, world-class performers |
68
- | **Error Threshold** | \<0.02m or >1.30m | Indicates detection failure or data corruption |
71
+ | **Error Threshold** | <0.02m or >1.30m | Indicates detection failure or data corruption |
69
72
 
70
73
  ### Reverse Velocity Verification
71
74
 
@@ -87,8 +90,6 @@ For independent validation, jump height should satisfy: h ≈ v_peak²/(2g)
87
90
  - **Upper bound**: Peak concentric velocity physiologically maxes at ~4.5 m/s. Even elite males rarely exceed 110cm.
88
91
  - **Gender differences**: Females typically 60-70% of male values; adjust upper bounds accordingly.
89
92
 
90
- ______________________________________________________________________
91
-
92
93
  ## 3. COUNTERMOVEMENT DEPTH (meters)
93
94
 
94
95
  ### Definition
@@ -105,7 +106,7 @@ Vertical distance traveled from standing position to lowest point of squat.
105
106
  | **Deep CMJ** | 0.45-0.70 | Trained athletes, below-parallel squat |
106
107
  | **Very Deep** | 0.65-0.90 | Tall individuals with excellent mobility |
107
108
  | **Absolute Maximum** | 1.00 | Only possible for very tall athletes (>6'2") |
108
- | **Error Threshold** | \<0.05m or >1.10m | Indicates pose tracking failure |
109
+ | **Error Threshold** | <0.05m or >1.10m | Indicates pose tracking failure |
109
110
 
110
111
  ### Correlation with Jump Height
111
112
 
@@ -121,8 +122,6 @@ Research (Nordez et al., 2009; Lees et al., 2004):
121
122
  - **Upper bound**: Human leg structure limits squat depth; >1.0m impossible without leg extension miscalculation.
122
123
  - **Athlete variation**: Tall athletes naturally deeper; short athletes naturally shallower.
123
124
 
124
- ______________________________________________________________________
125
-
126
125
  ## 4. CONTACT TIME / CONCENTRIC DURATION (seconds)
127
126
 
128
127
  ### Definition
@@ -140,7 +139,7 @@ Time from lowest point (end of eccentric phase) to takeoff (start of propulsion
140
139
  | **Slow (Untrained)** | 0.60-0.90 | Deconditioned, elderly |
141
140
  | **Very Slow** | 0.80-1.20 | Weak, injured, or controlled movement |
142
141
  | **Absolute Maximum** | 1.5 | Only in severe weakness or very elderly |
143
- | **Error Threshold** | \<0.08s or >1.80s | Indicates phase detection failure |
142
+ | **Error Threshold** | <0.08s or >1.80s | Indicates phase detection failure |
144
143
 
145
144
  ### Reactive Strength Index (RSI) Cross-Check
146
145
 
@@ -148,7 +147,7 @@ RSI = flight_time / contact_time
148
147
 
149
148
  | RSI Range | Interpretation |
150
149
  | --------- | ------------------------------------ |
151
- | \<0.3 | Error (invalid metrics) |
150
+ | <0.3 | Error (invalid metrics) |
152
151
  | 0.3-0.8 | Untrained, poor reactive strength |
153
152
  | 0.8-1.5 | Recreational, moderate RSI |
154
153
  | 1.5-2.5 | Trained athletes |
@@ -157,12 +156,10 @@ RSI = flight_time / contact_time
157
156
 
158
157
  ### Why This Range
159
158
 
160
- - **Lower bound**: Contact time \<100ms requires ~200 m/s² acceleration (7G force); only possible with extreme training + equipment assistance.
159
+ - **Lower bound**: Contact time <100ms requires ~200 m/s² acceleration (7G force); only possible with extreme training + equipment assistance.
161
160
  - **Upper bound**: Contact time >1.5s indicates incomplete squat or detection of standing phase (should have stopped at lowest point).
162
161
  - **RSI validation**: Contact time too short relative to flight time flags detection errors.
163
162
 
164
- ______________________________________________________________________
165
-
166
163
  ## 5. PEAK ECCENTRIC VELOCITY (m/s, downward)
167
164
 
168
165
  ### Definition
@@ -179,7 +176,7 @@ Maximum downward velocity during countermovement (negative values in signed velo
179
176
  | **Trained** | 1.5-2.5 | Fast, controlled eccentric |
180
177
  | **Elite** | 2.2-3.5 | Very fast eccentric phase |
181
178
  | **Absolute Maximum** | 4.0 | Extreme athletes only |
182
- | **Error Threshold** | \<0.10 m/s or >5.0 m/s | Indicates signal noise or tracking failure |
179
+ | **Error Threshold** | <0.10 m/s or >5.0 m/s | Indicates signal noise or tracking failure |
183
180
 
184
181
  ### Relationship to Countermovement Depth
185
182
 
@@ -198,8 +195,6 @@ Expected: v_eccentric = √(2g·depth)
198
195
  - **Upper bound**: Maximum possible from v² = 2gh with 1.0m depth → v ≈ 4.4 m/s.
199
196
  - **Validation**: Cross-check with: v² ≈ 2g·countermovement_depth
200
197
 
201
- ______________________________________________________________________
202
-
203
198
  ## 6. PEAK CONCENTRIC VELOCITY (m/s, upward)
204
199
 
205
200
  ### Definition
@@ -217,7 +212,7 @@ Maximum upward velocity during propulsion phase (from lowest point to takeoff).
217
212
  | **Trained** | 2.5-3.5 | Athletes, 40-70cm jumps |
218
213
  | **Elite** | 3.2-4.2 | High-level athletes, 65-90cm jumps |
219
214
  | **Absolute Maximum** | 4.8 | Only elite male athletes (>100cm jumps) |
220
- | **Error Threshold** | \<0.20 m/s or >5.5 m/s | Indicates detection error |
215
+ | **Error Threshold** | <0.20 m/s or >5.5 m/s | Indicates detection error |
221
216
 
222
217
  ### Jump Height Verification Formula
223
218
 
@@ -242,8 +237,6 @@ Independent validation: h = v_peak² / (2g)
242
237
  - **Upper bound**: Human physiology limits peak acceleration to ~10 m/s² in concentric phase over ~0.4s contact → ~4.0 m/s maximum.
243
238
  - **Age/gender factors**: Females typically 80-85% of male values; adjust accordingly.
244
239
 
245
- ______________________________________________________________________
246
-
247
240
  ## 7. TRIPLE EXTENSION ANGLES (degrees)
248
241
 
249
242
  ### Definition
@@ -258,7 +251,7 @@ Joint angles at moment of takeoff, measuring hip, knee, ankle extension.
258
251
  | **Trained Athletes** | 170-185° | Adequate extension |
259
252
  | **Recreational** | 160-175° | Acceptable but less efficient |
260
253
  | **Poor Extension** | 140-160° | Incomplete extension, weak hip power |
261
- | **Error Threshold** | \<120° or >195° | Not at takeoff or processing error |
254
+ | **Error Threshold** | <120° or >195° | Not at takeoff or processing error |
262
255
 
263
256
  ### 7.2 KNEE ANGLE
264
257
 
@@ -268,7 +261,7 @@ Joint angles at moment of takeoff, measuring hip, knee, ankle extension.
268
261
  | **Trained Athletes** | 170-188° | Good extension |
269
262
  | **Recreational** | 160-180° | Acceptable |
270
263
  | **Poor Extension** | 140-165° | Incomplete quad extension |
271
- | **Error Threshold** | \<130° or >200° | Not at takeoff or hyperextension error |
264
+ | **Error Threshold** | <130° or >200° | Not at takeoff or hyperextension error |
272
265
 
273
266
  ### 7.3 ANKLE ANGLE (plantarflexion)
274
267
 
@@ -278,7 +271,7 @@ Joint angles at moment of takeoff, measuring hip, knee, ankle extension.
278
271
  | **Trained Athletes** | 125-150° | Good plantarflexion |
279
272
  | **Recreational** | 115-140° | Acceptable |
280
273
  | **Limited Plantarflexion** | 100-120° | Poor calf involvement |
281
- | **Error Threshold** | \<90° (dorsiflexion) or >165° | Not at takeoff or tracking failure |
274
+ | **Error Threshold** | <90° (dorsiflexion) or >165° | Not at takeoff or tracking failure |
282
275
 
283
276
  **Note**: Ankle angle measurement is challenging in side-view video due to foot foreshortening. MediaPipe may miss foot/ankle details.
284
277
 
@@ -290,7 +283,7 @@ Joint angles at moment of takeoff, measuring hip, knee, ankle extension.
290
283
  | **Slight Forward** | 10-25° | Normal, healthy forward lean |
291
284
  | **Moderate Forward** | 20-35° | Acceptable, some forward lean |
292
285
  | **Excessive Forward** | 30-50° | Poor balance or off-center jump |
293
- | **Error Threshold** | \<-10° (backward) or >60° | Likely off-balance or tracking error |
286
+ | **Error Threshold** | <-10° (backward) or >60° | Likely off-balance or tracking error |
294
287
 
295
288
  ### Why These Ranges
296
289
 
@@ -299,8 +292,6 @@ Joint angles at moment of takeoff, measuring hip, knee, ankle extension.
299
292
  - **Age/training effects**: Untrained athletes show incomplete extension; elderly show marked restrictions.
300
293
  - **Video challenges**: Side view may have limited ankle visibility; front view may have poor hip detail.
301
294
 
302
- ______________________________________________________________________
303
-
304
295
  ## 8. ECCENTRIC AND CONCENTRIC DURATION (seconds)
305
296
 
306
297
  ### Definition
@@ -312,9 +303,9 @@ ______________________________________________________________________
312
303
 
313
304
  | Phase | Minimum | Recreational | Elite | Maximum | Error Threshold |
314
305
  | ------------------ | ------- | ------------ | ---------- | ------- | ----------------- |
315
- | **Eccentric** | 0.25s | 0.40-0.70s | 0.35-0.60s | 1.0s | >1.2s or \<0.20s |
316
- | **Concentric** | 0.10s | 0.40-0.70s | 0.25-0.45s | 1.5s | >1.80s or \<0.08s |
317
- | **Total Movement** | 0.35s | 0.80-1.40s | 0.60-1.05s | 2.0s | >2.2s or \<0.30s |
306
+ | **Eccentric** | 0.25s | 0.40-0.70s | 0.35-0.60s | 1.0s | >1.2s or <0.20s |
307
+ | **Concentric** | 0.10s | 0.40-0.70s | 0.25-0.45s | 1.5s | >1.80s or <0.08s |
308
+ | **Total Movement** | 0.35s | 0.80-1.40s | 0.60-1.05s | 2.0s | >2.2s or <0.30s |
318
309
 
319
310
  ### Eccentric-to-Concentric Ratio
320
311
 
@@ -329,8 +320,6 @@ ______________________________________________________________________
329
320
  - **Concentric**: Trained athletes generate power quickly; untrained take longer.
330
321
  - **Error flags**: If total time >2.2s, likely includes standing phase detection failure.
331
322
 
332
- ______________________________________________________________________
333
-
334
323
  ## 9. ATHLETE PROFILES & EXPECTED RANGES
335
324
 
336
325
  ### Profile 1: Elderly / Deconditioned
@@ -355,9 +344,7 @@ ______________________________________________________________________
355
344
 
356
345
  - Jump height ~v² / (2g): 1.2² / 19.62 ≈ 0.073m ✓ (close to 0.10-0.18m range)
357
346
  - Flight time confirmed from height: 0.10m → t = 0.286s ✓
358
- - RSI in expected range: 0.15 \< 0.25 ✓
359
-
360
- ______________________________________________________________________
347
+ - RSI in expected range: 0.15 < 0.25 ✓
361
348
 
362
349
  ### Profile 2: Recreational Athlete
363
350
 
@@ -383,8 +370,6 @@ ______________________________________________________________________
383
370
  - Flight time from 0.45m: t = √(8×0.45/9.81) = 0.604s ✓ (middle of range)
384
371
  - RSI: 0.60s / 0.50s = 1.2 ✓ (within 0.85-1.25)
385
372
 
386
- ______________________________________________________________________
387
-
388
373
  ### Profile 3: Elite Male Athlete
389
374
 
390
375
  **Scenario**: Collegiate volleyball/basketball player, highly trained
@@ -410,8 +395,6 @@ ______________________________________________________________________
410
395
  - RSI: 0.80s / 0.35s = 2.29 ✓ (within 1.85-2.80)
411
396
  - Contact time much shorter than recreational profile ✓
412
397
 
413
- ______________________________________________________________________
414
-
415
398
  ## 10. EDGE CASES & VALID ANOMALIES
416
399
 
417
400
  ### Edge Case 1: Minimal Countermovement ("Stiffer" Jump)
@@ -435,11 +418,9 @@ ______________________________________________________________________
435
418
 
436
419
  **Error if**:
437
420
 
438
- - Countermovement depth \<0.08m AND flight time >0.40s (contradictory)
421
+ - Countermovement depth <0.08m AND flight time >0.40s (contradictory)
439
422
  - No clear phase transitions (standing → squat → takeoff)
440
423
 
441
- ______________________________________________________________________
442
-
443
424
  ### Edge Case 2: Double-Bounce Pattern
444
425
 
445
426
  **Description**: Athlete makes multiple micro-bounces at lowest point before main takeoff
@@ -458,8 +439,6 @@ ______________________________________________________________________
458
439
 
459
440
  **Action**: Flag with warning "Multiple bounces detected - contact time may be artificially long"
460
441
 
461
- ______________________________________________________________________
462
-
463
442
  ### Edge Case 3: Incomplete Eccentric Phase
464
443
 
465
444
  **Description**: Athlete starts recording already in mid-squat (no standing phase detected)
@@ -478,8 +457,6 @@ ______________________________________________________________________
478
457
 
479
458
  **Note from code**: `standing_start_frame` can be None; handled in `calculate_cmj_metrics`
480
459
 
481
- ______________________________________________________________________
482
-
483
460
  ### Edge Case 4: Very Deep Squat (Extreme Flexibility)
484
461
 
485
462
  **Description**: Athlete with exceptional mobility (yoga, gymnastics background) performs very deep squat
@@ -500,8 +477,6 @@ ______________________________________________________________________
500
477
 
501
478
  **Example**: 0.70m depth with 0.80s contact → ratio = 1.14 s/m (valid)
502
479
 
503
- ______________________________________________________________________
504
-
505
480
  ### Edge Case 5: Unexpected High RSI with Low Jump Height
506
481
 
507
482
  **Description**: Athlete shows RSI >2.0 but only jumps 30cm
@@ -522,8 +497,6 @@ ______________________________________________________________________
522
497
 
523
498
  **Action**: Flag as warning "RSI appears high relative to jump height - review phase detection"
524
499
 
525
- ______________________________________________________________________
526
-
527
500
  ### Edge Case 6: High Jump Height with Shallow Countermovement
528
501
 
529
502
  **Description**: 60cm jump height with only 25cm countermovement depth
@@ -545,9 +518,7 @@ ______________________________________________________________________
545
518
 
546
519
  **Action**: Flag as error "Countermovement depth appears inconsistent with jump height; review standing position detection"
547
520
 
548
- ______________________________________________________________________
549
-
550
- ### Edge Case 7: Very Short Contact Time (\<0.15s)
521
+ ### Edge Case 7: Very Short Contact Time (<0.15s)
551
522
 
552
523
  **Description**: Contact time 0.12s with RSI = 4.5 and jump height 0.72m
553
524
 
@@ -567,8 +538,6 @@ ______________________________________________________________________
567
538
 
568
539
  **Action**: Flag as error "Contact time unusually short; suspect lowest point detection error or frame rate mismatch"
569
540
 
570
- ______________________________________________________________________
571
-
572
541
  ## 11. VALIDATION LOGIC (Pseudo-code)
573
542
 
574
543
  ```python
@@ -751,8 +720,6 @@ def validate_triple_extension(angles: dict) -> list[str]:
751
720
  return issues
752
721
  ```
753
722
 
754
- ______________________________________________________________________
755
-
756
723
  ## 12. IMPLEMENTATION RECOMMENDATIONS
757
724
 
758
725
  ### For Test Suite
@@ -763,19 +730,19 @@ ______________________________________________________________________
763
730
  - Invalid values (below/above bounds)
764
731
  - Edge cases (minimal CMJ, deep squat, etc.)
765
732
 
766
- 1. **Cross-validation tests**:
733
+ 2. **Cross-validation tests**:
767
734
 
768
735
  - Verify flight_time ↔ jump_height consistency
769
736
  - Verify peak_velocity ↔ jump_height consistency
770
737
  - Verify RSI within expected range
771
738
 
772
- 1. **Athlete profile tests**:
739
+ 3. **Athlete profile tests**:
773
740
 
774
741
  - Generate synthetic profiles matching elderly, recreational, elite
775
742
  - Verify metrics fall within expected ranges
776
743
  - Test detection with real video samples
777
744
 
778
- 1. **Edge case regression tests**:
745
+ 4. **Edge case regression tests**:
779
746
 
780
747
  - Minimal countermovement
781
748
  - Double-bounce patterns
@@ -790,26 +757,20 @@ ______________________________________________________________________
790
757
  - WARNING: Metrics valid but unusual; flag for review
791
758
  - INFO: Normal variation, no action needed
792
759
 
793
- 1. **Auto-correction opportunities**:
760
+ 2. **Auto-correction opportunities**:
794
761
 
795
762
  - If jump_height and flight_time conflict, recalculate from more reliable source
796
763
  - If contact_time seems too short but RSI reasonable, trust RSI
797
764
 
798
- 1. **Quality scoring**:
765
+ 3. **Quality scoring**:
799
766
 
800
767
  - Assign confidence score (0-100%) based on metric consistency
801
768
  - Flag low-confidence results for manual review
802
769
 
803
- ______________________________________________________________________
804
-
805
770
  ## References
806
771
 
807
772
  - **Nordez, A., Augé, T., Guével, A.** (2009). Effects of plyometric training on jump performance and energy cost. *Journal of Sports Sciences*, 27(11), 1143-1152.
808
-
809
773
  - **Lees, A., Vanrenterghem, J., De Clercq, D.** (2004). Understanding how an arm swing enhances performance in the vertical jump. *Journal of Biomechanics*, 37(12), 1929-1940.
810
-
811
774
  - **Cormie, P., McGuigan, M. R., Newton, R. U.** (2011). Developing maximal neuromuscular power: Performance characteristics of male athletes. *Sports Medicine*, 41(1), 17-38.
812
-
813
775
  - **Bogdanis, G. C.** (2012). Effects of plyometric training on muscular performance and counter-movement jumping ability. *Journal of Strength and Conditioning Research*, 26(3), 676-695.
814
-
815
776
  - **Markovic, G.** (2007). Poor relationships between strength and power qualities and high-intensity aerobic performance. *Journal of Sports Science & Medicine*, 6(1), 96-105.
@@ -1,6 +1,14 @@
1
- ______________________________________________________________________
2
-
3
- ## title: CMJ Validation Implementation Complete type: note permalink: biomechanics/cmj-validation-implementation-complete
1
+ ---
2
+ title: CMJ Validation Implementation Complete
3
+ type: note
4
+ permalink: biomechanics/cmj-validation-implementation-complete
5
+ tags:
6
+ - cmj
7
+ - validation
8
+ - implementation
9
+ - bounds
10
+ - testing
11
+ ---
4
12
 
5
13
  # CMJ Validation Implementation - Complete Delivery
6
14