9984de1
commit 9984de1
8 files changed
+39 -5
Showing 8 changed files+39-5
▼CHANGELOG.md
+3-0
| @@ -68,5 +68,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 | ||
68 | 68 | mercator switch; forecast rows keyed per station-hour instead of collapsing |
69 | 69 | to a single hour; flight history bounded by age and size. |
70 | 70 | |
71 | +Archived on Zenodo: version DOI [10.5281/zenodo.22790202](https://doi.org/10.5281/zenodo.22790202), | |
72 | +concept DOI [10.5281/zenodo.22790201](https://doi.org/10.5281/zenodo.22790201). | |
73 | + | |
71 | 74 | [Unreleased]: https://github.com/swadhinbiswas/eu-air-traffic/compare/v0.1.0...HEAD |
72 | 75 | [0.1.0]: https://github.com/swadhinbiswas/eu-air-traffic/releases/tag/v0.1.0 |
73 | 76 | |
▼CITATION.cff
+4-0
| @@ -15,6 +15,7 @@ authors: | ||
15 | 15 | orcid: "https://orcid.org/0009-0005-2980-6651" |
16 | 16 | version: 0.1.0 |
17 | 17 | date-released: "2026-09-16" |
18 | +doi: 10.5281/zenodo.22790202 | |
18 | 19 | license: MIT |
19 | 20 | repository-code: "https://github.com/swadhinbiswas/eu-air-traffic" |
20 | 21 | url: "https://airtraffic-eu.pages.dev" |
| @@ -28,6 +29,9 @@ keywords: | ||
28 | 29 | - Parquet |
29 | 30 | - time series |
30 | 31 | identifiers: |
32 | + - type: doi | |
33 | + value: "10.5281/zenodo.22790201" | |
34 | + description: "Concept DOI, resolves to the latest version" | |
31 | 35 | - type: url |
32 | 36 | value: "https://huggingface.co/datasets/swadhinbiswas/air-traffic" |
33 | 37 | description: "Dataset lake holding the Bronze and Silver layers" |
34 | 38 | |
▼README.md
+12-0
| @@ -7,6 +7,7 @@ | ||
7 | 7 | [](https://github.com/swadhinbiswas/eu-air-traffic/actions/workflows/ci.yml) |
8 | 8 | [](https://github.com/swadhinbiswas/eu-air-traffic/actions/workflows/lake.yml) |
9 | 9 | [](LICENSE) |
10 | +[](https://doi.org/10.5281/zenodo.22790201) | |
10 | 11 | |
11 | 12 | Live dashboard: https://airtraffic-eu.pages.dev |
12 | 13 | · Live API: https://vps.swadhin.cv/health |
| @@ -192,6 +193,17 @@ uv run dbt build --project-dir dbt --profiles-dir dbt # 103 models and tests | ||
192 | 193 | cd web && npm run build # type-check + production build |
193 | 194 | ``` |
194 | 195 | |
196 | +## Citation | |
197 | + | |
198 | +The software is archived on Zenodo. Cite the version you used, which for this | |
199 | +release is v0.1.0: | |
200 | + | |
201 | +- Version DOI: https://doi.org/10.5281/zenodo.22790202 | |
202 | +- Concept DOI, always the latest version: https://doi.org/10.5281/zenodo.22790201 | |
203 | + | |
204 | +`CITATION.cff` carries the machine-readable form, and `paper/` holds the JOSS | |
205 | +manuscript draft. | |
206 | + | |
195 | 207 | ## License |
196 | 208 | |
197 | 209 | MIT — see [LICENSE](LICENSE). |
198 | 210 | |
▼docs/huggingface-dataset.md
+7-0
| @@ -45,6 +45,13 @@ other than `swadhinbiswas/air-traffic`, it refuses a private repo, and it | ||
45 | 45 | skips cleanly without `HF_TOKEN`. Field lists come from the column schemas in |
46 | 46 | `scripts/hf_dataset_card.py`, so a schema change there is what updates the card. |
47 | 47 | |
48 | +## Citing | |
49 | + | |
50 | +The dataset is a companion to the software that builds it, archived on Zenodo | |
51 | +at https://doi.org/10.5281/zenodo.22790202 (v0.1.0, concept DOI | |
52 | +https://doi.org/10.5281/zenodo.22790201). Cite the dataset directly from the card | |
53 | +on the Hub page when you only need the data. | |
54 | + | |
48 | 55 | ## Cadence and freshness |
49 | 56 | |
50 | 57 | The collector writes Bronze continuously (positions about every 5 minutes, |
51 | 58 | |
▼hf_readme.md
+3-0
| @@ -206,6 +206,9 @@ MIT — same license as the [eu-air-traffic](https://github.com/swadhinbiswas/eu | ||
206 | 206 | } |
207 | 207 | ``` |
208 | 208 | |
209 | +The software that produces this dataset is archived at | |
210 | +[10.5281/zenodo.22790202](https://doi.org/10.5281/zenodo.22790202) (v0.1.0). | |
211 | + | |
209 | 212 | ## Limitations |
210 | 213 | |
211 | 214 | - OpenSky movements carry no schedule, so delay fields are null there; use AirLabs schedules or Gold delay marts for punctuality. |
212 | 215 | |
▼paper/paper.bib
+4-5
| @@ -26,14 +26,13 @@ | ||
26 | 26 | note = {Accessed 15 September 2026} |
27 | 27 | } |
28 | 28 | |
29 | -% The archived release of this software. Once v0.1.0 is tagged and archived on | |
30 | -% Zenodo, add its DOI here (doi = {10.5281/zenodo.XXXXXXX}) and drop the note. | |
31 | 29 | @misc{eu-air-traffic, |
32 | 30 | author = {Biswas, Swadhin}, |
33 | 31 | title = {{EU Air Traffic}: an open platform for live and historical European airspace analytics}, |
34 | 32 | year = {2026}, |
35 | 33 | version = {0.1.0}, |
36 | - publisher = {GitHub}, | |
37 | - url = {https://github.com/swadhinbiswas/eu-air-traffic}, | |
38 | - note = {Archived release; DOI to be added} | |
34 | + publisher = {Zenodo}, | |
35 | + doi = {10.5281/zenodo.22790202}, | |
36 | + url = {https://doi.org/10.5281/zenodo.22790202}, | |
37 | + note = {Archived software release, version 0.1.0 (concept DOI 10.5281/zenodo.22790201)} | |
39 | 38 | } |
40 | 39 | |
▼scripts/hf_dataset_card.py
+5-0
| @@ -36,6 +36,8 @@ def get_card_repo_path() -> str: | ||
36 | 36 | REPO_ID = "swadhinbiswas/air-traffic" |
37 | 37 | REPO_URL = "https://huggingface.co/datasets/swadhinbiswas/air-traffic" |
38 | 38 | GITHUB_URL = "https://github.com/swadhinbiswas/eu-air-traffic" |
39 | +SOFTWARE_DOI = "10.5281/zenodo.22790202" | |
40 | +SOFTWARE_DOI_URL = "https://doi.org/10.5281/zenodo.22790202" | |
39 | 41 | |
40 | 42 | COLUMN_LIMITATION_NOTE_BY_SPLIT = { |
41 | 43 | "positions": "Type-specific columns may be null (e.g. squawk only for transponders that send it).", |
| @@ -438,6 +440,9 @@ def _body() -> str: | ||
438 | 440 | "}", |
439 | 441 | "```", |
440 | 442 | "", |
443 | + "The software that produces this dataset is archived at", | |
444 | + "[%s](%s) (v0.1.0)." % (SOFTWARE_DOI, SOFTWARE_DOI_URL), | |
445 | + "", | |
441 | 446 | "## Limitations", |
442 | 447 | "", |
443 | 448 | "- OpenSky movements carry no schedule, so delay fields are null there; use AirLabs schedules or Gold delay marts for punctuality.", |
444 | 449 | |
▼tests/unit/test_hf_dataset_card.py
+1-0
| @@ -119,6 +119,7 @@ def test_external_urls_resolve_to_real_pages(): | ||
119 | 119 | assert url.rstrip("}).,") in ( |
120 | 120 | card.REPO_URL, |
121 | 121 | card.GITHUB_URL, |
122 | + card.SOFTWARE_DOI_URL, | |
122 | 123 | ) |
123 | 124 | |
124 | 125 | |
125 | 126 | |