{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.3pslbKDO/b1/python-xarray_2023.01.0-1.1_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.3pslbKDO/b2/python-xarray_2023.01.0-1.1_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,3 +1,3 @@\n \n- d22a00f776f5986de6e01a69abc53e67 5277000 doc optional python-xarray-doc_2023.01.0-1.1_all.deb\n+ 2c9e041d87b59d3b09ac5f69acfd0e42 5277036 doc optional python-xarray-doc_2023.01.0-1.1_all.deb\n 6e5f6af35de770365644ec5792cfe64e 630312 python optional python3-xarray_2023.01.0-1.1_all.deb\n"}, {"source1": "python-xarray-doc_2023.01.0-1.1_all.deb", "source2": "python-xarray-doc_2023.01.0-1.1_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-02-19 00:50:57.000000 debian-binary\n--rw-r--r-- 0 0 0 6252 2023-02-19 00:50:57.000000 control.tar.xz\n--rw-r--r-- 0 0 0 5270556 2023-02-19 00:50:57.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 6248 2023-02-19 00:50:57.000000 control.tar.xz\n+-rw-r--r-- 0 0 0 5270596 2023-02-19 00:50:57.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -233,31 +233,31 @@\n -rw-r--r-- 0 root (0) root (0) 5097 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/api-hidden.html\n -rw-r--r-- 0 root (0) root (0) 17503 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/api.html\n -rw-r--r-- 0 root (0) root (0) 81125 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/contributing.html\n -rw-r--r-- 0 root (0) root (0) 7040 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/developers-meeting.html\n -rw-r--r-- 0 root (0) root (0) 19841 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/ecosystem.html\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/\n -rw-r--r-- 0 root (0) root (0) 108934 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.html\n--rw-r--r-- 0 root (0) root (0) 6512 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 6518 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 45795 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.html\n--rw-r--r-- 0 root (0) root (0) 24049 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 24061 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 128905 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.html\n--rw-r--r-- 0 root (0) root (0) 9529 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 9531 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 36809 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.html\n--rw-r--r-- 0 root (0) root (0) 21768 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 21769 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 22771 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/blank_template.html\n--rw-r--r-- 0 root (0) root (0) 1560 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 1561 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 45664 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.html\n--rw-r--r-- 0 root (0) root (0) 3545 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 3542 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 38738 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.html\n--rw-r--r-- 0 root (0) root (0) 11188 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 11182 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 65414 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.html\n--rw-r--r-- 0 root (0) root (0) 4680 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 4675 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 92426 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.html\n--rw-r--r-- 0 root (0) root (0) 367787 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz\n+-rw-r--r-- 0 root (0) root (0) 367799 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz\n -rw-r--r-- 0 root (0) root (0) 6546 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/gallery.html\n -rw-r--r-- 0 root (0) root (0) 8063 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/genindex.html\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/\n -rw-r--r-- 0 root (0) root (0) 28859 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/faq.html\n -rw-r--r-- 0 root (0) root (0) 6381 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/index.html\n -rw-r--r-- 0 root (0) root (0) 20999 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/installing.html\n -rw-r--r-- 0 root (0) root (0) 42860 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/getting-started-guide/quick-overview.html\n@@ -271,20 +271,20 @@\n -rw-r--r-- 0 root (0) root (0) 6791 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/index.html\n -rw-r--r-- 0 root (0) root (0) 9602 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/variable-objects.html\n -rw-r--r-- 0 root (0) root (0) 32114 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/internals/zarr-encoding-spec.html\n -rw-r--r-- 0 root (0) root (0) 16394 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/objects.inv\n -rw-r--r-- 0 root (0) root (0) 5487 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/py-modindex.html\n -rw-r--r-- 0 root (0) root (0) 22790 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/roadmap.html\n -rw-r--r-- 0 root (0) root (0) 5240 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/search.html\n--rw-r--r-- 0 root (0) root (0) 198712 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/searchindex.js\n+-rw-r--r-- 0 root (0) root (0) 198722 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/searchindex.js\n -rw-r--r-- 0 root (0) root (0) 7175 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/tutorials-and-videos.html\n drwxr-xr-x 0 root (0) root (0) 0 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/\n -rw-r--r-- 0 root (0) root (0) 56706 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/combining.html\n -rw-r--r-- 0 root (0) root (0) 125736 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/computation.html\n--rw-r--r-- 0 root (0) root (0) 74545 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/dask.html\n+-rw-r--r-- 0 root (0) root (0) 74640 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/dask.html\n -rw-r--r-- 0 root (0) root (0) 98802 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/data-structures.html\n -rw-r--r-- 0 root (0) root (0) 15231 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/duckarrays.html\n -rw-r--r-- 0 root (0) root (0) 37489 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/groupby.html\n -rw-r--r-- 0 root (0) root (0) 7597 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/index.html\n -rw-r--r-- 0 root (0) root (0) 252969 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/indexing.html\n -rw-r--r-- 0 root (0) root (0) 91334 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/interpolation.html\n -rw-r--r-- 0 root (0) root (0) 253831 2023-02-19 00:50:57.000000 ./usr/share/doc/python-xarray-doc/html/user-guide/io.html\n"}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.html", "source2": "./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.html", "unified_diff": "@@ -432,15 +432,15 @@\n \n \n
\n-Error in callback <function _draw_all_if_interactive at 0x7f1ba9917920> (for post_execute):\n+Error in callback <function _draw_all_if_interactive at 0x7f8bbe48b880> (for post_execute):\n
\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -98,15 +98,15 @@\n ----> 7 plot = ds.t2m[0].plot(\n 8 cmap=plt.cm.coolwarm, transform=ccrs.PlateCarree(), cbar_kwargs=\n {\"shrink\": 0.6}\n 9 )\n 10 plt.title(\"ERA5 - 2m temperature British Isles March 2019\")\n \n NameError: name 'ds' is not defined\n-Error in callback (for\n+Error in callback (for\n post_execute):\n ---------------------------------------------------------------------------\n PermissionError Traceback (most recent call last)\n File /usr/lib/python3/dist-packages/matplotlib/pyplot.py:119, in\n _draw_all_if_interactive()\n 117 def _draw_all_if_interactive():\n 118 if matplotlib.is_interactive():\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/ERA5-GRIB-example.ipynb.gz", "unified_diff": null, "details": [{"source1": "ERA5-GRIB-example.ipynb", "source2": "ERA5-GRIB-example.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9985416666666667%", "Differences: {\"'cells'\": \"{2: {'metadata': {'execution': {'iopub.execute_input': '2024-01-12T09:46:27.094752Z', \"", " \"'iopub.status.busy': '2024-01-12T09:46:27.094289Z', 'iopub.status.idle': \"", " \"'2024-01-12T09:46:35.544950Z', 'shell.execute_reply': \"", " \"'2024-01-12T09:46:35.528879Z'}}}, 4: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2024-01-12T09:46:35.575687Z', 'iopub.status.busy': \"", " \"'2024-01-12T09:46:35.574831Z', 'iopub.status.idle': '2024-01-12T09:46:3 [\u2026]"], "unified_diff": "@@ -15,18 +15,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:31.556566Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:31.556003Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:36.999433Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:36.989905Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:46:27.094752Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:46:27.094289Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:46:35.544950Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:46:35.528879Z\"\n }\n },\n \"outputs\": [\n {\n \"name\": \"stderr\",\n \"output_type\": \"stream\",\n \"text\": [\n@@ -47,18 +47,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:37.007536Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:37.006806Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:37.399149Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:37.392656Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:46:35.575687Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:46:35.574831Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:46:36.748869Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:46:36.732777Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ImportError\",\n \"evalue\": \"tutorial.open_dataset depends on pooch to download and manage datasets. To proceed please install pooch.\",\n \"output_type\": \"error\",\n@@ -88,18 +88,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:37.407743Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:37.407239Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:37.495612Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:37.486907Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:46:36.774608Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:46:36.774195Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:46:36.896873Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:46:36.880829Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -124,18 +124,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:37.512148Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:37.511666Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:42.442905Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:42.441078Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:46:36.926683Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:46:36.926208Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:46:44.600922Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:46:44.584944Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -146,15 +146,15 @@\n \"\\u001b[0;31mNameError\\u001b[0m: name 'ds' is not defined\"\n ]\n },\n {\n \"name\": \"stdout\",\n \"output_type\": \"stream\",\n \"text\": [\n- \"Error in callback (for post_execute):\\n\"\n+ \"Error in callback (for post_execute):\\n\"\n ]\n },\n {\n \"ename\": \"PermissionError\",\n \"evalue\": \"[Errno 13] Permission denied: '/nonexistent'\",\n \"output_type\": \"error\",\n \"traceback\": [\n@@ -255,18 +255,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 5,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:42.456403Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:42.455997Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:42.487585Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:42.486365Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:46:44.613302Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:46:44.612788Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:46:44.724892Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:46:44.708840Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/ROMS_ocean_model.ipynb.gz", "unified_diff": null, "details": [{"source1": "ROMS_ocean_model.ipynb", "source2": "ROMS_ocean_model.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9988051470588235%", "Differences: {\"'cells'\": \"{2: {'metadata': {'execution': {'iopub.execute_input': '2024-01-12T09:46:55.514621Z', \"", " \"'iopub.status.busy': '2024-01-12T09:46:55.514015Z', 'iopub.status.idle': \"", " \"'2024-01-12T09:47:00.692924Z', 'shell.execute_reply': \"", " \"'2024-01-12T09:47:00.676953Z'}}}, 5: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2024-01-12T09:47:00.720027Z', 'iopub.status.busy': \"", " \"'2024-01-12T09:47:00.718856Z', 'iopub.status.idle': '2024-01-12T09:47:0 [\u2026]"], "unified_diff": "@@ -17,18 +17,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:51.548593Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:51.548053Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:53.955852Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:53.954758Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:46:55.514621Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:46:55.514015Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:00.692924Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:00.676953Z\"\n }\n },\n \"outputs\": [],\n \"source\": [\n \"import numpy as np\\n\",\n \"import cartopy.crs as ccrs\\n\",\n \"import cartopy.feature as cfeature\\n\",\n@@ -75,18 +75,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 2,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:53.967554Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:53.966834Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:54.375440Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:54.368107Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:00.720027Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:00.718856Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:01.761091Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:01.744962Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ImportError\",\n \"evalue\": \"tutorial.open_dataset depends on pooch to download and manage datasets. To proceed please install pooch.\",\n \"output_type\": \"error\",\n@@ -130,18 +130,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:54.388654Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:54.388227Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:54.455124Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:54.448306Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:01.786913Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:01.786356Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:01.937172Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:01.920927Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -175,18 +175,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 4,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:54.469640Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:54.469147Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:54.527202Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:54.515948Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:01.962611Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:01.962140Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:02.072899Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:02.056879Z\"\n },\n \"scrolled\": false\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n@@ -211,18 +211,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 5,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:54.541659Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:54.541185Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:54.610735Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:54.601296Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:02.099453Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:02.098771Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:02.229010Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:02.212934Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -250,18 +250,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 6,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:54.628526Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:54.628098Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:54.695075Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:54.685477Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:02.254679Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:02.254221Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:02.368968Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:02.352986Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -285,18 +285,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 7,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:47:54.712940Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:47:54.712451Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:47:55.205459Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:47:55.198315Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:02.394700Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:02.394194Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:03.369213Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:03.367074Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/apply_ufunc_vectorize_1d.ipynb.gz", "unified_diff": null, "details": [{"source1": "apply_ufunc_vectorize_1d.ipynb", "source2": "apply_ufunc_vectorize_1d.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9994283536585367%", "Differences: {\"'cells'\": \"{2: {'metadata': {'execution': {'iopub.execute_input': '2024-01-12T09:47:12.287484Z', \"", " \"'iopub.status.busy': '2024-01-12T09:47:12.286713Z', 'iopub.status.idle': \"", " \"'2024-01-12T09:47:15.114824Z', 'shell.execute_reply': \"", " \"'2024-01-12T09:47:15.113645Z'}}}, 4: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2024-01-12T09:47:15.130947Z', 'iopub.status.busy': \"", " \"'2024-01-12T09:47:15.130448Z', 'iopub.status.idle': '2024-01-12T09:47:1 [\u2026]"], "unified_diff": "@@ -36,18 +36,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:45:51.659160Z\",\n \"start_time\": \"2020-01-15T14:45:50.528742Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:03.985087Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:03.984540Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:05.683345Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:05.674733Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:12.287484Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:12.286713Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.114824Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.113645Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ImportError\",\n \"evalue\": \"tutorial.open_dataset depends on pooch to download and manage datasets. To proceed please install pooch.\",\n \"output_type\": \"error\",\n@@ -91,18 +91,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:45:55.431708Z\",\n \"start_time\": \"2020-01-15T14:45:55.104701Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:05.696729Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:05.696284Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:05.733985Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:05.732498Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.130947Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.130448Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.161121Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.159694Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -131,18 +131,18 @@\n \"execution_count\": 3,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:45:57.889496Z\",\n \"start_time\": \"2020-01-15T14:45:57.792269Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:05.746637Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:05.746072Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:05.789858Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:05.788566Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.174866Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.174407Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.211028Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.209910Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -190,18 +190,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:45:59.768626Z\",\n \"start_time\": \"2020-01-15T14:45:59.543808Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:05.797888Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:05.797440Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:05.830362Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:05.829066Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.230981Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.230423Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.259304Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.258242Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -256,18 +256,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:02.187012Z\",\n \"start_time\": \"2020-01-15T14:46:02.105563Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:05.836981Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:05.836534Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:05.873467Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:05.872152Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.275073Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.274597Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.308079Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.306797Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -334,18 +334,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:05.031672Z\",\n \"start_time\": \"2020-01-15T14:46:04.947588Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:05.880122Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:05.879604Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:05.915968Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:05.914706Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.323219Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.322736Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.354422Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.353127Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -380,18 +380,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:09.325218Z\",\n \"start_time\": \"2020-01-15T14:46:09.303020Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:05.922382Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:05.921890Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:05.958029Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:05.956883Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.366918Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.366466Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.402739Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.401621Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -428,18 +428,18 @@\n \"execution_count\": 8,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:11.295440Z\",\n \"start_time\": \"2020-01-15T14:46:11.226553Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:05.964215Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:05.963778Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:06.003128Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:06.001839Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.414940Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.414479Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.449553Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.448396Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -492,18 +492,18 @@\n \"execution_count\": 9,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:13.808646Z\",\n \"start_time\": \"2020-01-15T14:46:13.680098Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:06.009276Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:06.008846Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:06.052765Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:06.051479Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.462751Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.462283Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.502864Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.501592Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -565,18 +565,18 @@\n \"execution_count\": 10,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:26.633233Z\",\n \"start_time\": \"2020-01-15T14:46:26.515209Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:06.059073Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:06.058538Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:06.100307Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:06.098938Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.515182Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.514663Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.570442Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.568887Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -622,18 +622,18 @@\n \"execution_count\": 11,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:46:30.026663Z\",\n \"start_time\": \"2020-01-15T14:46:29.893267Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:06.106813Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:06.106273Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:06.156131Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:06.154714Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.585165Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.584396Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.704922Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.688875Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -710,18 +710,18 @@\n \"execution_count\": 12,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:48:42.469341Z\",\n \"start_time\": \"2020-01-15T14:48:42.344209Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:06.162815Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:06.162195Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:06.217842Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:06.214712Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.731314Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.730771Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:15.876974Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:15.860888Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -796,18 +796,18 @@\n \"execution_count\": 13,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:48:45.267633Z\",\n \"start_time\": \"2020-01-15T14:48:44.943939Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:06.224708Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:06.224278Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:06.310854Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:06.298833Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:15.902851Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:15.902363Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:16.020982Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:16.004856Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'numba'\",\n \"output_type\": \"error\",\n@@ -848,18 +848,18 @@\n \"execution_count\": 14,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:48:54.755405Z\",\n \"start_time\": \"2020-01-15T14:48:54.634724Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:06.320368Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:06.319923Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:06.395012Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:06.390681Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:16.046919Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:16.046382Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:16.180913Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:16.168866Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'interp1d_np_gufunc' is not defined\",\n \"output_type\": \"error\",\n@@ -902,18 +902,18 @@\n \"execution_count\": 15,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-01-15T14:49:28.667528Z\",\n \"start_time\": \"2020-01-15T14:49:28.103914Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:06.408391Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:06.407933Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:06.514731Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:06.499078Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:16.206836Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:16.206331Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:16.364934Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:16.348884Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ModuleNotFoundError\",\n \"evalue\": \"No module named 'numba'\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/area_weighted_temperature.ipynb.gz", "unified_diff": null, "details": [{"source1": "area_weighted_temperature.ipynb", "source2": "area_weighted_temperature.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.99921875%", "Differences: {\"'cells'\": \"{2: {'metadata': {'execution': {'iopub.execute_input': '2024-01-12T09:47:31.494450Z', \"", " \"'iopub.status.busy': '2024-01-12T09:47:31.494022Z', 'iopub.status.idle': \"", " \"'2024-01-12T09:47:34.288807Z', 'shell.execute_reply': \"", " \"'2024-01-12T09:47:34.272752Z'}}}, 4: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2024-01-12T09:47:34.306518Z', 'iopub.status.busy': \"", " \"'2024-01-12T09:47:34.305954Z', 'iopub.status.idle': '2024-01-12T09:47:3 [\u2026]"], "unified_diff": "@@ -28,18 +28,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:43:57.222351Z\",\n \"start_time\": \"2020-03-17T14:43:56.147541Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:16.115392Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:16.114852Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:18.191281Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:18.174722Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:31.494450Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:31.494022Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:34.288807Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:34.272752Z\"\n }\n },\n \"outputs\": [],\n \"source\": [\n \"%matplotlib inline\\n\",\n \"\\n\",\n \"import cartopy.crs as ccrs\\n\",\n@@ -63,18 +63,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:43:57.831734Z\",\n \"start_time\": \"2020-03-17T14:43:57.651845Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:18.203229Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:18.202459Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:19.022807Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:19.006771Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:34.306518Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:34.305954Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:35.072805Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:35.056767Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ImportError\",\n \"evalue\": \"tutorial.open_dataset depends on pooch to download and manage datasets. To proceed please install pooch.\",\n \"output_type\": \"error\",\n@@ -116,18 +116,18 @@\n \"execution_count\": 3,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:43:59.887120Z\",\n \"start_time\": \"2020-03-17T14:43:59.582894Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:19.044486Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:19.044030Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:19.407121Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:19.396599Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:35.086362Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:35.085957Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:35.556802Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:35.540755Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -172,18 +172,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:44:18.777092Z\",\n \"start_time\": \"2020-03-17T14:44:18.736587Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:19.424860Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:19.424366Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:19.483474Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:19.472569Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:35.578488Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:35.578062Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:35.680804Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:35.664776Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -213,18 +213,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:44:52.607120Z\",\n \"start_time\": \"2020-03-17T14:44:52.564674Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:19.492619Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:19.492187Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:19.583094Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:19.570764Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:35.698347Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:35.697972Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:35.812831Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:35.796792Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air' is not defined\",\n \"output_type\": \"error\",\n@@ -246,18 +246,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:44:54.334279Z\",\n \"start_time\": \"2020-03-17T14:44:54.280022Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:19.599006Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:19.598520Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:19.982787Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:19.966736Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:35.826335Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:35.825930Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:36.252852Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:36.236782Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'air_weighted' is not defined\",\n \"output_type\": \"error\",\n@@ -288,18 +288,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2020-03-17T14:45:08.877307Z\",\n \"start_time\": \"2020-03-17T14:45:08.673383Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:20.008484Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:20.007983Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:20.114752Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:20.098711Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:36.278505Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:36.278067Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:36.376869Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:36.360828Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'weighted_mean' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/blank_template.ipynb.gz", "unified_diff": null, "details": [{"source1": "blank_template.ipynb", "source2": "blank_template.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9991319444444444%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2024-01-12T09:47:47.054870Z', \"", " \"'iopub.status.busy': '2024-01-12T09:47:47.054298Z', 'iopub.status.idle': \"", " \"'2024-01-12T09:47:51.096950Z', 'shell.execute_reply': \"", " \"'2024-01-12T09:47:51.080903Z'}}}}\"}"], "unified_diff": "@@ -12,18 +12,18 @@\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"id\": \"41b90ede\",\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:26.832369Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:26.831905Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:28.503240Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:28.497230Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:47.054870Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:47.054298Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:47:51.096950Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:47:51.080903Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ImportError\",\n \"evalue\": \"tutorial.open_dataset depends on pooch to download and manage datasets. To proceed please install pooch.\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/monthly-means.ipynb.gz", "unified_diff": null, "details": [{"source1": "monthly-means.ipynb", "source2": "monthly-means.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.998721590909091%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2024-01-12T09:47:58.586810Z', \"", " \"'iopub.status.busy': '2024-01-12T09:47:58.586315Z', 'iopub.status.idle': \"", " \"'2024-01-12T09:48:03.224868Z', 'shell.execute_reply': \"", " \"'2024-01-12T09:48:03.208852Z'}}}, 3: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2024-01-12T09:48:03.247242Z', 'iopub.status.busy': \"", " \"'2024-01-12T09:48:03.246431Z', 'iopub.status.idle': '2024-01-12T09:48:0 [\u2026]"], "unified_diff": "@@ -19,18 +19,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:35.958210Z\",\n \"start_time\": \"2018-11-28T20:51:35.936966Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:33.797231Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:33.796746Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:36.800291Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:36.798948Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:47:58.586810Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:47:58.586315Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:03.224868Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:03.208852Z\"\n }\n },\n \"outputs\": [],\n \"source\": [\n \"%matplotlib inline\\n\",\n \"import numpy as np\\n\",\n \"import pandas as pd\\n\",\n@@ -50,18 +50,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:36.072316Z\",\n \"start_time\": \"2018-11-28T20:51:36.016594Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:36.817647Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:36.816985Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:37.242307Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:37.239724Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:03.247242Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:03.246431Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:04.033635Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:04.025691Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ImportError\",\n \"evalue\": \"tutorial.open_dataset depends on pooch to download and manage datasets. To proceed please install pooch.\",\n \"output_type\": \"error\",\n@@ -96,18 +96,18 @@\n ]\n },\n {\n \"cell_type\": \"code\",\n \"execution_count\": 3,\n \"metadata\": {\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:37.253875Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:37.253432Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:37.308202Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:37.306714Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:04.042824Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:04.042305Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:04.098346Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:04.096789Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -129,18 +129,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:36.132413Z\",\n \"start_time\": \"2018-11-28T20:51:36.073708Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:37.314515Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:37.314082Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:37.434765Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:37.418717Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:04.106997Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:04.106457Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:04.198381Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:04.196977Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'month_length' is not defined\",\n \"output_type\": \"error\",\n@@ -170,18 +170,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:36.152913Z\",\n \"start_time\": \"2018-11-28T20:51:36.133997Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:37.444779Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:37.444293Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:37.538784Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:37.514694Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:04.210725Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:04.210250Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:04.274377Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:04.272890Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds_weighted' is not defined\",\n \"output_type\": \"error\",\n@@ -202,18 +202,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:36.190765Z\",\n \"start_time\": \"2018-11-28T20:51:36.154416Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:37.548100Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:37.547611Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:37.658745Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:37.638724Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:04.283143Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:04.282623Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:04.354414Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:04.352846Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -236,18 +236,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:40.264871Z\",\n \"start_time\": \"2018-11-28T20:51:36.192467Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:37.668516Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:37.668025Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:37.814728Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:37.806698Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:04.370796Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:04.370303Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:04.510793Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:04.509232Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds_unweighted' is not defined\",\n \"output_type\": \"error\",\n@@ -316,18 +316,18 @@\n \"execution_count\": 8,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:51:40.284898Z\",\n \"start_time\": \"2018-11-28T20:51:40.266406Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:37.828393Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:37.827900Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:37.862755Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:37.850712Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:04.527021Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:04.526514Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:04.554531Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:04.552873Z\"\n }\n },\n \"outputs\": [],\n \"source\": [\n \"# Wrap it into a simple function\\n\",\n \"def season_mean(ds, calendar=\\\"standard\\\"):\\n\",\n \" # Make a DataArray with the number of days in each month, size = len(time)\\n\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/multidimensional-coords.ipynb.gz", "unified_diff": null, "details": [{"source1": "multidimensional-coords.ipynb", "source2": "multidimensional-coords.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.99931640625%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2024-01-12T09:48:13.327281Z', \"", " \"'iopub.status.busy': '2024-01-12T09:48:13.326616Z', 'iopub.status.idle': \"", " \"'2024-01-12T09:48:16.364923Z', 'shell.execute_reply': \"", " \"'2024-01-12T09:48:16.348841Z'}}}, 3: {'metadata': {'execution': \"", " \"{'iopub.execute_input': '2024-01-12T09:48:16.391231Z', 'iopub.status.busy': \"", " \"'2024-01-12T09:48:16.390403Z', 'iopub.status.idle': '2024-01-12T09:48:1 [\u2026]"], "unified_diff": "@@ -16,18 +16,18 @@\n \"execution_count\": 1,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:49:56.068395Z\",\n \"start_time\": \"2018-11-28T20:49:56.035349Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:42.610474Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:42.609993Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:44.771293Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:44.763964Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:13.327281Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:13.326616Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:16.364923Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:16.348841Z\"\n }\n },\n \"outputs\": [],\n \"source\": [\n \"%matplotlib inline\\n\",\n \"import numpy as np\\n\",\n \"import pandas as pd\\n\",\n@@ -48,18 +48,18 @@\n \"execution_count\": 2,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:13.629720Z\",\n \"start_time\": \"2018-11-28T20:50:13.484542Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:44.796744Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:44.796073Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:45.273547Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:45.265057Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:16.391231Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:16.390403Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:17.344983Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:17.328850Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"ImportError\",\n \"evalue\": \"tutorial.open_dataset depends on pooch to download and manage datasets. To proceed please install pooch.\",\n \"output_type\": \"error\",\n@@ -93,18 +93,18 @@\n \"execution_count\": 3,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:15.836061Z\",\n \"start_time\": \"2018-11-28T20:50:15.768376Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:45.288866Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:45.288421Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:45.336284Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:45.334832Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:17.374861Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:17.374376Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:17.492965Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:17.476891Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -135,18 +135,18 @@\n \"execution_count\": 4,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:17.928556Z\",\n \"start_time\": \"2018-11-28T20:50:17.031211Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:45.345164Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:45.344687Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:46.143331Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:46.137614Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:17.522722Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:17.522214Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:19.246364Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:19.244846Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -188,18 +188,18 @@\n \"execution_count\": 5,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:20.567749Z\",\n \"start_time\": \"2018-11-28T20:50:19.999393Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:46.161375Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:46.160882Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:46.239771Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:46.232702Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:19.260381Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:19.259849Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:19.326496Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:19.324915Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -227,18 +227,18 @@\n \"execution_count\": 6,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:31.131708Z\",\n \"start_time\": \"2018-11-28T20:50:30.444697Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:46.256616Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:46.256165Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:46.552220Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:46.548794Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:19.346839Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:19.346316Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:19.794573Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:19.792857Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n@@ -285,18 +285,18 @@\n \"execution_count\": 7,\n \"metadata\": {\n \"ExecuteTime\": {\n \"end_time\": \"2018-11-28T20:50:43.670463Z\",\n \"start_time\": \"2018-11-28T20:50:43.245501Z\"\n },\n \"execution\": {\n- \"iopub.execute_input\": \"2025-02-13T15:48:46.577553Z\",\n- \"iopub.status.busy\": \"2025-02-13T15:48:46.577008Z\",\n- \"iopub.status.idle\": \"2025-02-13T15:48:46.694820Z\",\n- \"shell.execute_reply\": \"2025-02-13T15:48:46.678805Z\"\n+ \"iopub.execute_input\": \"2024-01-12T09:48:19.810619Z\",\n+ \"iopub.status.busy\": \"2024-01-12T09:48:19.810115Z\",\n+ \"iopub.status.idle\": \"2024-01-12T09:48:19.894444Z\",\n+ \"shell.execute_reply\": \"2024-01-12T09:48:19.892807Z\"\n }\n },\n \"outputs\": [\n {\n \"ename\": \"NameError\",\n \"evalue\": \"name 'ds' is not defined\",\n \"output_type\": \"error\",\n"}]}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.html", "source2": "./usr/share/doc/python-xarray-doc/html/examples/visualization_gallery.html", "unified_diff": "@@ -574,15 +574,15 @@\n
\n-/tmp/ipykernel_3283687/2946363816.py:1: DeprecationWarning: open_rasterio is Deprecated in favor of rioxarray. For information about transitioning, see: https://corteva.github.io/rioxarray/stable/getting_started/getting_started.html\n+/tmp/ipykernel_1285013/2946363816.py:1: DeprecationWarning: open_rasterio is Deprecated in favor of rioxarray. For information about transitioning, see: https://corteva.github.io/rioxarray/stable/getting_started/getting_started.html\n da = xr.tutorial.open_rasterio("RGB.byte")\n
\n-/tmp/ipykernel_3283687/3653941964.py:4: DeprecationWarning: open_rasterio is Deprecated in favor of rioxarray. For information about transitioning, see: https://corteva.github.io/rioxarray/stable/getting_started/getting_started.html\n+/tmp/ipykernel_1285013/3653941964.py:4: DeprecationWarning: open_rasterio is Deprecated in favor of rioxarray. For information about transitioning, see: https://corteva.github.io/rioxarray/stable/getting_started/getting_started.html\n da = xr.tutorial.open_rasterio("RGB.byte")\n
<xarray.Dataset>\n Dimensions: (time: 731, location: 3)\n Coordinates:\n * time (time) datetime64[ns] 2000-01-01 2000-01-02 ... 2001-12-31\n * location (location) <U2 'IA' 'IN' 'IL'\n Data variables:\n tmin (time, location) float64 -8.037 -1.788 -3.932 ... -1.346 -4.544\n- tmax (time, location) float64 12.98 3.31 6.779 ... 6.636 3.343 3.805
PandasIndex(Index(['IA', 'IN', 'IL'], dtype='object', name='location'))
[2]:\n@@ -932,15 +932,15 @@\n
[5]:\n
\n-<seaborn.axisgrid.PairGrid at 0x7f79de890850>\n+<seaborn.axisgrid.PairGrid at 0x7f00ce57a690>\n
array(['IA', 'IN', 'IL'], dtype='<U2')
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
PandasIndex(Index(['IA', 'IN', 'IL'], dtype='object', name='location'))
PandasIndex(Int64Index([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], dtype='int64', name='month'))
[7]:\n
freeze.to_pandas().plot()\n
PandasIndex(Index(['IA', 'IN', 'IL'], dtype='object', name='location'))
[12]:\n
df = both.sel(time="2000").mean("location").reset_coords(drop=True).to_dataframe()\n df.head()\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -157,15 +157,15 @@\n \n [../_images/examples_weather-data_7_1.png]\n \n **** Visualize using seaborn\u00c2\u00b6 ****\n [5]:\n sns.pairplot(df.reset_index(), vars=ds.data_vars)\n [5]:\n-\n+\n [../_images/examples_weather-data_9_1.png]\n \n ***** Probability of freeze by calendar month\u00c2\u00b6 *****\n [6]:\n freeze = (ds[\"tmin\"] <= 0).groupby(\"time.month\").mean(\"time\")\n freeze\n [6]:\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz", "source2": "./usr/share/doc/python-xarray-doc/html/examples/weather-data.ipynb.gz", "unified_diff": null, "details": [{"source1": "weather-data.ipynb", "source2": "weather-data.ipynb", "unified_diff": null, "details": [{"source1": "Pretty-printed", "source2": "Pretty-printed", "comments": ["Similarity: 0.9992323118860381%", "Differences: {\"'cells'\": \"{1: {'metadata': {'execution': {'iopub.execute_input': '2024-01-12T09:48:44.386940Z', \"", " \"'iopub.status.busy': '2024-01-12T09:48:44.386362Z', 'iopub.status.idle': \"", " \"'2024-01-12T09:48:50.068914Z', 'shell.execute_reply': \"", " \"'2024-01-12T09:48:50.052867Z'}}, 'outputs': {0: {'data': {'text/html': {insert: \"", " '[(370, \" tmax (time, location) float64 12.98 3.31 6.779 ... 6.636 3.343 '", " \"3.805
Visualizing your datasets is quick and convenient:
\nIn [37]: data.plot()\n-Out[37]: <matplotlib.collections.QuadMesh at 0x7f073f9fdfd0>\n+Out[37]: <matplotlib.collections.QuadMesh at 0x7f56058667d0>\n
Note the automatic labeling with names and units. Our effort in adding metadata attributes has paid off! Many aspects of these figures are customizable: see Plotting.
\nYou\u2019ll notice that printing a dataset still shows a preview of array values,\n even if they are actually Dask arrays. We can do this quickly with Dask because\n we only need to compute the first few values (typically from the first block).\n To reveal the true nature of an array, print a DataArray:
\nIn [3]: ds.temperature\n Out[3]: \n <xarray.DataArray 'temperature' (time: 30, latitude: 180, longitude: 180)>\n-dask.array<open_dataset-39b7b670ad00b8e2e3cc5e2b10b5c905temperature, shape=(30, 180, 180), dtype=float64, chunksize=(10, 180, 180), chunktype=numpy.ndarray>\n+dask.array<open_dataset-e465d2fa847582f6a280739021dc3613temperature, shape=(30, 180, 180), dtype=float64, chunksize=(10, 180, 180), chunktype=numpy.ndarray>\n Coordinates:\n * time (time) datetime64[ns] 2015-01-01 2015-01-02 ... 2015-01-30\n * longitude (longitude) int64 0 1 2 3 4 5 6 7 ... 173 174 175 176 177 178 179\n * latitude (latitude) float64 89.5 88.5 87.5 86.5 ... -87.5 -88.5 -89.5\n
Once you\u2019ve manipulated a Dask array, you can still write a dataset too big to\n@@ -138,16 +138,17 @@\n # or distributed.progress when using the distributed scheduler\n In [6]: delayed_obj = ds.to_netcdf("manipulated-example-data.nc", compute=False)\n \n In [7]: with ProgressBar():\n ...: results = delayed_obj.compute()\n ...: \n \n-[ ] | 0% Completed | 15.02 ms\n-[########################################] | 100% Completed | 122.88 ms\n+[ ] | 0% Completed | 10.29 ms\n+[######################### ] | 62% Completed | 118.03 ms\n+[########################################] | 100% Completed | 226.13 ms\n \n \n
Note
\nWhen using Dask\u2019s distributed scheduler to write NETCDF4 files,\n it may be necessary to set the environment variable HDF5_USE_FILE_LOCKING=FALSE\n to avoid competing locks within the HDF5 SWMR file locking scheme. Note that\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -76,15 +76,15 @@\n You\u00e2\u0080\u0099ll notice that printing a dataset still shows a preview of array values,\n even if they are actually Dask arrays. We can do this quickly with Dask because\n we only need to compute the first few values (typically from the first block).\n To reveal the true nature of an array, print a DataArray:\n In [3]: ds.temperature\n Out[3]:\n ds.pipe(func)
) instead of\n simply calling it (e.g., func(ds)
). This allows you to write pipelines for\n transforming your data (using \u201cmethod chaining\u201d) instead of writing hard to\n follow nested function calls:
# these lines are equivalent, but with pipe we can make the logic flow\n # entirely from left to right\n In [60]: plt.plot((2 * ds.temperature.sel(x=0)).mean("y"))\n-Out[60]: [<matplotlib.lines.Line2D at 0x7f070fca15d0>]\n+Out[60]: [<matplotlib.lines.Line2D at 0x7f55d5461350>]\n \n In [61]: (ds.temperature.sel(x=0).pipe(lambda x: 2 * x).mean("y").pipe(plt.plot))\n-Out[61]: [<matplotlib.lines.Line2D at 0x7f070f5933d0>]\n+Out[61]: [<matplotlib.lines.Line2D at 0x7f55d54be410>]\n
Both pipe
and assign
replicate the pandas methods of the same names\n (DataFrame.pipe
and\n DataFrame.assign
).
With xarray, there is no performance penalty for creating new datasets, even if\n variables are lazily loaded from a file on disk. Creating new objects instead\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -574,19 +574,19 @@\n There is also the pipe() method that allows you to use a method call with an\n external function (e.g., ds.pipe(func)) instead of simply calling it (e.g.,\n func(ds)). This allows you to write pipelines for transforming your data (using\n \u00e2\u0080\u009cmethod chaining\u00e2\u0080\u009d) instead of writing hard to follow nested function calls:\n # these lines are equivalent, but with pipe we can make the logic flow\n # entirely from left to right\n In [60]: plt.plot((2 * ds.temperature.sel(x=0)).mean(\"y\"))\n-Out[60]: [
Additional keyword arguments can be passed to scipy\u2019s functions.
\n# fill 0 for the outside of the original coordinates.\n In [21]: da.interp(x=np.linspace(-0.5, 1.5, 10), kwargs={"fill_value": 0.0})\n Out[21]: \n@@ -615,15 +615,15 @@\n 858 f"Dimensions {invalid} do not exist. Expected one or more of {dims}"\n 859 )\n 861 return indexers\n 863 elif missing_dims == "warn":\n 864 \n 865 # don't modify input\n \n-ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of Frozen({'x': 3, 'y': 4})\n+ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of Frozen({'x': 3, 'y': 4})\n \n In [63]: dsi.air.plot(ax=axes[1])\n ---------------------------------------------------------------------------\n NameError Traceback (most recent call last)\n Cell In [63], line 1\n ----> 1 dsi.air.plot(ax=axes[1])\n \n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -165,26 +165,26 @@\n ....: np.sin(np.linspace(0, 2 * np.pi, 10)),\n ....: dims=\"x\",\n ....: coords={\"x\": np.linspace(0, 1, 10)},\n ....: )\n ....:\n \n In [17]: da.plot.line(\"o\", label=\"original\")\n-Out[17]: []\n+Out[17]: []\n \n In [18]: da.interp(x=np.linspace(0, 1, 100)).plot.line(label=\"linear\n (default)\")\n-Out[18]: []\n+Out[18]: []\n \n In [19]: da.interp(x=np.linspace(0, 1, 100), method=\"cubic\").plot.line\n (label=\"cubic\")\n-Out[19]: []\n+Out[19]: []\n \n In [20]: plt.legend()\n-Out[20]: \n+Out[20]: \n [../_images/interpolation_sample1.png]\n Additional keyword arguments can be passed to scipy\u00e2\u0080\u0099s functions.\n # fill 0 for the outside of the original coordinates.\n In [21]: da.interp(x=np.linspace(-0.5, 1.5, 10), kwargs={\"fill_value\": 0.0})\n Out[21]:\n \n array([ 0. , 0. , 0. , 0.814, 0.604, -0.604, -0.814, 0. , 0. ,\n@@ -558,15 +558,15 @@\n of {dims}\"\n 859 )\n 861 return indexers\n 863 elif missing_dims == \"warn\":\n 864\n 865 # don't modify input\n \n-ValueError: Dimensions {'lat', 'lon'} do not exist. Expected one or more of\n+ValueError: Dimensions {'lon', 'lat'} do not exist. Expected one or more of\n Frozen({'x': 3, 'y': 4})\n \n In [63]: dsi.air.plot(ax=axes[1])\n ---------------------------------------------------------------------------\n NameError Traceback (most recent call last)\n Cell In [63], line 1\n ----> 1 dsi.air.plot(ax=axes[1])\n"}]}, {"source1": "./usr/share/doc/python-xarray-doc/html/user-guide/plotting.html", "source2": "./usr/share/doc/python-xarray-doc/html/user-guide/plotting.html", "unified_diff": "@@ -643,15 +643,15 @@\n --> 186 raise KeyError(key)\n 188 ref_name, var_name = split_key\n 189 ref_var = variables[ref_name]\n \n KeyError: 'lat'\n \n In [51]: b.plot()\n-Out[51]: [<matplotlib.lines.Line2D at 0x7f07c3fe13d0>]\n+Out[51]: [<matplotlib.lines.Line2D at 0x7f5685e7e750>]\n
There are several other options for plotting 2D data.
\n@@ -1205,104 +1205,104 @@\n * y (y) float64 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0\n * z (z) int64 0 1 2 3\n * w (w) <U5 'one' 'two' 'three' 'five'\n Attributes:\n units: Aunits\n \n In [99]: ds.A.plot.scatter(x="y")\n-Out[99]: <matplotlib.collections.PathCollection at 0x7f07c3edf290>\n+Out[99]: <matplotlib.collections.PathCollection at 0x7f5685d2bed0>\n \n \nSame plot can be displayed using the dataset:
\nIn [100]: ds.plot.scatter(x="y", y="A")\n-Out[100]: <matplotlib.collections.PathCollection at 0x7f07c3d9c310>\n+Out[100]: <matplotlib.collections.PathCollection at 0x7f5685c6ba90>\n
Now suppose we want to scatter the A
DataArray against the B
DataArray
In [101]: ds.plot.scatter(x="A", y="B")\n-Out[101]: <matplotlib.collections.PathCollection at 0x7f07c3e56690>\n+Out[101]: <matplotlib.collections.PathCollection at 0x7f5685cd6cd0>\n
The hue
kwarg lets you vary the color by variable value
In [102]: ds.plot.scatter(x="A", y="B", hue="w")\n-Out[102]: <matplotlib.collections.PathCollection at 0x7f07c3e24310>\n+Out[102]: <matplotlib.collections.PathCollection at 0x7f5685c38c10>\n
You can force a legend instead of a colorbar by setting add_legend=True, add_colorbar=False
.
In [103]: ds.plot.scatter(x="A", y="B", hue="w", add_legend=True, add_colorbar=False)\n-Out[103]: <matplotlib.collections.PathCollection at 0x7f070d587290>\n+Out[103]: <matplotlib.collections.PathCollection at 0x7f55d343ccd0>\n
In [104]: ds.plot.scatter(x="A", y="B", hue="w", add_legend=False, add_colorbar=True)\n-Out[104]: <matplotlib.collections.PathCollection at 0x7f07c3e405d0>\n+Out[104]: <matplotlib.collections.PathCollection at 0x7f55d3475dd0>\n
The markersize
kwarg lets you vary the point\u2019s size by variable value.\n You can additionally pass size_norm
to control how the variable\u2019s values are mapped to point sizes.
In [105]: ds.plot.scatter(x="A", y="B", hue="y", markersize="z")\n-Out[105]: <matplotlib.collections.PathCollection at 0x7f070d5c7290>\n+Out[105]: <matplotlib.collections.PathCollection at 0x7f55d32d1a50>\n
The z
kwarg lets you plot the data along the z-axis as well.
In [106]: ds.plot.scatter(x="A", y="B", z="z", hue="y", markersize="x")\n-Out[106]: <mpl_toolkits.mplot3d.art3d.Path3DCollection at 0x7f070d430350>\n+Out[106]: <mpl_toolkits.mplot3d.art3d.Path3DCollection at 0x7f55d32f0190>\n
Faceting is also possible
\nIn [107]: ds.plot.scatter(x="A", y="B", hue="y", markersize="x", row="x", col="w")\n-Out[107]: <xarray.plot.facetgrid.FacetGrid at 0x7f070d4b4290>\n+Out[107]: <xarray.plot.facetgrid.FacetGrid at 0x7f55d6b7a050>\n
And adding the z-axis
\nIn [108]: ds.plot.scatter(x="A", y="B", z="z", hue="y", markersize="x", row="x", col="w")\n-Out[108]: <xarray.plot.facetgrid.FacetGrid at 0x7f070cf70350>\n+Out[108]: <xarray.plot.facetgrid.FacetGrid at 0x7f55d305c610>\n
For more advanced scatter plots, we recommend converting the relevant data variables\n to a pandas DataFrame and using the extensive plotting capabilities of seaborn
.
Visualizing vector fields is supported with quiver plots:
\nIn [109]: ds.isel(w=1, z=1).plot.quiver(x="x", y="y", u="A", v="B")\n-Out[109]: <matplotlib.quiver.Quiver at 0x7f070d2de8d0>\n+Out[109]: <matplotlib.quiver.Quiver at 0x7f55d2c8cb90>\n
where u
and v
denote the x and y direction components of the arrow vectors. Again, faceting is also possible:
In [110]: ds.plot.quiver(x="x", y="y", u="A", v="B", col="w", row="z", scale=4)\n-Out[110]: <xarray.plot.facetgrid.FacetGrid at 0x7f070f6a9550>\n+Out[110]: <xarray.plot.facetgrid.FacetGrid at 0x7f55d2d61bd0>\n
scale
is required for faceted quiver plots.\n The scale determines the number of data units per arrow length unit, i.e. a smaller scale parameter makes the arrow longer.
Visualizing vector fields is also supported with streamline plots:
\nIn [111]: ds.isel(w=1, z=1).plot.streamplot(x="x", y="y", u="A", v="B")\n-Out[111]: <matplotlib.collections.LineCollection at 0x7f07c3e0fe10>\n+Out[111]: <matplotlib.collections.LineCollection at 0x7f55d29493d0>\n
where u
and v
denote the x and y direction components of the vectors tangent to the streamlines.\n Again, faceting is also possible:
In [112]: ds.plot.streamplot(x="x", y="y", u="A", v="B", col="w", row="z")\n-Out[112]: <xarray.plot.facetgrid.FacetGrid at 0x7f070d07d590>\n+Out[112]: <xarray.plot.facetgrid.FacetGrid at 0x7f55d2772690>\n
In [121]: import xarray.plot as xplt\n \n In [122]: da = xr.DataArray(range(5))\n \n In [123]: fig, axs = plt.subplots(ncols=2, nrows=2)\n \n In [124]: da.plot(ax=axs[0, 0])\n-Out[124]: [<matplotlib.lines.Line2D at 0x7f070bfd1490>]\n+Out[124]: [<matplotlib.lines.Line2D at 0x7f55d31f1ad0>]\n \n In [125]: da.plot.line(ax=axs[0, 1])\n-Out[125]: [<matplotlib.lines.Line2D at 0x7f070c56cb50>]\n+Out[125]: [<matplotlib.lines.Line2D at 0x7f55d197f910>]\n \n In [126]: xplt.plot(da, ax=axs[1, 0])\n-Out[126]: [<matplotlib.lines.Line2D at 0x7f070bb9ff90>]\n+Out[126]: [<matplotlib.lines.Line2D at 0x7f55d18ed490>]\n \n In [127]: xplt.line(da, ax=axs[1, 1])\n-Out[127]: [<matplotlib.lines.Line2D at 0x7f070bb9fc90>]\n+Out[127]: [<matplotlib.lines.Line2D at 0x7f55d18edf50>]\n \n In [128]: plt.tight_layout()\n \n In [129]: plt.draw()\n
The plot will produce an image corresponding to the values of the array.\n Hence the top left pixel will be a different color than the others.\n Before reading on, you may want to look at the coordinates and\n think carefully about what the limits, labels, and orientation for\n each of the axes should be.
\nIn [134]: a.plot()\n-Out[134]: <matplotlib.collections.QuadMesh at 0x7f070d1c94d0>\n+Out[134]: <matplotlib.collections.QuadMesh at 0x7f5685d1bb90>\n
It may seem strange that\n the values on the y axis are decreasing with -0.5 on the top. This is because\n the pixels are centered over their coordinates, and the\n axis labels and ranges correspond to the values of the\n@@ -1520,81 +1520,81 @@\n .....: np.arange(20).reshape(4, 5),\n .....: dims=["y", "x"],\n .....: coords={"lat": (("y", "x"), lat), "lon": (("y", "x"), lon)},\n .....: )\n .....: \n \n In [139]: da.plot.pcolormesh(x="lon", y="lat")\n-Out[139]: <matplotlib.collections.QuadMesh at 0x7f070c7c1f90>\n+Out[139]: <matplotlib.collections.QuadMesh at 0x7f55d27f4c90>\n \n \n \n
Note that in this case, xarray still follows the pixel centered convention.\n This might be undesirable in some cases, for example when your data is defined\n on a polar projection (GH781). This is why the default is to not follow\n this convention when plotting on a map:
\nIn [140]: import cartopy.crs as ccrs\n \n In [141]: ax = plt.subplot(projection=ccrs.PlateCarree())\n \n In [142]: da.plot.pcolormesh(x="lon", y="lat", ax=ax)\n-Out[142]: <cartopy.mpl.geocollection.GeoQuadMesh at 0x7f070b92c110>\n+Out[142]: <cartopy.mpl.geocollection.GeoQuadMesh at 0x7f55d2f48f50>\n \n In [143]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())\n-Out[143]: <matplotlib.collections.PathCollection at 0x7f070c86ee90>\n+Out[143]: <matplotlib.collections.PathCollection at 0x7f55d1a1ba50>\n \n In [144]: ax.coastlines()\n-Out[144]: <cartopy.mpl.feature_artist.FeatureArtist at 0x7f070ba67850>\n+Out[144]: <cartopy.mpl.feature_artist.FeatureArtist at 0x7f55d2bdfb90>\n \n In [145]: ax.gridlines(draw_labels=True)\n-Out[145]: <cartopy.mpl.gridliner.Gridliner at 0x7f070c47bfd0>\n+Out[145]: <cartopy.mpl.gridliner.Gridliner at 0x7f55d1d31210>\n
You can however decide to infer the cell boundaries and use the\n infer_intervals
keyword:
In [146]: ax = plt.subplot(projection=ccrs.PlateCarree())\n \n In [147]: da.plot.pcolormesh(x="lon", y="lat", ax=ax, infer_intervals=True)\n-Out[147]: <cartopy.mpl.geocollection.GeoQuadMesh at 0x7f0709b2cc50>\n+Out[147]: <cartopy.mpl.geocollection.GeoQuadMesh at 0x7f55cfa38490>\n \n In [148]: ax.scatter(lon, lat, transform=ccrs.PlateCarree())\n-Out[148]: <matplotlib.collections.PathCollection at 0x7f0709cf4110>\n+Out[148]: <matplotlib.collections.PathCollection at 0x7f55d19862d0>\n \n In [149]: ax.coastlines()\n-Out[149]: <cartopy.mpl.feature_artist.FeatureArtist at 0x7f0709b3dfd0>\n+Out[149]: <cartopy.mpl.feature_artist.FeatureArtist at 0x7f55d2405450>\n \n In [150]: ax.gridlines(draw_labels=True)\n-Out[150]: <cartopy.mpl.gridliner.Gridliner at 0x7f0709b56f10>\n+Out[150]: <cartopy.mpl.gridliner.Gridliner at 0x7f55cfa2f790>\n
Note
\nThe data model of xarray does not support datasets with cell boundaries\n yet. If you want to use these coordinates, you\u2019ll have to make the plots\n outside the xarray framework.
\nOne can also make line plots with multidimensional coordinates. In this case, hue
must be a dimension name, not a coordinate name.
In [151]: f, ax = plt.subplots(2, 1)\n \n In [152]: da.plot.line(x="lon", hue="y", ax=ax[0])\n Out[152]: \n-[<matplotlib.lines.Line2D at 0x7f070a0d2cd0>,\n- <matplotlib.lines.Line2D at 0x7f0709c026d0>,\n- <matplotlib.lines.Line2D at 0x7f0709c02950>,\n- <matplotlib.lines.Line2D at 0x7f0709c02d90>]\n+[<matplotlib.lines.Line2D at 0x7f55cfa0fb50>,\n+ <matplotlib.lines.Line2D at 0x7f55cf918a10>,\n+ <matplotlib.lines.Line2D at 0x7f55cf91abd0>,\n+ <matplotlib.lines.Line2D at 0x7f55cf91af50>]\n \n In [153]: da.plot.line(x="lon", hue="x", ax=ax[1])\n Out[153]: \n-[<matplotlib.lines.Line2D at 0x7f0709a26050>,\n- <matplotlib.lines.Line2D at 0x7f0709a26450>,\n- <matplotlib.lines.Line2D at 0x7f0709a26790>,\n- <matplotlib.lines.Line2D at 0x7f0709a26ad0>,\n- <matplotlib.lines.Line2D at 0x7f0709a26d50>]\n+[<matplotlib.lines.Line2D at 0x7f55cf93a610>,\n+ <matplotlib.lines.Line2D at 0x7f55cf93aa10>,\n+ <matplotlib.lines.Line2D at 0x7f55cf93ad10>,\n+ <matplotlib.lines.Line2D at 0x7f55cf93af50>,\n+ <matplotlib.lines.Line2D at 0x7f55cf93b290>]\n
New xray.Dataset.where
method for masking xray objects according\n to some criteria. This works particularly well with multi-dimensional data:
In [44]: ds = xray.Dataset(coords={"x": range(100), "y": range(100)})\n \n In [45]: ds["distance"] = np.sqrt(ds.x**2 + ds.y**2)\n \n In [46]: ds.distance.where(ds.distance < 100).plot()\n-Out[46]: <matplotlib.collections.QuadMesh at 0x7f07099d5d50>\n+Out[46]: <matplotlib.collections.QuadMesh at 0x7f55cdfdded0>\n
Added new methods xray.DataArray.diff
and xray.Dataset.diff
\n for finite difference calculations along a given axis.
New xray.DataArray.to_masked_array
convenience method for\n", "details": [{"source1": "html2text {}", "source2": "html2text {}", "unified_diff": "@@ -4049,15 +4049,15 @@\n * New xray.Dataset.where method for masking xray objects according to some\n criteria. This works particularly well with multi-dimensional data:\n In [44]: ds = xray.Dataset(coords={\"x\": range(100), \"y\": range(100)})\n \n In [45]: ds[\"distance\"] = np.sqrt(ds.x**2 + ds.y**2)\n \n In [46]: ds.distance.where(ds.distance < 100).plot()\n- Out[46]: