Open data

Datasets and code behind the research

Every study on the Research page ships with the data and code needed to reproduce it. This page describes what each release contains, how big it is, what it was used for and how to cite it. The files themselves are archived on Zenodo under persistent DOIs, with CC BY 4.0 for data and MIT or Apache 2.0 for code unless stated otherwise.

Dataset + code2025 dataVersion 2 · April 2026CC BY 4.0 data · MIT code

GET-25: The Global Spatiotemporal ADS-B Kinematic Consistency Benchmark

The first global, traffic-normalized baseline of ADS-B kinematic self-consistency. The pipeline processed 246.7 billion OpenSky Network messages from calendar 2025, covering about 77.5 million observed flight hours, and applied Global Envelope Thresholding (GET): a conservative hourly envelope with deliberately relaxed source filters, so that malformed rows are ingested rather than silently dropped. That is how it captured more than 3.8 million “ghost records”, severe kinematic anomalies that lack standard avionics telemetry and that conventional pipelines discard.

The dataset measures the internal statistical consistency of broadcast state vectors as received by the ground network. It does not attribute causes: it says nothing about whether an anomaly came from a hardware fault, GNSS interference or ANSP performance.

  • processed_events_2025_MM.zip (12 files): daily Parquet files of extracted kinematic anomaly events, the numerator.
  • exposure_grids_2025_MM.zip (12 files): daily 0.1-degree spatial grids of flight exposure, the denominator.
  • reference_and_baselines.zip: flight hours per Flight Information Region, the P95/P99 empirical thresholds, and the hourly sensitivity table.
  • Five-stage extraction pipeline, validation suite and a Python API to query the baseline.

Useful as the empirical “null” for anomaly detectors, so that GNSS-spoofing classifiers do not mistake ordinary network latency or oceanic coverage gaps for attacks; as baseline 1090 MHz spectrum stability data for advanced air mobility risk models; and as a map of where ghost records threaten ACAS X state estimation.

Replication dataset + code2025 dataVersion 2 · August 2026CC BY 4.0 data · MIT code

Degradation of ADS-B integrity: temporal clustering and anomaly persistence

Everything needed to reproduce the Reliability Engineering & System Safety study: the daily extraction shards, the pre-computed survival matrices, the statistical artifacts and the code. From 246.7 billion 2025 messages the pipeline analyses 229.0 billion filtered airborne state vectors across 233,859 aircraft trajectories.

  • Scrambled-temporal permutation testing at window sizes 3, 5, 7, 10 and 15 (Numba-accelerated).
  • Day-resolution time-to-first-anomaly Kaplan–Meier survival modelling under two censoring conventions.
  • Exposure-adjusted Cox proportional hazards and an Andersen–Gill recurrent-event model, with placebo suite, ridge sweep and null-model diagnostics.
  • Scripts that re-export every manuscript metric and regenerate the figures, each with an internal integrity gate.

Version 2 rebuilt the survival analysis at day resolution and corrected five defects found in the Version 1 survival scripts during peer review; the clustering pipeline is unchanged and reproduced bit-identically. The whole pipeline runs from the shards on an 8 GB machine, without OpenSky credentials.

Dataset + code2025 dataVersion 2.5 · February 2026CC BY 4.0

Hourly Global ADS-B Kinematic Sensitivity Dataset (2025)

One row per UTC hour of 2025, summarizing the distribution of successive ADS-B kinematic reports worldwide. It is a system-level description of what the surveillance network looked like hour by hour, with no anomaly detection, labelling or attribution applied. Each row records the number of quality-filtered state vectors processed and, for several derived quantities, the mean, standard deviation, coefficient of variation and the 25th, 75th, 95th, 99th and 99.9th percentiles.

  • Inferred ground speed from great-circle displacement; inferred vertical rate.
  • Absolute disagreement between geometric and barometric altitude.
  • Bearing change between successive segments; step changes in reported speed, heading and vertical rate.
  • Message spacing (median and 95th-percentile Δt), message pairs per aircraft, and tail ratios that describe how heavy each distribution’s extreme tail is.

The Python and SQL that generated the table are included, so the same summary can be produced for another year or another data source.

Replication dataset + code2024–2025 dataVersion 2 · June 2026CC BY 4.0 data · MIT code

Multi-dimensional coupling of kinematic anomalies in ADS-B surveillance telemetry

