diff --git a/doc/index.rst b/doc/index.rst index 550366e6..22087392 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -48,6 +48,7 @@ Contents notebooks/Compare_algorithms notebooks/Reuse_regridder notebooks/Using_LocStream + notebooks/Masking large_problems_on_HPC .. toctree:: diff --git a/doc/notebooks/Masking.ipynb b/doc/notebooks/Masking.ipynb new file mode 100644 index 00000000..4938538e --- /dev/null +++ b/doc/notebooks/Masking.ipynb @@ -0,0 +1,670 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Masking in xESMF\n", + "\n", + "(contributed by [Raphael Dussin](https://github.com/raphaeldussin))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By default, xESMF treats NaNs like regular values hence potentially resulting in missing values bleeding into the regridded field and creating insconsistencies in the resulting masked array. To overcome this issue, we can use explicit masking of the source and target grids." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "import xesmf\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings(\"ignore\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparing the grids" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For this tutorial, we're using a dataset from the ROMS ocean model from this [xarray tutorial](http://xarray.pydata.org/en/stable/examples/ROMS_ocean_model.html)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "ds = xr.tutorial.open_dataset('ROMS_example.nc', chunks={'ocean_time': 1})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To use conservative regidding, we need the cells corners. Since they are not provided,\n", + "we are creating some using a crude approximation. **Please don't try this at home!**" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "lon_centers = ds['lon_rho'].values\n", + "lat_centers = ds['lat_rho'].values\n", + "\n", + "lon_corners = 0.25 *(lon_centers[:-1,:-1] + \n", + " lon_centers[1:,:-1] +\n", + " lon_centers[:-1,1:] +\n", + " lon_centers[1:,1:])\n", + "\n", + "lat_corners = 0.25 *(lat_centers[:-1,:-1] + \n", + " lat_centers[1:,:-1] +\n", + " lat_centers[:-1,1:] +\n", + " lat_centers[1:,1:])\n", + "\n", + "ds['lon_psi'] = xr.DataArray(data=lon_corners, dims=('eta_psi', 'xi_psi'))\n", + "ds['lat_psi'] = xr.DataArray(data=lat_corners, dims=('eta_psi', 'xi_psi'))\n", + "\n", + "ds = ds.assign_coords({'lon_psi': ds['lon_psi'],\n", + " 'lat_psi': ds['lat_psi']})\n", + "\n", + "# remove exterior rho points and cut 9 extra points to make\n", + "# zeta divisible by 10 for coarsening\n", + "ds = ds.isel(eta_rho=slice(1,-10), xi_rho=slice(1,-10),\n", + " eta_psi=slice(0,-9), xi_psi=slice(0,-9))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We also need a coarse resolution grid. We're going to build one by coarsening the ROMS dataset. **coarsen.mean()** typically works as a nan-mean on the 10x10 blocks of the grid so the resulting land mask looks like a flooded version of the original." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "ds_coarse = xr.Dataset()\n", + "\n", + "ds_coarse['zeta'] = xr.DataArray(ds['zeta'].coarsen(xi_rho=10, eta_rho=10).mean().values,\n", + " dims=('ocean_time', 'eta_rho', 'xi_rho'))\n", + "# we want to subsample coordinates instead of coarsening them\n", + "ds_coarse['lon_rho'] = xr.DataArray(ds['lon_rho'].values[::10,::10],\n", + " dims=('eta_rho', 'xi_rho'))\n", + "ds_coarse['lon_psi'] = xr.DataArray(ds['lon_psi'].values[::10,::10],\n", + " dims=('eta_psi', 'xi_psi'))\n", + "ds_coarse['lat_rho'] = xr.DataArray(ds['lat_rho'].values[::10,::10],\n", + " dims=('eta_rho', 'xi_rho'))\n", + "ds_coarse['lat_psi'] = xr.DataArray(ds['lat_psi'].values[::10,::10],\n", + " dims=('eta_psi', 'xi_psi'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now have our 2 grids to test the masking in xESMF. Now let's say we want to conservatively remap the fine ocean model output onto the coarse resolution grid." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds['zeta'].isel(ocean_time=0).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds_coarse['zeta'].isel(ocean_time=0).plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regridding without a mask" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As usual, xESMF expects fixed variable names for longitude/latitude in cell centers and corners:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "ds['lon'] = ds['lon_rho']\n", + "ds['lat'] = ds['lat_rho']\n", + "ds['lon_b'] = ds['lon_psi']\n", + "ds['lat_b'] = ds['lat_psi']\n", + "\n", + "ds_coarse['lon'] = ds_coarse['lon_rho']\n", + "ds_coarse['lat'] = ds_coarse['lat_rho']\n", + "ds_coarse['lon_b'] = ds_coarse['lon_psi']\n", + "ds_coarse['lat_b'] = ds_coarse['lat_psi']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In our first test, there is no masking involved and we define the regridder the typical way:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwrite existing file: conservative_normed_180x360_18x36.nc \n", + " You can set reuse_weights=True to save computing time.\n" + ] + } + ], + "source": [ + "regrid_nomask = xesmf.Regridder(ds, ds_coarse, method='conservative_normed')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "zeta_remapped = regrid_nomask(ds['zeta'])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "zeta_remapped.isel(ocean_time=0).plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Because of the missing values (NaNs) bleeding into the regridding, we end up with a land mask that is much bigger than the one of the coarse grid. That's where masking is gonna help us getting it right." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Regridding with a mask" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To use masking, we need to add a dataarray named **mask** to our datasets. \n", + "Let's define our masks on the high and coarse resolution grids from the missing values in the\n", + "zeta array:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "ds['mask'] = xr.where(~np.isnan(ds['zeta'].isel(ocean_time=0)), 1, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEXCAYAAABPkyhHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8GearUAAAgAElEQVR4nO3debwkZX3v8c/XYVXAgcxg2JTBjAsSInBEEjVRcBm4hiEJ8YILA5LMNZFEo0YBE7cb3LIQSYxmjAgoiwRRJjoECYLE3LAMisiAyIR1AJmDLILKMszv/lHVTE1P9+mqPlVd1dXf9+vVr9NdXcuv6lQ/v6qnnnpKEYGZmU22p9UdgJmZ1c/JwMzMnAzMzMzJwMzMcDIwMzOcDMzMDCeDxpN0m6RX1x2H9afEFyQ9IOmquuMxG4aTgfUlaUdJZ0u6W9JDkv5L0ku7xnmjpNsl/UzS1yTtMMP8XizpGkk/T/++OGccP5T01h7D3yFpZfr+Mkl/UHQdS/Jy4DXArhGxf00xFCbpbyTdLOnhdBsfVXdMVh8nA5vJNsDVwH7ADsDpwDckbQMg6UXAPwNvAZ4F/Bz4p14zkrQFcAHwJWD7dF4XpMMHOR3oVVC9Jf1uIEmb5RlvSM8BbouInxWdsOK4BvkZ8NvAM4ElwKck/UaN8VidIsKvBr+A24D3ANcBDwFfBrbKfL8YuBb4KfA/wKKK4/kpsF/6/qPAWZnvngs8DmzbY7rXAncBygy7I0+8wK7AOuA5mWEvTJc1DzgJeBJ4FHgE+Md0nADeDtwM3JoO+xRwZ7oe1wCvyMzzQ8C5wBnAw8AqYCrz/fvSdXgYuAk4CDg2Xe6T6bI/nI77h8Bq4H5gObBzZj4bxQW8ElgDvBdYC9wDHAYcAvwonceJI9jXlgPvrnuf96ueV+0B+DXgH5Qkg6uAnUmOzm8E3pZ+t3+aIF5Dcpa3C/CCPvP5OvBgn9fXc8by4rTge2b6+QLgfV3jPNJJFl3D/wy4sEdMuQof4GLgLzKfPwZ8LfP5MuAPuqaJdLodgK3TYW8GfgnYDHg38GPS5Jomg0fTQnhOuowr0u+enyaRndPPuwPPTd8fDXwns9wDgfuAfYEtgX8ALu8XV5oM1gEfADZPE8k0cBawLfCiNK49+myb42f43z6Yc/tunSahSg8m/Gruy9VE4+GUiLg7Iu4H/o2kUIbkqPTUiLg4ItZHxF0R8cNeM4iI10fE3D6v1w8KQNJ2wBdJjnwfSgdvQ5KMsh4iKcC6FRm3l9NJqoWQ9DTgTeSrIvpYRNwfEb8AiIgvRcRPImJdRPwtSWH9/Mz434mIFRHxJMn6/lo6/Ml03D0lbR4Rt0XE//RZ5ptI/i/fjYjHgBOAX5e0e7+4gCeAkyLiCeAckjOeT0XEwxGxiuQsZe9eC4uIj8/wv52bYxsBfBb4PnBRzvGtZZwMxsOPM+9/TlKwAuxGUjVUKUlbkyShKyLiY5mvHgG26xp9O5JqlG5Fxu3lfGAnSQeQHEk/HfhGjunuzH6Q9G5JN6YXxB8kqS+flxmle1tvJWmziFgNvJPk7GGtpHMk7dxnmTsDt3c+RMQjwE9Iztx6xgX8JE1AAJ0EcW/m+1+w4f9eKkl/DewFvCEi3HPlhHIyGG93ktTTDyTpQkmP9HldOMN0WwJfI6kr/z9dX69iw5EzkvYgOXr+UY9ZrQL2lqTMsL3T4QNFxM+B80guJL8FOCciHs+O0m/STHyvIKn3fwOwfXrU/BCgPtN2x3BWRLyc5IJxAJ/oM+rd6Tid5T6DpGrqrhzxFibpxBn+t48MmPbDwMHAayPip2XFZOPHyWC8fR44RtJBkp4maRdJL+g1YkQcHBHb9Hkd3GsaSZuTFMC/AI6KiPVdo5wJ/LakV6QF3keA8yOi19H+ZSRVLX8qaUtJx6XDv5Uu62hJtw1Y39OB/w38HptWEd0L7DFg+m1J6uangc0kfYBNz1Z6kvR8SQemyfFRkm3yZJ/RzyL5v7w4Hf+jwJURcVueZRUVER+d4X/b92xC0gnAG4HXRMRPqojNxoeTwRiLiKuAY4CTSY5wv03miLQEvwG8nqQl0IOZo81XpMtfBbyNJCmsJSls/7gzcXo2cmI67uMkLWSOIrmw+VbgsMzR/W7Afw2I53KS9bwrIq7u+u5TwOHpjV+n9Jn+IuBCkjOX20kK9e7qmn62BD5OcmH4x8COwIm9RoyIS4C/BL5CclH2ucAROZczSh8Fng3cnPnf9lwnaz+5itCaQNI3gXdExI11x2I2iZwMzMzM1URmZnWRdKqktZKu7/O9JJ0iabWk6yTtW1UsTgZmZvU5DVg0w/cHAwvT11LgM1UF4mRgZlaTiLicpLuRfhYDZ0TiCmCupJ2qiKXOTrJKIWngRY/99ttvo8/XXHNN4eWUMY86dcef1b0uM43bbxprpyL7TWf8zvDstA3aX+6LiPmzmcGiRYvivvvuyzXuNddcs4qk1VrHsohYVmBxu7Bxi7c16bB7Cswjl7G/gJwnGXSv48b3PeVTxjzqNNP/uXtd8uwT47b+Npwi+01n/M7w7LQN2l+uiYip2cxgamoqVq5cmWtcSQOXl3ZT8vWI2KvHd98g6brkO+nnS4D3RkTp2XXszwyKKrJTjnui7Bi0Hv1+wGaDdPaX7O+qOwl0OkJrUEKYtRH+TtaQ3IPTsSvJHe6lm5hrBpJatTOaNUmnwO9lmN/eTPNrgvXr1+d6lWA5cFTaqugA4KGIKL2KCCbwzMDMbDbKTFSSzibpeHGepDXAB0m6MSciPgusIOlSfTVJx4nHlLLgHpwMZtA5xe01vE1cRWS9lLE/dKqHXE3Udz5HDvi+8yCkyjkZDJBNCOO4M+fZadv2Q7XRyFsgDlNw9jsQa4omxzYsJ4Mcmr5jdssejRWZxqxKwxx0NPVApY2/l4lJBk3dqcrU1HUcdGbV0CaIVoGm7qNFORmMqXE7sp+NznpOyvpadUZ1LWmmg4UmJo6IKKulUKNMRDIwMytTGw+2JjIZ5P1HNvGoZCajOgOa6QYjs0H6VRX12nebWq3kZNBweQqm2VxUHYdmpt3N+KrYadv4Q7D+qjrIGDTPpv22str4Gxj7O5D322+/njeBdIZlh1e1Q7dxxzDLanLBPGrZsmXQa5y06sygn1H8U5p4OjtuO6M1W5lnm+O+b457/L1MRDIYlabcnFZ0+b4D2ZqoiQdYHW5NZGY24caxCigPJ4MKNPmIpls2zkm6H8OKq2PfaOpvqY2/EyeDijR1Jx7EVUbWS537QxN/S238fTgZVKjuawiDjvRnimuYpNDEH61ZFZwMbCx1F+x5C+zs+MPu/G380djo1X1gldXW7igqvc9A0qmS1kq6vmv4n0i6SdIqSZ/MDD9B0ur0u9dVGdso1XnBaTbVPtknVLXtSVU2npqyT/k+g+JOA/4ROKMzQNKrgMXA3hHxmKQd0+F7AkcALwJ2Bv5D0vMi4smKYzQzK2TcCvo8Kj0ziIjLgfu7Bv8R8PGIeCwdZ206fDFwTkQ8FhG3kjzmbf8q4xu1Nu5AZoOUXbXThN9RG88M6uiO4nnAKyRdKenbkl6SDt8FuDMz3pp02CYkLZW0UtLK6enpisMtV93VRcPKE/egKqlx/ZFYPuPSBXUZnAzKsRmwPXAA8OfAuUr2mF57Tc+tGRHLImIqIqbmz59fXaQVGdVOMuodcxx/AFau7HWmKtW5r7lvovKsAc6PZEtdJWk9MC8dvltmvF2Bu2uIbySqboZZ5o5Y5U49bj8Yy6etZwQdbk1Ujq8BBwJIeh6wBXAfsBw4QtKWkhYAC4GraojPzGxGPjMoSNLZwCuBeZLWAB8ETgVOTZubPg4sSc8SVkk6F7gBWAe8ve0tiapqOz1oJ2zCzWHj9kOx2anymQh17Mtt3H8rTQYRcWSfr97cZ/yTgJOqi6iZytyh8+6kTbqJx5qvyf1WjTohjONRfx6+A7khsjvXsDv2MDvooB9SG3d6K1/dBxV1JIS2cTJooF472iguNvdrGtjGHd9Gq237UNvWB5wMxkb3ztddcJexczbhWoI1V78Dg0ncZ9rYmsjJwMysAF8zsEYZ1U1kZjPJc1bQOeOsen/KLqfqs5U2/jacDGwjde/krqraoInbomihXsb+NEwiGaebOpvCycAap4mF4Kh1Cpu2bIvZFJ6jTj5NWs4oORmYWSGT3sIsop0Pt3EyMGuYcSho814rKDKvmcZvWgJqUixlcTIwMyvIycBsBNpQR24zG+Z/3KSzg6bEUaY6ei01swnXXZjmKVybVACX1WuppEXpM99XSzq+x/fPlnSppO9Juk7SIZWsEE4G1kBtvaknr7acGeVdj7YmgkExS5oDfBo4GNgTODJ9FnzWXwDnRsQ+JM+I/6cKVglwNZFZo3SaknbfPNWWJqZZ47xOJbUm2h9YHRG3AEg6h+RZ8Ddkxglgu/T9M6nwgV9OBtYoTaoXrkvbk0DWuP6vC8Q9T9LKzOdlEbEsfd/rue8v7Zr+Q8A3Jf0J8Azg1cWjzafSaiJJp0pamz7Ipvu790gKSfPSz5J0Slp3dp2kfauMzcxsWAWqie6L9Hnt6WtZZjZ5nvt+JHBaROwKHAJ8UVIl5XbV1wxOAxZ1D5S0G/Aa4I7M4INJHnW5EFgKfKbi2KxhfFawQVu2QxvPasq6ZkC+574fC5ybLve/ga1InhlfukqTQURcDtzf46uTgfeycRZcDJwRiSuAuZJ2qjI+a7ZJvJDcuV7QFm2t5iopGVwNLJS0QNIWJBeIl3eNcwdwEICkF5Ikg+mSVweooTWRpEOBuyLi+11f9ao/26XPPJZKWilp5fR0JdvFRqxTYLSx4JitcU+I4x5/L2Ukg4hYBxwHXATcSNJqaJWkj6TlJMC7gT+U9H3gbODoqGiDjvQCsqSnA+8HXtvr6x7Deq50Wu+2DGBqaqp9e5ptpK1Hl0W1dTuMY/VgWX0TRcQKYEXXsA9k3t8AvKyUhQ0w6tZEzwUWAN9Pd+pdge9K2p989Wc2AcaxcLDZGaf/eVurL0daTRQRP4iIHSNi94jYnSQB7BsRPyapKzsqbVV0APBQRNwzyvjMzPIo6w7kJqm6aenZwH8Dz5e0RtKxM4y+ArgFWA18DvjjKmMzG0d1FDDjVqh1VBl3G5NBpdVEEXHkgO93z7wP4O1VxmPN1K8ePE/XxpOirmoUb/ve2rhdfAeyNVJ3gmjrxdN+soV/21tajVvBGuGH25iN3LgVFFWYtEQ4Dtq4XzoZmJkV5GRgZhNjtgVe54ymjQVnG9fJycDGgqtJ6tV9/SKPJvzPhom7yHzbxMnArKHacFTdlPjLvO4yjs1G83AyMLOe2pCMsspMCG5NZFaTSW1R0ymQs4XyJG6HpmlTkuxwMjAzK8jJwGzExqmqoqqzl143oI1K9/bvtY51xVYXXzMwq8igQrQJCaHuaqpRb4Nh1rc7KdTxPxvVdqp7f6yCk4GNhUk56uynU/hkC+mqE1S/+fcbni2I6yosR7VcJwOzirShqqHK2LuPtqvukbPX++5Y+g3rvtg96oJzFMt0ayKzitVdHdNPU2IaRUHXWcYw1T294mtb77O+ZmBmZkB7EltW1Q+3OVXSWknXZ4b9taQfSrpO0lclzc18d4Kk1ZJukvS6KmOz5mraD63XkWCvz6M+YizzbKXIQ1l6fd+vOqmOawijOLts48Ntqn7s5WnAoq5hFwN7RcTewI+AEwAk7QkcAbwoneafJM2pOD5rqCb9qJpWzSGp9MKujPnNtH2qiLlOTgYFRcTlwP1dw74ZEevSj1eQPPgeYDFwTkQ8FhG3kjz+cv8q47Px0ZQfVvZH3u+otymxDqPfheBh5jHO22EmnYfb5HmNk6rPDAZ5K3Bh+n4X4M7Md2vSYZuQtFTSSkkrp6enKw7RmqruZox1LTu73oNa/jRBXUfKVTe79ZlBSSS9H1gHnNkZ1GO0nlszIpZFxFRETM2fP7+qEK1h8tZVt9Ggs5HseMNsk5nmN47VO1XvF21MBrW0JpK0BHg9cFBs2GJrgN0yo+0K3D3q2MzMBhm3gj6PkZ8ZSFoEvA84NCJ+nvlqOXCEpC0lLQAWAleNOj4bP1VXBzRF2WcDRZYxqunLVPWNeT4zKEDS2cArgXmS1gAfJGk9tCVwcfojviIi3hYRqySdC9xAUn309oh4ssr4bPx0qi2a/EOru2O5YaebKdn0M4lVd+NY0OdRaTKIiCN7DP78DOOfBJxUXUTWBnXUb+dNQHXXrxfdBnmTVtEE3PYWRePWUigP34FsNkCRArbqC655CuVhY2j6Gdcwqlqntm0ncDKwFuhuXllFYZy3eqruM4OOYc4QmhL7OHAyMDObcL5mYDZBeh0pD3Pxuqwj7mHmkWfZw1aj5Jl3EwrMqhocNGHdyuZkYNZH0ZYyvS6allX1MorWSUULuHEpEKuI0xeQzcbAbI7G+01b5RF00fnlUffF4KqWXfd6QXurierum8hsLOT98VfV7r6TUMo+M5jNek2ysm46k7Qo7bJ/taTj+4zzBkk3SFol6azSVyblMwMzs4JKSvBzgE8DryHpjudqScsj4obMOAtJbtR9WUQ8IGnHWS+4D58ZmI2JYW/8svKVdGawP7A6Im6JiMeBc0i68s/6Q+DTEfFAuty1pa9MysnAWqkt1RrD1E87CVSvQDKY1+luP30tzcwmT7f9zwOeJ+m/JF2R9u1WCVcTmaU6hW7ZiaSsp4h1nhZWZnxNuCA7biKiSGui+yJiqs93ebrt34yk085XkvTk/J+S9oqIB/MGkJfPDMwyqrp7eVjDPHmsra1dmqSkaqI83favAS6IiCcieQLkTSTJoXROBtZa3T/G7h9o9nMZhecoCuAiTUutOiUlg6uBhZIWSNqC5Bnwy7vG+RrwKgBJ80iqjW4peXUAVxOZmRVW0sHDOknHARcBc4BTI+nK/yPAyohYnn73Wkk3AE8Cfx4RP5n1wntwMjBroNnccdzWs4KmrFeZ1XARsQJY0TXsA5n3AbwrfVWq0moiSadKWivp+sywHSRdLOnm9O/26XBJOiW9+eI6SftWGZtNjl4/3n4/5ibUtc82hiasQ1Wasm5l3XTWJLmTgaRdJX1V0rSkeyV9RdKuAyY7DehuCnU8cElELAQuST8DHExyYWQhsBT4TN7YzPrJ84Ns8o922Nh8P0K11q9fn+s1ToqcGXyB5OLGTiRtYf8tHdZXRFwO3N81eDFwevr+dOCwzPAzInEFMFfSTgXiM8ulyYV/mZwQqjPRZwbA/Ij4QkSsS1+nAfOHWOazIuIegPRv5/bqPDdgACBpaecmjunp6SFCMGumzv0EszFMP0bjVnDVKW8iGLdtWiQZ3CfpzZLmpK83A2Ve1c5zA0YyMGJZRExFxNT8+cPkIzOz4U16Mngr8Abgx8A9wOHpsKLu7VT/pH87fW3kuQHDbOwUPdIft0JkFJp2p3RTk4Gk/XoM++080+ZOBhFxR0QcGhHzI2LHiDgsIm4vEmhqObAkfb8EuCAz/Ki0VdEBwEOd6iQzG6zTXUXnvVWnwReQPyfpVzsfJB0J/EWeCXPfZyBpPkkPertnp4uIvmcHks4m6VNjnqQ1wAeBjwPnSjoWuAP4/XT0FcAhwGrg58AxeWMzMxuVhlcBHQ6cJ+lNwMuBo4DX5pmwyE1nFwD/CfwHyZ1wA0XEkX2+OqjHuAG8vUA8ZkPrVDuMovqhjIvCVWtaNUy3psXWtHg6IuIWSUeQdGNxJ/DaiPhFnmmLJIOnR8T7hgnQrEl6VaX0en5xmcuazfRFYhqHxNMGTUsGkn7Axg1udiDp4uLKdB/ae9A8iiSDr0s6JL192sxsYjUtGQCvn+0MBiYDSQ+TZBwBJ0p6DHgi/RwRsd1sgzCrQ+cousoqkqJ9DM0Uy6A4Z7sOTa0qamJcDYzndgBJzwXWRMRjkl4J7A2ckWceA1sTRcS2wFxgUUQ8LSK2jojtImJbJwIbR9kLgHkvBg5b9TKb6XpVYxWZxqoREU1uTfQV4ElJvwJ8HlgAnJVnwlxNSyNiPfA3Q4dnNuaGrYsfZrru8TtHxoOSVtOOVsvQxLMCaO59BsD6iFgH/C7w9xHxZyRdCA1U5Kazb0r6PfnQwybUbBLCMOMPU6g0seBsowYngyfSewuOAr6eDts8z4RFLiC/C3gGsE7So/iagU2gqpujZhPBbOZRtF+iJh7jNfWsABqddI8B3gacFBG3SloAfCnPhLmTQXrtoC9JL4qIVXnnZ2Y2jpp801lE3AD8aebzrSQ3+g5U5pPOvgj4gTQ2Edz+f7I1NRlIWgh8DNgT2KozPCL2GDRtmcnAe7pNhKJNUvMmgaYWMHVochUR0OQH13yBpNufk4FXkVQb5doBy3zsZXP/c2YlK7OgqqLaYdiL1pZPgy8gbx0RlwCKiNsj4kPAgXkmLPPMwGyi5P2xz1RFVGWBMcyF5CZo+llBk68ZAI9Kehpws6TjgLvY8ACxGZV5ZvB4ifMyM2usBp8ZvBN4OslF5P2AN5M0Mx2o0JmBpO1JHlifvTBxefr3gCLzMpsUvY7Om3Rk2fQj8SZq8PYKksY8z2HD/QWfI+mWYkZFnmfwB8A7SJ5Adi1wAPDf5KyPMptUTSg4BvWR1KSE0JQ4ZtLgC8hnAn8O/AAoFGSRaqJ3AC8Bbo+IVwH7AEM/jV7Sn0laJel6SWdL2krSAklXSrpZ0pclbTHs/M2sWMHqvo3yyVtFVFNSm46I5RFxa3oB+fbI+UTKIsng0Yh4FEDSlhHxQ+D5w0QraReSOq2piNiLpN/tI4BPACdHxELgAeDYYeZvZhsMOiuw4hqcDD4o6V8kHSnpdzuvPBMWuWawRtJckifoXCzpAWb3wPrNgK0lPUFyweMekiqnN6bfnw58CPjMLJZhZgU1qcqoqRq8fY4BXkByvaBTTRTA+YMmLNIdxe+kbz8k6VLgmcCFxeJ8al53Sfobkmcg/wL4JnAN8GDa4x7AGmCXYeZvZlalBieDX4uIXx1mwtzVRJK+2HkfEd+OiOXAqcMsNG2VtJikr+2dSTrAO7jHqD23uKSlklZKWjk9PfRlCzPrw1VKM2twNdEVkvYcZsIi1UQvyn6QNIekHeswXg3cGhHT6bzOB34DmCtps/TsYFf6VENFxDJgGcDU1FRjU7RZU7hwL0+kD7dpqJcDSyTdCjzGht6lZ9+0VNIJwIkk9fs/7Qwmucls2ZAB3wEcIOnpJNVEBwErgUuBw4FzgCXABUPO38wy3FFeuRpcTbRo2AkHJoOI+BjwMUmfJGm7ukdEfFjSs4FfHmahEXGlpPOA7wLrgO+RJJZvAOdI+qt02OeHmb+ZzV4neTS44KtNU7dJ3makvRSpJtqO5EazA4EPAw+TPG/zJcMsOCI+SNK7XtYtwP7DzM/MytfUQq9ubdwuRZLB/hGxr6TvAUTEA74pzMwmTcM7qhtakWTwRHrROAAkzafg7c5mZm3QxmRQ5A7kU4CvAjtKOgn4DvDRSqIys9q1scAry/r163O9BpG0SNJNklZLOn6G8Q6XFJKmSl2RjCI3nZ0p6RqSlj8CDouIG6sKzMzK5RZF5SkjUaY1LZ8GXkNyk+3VkpZH8hzj7HjbknTfc+WsFzqDQl1Yp/0R/bCiWMysYk4Is1fiNYP9gdURcQuApHNIbsa9oWu8/wt8EnhPGQvtp8yH25hZi3SShpPHpgrcgTyv01tC+lqamc0uwJ2Zz5t0wSNpH2C3iPh61evkx16amRVU4MzgvojoV8/fK8s+NeP08ZUnA0cXCm5ITgZmE6ZIl9Y+K+itpO4o1gC7ZT53d8GzLbAXcFn6f/hlYLmkQyNiZRkBZDkZmE2oItcP3K31BiVeM7gaWChpAcmD649gQxf+RMRDwLzOZ0mXAe+pIhGArxmYWU4+S9igjF5L0w45jwMuAm4Ezo2IVZI+IunQEazGRnxmYGZWUFlnSRGxAljRNewDfcZ9ZSkL7cPJwMxycTXRBm3cFk4GZmYFORmY2cTyReREwx9uMzQnAzPLxYlggzZuCycDM8ulc2bgM4R2JoPampZKmivpPEk/lHSjpF+XtIOkiyXdnP7dvq74zGxTbl6aKKNpadPUeZ/Bp4B/j4gXAL9G0s72eOCSiFgIXJJ+NrOGmeSkkDcROBnkIGk74DdJn3EcEY9HxIMkPfadno52OnBYHfGZmc2krOcZNEldZwZ7ANPAFyR9T9K/SHoG8KyIuAcg/btjr4klLe30Ajg9PT26qM3McDVRmTYD9gU+ExH7AD+jQJVQRCyLiKmImJo/f35VMZqZ9eRkUJ41wJqI6Dy55zyS5HCvpJ0A0r9ra4rPzGYwbgVdmXzNoEQR8WPgTknPTwcdRPJ0n+XAknTYEuCCGsIzswEm+QIytPPMoM77DP4EOFPSFsAtwDEkyelcSccCdwC/X2N8ZmY9jVtBn0dtySAirgV6PQHooFHHYjap/Ezk4twdhZm1jhPBcHxmYGZmTgZm1h6zOStoY2FYRBvX38nAzAqb9M7q2rjuTgZmZgWMY7PRPJwMzCbUsC2J2lgQFuXWRGbWKtmEkDc5THoVEbQzIToZmE24ogVbGwvCotq4DZwMzKyQ7NlDGwvFQXzNwMwmgu9KHszJwMzMfAHZzNpp2DOB7MXnSdLG9XUyMJtwwzYvneRE0MZ1djIwm2DdzUR9rSAfJwMza4V+hb6bmebTxvWu67GXAEiaI+l7kr6efl4g6UpJN0v6cvrgGzMrgaSnXjD76o42Foh5tfFJZ7UmA+AdwI2Zz58ATo6IhcADwLG1RGVm1kfn4TZ5XuOktmQgaVfgfwH/kn4WcCBwXjrK6cBh9URn1m7DHLWO49FuVXxmUK6/B94LdNLnLwEPRsS69PMaYJdeE0paKmmlpJXT09PVR2rWInkKqe5xuj9P+oVmJ4OSSHo9sDYirskO7jFqz60ZEcsiYioipubPn19JjGZtM0wB1W+acSvoyuZkUJ6XAYdKug04h6R66O+BuZI6LZx2Be6uJzyzydavZ1L3WJooKxlIWiTpJkmrJR3f4/t3SbpB0nWSLpH0nEpWiJqSQUScEBG7RsTuwBHAtyLiTcClwOHpaEuAC+qIz2zS9SvInAjyJ4JB20rSHNJms8AAAAnzSURBVODTwMHAnsCRkvbsGu17wFRE7E1yPfWTFawSUH9rom7vA94laTXJNYTP1xyPmdkmSmpNtD+wOiJuiYjHSWpJFmdHiIhLI+Ln6ccrSGpMKlH7TWcRcRlwWfr+FpINZGbWWAXOkOZJWpn5vCwilqXvdwHuzHy3BnjpDPM6Frgwd5AF1Z4MzMzGTYFkcF9ETPX5LnejGUlvBqaA38q74KKcDMzMCiixpdAaYLfM556NZiS9Gng/8FsR8VgZC+7FycDMrKCSksHVwEJJC4C7SBrTvDE7gqR9gH8GFkXE2jIW2o+TgZlZQWV0NRER6yQdB1wEzAFOjYhVkj4CrIyI5cBfA9sA/5re6HdHRBw664X34GRgZlZQWU1sI2IFsKJr2Acy719dyoJycDIwMytgHO8uzsPJwMysICcDMzNzMjAzMycDM7OJ13m4Tds4GZiZFeQzAzMzczIwMzMnAzMzw8nAzGzitfWms7qegbybpEsl3ShplaR3pMN3kHSxpJvTv9vXEZ+Z2UxKerhNo9T1pLN1wLsj4oXAAcDb08e9HQ9cEhELgUvSz2ZmjVLWM5CbpK5nIN8TEd9N3z8M3Ejy1J/FwOnpaKcDh9URn5nZTNqYDGq/ZiBpd2Af4ErgWRFxDyQJQ9KOfaZZCiwFePaznz2aQM3M8DWDSkjaBvgK8M6I+Gne6SJiWURMRcTU/PnzqwvQzKwHnxmUSNLmJIngzIg4Px18r6Sd0rOCnYBKn+xjZjaMcbs4nEddrYkEfB64MSL+LvPVcmBJ+n4JcMGoYzMzG8RnBuV5GfAW4AeSrk2HnQh8HDhX0rHAHcDv1xSfmVlP41jQ51FLMoiI7wDq8/VBo4zFzKwoJwMzM3MyMDMzJwMzs4nnh9uYmRngMwMzM8PJwMzMcDIwMzOcDMzMJp5vOjMzM6CdfRM5GZiZFeQzAzMzczIwM5t0vmZgZmaAzwzMzAxfQDYzM9p5ZlDrM5B7kbRI0k2SVks6vu54zMyy8j7lbNwSRqOSgaQ5wKeBg4E9gSMl7VlvVGZmGysrGQw6+JW0paQvp99fKWn3ClYHaFgyAPYHVkfELRHxOHAOsLjmmMzMNlJGMsh58Hss8EBE/ApwMvCJClYHaF4y2AW4M/N5TTpsI5KWSlopaeX09PTIgjMzg9LODPIc/C4GTk/fnwccJKnfI4NnpWkXkHut5CZbNCKWAcsAJD0s6aaqAxvCPOC+uoPo4pjycUz5NTGumWJ6Tgnzvygi5uUcdytJKzOfl6XlF/Q++H1p1/RPjRMR6yQ9BPwSFWzzpiWDNcBumc+7AncPmOamiJiqLqThSFrZtLgcUz6OKb8mxlV1TBGxqKRZ5Tn4zXWAXIamVRNdDSyUtEDSFsARwPKaYzIzq0Keg9+nxpG0GfBM4P4qgmlUMoiIdcBxwEXAjcC5EbGq3qjMzCqR5+B3ObAkfX848K2oqM1q06qJiIgVwIoCkywbPEotmhiXY8rHMeXXxLiaGNMm0msAnYPfOcCpEbFK0keAlRGxHPg88EVJq0nOCI6oKh6N240RZmZWvkZVE5mZWT2cDMzMbLyTQVP6MZJ0m6QfSLq206ZY0g6SLpZ0c/p3+xHEcaqktZKuzwzrGYcSp6Tb7jpJ+44wpg9JuivdXtdKOiTz3QlpTDdJel1FMe0m6VJJN0paJekd6fDattUMMdW2rSRtJekqSd9PY/pwOnxB2jXCzWlXCVukwyvvOmGGmE6TdGtmO704HT6S/bwVinS61KQXyQWX/wH2ALYAvg/sWVMstwHzuoZ9Ejg+fX888IkRxPGbwL7A9YPiAA4BLiRpx3wAcOUIY/oQ8J4e4+6Z/h+3BBak/985FcS0E7Bv+n5b4EfpsmvbVjPEVNu2Std3m/T95sCV6fqfCxyRDv8s8Efp+z8GPpu+PwL4cgXbqV9MpwGH9xh/JPt5G17jfGbQ9H6MsreRnw4cVvUCI+JyNm2D3C+OxcAZkbgCmCtppxHF1M9i4JyIeCwibgVWk/yfy47pnoj4bvr+YZJmzLtQ47aaIaZ+Kt9W6fo+kn7cPH0FcCBJ1wiw6XaqtOuEGWLqZyT7eRuMczLI1Y/RiATwTUnXSFqaDntWRNwDyQ8d2LGm2PrFUff2Oy49bT81U4U28pjSqox9SI4wG7GtumKCGreVpDmSrgXWAheTnIE8GMk9Qd3L3ajrBKDTdUKlMUVEZzudlG6nkyVt2R1Tj3gtY5yTwchu087hZRGxL0nvg2+X9Js1xVFEndvvM8BzgRcD9wB/W0dMkrYBvgK8MyJ+OtOoPYZVElePmGrdVhHxZES8mOTu2P2BF86w3FpikrQXcALwAuAlwA7A+0YZUxuMczIYph+jSkTE3enftcBXSX4093ZOR9O/a+uIbYY4att+EXFv+oNeD3yODdUbI4tJ0uYkhe6ZEXF+OrjWbdUrpiZsqzSOB4HLSOrd5yrpGqF7uSPrOqErpkVpNVtExGPAF6hpO42zcU4GjejHSNIzJG3beQ+8FriejW8jXwJcMOrYUv3iWA4clba2OAB4qFNFUrWuOtvfIdlenZiOSFulLAAWAldVsHyR3Nl5Y0T8Xear2rZVv5jq3FaS5kuam77fGng1ybWMS0m6RoBNt1OlXSf0iemHmSQukmsY2e1Uy34+duq+gj2bF0lLgR+R1GO+v6YY9iBp1fF9YFUnDpK60kuAm9O/O4wglrNJqhKeIDkiOrZfHCSnz59Ot90PgKkRxvTFdJnXkfxYd8qM//40ppuAgyuK6eUkVQXXAdemr0Pq3FYzxFTbtgL2Br6XLvt64AOZff4qkovW/wpsmQ7fKv28Ov1+jxHG9K10O10PfIkNLY5Gsp+34eXuKMzMbKyriczMrCROBmZm5mRgZmZOBmZmhpOBmZnhZGBmZjgZ2JiRtLOk8waP+dT4R0v6xypjMmuDxj0D2WwmkXT9cfjAEXmqSwQzy8FnBtZYkl6S9kK5VdrtxypJeynzoJwe0xwt6V8l/RvwzXTwzpL+PX0Yyycz4x6p5KFE10v6RNXrY9ZkPnKyxoqIqyUtB/4K2Jqkm4FHZp4KgF8H9o6I+yUdTdLj5z7AY8BNkv4BeBL4BLAf8ABJF+SHRcTXyl8Ts+ZzMrCm+whJp4SPAn/Kxj1Q9nNxRGR7y7wkIh4CkHQD8BySfogui4jpdPiZJE9lczKwieRkYE23A7ANyROttso5zc+6Pj+Wef8kyX5f6hO4zMadrxlY0y0D/hI4k6RapyxXAr8laZ6kOcCRwLdLnL/ZWPGZgTWWpKOAdRFxVlpg/z+S5+/OWkTcI+kEkr75BayIiLqeOWFWO3dhbWZmriYyMzNXE9mYkvQ6Nr2GcGtE/E4d8ZiNO1cTmZmZq4nMzMzJwMzMcDIwMzOcDMzMDPj/dwV7yuxmzHoAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds['mask'].plot(cmap='binary_r')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "ds_coarse['mask'] = xr.where(~np.isnan(ds_coarse['zeta'].isel(ocean_time=0)), 1, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ds_coarse['mask'].plot(cmap='binary_r')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now let's try to regrid again:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwrite existing file: conservative_normed_180x360_18x36.nc \n", + " You can set reuse_weights=True to save computing time.\n" + ] + } + ], + "source": [ + "regrid_mask = xesmf.Regridder(ds, ds_coarse, method='conservative_normed')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "zeta_remapped = regrid_mask(ds['zeta'])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "zeta_remapped.isel(ocean_time=0).plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now our field is consistent with the coarse grid mask.\n", + "However ESMF puts zeros where the target mask is. It would not be a good idea to mask all zeros in the array because your original field may contain some. To safely mask the array, we can use the **mask** array, such as:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "zeta_remapped = zeta_remapped.where(ds_coarse['mask'] != 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Which gives:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "zeta_remapped.isel(ocean_time=0).plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we have our conservative remapping consistent with the coarse grid, yay!!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Limitations and warnings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* mask can only be 2D (ESMF design) so regridding a 3D field requires to generate regridding weights for each vertical level.\n", + "\n", + "* conservative method will give you a normalization by the total area of the target cell. Except for some specific cases, you probably want to use conservative_normed.\n", + "\n", + "* results with other methods (e.g. bilinear) may not give masks consistent with the coarse grid." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Conservative (un-normed) example" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwrite existing file: conservative_180x360_18x36.nc \n", + " You can set reuse_weights=True to save computing time.\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "regrid_masked2 = xesmf.Regridder(ds, ds_coarse, method='conservative')\n", + "zeta_remapped2 = regrid_masked2(ds['zeta'])\n", + "zeta_remapped2.isel(ocean_time=0).plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. Bilinear example" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Overwrite existing file: bilinear_180x360_18x36.nc \n", + " You can set reuse_weights=True to save computing time.\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "regrid_masked3 = xesmf.Regridder(ds, ds_coarse, method='bilinear')\n", + "zeta_remapped3 = regrid_masked3(ds['zeta'])\n", + "zeta_remapped3.isel(ocean_time=0).plot()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "analysis", + "language": "python", + "name": "analysis" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.10" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/xesmf/backend.py b/xesmf/backend.py index 358b25a6..301e5128 100644 --- a/xesmf/backend.py +++ b/xesmf/backend.py @@ -52,9 +52,9 @@ def warn_lat_range(lat): warnings.warn("Latitude is outside of [-90, 90]") -def esmf_grid(lon, lat, periodic=False): +def esmf_grid(lon, lat, periodic=False, mask=None): ''' - Create an ESMF.Grid object, for contrusting ESMF.Field and ESMF.Regrid + Create an ESMF.Grid object, for constructing ESMF.Field and ESMF.Regrid. Parameters ---------- @@ -70,6 +70,13 @@ def esmf_grid(lon, lat, periodic=False): Periodic in longitude? Default to False. Only useful for source grid. + mask : 2D numpy array, optional + Grid mask. According to the ESMF convention, masked cells + are set to 0 and unmasked cells to 1. + + Shape should be ``(Nlon, Nlat)`` for rectilinear grid, + or ``(Nx, Ny)`` for general quadrilateral grid. + Returns ------- grid : ESMF.Grid object @@ -111,6 +118,22 @@ def esmf_grid(lon, lat, periodic=False): lon_pointer[...] = lon lat_pointer[...] = lat + # Follows SCRIP convention where 1 is unmasked and 0 is masked. + # See https://github.com/NCPP/ocgis/blob/61d88c60e9070215f28c1317221c2e074f8fb145/src/ocgis/regrid/base.py#L391-L404 + if mask is not None: + # remove fractional values + mask = np.where(mask == 0, 0, 1) + # convert array type to integer (ESMF compat) + grid_mask = mask.astype(np.int32) + if not (grid_mask.shape == lon.shape): + raise ValueError( + "mask must have the same shape as the latitude/longitude" + "coordinates, got: mask.shape = %s, lon.shape = %s" % + (mask.shape, lon.shape)) + grid.add_item(ESMF.GridItem.MASK, staggerloc=ESMF.StaggerLoc.CENTER, + from_file=False) + grid.mask[0][:] = grid_mask + return grid @@ -207,6 +230,7 @@ def esmf_regrid_build(sourcegrid, destgrid, method, - 'bilinear' - 'conservative', **need grid corner information** + - 'conservative_normed', **need grid corner information** - 'patch' - 'nearest_s2d' - 'nearest_d2s' @@ -241,6 +265,7 @@ def esmf_regrid_build(sourcegrid, destgrid, method, # use shorter, clearer names for options in ESMF.RegridMethod method_dict = {'bilinear': ESMF.RegridMethod.BILINEAR, 'conservative': ESMF.RegridMethod.CONSERVE, + 'conservative_normed': ESMF.RegridMethod.CONSERVE, 'patch': ESMF.RegridMethod.PATCH, 'nearest_s2d': ESMF.RegridMethod.NEAREST_STOD, 'nearest_d2s': ESMF.RegridMethod.NEAREST_DTOS @@ -252,7 +277,7 @@ def esmf_regrid_build(sourcegrid, destgrid, method, '{}'.format(list(method_dict.keys()))) # conservative regridding needs cell corner information - if method == 'conservative': + if method in ['conservative', 'conservative_normed']: if not sourcegrid.has_corners: raise ValueError('source grid has no corner information. ' 'cannot use conservative regridding.') @@ -266,20 +291,40 @@ def esmf_regrid_build(sourcegrid, destgrid, method, sourcefield = ESMF.Field(sourcegrid, ndbounds=extra_dims) destfield = ESMF.Field(destgrid, ndbounds=extra_dims) + # ESMF bug? when using locstream objects, options src_mask_values + # and dst_mask_values produce runtime errors + allow_masked_values = True + if isinstance(sourcefield.grid, ESMF.api.locstream.LocStream): + allow_masked_values = False + if isinstance(destfield.grid, ESMF.api.locstream.LocStream): + allow_masked_values = False + # ESMPy will throw an incomprehensive error if the weight file # already exists. Better to catch it here! if filename is not None: assert not os.path.exists(filename), ( 'Weight file already exists! Please remove it or use a new name.') + # re-normalize conservative regridding results + # https://github.com/JiaweiZhuang/xESMF/issues/17 + if method == 'conservative_normed': + norm_type = ESMF.NormType.FRACAREA + else: + norm_type = ESMF.NormType.DSTAREA + # Calculate regridding weights. # Must set unmapped_action to IGNORE, otherwise the function will fail, # if the destination grid is larger than the source grid. - regrid = ESMF.Regrid(sourcefield, destfield, filename=filename, - regrid_method=esmf_regrid_method, - unmapped_action=ESMF.UnmappedAction.IGNORE, - ignore_degenerate=ignore_degenerate, - factors=filename is None) + kwargs=dict(filename=filename, + regrid_method=esmf_regrid_method, + unmapped_action=ESMF.UnmappedAction.IGNORE, + ignore_degenerate=ignore_degenerate, + norm_type=norm_type, + factors=filename is None) + if allow_masked_values: + kwargs.update(dict(src_mask_values=[0], dst_mask_values=[0])) + + regrid = ESMF.Regrid(sourcefield, destfield, **kwargs) return regrid diff --git a/xesmf/frontend.py b/xesmf/frontend.py index 882f5634..13d06ca3 100644 --- a/xesmf/frontend.py +++ b/xesmf/frontend.py @@ -60,8 +60,16 @@ def ds_to_ESMFgrid(ds, need_bounds=False, periodic=None, append=None): lat = np.asarray(ds['lat']) lon, lat = as_2d_mesh(lon, lat) + if 'mask' in ds: + mask = np.asarray(ds['mask']) + else: + mask = None + # tranpose the arrays so they become Fortran-ordered - grid = esmf_grid(lon.T, lat.T, periodic=periodic) + if mask is not None: + grid = esmf_grid(lon.T, lat.T, periodic=periodic, mask=mask.T) + else: + grid = esmf_grid(lon.T, lat.T, periodic=periodic, mask=None) if need_bounds: lon_b = np.asarray(ds['lon_b']) @@ -115,17 +123,21 @@ def __init__(self, ds_in, ds_out, method, periodic=False, ds_in, ds_out : xarray DataSet, or dictionary Contain input and output grid coordinates. Look for variables ``lon``, ``lat``, and optionally ``lon_b``, ``lat_b`` for - conservative method. + conservative methods. Shape can be 1D (n_lon,) and (n_lat,) for rectilinear grids, or 2D (n_y, n_x) for general curvilinear grids. Shape of bounds should be (n+1,) or (n_y+1, n_x+1). + If either dataset includes a 2d mask variable, that will also be + used to inform the regridding. + method : str Regridding method. Options are - 'bilinear' - 'conservative', **need grid corner information** + - 'conservative_normed', **need grid corner information** - 'patch' - 'nearest_s2d' - 'nearest_d2s' @@ -171,7 +183,7 @@ def __init__(self, ds_in, ds_out, method, periodic=False, """ # record basic switches - if method == 'conservative': + if method in ['conservative', 'conservative_normed']: self.need_bounds = True periodic = False # bound shape will not be N+1 for periodic grid else: diff --git a/xesmf/tests/test_backend.py b/xesmf/tests/test_backend.py index 08081fa2..ccec1f8b 100644 --- a/xesmf/tests/test_backend.py +++ b/xesmf/tests/test_backend.py @@ -224,6 +224,11 @@ def test_esmf_locstream(): with pytest.raises(ValueError): ls = esmf_locstream(lon2d, lat) + grid_in = esmf_grid(lon_in.T, lat_in.T, periodic=True) + regrid = esmf_regrid_build(grid_in, ls, 'bilinear') + + regrid = esmf_regrid_build(ls, grid_in, 'nearest_s2d') + def test_read_weights(tmp_path): fn = tmp_path / "weights.nc" @@ -257,3 +262,4 @@ def test_read_weights(tmp_path): with pytest.raises(ValueError): ds = xr.open_dataset(fn) read_weights(ds.drop_vars("col"), lon_in.size, lon_out.size) + diff --git a/xesmf/tests/test_frontend.py b/xesmf/tests/test_frontend.py index 7f2e54c4..37cf09bd 100644 --- a/xesmf/tests/test_frontend.py +++ b/xesmf/tests/test_frontend.py @@ -377,6 +377,22 @@ def test_regrid_dataset_to_locstream(): ds_result = regridder(ds_in) +def test_build_regridder_with_masks(): + ds_in['mask'] = xr.DataArray( + np.random.randint(2, size=ds_in['data'].shape), + dims=('y', 'x')) + print(ds_in) + # 'patch' is too slow to test + for method in ['bilinear', 'conservative', 'conservative_normed', + 'nearest_s2d', 'nearest_d2s']: + regridder = xe.Regridder(ds_in, ds_out, method) + + # check screen output + assert repr(regridder) == str(regridder) + assert 'xESMF Regridder' in str(regridder) + assert method in str(regridder) + + def test_regrid_dataset_from_locstream(): # xarray.Dataset containing in-memory numpy array