kinemotion 0.15.1__py3-none-any.whl → 0.15.3__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.

@@ -11,7 +11,11 @@ from typing import Any
11
11
  import click
12
12
  import numpy as np
13
13
 
14
- from ..api import VideoConfig, VideoResult, process_videos_bulk
14
+ from ..api import (
15
+ DropJumpVideoConfig,
16
+ DropJumpVideoResult,
17
+ process_dropjump_videos_bulk,
18
+ )
15
19
  from ..core.auto_tuning import (
16
20
  QualityPreset,
17
21
  analyze_video_sample,
@@ -446,7 +450,7 @@ def _create_video_configs(
446
450
  output_dir: str | None,
447
451
  json_output_dir: str | None,
448
452
  expert_params: AnalysisParameters,
449
- ) -> list[VideoConfig]:
453
+ ) -> list[DropJumpVideoConfig]:
450
454
  """Build configuration objects for each video.
451
455
 
452
456
  Args:
@@ -457,9 +461,9 @@ def _create_video_configs(
457
461
  expert_params: Expert parameter overrides
458
462
 
459
463
  Returns:
460
- List of VideoConfig objects
464
+ List of DropJumpVideoConfig objects
461
465
  """
462
- configs: list[VideoConfig] = []
466
+ configs: list[DropJumpVideoConfig] = []
463
467
  for video_file in video_files:
464
468
  video_name = Path(video_file).stem
465
469
 
