""" generate_sample_data.py — One-time script to create demo NetCDF files. Run this before starting the API: python scripts/generate_sample_data.py Generates: backend/data/sample/maharashtra_rain.nc backend/data/sample/maharashtra_temp.nc backend/data/sample/maharashtra_lst.nc """ import sys import logging from pathlib import Path # Add backend to path sys.path.insert(0, str(Path(__file__).parent.parent)) logging.basicConfig( level=logging.INFO, format="%(asctime)s %(levelname)s: %(message)s", datefmt="%H:%M:%S", ) logger = logging.getLogger(__name__) def main(): logger.info("šŸŒ§ļø Generating Maharashtra climate sample data...") try: from backend.pipeline.ingest_imd import ingest_rainfall, ingest_temperature from backend.pipeline.ingest_mosdac import ingest_lst # ── Rainfall: 2015–2023 ─────────────────────────────────────── logger.info("\n[1/3] Rainfall dataset (2015–2023)...") ds_rain = ingest_rainfall(start_year=2015, end_year=2023) print(f" āœ… Rain: {ds_rain.dims} | vars={list(ds_rain.data_vars)}") # ── Temperature: 2015–2023 ──────────────────────────────────── logger.info("\n[2/3] Temperature dataset (2015–2023)...") ds_temp = ingest_temperature(start_year=2015, end_year=2023) print(f" āœ… Temp: {ds_temp.dims} | vars={list(ds_temp.data_vars)}") # ── LST: MOSDAC (2020–2023) ─────────────────────────────────── logger.info("\n[3/3] Land Surface Temperature (MOSDAC/INSAT)...") ds_lst = ingest_lst() print(f" āœ… LST: {ds_lst.dims} | vars={list(ds_lst.data_vars)}") # ── Validation ──────────────────────────────────────────────── logger.info("\nšŸ” Validating generated files...") import xarray as xr sample_dir = Path(__file__).parent.parent / "backend" / "data" / "sample" for nc_file in sample_dir.glob("*.nc"): ds = xr.open_dataset(nc_file) nan_count = sum(int(ds[v].isnull().sum()) for v in ds.data_vars) print(f" šŸ“ {nc_file.name}: {ds.dims} | NaN count: {nan_count}") ds.close() logger.info("\nšŸŽ‰ All sample data generated successfully!") logger.info(f" Location: {sample_dir}") except ImportError as e: logger.error(f"Missing dependency: {e}") logger.error("Install with: pip install xarray netCDF4 numpy scipy") sys.exit(1) if __name__ == "__main__": main()