Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save spencerkclark/fd7bd3144dc8be823068b2248595a515 to your computer and use it in GitHub Desktop.
Save spencerkclark/fd7bd3144dc8be823068b2248595a515 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"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 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', and 'forward'\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 = -int(np.ceil(accuracy / 2.))\n elif method == 'backward':\n weights = backward_diff_weights(accuracy, spacing)\n origin = int(np.floor(accuracy / 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 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 0x11ea969b0>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x11ea96ba8>",
"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 0x120c28ba8>",
"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 0x121020ac8>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x120d51ba8>",
"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 0x12112cc88>",
"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 0x1215e04e0>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x1215e0278>",
"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 0x121353160>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x12166dc18>",
"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 0x12136d320>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x1217a9a20>",
"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 0x12168bc18>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x121393ef0>",
"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 0x12168bc88>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Upwind stencils\n--------------\nNote that the [sympy function](http://docs.sympy.org/dev/modules/calculus/index.html#sympy.calculus.finite_diff.finite_diff_weights) used to generate the stencils can even do upwinding.\nThis is a second order upwind difference to the first derivative:\n```\nIn [2]: sympy.calculus.finite_diff_weights(1, [1, 2, 3], 3)[1][-1]\nOut[2]: [1/2, -2, 3/2]\n```\nTherefore I think it would be possible to extend these to compute upwind estimates of derivatives (which obviously would also require a velocity field as an input argument, and a slightly more complicated function to apply on each block)."
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment