-
-
Save spencerkclark/bae91200c3d2c1b59adcd831b1594a2e to your computer and use it in GitHub Desktop.
{ | |
"cells": [ | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Finite differencing with xarray and dask\n---------------------------------------" | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "\"\"\"xarray/dask-compatible finite differencing functions\"\"\"\nimport dask.array as darray\nimport numpy as np\nimport xarray as xr\n\nfrom scipy.ndimage.filters import correlate1d\nfrom sympy.calculus import finite_diff_weights\nfrom xarray.core import computation\n\n\ndef centered_diff_weights(accuracy, spacing=1.):\n \"\"\"Compute the weights of a central difference approx. to derivative\n\n Does so for an arbitrary even-valued order of accuracy.\n\n Parameters\n ----------\n accuracy : int\n Order of accuracy of approximation (must be even)\n spacing : float\n Uniform spacing between the points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n if accuracy % 2:\n raise ValueError('Can only generate centered difference stencil '\n 'for an even-valued order of accuracy. Got '\n '{}'.format(accuracy))\n domain = np.arange(0., accuracy + 1.) * spacing\n center = (accuracy / 2.) * spacing\n return finite_diff_weights(1, domain, center)[1][-1]\n\n\ndef forward_diff_weights(accuracy, spacing=1.):\n \"\"\"Compute the weights of a forward difference approx. to derivative\n\n Does so for an arbitrary order of accuracy.\n\n Parameters\n ----------\n accuracy : int\n Integer-valued order of accuracy of approximation\n spacing : float\n Uniform spacing between points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n domain = np.arange(0., accuracy + 1.) * spacing\n return finite_diff_weights(1, domain, domain[0])[1][-1]\n\n\ndef backward_diff_weights(accuracy, spacing=1.):\n \"\"\"Compute the weights of a backward difference approx. to derivative\n\n Does so for an arbitrary order of accuracy.\n\n Parameters\n ----------\n accuracy : int\n Integer-valued order of accuracy of approximation\n spacing : float\n Uniform spacing between points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n domain = np.arange(0., accuracy + 1.) * spacing\n return finite_diff_weights(1, domain, domain[-1])[1][-1]\n\n\ndef upwind_weights_right(accuracy, spacing=1.):\n \"\"\"Compute the weights of a right upwind difference approx. to derivative\n\n Does so for an arbitrary order of accuracy. For use when v < 0.\n\n Parameters\n ----------\n accuracy : int\n Integer-valued order of accuracy of approximation\n spacing : float\n Uniform spacing between points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n point = np.ceil((accuracy + 1) / 2.) * spacing\n domain = np.arange(0., accuracy + 1.) * spacing\n return finite_diff_weights(1, domain, point)[1][-1]\n\n\ndef upwind_weights_left(accuracy, spacing=1.):\n \"\"\"Compute the weights of a left upwind difference approx. to derivative\n\n Does so for an arbitrary order of accuracy. For use when v > 0.\n\n Parameters\n ----------\n accuracy : int\n Integer-valued order of accuracy of approximation\n spacing : float\n Uniform spacing between points (default = 1.)\n\n Returns\n -------\n list of finite difference weights\n \"\"\"\n point = ((accuracy + 1) // 2 - 1.) * spacing\n domain = np.arange(0., accuracy + 1.) * spacing\n return finite_diff_weights(1, domain, point)[1][-1]\n\n\ndef xcorrelate1d(da, dim, kernel, **kwargs):\n \"\"\"Apply ``correlate1d`` along a given dimension\n\n Parameters\n ----------\n da : xr.DataArray\n DataArray\n dim : str\n Dimension name\n kernel : array-like\n 1D sequence of numbers (i.e. correlation weights)\n **kwargs\n Keyword arguments to supply to ``scipy.ndimage.filters.correlate1d``\n\n Returns\n -------\n xr.DataArray\n \"\"\"\n def apply_corr(arr, **kwargs):\n if not isinstance(arr, darray.core.Array):\n return correlate1d(arr, **kwargs)\n else:\n origin = kwargs.get('origin', 0)\n depth = int(len(kwargs['weights']) / 2 + np.abs(origin))\n axis = len(arr.shape) - 1\n\n if kwargs['mode'] != 'wrap':\n # TODO: Don't hard-code periodic boundary conditions\n raise NotImplementedError(\n 'xcorrelate1d currently only supports periodic boundary '\n 'conditions on dask arrays')\n \n return darray.ghost.map_overlap(arr, correlate1d,\n depth={axis: depth},\n boundary={axis: 'periodic'},\n **kwargs)\n\n return computation.apply_ufunc(apply_corr, da, input_core_dims=[[dim]],\n output_core_dims=[[dim]],\n kwargs=dict(weights=kernel, **kwargs),\n dask_array='allowed')\n\n\ndef xdiff(da, dim, method='centered', accuracy=2, spacing=1, mode='wrap'):\n \"\"\"Compute the derivative to an arbitrary order of accuracy\n\n Assumes uniform grid spacing.\n\n Parameters\n ----------\n da : xr.DataArray\n DataArray\n dim : str\n Dimension name to perform derivative along\n method : str\n Options are 'centered', 'backward', 'forward', 'upwind_left', 'upwind_right'\n accuracy : int\n Order of accuracy of approximation\n spacing : float\n Grid spacing\n mode : str\n How to handle boundary; options are same as those that can be passed to\n correlate1d\n\n Returns\n -------\n xr.DataArray\n \"\"\"\n if method == 'centered':\n weights = centered_diff_weights(accuracy, spacing)\n origin = 0\n elif method == 'forward':\n weights = forward_diff_weights(accuracy, spacing)\n origin = -(len(weights) // 2)\n elif method == 'backward':\n weights = backward_diff_weights(accuracy, spacing)\n origin = len(weights) // 2\n elif method == 'upwind_left':\n weights = upwind_weights_left(accuracy, spacing)\n origin = -1 # Regardless of whether len(weights) is even or odd, origin = -1 in this case.\n elif method == 'upwind_right':\n weights = upwind_weights_right(accuracy, spacing)\n origin = len(weights) % 2\n else:\n raise ValueError('Invalid differencing method '\n 'specified: {}'.format(method))\n return xcorrelate1d(da, dim, weights, origin=origin, mode=mode)\n\n\ndef xdiff_upwind(da, v, dim, accuracy=2, spacing=1, mode='wrap'):\n \"\"\"Compute the upwind approximation to the derivative\n \n Parameters\n ----------\n da : xr.DataArray\n DataArray to take derivative on\n v : xr.DataArray\n DataArray of the velocity field\n dim : str\n Name of dimension\n accuracy : int\n Even order of accuracy of differencing approximation\n spacing : float\n Distance between points (must be uniform)\n \n Returns\n -------\n xr.DataArray\n \"\"\"\n neg = v < 0.\n pos = ~neg\n left = xdiff(da, dim, method='upwind_left', accuracy=accuracy, spacing=spacing, mode=mode)\n right = xdiff(da, dim, method='upwind_right', accuracy=accuracy, spacing=spacing, mode=mode)\n return neg * right + pos * left\n\n\ndef xgradient(da, dim, accuracy=2, spacing=1.):\n \"\"\"Arbitrary even-order extension of np.gradient for DataArrays.\n\n Meant for computing approximations for derivatives in a non-peridiodic\n setting. Uses centered differencing in the interior, and forward and\n backward differencing on the left and right edges respectively. Currently\n only supports operations along a single axis (though operations along\n multiple axes can be done with repeated calls to ``xgradient``).\n\n Parameters\n ----------\n da : xr.DataArray\n DataArray\n dim : str\n Name of dimension\n accuracy : int\n Even order of accuracy of differencing approximation\n spacing : float\n Distance between points (must be uniform)\n\n Returns\n -------\n xr.DataArray\n \"\"\"\n interior = xdiff(\n da, dim, method='centered',\n accuracy=accuracy, spacing=spacing).isel(\n **{dim: slice(accuracy, -accuracy)})\n\n left = da.isel(**{dim: slice(None, 2 * accuracy)})\n left = left.chunk({dim: left.sizes[dim]})\n left = xdiff(\n left, dim, method='forward',\n accuracy=accuracy, spacing=spacing).isel(\n **{dim: slice(None, accuracy)})\n\n right = da.isel(**{dim: slice(-2 * accuracy, None)})\n right = right.chunk({dim: right.sizes[dim]})\n right = xdiff(\n right, dim, method='backward',\n accuracy=accuracy, spacing=spacing).isel(\n **{dim: slice(-accuracy, None)})\n\n return xr.concat([left, interior, right], dim=dim)", | |
"execution_count": 1, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"text": "//anaconda/envs/xdiff-dev/lib/python3.6/site-packages/xarray/core/formatting.py:16: FutureWarning: The pandas.tslib module is deprecated and will be removed in a future version.\n from pandas.tslib import OutOfBoundsDatetime\n", | |
"name": "stderr" | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "import matplotlib.pyplot as plt\n%matplotlib inline", | |
"execution_count": 2, | |
"outputs": [] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Simple 1D case without dask\n--------------------------" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., 2. * np.pi, 100, endpoint=False)\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x'])", | |
"execution_count": 3, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxdiff(test, 'x', accuracy=2, method='centered', spacing=dx).plot(label='result (centered)')\nxdiff(test, 'x', accuracy=2, method='forward', spacing=dx).plot(label='result (forward)')\nxdiff(test, 'x', accuracy=2, method='backward', spacing=dx).plot(label='result (backward)')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 4, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 4, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x116edda20>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x116eddc18>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Derivatives can be computed to arbitrary order of accuracy. E.g.\n# if we plot the absolute value of the error at each point with the \n# three differencing methods we can see the error decreasing as we \n# include more points in the stencil.\nfig, axes = plt.subplots(1, 3, sharey=True)\nfig.set_size_inches(10, 2)\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\n\nfor ax, method in zip(axes, ['centered', 'forward', 'backward']):\n for order in [2, 4, 6, 8]:\n result = xdiff(test, 'x', accuracy=order, method=method, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\n ax.set_title(method)\n ax.set_yscale('log')\n ax.legend(loc='lower center', ncol=2)", | |
"execution_count": 5, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x118fbf240>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Simple 1D case with dask\n------------------------" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., 2. * np.pi, 100, endpoint=False)\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x']).chunk({'x': 10})", | |
"execution_count": 6, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.data", | |
"execution_count": 7, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 7, | |
"data": { | |
"text/plain": "dask.array<xarray-<this-array>, shape=(100,), dtype=float64, chunksize=(10,)>" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxdiff(test, 'x', accuracy=2, method='centered', spacing=dx).plot(label='result (centered)')\nxdiff(test, 'x', accuracy=2, method='forward', spacing=dx).plot(label='result (forward)')\nxdiff(test, 'x', accuracy=2, method='backward', spacing=dx).plot(label='result (backward)')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 8, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 8, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x1192bcda0>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x1193c5a20>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Derivatives can be computed to arbitrary order of accuracy. E.g.\n# if we plot the absolute value of the error at each point with the \n# three differencing methods we can see the error decreasing as we \n# include more points in the stencil.\nfig, axes = plt.subplots(1, 3, sharey=True)\nfig.set_size_inches(10, 2)\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\n\nfor ax, method in zip(axes, ['centered', 'forward', 'backward']):\n for order in [2, 4, 6, 8]:\n result = xdiff(test, 'x', accuracy=order, method=method, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\n ax.set_title(method)\n ax.set_yscale('log')\n ax.legend(loc='lower center', ncol=2)", | |
"execution_count": 9, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x119569a58>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "What about non-periodic datasets without dask?\n--------------------------------------------\n\nTo estimate these derivatives we will use `xgradient` instead of `xdiff`" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., np.pi, 50, endpoint=False) # Halt at np.pi (rather than 2 * np.pi)\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x'])", | |
"execution_count": 10, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxgradient(test, 'x', accuracy=8, spacing=dx).plot(label='result')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 11, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 11, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x11996ca90>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x11996c908>", | |
"image/png": "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\nUiqf/w/lryBpF7/towAAAABJRU5ErkJggg==\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Again this can be done for arbitrary order of accuracy\nax = plt.axes()\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\nfor order in [2, 4, 6, 8]:\n result = xgradient(test, 'x', accuracy=order, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\nax.set_yscale('log')\nax.legend(loc='lower center', ncol=2)", | |
"execution_count": 12, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 12, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x1197ebcf8>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x119b2b0f0>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Finally non-periodic datasets with dask\n-------------------------------------" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., np.pi, 50, endpoint=False) # Halt at np.pi (rather than 2 * np.pi)\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x']).chunk({'x': 10})", | |
"execution_count": 13, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.data", | |
"execution_count": 14, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 14, | |
"data": { | |
"text/plain": "dask.array<xarray-<this-array>, shape=(50,), dtype=float64, chunksize=(10,)>" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxgradient(test, 'x', accuracy=8, spacing=dx).plot(label='result')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 15, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 15, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x11900bef0>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x11996c748>", | |
"image/png": "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\nUiqf/w/lryBpF7/towAAAABJRU5ErkJggg==\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "# Again this can be done for arbitrary order of accuracy\nax = plt.axes()\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\nfor order in [2, 4, 6, 8]:\n result = xgradient(test, 'x', accuracy=order, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\nax.set_yscale('log')\nax.legend(loc='lower center', ncol=2)", | |
"execution_count": 16, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 16, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x10a427080>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x1199f8c18>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "These work on multi-dimensional datasets just as well\n--------------------------------------------------\nThis is a 3D example with dask:" | |
}, | |
{ | |
"metadata": { | |
"collapsed": true, | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., 2. * np.pi, 100, endpoint=False)\ndx = x[1] - x[0]\ny = xr.DataArray(np.arange(10), coords=[np.arange(10)], dims=['y'])\nz = xr.DataArray(np.arange(12, 20), coords=[np.arange(12, 20)], dims=['z'])\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x'])", | |
"execution_count": 17, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test3d, _ = xr.broadcast(test, y * z)\ntest3d = test3d.transpose('y', 'x', 'z').chunk({'x': 10, 'y': 1})\nresult = xdiff(test3d, 'x', accuracy=6, method='backward', spacing=dx).isel(z=5).plot()", | |
"execution_count": 18, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x118fa15c0>", | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": {}, | |
"cell_type": "markdown", | |
"source": "Upwind derivatives\n-----------------\nThese also work with dask; the upwind stencils generated are consistent with Wikipedia for 2nd and 3rd order differences; I'm not 100% sure how to handle higher order cases, but I made the assumption that upwind stencils always are shifted one place from their center (I'm not sure if that's the correct assumption). I've implemented a differencing function that takes into account the velocity direction in `xdiff_upwind` which is demonstrated here. As before, this is dask compatible (as it relies on the previously defined and now extended `xdiff` method)." | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "upwind_weights_left(3)", | |
"execution_count": 19, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 19, | |
"data": { | |
"text/plain": "[-0.333333333333333, -0.500000000000000, 1.00000000000000, -0.166666666666667]" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "upwind_weights_right(3)", | |
"execution_count": 20, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 20, | |
"data": { | |
"text/plain": "[0.166666666666667, -1.00000000000000, 0.500000000000000, 0.333333333333333]" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true, | |
"collapsed": true | |
}, | |
"cell_type": "code", | |
"source": "x = np.linspace(0., 2. * np.pi, 100, endpoint=False)\nv = np.random.rand(100) - 0.5\ndx = x[1] - x[0]\ntest = xr.DataArray(np.sin(x), coords=[x], dims=['x'])\ntest_v = xr.DataArray(v, coords=[x], dims=['x'])", | |
"execution_count": 21, | |
"outputs": [] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "fig, ax = plt.subplots(1, 1)\nfig.set_size_inches(6, 4)\nexpected = xr.DataArray(np.cos(x), coords=[x], dims=['x'])\n\nfor order in [1, 2, 3, 4, 5, 6, 7, 8]:\n result = xdiff_upwind(test, test_v, 'x', accuracy=order, spacing=dx)\n np.abs((result - expected)).plot(ax=ax, label=order)\nax.set_title(method)\nax.set_yscale('log')\nax.legend(loc='lower center', ncol=4)\nax.set_title('Upwind')", | |
"execution_count": 22, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 22, | |
"data": { | |
"text/plain": "<matplotlib.text.Text at 0x119c5c198>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x119385940>", | |
"image/png": "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\n4v8HtXU+khr03nQAAAAASUVORK5CYII=\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"metadata": { | |
"trusted": true | |
}, | |
"cell_type": "code", | |
"source": "test.plot(label='input')\nxdiff_upwind(test, test_v, 'x', accuracy=2, spacing=dx).plot(label='2')\nxdiff_upwind(test, test_v, 'x', accuracy=3, spacing=dx).plot(label='3')\nplt.gca().legend(loc='lower left')", | |
"execution_count": 23, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"execution_count": 23, | |
"data": { | |
"text/plain": "<matplotlib.legend.Legend at 0x119e15ba8>" | |
}, | |
"metadata": {} | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": "<matplotlib.figure.Figure at 0x119e15b00>", | |
"image/png": "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\nYoXBGGNMkP8DMxo+nx4oRDYAAAAASUVORK5CYII=\n" | |
}, | |
"metadata": {} | |
} | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"name": "python3", | |
"display_name": "Python 3", | |
"language": "python" | |
}, | |
"language_info": { | |
"name": "python", | |
"version": "3.6.1", | |
"mimetype": "text/x-python", | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"pygments_lexer": "ipython3", | |
"nbconvert_exporter": "python", | |
"file_extension": ".py" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 1 | |
} |
Hi @kuchaale,
Sorry I just saw this now (for some reason I wasn't notified by your tagging of me in your post). Many thanks for trying things out!
For right now I would say the boundary behavior of xdiff
you experienced is expected, because I've only allowed for the mode='wrap'
option, which is enabled by default, and the interior values look good.
But it's clear you've uncovered a bug in xgradient
. I think I've fixed things in the updated gist:
In [1]: test = xr.DataArray([30., 33., 39., 36., 41., 37.], dims=['x'])
Out [1]: <xarray.DataArray (x: 6)>
array([-1. , 2.25, 0.75, 0.5 , 0.25, -2.75])
Dimensions without coordinates: x
In [2]: xgradient(test, 'x', spacing=2., accuracy=2)
Out [2]: <xarray.DataArray (x: 6)>
array([ 0.75, 2.25, 0.75, 0.5 , 0.25, -4.25])
Dimensions without coordinates: x
Note that my result using xgradient
is different than NCL's on the boundaries, because I'm doing second-order accurate differencing everywhere. NCL uses second-order centered differencing on the interior and first-order forward or backward differencing on the boundaries.
In the updated gist I also added some logic in xgradient
that checks to see if the underlying data is stored in a dask array; only then will it chunk the left and right components. (This way you don't need to call .compute()
at the end anymore).
Hi @spencerkclark,
I like your approach very much. However, when I tried to produce similar results to ncl example 1 using center_finite_diff_n (see below), I receive different results especially on the boundary points. See below:
t = np.arange(6); x = [30.,33.,39.,36.,41.,37.]; test = xr.DataArray(x, coords=[t], dims=['t'])
Using xdiff
xdiff(test, 't', accuracy=2, method='centered', spacing=2.)
produced:
`<xarray.DataArray (t: 6)>
array([-1. , 2.25, 0.75, 0.5 , 0.25, -2.75])
Coordinates:
Using xgradient
xgradient(test, 't', accuracy=2, spacing=2.).compute()
produced:
`<xarray.DataArray (t: 6)>
array([ 0.75, 5.25, 0.75, 0.5 , 4.5 , -4.25])
Coordinates:
Am I doing something wrong? Thx for your answer,
Ales