Build Assisted Shot Profiles
Build the validated player-season panel, curated regular-season event partitions, and processed player box scores first. Then run:
uv run nba-build-assisted-shot-taxonomy
For a faster historical build, write validated seasonal parts concurrently and combine them automatically:
uv run nba-build-assisted-shot-taxonomy --workers 4
The command atomically refreshes data/analytical/assisted_shot_taxonomy/.
It creates player-season assisted, unassisted, and unknown-status made-shot
counts for rim, non-rim two, and three-point families. It also writes a
team-game reconciliation against official player box-score FGM, 2PM, 3PM, and
assists.
Validate the published contract with:
uv run python -c "from nba_lineup_model.modeling.assisted_shot_taxonomy import validate_assisted_shot_taxonomy; validate_assisted_shot_taxonomy('data/analytical/assisted_shot_taxonomy')"
Review season_assisted_shot_reconciliation.parquet before using these
features in a model. It is the source-of-truth audit for whether description
assist markers agree sufficiently with the official box score in each season.
Resumable Historical Build
On a constrained machine, build one season at a time into ignored checkpoint directories, then atomically combine the validated parts:
uv run nba-build-assisted-shot-taxonomy \
--season 2025-26 \
--output-dir artifacts/assisted_shot_taxonomy_parts/2025-26
uv run nba-build-assisted-shot-taxonomy \
--combine-parts-dir artifacts/assisted_shot_taxonomy_parts
Repeat the first command for every season before combining. The combine command requires exactly one validated part per season and checks that all parts use the same source player-panel and processed player-box contracts.