Ritu-AI / scripts /generate_sample_data.py
SeriousSam07's picture
Backup before Problem Statement changes
a3b21d2
Raw History Blame Contribute Delete
2.87 kB
"""
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()