kinemotion 0.75.0__py3-none-any.whl → 0.76.0__py3-none-any.whl
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.
- kinemotion/__init__.py +13 -1
- kinemotion/api.py +21 -1
- kinemotion/cli.py +2 -0
- kinemotion/squat_jump/__init__.py +5 -0
- kinemotion/squat_jump/analysis.py +342 -0
- kinemotion/squat_jump/api.py +610 -0
- kinemotion/squat_jump/cli.py +309 -0
- kinemotion/squat_jump/debug_overlay.py +215 -0
- kinemotion/squat_jump/kinematics.py +348 -0
- kinemotion/squat_jump/metrics_validator.py +446 -0
- kinemotion/squat_jump/validation_bounds.py +221 -0
- {kinemotion-0.75.0.dist-info → kinemotion-0.76.0.dist-info}/METADATA +51 -2
- {kinemotion-0.75.0.dist-info → kinemotion-0.76.0.dist-info}/RECORD +16 -8
- {kinemotion-0.75.0.dist-info → kinemotion-0.76.0.dist-info}/WHEEL +0 -0
- {kinemotion-0.75.0.dist-info → kinemotion-0.76.0.dist-info}/entry_points.txt +0 -0
- {kinemotion-0.75.0.dist-info → kinemotion-0.76.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinemotion
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.76.0
|
|
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
|
|
@@ -51,6 +51,7 @@ Description-Content-Type: text/markdown
|
|
|
51
51
|
|
|
52
52
|
- **Drop Jump**: Ground contact time, flight time, reactive strength index
|
|
53
53
|
- **Counter Movement Jump (CMJ)**: Jump height, flight time, countermovement depth, triple extension biomechanics
|
|
54
|
+
- **Squat Jump (SJ)**: Pure concentric power, force production, requires athlete mass
|
|
54
55
|
|
|
55
56
|
## Features
|
|
56
57
|
|
|
@@ -83,6 +84,14 @@ Description-Content-Type: text/markdown
|
|
|
83
84
|
- **Metrics**: Jump height, flight time, countermovement depth, eccentric/concentric durations
|
|
84
85
|
- **Validated accuracy**: 50.6cm jump (±1 frame precision)
|
|
85
86
|
|
|
87
|
+
### Squat Jump (SJ) Analysis
|
|
88
|
+
|
|
89
|
+
- **Static squat start** - pure concentric power test (no countermovement)
|
|
90
|
+
- **Power/Force calculations** - Sayers regression (R² = 0.87, \<1% error vs force plates)
|
|
91
|
+
- **Mass required** - athlete body weight needed for kinetic calculations
|
|
92
|
+
- **Metrics**: Jump height, flight time, squat hold/concentric durations, peak/mean power, peak force
|
|
93
|
+
- **Phase detection**: Squat hold → concentric → flight → landing
|
|
94
|
+
|
|
86
95
|
## ⚠️ Validation Status
|
|
87
96
|
|
|
88
97
|
**Current Status:** Pre-validation (not validated against force plates or motion capture systems)
|
|
@@ -228,7 +237,22 @@ kinemotion cmj-analyze video.mp4
|
|
|
228
237
|
kinemotion cmj-analyze video.mp4 --output debug.mp4
|
|
229
238
|
```
|
|
230
239
|
|
|
231
|
-
###
|
|
240
|
+
### Analyzing Squat Jump (SJ)
|
|
241
|
+
|
|
242
|
+
Analyzes pure concentric power production:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# Mass is required for power/force calculations
|
|
246
|
+
kinemotion sj-analyze video.mp4 --mass 75.0
|
|
247
|
+
|
|
248
|
+
# Complete analysis with all outputs
|
|
249
|
+
kinemotion sj-analyze video.mp4 --mass 75.0 \
|
|
250
|
+
--output debug.mp4 \
|
|
251
|
+
--json-output results.json \
|
|
252
|
+
--verbose
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Common Options (All Jump Types)
|
|
232
256
|
|
|
233
257
|
```bash
|
|
234
258
|
# Save metrics to JSON
|
|
@@ -390,6 +414,31 @@ metrics = process_cmj_video("video.mp4", output_video="debug.mp4")
|
|
|
390
414
|
# - Phase-coded visualization
|
|
391
415
|
```
|
|
392
416
|
|
|
417
|
+
### Squat Jump (SJ) API
|
|
418
|
+
|
|
419
|
+
```python
|
|
420
|
+
from kinemotion import process_sj_video
|
|
421
|
+
|
|
422
|
+
# Mass is required for power/force calculations
|
|
423
|
+
metrics = process_sj_video(
|
|
424
|
+
video_path="athlete_sj.mp4",
|
|
425
|
+
mass_kg=75.0, # Required: athlete body mass
|
|
426
|
+
quality="balanced",
|
|
427
|
+
verbose=True
|
|
428
|
+
)
|
|
429
|
+
|
|
430
|
+
# Access results
|
|
431
|
+
print(f"Jump height: {metrics.jump_height:.3f}m")
|
|
432
|
+
print(f"Squat hold: {metrics.squat_hold_duration*1000:.1f}ms")
|
|
433
|
+
print(f"Concentric: {metrics.concentric_duration*1000:.1f}ms")
|
|
434
|
+
|
|
435
|
+
# Power/force (only available if mass provided)
|
|
436
|
+
if metrics.peak_power:
|
|
437
|
+
print(f"Peak power: {metrics.peak_power:.0f}W")
|
|
438
|
+
print(f"Mean power: {metrics.mean_power:.0f}W")
|
|
439
|
+
print(f"Peak force: {metrics.peak_force:.0f}N")
|
|
440
|
+
```
|
|
441
|
+
|
|
393
442
|
### CSV Export Example
|
|
394
443
|
|
|
395
444
|
```python
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
kinemotion/__init__.py,sha256=
|
|
2
|
-
kinemotion/api.py,sha256=
|
|
3
|
-
kinemotion/cli.py,sha256=
|
|
1
|
+
kinemotion/__init__.py,sha256=vGZ0XeiQSiqE9aKPWbGFfB4_wDQtiOPgloytgX_dcP4,1364
|
|
2
|
+
kinemotion/api.py,sha256=2bUXUfBSGFL01xRmgOurH3bNGms0eJYwhLCf3UCOkLk,1570
|
|
3
|
+
kinemotion/cli.py,sha256=4QpXr6pU4kbIC3NjphSY5yZV7CtJI4_Ew1Rh7iGSa9s,741
|
|
4
4
|
kinemotion/core/__init__.py,sha256=E7HDsetuKTJ7EBb8ftNifJoKS8uhS4snRO7HgISyBoM,2035
|
|
5
5
|
kinemotion/core/auto_tuning.py,sha256=ZDmHJJw69wzlRkEJ8OtLPE6KV5wLHcMha1RePVRICkI,11836
|
|
6
6
|
kinemotion/core/cli_utils.py,sha256=6VA8HSnVvKaWMm7d9ahrqwFPXuRPp53s0dib1yCE7yQ,4179
|
|
@@ -43,9 +43,17 @@ kinemotion/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
43
43
|
kinemotion/models/pose_landmarker_lite.task,sha256=WZKeHR7pUodzXd2DOxnPSsRtKbx6_du_Z1PEWWkNV0o,5777746
|
|
44
44
|
kinemotion/models/rtmpose-s_simcc-body7_pt-body7-halpe26_700e-256x192-7f134165_20230605.onnx,sha256=dfZTq8kbhv8RxWiXS0HUIJNCUpxYTBN45dFIorPflEs,133
|
|
45
45
|
kinemotion/models/yolox_tiny_8xb8-300e_humanart-6f3252f9.onnx,sha256=UsutHVQ6GP3X5pCcp52EN8q7o2J3d-TnxZqlF48kY6I,133
|
|
46
|
+
kinemotion/squat_jump/__init__.py,sha256=h6ubO3BUANxqjKMdN-KtlN6m77HARAP25PLzHw9k-Lk,99
|
|
47
|
+
kinemotion/squat_jump/analysis.py,sha256=lr8C4UDVRI1fHmzMhtcsPXWlt7bNjAKS6EytIgayzTE,12497
|
|
48
|
+
kinemotion/squat_jump/api.py,sha256=YMbq2BQzB_SnZ_Z-2KnR_OO2xuua-Zg0hP29Ghbk_d4,20111
|
|
49
|
+
kinemotion/squat_jump/cli.py,sha256=09Q9O4_sHxw6QWDyPiynDQZSMixTO32NrJ5PTXTJNIk,9806
|
|
50
|
+
kinemotion/squat_jump/debug_overlay.py,sha256=tCIeE9BqCfK-RCURCOM2oqF5qgYGMWD27QWdREpeuSc,6429
|
|
51
|
+
kinemotion/squat_jump/kinematics.py,sha256=deJV1qDEn6-CLA3SxAOuuI-YDWIbEe9N8lWeZvswmgA,12231
|
|
52
|
+
kinemotion/squat_jump/metrics_validator.py,sha256=F0jycY7waDxf6RqUwBulcaKD3frD7EobykgQB-Ayluk,16106
|
|
53
|
+
kinemotion/squat_jump/validation_bounds.py,sha256=q01eQ8Eg01Y5UV3KlvZS1S9iY628OVPUwLoukHZvQOs,7276
|
|
46
54
|
kinemotion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
|
-
kinemotion-0.
|
|
48
|
-
kinemotion-0.
|
|
49
|
-
kinemotion-0.
|
|
50
|
-
kinemotion-0.
|
|
51
|
-
kinemotion-0.
|
|
55
|
+
kinemotion-0.76.0.dist-info/METADATA,sha256=S4_rnobPn-X8PmMBwe7jOoj-voa_dk0xBJsuhw15au4,27690
|
|
56
|
+
kinemotion-0.76.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
57
|
+
kinemotion-0.76.0.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
|
|
58
|
+
kinemotion-0.76.0.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
|
|
59
|
+
kinemotion-0.76.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|