An end-to-end training-load pipeline and interactive dashboard for team-sport GPS data, built around Gaelic football and STATSports 10 Hz exports. Raw per-sample files go in; a pseudonymised, browser-only dashboard comes out.
Live demo → · Write-up (synthetic squad, no real athlete data)
| Session analysis | Load monitoring |
|---|---|
| One match or training session at 10-second resolution: per-minute running, most demanding scenarios (1–10 min), player comparison, benchmarks by position and playing group. | Daily load, acute:chronic workload, changepoint detection and a time-series toolkit (smoothing, power spectrum, Morlet wavelet, Holt-Winters forecast). |
The pipeline follows the five-stage decision-support framework of Schelling & Robertson (2020) and Schelling et al. (2025):
src/pipeline/sources.py)conditioning.py)features.py)patterns.py)output.py)Method choices worth calling out:
ruptures, with a NumPy binary-segmentation fallback.pip install -r requirements.txt
python scripts/make_sample_data.py # synthetic 14-player squad, 8 weeks (~1 GB, git-ignored)
python run.py # pipeline -> outputs/
open dashboard/index.html # works straight from disk, no server
python publish.py --public inlines each page (CSS, JS, data) into a single file in docs/ for
GitHub Pages. It refuses to run unless the pipeline is pointed at the synthetic sample.
Point data.root in config.yaml (or GPS_DATA_ROOT) at a folder of
YYYY-MM-DD-<Team>-<Match|Training>.csv exports. Optional squad context (fixtures, grades,
positions) goes in the CSVs listed under reference:.
Data governance is built in:
outputs/ or the browser; the
name key stays in cache/.python publish.py (without --public) encrypts each page with
AES-256-GCM, key derived from a password with PBKDF2-SHA256 (600k iterations). The Pages site
then holds only ciphertext and decrypts in the viewer’s browser.scripts/make_sample_data.py invents everything: names, fixtures, opposition, pitch location and
the movement itself. Speeds follow a mean-reverting baseline with superimposed high-speed efforts,
scaled by position line, across a weekly rhythm (two trainings and a match) with a three-build,
one-deload block. It targets plausible magnitudes (about 100–110 m/min in matches), not a model of
real players.
Eamon McGleenan · PhD researcher, Predictive Sports Analytics, Queen’s University Belfast