{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "You can run this notebook in a [live session](https://binder.pangeo.io/v2/gh/pangeo-data/climpred/main?urlpath=lab/tree/docs/source/examples/subseasonal/daily-subx-example.ipynb) [binder badge](https://binder.pangeo.io/v2/gh/pangeo-data/climpred/main?urlpath=lab/tree/docs/source/examples/subseasonal/daily-subx-example.ipynb) or view it [on Github](https://github.com/pangeo-data/climpred/blob/main/docs/source/examples/subseasonal/daily-subx-example.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculate skill of a MJO Index of SubX model GEOS_V2p1 as function of daily lead time " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, we demonstrate: \n", "\n", "1. How to remotely access data from the Subseasonal Experiment (SubX) hindcast database and set it up to be used in `climpred`. \n", "2. How to calculate the Anomaly Correlation Coefficient (ACC) using daily data with `climpred`\n", "3. How to calculate and plot historical forecast skill of the real-time multivariate MJO (RMM) indices as function of lead time." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Subseasonal Experiment (SubX)\n", "\n", "Further information on SubX is available from {cite:t}`Pegion2019` and the [SubX project website](http://cola.gmu.edu/subx/).\n", "\n", "The SubX public database is hosted on the International Research Institute for Climate and Society (IRI) data server [http://iridl.ldeo.columbia.edu/SOURCES/.Models/.SubX/](http://iridl.ldeo.columbia.edu/SOURCES/.Models/.SubX/).\n", "\n", "Since the SubX data server is accessed via this notebook, the time for the notebook to run may is several minutes and will vary depending on the speed that data can be downloaded. This is a large dataset, so please be patient. If you prefer to download SubX data locally, scripts are available from [https://github.com/kpegion/SubX](https://github.com/kpegion/SubX.)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Definitions\n", "\n", "**RMM**\n", ": Two indices (RMM1 and RMM2) are used to represent the MJO. Together they define the MJO based on 8 phases and can represent both the phase and amplitude of the MJO {cite:p}`Wheeler2004`. This example uses the observed RMM1 provided by Matthew Wheeler at the Center for Australian Weather and Climate Research. It is the version of the indices in which interannual variability has not been removed.\n", "\n", "**Skill of RMM**\n", ": Traditionally, the skill of the RMM is calculated as a bivariate correlation encompassing the skill of the two indices together {cite:p}`Rashid2011,Gottschalck2010`. Currently, `climpred` does not have the functionality to calculate the bivariate correlation, thus the anomaly correlation coefficient for RMM1 index is calculated here as a demonstration. The bivariate correlation metric will be added in a future version of `climpred`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 1;\n", " var nbb_unformatted_code = \"# linting\\n%load_ext nb_black\\n%load_ext lab_black\";\n", " var nbb_formatted_code = \"# linting\\n%load_ext nb_black\\n%load_ext lab_black\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# linting\n", "%load_ext nb_black\n", "%load_ext lab_black" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 2;\n", " var nbb_unformatted_code = \"import warnings\\n\\nimport matplotlib.pyplot as plt\\n\\nimport xarray as xr\\nimport pandas as pd\\nimport numpy as np\\n\\nfrom climpred import HindcastEnsemble\\nimport climpred\\n\\nwarnings.filterwarnings(\\\"ignore\\\")\";\n", " var nbb_formatted_code = \"import warnings\\n\\nimport matplotlib.pyplot as plt\\n\\nimport xarray as xr\\nimport pandas as pd\\nimport numpy as np\\n\\nfrom climpred import HindcastEnsemble\\nimport climpred\\n\\nwarnings.filterwarnings(\\\"ignore\\\")\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import warnings\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "import xarray as xr\n", "import pandas as pd\n", "import numpy as np\n", "\n", "from climpred import HindcastEnsemble\n", "import climpred\n", "\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read the observed RMM Indices." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 3;\n", " var nbb_unformatted_code = \"obsds = climpred.tutorial.load_dataset(\\\"RMM-INTERANN-OBS\\\")[[\\\"rmm1\\\"]].dropna(\\n \\\"time\\\"\\n) # Get rid of missing times.\";\n", " var nbb_formatted_code = \"obsds = climpred.tutorial.load_dataset(\\\"RMM-INTERANN-OBS\\\")[[\\\"rmm1\\\"]].dropna(\\n \\\"time\\\"\\n) # Get rid of missing times.\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "obsds = climpred.tutorial.load_dataset(\"RMM-INTERANN-OBS\")[[\"rmm1\"]].dropna(\n", " \"time\"\n", ") # Get rid of missing times." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 4;\n", " var nbb_unformatted_code = \"obsds[\\\"rmm1\\\"].plot()\";\n", " var nbb_formatted_code = \"obsds[\\\"rmm1\\\"].plot()\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "obsds[\"rmm1\"].plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read the SubX RMM1 data for the `GMAO-GEOS_V2p1` model from the SubX data server. It is important to note that the SubX data contains weekly initialized forecasts where the `init` day varies by model. SubX data may have all NaNs for initial dates in which a model does not make a forecast, thus we apply `dropna` over the `S=init` dimension when `how=all` data for a given `S=init` is missing. This can be slow, but allows the rest of the calculations to go more quickly. \n", "\n", "Note that we ran the `dropna` operation offline and then uploaded the post-processed SubX dataset to the `climpred-data` repo for the purposes of this demo. This is how you can do this manually:\n", "\n", "```python\n", "url = 'http://iridl.ldeo.columbia.edu/SOURCES/.Models/.SubX/.GMAO/.GEOS_V2p1/.hindcast/.RMM/.RMM1/dods/'\n", "fcstds = xr.open_dataset(url, decode_times=False, chunks={'S': 1, 'L': 45}).dropna(dim='S',how='all')\n", "```" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset>\n",
       "Dimensions:  (S: 510, M: 4, L: 45)\n",
       "Coordinates:\n",
       "  * S        (S) float32 1.424e+04 1.425e+04 1.426e+04 ... 2.044e+04 2.045e+04\n",
       "  * M        (M) float32 1.0 2.0 3.0 4.0\n",
       "  * L        (L) float32 0.5 1.5 2.5 3.5 4.5 5.5 ... 40.5 41.5 42.5 43.5 44.5\n",
       "Data variables:\n",
       "    RMM1     (S, M, L) float32 -0.03237 0.1051 0.1946 ... -0.1499 0.08326 0.1389\n",
       "Attributes:\n",
       "    Conventions:  IRIDL
" ], "text/plain": [ "\n", "Dimensions: (S: 510, M: 4, L: 45)\n", "Coordinates:\n", " * S (S) float32 1.424e+04 1.425e+04 1.426e+04 ... 2.044e+04 2.045e+04\n", " * M (M) float32 1.0 2.0 3.0 4.0\n", " * L (L) float32 0.5 1.5 2.5 3.5 4.5 5.5 ... 40.5 41.5 42.5 43.5 44.5\n", "Data variables:\n", " RMM1 (S, M, L) float32 ...\n", "Attributes:\n", " Conventions: IRIDL" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 5;\n", " var nbb_unformatted_code = \"fcstds = climpred.tutorial.load_dataset(\\\"GMAO-GEOS-RMM1\\\", decode_times=False)\\nfcstds\";\n", " var nbb_formatted_code = \"fcstds = climpred.tutorial.load_dataset(\\\"GMAO-GEOS-RMM1\\\", decode_times=False)\\nfcstds\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fcstds = climpred.tutorial.load_dataset(\"GMAO-GEOS-RMM1\", decode_times=False)\n", "fcstds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The SubX data dimensions correspond to the following `climpred` dimension definitions: `X=lon`,`L=lead`,`Y=lat`,`M=member`, `S=init`. We will rename the dimensions to their `climpred` names." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 6;\n", " var nbb_unformatted_code = \"fcstds = fcstds.rename({\\\"S\\\": \\\"init\\\", \\\"L\\\": \\\"lead\\\", \\\"M\\\": \\\"member\\\", \\\"RMM1\\\": \\\"rmm1\\\"})\";\n", " var nbb_formatted_code = \"fcstds = fcstds.rename({\\\"S\\\": \\\"init\\\", \\\"L\\\": \\\"lead\\\", \\\"M\\\": \\\"member\\\", \\\"RMM1\\\": \\\"rmm1\\\"})\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fcstds = fcstds.rename({\"S\": \"init\", \"L\": \"lead\", \"M\": \"member\", \"RMM1\": \"rmm1\"})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's make sure that the `lead` dimension is set properly for `climpred`. SubX data stores `leads` as 0.5, 1.5, 2.5, etc, which correspond to 0, 1, 2, ... days since initialization. We will change the `lead` to be integers starting with zero. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 7;\n", " var nbb_unformatted_code = \"fcstds[\\\"lead\\\"] = (fcstds[\\\"lead\\\"] - 0.5).astype(\\\"int\\\")\";\n", " var nbb_formatted_code = \"fcstds[\\\"lead\\\"] = (fcstds[\\\"lead\\\"] - 0.5).astype(\\\"int\\\")\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fcstds[\"lead\"] = (fcstds[\"lead\"] - 0.5).astype(\"int\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we need to make sure that the `init` dimension is set properly for `climpred`. We use the `xarray` convenience function `decode_cf` to convert the numeric time into datetimes. It recognizes that this is on a 360 day calendar." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 8;\n", " var nbb_unformatted_code = \"fcstds = xr.decode_cf(fcstds, decode_times=True)\";\n", " var nbb_formatted_code = \"fcstds = xr.decode_cf(fcstds, decode_times=True)\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fcstds = xr.decode_cf(fcstds, decode_times=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`climpred` also requires that `lead` dimension has an attribute called `units` indicating what time units the `lead` is assocated with. Options are: `years`, `seasons`, `months`, `weeks`, `pentads`, `days`, `hours`, `minutes`, or `seconds`. For the SubX data, the `lead` `units` are `days`. " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 9;\n", " var nbb_unformatted_code = \"fcstds[\\\"lead\\\"].attrs = {\\\"units\\\": \\\"days\\\"}\";\n", " var nbb_formatted_code = \"fcstds[\\\"lead\\\"].attrs = {\\\"units\\\": \\\"days\\\"}\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fcstds[\"lead\"].attrs = {\"units\": \"days\"}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create the {py:class}`.HindcastEnsemble` object and {py:meth}`.HindcastEnsemble.add_observations`." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "hindcast = HindcastEnsemble(fcstds).add_observations(obsds)\n", "hindcast" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate the Anomaly Correlation Coefficient (ACC) {py:func}`.climpred.metrics._pearson_r`" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset>\n",
       "Dimensions:  (lead: 45)\n",
       "Coordinates:\n",
       "  * lead     (lead) int64 0 1 2 3 4 5 6 7 8 9 ... 35 36 37 38 39 40 41 42 43 44\n",
       "    skill    <U11 'initialized'\n",
       "Data variables:\n",
       "    rmm1     (lead) float64 0.9782 0.9719 0.9632 0.9508 ... 0.304 0.2801 0.2616\n",
       "Attributes:\n",
       "    Conventions:                   IRIDL\n",
       "    prediction_skill_software:     climpred https://climpred.readthedocs.io/\n",
       "    skill_calculated_by_function:  HindcastEnsemble.verify()\n",
       "    number_of_initializations:     510\n",
       "    number_of_members:             4\n",
       "    alignment:                     maximize\n",
       "    metric:                        pearson_r\n",
       "    comparison:                    e2o\n",
       "    dim:                           init\n",
       "    reference:                     []
" ], "text/plain": [ "\n", "Dimensions: (lead: 45)\n", "Coordinates:\n", " * lead (lead) int64 0 1 2 3 4 5 6 7 8 9 ... 35 36 37 38 39 40 41 42 43 44\n", " skill " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "skill = hindcast.verify(\n", " metric=\"acc\", comparison=\"e2o\", dim=\"init\", alignment=\"maximize\"\n", ")\n", "skill" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the skill as a function of lead time" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'ACC')" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "application/javascript": [ "\n", " setTimeout(function() {\n", " var nbb_cell_id = 13;\n", " var nbb_unformatted_code = \"skill[\\\"rmm1\\\"].plot()\\nplt.title(\\\"GMAO-GEOS_V2p1 RMM1 Skill\\\")\\nplt.xlabel(\\\"Lead Time (Days)\\\")\\nplt.ylabel(\\\"ACC\\\")\";\n", " var nbb_formatted_code = \"skill[\\\"rmm1\\\"].plot()\\nplt.title(\\\"GMAO-GEOS_V2p1 RMM1 Skill\\\")\\nplt.xlabel(\\\"Lead Time (Days)\\\")\\nplt.ylabel(\\\"ACC\\\")\";\n", " var nbb_cells = Jupyter.notebook.get_cells();\n", " for (var i = 0; i < nbb_cells.length; ++i) {\n", " if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n", " if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n", " nbb_cells[i].set_text(nbb_formatted_code);\n", " }\n", " break;\n", " }\n", " }\n", " }, 500);\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "skill[\"rmm1\"].plot()\n", "plt.title(\"GMAO-GEOS_V2p1 RMM1 Skill\")\n", "plt.xlabel(\"Lead Time (Days)\")\n", "plt.ylabel(\"ACC\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### References\n", "\n", "```{eval-rst}\n", ".. bibliography::\n", " :filter: docname in docnames\n", "```" ] } ], "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.7.10" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }