Skip to content

UnravelSports/fast-forward

Repository files navigation

fast-forward logo

Python

Fast, Robust, Rust-powered Positional Tracking Data Loading for Football Analytics

FASTFORWARD Supports 11 positional tracking data providers: SecondSpectrum, SkillCorner, Sportec, Tracab, HawkEye, GradientSports, Signality, StatsPerform, RespoVision, OptaVision. Additionally, it supports the Common Data Format.

This project owes a depth of gratitude to Kloppy and all its contributors.

⚠️ STATUS: This project is currently in Beta. Only the Python bindings are available (not the Rust code). Please try it, and report any issues here.

ENQUIRIES: If you work for a (skeletal) tracking provider, or have access to (skeletal) tracking data from an unsupported provider and would like to see support for your data, please contact me at joris at unravelsports dot com.

Installation

pip install fast-forward-football

Usage

from fastforward import secondspectrum, skillcorner, sportec, tracab, hawkeye, cdf, gradientsports, signality, statsperform, respovision, optavision

# Load tracking data (example with SecondSpectrum)
dataset = secondspectrum.load_tracking(
    raw_data="tracking.jsonl",
    meta_data="metadata.json",
    layout="long",           # "long", "long_ball", "wide"
    coordinates="cdf",       # Coordinate system
    orientation="static_home_away",
    only_alive=True,
)

# Access data via properties
tracking_df = dataset.tracking    # pl.DataFrame 
metadata_df = dataset.metadata    # Match metadata
teams_df = dataset.teams          # Team info
players_df = dataset.players      # Player info
periods_df = dataset.periods      # Period info

Provider Support

Provider Tracking Data Public Data Docs Notes
CDF
GradientSports Formerly PFF
Hawkeye (2D) Joint tracking data is not yet supported
OptaVision StatsPerform FIFA EPTS format
RespoVision Includes support for v1 data
SecondSpectrum
Signality
SkillCorner Includes support for v3 data
Sportec
Stats Perform Includes support for MA1, MA3, and MA25 data feeds
Tracab

Distributed Compute

For Spark, Ray, and Dask workflows, fast-forward exposes engine="arrow" and engine="arrow[spark]" paths that return pyarrow.Table directly without importing kloppy on executors. See Distributed Compute.

Benchmarks

Load Time

About

Fast, Robust, Rust-powered Positional Tracking Data Loading for Football Analytics

Resources

License

Stars

42 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors