kinemotion 0.51.0__py3-none-any.whl → 0.52.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 +1 -17
- kinemotion/core/smoothing.py +1 -18
- kinemotion/core/validation.py +13 -6
- {kinemotion-0.51.0.dist-info → kinemotion-0.52.0.dist-info}/METADATA +1 -1
- {kinemotion-0.51.0.dist-info → kinemotion-0.52.0.dist-info}/RECORD +8 -8
- {kinemotion-0.51.0.dist-info → kinemotion-0.52.0.dist-info}/WHEEL +0 -0
- {kinemotion-0.51.0.dist-info → kinemotion-0.52.0.dist-info}/entry_points.txt +0 -0
- {kinemotion-0.51.0.dist-info → kinemotion-0.52.0.dist-info}/licenses/LICENSE +0 -0
kinemotion/api.py
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
1
|
"""Public API for programmatic use of kinemotion analysis.
|
|
2
2
|
|
|
3
|
-
This module provides a unified interface for both drop jump and
|
|
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
|
-
|
|
3
|
+
This module provides a unified interface for both drop jump and CMJ video analysis.
|
|
11
4
|
The actual implementations have been moved to their respective submodules:
|
|
12
5
|
- Drop jump: kinemotion.dropjump.api
|
|
13
6
|
- 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")
|
|
23
7
|
"""
|
|
24
8
|
|
|
25
9
|
# CMJ API
|
kinemotion/core/smoothing.py
CHANGED
|
@@ -1,21 +1,4 @@
|
|
|
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
|
-
"""
|
|
1
|
+
"""Landmark smoothing utilities to reduce jitter in pose tracking."""
|
|
19
2
|
|
|
20
3
|
from typing import TypeAlias
|
|
21
4
|
|
kinemotion/core/validation.py
CHANGED
|
@@ -47,16 +47,23 @@ class AthleteProfile(Enum):
|
|
|
47
47
|
|
|
48
48
|
@dataclass
|
|
49
49
|
class MetricBounds:
|
|
50
|
-
"""Physiological bounds for a single metric.
|
|
50
|
+
"""Physiological bounds for a single metric across athlete performance levels.
|
|
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).
|
|
51
58
|
|
|
52
59
|
Attributes:
|
|
53
|
-
absolute_min: Absolute minimum
|
|
54
|
-
practical_min:
|
|
55
|
-
recreational_min: Minimum for recreational athletes
|
|
60
|
+
absolute_min: Absolute minimum (error threshold, marks data corruption)
|
|
61
|
+
practical_min: Minimum for untrained/elderly athletes
|
|
62
|
+
recreational_min: Minimum for recreational athletes (moderate activity)
|
|
56
63
|
recreational_max: Maximum for recreational athletes
|
|
57
|
-
elite_min: Minimum for elite athletes
|
|
64
|
+
elite_min: Minimum for elite athletes (competitive level)
|
|
58
65
|
elite_max: Maximum for elite athletes
|
|
59
|
-
absolute_max: Absolute maximum
|
|
66
|
+
absolute_max: Absolute maximum (error threshold, marks data corruption)
|
|
60
67
|
unit: Unit of measurement (e.g., "m", "s", "m/s", "degrees")
|
|
61
68
|
"""
|
|
62
69
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kinemotion
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.52.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=q33-C6xlZKzXthjii1FKnschFU_WT60EHabRgczy3ic,1039
|
|
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=FZmv3rumn0mYKU2y3JPKz46EvD8TVmQ6_GsN_Vp3BdU,15650
|
|
26
26
|
kinemotion/core/timing.py,sha256=d1rjZc07Nbi5Jrio9AC-zeS0dNAlbPyNIydLz7X75Pk,7804
|
|
27
|
-
kinemotion/core/validation.py,sha256=
|
|
27
|
+
kinemotion/core/validation.py,sha256=UOdB0v-xZjYvUogwlSdX4luDHy1E0VCJvmu4VvrVPyc,6817
|
|
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.52.0.dist-info/METADATA,sha256=yGE83lM-tG2MOVq9ZzFTKb46IH_Hfn6WGHIAejWcsH8,26020
|
|
39
|
+
kinemotion-0.52.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
40
|
+
kinemotion-0.52.0.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
|
|
41
|
+
kinemotion-0.52.0.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
|
|
42
|
+
kinemotion-0.52.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|