Formula 1 Race Replay and Visualization Library
Project description
f1-replay
A Python toolkit for Formula 1 data analysis and visualization. Built on FastF1 with intelligent caching, schedule tools, circuit plotting, and live race replay.
Installation
pip install f1-replay
Features
- 3-Tier Data Management — Hierarchical caching system for seasons, weekends, and sessions
- F1 Info Tools — Query schedules, browse events, and resolve races by name or round
- Circuit Plotting — Poster-style track maps with sector coloring and telemetry overlays
- Race Replay — Interactive 2D visualization with real-time car positions
Quick Start
from f1_replay import Manager
manager = Manager()
# Launch interactive race replay
manager.race(2024, "monaco")
# Browse available races
manager.season_schedule(2024)
Data Management
Intelligent 3-tier caching system that minimizes API calls and enables fast data access.
Tier 1: Seasons Catalog
manager.list_years() # Available seasons
manager.get_season(2024) # All events for a year
Tier 2: Weekend Data
weekend = manager.load_weekend(2024, "monaco")
weekend.circuit.track # Track geometry (x, y, z)
weekend.circuit.pit_lane # Pit lane coordinates
weekend.circuit.corners # Corner positions and numbers
Tier 3: Session Telemetry
session = manager.load_session(2024, "monaco", "Race")
session.telemetry["VER"] # Polars DataFrame with full telemetry
session.drivers # ["VER", "NOR", "LEC", ...]
session.driver_colors # {"VER": "#3671C6", ...}
session.track_status # Yellow flags, safety cars, etc.
session.race_control # Race control messages
Telemetry columns: session_time, x, y, z, speed, throttle, brake, rpm, gear, drs, lap_number, compound, tyre_life, track_distance
F1 Info Tools
Query schedules and find events with flexible resolution.
# Schedule queries
manager.season_schedule(2024) # Full season overview
manager.race_schedule(2024) # Race sessions only
manager.sprint_schedule(2024) # Sprint weekends
manager.qualification_schedule(2024)
manager.practice_schedule(2024)
# Flexible event lookup
manager.load_weekend(2024, 8) # By round number
manager.load_weekend(2024, "monaco") # By name (case-insensitive)
manager.load_weekend(2024, "abu dhabi") # Partial match supported
Circuit Plotting
Generate poster-style circuit maps with customizable visualization.
from f1_replay.tools import plot_weekend
weekend = manager.load_weekend(2024, "monaco")
# Clean white track
plot_weekend(weekend.circuit, weekend.event)
# Colored by marshal sectors
plot_weekend(weekend.circuit, weekend.event, color_mode='sectors')
# Telemetry overlay (requires session data)
plot_weekend(weekend.circuit, weekend.event, color_mode='speed')
Color modes: white, sectors, speed, throttle, brake, height
Race Replay
Launch an interactive web viewer with real-time car positions.
# Python API
manager.race(2024, "monaco")
manager.race(2024, 8, port=8080)
# With force refresh from FastF1
manager.race(2024, "monaco", force_update=True)
# CLI
f1-replay race 2024 monaco
f1-replay race 2024 8 --port 8080
The viewer displays:
- 2D track map with animated car positions
- Driver colors and identification
- Race progression from telemetry data
CLI Reference
# Race replay
f1-replay race <year> <round|name> [--port PORT]
# Browse seasons
f1-replay seasons [year]
# Standalone API server
f1-replay server [--port PORT]
# Configuration
f1-replay config # Show current config
f1-replay config --set-cache-dir /path # Set cache directory
Configuration
from f1_replay import set_cache_dir, get_cache_dir
set_cache_dir("/path/to/data") # Persists to ~/.f1replay/config.json
get_cache_dir() # Current cache directory
# Environment variable (highest priority)
export F1_REPLAY_CACHE_DIR=/path/to/data
Priority: Environment variable → Config file → Default (./race_data)
Cache Structure
race_data/
├── seasons.pkl
└── 2024/
└── 08_Monaco/
├── Weekend.pkl # Circuit geometry + metadata
├── Race.pkl # Race telemetry
├── Qualifying.pkl # Qualifying telemetry
└── ...
Requirements
- Python 3.9+
- FastF1
- Flask
- Polars
- Matplotlib
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file f1_replay-0.1.11.tar.gz.
File metadata
- Download URL: f1_replay-0.1.11.tar.gz
- Upload date:
- Size: 122.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d3c6fc5c04e0701310e24751867974eb4c9c19cfa233a808986800e75d0cc6f
|
|
| MD5 |
c346ce363e4078ae29540298bb60994a
|
|
| BLAKE2b-256 |
6809e7df948d8e7d6d6c6b195231599191fd9b5771473e4f0a20fda34bd2359a
|
File details
Details for the file f1_replay-0.1.11-py3-none-any.whl.
File metadata
- Download URL: f1_replay-0.1.11-py3-none-any.whl
- Upload date:
- Size: 117.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
302becbd79c5439841470af11ecd0f061d81a3d125fda5ce18dadb9d283cabee
|
|
| MD5 |
dee4ce2a7eca42b21dd31d593d8d761e
|
|
| BLAKE2b-256 |
5ccbc8c6ed6898b6d214fd8fc9a38331fe230ffc3bf140712c8cbb3df5788488
|