Skip to main content

Neural Ordinary Differential Equation Flight Dynamics Model

Neural Ordinary Differential Equation (Neural ODE) model for aircraft flight dynamics


✈️ Overview

node-fdm implements a physics-guided Neural ODE framework for learning and simulating aircraft flight dynamics.
It combines data-driven learning with physical consistency, enabling the reproduction of vertical motion and energy exchanges during flight.


  • Distributed under the EUPL-1.2 licence, with exceptions detailed in AMENDMENT_TO_EUPL_license.md, reflecting EUROCONTROL’s status as an international organisation.
  • This repository is provided for research purposes only and does not constitute a regulatory framework.
    EUROCONTROL disclaims any responsibility for misuse or operational application of these models.

📁 Repository Structure

├── src/node_fdm/             # Core Neural ODE library (installed as a package)
│   ├── architectures/        # Architecture specific definitions (opensky_2025, qar)
│   ├── data/                 # Datasets, loaders, and flight processing
│   ├── models/               # Neural ODE modules, pretrained checkpoints, wrappers
│   └── utils/                # Data helpers, learning blocks, and physics utilities
├── scripts/                  # End-to-end pipelines and runnable scripts
│   ├── opensky/              # OpenSky 2025 download/preprocess/train/infer steps
│   └── qar/                  # QAR training and inference scripts + config.yaml
├── docs/                     # MkDocs documentation (guide, how-to, reference, logo)
├── tests/                    # Unit/integration tests for shared utilities
├── mkdocs.yml                # Documentation site configuration (mkdocs-dev.yml for local)
├── pyproject.toml            # Packaging configuration and dependencies
├── LICENCE.md                # EUPL-1.2 licence (see AMENDMENT_TO_EUPL_license.md)
└── AMENDMENT_TO_EUPL_license.md

Configuration

  • Each pipeline ships its own config.yaml under scripts/opensky/ and scripts/qar/
  • Edit dataset paths, model names, and training hyperparameters directly in the relevant subproject config before running scripts.

🎨 Use Case:

  • OpenSky Symposium 2025 — ADS-B Models

Jarry, G. & Olive, X. (2025). "Generation of Vertical Profiles with Neural Ordinary Differential Equations Trained on Open Trajectory Data," Journal of Open Aviation Science, Proceedings of the 13th OpenSky Symposium.

This repository enables full reproducibility of the study. All code used to download and preprocess the data, train the models, perform trajectory inference, and generate the figures presented in the paper is provided here.

  • SESAR Innovation Days 2025 — QAR Model

Jarry, G., Dalmau, R., Olive, X., & Very, P. (2025). "A Neural ODE Approach to Aircraft Flight Dynamics Modelling,"
Proceedings of the SESAR Innovation Days 2025, arXiv:2509.23307.

For the QAR-based model, the repository provides the full training pipeline, the complete model implementation, the inference scripts, and the final trained model weights.

⚠️ Due to proprietary restrictions, the QAR datasets themselves cannot be released; only the model, code, and weights are included.


🚧 Work in Progress

This repository is under active development. Future updates will include:

  • Improve Mode S feature reconstruction to reduce errors in training and evaluation
  • Extend to lateral dynamics for full trajectory generation and enhanced speed modelling
  • Incorporate stronger physical constraints through physics-based loss regularization
  • Train models to complete ADS-B data or generate trajectories directly from flight plans

🤝 Community — Adding a New Architecture

Community feedback and contributions are welcome to help advance the model’s robustness and applicability.

Want to extend the library with another dataset or modelling choice? Use the existing opensky_2025 and qar packages as templates:

  1. Copy a package skeleton: duplicate node_fdm/architectures/opensky_2025 (minimal) or node_fdm/architectures/qar (multi-layer example) into a new folder node_fdm/architectures/<your_arch>, keep the same file names (columns.py, flight_process.py, model.py, extra layers as needed).
  2. Declare columns: in columns.py, define your state (X_COLS), control (U_COLS), exogenous (E0_COLS), and extra outputs, following the existing column objects. Keep derivative columns for ODE targets.
  3. Build layers: in model.py, wire your layers (e.g., TrajectoryLayer, EngineLayer, StructuredLayer) and expose ARCHITECTURE and MODEL_COLS. The OpenSky model shows a two-layer baseline; QAR illustrates stacking several derived layers.
  4. Preprocess & filter: implement flight_processing and segment_filtering in flight_process.py to clean/augment your raw data (see altitude diffs in OpenSky vs. smoothing and engine reduction in QAR).
  5. Register the name: add your architecture key to valid_names in node_fdm/architectures/mapping.py so loaders and training scripts can find it.
  6. Test a small run: train or run inference on a tiny slice to validate column ordering and tensor shapes before opening a pull request; sample pipelines live in scripts/ (e.g., OpenSky scripts).

If you contribute back, include a short note on your data assumptions, any proprietary constraints, and a minimal script/notebook that exercises the new architecture.

Metadata

Release files for node-fdm 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for node-fdm 0.1.0
File Size Uploaded Provenance
node_fdm-0.1.0.tar.gz 4.3 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for node-fdm 0.1.0
File Interpreter ABI Platform
node_fdm-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 8.3 MB

Release files / node_fdm-0.1.0.tar.gz

Download URL node_fdm-0.1.0.tar.gz
Size 4.3 MB
Tags Source
SHA-256 checksum
How to use checksums
a83893d6bc2467bc21cca2131f308aa6f3a0e9e2fdc569e2d85e1b573f104b93
BLAKE2b-256 checksum
How to use checksums
c66dc68392884d4620cb6ae46deb8b0ade606a1e3cfa77c23e7050bfaa23044f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 26, 2025.

Transparency log

Release files / node_fdm-0.1.0-py3-none-any.whl

Download URL node_fdm-0.1.0-py3-none-any.whl
Size 4.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
1eb648e98bbc5935e04c971adeb9c25c813e4fb7e8b6ea8c6ec3fb401c329b17
BLAKE2b-256 checksum
How to use checksums
dc67566338b389e6c5c2fa9cccbb1c49944cc6c26612cb486339f34b42b3716f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 26, 2025.

Transparency log

Security for node-fdm 0.1.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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for node_fdm-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 26, 2025.

Transparency log

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page