deepguess's picture
Update StormScope Fast Space (live)
0c2fde1 verified
Raw
History Blame Contribute Delete
1.4 kB
#!/usr/bin/env python
"""GOES/MRMS data backends for StormScope.
Two backends:
- 'earth2studio' (default): uses earth2studio's built-in GOES/MRMS data sources (Python S3 fetch).
- 'rust': uses the rustwx-backed `stormscope_obs` extension for parallel download + pure-Rust decode,
exposed through earth2studio-compatible RustGOES / RustMRMS adapters (see M2).
`install_backend(core, backend)` swaps the data-source classes that `core.run_stormscope` uses, so the
rest of the pipeline (interpolation, sampling, output) is unchanged.
"""
def install_backend(core, backend: str):
"""Select the GOES/MRMS data backend on `core`. Falls back to earth2studio if rust is missing."""
if backend == "earth2studio":
core.RUST_BACKEND = False
return
if backend == "rust":
try:
import stormscope_obs # noqa: F401 (compiled rust extension)
import h5netcdf # noqa: F401 (GOES decode)
core.RUST_BACKEND = True
print("[rustwx_stormscope] rust data backend active (parallel download + MRMS rust decode)", flush=True)
except Exception as e:
core.RUST_BACKEND = False
print(f"[rustwx_stormscope] rust backend unavailable ({type(e).__name__}); "
f"falling back to earth2studio fetch", flush=True)
return
raise ValueError(f"unknown backend {backend!r}")