kinemotion 0.25.0__tar.gz → 0.26.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 (214) hide show
  1. {kinemotion-0.25.0 → kinemotion-0.26.1}/CHANGELOG.md +21 -0
  2. {kinemotion-0.25.0 → kinemotion-0.26.1}/PKG-INFO +1 -1
  3. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/validation/determinism-test.md +5 -5
  4. kinemotion-0.26.1/docs/validation/known-height-validation.md +429 -0
  5. {kinemotion-0.25.0 → kinemotion-0.26.1}/pyproject.toml +1 -1
  6. {kinemotion-0.25.0 → kinemotion-0.26.1}/scripts/README.md +6 -6
  7. kinemotion-0.26.1/scripts/generate_test_data.py +258 -0
  8. kinemotion-0.26.1/scripts/plot_validation_results.py +431 -0
  9. kinemotion-0.26.1/scripts/validate_known_heights.py +433 -0
  10. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/api.py +15 -7
  11. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/dropjump/analysis.py +92 -34
  12. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/dropjump/kinematics.py +78 -75
  13. {kinemotion-0.25.0 → kinemotion-0.26.1}/uv.lock +1 -1
  14. {kinemotion-0.25.0 → kinemotion-0.26.1}/.dockerignore +0 -0
  15. {kinemotion-0.25.0 → kinemotion-0.26.1}/.gitattributes +0 -0
  16. {kinemotion-0.25.0 → kinemotion-0.26.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  17. {kinemotion-0.25.0 → kinemotion-0.26.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  18. {kinemotion-0.25.0 → kinemotion-0.26.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  19. {kinemotion-0.25.0 → kinemotion-0.26.1}/.github/pull_request_template.md +0 -0
  20. {kinemotion-0.25.0 → kinemotion-0.26.1}/.github/workflows/docs.yml +0 -0
  21. {kinemotion-0.25.0 → kinemotion-0.26.1}/.github/workflows/release.yml +0 -0
  22. {kinemotion-0.25.0 → kinemotion-0.26.1}/.github/workflows/test.yml +0 -0
  23. {kinemotion-0.25.0 → kinemotion-0.26.1}/.gitignore +0 -0
  24. {kinemotion-0.25.0 → kinemotion-0.26.1}/.pre-commit-config.yaml +0 -0
  25. {kinemotion-0.25.0 → kinemotion-0.26.1}/.readthedocs.yml +0 -0
  26. {kinemotion-0.25.0 → kinemotion-0.26.1}/.tool-versions +0 -0
  27. {kinemotion-0.25.0 → kinemotion-0.26.1}/CLAUDE.md +0 -0
  28. {kinemotion-0.25.0 → kinemotion-0.26.1}/CODE_OF_CONDUCT.md +0 -0
  29. {kinemotion-0.25.0 → kinemotion-0.26.1}/CONTRIBUTING.md +0 -0
  30. {kinemotion-0.25.0 → kinemotion-0.26.1}/Dockerfile +0 -0
  31. {kinemotion-0.25.0 → kinemotion-0.26.1}/GEMINI.md +0 -0
  32. {kinemotion-0.25.0 → kinemotion-0.26.1}/LICENSE +0 -0
  33. {kinemotion-0.25.0 → kinemotion-0.26.1}/README.md +0 -0
  34. {kinemotion-0.25.0 → kinemotion-0.26.1}/SECURITY.md +0 -0
  35. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/README.md +0 -0
  36. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/api/cmj.md +0 -0
  37. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/api/core.md +0 -0
  38. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/api/dropjump.md +0 -0
  39. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/api/overview.md +0 -0
  40. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/development/errors-findings.md +0 -0
  41. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/development/testing.md +0 -0
  42. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/development/type-hints.md +0 -0
  43. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/development/validation-plan.md +0 -0
  44. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/development/validation-roadmap.md +0 -0
  45. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/development/wallball-norep-detection.md +0 -0
  46. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/guides/bulk-processing.md +0 -0
  47. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/guides/camera-setup.md +0 -0
  48. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/guides/cmj-guide.md +0 -0
  49. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/index.md +0 -0
  50. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/reference/json-output-format.md +0 -0
  51. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/reference/json-structure-comparison.md +0 -0
  52. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/reference/parameters.md +0 -0
  53. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/reference/pose-systems.md +0 -0
  54. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/paper-downloader/HOW-TO-FIND-DOIS.md +0 -0
  55. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/paper-downloader/README.md +0 -0
  56. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/paper-downloader/dois.txt +0 -0
  57. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/paper-downloader/download.py +0 -0
  58. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/paper-downloader/pyproject.toml +0 -0
  59. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/paper-downloader/uv.lock +0 -0
  60. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/sports-biomechanics-pose-estimation.md +0 -0
  61. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/MANUAL-DOWNLOAD-GUIDE.md +0 -0
  62. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/README.md +0 -0
  63. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/convert_pdfs.py +0 -0
  64. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.md +0 -0
  65. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.md +0 -0
  66. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.md +0 -0
  67. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.md +0 -0
  68. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/athlete-monitoring/2018_Ward_Putting-i-in-Team.md +0 -0
  69. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.md +0 -0
  70. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.md +0 -0
  71. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.md +0 -0
  72. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.md +0 -0
  73. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.md +0 -0
  74. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.md +0 -0
  75. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.md +0 -0
  76. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.md +0 -0
  77. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.md +0 -0
  78. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.md +0 -0
  79. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.md +0 -0
  80. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.md +0 -0
  81. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.md +0 -0
  82. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/jump-performance/2011_Harper_10-to-5-Jump-Test.md +0 -0
  83. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.md +0 -0
  84. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/jump-performance/2014_Samozino_FV-Imbalance.md +0 -0
  85. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.md +0 -0
  86. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.md +0 -0
  87. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.md +0 -0
  88. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/jump-performance/2022_Wells_Golf-Clubhead-CMJ.md +0 -0
  89. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.md +0 -0
  90. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.md +0 -0
  91. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.md +0 -0
  92. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/running-biomechanics/2016_Moore_Economical-Running-Technique.md +0 -0
  93. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.md +0 -0
  94. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.md +0 -0
  95. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.md +0 -0
  96. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.md +0 -0
  97. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.md +0 -0
  98. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/smartphone-technology/2022_Bishop_MyJumpLab-Validation.md +0 -0
  99. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.md +0 -0
  100. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.md +0 -0
  101. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.md +0 -0
  102. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.md +0 -0
  103. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.md +0 -0
  104. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/markdown/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.md +0 -0
  105. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/online-references-for-papers.md +0 -0
  106. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2001_Foster_Session-RPE-Training-Monitoring.pdf +0 -0
  107. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2015_Buchheit_GPS-Accelerometers-Stride-Stiffness.pdf +0 -0
  108. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Flatt_HRV-Recovery-Swimmers.pdf +0 -0
  109. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Saw_Training-Camps-Monitoring.pdf +0 -0
  110. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/athlete-monitoring/2018_Ward_Putting-i-in-Team.pdf +0 -0
  111. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2011_Petersen_Nordic-Hamstring-Prevention.pdf +0 -0
  112. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2011_Wilk_Shoulder-GIRD-Baseball-Pitchers.pdf +0 -0
  113. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2012_Hewit_Multidirectional-Leg-Asymmetry.pdf +0 -0
  114. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Ford_Hip-Neuromuscular-Exercise-Valgus.pdf +0 -0
  115. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Mosler_Hip-Groin-Pain-Factors.pdf +0 -0
  116. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2015_Sconce_Nordic-Hamstring-Validity.pdf +0 -0
  117. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2016_Mendez-Villanueva_Hamstring-MRI-Regional.pdf +0 -0
  118. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2016_Read_Youth-Soccer-Injury-Risk.pdf +0 -0
  119. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mason-Mackay_Ankle-Dorsiflexion-Landing.pdf +0 -0
  120. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2017_Mendiguchia_Hamstring-Treatment-Algorithm.pdf +0 -0
  121. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2018_Balsalobre-Fernandez_Ankle-Dorsiflexion-App.pdf +0 -0
  122. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2018_Bramah_Pathological-Gait-Running-Injuries.pdf +0 -0
  123. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/injury-prevention/2020_Fidai_Fatigue-Knee-Valgus-Youth.pdf +0 -0
  124. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/jump-performance/2011_Harper_10-to-5-Jump-Test.pdf +0 -0
  125. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/jump-performance/2012_Samozino_Optimal-Force-Velocity-Profile.pdf +0 -0
  126. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/jump-performance/2014_Samozino_FV-Imbalance.pdf +0 -0
  127. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/jump-performance/2016_Jimenez-Reyes_Force-Velocity-Training.pdf +0 -0
  128. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/jump-performance/2016_Morin-Samozino_Power-Force-Velocity-Profiles.pdf +0 -0
  129. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/jump-performance/2018_Garcia-Ramos_Two-Point-Method-Optimization.pdf +0 -0
  130. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/jump-performance/2022_Wells_Golf-Clubhead-CMJ.pdf +0 -0
  131. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/running-biomechanics/2005_Morin_Running-Stiffness-Measurement.pdf +0 -0
  132. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/running-biomechanics/2015_Balsalobre-Fernandez_Strength-Training-Running-Economy.pdf +0 -0
  133. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Balsalobre-Fernandez_iPhone-Running-Mechanics.pdf +0 -0
  134. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/running-biomechanics/2016_Moore_Economical-Running-Technique.pdf +0 -0
  135. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Filter_Curve-Sprint-Test-Soccer.pdf +0 -0
  136. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/running-biomechanics/2020_Harper_Horizontal-Deceleration-Radar.pdf +0 -0
  137. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/running-biomechanics/2021_vanOeveren_Running-Biomechanics-Synthesis.pdf +0 -0
  138. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/running-biomechanics/2024_Bramah_Sprint-Mechanics-Assessment-Score.pdf +0 -0
  139. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/smartphone-technology/2015_Balsalobre-Fernandez_iPhone-Vertical-Jump.pdf +0 -0
  140. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/smartphone-technology/2022_Bishop_MyJumpLab-Validation.pdf +0 -0
  141. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/velocity-based-training/2011_Jidovtseff_Load-Velocity-1RM-Prediction.pdf +0 -0
  142. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Conceicao_Movement-Velocity-Lower-Limb.pdf +0 -0
  143. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/velocity-based-training/2016_Pareja-Blanco_Velocity-Loss-Training.pdf +0 -0
  144. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/velocity-based-training/2017_Balsalobre-Fernandez_Barbell-Velocity-1RM.pdf +0 -0
  145. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/velocity-based-training/2020_Balsalobre-Fernandez_Barbell-Trajectory-Snatch.pdf +0 -0
  146. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/research/thirdparty/pdfs/velocity-based-training/2023_Balsalobre-Fernandez_AI-Barbell-Velocity.pdf +0 -0
  147. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/technical/framerate.md +0 -0
  148. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/technical/implementation-details.md +0 -0
  149. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/technical/imu-metadata.md +0 -0
  150. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/technical/real-time-analysis.md +0 -0
  151. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/technical/triple-extension.md +0 -0
  152. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/translations/es/camera-setup.md +0 -0
  153. {kinemotion-0.25.0 → kinemotion-0.26.1}/docs/validation-status.md +0 -0
  154. {kinemotion-0.25.0 → kinemotion-0.26.1}/examples/bulk/README.md +0 -0
  155. {kinemotion-0.25.0 → kinemotion-0.26.1}/examples/bulk/bulk_processing.py +0 -0
  156. {kinemotion-0.25.0 → kinemotion-0.26.1}/examples/bulk/simple_example.py +0 -0
  157. {kinemotion-0.25.0 → kinemotion-0.26.1}/examples/programmatic_usage.py +0 -0
  158. {kinemotion-0.25.0 → kinemotion-0.26.1}/mkdocs.yml +0 -0
  159. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/.gitignore +0 -0
  160. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/README.md +0 -0
  161. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/demos/.gitignore +0 -0
  162. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/demos/README.md +0 -0
  163. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/demos/api_demo.ipynb +0 -0
  164. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/demos/batch_processing_demo.py +0 -0
  165. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/demos/sample_data/.gitkeep +0 -0
  166. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/presentation_guide.md +0 -0
  167. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/revealjs/.gitignore +0 -0
  168. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/revealjs/Makefile +0 -0
  169. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/revealjs/README.md +0 -0
  170. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/revealjs/slides.md +0 -0
  171. {kinemotion-0.25.0 → kinemotion-0.26.1}/presentation/speaker_script.md +0 -0
  172. {kinemotion-0.25.0 → kinemotion-0.26.1}/requirements-docs.txt +0 -0
  173. {kinemotion-0.25.0 → kinemotion-0.26.1}/samples/cmjs/README.md +0 -0
  174. {kinemotion-0.25.0 → kinemotion-0.26.1}/scripts/analyze_determinism_variance.py +0 -0
  175. {kinemotion-0.25.0 → kinemotion-0.26.1}/scripts/test_determinism.sh +0 -0
  176. {kinemotion-0.25.0 → kinemotion-0.26.1}/sonar-project.properties +0 -0
  177. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/__init__.py +0 -0
  178. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/cli.py +0 -0
  179. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/cmj/__init__.py +0 -0
  180. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/cmj/analysis.py +0 -0
  181. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/cmj/cli.py +0 -0
  182. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/cmj/debug_overlay.py +0 -0
  183. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/cmj/joint_angles.py +0 -0
  184. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/cmj/kinematics.py +0 -0
  185. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/__init__.py +0 -0
  186. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/auto_tuning.py +0 -0
  187. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/cli_utils.py +0 -0
  188. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/debug_overlay_utils.py +0 -0
  189. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/filtering.py +0 -0
  190. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/metadata.py +0 -0
  191. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/pose.py +0 -0
  192. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/quality.py +0 -0
  193. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/smoothing.py +0 -0
  194. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/core/video_io.py +0 -0
  195. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/dropjump/__init__.py +0 -0
  196. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/dropjump/cli.py +0 -0
  197. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/dropjump/debug_overlay.py +0 -0
  198. {kinemotion-0.25.0 → kinemotion-0.26.1}/src/kinemotion/py.typed +0 -0
  199. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/__init__.py +0 -0
  200. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/core/test_quality.py +0 -0
  201. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_adaptive_threshold.py +0 -0
  202. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_api.py +0 -0
  203. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_aspect_ratio.py +0 -0
  204. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_cli_cmj.py +0 -0
  205. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_cli_dropjump.py +0 -0
  206. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_cli_imports.py +0 -0
  207. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_cmj_analysis.py +0 -0
  208. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_cmj_kinematics.py +0 -0
  209. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_com_estimation.py +0 -0
  210. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_contact_detection.py +0 -0
  211. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_filtering.py +0 -0
  212. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_joint_angles.py +0 -0
  213. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_kinematics.py +0 -0
  214. {kinemotion-0.25.0 → kinemotion-0.26.1}/tests/test_polyorder.py +0 -0
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  <!-- version list -->
9
9
 
10
+ ## v0.26.1 (2025-11-14)
11
+
12
+ ### Bug Fixes
13
+
14
+ - Reduce cognitive complexity in ground contact detection and API
15
+ ([`57f0424`](https://github.com/feniix/kinemotion/commit/57f0424043e4f15540851157220133e7361213a1))
16
+
17
+
18
+ ## v0.26.0 (2025-11-14)
19
+
20
+ ### Features
21
+
22
+ - Implement known height validation (Task 1.4)
23
+ ([`6f9dbf9`](https://github.com/feniix/kinemotion/commit/6f9dbf9a78f073e02593067280ee0661fd2f2545))
24
+
25
+ ### Refactoring
26
+
27
+ - Reduce cognitive complexity in DropJumpMetrics.to_dict() from 17 to 3
28
+ ([`1f6c99b`](https://github.com/feniix/kinemotion/commit/1f6c99b11979b6d336d14c329f2409be0ebbc6db))
29
+
30
+
10
31
  ## v0.25.0 (2025-11-14)
11
32
 
12
33
  ### Documentation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kinemotion
3
- Version: 0.25.0
3
+ Version: 0.26.1
4
4
  Summary: Video-based kinematic analysis for athletic performance
5
5
  Project-URL: Homepage, https://github.com/feniix/kinemotion
6
6
  Project-URL: Repository, https://github.com/feniix/kinemotion
@@ -98,7 +98,7 @@ ______________________________________________________________________
98
98
 
99
99
  ### Success Output
100
100
 
101
- ```
101
+ ```text
102
102
  Comparing 100 result files...
103
103
  ============================================================
104
104
  ✅ SUCCESS: All 100 runs produced identical results
@@ -116,7 +116,7 @@ This means:
116
116
 
117
117
  ### Variance Analysis
118
118
 
119
- ```
119
+ ```text
120
120
  Jump Height (m):
121
121
  Mean: 0.4540739478
122
122
  Std: 0.000000000000000
@@ -213,19 +213,19 @@ ______________________________________________________________________
213
213
 
214
214
  ### Common Issues and Fixes
215
215
 
216
- **Issue: Timestamps in metadata vary**
216
+ ### Issue: Timestamps in metadata vary
217
217
 
218
218
  - **Expected!** Processing time and timestamp SHOULD vary
219
219
  - **Not a problem** - these are metadata, not measurements
220
220
  - **Fix:** Exclude these from comparison or accept variance
221
221
 
222
- **Issue: Small floating point differences**
222
+ ### Issue: Small floating point differences
223
223
 
224
224
  - **Acceptable** if std \< 1e-10
225
225
  - **Cause:** Floating point arithmetic order
226
226
  - **Fix:** Not needed, this is normal
227
227
 
228
- **Issue: Large variance in measurements**
228
+ ### Issue: Large variance in measurements
229
229
 
230
230
  - **Problem!** Algorithm is non-deterministic
231
231
  - **Fix:** Debug and fix before proceeding
@@ -0,0 +1,429 @@
1
+ # Known Height Validation
2
+
3
+ **Status:** Protocol Documentation (Pre-testing)
4
+ **Updated:** 2025-11-14
5
+ **Type:** Physics-based validation without laboratory equipment
6
+
7
+ ## Overview
8
+
9
+ This validation protocol tests kinemotion's timing accuracy by comparing measured flight times against theoretical predictions from physics equations. By dropping objects from measured heights, we can validate the algorithm's ability to measure flight time correctly without access to force plates or motion capture systems.
10
+
11
+ **Key Principle:** For a freely falling object, theoretical flight time can be calculated precisely:
12
+
13
+ ```text
14
+ t = √(2h/g)
15
+
16
+ where:
17
+ t = flight time (seconds)
18
+ h = drop height (meters)
19
+ g = gravitational acceleration (9.81 m/s²)
20
+ ```
21
+
22
+ ## Test Protocol
23
+
24
+ ### Equipment Required
25
+
26
+ - Basketball, medicine ball, or similar object
27
+ - Measuring tape (minimum 2m)
28
+ - Camera capable of 60fps recording (smartphone acceptable)
29
+ - Tripod or stable mount
30
+ - Markers/tape for marking heights
31
+
32
+ ### Test Setup
33
+
34
+ 1. **Select drop heights:** 0.5m, 1.0m, 1.5m
35
+
36
+ - Recommended: Create test rig with marked heights on wall
37
+ - Use measuring tape to verify exact heights
38
+
39
+ 1. **Camera positioning:**
40
+
41
+ - Mount camera on tripod at 60fps or higher
42
+ - Position to capture full drop trajectory
43
+ - Ensure consistent distance and angle for all drops
44
+ - Adequate lighting (consistent throughout)
45
+
46
+ 1. **Drop execution:**
47
+
48
+ - Position ball at marked height
49
+ - Release (don't throw) from rest
50
+ - Ball should drop vertically
51
+ - Ensure complete capture from release to landing
52
+
53
+ ### Video Filename Format
54
+
55
+ Videos must follow this naming convention for automatic height extraction:
56
+
57
+ ```text
58
+ drop_[HEIGHT]m_run[NUMBER].mp4
59
+ ```
60
+
61
+ **Examples:**
62
+
63
+ - `drop_0.5m_run1.mp4` - 0.5m drop, first repetition
64
+ - `drop_1.0m_run2.mp4` - 1.0m drop, second repetition
65
+ - `drop_1.5m_run3.mp4` - 1.5m drop, third repetition
66
+
67
+ Minimum: 10 drops per height (30 total videos)
68
+ Recommended: 15 drops per height (45 total videos)
69
+
70
+ ### Expected Theoretical Values
71
+
72
+ | Height (m) | Theoretical Flight Time (s) |
73
+ | ---------- | --------------------------- |
74
+ | 0.50 | 0.319 |
75
+ | 1.00 | 0.452 |
76
+ | 1.50 | 0.553 |
77
+
78
+ ## Analysis
79
+
80
+ ### Running Validation Script
81
+
82
+ ```bash
83
+ # Validate all videos in default directory
84
+ python scripts/validate_known_heights.py
85
+
86
+ # Validate custom directory
87
+ python scripts/validate_known_heights.py --videos-dir data/my_drops
88
+
89
+ # Save results as JSON
90
+ python scripts/validate_known_heights.py --output results.json
91
+
92
+ # Create visualizations
93
+ python scripts/plot_validation_results.py results.json --output-dir plots/
94
+ ```
95
+
96
+ ### Script Outputs
97
+
98
+ **Console Output:**
99
+
100
+ - Per-video: measured vs theoretical flight times
101
+ - Error in milliseconds and percent
102
+ - Confidence assessment per video
103
+ - Summary statistics
104
+
105
+ **JSON Output** (with `--output`):
106
+
107
+ ```json
108
+ {
109
+ "summary": {
110
+ "total_videos": 30,
111
+ "mae_ms": 8.45,
112
+ "rmse_ms": 10.2,
113
+ "bias_ms": 2.1,
114
+ "correlation": 0.9987,
115
+ "pass_mae": true,
116
+ "pass_rmse": true,
117
+ "pass_correlation": true
118
+ },
119
+ "results": [
120
+ {
121
+ "video": "drop_0.5m_run1.mp4",
122
+ "true_height_m": 0.5,
123
+ "measured_flight_time_s": 0.321,
124
+ "theoretical_flight_time_s": 0.319,
125
+ "absolute_error_ms": 2.0,
126
+ "percent_error": 0.63,
127
+ "confidence": "high"
128
+ }
129
+ ]
130
+ }
131
+ ```
132
+
133
+ **Visualization Output:**
134
+
135
+ - `validation_measured_vs_theoretical.png` - Scatter plot with fit line
136
+ - `validation_residuals.png` - Residual distribution
137
+ - `validation_bland_altman.png` - Agreement analysis
138
+
139
+ ## Success Criteria
140
+
141
+ ### Primary Metrics
142
+
143
+ | Metric | Threshold | Rationale |
144
+ | ----------------------------- | --------- | ------------------------------------ |
145
+ | Mean Absolute Error (MAE) | \< 20ms | Acceptable for 30-60fps video |
146
+ | Root Mean Square Error (RMSE) | \< 30ms | Accounts for larger outliers |
147
+ | Correlation (r) | > 0.99 | Strong linear relationship |
148
+ | Systematic Bias | \< 5ms | No consistent under/over-measurement |
149
+
150
+ ### Confidence Levels
151
+
152
+ - **High:** Error \< 10ms → reliable measurement
153
+ - **Medium:** Error 10-20ms → acceptable, note in results
154
+ - **Low:** Error > 20ms → investigate cause
155
+
156
+ ## Interpretation
157
+
158
+ ### What This Validates
159
+
160
+ ✅ **Validates:**
161
+
162
+ - Kinemotion accurately measures flight time
163
+ - Algorithm correctly identifies takeoff and landing frames
164
+ - Timing accuracy at different heights
165
+ - Consistency across multiple runs
166
+ - Algorithm determinism (no random variation)
167
+
168
+ ❌ **Does NOT validate:**
169
+
170
+ - Absolute accuracy against force plates (gold standard)
171
+ - Jump height calculations (depends on flight time + other factors)
172
+ - Countermovement or landing dynamics
173
+ - Performance suitability for research publications
174
+
175
+ ### Common Causes of Error
176
+
177
+ **Systematic Bias (consistent over/under-measurement):**
178
+
179
+ - Incorrect frame rate in video file metadata
180
+ - Systematic tracking delay from MediaPipe
181
+ - Lighting artifacts affecting frame detection
182
+
183
+ **Random Error (variable error across videos):**
184
+
185
+ - Inconsistent lighting conditions
186
+ - Ball not dropping vertically
187
+ - Video compression artifacts
188
+ - Poor tracking on landing frame
189
+
190
+ **Large Errors (> 20ms):**
191
+
192
+ - Low frame rate (\< 30fps) - insufficient temporal resolution
193
+ - Video recording at different frame rate than specified
194
+ - Ball bouncing or multiple contact points
195
+ - Occlusion during flight
196
+
197
+ ## Data Collection Recommendations
198
+
199
+ ### Best Practices
200
+
201
+ 1. **Lighting:**
202
+
203
+ - Use consistent, diffuse lighting
204
+ - Avoid shadows on ball or background
205
+ - Avoid reflective backgrounds
206
+
207
+ 1. **Camera Setup:**
208
+
209
+ - Use 60fps or higher
210
+ - Verify actual frame rate in recording properties
211
+ - Use manual focus (avoid autofocus hunting)
212
+ - High contrast background (ball visibility)
213
+
214
+ 1. **Drop Execution:**
215
+
216
+ - Release from rest (no initial velocity)
217
+ - Ensure ball falls vertically (no rotation)
218
+ - Allow complete impact capture (don't cut short)
219
+ - Repeat consistently across all heights
220
+
221
+ 1. **Quality Control:**
222
+
223
+ - Check each video for:
224
+ - Clear ball visibility throughout
225
+ - No compression artifacts
226
+ - Complete trajectory capture
227
+ - Adequate lighting
228
+
229
+ ### Problematic Videos
230
+
231
+ Exclude videos with:
232
+
233
+ - Ball not visible for portion of flight
234
+ - Multiple bounces before landing
235
+ - Partial frame capture
236
+ - Extreme motion blur
237
+ - Inconsistent lighting changes
238
+
239
+ ## Expected Results
240
+
241
+ ### Typical Performance
242
+
243
+ For properly conducted testing with 60fps video:
244
+
245
+ ```text
246
+ Sample Results (30 drops):
247
+ - MAE: 6-12ms
248
+ - RMSE: 8-15ms
249
+ - Bias: -2 to +3ms
250
+ - Correlation: > 0.998
251
+ - 90% of measurements: high confidence
252
+ ```
253
+
254
+ ### Pass/Fail Criteria
255
+
256
+ **PASS:** All three criteria met:
257
+
258
+ - ✅ MAE \< 20ms
259
+ - ✅ RMSE \< 30ms
260
+ - ✅ Correlation > 0.99
261
+
262
+ **FAIL:** Any criterion not met
263
+
264
+ - ❌ Investigate cause
265
+ - ❌ Check video quality
266
+ - ❌ Verify frame rate
267
+ - ❌ Review setup
268
+
269
+ ## Troubleshooting
270
+
271
+ ### High Error Rate
272
+
273
+ **Problem:** Most measurements have errors > 20ms
274
+
275
+ **Possible Causes:**
276
+
277
+ 1. **Low frame rate** - Most common
278
+
279
+ - Solution: Use 60fps minimum (120fps ideal)
280
+ - Verify: Check video properties
281
+
282
+ 1. **Landing detection issues** - Ball bounces or unclear contact
283
+
284
+ - Solution: Ensure ball lands on dark/uniform background
285
+ - Solution: Check for motion blur
286
+
287
+ 1. **Lighting problems** - Poor ball visibility
288
+
289
+ - Solution: Increase lighting consistency
290
+ - Solution: Use high-contrast background
291
+
292
+ **Diagnostic Steps:**
293
+
294
+ - Manually verify 1-2 videos with frame counter
295
+ - Check if error is systematic (always early/late) or random
296
+ - Compare high-error vs low-error videos for differences
297
+
298
+ ### Bias Present (Consistent Offset)
299
+
300
+ **Problem:** Errors consistently positive or negative
301
+
302
+ **Examples:**
303
+
304
+ - Always 8ms too fast → bias = -8ms
305
+ - Always 5ms too slow → bias = +5ms
306
+
307
+ **Causes:**
308
+
309
+ 1. Frame rate metadata incorrect (camera reports 60fps, actually 59.7fps)
310
+ 1. Systematic delay in takeoff/landing detection
311
+ 1. Video processing lag
312
+
313
+ **Solutions:**
314
+
315
+ - Verify actual frame rate with: `ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of default=noprint_wrappers=1:nokey=1:separator=/ video.mp4`
316
+ - If bias > 5ms, investigate algorithm parameters
317
+ - Document bias for future corrections
318
+
319
+ ### Correlation Low (\< 0.99)
320
+
321
+ **Problem:** Error increases with height (or height-independent outliers)
322
+
323
+ **Causes:**
324
+
325
+ 1. Tracking degradation at different heights
326
+ 1. Height-dependent lighting changes
327
+ 1. Camera angle effects
328
+ 1. Incomplete test data
329
+
330
+ **Solutions:**
331
+
332
+ - Verify even lighting across all heights
333
+ - Check that camera angle is perpendicular to drop
334
+ - Review and potentially exclude outlier videos
335
+ - Ensure minimum 30 videos per condition
336
+
337
+ ## Next Steps
338
+
339
+ ### After Validation
340
+
341
+ If validation **PASSES**:
342
+
343
+ - Document results in project
344
+ - Update validation status with "Known Height Validation: PASSED"
345
+ - Reference in README
346
+ - Use as baseline for future algorithm changes
347
+
348
+ If validation **FAILS**:
349
+
350
+ 1. Investigate specific cause (see Troubleshooting)
351
+ 1. Collect additional test videos addressing identified issue
352
+ 1. Retest with improvements
353
+ 1. Document what was changed and why
354
+
355
+ ### Integration with Broader Validation
356
+
357
+ This test is **Task 1.4** in the validation roadmap.
358
+
359
+ **Next Task (1.5):** Parameter Sensitivity Report
360
+
361
+ - Systematic testing of algorithm parameters
362
+ - Identify which parameters affect timing measurement
363
+ - Provide tuning guidance for different use cases
364
+
365
+ **Future Tasks:**
366
+
367
+ - Manual frame selection comparison (vs smartphone app)
368
+ - Multi-session reliability study
369
+ - Environmental condition testing
370
+
371
+ ## References
372
+
373
+ ### Physics Formulas
374
+
375
+ **Free fall from rest:**
376
+
377
+ - Position: `h = 0.5 * g * t²`
378
+ - Velocity: `v = g * t`
379
+ - Time to fall height h: `t = √(2h/g)`
380
+
381
+ **Constants:**
382
+
383
+ - g = 9.81 m/s² (use 9.8 m/s² if more precision needed: 9.807 m/s²)
384
+
385
+ ### Related Documentation
386
+
387
+ - `docs/validation-status.md` - Overall validation status
388
+ - `docs/development/validation-roadmap.md` - Full validation roadmap
389
+ - `scripts/validate_known_heights.py` - Main validation script
390
+ - `scripts/plot_validation_results.py` - Visualization script
391
+
392
+ ## Appendix: Manual Frame Analysis
393
+
394
+ ### Verifying Results Manually
395
+
396
+ If you want to manually verify a video:
397
+
398
+ 1. Open video in frame-by-frame capable player (VLC, FFmpeg)
399
+ 1. Find first frame where ball is in motion (takeoff)
400
+ 1. Find first frame where ball contacts ground (landing)
401
+ 1. Count frames between takeoff and landing
402
+ 1. Divide by frame rate: `flight_time = frame_count / fps`
403
+
404
+ **Example:**
405
+
406
+ - Takeoff frame: 120
407
+ - Landing frame: 147
408
+ - Frame count: 147 - 120 = 27 frames
409
+ - At 60fps: 27 / 60 = 0.45 seconds
410
+
411
+ **Compare to kinemotion output:**
412
+
413
+ - If kinemotion reports 0.45s → correct ✅
414
+ - If kinemotion reports 0.48s → investigate (28 frames detected)
415
+ - If kinemotion reports 0.42s → investigate (25 frames detected)
416
+
417
+ This manual verification is valuable for:
418
+
419
+ - Understanding algorithm behavior
420
+ - Identifying systematic detection errors
421
+ - Training eye for frame-level accuracy
422
+
423
+ ## Questions & Feedback
424
+
425
+ For issues, questions, or suggestions:
426
+
427
+ - Check `docs/validation/known-height-validation.md` (this file)
428
+ - Review script output and logs
429
+ - See `docs/validation-status.md` for current validation state
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kinemotion"
3
- version = "0.25.0"
3
+ version = "0.26.1"
4
4
  description = "Video-based kinematic analysis for athletic performance"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10,<3.13"
@@ -27,7 +27,7 @@ ______________________________________________________________________
27
27
 
28
28
  **Expected result:**
29
29
 
30
- ```
30
+ ```text
31
31
  ✅ SUCCESS: All 100 runs produced identical results
32
32
  Algorithm is DETERMINISTIC!
33
33
  ```
@@ -38,7 +38,7 @@ ______________________________________________________________________
38
38
 
39
39
  ### `test_determinism.sh`
40
40
 
41
- **Test-retest determinism validation**
41
+ #### Test-retest determinism validation
42
42
 
43
43
  - Runs same video 100 times
44
44
  - Uses batch processing (realistic usage)
@@ -55,7 +55,7 @@ ______________________________________________________________________
55
55
 
56
56
  ### `analyze_determinism_variance.py`
57
57
 
58
- **Detailed variance analysis**
58
+ #### Detailed variance analysis
59
59
 
60
60
  - Calculates mean, std, range for all metrics
61
61
  - Identifies which fields vary (if any)
@@ -65,7 +65,7 @@ ______________________________________________________________________
65
65
 
66
66
  **Output example:**
67
67
 
68
- ```
68
+ ```text
69
69
  Jump Height (m):
70
70
  Mean: 0.4540739478
71
71
  Std: 0.000000000000000
@@ -93,7 +93,7 @@ ______________________________________________________________________
93
93
 
94
94
  ## Validation Workflow
95
95
 
96
- ```
96
+ ```text
97
97
  1. Test Determinism ← ./scripts/test_determinism.sh
98
98
  ↓ (if pass)
99
99
  2. Known Heights ← ./scripts/test_known_heights.py (future)
@@ -125,7 +125,7 @@ ______________________________________________________________________
125
125
 
126
126
  Validation data stored in `data/` (gitignored):
127
127
 
128
- ```
128
+ ```text
129
129
  data/
130
130
  ├── determinism_test/
131
131
  │ ├── videos/ # 100 symlinks to test video