bgroenks96 / generative-downscaling

Research and experiments for downscaling climate/weather data via generative learning

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Generative downscaling

This repository contains experiment code for the Master's thesis, ClimAlign: Unsupservised statistical downscaling of climate variables via normalizing flows (ProQuest, Full text).

Pre-formatted datasets are not currently available from any public sources. However, the raw data for ERA-interim and Rasmussen/WRF can be downloaded from NCAR's servers.

The code in this repository uses xarray and dask. The data is assumed to be in ZARR format. You can use xarray to convert NetCDF files into ZARR datasets.

Overview

Data loaders are provided by datasource.py. EraiRasDataLoader and NoaaLivnehDataLoader provide functions which return file mappings that can be passed to functions such as xarray's open_zarr. See the source code in this file for the expected ZARR naming conventions. A Google Cloud service account key file with GCS access must be copied to the repository root directory and named gcs.secret.json.

The *-downscaling-* Jupyter notebooks contain experimental code for testing the baseline and ClimAlign models. The qualitative-analysis and quantitative-analysis notebooks contain the code used to produce the figures and tables in the paper. The experiments module contains the experiment scripts for each model and experiment set. The core-experiment-suite.sh runs all experiments for the primary quantiative results. Results are stored locally using MLflow.

The implementation of the ClimAlign model (referred to in this code as Joint Flow-based Latent Variable Model, JFLVM) can be found in the normalizing-flows git-submodule.

Baseline implementations can be found in the baselines directory/module.

Necessary packages are specified by the conda envirionment.yml file.

Please send any inquiries to brian.groenke@colorado.edu.

About

Research and experiments for downscaling climate/weather data via generative learning

License:MIT License


Languages

Language:Jupyter Notebook 97.4%Language:Python 2.6%Language:Shell 0.1%