MoonBit sports science and biomechanics force plate signal analysis library
| Package | Responsibility |
|---|---|
| core | Types, calibration, metadata, timebase, robust statistics, signal comparison, trial/window features |
| filter | Validated DSP filters and auditable filter chains |
| resample | Interpolation, splines, time normalization, and multichannel trial resampling |
| kinetic | Force-derived quantities, integration, impulse, RFD, work, and kinematic envelopes |
| event | Onset, contact, hysteresis, jump-event, phase, TKEO, and CUSUM detection |
| jump | CMJ, SJ, DJ, IMTP, pogo, landing, stiffness, readiness, and repeated-trial metrics |
| sway | COP metrics, ellipse/hull/spectral analysis, stability, entropy, and sliding windows |
| asymmetry | Bilateral metrics, trajectories, profiles, bins, and load integration |
| quality | Trial validation, quality scoring, quality gates, outliers, repair, and report export |
| assessment | Repeated-trial statistics, session summaries, baseline comparison, readiness, and report export |
| pipeline | Auditable single-trial and batch workflows plus CSV diagnostics |
| export | Machine-readable and human-readable report generation |
| cmd / cmd/main | Deterministic synthetic fixtures, benchmark API, and runnable CLI demonstration |
moon update
moon check --deny-warn
moon test --deny-warn
moon run cmd/mainlet quality = @quality.assess_trial(
trial,
@quality.QualityPolicy::default(),
)
let result = @pipeline.run_cmj(
trial,
body_mass_kg,
@pipeline.PipelineOptions::default(),
)
match result.status {
@pipeline.PipelineStatus::Completed => println("analysis complete")
@pipeline.PipelineStatus::Rejected => println("quality gate rejected trial")
}let trial = @assessment.AssessmentTrial::from_cmj(
"cmj-01",
1,
98.0,
true,
jump_height_m=0.42,
peak_force_n=2350.0,
rsi_modified=0.44,
peak_power_w=2176.0,
takeoff_velocity_m_s=1.75,
)
let session = @assessment.AssessmentSession::new(
"session-2026-08-20",
"morning CMJ",
[trial],
)
let summary = @assessment.summarize_session(
session,
@assessment.AssessmentPolicy::default(),
)
let csv = @assessment.session_summary_to_csv(summary)moon run cmd/mainiterations=3 samples=1700 elapsed_ms=8 trials_per_second=375 mean_jump_height_m=0.1961330000000001 checksum_peak_force_n=7060.7880000000005
iterations=3 samples=1700 elapsed_ms=12 trials_per_second=250 mean_jump_height_m=0.1961330000000001 checksum_peak_force_n=7060.7880000000005moon fmt --check
moon check --deny-warn
moon test --deny-warn
moon check --target all --deny-warn
moon build cmd/main --target wasm-gc --releaseMoonBit sports science and biomechanics force plate signal analysis library