agi-app-flight-telemetry 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agi_app_flight_telemetry-0.1.0/LICENSE +22 -0
- agi_app_flight_telemetry-0.1.0/PKG-INFO +49 -0
- agi_app_flight_telemetry-0.1.0/README.md +19 -0
- agi_app_flight_telemetry-0.1.0/pyproject.toml +84 -0
- agi_app_flight_telemetry-0.1.0/setup.cfg +4 -0
- agi_app_flight_telemetry-0.1.0/setup.py +47 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/__init__.py +33 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/README.md +62 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/dag_templates/flight_to_weather.json +92 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/notebook_import_views.toml +56 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/pipeline_view.dot +15 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/pyproject.toml +10 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/app_args_form.py +256 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/app_settings.toml +107 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/connectors/data_connectors.toml +27 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/flight/__init__.py +17 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/flight/flight.py +285 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/flight/flight_args.py +252 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/flight/reduction.py +225 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/flight_worker/__init__.py +6 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/flight_worker/dataset.7z +0 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/flight_worker/flight_worker.py +262 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/flight_worker/pyproject.toml +52 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/src/pre_prompt.json +1 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry/project/flight_telemetry_project/uv_config.toml +5 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry.egg-info/PKG-INFO +49 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry.egg-info/SOURCES.txt +11 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry.egg-info/dependency_links.txt +1 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry.egg-info/entry_points.txt +3 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry.egg-info/requires.txt +1 -0
- agi_app_flight_telemetry-0.1.0/src/agi_app_flight_telemetry.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025, Jean-Pierre Morard, THALES SIX GTS France SAS
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
|
7
|
+
following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
|
|
10
|
+
disclaimer.
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
|
|
12
|
+
disclaimer in the documentation and/or other materials provided with the distribution.
|
|
13
|
+
3. Neither the name of Jean-Pierre MORARD nor the names of its contributors, or THALES SIX GTS France SAS, may be used
|
|
14
|
+
to endorse or promote products derived from this software without specific prior written permission.
|
|
15
|
+
|
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
|
17
|
+
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
18
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
19
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
20
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
21
|
+
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
22
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agi-app-flight-telemetry
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: AGILAB flight telemetry app project
|
|
5
|
+
Author: Jean-Pierre Morard
|
|
6
|
+
Maintainer: Jean-Pierre Morard
|
|
7
|
+
License-Expression: BSD-3-Clause
|
|
8
|
+
Project-URL: Documentation, https://thalesgroup.github.io/agilab
|
|
9
|
+
Project-URL: Source, https://github.com/ThalesGroup/agilab/tree/main/src/agilab/lib/agi-app-flight-telemetry
|
|
10
|
+
Project-URL: Issues, https://github.com/ThalesGroup/agilab/issues
|
|
11
|
+
Project-URL: Homepage, https://github.com/ThalesGroup/agilab
|
|
12
|
+
Project-URL: Repository, https://github.com/ThalesGroup/agilab
|
|
13
|
+
Project-URL: Discussions, https://github.com/ThalesGroup/agilab/discussions
|
|
14
|
+
Project-URL: Changelog, https://github.com/ThalesGroup/agilab/releases
|
|
15
|
+
Keywords: agilab,apps,reproducibility,workflow-orchestration
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Classifier: Development Status :: 4 - Beta
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Operating System :: MacOS
|
|
23
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
24
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
25
|
+
Requires-Python: >=3.11
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: agi-core<2027.0,>=2026.05.13
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
# agi-app-flight-telemetry
|
|
32
|
+
|
|
33
|
+
[](https://pypi.org/project/agi-app-flight-telemetry/)
|
|
34
|
+
[](https://pypi.org/project/agi-app-flight-telemetry/)
|
|
35
|
+
[](https://opensource.org/licenses/BSD-3-Clause)
|
|
36
|
+
|
|
37
|
+
`agi-app-flight-telemetry` publishes the `flight_telemetry_project` AGILAB app project as a self-contained
|
|
38
|
+
package payload. The package advertises the project through the `agilab.apps`
|
|
39
|
+
entry point group so `AgiEnv(app="flight_telemetry_project")` can resolve it without a
|
|
40
|
+
monorepo checkout.
|
|
41
|
+
|
|
42
|
+
## Install
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install agi-app-flight-telemetry
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Most users install these app packages through the umbrella `agi-apps` package or
|
|
49
|
+
through `agilab[ui]` / `agilab[examples]`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# agi-app-flight-telemetry
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/agi-app-flight-telemetry/)
|
|
4
|
+
[](https://pypi.org/project/agi-app-flight-telemetry/)
|
|
5
|
+
[](https://opensource.org/licenses/BSD-3-Clause)
|
|
6
|
+
|
|
7
|
+
`agi-app-flight-telemetry` publishes the `flight_telemetry_project` AGILAB app project as a self-contained
|
|
8
|
+
package payload. The package advertises the project through the `agilab.apps`
|
|
9
|
+
entry point group so `AgiEnv(app="flight_telemetry_project")` can resolve it without a
|
|
10
|
+
monorepo checkout.
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install agi-app-flight-telemetry
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Most users install these app packages through the umbrella `agi-apps` package or
|
|
19
|
+
through `agilab[ui]` / `agilab[examples]`.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
version = "0.1.0"
|
|
3
|
+
name = "agi-app-flight-telemetry"
|
|
4
|
+
description = "AGILAB flight telemetry app project"
|
|
5
|
+
requires-python = ">=3.11"
|
|
6
|
+
readme = "README.md"
|
|
7
|
+
authors = [
|
|
8
|
+
{ name = "Jean-Pierre Morard" }
|
|
9
|
+
]
|
|
10
|
+
maintainers = [{ name = "Jean-Pierre Morard" }]
|
|
11
|
+
license = "BSD-3-Clause"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Intended Audience :: Developers",
|
|
16
|
+
"Development Status :: 4 - Beta",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
20
|
+
"Programming Language :: Python :: 3.13",
|
|
21
|
+
"Operating System :: MacOS",
|
|
22
|
+
"Operating System :: Microsoft :: Windows",
|
|
23
|
+
"Operating System :: POSIX :: Linux",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
keywords = [
|
|
27
|
+
"agilab",
|
|
28
|
+
"apps",
|
|
29
|
+
"reproducibility",
|
|
30
|
+
"workflow-orchestration",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
dependencies = ["agi-core>=2026.05.13,<2027.0"]
|
|
34
|
+
|
|
35
|
+
[project.urls]
|
|
36
|
+
Documentation = "https://thalesgroup.github.io/agilab"
|
|
37
|
+
Source = "https://github.com/ThalesGroup/agilab/tree/main/src/agilab/lib/agi-app-flight-telemetry"
|
|
38
|
+
Issues = "https://github.com/ThalesGroup/agilab/issues"
|
|
39
|
+
Homepage = "https://github.com/ThalesGroup/agilab"
|
|
40
|
+
Repository = "https://github.com/ThalesGroup/agilab"
|
|
41
|
+
Discussions = "https://github.com/ThalesGroup/agilab/discussions"
|
|
42
|
+
Changelog = "https://github.com/ThalesGroup/agilab/releases"
|
|
43
|
+
|
|
44
|
+
[project.entry-points."agilab.apps"]
|
|
45
|
+
flight_telemetry = "agi_app_flight_telemetry:project_root"
|
|
46
|
+
flight_telemetry_project = "agi_app_flight_telemetry:project_root"
|
|
47
|
+
|
|
48
|
+
[dependency-groups]
|
|
49
|
+
dev = [
|
|
50
|
+
"pytest",
|
|
51
|
+
]
|
|
52
|
+
|
|
53
|
+
[tool.uv.sources.agi-core]
|
|
54
|
+
path = "../../core/agi-core"
|
|
55
|
+
editable = true
|
|
56
|
+
|
|
57
|
+
[build-system]
|
|
58
|
+
requires = ["setuptools>=68", "wheel"]
|
|
59
|
+
build-backend = "setuptools.build_meta"
|
|
60
|
+
|
|
61
|
+
[tool.setuptools]
|
|
62
|
+
include-package-data = false
|
|
63
|
+
package-dir = {"" = "src"}
|
|
64
|
+
packages = ["agi_app_flight_telemetry"]
|
|
65
|
+
|
|
66
|
+
[tool.setuptools.package-data]
|
|
67
|
+
"agi_app_flight_telemetry" = [
|
|
68
|
+
"project/**/*",
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
[tool.setuptools.exclude-package-data]
|
|
72
|
+
"agi_app_flight_telemetry" = [
|
|
73
|
+
"project/**/.venv/**",
|
|
74
|
+
"project/**/__pycache__/**",
|
|
75
|
+
"project/**/*.pyc",
|
|
76
|
+
"project/**/*.pyo",
|
|
77
|
+
"project/**/*.pyx",
|
|
78
|
+
"project/**/*.c",
|
|
79
|
+
"project/**/*.so",
|
|
80
|
+
"project/**/uv.lock",
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[tool.pytest.ini_options]
|
|
84
|
+
testpaths = ["test"]
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import importlib.util
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
from setuptools import setup
|
|
7
|
+
from setuptools.command.build_py import build_py as _build_py
|
|
8
|
+
from setuptools.command.sdist import sdist as _sdist
|
|
9
|
+
|
|
10
|
+
APP_PROJECT = 'flight_telemetry_project'
|
|
11
|
+
PACKAGE_IMPORT = 'agi_app_flight_telemetry'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _load_build_support():
|
|
15
|
+
module_path = Path(__file__).resolve().parents[4] / "src" / "agilab" / "lib" / "app_project_build_support.py"
|
|
16
|
+
if not module_path.exists():
|
|
17
|
+
return None
|
|
18
|
+
spec = importlib.util.spec_from_file_location("agilab_app_project_build_support", module_path)
|
|
19
|
+
if spec is None or spec.loader is None:
|
|
20
|
+
raise RuntimeError(f"Unable to load app project build support from {module_path}")
|
|
21
|
+
module = importlib.util.module_from_spec(spec)
|
|
22
|
+
spec.loader.exec_module(module)
|
|
23
|
+
return module
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _copy_payload(target_root: Path) -> None:
|
|
27
|
+
support = _load_build_support()
|
|
28
|
+
if support is None:
|
|
29
|
+
return
|
|
30
|
+
changed = support.copy_app_project_payload(APP_PROJECT, target_root)
|
|
31
|
+
for pyproject_path in changed:
|
|
32
|
+
print(f"[{PACKAGE_IMPORT}] sanitized packaged app manifest: {pyproject_path}")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class build_py(_build_py):
|
|
36
|
+
def run(self):
|
|
37
|
+
super().run()
|
|
38
|
+
_copy_payload(Path(self.build_lib) / PACKAGE_IMPORT / "project")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class sdist(_sdist):
|
|
42
|
+
def make_release_tree(self, base_dir, files):
|
|
43
|
+
super().make_release_tree(base_dir, files)
|
|
44
|
+
_copy_payload(Path(base_dir) / "src" / PACKAGE_IMPORT / "project")
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
setup(cmdclass={"build_py": build_py, "sdist": sdist})
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Installed AGILAB app project provider for flight_telemetry_project."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
APP_SLUG = 'flight_telemetry'
|
|
8
|
+
PROJECT_NAME = 'flight_telemetry_project'
|
|
9
|
+
PACKAGE_NAME = 'agi-app-flight-telemetry'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def package_root() -> Path:
|
|
13
|
+
return Path(__file__).resolve().parent
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def project_root() -> Path:
|
|
17
|
+
packaged_root = package_root() / "project" / PROJECT_NAME
|
|
18
|
+
if packaged_root.exists():
|
|
19
|
+
return packaged_root
|
|
20
|
+
source_root = Path(__file__).resolve().parents[4] / "apps" / "builtin" / PROJECT_NAME
|
|
21
|
+
return source_root if source_root.exists() else packaged_root
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def metadata() -> dict[str, str]:
|
|
25
|
+
return {
|
|
26
|
+
"slug": APP_SLUG,
|
|
27
|
+
"project": PROJECT_NAME,
|
|
28
|
+
"package": PACKAGE_NAME,
|
|
29
|
+
"project_root": str(project_root()),
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
__all__ = ["APP_SLUG", "PACKAGE_NAME", "PROJECT_NAME", "metadata", "package_root", "project_root"]
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Flight Telemetry Project
|
|
2
|
+
|
|
3
|
+
`flight_telemetry_project` is the AGILAB install id for this built-in public flight example.
|
|
4
|
+
|
|
5
|
+
The project focuses on a simple but useful workflow:
|
|
6
|
+
- ingest flight data from files under shared storage
|
|
7
|
+
- turn that input into a dataframe dataset under shared storage
|
|
8
|
+
- inspect the result in the default AGILAB `view_maps` page and the optional
|
|
9
|
+
`view_maps_network` page
|
|
10
|
+
|
|
11
|
+
## What it is good for
|
|
12
|
+
|
|
13
|
+
- a compact end-to-end AGILAB demo around real-world flight data
|
|
14
|
+
- validating the `PROJECT -> ORCHESTRATE -> WORKFLOW -> ANALYSIS` flow in one
|
|
15
|
+
packaged public app
|
|
16
|
+
- showing how a raw data source becomes a reusable dataset for visual exploration
|
|
17
|
+
|
|
18
|
+
## What is not implemented in the public version
|
|
19
|
+
|
|
20
|
+
This public built-in example is intentionally narrow. It does **not** implement:
|
|
21
|
+
- search-index ingestion inside this app; use an external app for that connector path
|
|
22
|
+
- richer trajectory-centric study workflows
|
|
23
|
+
- multi-stage trajectory reconstruction or scenario stitching
|
|
24
|
+
- dedicated cross-run comparison views for complex flight studies
|
|
25
|
+
- advanced trajectory replay, alignment, or domain-specific experiment dashboards
|
|
26
|
+
|
|
27
|
+
The public version is meant to stay approachable: one small app that demonstrates
|
|
28
|
+
data ingestion, pipeline reuse, and visual exploration without exposing a larger
|
|
29
|
+
specialized workflow.
|
|
30
|
+
|
|
31
|
+
## Main outputs
|
|
32
|
+
|
|
33
|
+
Each run produces a structured flight dataframe dataset that can then be reused by
|
|
34
|
+
analysis pages and downstream pipeline stages.
|
|
35
|
+
|
|
36
|
+
Workers also emit a `reduce_summary_worker_<id>.json` `ReduceArtifact` beside
|
|
37
|
+
the dataframe outputs. That summary records the reducer name, row count,
|
|
38
|
+
aircraft/source-file counts, written output files, and trajectory distance/time-span
|
|
39
|
+
fields so Release Decision can surface the flight run as first-class evidence.
|
|
40
|
+
|
|
41
|
+
## Typical flow
|
|
42
|
+
|
|
43
|
+
1. Select `flight_telemetry_project` in `PROJECT`.
|
|
44
|
+
2. Configure the input source in `ORCHESTRATE`.
|
|
45
|
+
3. Run the ingestion step.
|
|
46
|
+
4. Inspect or extend the generated recipe in `WORKFLOW`.
|
|
47
|
+
5. Explore the resulting dataset in `view_maps`, then open `view_maps_network`
|
|
48
|
+
when you want the network-style analysis route.
|
|
49
|
+
|
|
50
|
+
Notebook imports do not try to infer flight UI intent from arbitrary code cells.
|
|
51
|
+
The app declares compatible import views in `notebook_import_views.toml`, so the
|
|
52
|
+
generic notebook importer can write a `notebook_import_view_plan.json` sidecar
|
|
53
|
+
that matches declared flight views to produced artifacts.
|
|
54
|
+
|
|
55
|
+
## What this teases in AGILAB
|
|
56
|
+
|
|
57
|
+
This public example is only the entry point. The same framework can also support:
|
|
58
|
+
- trajectory-focused studies with custom app logic and dedicated pages
|
|
59
|
+
- replayable experiment pipelines built from generated or saved steps
|
|
60
|
+
- richer domain-specific overlays on top of processed flight artifacts
|
|
61
|
+
- distributed preprocessing and repeatable multi-run comparisons
|
|
62
|
+
- domain-specific workflows that go beyond a generic dataframe export
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "agilab.multi_app_dag.v1",
|
|
3
|
+
"dag_id": "flight-to-weather-template",
|
|
4
|
+
"label": "Flight to weather review",
|
|
5
|
+
"description": "App-owned DAG template that hands flight reduce context to the weather forecast review app.",
|
|
6
|
+
"execution": {
|
|
7
|
+
"mode": "sequential_dependency_order",
|
|
8
|
+
"runner_status": "controlled_contract_stage_execution",
|
|
9
|
+
"adapter": "controlled_contract_dag",
|
|
10
|
+
"stage_bindings": {
|
|
11
|
+
"flight_context": "flight_telemetry_project.flight_context",
|
|
12
|
+
"weather_forecast_review": "weather_forecast_project.weather_forecast_review"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"nodes": [
|
|
16
|
+
{
|
|
17
|
+
"id": "flight_context",
|
|
18
|
+
"app": "flight_telemetry_project",
|
|
19
|
+
"execution": {
|
|
20
|
+
"entrypoint": "flight_telemetry_project.flight_context",
|
|
21
|
+
"params": {
|
|
22
|
+
"data_source": "file",
|
|
23
|
+
"files": "*",
|
|
24
|
+
"nfile": 1,
|
|
25
|
+
"nskip": 0,
|
|
26
|
+
"nread": 0,
|
|
27
|
+
"sampling_rate": 1.0,
|
|
28
|
+
"datemin": "2020-01-01",
|
|
29
|
+
"datemax": "2021-01-01",
|
|
30
|
+
"output_format": "parquet"
|
|
31
|
+
},
|
|
32
|
+
"stages": [],
|
|
33
|
+
"data_in": "flight/dataset",
|
|
34
|
+
"data_out": "flight/dataframe",
|
|
35
|
+
"reset_target": false
|
|
36
|
+
},
|
|
37
|
+
"purpose": "Run the flight scenario and produce trajectory summary context for downstream review.",
|
|
38
|
+
"produces": [
|
|
39
|
+
{
|
|
40
|
+
"id": "flight_reduce_summary",
|
|
41
|
+
"kind": "reduce_summary",
|
|
42
|
+
"path": "flight_analysis/reduce_summary_worker_0.json"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "weather_forecast_review",
|
|
48
|
+
"app": "weather_forecast_project",
|
|
49
|
+
"execution": {
|
|
50
|
+
"entrypoint": "weather_forecast_project.weather_forecast_review",
|
|
51
|
+
"params": {
|
|
52
|
+
"files": "*.csv",
|
|
53
|
+
"nfile": 1,
|
|
54
|
+
"station": "Paris-Montsouris",
|
|
55
|
+
"target_column": "tmax_c",
|
|
56
|
+
"lags": 7,
|
|
57
|
+
"horizon_days": 7,
|
|
58
|
+
"validation_days": 9,
|
|
59
|
+
"n_estimators": 100,
|
|
60
|
+
"random_state": 42
|
|
61
|
+
},
|
|
62
|
+
"stages": [],
|
|
63
|
+
"data_in": "weather_forecast/dataset",
|
|
64
|
+
"data_out": "weather_forecast/results",
|
|
65
|
+
"reset_target": false
|
|
66
|
+
},
|
|
67
|
+
"purpose": "Use flight summary context to produce forecast quality metrics for review.",
|
|
68
|
+
"consumes": [
|
|
69
|
+
{
|
|
70
|
+
"id": "flight_reduce_summary",
|
|
71
|
+
"kind": "reduce_summary",
|
|
72
|
+
"path": "flight_analysis/reduce_summary_worker_0.json"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"produces": [
|
|
76
|
+
{
|
|
77
|
+
"id": "forecast_metrics",
|
|
78
|
+
"kind": "summary_metrics",
|
|
79
|
+
"path": "forecast_analysis/forecast_metrics.json"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"edges": [
|
|
85
|
+
{
|
|
86
|
+
"from": "flight_context",
|
|
87
|
+
"to": "weather_forecast_review",
|
|
88
|
+
"artifact": "flight_reduce_summary",
|
|
89
|
+
"handoff": "Use flight trajectory reduce summary as the forecast-review context."
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
schema = "agilab.notebook_import_views.v1"
|
|
2
|
+
app = "flight_telemetry_project"
|
|
3
|
+
description = "App-owned notebook import view declarations for flight artifacts."
|
|
4
|
+
|
|
5
|
+
[[views]]
|
|
6
|
+
id = "flight_map_dataframe"
|
|
7
|
+
module = "view_maps"
|
|
8
|
+
label = "Flight map"
|
|
9
|
+
description = "Inspect imported flight dataframe artifacts as latitude/longitude map layers."
|
|
10
|
+
priority = 10
|
|
11
|
+
required_artifacts_any = [
|
|
12
|
+
"flight/dataframe/*.parquet",
|
|
13
|
+
"flight/dataframe/*.csv",
|
|
14
|
+
"*/flight/dataframe/*.parquet",
|
|
15
|
+
"*/flight/dataframe/*.csv",
|
|
16
|
+
]
|
|
17
|
+
optional_artifacts = [
|
|
18
|
+
"flight/dataframe/*.json",
|
|
19
|
+
"*/flight/dataframe/*.json",
|
|
20
|
+
"reduce_summary_worker_*.json",
|
|
21
|
+
"*/reduce_summary_worker_*.json",
|
|
22
|
+
]
|
|
23
|
+
launch_note = "Open this first for the public flight demo dataframe map."
|
|
24
|
+
|
|
25
|
+
[views.settings_hints]
|
|
26
|
+
dataset_subpath = "flight/dataframe"
|
|
27
|
+
default_view = "view_maps"
|
|
28
|
+
|
|
29
|
+
[[views]]
|
|
30
|
+
id = "flight_network_overlay"
|
|
31
|
+
module = "view_maps_network"
|
|
32
|
+
label = "Flight network overlay"
|
|
33
|
+
description = "Reuse flight trajectory artifacts with optional topology and allocation overlays."
|
|
34
|
+
priority = 20
|
|
35
|
+
required_artifacts_any = [
|
|
36
|
+
"flight/dataframe/*.parquet",
|
|
37
|
+
"flight/dataframe/*.csv",
|
|
38
|
+
"*/flight/dataframe/*.parquet",
|
|
39
|
+
"*/flight/dataframe/*.csv",
|
|
40
|
+
"*trajectory*.parquet",
|
|
41
|
+
"*trajectory*.csv",
|
|
42
|
+
]
|
|
43
|
+
optional_artifacts = [
|
|
44
|
+
"pipeline/topology.*",
|
|
45
|
+
"*/pipeline/topology.*",
|
|
46
|
+
"pipeline/edges.*",
|
|
47
|
+
"*/pipeline/edges.*",
|
|
48
|
+
"pipeline/routing_edges.*",
|
|
49
|
+
"*/pipeline/routing_edges.*",
|
|
50
|
+
"pipeline/allocations*.*",
|
|
51
|
+
"*/pipeline/allocations*.*",
|
|
52
|
+
]
|
|
53
|
+
launch_note = "Use this when the imported notebook also produced topology, edge, allocation, or trajectory overlay files."
|
|
54
|
+
|
|
55
|
+
[views.query_params]
|
|
56
|
+
datadir_rel = "flight/dataframe"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
digraph flight_pipeline {
|
|
2
|
+
rankdir=LR;
|
|
3
|
+
graph [fontname="Helvetica", fontsize=10];
|
|
4
|
+
node [shape=box, style="rounded,filled", fillcolor="#EEF7F2", color="#3F6B57", fontname="Helvetica", fontsize=10];
|
|
5
|
+
edge [color="#4F8068", arrowsize=0.8];
|
|
6
|
+
|
|
7
|
+
dataset [label="Flight telemetry input\nCSV trajectories"];
|
|
8
|
+
decode [label="Trajectory parsing\nlat/lon/time normalization"];
|
|
9
|
+
enrich [label="Route enrichment\nsegment distance + timing"];
|
|
10
|
+
reduce [label="Reduce summary\nworker trajectory metrics"];
|
|
11
|
+
artifacts [label="Map-ready artifacts\ntrajectory CSV + summaries"];
|
|
12
|
+
analysis [label="ANALYSIS views\nmaps + barycentric review"];
|
|
13
|
+
|
|
14
|
+
dataset -> decode -> enrich -> reduce -> artifacts -> analysis;
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "flight_telemetry_project"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Built-in AGILab example app (flight telemetry preprocessing)"
|
|
5
|
+
requires-python = ">=3.11"
|
|
6
|
+
dependencies = ["agi-env>=2026.05.13.post3,<2027.0", "agi-node>=2026.05.13.post3,<2027.0", "agi-cluster>=2026.05.13.post3,<2027.0", "polars[rtcompat]", "pydantic", "py7zr", "streamlit>=1.56.0"]
|
|
7
|
+
|
|
8
|
+
[build-system]
|
|
9
|
+
requires = ["setuptools"]
|
|
10
|
+
build-backend = "setuptools.build_meta"
|