Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save spencerkclark/4089a7eba20a1cd5389425005ba509cd to your computer and use it in GitHub Desktop.
Save spencerkclark/4089a7eba20a1cd5389425005ba509cd 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,
"collapsed": 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 'xdiff 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": 16,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "import matplotlib.pyplot as plt\n%matplotlib inline",
"execution_count": 24,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Simple 1D case without dask\n--------------------------"
},
{
"metadata": {
"trusted": true,
"collapsed": 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": 25,
"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": 30,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 30,
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x121c782e8>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x121c784a8>",
"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": 48,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x12470c9b0>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Simple 1D case with dask\n------------------------"
},
{
"metadata": {
"trusted": true,
"collapsed": 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": 49,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "test.data",
"execution_count": 50,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 50,
"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": 51,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 51,
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x12583ab70>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x12583a2b0>",
"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": 52,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x125a829b0>",
"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": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "x = np.linspace(0., np.pi, 100, 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": 69,
"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": 70,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 70,
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x12612d5c0>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x1263a4908>",
"image/png": "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\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": 71,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 71,
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x1266c2b38>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x1260f59e8>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Finally non-periodic datasets with dask\n-------------------------------------"
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "x = np.linspace(0., np.pi, 100, 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": 72,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "test.data",
"execution_count": 73,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 73,
"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')\nxgradient(test, 'x', accuracy=8, spacing=dx).plot(label='result')\nplt.gca().legend(loc='lower left')",
"execution_count": 74,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 74,
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x1269a0b70>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x1269550f0>",
"image/png": "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\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": 75,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 75,
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x1255cc630>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x126ae10b8>",
"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": {
"trusted": true,
"collapsed": 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": 82,
"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": 83,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x1259d1f98>",
"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": {
"trusted": true,
"collapsed": 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