@@ -471,7 +475,7 @@ def _create_video_configs(
471
475
  if json_output_dir:
472
476
  json_file = str(Path(json_output_dir) / f"{video_name}.json")
473
477
 
474
- config = VideoConfig(
478
+ config = DropJumpVideoConfig(
475
479
  video_path=video_file,
476
480
  quality=quality,
477
481
  output_video=debug_video,
@@ -489,7 +493,7 @@ def _create_video_configs(
489
493
  return configs
490
494
 
491
495
 
492
- def _compute_batch_statistics(results: list[VideoResult]) -> None:
496
+ def _compute_batch_statistics(results: list[DropJumpVideoResult]) -> None:
493
497
  """Compute and display batch processing statistics.
494
498
 
495
499
  Args:
@@ -573,7 +577,7 @@ def _format_distance_metric(value: float | None) -> str:
573
577
  return f"{value:.3f}" if value is not None else "N/A"
574
578
 
575
579
 
576
- def _create_csv_row_from_result(result: VideoResult) -> list[str]:
580
+ def _create_csv_row_from_result(result: DropJumpVideoResult) -> list[str]:
577
581
  """Create CSV row from video processing result.
578
582
 
579
583
  Args:
@@ -606,7 +610,9 @@ def _create_csv_row_from_result(result: VideoResult) -> list[str]:
606
610
 
607
611
 
608
612
  def _write_csv_summary(
609
- csv_summary: str | None, results: list[VideoResult], successful: list[VideoResult]
613
+ csv_summary: str | None,
614
+ results: list[DropJumpVideoResult],
615
+ successful: list[DropJumpVideoResult],
610
616
  ) -> None:
611
617
  """Write CSV summary of batch processing results.
612
618
 
@@ -669,7 +675,7 @@ def _process_batch(
669
675
  # Progress callback
670
676
  completed = 0
671
677
 
672
- def show_progress(result: VideoResult) -> None:
678
+ def show_progress(result: DropJumpVideoResult) -> None:
673
679
  nonlocal completed
674
680
  completed += 1
675
681
  status = "✓" if result.success else "✗"
@@ -684,7 +690,7 @@ def _process_batch(
684
690
 
685
691
  # Process all videos
686
692
  click.echo("\nProcessing videos...", err=True)
687
- results = process_videos_bulk(
693
+ results = process_dropjump_videos_bulk(
688
694
  configs, max_workers=workers, progress_callback=show_progress
689
695
  )
690
696
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kinemotion
3
- Version: 0.15.1
3
+ Version: 0.15.3
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
@@ -125,8 +125,8 @@ Kinemotion supports two jump types with intelligent auto-tuning that automatical
125
125
  Analyzes reactive strength and ground contact time:
126
126
 
127
127
  ```bash
128
- # Drop-height is REQUIRED for accurate calibration
129
- kinemotion dropjump-analyze video.mp4 --drop-height 0.40
128
+ # Automatic parameter tuning based on video characteristics
129
+ kinemotion dropjump-analyze video.mp4
130
130
  ```
131
131
 
132
132
  ### Counter Movement Jump (CMJ) Analysis
@@ -176,9 +176,9 @@ Process multiple videos in parallel:
176
176
 
177
177
  ```bash
178
178
  # Drop jumps
179
- kinemotion dropjump-analyze videos/*.mp4 --batch --drop-height 0.40 --workers 4
179
+ kinemotion dropjump-analyze videos/*.mp4 --batch --workers 4
180
180
 
181
- # CMJ (no drop height needed)
181
+ # CMJ with output directories
182
182
  kinemotion cmj-analyze videos/*.mp4 --batch --workers 4 \
183
183
  --json-output-dir results/ \
184
184
  --csv-summary summary.csv
@@ -194,9 +194,8 @@ Use kinemotion as a library for automated pipelines and custom analysis.
194
194
  from kinemotion import process_dropjump_video
195
195
 
196
196
  # Process a single video
197
- metrics = process_video(
197
+ metrics = process_dropjump_video(
198
198
  video_path="athlete_jump.mp4",
199
- drop_height=0.40, # 40cm drop box
200
199
  quality="balanced",
201
200
  verbose=True
202
201
  )
@@ -214,11 +213,11 @@ print(f"Flight time: {metrics.flight_time * 1000:.1f} ms")
214
213
  from kinemotion import DropJumpVideoConfig, process_dropjump_videos_bulk
215
214
 
216
215
  configs = [
217
- VideoConfig("video1.mp4", drop_height=0.40),
218
- VideoConfig("video2.mp4", drop_height=0.30, quality="accurate"),
216
+ DropJumpVideoConfig("video1.mp4", quality="balanced"),
217
+ DropJumpVideoConfig("video2.mp4", quality="accurate"),
219
218
  ]
220
219
 
221
- results = process_videos_bulk(configs, max_workers=4)
220
+ results = process_dropjump_videos_bulk(configs, max_workers=4)
222
221
 
223
222
  # CMJ bulk processing
224
223
  from kinemotion import CMJVideoConfig, process_cmj_videos_bulk
@@ -17,12 +17,12 @@ kinemotion/core/smoothing.py,sha256=C9GK3PAN16RpqJw2UWeVslSTJZEvALeVADjtnJnSF88,
17
17
  kinemotion/core/video_io.py,sha256=kH5FYPx3y3lFZ3ybdgxaZfKPdHJ37eqxSeAaZjyQnJk,6817
18
18
  kinemotion/dropjump/__init__.py,sha256=yc1XiZ9vfo5h_n7PKVSiX2TTgaIfGL7Y7SkQtiDZj_E,838
19
19
  kinemotion/dropjump/analysis.py,sha256=xx5NWy6s0eb9BEyO_FByY1Ahunaoh3TyaTAxjlPrvxg,27153
20
- kinemotion/dropjump/cli.py,sha256=Oni7gntysA6Zwb_ehsAnk6Ytd2ofUhN0yXVCsCsiris,21196
20
+ kinemotion/dropjump/cli.py,sha256=J2F8ij-UcybY7YjK_bncQZiHNzrgS3Y7uTBkNo7y_L4,21328
21
21
  kinemotion/dropjump/debug_overlay.py,sha256=LkPw6ucb7beoYWS4L-Lvjs1KLCm5wAWDAfiznUeV2IQ,5668
22
22
  kinemotion/dropjump/kinematics.py,sha256=txDxpDti3VJVctWGbe3aIrlIx83UY8-ynzlX01TOvTA,15577
23
23
  kinemotion/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- kinemotion-0.15.1.dist-info/METADATA,sha256=C7a1BQU9UpyZvwdKriE4TBxdULEW4pX18X1B9FEKO-k,19036
25
- kinemotion-0.15.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
26
- kinemotion-0.15.1.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
27
- kinemotion-0.15.1.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
28
- kinemotion-0.15.1.dist-info/RECORD,,
24
+ kinemotion-0.15.3.dist-info/METADATA,sha256=8p_PRdsi_52CtmYXwZml5AYfv01359uRKGR6ddgWXdM,18986
25
+ kinemotion-0.15.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
26
+ kinemotion-0.15.3.dist-info/entry_points.txt,sha256=zaqnAnjLvcdrk1Qvj5nvXZCZ2gp0prS7it1zTJygcIY,50
27
+ kinemotion-0.15.3.dist-info/licenses/LICENSE,sha256=KZajvqsHw0NoOHOi2q0FZ4NBe9HdV6oey-IPYAtHXfg,1088
28
+ kinemotion-0.15.3.dist-info/RECORD,,