From d1cd62279ef5257d9f5b66bbf6140054ffb0183f Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Sat, 3 Nov 2018 14:08:28 +0000 Subject: [PATCH 01/11] first draft of xarray tutorial for dask examples --- images/dataset-diagram-logo.png | Bin 0 -> 108946 bytes xarray.ipynb | 361 ++++++++++++++++++++++++++++++++ 2 files changed, 361 insertions(+) create mode 100644 images/dataset-diagram-logo.png create mode 100644 xarray.ipynb diff --git a/images/dataset-diagram-logo.png b/images/dataset-diagram-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dab01949fa2b39deb431c02333957e8912000695 GIT binary patch literal 108946 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�SLVbK`LBpn7c!tdUP11z5n$&+D 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�Nl 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 dhfK6|#H7UK&d?y~6~XV2p0<%z*\n", + " \n", + "**Xarray** is an open source project and Python package that extends the labeled data functionality of pandas N-dimensional array-like datasets. It shares a similar API to Numpy and Pandas and supports Dask arrays under the hood." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Start Dask Client for Dashboard\n", + "\n", + "Starting the Dask Client is optional. It will provide a dashboard which \n", + "is useful to gain insight on the computation. \n", + "\n", + "The link to the dashboard will become visible when you create the client below. We recommend having it open on one side of your screen while using your notebook on the other side. This can take some effort to arrange your windows, but seeing them both at the same is very useful when learning." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from dask.distributed import Client, progress\n", + "client = Client(n_workers=2, threads_per_worker=2, memory_limit='1GB')\n", + "client" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Open a sample dataset\n", + "\n", + "We will use some of xarray's tutorial data for this example. All we need to do is specify the chunk shape and xarray will automatically create Dask arrays for the variables in the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "\n", + "ds = xr.tutorial.load_dataset('air_temperature',\n", + " chunks={'lat': 25, 'lon': 25, 'time': 1000})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "By specifying the chunk sizes by dimension name, we have configured the data variables in our `Dataset` to be returned backed by Dask arrays. In xarray, `Datasets` are dict-like container of labeled arrays akin to the `pandas.DataFrame`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quickly inspecting the Dataset above, we'll note that this Dataset has three dimensions akin to axis in NumPy (lat, lon, and time), three coordinate variables akin to Pandas.Index objects (also named lat, lon, and time), and one data variable (air). Xarray also holds Dataset specific metadata in as Attributes." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "da = ds['air']\n", + "da" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each data variable in xarray is called a `DataArray`. These are the fundemental labeled array object in xarray. Much like the Dataset, DataArray's still have dimensions and coordinate that support many of its array opperations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "da.data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Accessing the underlying array of data is done via the `data` property. Here we can see that we have a Dask array." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Use Standard Xarray Operations\n", + "\n", + "Most common xarray operations operate identically on xarray objects backed by dask. The " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "da2 = da.groupby('time.month').mean('time')\n", + "da3 = da - da2\n", + "da3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Call `.compute()` when you want your result as a xarray.DataArray with data stored as NumPy arrays.\n", + "\n", + "If you started `Client()` above then you may want to watch the status page during computation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "computed_da = da3.compute()\n", + "type(computed_da.data)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "computed_da" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Persist data in memory\n", + "\n", + "If you have the available RAM for your dataset then you can persist data in memory. \n", + "\n", + "This allows future computations to be much faster." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "da = da.persist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Time Series Operations\n", + "\n", + "Because we have a datetime index time-series operations work efficiently" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "da.resample(time='1w').mean('time').std('time')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "da.resample(time='1w').mean('time').std('time').compute().plot()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "da_smooth = da.rolling(time=30).mean()\n", + "da_smooth" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since xarray stores each of its coordinate variables in memory, slicing by label is trivial and entirely lazy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time da.sel(time='2013-01-01T18:00:00')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%time da.sel(time='2013-01-01T18:00:00').compute()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Custom workflows and automatic parallelization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Almost all of xarray’s built-in operations work on dask arrays. If you want to use a function that isn’t wrapped by xarray, one option is to extract dask arrays from xarray objects (.data) and use dask directly.\n", + "\n", + "Another option is to use xarray’s apply_ufunc(), which can automate embarrassingly parallel “map” type operations where a functions written for processing NumPy arrays should be repeatedly applied to xarray objects containing dask arrays. It works similarly to dask.array.map_blocks() and dask.array.atop(), but without requiring an intermediate layer of abstraction.\n", + "\n", + "Here we show an example using NumPy operations and a fast function from bottleneck, which we use to calculate Spearman’s rank-correlation coefficient:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import bottleneck\n", + "\n", + "def covariance_gufunc(x, y):\n", + " return ((x - x.mean(axis=-1, keepdims=True))\n", + " * (y - y.mean(axis=-1, keepdims=True))).mean(axis=-1)\n", + "\n", + "def pearson_correlation_gufunc(x, y):\n", + " return covariance_gufunc(x, y) / (x.std(axis=-1) * y.std(axis=-1))\n", + "\n", + "def spearman_correlation_gufunc(x, y):\n", + " x_ranks = bottleneck.rankdata(x, axis=-1)\n", + " y_ranks = bottleneck.rankdata(y, axis=-1)\n", + " return pearson_correlation_gufunc(x_ranks, y_ranks)\n", + "\n", + "def spearman_correlation(x, y, dim):\n", + " return xr.apply_ufunc(\n", + " spearman_correlation_gufunc, x, y,\n", + " input_core_dims=[[dim], [dim]],\n", + " dask='parallelized',\n", + " output_dtypes=[float])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the examples above, we were working with an some air temperature data. For this example, we'll calculate the spearman correlation using the raw air temperature data with the smoothed version that we also created (`da_smooth`). For this, we'll also have to rechunk the data ahead of time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "corr = spearman_correlation(da.chunk({'time': -1}),\n", + " da_smooth.chunk({'time': -1}),\n", + " 'time')\n", + "corr" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "corr.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 8d2a392930518360b33b4fb9b9710a20efc9bf0b Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Sat, 3 Nov 2018 16:31:25 +0000 Subject: [PATCH 02/11] add xarray to env --- binder/environment.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/binder/environment.yml b/binder/environment.yml index b78047d9..af9d6b44 100644 --- a/binder/environment.yml +++ b/binder/environment.yml @@ -17,6 +17,7 @@ dependencies: - nomkl - h5py - py-xgboost + - xarray - pip: - graphviz - dask_xgboost From 698ad30b67fd6e095ad1f34644cb5e111fd0a6a0 Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Sun, 4 Nov 2018 05:06:44 -0800 Subject: [PATCH 03/11] updates to xarray example --- binder/environment.yml | 3 ++- xarray.ipynb | 16 ++++------------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/binder/environment.yml b/binder/environment.yml index af9d6b44..f4662d39 100644 --- a/binder/environment.yml +++ b/binder/environment.yml @@ -16,10 +16,11 @@ dependencies: - nbserverproxy - nomkl - h5py + - h5netcdf - py-xgboost - - xarray - pip: - graphviz - dask_xgboost - seaborn - mimesis + - xarray diff --git a/xarray.ipynb b/xarray.ipynb index 88caa2cf..6cfd157d 100644 --- a/xarray.ipynb +++ b/xarray.ipynb @@ -11,7 +11,7 @@ " width=\"66%\"\n", " alt=\"Xarray Dataset\">\n", " \n", - "**Xarray** is an open source project and Python package that extends the labeled data functionality of pandas N-dimensional array-like datasets. It shares a similar API to Numpy and Pandas and supports Dask arrays under the hood." + "**Xarray** is an open source project and Python package that extends the labeled data functionality of pandas to N-dimensional array-like datasets. It shares a similar API to Numpy and Pandas and supports both Dask and NumPy arrays under the hood." ] }, { @@ -54,8 +54,7 @@ "source": [ "import xarray as xr\n", "\n", - "ds = xr.tutorial.load_dataset('air_temperature',\n", - " chunks={'lat': 25, 'lon': 25, 'time': 1000})" + "ds = xr.tutorial.load_dataset('air_temperature').chunk({'lat': 25, 'lon': 25, 'time': 1000})" ] }, { @@ -215,7 +214,7 @@ "metadata": {}, "outputs": [], "source": [ - "da.resample(time='1w').mean('time').std('time').compute().plot()" + "da.resample(time='1w').mean('time').std('time').compute().plot(figsize=(12, 8))" ] }, { @@ -326,15 +325,8 @@ "metadata": {}, "outputs": [], "source": [ - "corr.plot()" + "corr.plot(figsize=(12, 8))" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 08bcce1dc2fcc70fd1eed3b0c02b02afc37664ff Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Sun, 4 Nov 2018 09:28:25 -0800 Subject: [PATCH 04/11] bump versions and put xarray back in conda env --- binder/environment.yml | 9 ++++----- xarray.ipynb | 5 +++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/binder/environment.yml b/binder/environment.yml index f4662d39..ae61d889 100644 --- a/binder/environment.yml +++ b/binder/environment.yml @@ -3,9 +3,9 @@ channels: dependencies: - python=3 - bokeh=0.13 - - dask=0.19.4 + - dask=0.20 - dask-ml=0.10.0 - - distributed=1.23.3 + - distributed=1.24 - jupyterlab=0.35.1 - nodejs=8.9 - numpy @@ -16,11 +16,10 @@ dependencies: - nbserverproxy - nomkl - h5py - - h5netcdf + - xarray - py-xgboost - pip: - graphviz - dask_xgboost - seaborn - - mimesis - - xarray + - mimesis \ No newline at end of file diff --git a/xarray.ipynb b/xarray.ipynb index 6cfd157d..c38a5a30 100644 --- a/xarray.ipynb +++ b/xarray.ipynb @@ -54,7 +54,8 @@ "source": [ "import xarray as xr\n", "\n", - "ds = xr.tutorial.load_dataset('air_temperature').chunk({'lat': 25, 'lon': 25, 'time': 1000})" + "ds = xr.tutorial.load_dataset('air_temperature').chunk(\n", + " {'lat': 25, 'lon': 25, 'time': 1000})" ] }, { @@ -94,7 +95,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Each data variable in xarray is called a `DataArray`. These are the fundemental labeled array object in xarray. Much like the Dataset, DataArray's still have dimensions and coordinate that support many of its array opperations." + "Each data variable in xarray is called a `DataArray`. These are the fundemental labeled array object in xarray. Much like the Dataset, DataArray's still have dimensions and coordinates that support many of its array opperations." ] }, { From 842cfc09ac139b3f642a124d0f101434600b9b11 Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Sun, 4 Nov 2018 10:02:56 -0800 Subject: [PATCH 05/11] copy editing --- xarray.ipynb | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/xarray.ipynb b/xarray.ipynb index c38a5a30..3f16e16b 100644 --- a/xarray.ipynb +++ b/xarray.ipynb @@ -43,7 +43,7 @@ "source": [ "## Open a sample dataset\n", "\n", - "We will use some of xarray's tutorial data for this example. All we need to do is specify the chunk shape and xarray will automatically create Dask arrays for the variables in the dataset." + "We will use some of xarray's tutorial data for this example. By specifying the chunk shape, xarray will automatically create Dask arrays for each data variable in the `Dataset`. In xarray, `Datasets` are dict-like container of labeled arrays, analogous to the `pandas.DataFrame`. Note that we're taking advantage of xarray's dimension labels when specifying chunk shapes." ] }, { @@ -58,13 +58,6 @@ " {'lat': 25, 'lon': 25, 'time': 1000})" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By specifying the chunk sizes by dimension name, we have configured the data variables in our `Dataset` to be returned backed by Dask arrays. In xarray, `Datasets` are dict-like container of labeled arrays akin to the `pandas.DataFrame`." - ] - }, { "cell_type": "code", "execution_count": null, @@ -78,7 +71,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Quickly inspecting the Dataset above, we'll note that this Dataset has three dimensions akin to axis in NumPy (lat, lon, and time), three coordinate variables akin to Pandas.Index objects (also named lat, lon, and time), and one data variable (air). Xarray also holds Dataset specific metadata in as Attributes." + "Quickly inspecting the `Dataset` above, we'll note that this `Dataset` has three _dimensions_ akin to axes in NumPy (`lat`, `lon`, and `time`), three _coordinate variables_ akin to `pandas.Index` objects (also named `lat`, `lon`, and `time`), and one data variable (`air`). Xarray also holds Dataset specific metadata in as _attributes_." ] }, { @@ -95,7 +88,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Each data variable in xarray is called a `DataArray`. These are the fundemental labeled array object in xarray. Much like the Dataset, DataArray's still have dimensions and coordinates that support many of its array opperations." + "Each data variable in xarray is called a `DataArray`. These are the fundemental labeled array object in xarray. Much like the `Dataset`, `DataArrays` also have _dimensions_ and _coordinates_ that support many of its label-based opperations." ] }, { @@ -111,7 +104,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Accessing the underlying array of data is done via the `data` property. Here we can see that we have a Dask array." + "Accessing the underlying array of data is done via the `data` property. Here we can see that we have a Dask array. If this array were to be backed by a NumPy array, this property would point to the actual values in the array." ] }, { @@ -120,7 +113,7 @@ "source": [ "## Use Standard Xarray Operations\n", "\n", - "Most common xarray operations operate identically on xarray objects backed by dask. The " + "In almost all cases, operations using xarray objects are identical, regardless if the underlying data is stored as a Dask array or a NumPy array." ] }, { @@ -138,7 +131,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Call `.compute()` when you want your result as a xarray.DataArray with data stored as NumPy arrays.\n", + "Call `.compute()` when you want your result as a `xarray.DataArray` with data stored as NumPy arrays.\n", "\n", "If you started `Client()` above then you may want to watch the status page during computation." ] @@ -264,11 +257,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Almost all of xarray’s built-in operations work on dask arrays. If you want to use a function that isn’t wrapped by xarray, one option is to extract dask arrays from xarray objects (.data) and use dask directly.\n", + "Almost all of xarray’s built-in operations work on Dask arrays. If you want to use a function that isn’t wrapped by xarray, one option is to extract Dask arrays from xarray objects (.data) and use Dask directly.\n", "\n", - "Another option is to use xarray’s apply_ufunc(), which can automate embarrassingly parallel “map” type operations where a functions written for processing NumPy arrays should be repeatedly applied to xarray objects containing dask arrays. It works similarly to dask.array.map_blocks() and dask.array.atop(), but without requiring an intermediate layer of abstraction.\n", + "Another option is to use xarray’s `apply_ufunc()` function, which can automate embarrassingly parallel “map” type operations where a functions written for processing NumPy arrays should be repeatedly applied to xarray objects containing Dask arrays. It works similarly to `dask.array.map_blocks()` and `dask.array.atop()`, but without requiring an intermediate layer of abstraction.\n", "\n", - "Here we show an example using NumPy operations and a fast function from bottleneck, which we use to calculate Spearman’s rank-correlation coefficient:" + "Here we show an example using NumPy operations and a fast function from `bottleneck`, which we use to calculate Spearman’s rank-correlation coefficient:" ] }, { From fc7f10f92b1e1269e36c9f2e99d5e20be676148a Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Wed, 7 Nov 2018 19:47:43 -0800 Subject: [PATCH 06/11] updates -- in sync with xarray 0.11 release --- xarray.ipynb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xarray.ipynb b/xarray.ipynb index 3f16e16b..39440f80 100644 --- a/xarray.ipynb +++ b/xarray.ipynb @@ -11,7 +11,7 @@ " width=\"66%\"\n", " alt=\"Xarray Dataset\">\n", " \n", - "**Xarray** is an open source project and Python package that extends the labeled data functionality of pandas to N-dimensional array-like datasets. It shares a similar API to Numpy and Pandas and supports both Dask and NumPy arrays under the hood." + "**[Xarray](http://xarray.pydata.org/en/stable/)** is an open source project and Python package that extends the labeled data functionality of [Pandas](https://pandas.pydata.org/) to N-dimensional array-like datasets. It shares a similar API to [NumPy](http://www.numpy.org/) and [Pandas](https://pandas.pydata.org/) and supports both [Dask](https://dask.org/) and [NumPy](http://www.numpy.org/) arrays under the hood." ] }, { @@ -54,8 +54,8 @@ "source": [ "import xarray as xr\n", "\n", - "ds = xr.tutorial.load_dataset('air_temperature').chunk(\n", - " {'lat': 25, 'lon': 25, 'time': 1000})" + "ds = xr.tutorial.open_dataset('air_temperature',\n", + " chunks={'lat': 25, 'lon': 25, 'time': 1000})" ] }, { @@ -339,7 +339,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.6.6" } }, "nbformat": 4, From cb86a9cc82e324c71dad078dae1813f90b4d6855 Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Thu, 8 Nov 2018 09:10:56 -0800 Subject: [PATCH 07/11] add bottleneck to env --- binder/environment.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/binder/environment.yml b/binder/environment.yml index ae61d889..dc850b37 100644 --- a/binder/environment.yml +++ b/binder/environment.yml @@ -17,6 +17,7 @@ dependencies: - nomkl - h5py - xarray + - bottleneck - py-xgboost - pip: - graphviz From 7274bc2632cf451d43c0aa5d4ee2e0d89d7a59ef Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Fri, 9 Nov 2018 06:59:12 -0800 Subject: [PATCH 08/11] add xarray to toc --- index.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/index.rst b/index.rst index 9d4cef2f..77ee031a 100644 --- a/index.rst +++ b/index.rst @@ -23,6 +23,7 @@ You can run these examples in a live session here: |Binder| delayed futures machine-learning + xarray .. toctree:: :maxdepth: 1 From e373d6802cf3f86318f07618255c97e3f7f61a79 Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Fri, 9 Nov 2018 14:16:04 -0800 Subject: [PATCH 09/11] small cleanups of xarray example --- xarray.ipynb | 54 +++++++++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/xarray.ipynb b/xarray.ipynb index 39440f80..8de3f3c4 100644 --- a/xarray.ipynb +++ b/xarray.ipynb @@ -14,6 +14,18 @@ "**[Xarray](http://xarray.pydata.org/en/stable/)** is an open source project and Python package that extends the labeled data functionality of [Pandas](https://pandas.pydata.org/) to N-dimensional array-like datasets. It shares a similar API to [NumPy](http://www.numpy.org/) and [Pandas](https://pandas.pydata.org/) and supports both [Dask](https://dask.org/) and [NumPy](http://www.numpy.org/) arrays under the hood." ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "from dask.distributed import Client\n", + "import xarray as xr" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -32,7 +44,6 @@ "metadata": {}, "outputs": [], "source": [ - "from dask.distributed import Client, progress\n", "client = Client(n_workers=2, threads_per_worker=2, memory_limit='1GB')\n", "client" ] @@ -52,18 +63,8 @@ "metadata": {}, "outputs": [], "source": [ - "import xarray as xr\n", - "\n", "ds = xr.tutorial.open_dataset('air_temperature',\n", - " chunks={'lat': 25, 'lon': 25, 'time': 1000})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + " chunks={'lat': 25, 'lon': 25, 'time': 1000})\n", "ds" ] }, @@ -131,7 +132,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Call `.compute()` when you want your result as a `xarray.DataArray` with data stored as NumPy arrays.\n", + "Call `.compute()` or `.load()` when you want your result as a `xarray.DataArray` with data stored as NumPy arrays.\n", "\n", "If you started `Client()` above then you may want to watch the status page during computation." ] @@ -142,7 +143,7 @@ "metadata": {}, "outputs": [], "source": [ - "computed_da = da3.compute()\n", + "computed_da = da3.load()\n", "type(computed_da.data)" ] }, @@ -181,7 +182,7 @@ "source": [ "## Time Series Operations\n", "\n", - "Because we have a datetime index time-series operations work efficiently" + "Because we have a datetime index time-series operations work efficiently. Here we demo the use of xarray's resample method:" ] }, { @@ -190,7 +191,7 @@ "metadata": {}, "outputs": [], "source": [ - "%matplotlib inline" + "da.resample(time='1w').mean('time').std('time')" ] }, { @@ -199,16 +200,14 @@ "metadata": {}, "outputs": [], "source": [ - "da.resample(time='1w').mean('time').std('time')" + "da.resample(time='1w').mean('time').std('time').load().plot(figsize=(12, 8))" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "da.resample(time='1w').mean('time').std('time').compute().plot(figsize=(12, 8))" + "and rolling window operations:" ] }, { @@ -217,7 +216,7 @@ "metadata": {}, "outputs": [], "source": [ - "da_smooth = da.rolling(time=30).mean()\n", + "da_smooth = da.rolling(time=30).mean().persist()\n", "da_smooth" ] }, @@ -243,7 +242,7 @@ "metadata": {}, "outputs": [], "source": [ - "%time da.sel(time='2013-01-01T18:00:00').compute()" + "%time da.sel(time='2013-01-01T18:00:00').load()" ] }, { @@ -321,6 +320,13 @@ "source": [ "corr.plot(figsize=(12, 8))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -339,7 +345,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.6" + "version": "3.6.5" } }, "nbformat": 4, From 9847b48f2da84d08f7564a4abcd663323816a1dc Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Fri, 9 Nov 2018 15:42:40 -0800 Subject: [PATCH 10/11] bigger xarray chunks --- xarray.ipynb | 425 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 377 insertions(+), 48 deletions(-) diff --git a/xarray.ipynb b/xarray.ipynb index 8de3f3c4..c5ed4fd1 100644 --- a/xarray.ipynb +++ b/xarray.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -40,9 +40,41 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "

Client

\n", + "\n", + "
\n", + "

Cluster

\n", + "
    \n", + "
  • Workers: 2
  • \n", + "
  • Cores: 4
  • \n", + "
  • Memory: 2.00 GB
  • \n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "client = Client(n_workers=2, threads_per_worker=2, memory_limit='1GB')\n", "client" @@ -59,12 +91,36 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "Dimensions: (lat: 25, lon: 53, time: 2920)\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", + " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n", + "Data variables:\n", + " air (time, lat, lon) float32 dask.array\n", + "Attributes:\n", + " Conventions: COARDS\n", + " title: 4x daily NMC reanalysis (1948)\n", + " description: Data is from NMC initialized reanalysis\\n(4x/day). These a...\n", + " platform: Model\n", + " references: http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanaly..." + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "ds = xr.tutorial.open_dataset('air_temperature',\n", - " chunks={'lat': 25, 'lon': 25, 'time': 1000})\n", + " chunks={'lat': 25, 'lon': 25, 'time': -1})\n", "ds" ] }, @@ -77,9 +133,37 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", + " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n", + "Attributes:\n", + " long_name: 4xDaily Air temperature at sigma level 995\n", + " units: degK\n", + " precision: 2\n", + " GRIB_id: 11\n", + " GRIB_name: TMP\n", + " var_desc: Air temperature\n", + " dataset: NMC Reanalysis\n", + " level_desc: Surface\n", + " statistic: Individual Obs\n", + " parent_stat: Other\n", + " actual_range: [185.16 322.1 ]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "da = ds['air']\n", "da" @@ -94,9 +178,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dask.array" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "da.data" ] @@ -119,9 +214,26 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", + " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n", + " * month (month) int64 1 2 3 4 5 6 7 8 9 10 11 12" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "da2 = da.groupby('time.month').mean('time')\n", "da3 = da - da2\n", @@ -139,9 +251,20 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "computed_da = da3.load()\n", "type(computed_da.data)" @@ -149,9 +272,48 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "array([[[[-5.149872, ..., -6.770996],\n", + " ...,\n", + " [-7.046707, ..., -4.028244]],\n", + "\n", + " ...,\n", + "\n", + " [[-0.864166, ..., -1.590881],\n", + " ...,\n", + " [ 0.963531, ..., -0.937622]]],\n", + "\n", + "\n", + " ...,\n", + "\n", + "\n", + " [[[-1.259872, ..., -2.880997],\n", + " ...,\n", + " [-3.856705, ..., -0.838242]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0.535828, ..., -0.190887],\n", + " ...,\n", + " [ 0.053528, ..., -1.847626]]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", + " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n", + " * month (month) int64 1 2 3 4 5 6 7 8 9 10 11 12" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "computed_da" ] @@ -169,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -187,18 +349,54 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "da.resample(time='1w').mean('time').std('time')" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "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": {}, + "output_type": "display_data" + } + ], "source": [ "da.resample(time='1w').mean('time').std('time').load().plot(figsize=(12, 8))" ] @@ -212,9 +410,25 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", + " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "da_smooth = da.rolling(time=30).mean().persist()\n", "da_smooth" @@ -229,18 +443,97 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 7.7 ms, sys: 2.41 ms, total: 10.1 ms\n", + "Wall time: 11.2 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", + " time datetime64[ns] 2013-01-01T18:00:00\n", + "Attributes:\n", + " long_name: 4xDaily Air temperature at sigma level 995\n", + " units: degK\n", + " precision: 2\n", + " GRIB_id: 11\n", + " GRIB_name: TMP\n", + " var_desc: Air temperature\n", + " dataset: NMC Reanalysis\n", + " level_desc: Surface\n", + " statistic: Individual Obs\n", + " parent_stat: Other\n", + " actual_range: [185.16 322.1 ]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "%time da.sel(time='2013-01-01T18:00:00')" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 29.7 ms, sys: 5.39 ms, total: 35.1 ms\n", + "Wall time: 39.7 ms\n" + ] + }, + { + "data": { + "text/plain": [ + "\n", + "array([[241.89 , 241.79999, 241.79999, ..., 234.39 , 235.5 , 237.59999],\n", + " [246.29999, 245.29999, 244.2 , ..., 230.89 , 231.5 , 234.5 ],\n", + " [256.6 , 254.7 , 252.09999, ..., 230.7 , 231.79999, 236.09999],\n", + " ...,\n", + " [296.6 , 296.4 , 296. , ..., 296.5 , 295.79 , 295.29 ],\n", + " [297. , 297.5 , 297.1 , ..., 296.79 , 296.6 , 296.29 ],\n", + " [297.5 , 297.69998, 297.5 , ..., 297.79 , 298. , 297.9 ]],\n", + " dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", + " time datetime64[ns] 2013-01-01T18:00:00\n", + "Attributes:\n", + " long_name: 4xDaily Air temperature at sigma level 995\n", + " units: degK\n", + " precision: 2\n", + " GRIB_id: 11\n", + " GRIB_name: TMP\n", + " var_desc: Air temperature\n", + " dataset: NMC Reanalysis\n", + " level_desc: Surface\n", + " statistic: Individual Obs\n", + " parent_stat: Other\n", + " actual_range: [185.16 322.1 ]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "%time da.sel(time='2013-01-01T18:00:00').load()" ] @@ -265,7 +558,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -302,9 +595,24 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", + " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "corr = spearman_correlation(da.chunk({'time': -1}),\n", " da_smooth.chunk({'time': -1}),\n", @@ -314,9 +622,30 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "corr.plot(figsize=(12, 8))" ] @@ -331,9 +660,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python (pangeo)", "language": "python", - "name": "python3" + "name": "pangeo" }, "language_info": { "codemirror_mode": { From 3c6aed213cc46841371ba5c61b9d32ca25e9de1a Mon Sep 17 00:00:00 2001 From: Joseph Hamman Date: Tue, 13 Nov 2018 08:29:30 -0800 Subject: [PATCH 11/11] strip out kernel --- xarray.ipynb | 425 ++++++--------------------------------------------- 1 file changed, 48 insertions(+), 377 deletions(-) diff --git a/xarray.ipynb b/xarray.ipynb index c5ed4fd1..099fae44 100644 --- a/xarray.ipynb +++ b/xarray.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -40,41 +40,9 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "

Client

\n", - "\n", - "
\n", - "

Cluster

\n", - "
    \n", - "
  • Workers: 2
  • \n", - "
  • Cores: 4
  • \n", - "
  • Memory: 2.00 GB
  • \n", - "
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "client = Client(n_workers=2, threads_per_worker=2, memory_limit='1GB')\n", "client" @@ -91,33 +59,9 @@ }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "Dimensions: (lat: 25, lon: 53, time: 2920)\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", - " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n", - "Data variables:\n", - " air (time, lat, lon) float32 dask.array\n", - "Attributes:\n", - " Conventions: COARDS\n", - " title: 4x daily NMC reanalysis (1948)\n", - " description: Data is from NMC initialized reanalysis\\n(4x/day). These a...\n", - " platform: Model\n", - " references: http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanaly..." - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "ds = xr.tutorial.open_dataset('air_temperature',\n", " chunks={'lat': 25, 'lon': 25, 'time': -1})\n", @@ -133,37 +77,9 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "dask.array\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", - " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n", - "Attributes:\n", - " long_name: 4xDaily Air temperature at sigma level 995\n", - " units: degK\n", - " precision: 2\n", - " GRIB_id: 11\n", - " GRIB_name: TMP\n", - " var_desc: Air temperature\n", - " dataset: NMC Reanalysis\n", - " level_desc: Surface\n", - " statistic: Individual Obs\n", - " parent_stat: Other\n", - " actual_range: [185.16 322.1 ]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "da = ds['air']\n", "da" @@ -178,20 +94,9 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dask.array" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "da.data" ] @@ -214,26 +119,9 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "dask.array\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", - " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n", - " * month (month) int64 1 2 3 4 5 6 7 8 9 10 11 12" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "da2 = da.groupby('time.month').mean('time')\n", "da3 = da - da2\n", @@ -251,20 +139,9 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "numpy.ndarray" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "computed_da = da3.load()\n", "type(computed_da.data)" @@ -272,48 +149,9 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "array([[[[-5.149872, ..., -6.770996],\n", - " ...,\n", - " [-7.046707, ..., -4.028244]],\n", - "\n", - " ...,\n", - "\n", - " [[-0.864166, ..., -1.590881],\n", - " ...,\n", - " [ 0.963531, ..., -0.937622]]],\n", - "\n", - "\n", - " ...,\n", - "\n", - "\n", - " [[[-1.259872, ..., -2.880997],\n", - " ...,\n", - " [-3.856705, ..., -0.838242]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0.535828, ..., -0.190887],\n", - " ...,\n", - " [ 0.053528, ..., -1.847626]]]], dtype=float32)\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", - " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00\n", - " * month (month) int64 1 2 3 4 5 6 7 8 9 10 11 12" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "computed_da" ] @@ -331,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -349,54 +187,18 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "dask.array\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "da.resample(time='1w').mean('time').std('time')" ] }, { "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": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "da.resample(time='1w').mean('time').std('time').load().plot(figsize=(12, 8))" ] @@ -410,25 +212,9 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "dask.array\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", - " * time (time) datetime64[ns] 2013-01-01 ... 2014-12-31T18:00:00" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "da_smooth = da.rolling(time=30).mean().persist()\n", "da_smooth" @@ -443,97 +229,18 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 7.7 ms, sys: 2.41 ms, total: 10.1 ms\n", - "Wall time: 11.2 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "\n", - "dask.array\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", - " time datetime64[ns] 2013-01-01T18:00:00\n", - "Attributes:\n", - " long_name: 4xDaily Air temperature at sigma level 995\n", - " units: degK\n", - " precision: 2\n", - " GRIB_id: 11\n", - " GRIB_name: TMP\n", - " var_desc: Air temperature\n", - " dataset: NMC Reanalysis\n", - " level_desc: Surface\n", - " statistic: Individual Obs\n", - " parent_stat: Other\n", - " actual_range: [185.16 322.1 ]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "%time da.sel(time='2013-01-01T18:00:00')" ] }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU times: user 29.7 ms, sys: 5.39 ms, total: 35.1 ms\n", - "Wall time: 39.7 ms\n" - ] - }, - { - "data": { - "text/plain": [ - "\n", - "array([[241.89 , 241.79999, 241.79999, ..., 234.39 , 235.5 , 237.59999],\n", - " [246.29999, 245.29999, 244.2 , ..., 230.89 , 231.5 , 234.5 ],\n", - " [256.6 , 254.7 , 252.09999, ..., 230.7 , 231.79999, 236.09999],\n", - " ...,\n", - " [296.6 , 296.4 , 296. , ..., 296.5 , 295.79 , 295.29 ],\n", - " [297. , 297.5 , 297.1 , ..., 296.79 , 296.6 , 296.29 ],\n", - " [297.5 , 297.69998, 297.5 , ..., 297.79 , 298. , 297.9 ]],\n", - " dtype=float32)\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0\n", - " time datetime64[ns] 2013-01-01T18:00:00\n", - "Attributes:\n", - " long_name: 4xDaily Air temperature at sigma level 995\n", - " units: degK\n", - " precision: 2\n", - " GRIB_id: 11\n", - " GRIB_name: TMP\n", - " var_desc: Air temperature\n", - " dataset: NMC Reanalysis\n", - " level_desc: Surface\n", - " statistic: Individual Obs\n", - " parent_stat: Other\n", - " actual_range: [185.16 322.1 ]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "%time da.sel(time='2013-01-01T18:00:00').load()" ] @@ -558,7 +265,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -595,24 +302,9 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "dask.array\n", - "Coordinates:\n", - " * lat (lat) float32 75.0 72.5 70.0 67.5 65.0 ... 25.0 22.5 20.0 17.5 15.0\n", - " * lon (lon) float32 200.0 202.5 205.0 207.5 ... 322.5 325.0 327.5 330.0" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "corr = spearman_correlation(da.chunk({'time': -1}),\n", " da_smooth.chunk({'time': -1}),\n", @@ -622,30 +314,9 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "corr.plot(figsize=(12, 8))" ] @@ -660,9 +331,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python (pangeo)", + "display_name": "Python 3", "language": "python", - "name": "pangeo" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -674,7 +345,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.6.6" } }, "nbformat": 4,