This commit is contained in:
Felix Delattre 2026-05-04 09:53:12 +02:00
parent 33746b35f9
commit 77e1488830
4 changed files with 343 additions and 87 deletions

91
run.py
View file

@ -1,64 +1,73 @@
from fusion import run_all_efast_scenarios, run_all_efast_itb_scenarios
from postprocessing import (
post_process_all_scenarios,
post_process_all_itb_scenarios,
post_process_timeseries,
)
"""Pipeline entry point.
Active snippet below only **regenerates metrics.json** (temporal, baseline,
`derived`, `residual_vs_phenocam`). Requires existing post-processed GCC
timeseries under `data/{site}/{season}/processed_*`.
Un-comment imports and steps below for acquisition fusion post-process.
"""
# from fusion import run_all_efast_scenarios, run_all_efast_itb_scenarios
# from postprocessing import (
# post_process_all_scenarios,
# post_process_all_itb_scenarios,
# post_process_timeseries,
# )
# from acquisition_s2 import download_s2
# from acquisition_s3 import download_s3
# from acquisition_phenocam import download_phenocam
from preselection import create_timeseries
from preparation import (
prepare_s2,
prepare_s3,
prepare_s2_gcc_for_itb,
prepare_s3_gcc_for_itb,
)
from metrics_indices import create_prepared_fusion_timeseries
# from preselection import create_timeseries
# from preparation import (
# prepare_s2,
# prepare_s3,
# prepare_s2_gcc_for_itb,
# prepare_s3_gcc_for_itb,
# )
# from metrics_indices import create_prepared_fusion_timeseries
from metrics_stats import calculate_all_metrics
from phenology_timesat import write_phenocam_phenology_for_site
# from phenology_timesat import write_phenocam_phenology_for_site
def run_pipeline(season, site_position, site_name):
"""Run pipeline."""
"""Run pipeline (metrics-only by default; see module docstring)."""
try:
# print(f"Downloading S2, S3, and PhenoCam: {site_name}, {season}")
# download_s2(season, site_position, site_name)
# download_s3(season, site_position, site_name)
# download_phenocam(season, site_position, site_name)
print(f"PhenoCam phenology (50 % amplitude): {site_name}, {season}")
write_phenocam_phenology_for_site(site_name, season)
# print(f"PhenoCam phenology (50 % amplitude): {site_name}, {season}")
# write_phenocam_phenology_for_site(site_name, season)
print(f"Creating preselection timeseries: {site_name}, {season}")
create_timeseries(season, site_position, site_name)
# print(f"Creating preselection timeseries: {site_name}, {season}")
# create_timeseries(season, site_position, site_name)
print(f"Preparing S2 and S3 for fusion: {site_name}, {season}")
for strategy in ["aggressive", "nonaggressive"]:
prepare_s2(season, site_position, site_name, cleaning_strategy=strategy)
prepare_s3(season, site_position, site_name, cleaning_strategy=strategy)
# print(f"Preparing S2 and S3 for fusion: {site_name}, {season}")
# for strategy in ["aggressive", "nonaggressive"]:
# prepare_s2(season, site_position, site_name, cleaning_strategy=strategy)
# prepare_s3(season, site_position, site_name, cleaning_strategy=strategy)
print(f"Running EFAST fusion for all scenarios: {site_name}, {season}")
run_all_efast_scenarios(season, site_position, site_name)
# print(f"Running EFAST fusion for all scenarios: {site_name}, {season}")
# run_all_efast_scenarios(season, site_position, site_name)
print(f"Index-then-Blend (ItB): {site_name}, {season}")
for strategy in ["aggressive", "nonaggressive"]:
prepare_s2_gcc_for_itb(
season, site_position, site_name, cleaning_strategy=strategy
)
prepare_s3_gcc_for_itb(
season, site_position, site_name, cleaning_strategy=strategy
)
run_all_efast_itb_scenarios(season, site_position, site_name)
post_process_all_itb_scenarios(season, site_position, site_name)
# print(f"Index-then-Blend (ItB): {site_name}, {season}")
# for strategy in ["aggressive", "nonaggressive"]:
# prepare_s2_gcc_for_itb(
# season, site_position, site_name, cleaning_strategy=strategy
# )
# prepare_s3_gcc_for_itb(
# season, site_position, site_name, cleaning_strategy=strategy
# )
# run_all_efast_itb_scenarios(season, site_position, site_name)
# post_process_all_itb_scenarios(season, site_position, site_name)
print(f"Creating prepared/fusion timeseries: {site_name}, {season}")
create_prepared_fusion_timeseries(season, site_position, site_name)
# print(f"Creating prepared/fusion timeseries: {site_name}, {season}")
# create_prepared_fusion_timeseries(season, site_position, site_name)
print(f"Post-processing (crop): {site_name}, {season}")
post_process_all_scenarios(season, site_position, site_name)
post_process_timeseries(season, site_position, site_name)
# print(f"Post-processing (crop): {site_name}, {season}")
# post_process_all_scenarios(season, site_position, site_name)
# post_process_timeseries(season, site_position, site_name)
print(f"Calculating metrics: {site_name}, {season}")
calculate_all_metrics(season, site_name, site_position)