diff --git a/docs/02 - Préparation des données/index.md b/docs/02 - Préparation des données/index.md index cd50798..2d5d88c 100644 --- a/docs/02 - Préparation des données/index.md +++ b/docs/02 - Préparation des données/index.md @@ -115,6 +115,17 @@ python "docs/02 - Préparation des données/scripts/make_minutely_dataset.py" Le script produit `data/weather_minutely.csv`. Pensez à définir `STATION_LATITUDE`, `STATION_LONGITUDE` et `STATION_ELEVATION` dans votre `.env` pour permettre le calcul de la position du soleil ; sinon, seule la colonne `season` sera ajoutée. +## Pipeline simplifié + +Un script tout simple permet de faire automatiquement tout ce qu'on vient de voir. +Il supprime **tous** les fichiers CSV existants : il faudra donc relancer la génération des images dans les étapes suivantes pour qu'elles intègrent les nouvelles données. + +```shell +python -m scripts.refresh_data_pipeline +``` + +## Vérification des données + On peut s'assurer que plus aucune information n'est manquante : ```shell diff --git a/scripts/refresh_data_pipeline.py b/scripts/refresh_data_pipeline.py new file mode 100644 index 0000000..b02d770 --- /dev/null +++ b/scripts/refresh_data_pipeline.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +"""Lance l'ensemble du pipeline de préparation des données brutes en une commande.""" + +from __future__ import annotations + +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +COMMANDS = [ + [sys.executable, "-m", "scripts.clean_csv_exports"], + [sys.executable, "docs/02 - Préparation des données/scripts/export_station_data_full.py"], + [sys.executable, "docs/02 - Préparation des données/scripts/format_raw_csv.py"], + [sys.executable, "docs/02 - Préparation des données/scripts/fill_formatted_1s.py"], + [sys.executable, "docs/02 - Préparation des données/scripts/make_minutely_dataset.py"], +] + + +def run_commands() -> int: + for cmd in COMMANDS: + print(f"\n=== Exécution : {' '.join(cmd)} ===") + result = subprocess.run(cmd, cwd=ROOT, check=False) + if result.returncode != 0: + print(f"✘ Commande échouée ({result.returncode}) : {' '.join(cmd)}") + return result.returncode + print("✔ OK") + return 0 + + +def main() -> None: + code = run_commands() + if code == 0: + print("\n✔ Pipeline de préparation exécuté sans erreur.") + sys.exit(code) + + +if __name__ == "__main__": + main()