The replication package for the cross-channel anomaly coupling study. It contains the raw extraction shards, intermediate analytical products, statistical artifacts and publication figures for the conditional-dependence analysis of 2025 global ADS-B kinematic telemetry: 117,542,731 aircraft-hour aggregates over 240,001 airframes and 791,862,868 non-overlapping 300-second windows, plus a calendar-aligned 50-day window of spring 2024 for the year-over-year diagnostic and a 24-hour pair-level pilot of 1.18 billion consecutive-message pairs.

  • Per-step anomaly flagging anchored in 14 CFR Part 25 limit load factors, RTCA DO-260B altitude quantization and the standard rate of turn.
  • Three-tier data-quality stratification, cluster-bootstrap confidence intervals resampled by airframe, and an exact within-cluster permutation null.
  • Cluster-robust, phase-stratified logistic regression with message-density controls; a vertical-rate-source (VrSrc) stratified analysis that separates barometric from GNSS-sourced vertical rate.
  • The deployable multi-channel integrity monitor and its evaluation.

Dataset2023 dataNovember 2024CC BY 4.0

Geospatial Dataset of GNSS Anomalies and Political Violence Events (2023)

Joins aircraft traffic, GNSS anomalies and political-violence events from the Armed Conflict Location & Event Data Project (ACLED) on a common grid of 0.5° × 0.5° cells by day, for the whole of 2023. It is the dataset behind the finding that GNSS deviation density, normalized by traffic, predicts conflict-event counts.

  • Daily_GNSS_Anomalies_and_ACLED-2023-V1.csv: every grid cell and day with aircraft traffic, 6,777,228 rows, including cells with no anomalies.
  • Daily_GNSS_Anomalies_and_ACLED-2023-V2.csv: the 718,237 rows where GNSS gaps or jumps were recorded.
  • Fields: grid id, date, cell polygon (WKT), flights, GPS jumps (possible spoofing), GPS gaps (possible jamming), gap and jump densities per flight, and ACLED event counts by type.

Dataset2023 dataJune 2024CC BY 4.0

2023 GPS Anomalies, NOTAMs, and Aircraft Traffic

The full extraction behind the GPS-anomaly studies: a year of gaps and deviations computed from the OpenSky Trino ADS-B database, the navigation NOTAMs received from the FAA and ICAO, hourly traffic per grid cell, and the facility locations needed to place NOTAMs on the map.

  • GPS_Jumps_from_Routes: 5,878,276 deviations between consecutive positions (possible spoofing), with distances, speeds and timestamps.
  • GPS_Missing_Coordinates: 53,227 periods with no position (possible jamming), with start and end times, the distance between known positions, and Navigation Integrity Category values.
  • Flights_per_Hour_per_Grid: 74,219,036 hourly flight counts per grid cell.
  • NOTAM_USA (234,206) and NOTAM_ICAO_GPS (30,161): navigation NOTAMs with area, active period and category; FAA_and_ICAO_locations: 21,383 facilities.

A companion release aggregates the same year into 14,117 hexagonal bins of about 385 km² each, with flights, gaps and deviations per bin as CSV and GeoPackage, for quick mapping.

CodeSQL + PythonVersion 1.1 · May 2024

SQL and Python scripts for OpenSky Trino analysis of GPS anomalies

The queries and driver script used to pull gaps and possible spoofing events out of the OpenSky Network’s Trino database, one day at a time, for the whole of 2023.

  • flight_analysis.sql: a prepared statement that finds route segments where latitude or longitude is missing, validates the surrounding positions and reads the Navigation Integrity Category to judge data quality.
  • spoofing_analysis.sql: flags implausible distances between consecutive positions relative to elapsed time, using 600 m/s as the maximum plausible ground speed.
  • ADS-B_GPS_TrinoDB_Analysis.py: iterates the queries over a date range, loads results into pandas and writes dated Excel files, with logging and error handling.

CodePythonJanuary 2024Apache 2.0

GPT-4 assisted categorization and visualization of NTSB UAV accident reports

Two scripts behind the NTSB unmanned-aircraft accident study and the interactive accident map.

  • NTSB_analysis_with_gpt4_V3.0.py: reads NTSB accident-report CSV exports, cleans the narratives and asks GPT-4 to assign each report to one of the NTSB/ICAO aviation occurrence categories, with caching so re-runs do not repeat API calls.
  • NTSB_reports_visualisation_and_map_V1.1.py: builds the charts and the Leaflet map of categorized reports.

Source data comes from the NTSB’s public accident database and its occurrence-category definitions; you need your own OpenAI API key to run the classifier.

Reference table2016–2022January 2024CC BY 4.0

Commercial and Recreational Active UAV Fleet in the U.S. 2016–2022

A compiled table of the number of active commercial and recreational unmanned aircraft in the United States for each year from 2016 to 2022, drawn from the FAA Aerospace Forecasts (each forecast reports the previous year’s registered fleet). It exists because that series is scattered across seven annual reports and is needed as a denominator whenever accident or incident counts are compared across years.

← All research and publications