kinemotion 0.50.1__py3-none-any.whl → 0.51.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.
Potentially problematic release.
This version of kinemotion might be problematic. Click here for more details.
- kinemotion/api.py +17 -1
- kinemotion/core/smoothing.py +18 -1
- kinemotion/core/validation.py +6 -13
- {kinemotion-0.50.1.dist-info → kinemotion-0.51.0.dist-info}/METADATA +1 -1
- {kinemotion-0.50.1.dist-info → kinemotion-0.51.0.dist-info}/RECORD +8 -8
- {kinemotion-0.50.1.dist-info → kinemotion-0.51.0.dist-info}/WHEEL +0 -0
- {kinemotion-0.50.1.dist-info → kinemotion-0.51.0.dist-info}/entry_points.txt +0 -0
- {kinemotion-0.50.1.dist-info → kinemotion-0.51.0.dist-info}/licenses/LICENSE +0 -0
kinemotion/api.py
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
"""Public API for programmatic use of kinemotion analysis.
|
|
2
2
|
|
|
3
|
-
This module provides a unified interface for both drop jump and
|
|
3
|
+
This module provides a unified interface for both drop jump and counter-movement
|
|
4
|
+
jump (CMJ) video analysis. Users can import analysis functions and configuration
|
|
5
|
+
classes directly from this module.
|
|
6
|
+
|
|
7
|
+
Supported jump analysis types:
|
|
8
|
+
- Drop jump (DJ): Ground contact time, reactive strength index (RSI)
|
|
9
|
+
- Counter-movement jump (CMJ): Jump height, flight time, countermovement depth
|
|
10
|
+
|
|
4
11
|
The actual implementations have been moved to their respective submodules:
|
|
5
12
|
- Drop jump: kinemotion.dropjump.api
|
|
6
13
|
- CMJ: kinemotion.cmj.api
|
|
14
|
+
|
|
15
|
+
Example:
|
|
16
|
+
from kinemotion import process_dropjump_video, process_cmj_video
|
|
17
|
+
|
|
18
|
+
# Analyze drop jump
|
|
19
|
+
dj_result = process_dropjump_video("video.mp4", quality="balanced")
|
|
20
|
+
|
|
21
|
+
# Analyze CMJ
|
|
22
|
+
cmj_result = process_cmj_video("video.mp4", quality="balanced")
|
|
7
23
|
"""
|
|
8
24
|
|
|
9
25
|
# CMJ API
|
kinemotion/core/smoothing.py
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
|
-
"""Landmark smoothing utilities to reduce jitter in pose tracking.
|
|
1
|
+
"""Landmark smoothing utilities to reduce jitter in pose tracking.
|
|
2
|
+
|
|
3
|
+
This module provides filtering and smoothing techniques to improve the quality of
|
|
4
|
+
MediaPipe pose landmarks by removing noise and jitter while preserving key movement
|
|
5
|
+
features. Techniques include:
|
|
6
|
+
|
|
7
|
+
- Savitzky-Golay filtering: Smooth temporal data while preserving edges
|
|
8
|
+
- Bilateral temporal filtering: Edge-preserving smoothing with adaptive weights
|
|
9
|
+
- Outlier rejection: Remove erratic landmark detections
|
|
10
|
+
|
|
11
|
+
Used extensively in jump analysis to ensure accurate velocity and position calculations
|
|
12
|
+
across video frames.
|
|
13
|
+
|
|
14
|
+
Example:
|
|
15
|
+
from kinemotion.core.smoothing import smooth_landmarks
|
|
16
|
+
|
|
17
|
+
smoothed = smooth_landmarks(raw_landmarks, quality="balanced")
|
|
18
|
+
"""
|
|
2
19
|
|
|
3
20
|
from typing import TypeAlias
|
|
4
21
|
|
kinemotion/core/validation.py
CHANGED
|
@@ -47,23 +47,16 @@ class AthleteProfile(Enum):
|
|
|
47
47
|
|
|
48
48
|
@dataclass
|
|
49
49
|
class MetricBounds:
|
|
50
|
-
"""Physiological bounds for a single metric
|
|
51
|
-
|
|
52
|
-
Defines nested ranges for validating metrics: absolute limits mark impossible
|
|
53
|
-
values (likely data corruption), while performance-level ranges assess whether
|
|
54
|
-
results are typical for an athlete's training background.
|
|
55
|
-
|
|
56
|
-
Bounds are ordered: absolute_min < practical_min < recreational_min < elite_min
|
|
57
|
-
and elite_max < recreational_max < absolute_max (symmetric about typical values).
|
|
50
|
+
"""Physiological bounds for a single metric.
|
|
58
51
|
|
|
59
52
|
Attributes:
|
|
60
|
-
absolute_min: Absolute minimum (error threshold
|
|
61
|
-
practical_min:
|
|
62
|
-
recreational_min: Minimum for recreational athletes
|
|
53
|
+
absolute_min: Absolute minimum value (error threshold)
|
|
54
|
+
practical_min: Practical minimum for weakest athletes
|
|
55
|
+
recreational_min: Minimum for recreational athletes
|
|
63
56
|
recreational_max: Maximum for recreational athletes
|
|
64
|
-
elite_min: Minimum for elite athletes
|
|
57
|
+
elite_min: Minimum for elite athletes
|
|
65
58
|
elite_max: Maximum for elite athletes
|
|
66
|
-
absolute_max: Absolute maximum (error threshold
|
|
59
|
+
absolute_max: Absolute maximum value (error threshold)
|
|
67
60
|
unit: Unit of measurement (e.g., "m", "s", "m/s", "degrees")
|
|
68
61
|
"""
|
|
69
62
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinemotion
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.51.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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
kinemotion/__init__.py,sha256=wPItmyGJUOFM6GPRVhAEvRz0-ErI7e2qiUREYJ9EfPQ,943
|
|
2
|
-
kinemotion/api.py,sha256=
|
|
2
|
+
kinemotion/api.py,sha256=sxtlgP63SrjmNegRGhoH0jwodIeDQqH2Pr1CGkfRUEE,1596
|
|
3
3
|
kinemotion/cli.py,sha256=cqYV_7URH0JUDy1VQ_EDLv63FmNO4Ns20m6s1XAjiP4,464
|
|
4
4
|
kinemotion/cmj/__init__.py,sha256=SkAw9ka8Yd1Qfv9hcvk22m3EfucROzYrSNGNF5kDzho,113
|
|
5
5
|
kinemotion/cmj/analysis.py,sha256=3l0vYQB9tN4HtEO2MPFHVtrdzSmXgwpCm03qzYLCF0c,22196
|
|
@@ -22,9 +22,9 @@ kinemotion/core/metadata.py,sha256=bJAVa4nym__zx1hNowSZduMGKBSGOPxTbBQkjm6N0D0,7
|
|
|
22
22
|
kinemotion/core/pipeline_utils.py,sha256=0u7o-UFZX6cOu3NaWpFmEy5ejS0WUKggZ1HSdeZXhoA,14964
|
|
23
23
|
kinemotion/core/pose.py,sha256=z1OGuwnc-NdK6Aoc9UYCyPBzomw4eInexOWonZbsEoA,9057
|
|
24
24
|
kinemotion/core/quality.py,sha256=dPGQp08y8DdEUbUdjTThnUOUsALgF0D2sdz50cm6wLI,13098
|
|
25
|
-
kinemotion/core/smoothing.py,sha256=
|
|
25
|
+
kinemotion/core/smoothing.py,sha256=6Ia0Q0eNMvjTc08Q4sYTBrGyoopBwiymdh-i1wuv9Rk,16304
|
|
26
26
|
kinemotion/core/timing.py,sha256=d1rjZc07Nbi5Jrio9AC-zeS0dNAlbPyNIydLz7X75Pk,7804
|
|
27
|
-
kinemotion/core/validation.py,sha256=
|
|
27
|
+
kinemotion/core/validation.py,sha256=LmKfSl4Ayw3DgwKD9IrhsPdzp5ia4drLsHA2UuU1SCM,6310
|
|
28
28
|
kinemotion/core/video_io.py,sha256=vCwpWnlW2y29l48dFXokdehQn42w_IQvayxbVTjpXqQ,7863
|
|
29
29
|
kinemotion/dropjump/__init__.py,sha256=tC3H3BrCg8Oj-db-Vrtx4PH_llR1Ppkd5jwaOjhQcLg,862
|
|
30
30
|
kinemotion/dropjump/analysis.py,sha256=p7nnCe7V6vnhQKZVYk--_nhsTvVa_WY-A3zXmyplsew,28211
|
|
@@ -35,8 +35,8 @@ kinemotion/dropjump/kinematics.py,sha256=PATlGaClutGKJslL-LRIXHmTsvb-xEB8PUIMScU
|
|
|
35
35
|
kinemotion/dropjump/metrics_validator.py,sha256=CrTlGup8q2kyPXtA6HNwm7_yq0AsBaDllG7RVZdXmYA,9342
|
|
36
36
|
kinemotion/dropjump/validation_bounds.py,sha256=fyl04ZV7nfvHkL5eob6oEpV9Hxce6aiOWQ9pclLp7AQ,5077
|
|
37
37
|
kinemotion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
-
kinemotion-0.
|
|
39
|
-
kinemotion-0.
|
|
40
|
-
kinemotion-0.
|
|
41
|
-
kinemotion-0.
|
|
42
|
-
kinemotion-0.
|
|
38
|
+
kinemotion-0.51.0.dist-info/METADATA,sha256=ogLrmcrusmQ5EbNnRwH-OfenqNJaz21M9OVrTUf3O3g,26020
|
|
39
|
+
kinemotion-0.51.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
40
|
+
kinemotion-0.51.0.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
|
|
41
|
+
kinemotion-0.51.0.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
|
|
42
|
+
kinemotion-0.51.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|