kinemotion 0.51.0__py3-none-any.whl → 0.53.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/api.py CHANGED
@@ -1,25 +1,10 @@
1
1
  """Public API for programmatic use of kinemotion analysis.
2
2
 
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
-
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
7
 
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
8
  """
24
9
 
25
10
  # CMJ API
@@ -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
 
@@ -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 value (error threshold)
54
- practical_min: Practical minimum for weakest athletes
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 value (error threshold)
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.51.0
3
+ Version: 0.53.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=sxtlgP63SrjmNegRGhoH0jwodIeDQqH2Pr1CGkfRUEE,1596
2
+ kinemotion/api.py,sha256=uG1e4bTnj2c-6cbZJEZ_LjMwFdaG32ba2KcK_XjE_NI,1040
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=6Ia0Q0eNMvjTc08Q4sYTBrGyoopBwiymdh-i1wuv9Rk,16304
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=LmKfSl4Ayw3DgwKD9IrhsPdzp5ia4drLsHA2UuU1SCM,6310
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.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,,
38
+ kinemotion-0.53.0.dist-info/METADATA,sha256=d20_TQ0msF3Jb9uqELLNAx1uNUwlfkf-VTC4JlmaEDg,26020
39
+ kinemotion-0.53.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
40
+ kinemotion-0.53.0.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
41
+ kinemotion-0.53.0.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
42
+ kinemotion-0.53.0.dist-info/RECORD,,