Realistic flight schedule generation from empirical operational records.
Project description
ROSTER - Realistic Operational Schedules Through Empirical Records
ROSTER is a Python package for generating realistic flight schedules from historical data. It is designed for ATM researchers that require synthetic schedules (with or without modification) for simulation purposes.
The goal of ROSTER is to provide a transparent and reproducible pipeline for building these synthetic schedules, which preserve important operational structure: airline and wake-category mixes, airport and route usage, scheduled flight times and turnarounds, and fleet initial conditions.
Installation
ROSTER requires Python 3.12 or newer. Install the latest released package with:
python -m pip install roster-generator
The installed import package is named roster_generator:
import roster_generator
For local development from a source checkout:
cd roster
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
Runtime dependencies are declared in pyproject.toml and include pandas,
numpy, airportsdata, aircraft-list, and pytz. Development and release
tools, including pytest, build, and twine, are available through the
optional dev extra.
Input Data
The main ROSTER pipeline expects a cleaned flight schedule with this normalized schema:
DEP_ICAO, ARR_ICAO, STD_REFTZ, STA_REFTZ, ATD_REFTZ, ATA_REFTZ,
AC_OPER, AC_REG, AC_WAKE
Any dataset with those columns can be used directly as schedule_file in
PipelineConfig. The built-in cleaning step is optional: it is a convenience
utility for converting EUROCONTROL-style flight records into the normalized
ROSTER input format.
For that optional cleaner, the raw EUROCONTROL-style file must include, at minimum, the following source columns:
ADEP, ADES, FILED OFF BLOCK TIME, FILED ARRIVAL TIME,
ACTUAL OFF BLOCK TIME, ACTUAL ARRIVAL TIME,
AC Type, AC Operator, AC Registration
The cleaner validates airport ICAO codes, parses timestamps, adds ICAO wake turbulence categories from aircraft type data, and writes the normalized schema above.
Quick Start
Run the full tutorial pipeline from a source checkout:
python tutorials/tutorial_pipeline.py --seed 42 --suffix demo
The seed controls stochastic sampling. The optional suffix is appended to
generated files, so --suffix demo produces outputs such as
schedule_demo.csv.
Pipeline
The standard tutorial workflow runs the following stages:
- Optionally clean historical flight records into the normalized ROSTER schema.
- Build empirical Markov transition tables and sample fleet initial conditions.
- Analyze scheduled turnaround and flight-time distributions.
- Generate auxiliary simulator input files for airlines, airports, fleet, and routes.
- Generate a synthetic schedule through greedy forward construction with airport capacity checks.
Intermediate analysis files are written under computed/, including
initial_conditions, markov, scheduled flight-time distributions, and
turnaround profiles. Simulator-facing outputs are written under output/,
including airlines, airports, fleet, routes, phys_ta, and schedule.
Configuration
Runtime window behavior can be configured in tutorials/params.yaml:
REFTZ: UTC
WINDOW_START: "00:00"
WINDOW_LENGTH_HOURS: 24
ACTUAL_TIMES: false
REFTZ defines the reference timezone used for time-of-day and day-boundary
logic. WINDOW_START and WINDOW_LENGTH_HOURS define the simulated operating
window. ACTUAL_TIMES controls whether actual timestamp columns are required
and used by stages that support them.
Programmatic workflows use roster_generator.PipelineConfig to define input
paths, output paths, random seed, suffix, time-window settings, and optional
manipulation callbacks.
Schedule manipulation
ROSTER supports controlled scenario manipulation without editing the generated analysis tables by hand:
manipulation_fnmodifies scalar distribution parameters at runtime, such as turnaround distributions, fleet-size parameters, route durations, physical turnaround minima, and prior-day probabilities.markov_manipulation_fnreceives aMarkovContextand reweights existing destination probabilities before each Markov row is normalized.
See tutorials/tutorial_manipulation.py for a worked example of both hooks.
Some Features Of ROSTER
- Written in Python 3 and installable with pip.
- Reproducible stochastic generation through explicit random seeds.
- Empirical Markov transition models for aircraft continuation behavior.
- Synthetic fleet initial-condition sampling from historical records.
- Reference-timezone operating windows with configurable start time and length.
- Wake-category handling based on aircraft type data.
- Scheduled turnaround and flight-time distribution analysis.
- Airport capacity-aware schedule construction.
- CSV outputs suitable for downstream simulation workflows.
- Unit tests covering cleaning, configuration, distributions, Markov models, auxiliary files, and schedule generation.
Testing
Run the test suite from the project root:
python -m pytest
Contributions
Contributions are welcome from researchers and developers. Please keep changes focused, add or update tests for behavioural changes.
License
ROSTER is distributed under the GNU General Public License v3. See LICENSE
for the full license text.
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 roster_generator-0.2.6.tar.gz.
File metadata
- Download URL: roster_generator-0.2.6.tar.gz
- Upload date:
- Size: 107.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c651001000c15d33b97152442bf1ba1d071d84f5a0b198e75c8d18cd2223b502
|
|
| MD5 |
0b7fee6a4d5ef61b3ed48930462bdde3
|
|
| BLAKE2b-256 |
79e66c5ea0a71adf95ee0c407a4d75c0a579a0808756093dd977996bd7881eae
|
File details
Details for the file roster_generator-0.2.6-py3-none-any.whl.
File metadata
- Download URL: roster_generator-0.2.6-py3-none-any.whl
- Upload date:
- Size: 79.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ec97ee055bd376ee2c50c7727a1249ee1eacd51dbde714d158312b1d31049bb
|
|
| MD5 |
a32d5db6b59cfb9b619035fc03e3ec24
|
|
| BLAKE2b-256 |
7a72dd131ee00bae10ca3faf2343ba9c17bff51297ad3e72d86e1f266126d148
|