The Digital Twin

bluebird_dt encodes a digital twin of an airspace, including classes that represent:
- The geometry of the airspace - Sectors, Volumes, Airways, Fixes, ...
- Aircraft, with properties such as location, heading, flight level, ...
- Predictors, to model how the aircraft parameters evolve with the simulation.
- Action, defining the schema by which agents can interact with the simulation.
- Infrastructure classes such as Simulator, ScenarioManagers, EventHandlers, logger, to allow the user to define and run simulated ATC scenarios.
Getting started
Installation
bluebird-dt is available on pypi, therefore it can be installed using
pip install bluebird-dt
or, if using UV, you can add it to your environment using
uv add bluebird-dt
Making an agent
To run your first simulation, run the following script which issues a single instruction to an aircraft.
from bluebird_dt.core import Action
from bluebird_dt.simulator.simulator import Simulator
# Use Simulator
sim = Simulator.from_category("Artificial", "I-Sector Two Aircraft")
# Evolve for 60 seconds, in 6 second radar sweeps
for _ in range(0, 10):
sim.evolve(6)
# List all the aircraft in the airspace
print(sim.manager.environment.aircraft)
# Issue an action to one of the aircraft
sim.manager.receive_actions(
[
Action("AIR0", "change_flight_level_to", 200)
]
)
Running the digital twin as a server.
A FastApi app is available as bluebird-api, allowing the simulation to be run as a server, with the user (or an agent) interacting via a REST API. For information on this, see GitHub or Pypi.
Documentation
The full documentation for the bluebird-dt package can be found at in https://docs.projectbluebird.ai
Where logs are saved
When a simulation saves its logs (the per-run .log file and the replay .tar.gz archive), they are written to a per-user data directory rather than inside the installed package, so they are not lost when the virtual environment is rebuilt.
The location is resolved with platformdirs, a small cross-platform library that returns each operating system's conventional per-user data directory. The logs live under a bluebird-scenario-logs/bluebird_dt folder inside that directory:
| Platform | Default log location |
|---|---|
| Linux | ~/.local/share/bluebird-scenario-logs/bluebird_dt (or $XDG_DATA_HOME/...) |
| macOS | ~/Library/Application Support/bluebird-scenario-logs/bluebird_dt |
| Windows | %LOCALAPPDATA%\bluebird-scenario-logs\bluebird_dt |
To use a different location, set the BLUEBIRD_LOG_DIR environment variable before importing bluebird_dt; its value is used as the base directory instead of the platformdirs default.
Metadata
Release files for bluebird-dt 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| bluebird_dt-0.3.0.tar.gz | 213.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bluebird_dt-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 493.2 kB
Release files / bluebird_dt-0.3.0.tar.gz
| Download URL | bluebird_dt-0.3.0.tar.gz |
|---|---|
| Size | 213.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ff6d009647bdba8fbe75308786c9bd6a8175839a93aa1e29f39f5a4c26b273b7
|
|
BLAKE2b-256 checksum How to use checksums |
4cabf34b20e755ba78b618da6cd143e2c82ddb2ea5a84ee0d6368f0da3b8fdd8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / bluebird_dt-0.3.0-py3-none-any.whl
| Download URL | bluebird_dt-0.3.0-py3-none-any.whl |
|---|---|
| Size | 280.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6ae15623533d1b6135a7f466fd9e3f3c51c728222d20f0be9c9800834fdad297
|
|
BLAKE2b-256 checksum How to use checksums |
b50770427372edba679fa1bb12996550fcdfac4eb10cbf18305300db7cbafc22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for bluebird-dt 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.