{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Running Parameterized FCNNs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have taken time to explore and understand FCNNs, we will now run a parameterization of our own." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Import required modules\n", "import numpy as np\n", "import xarray as xr\n", "import matplotlib.pyplot as plt\n", "import pyqg\n", "import json\n", "import fsspec\n", "from pyqg_parameterization_benchmarks.neural_networks import FCNNParameterization, FullyCNN\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below we are loading a sample dataset, as training data for our parameterization, of a high-resolution simulation in the eddy configuration started from random noise and run over a span of 10 simulation years that has been coarsened using Operator 2 (a spectral truncation + softer Gaussian filter). " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.Dataset>\n", "Dimensions: (time: 87, lev: 2, y: 64, x: 64, l: 64, k: 33, lev_mid: 1)\n", "Coordinates:\n", " * k (k) float64 0.0 6.283e-06 ... 0.0001948 0.0002011\n", " * l (l) float64 0.0 6.283e-06 ... -1.257e-05 -6.283e-06\n", " * lev (lev) int64 1 2\n", " * lev_mid (lev_mid) float64 1.5\n", " * time (time) float64 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0\n", " * x (x) float64 7.812e+03 2.344e+04 ... 9.766e+05 9.922e+05\n", " * y (y) float64 7.812e+03 2.344e+04 ... 9.766e+05 9.922e+05\n", "Data variables: (12/23)\n", " Qy (time, lev) float64 1.039e-10 -7.222e-12 ... -7.222e-12\n", " Ubg (time, lev) float64 0.025 0.0 0.025 0.0 ... 0.0 0.025 0.0\n", " dqdt (time, lev, y, x) float64 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0\n", " dqhdt (time, lev, l, k) complex128 0j 0j 0j 0j ... 0j 0j 0j 0j\n", " p (time, lev, y, x) float64 -39.07 -62.7 ... -77.82 33.89\n", " ph (time, lev, l, k) complex128 0j ... (11.85916120645425...\n", " ... ...\n", " v (time, lev, y, x) float64 -0.001415 ... 0.006776\n", " v_subgrid_forcing (time, lev, y, x) float64 2.498e-13 ... 8.655e-11\n", " vfull (time, lev, y, x) float64 -0.001415 ... 0.006776\n", " vh (time, lev, l, k) complex128 0j ... 0.007440851489267999j\n", " vq_subgrid_flux (time, lev, y, x) float64 -2.542e-12 ... 1.934e-10\n", " vv_subgrid_flux (time, lev, y, x) float64 3.388e-07 ... 1.838e-06\n", "Attributes: (12/23)\n", " pyqg:L: 1000000.0\n", " pyqg:M: 4096\n", " pyqg:W: 1000000.0\n", " pyqg:beta: 1.5e-11\n", " pyqg:del2: 0.8\n", " pyqg:delta: 0.25\n", " ... ...\n", " pyqg:tavestart: 315360000.0\n", " pyqg:tc: 0\n", " pyqg:tmax: 1576800000.0\n", " pyqg:twrite: 1000.0\n", " reference: https://pyqg.readthedocs.io/en/latest/index.html\n", " title: pyqg: Python Quasigeostrophic Model
<xarray.Dataset>\n", "Dimensions: (time: 87, lev: 2, y: 64, x: 64)\n", "Coordinates:\n", " * lev (lev) int64 1 2\n", " * time (time) float64 0.0 0.0 ... 0.0 0.0\n", " * x (x) float64 7.812e+03 ... 9.922e+05\n", " * y (y) float64 7.812e+03 ... 9.922e+05\n", "Data variables: (12/14)\n", " q_subgrid_forcing (time, lev, y, x) float64 5.552e-...\n", " q_subgrid_forcing_predictions (time, lev, y, x) float64 -6.531e...\n", " q_subgrid_forcing_spatial_mse (lev, y, x) float64 1.242e-23 ......\n", " q_subgrid_forcing_temporal_mse (time, lev) float64 2.242e-27 ......\n", " q_subgrid_forcing_mse (lev) float64 9.821e-24 1.093e-27\n", " q_subgrid_forcing_spatial_skill (lev, y, x) float64 0.0204 ... 0....\n", " ... ...\n", " q_subgrid_forcing_spatial_correlation (lev, y, x) float64 0.1719 ... 0....\n", " q_subgrid_forcing_temporal_correlation (time, lev) float64 0.004937 ... ...\n", " q_subgrid_forcing_correlation (lev) float64 0.5452 0.8939\n", " correlation (lev) float64 0.5452 0.8939\n", " mse (lev) float64 9.821e-24 1.093e-27\n", " skill (lev) float64 0.2967 0.7989\n", "Attributes: (12/23)\n", " pyqg:L: 1000000.0\n", " pyqg:M: 4096\n", " pyqg:W: 1000000.0\n", " pyqg:beta: 1.5e-11\n", " pyqg:del2: 0.8\n", " pyqg:delta: 0.25\n", " ... ...\n", " pyqg:tavestart: 315360000.0\n", " pyqg:tc: 0\n", " pyqg:tmax: 1576800000.0\n", " pyqg:twrite: 1000.0\n", " reference: https://pyqg.readthedocs.io/en/latest/index.html\n", " title: pyqg: Python Quasigeostrophic Model
<xarray.Dataset>\n", "Dimensions: (time: 87, lev: 2, y: 64, x: 64)\n", "Coordinates:\n", " * lev (lev) int64 1 2\n", " * time (time) float64 0.0 0.0 ... 0.0 0.0\n", " * x (x) float64 7.812e+03 ... 9.922e+05\n", " * y (y) float64 7.812e+03 ... 9.922e+05\n", "Data variables: (12/14)\n", " q_subgrid_forcing (time, lev, y, x) float64 5.552e-...\n", " q_subgrid_forcing_predictions (time, lev, y, x) float64 -6.373e...\n", " q_subgrid_forcing_spatial_mse (lev, y, x) float64 7.614e-24 ......\n", " q_subgrid_forcing_temporal_mse (time, lev) float64 3.353e-27 ......\n", " q_subgrid_forcing_mse (lev) float64 4.449e-24 8.302e-28\n", " q_subgrid_forcing_spatial_skill (lev, y, x) float64 0.3996 ... 0.536\n", " ... ...\n", " q_subgrid_forcing_spatial_correlation (lev, y, x) float64 0.7024 ... 0....\n", " q_subgrid_forcing_temporal_correlation (time, lev) float64 -0.006284 ......\n", " q_subgrid_forcing_correlation (lev) float64 0.8257 0.9204\n", " correlation (lev) float64 0.8257 0.9204\n", " mse (lev) float64 4.449e-24 8.302e-28\n", " skill (lev) float64 0.6814 0.8472\n", "Attributes: (12/23)\n", " pyqg:L: 1000000.0\n", " pyqg:M: 4096\n", " pyqg:W: 1000000.0\n", " pyqg:beta: 1.5e-11\n", " pyqg:del2: 0.8\n", " pyqg:delta: 0.25\n", " ... ...\n", " pyqg:tavestart: 315360000.0\n", " pyqg:tc: 0\n", " pyqg:tmax: 1576800000.0\n", " pyqg:twrite: 1000.0\n", " reference: https://pyqg.readthedocs.io/en/latest/index.html\n", " title: pyqg: Python Quasigeostrophic Model