File size: 2,868 Bytes
a3b21d2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
"""
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()