diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d7ec048b..f317a4c0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,7 @@ default_language_version: repos: - repo: https://github.com/asottile/pyupgrade - rev: v3.15.0 + rev: v3.15.2 hooks: - id: pyupgrade args: [ '--py39-plus' ] @@ -48,7 +48,7 @@ repos: - id: isort exclude: ^docs/ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.14 + rev: v0.3.5 hooks: - id: ruff - repo: https://github.com/pycqa/flake8 @@ -64,12 +64,12 @@ repos: additional_dependencies: [ 'black==24.3.0' ] exclude: config.py - repo: https://github.com/adrienverge/yamllint.git - rev: v1.33.0 + rev: v1.35.1 hooks: - id: yamllint args: [ '--config-file=.yamllint.yaml' ] - repo: https://github.com/nbQA-dev/nbQA - rev: 1.7.1 + rev: 1.8.5 hooks: - id: nbqa-pyupgrade args: [ '--py39-plus' ] @@ -80,7 +80,7 @@ repos: - id: nbqa-isort additional_dependencies: [ 'isort==5.13.2' ] - repo: https://github.com/kynan/nbstripout - rev: 0.6.1 + rev: 0.7.1 hooks: - id: nbstripout files: ".ipynb" @@ -92,7 +92,7 @@ repos: exclude: .cruft.json|docs/notebooks args: [ '--baseline=.secrets.baseline' ] - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.27.3 + rev: 0.28.1 hooks: - id: check-github-workflows - id: check-readthedocs diff --git a/docs/notebooks/1_catalog.ipynb b/docs/notebooks/1_catalog.ipynb index f6d8f20f..0e116ba1 100644 --- a/docs/notebooks/1_catalog.ipynb +++ b/docs/notebooks/1_catalog.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "c9ec1e3c", + "id": "0", "metadata": {}, "source": [ "# Using and understanding Catalogs\n", @@ -61,7 +61,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f25ee70d", + "id": "1", "metadata": { "tags": [] }, @@ -81,7 +81,7 @@ }, { "cell_type": "markdown", - "id": "47411b46", + "id": "2", "metadata": {}, "source": [ "The content of the catalog can be accessed by a call to `df`, which will return a `pandas.DataFrame`." @@ -90,7 +90,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3b3840b5", + "id": "3", "metadata": {}, "outputs": [], "source": [ @@ -100,7 +100,7 @@ }, { "cell_type": "markdown", - "id": "c28d8c93", + "id": "4", "metadata": {}, "source": [ "The `unique` function allows listing unique elements for either all the catalog or a subset of columns. It can be called in a few various ways, listed below:" @@ -109,7 +109,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3d04a455", + "id": "5", "metadata": {}, "outputs": [], "source": [ @@ -120,7 +120,7 @@ { "cell_type": "code", "execution_count": null, - "id": "28f67f2d", + "id": "6", "metadata": {}, "outputs": [], "source": [ @@ -131,7 +131,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4ef86a5e", + "id": "7", "metadata": {}, "outputs": [], "source": [ @@ -141,7 +141,7 @@ }, { "cell_type": "markdown", - "id": "5c5c42f5", + "id": "8", "metadata": {}, "source": [ "### Basic .search() commands\n", @@ -168,7 +168,7 @@ { "cell_type": "code", "execution_count": null, - "id": "67815ad2", + "id": "9", "metadata": {}, "outputs": [], "source": [ @@ -179,7 +179,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4b7b426f", + "id": "10", "metadata": {}, "outputs": [], "source": [ @@ -190,7 +190,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b45af639", + "id": "11", "metadata": {}, "outputs": [], "source": [ @@ -201,7 +201,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9aa5aa22", + "id": "12", "metadata": {}, "outputs": [], "source": [ @@ -211,7 +211,7 @@ }, { "cell_type": "markdown", - "id": "5d8b7995", + "id": "13", "metadata": {}, "source": [ "Notice that the search function returns everything available that matches some of the criteria." @@ -220,7 +220,7 @@ { "cell_type": "code", "execution_count": null, - "id": "29bd4010", + "id": "14", "metadata": {}, "outputs": [], "source": [ @@ -235,7 +235,7 @@ }, { "cell_type": "markdown", - "id": "8abaa553", + "id": "15", "metadata": {}, "source": [ "You can restrict your search to only keep entries that matches all the criteria across a list of columns." @@ -244,7 +244,7 @@ { "cell_type": "code", "execution_count": null, - "id": "253d4868", + "id": "16", "metadata": {}, "outputs": [], "source": [ @@ -260,7 +260,7 @@ }, { "cell_type": "markdown", - "id": "7f27214c-2524-4fb7-9b95-4a384ed13a53", + "id": "17", "metadata": {}, "source": [ "It is also possible to search for files that intersect a specific time period." @@ -269,7 +269,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ecda16b2-2d87-495d-b1e1-c2894b83fb1d", + "id": "18", "metadata": { "tags": [] }, @@ -280,7 +280,7 @@ }, { "cell_type": "markdown", - "id": "aa903092", + "id": "19", "metadata": {}, "source": [ "### Advanced search: xs.search_data_catalogs\n", @@ -316,7 +316,7 @@ { "cell_type": "code", "execution_count": null, - "id": "97d91cce", + "id": "20", "metadata": { "tags": [] }, @@ -339,7 +339,7 @@ }, { "cell_type": "markdown", - "id": "82535e6c", + "id": "21", "metadata": {}, "source": [ "If required, at this stage, a dataset can be looked at in more details. If we examine the results (look at the 'date_start' and 'date_end' columns), we'll see that it successfully found historical simulations in the *CMIP* activity and renamed both their *activity* and *experiment* to match the future simulations." @@ -348,7 +348,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a6e5bd7e", + "id": "22", "metadata": { "tags": [] }, @@ -359,7 +359,7 @@ }, { "cell_type": "markdown", - "id": "85ee34fe", + "id": "23", "metadata": {}, "source": [ "#### Example 2: Restricting results\n", @@ -370,7 +370,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1958d406", + "id": "24", "metadata": { "tags": [] }, @@ -392,7 +392,7 @@ }, { "cell_type": "markdown", - "id": "fcd847c0-0ea8-46ad-bc28-9b73edd627bc", + "id": "25", "metadata": {}, "source": [ "Similarly, if we search for historical NorESM2-MM data, we'll find that it has 3 members. If desired, `restrict_members` can be called to choose a maximum number of realization per model." @@ -401,7 +401,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6c5ce0fc-2f25-4b55-bf65-5f140f07e331", + "id": "26", "metadata": {}, "outputs": [], "source": [ @@ -420,7 +420,7 @@ }, { "cell_type": "markdown", - "id": "4fd28f58-5ab7-4d65-8906-2197592c8c94", + "id": "27", "metadata": {}, "source": [ "Finally, `restrict_warming_level` can be used to be sure that the results either exist in `xscen`'s warming level database (if a boolean), or reach a given warming level." @@ -429,7 +429,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3300b1d7-e37b-4aa4-991e-99609bb1adea", + "id": "28", "metadata": {}, "outputs": [], "source": [ @@ -449,7 +449,7 @@ }, { "cell_type": "markdown", - "id": "6bddc58d", + "id": "29", "metadata": {}, "source": [ "#### Example 3: Search for data that can be computed from what's available\n", @@ -460,7 +460,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9e30951b", + "id": "30", "metadata": { "tags": [] }, @@ -479,7 +479,7 @@ }, { "cell_type": "markdown", - "id": "b33b2ad7", + "id": "31", "metadata": {}, "source": [ "If we examine the SSP5-8.5 results, we'll see that while it failed to find *evspsblpot*, it successfully understood that *tasmin* and *tasmax* can be used to compute it. It also understood that daily *tasmin* and *tasmax* is a valid search result for `{tas: YS}`, since it can be computed first, then aggregated to a yearly frequency." @@ -488,7 +488,7 @@ { "cell_type": "code", "execution_count": null, - "id": "29b2d3c5", + "id": "32", "metadata": { "tags": [] }, @@ -499,7 +499,7 @@ }, { "cell_type": "markdown", - "id": "962a3c22-58f4-49c4-94ff-78d9c10bcc85", + "id": "33", "metadata": {}, "source": [ "It's also possible to search for multiple frequencies at the same time by using a list of xrfreq." @@ -508,7 +508,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7f79d33d-4687-416a-91e6-d4f37ea5efef", + "id": "34", "metadata": { "tags": [] }, @@ -535,7 +535,7 @@ }, { "cell_type": "markdown", - "id": "22b7350a", + "id": "35", "metadata": {}, "source": [ "#### Derived variables\n", @@ -559,7 +559,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9ee75ffb", + "id": "36", "metadata": { "tags": [] }, @@ -571,7 +571,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c235a0f7", + "id": "37", "metadata": {}, "outputs": [], "source": [ @@ -586,7 +586,7 @@ }, { "cell_type": "markdown", - "id": "aec5c3fc", + "id": "38", "metadata": {}, "source": [ "
INFO\n", @@ -601,7 +601,7 @@ }, { "cell_type": "markdown", - "id": "4d80ca03", + "id": "39", "metadata": {}, "source": [ "## Creating a New Catalog from a Directory\n", @@ -625,7 +625,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a00a0e85", + "id": "40", "metadata": {}, "outputs": [], "source": [ @@ -645,7 +645,7 @@ { "cell_type": "code", "execution_count": null, - "id": "830e119e", + "id": "41", "metadata": {}, "outputs": [], "source": [ @@ -655,7 +655,7 @@ }, { "cell_type": "markdown", - "id": "9513fc05", + "id": "42", "metadata": { "tags": [] }, @@ -690,7 +690,7 @@ { "cell_type": "code", "execution_count": null, - "id": "837b89c6", + "id": "43", "metadata": {}, "outputs": [], "source": [ @@ -713,7 +713,7 @@ }, { "cell_type": "markdown", - "id": "bd3b9414", + "id": "44", "metadata": {}, "source": [ "#### Unique Dataset ID\n", @@ -733,7 +733,7 @@ { "cell_type": "code", "execution_count": null, - "id": "933fa4d2", + "id": "45", "metadata": {}, "outputs": [], "source": [ @@ -742,7 +742,7 @@ }, { "cell_type": "markdown", - "id": "f7d4e420", + "id": "46", "metadata": {}, "source": [ "#### Appending data using ProjectCatalog.update()\n", @@ -753,7 +753,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e8954662", + "id": "47", "metadata": {}, "outputs": [], "source": [ @@ -764,7 +764,7 @@ }, { "cell_type": "markdown", - "id": "26c87a7a", + "id": "48", "metadata": {}, "source": [ "#### More on patterns and advanced features\n", @@ -780,7 +780,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6a40a6ff", + "id": "49", "metadata": {}, "outputs": [], "source": [ @@ -806,7 +806,7 @@ }, { "cell_type": "markdown", - "id": "27d51ee5", + "id": "50", "metadata": {}, "source": [ "##### Example 1 - wrong\n", @@ -818,7 +818,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ece5f91f", + "id": "51", "metadata": {}, "outputs": [], "source": [ @@ -828,7 +828,7 @@ }, { "cell_type": "markdown", - "id": "9394cd49", + "id": "52", "metadata": {}, "source": [ "##### Example 2 - wrong again\n", @@ -842,7 +842,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2c73298d", + "id": "53", "metadata": {}, "outputs": [], "source": [ @@ -852,7 +852,7 @@ }, { "cell_type": "markdown", - "id": "2ca21395", + "id": "54", "metadata": {}, "source": [ "##### Example 3 - Correct!\n", @@ -862,7 +862,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d2de72a7", + "id": "55", "metadata": {}, "outputs": [], "source": [ @@ -875,7 +875,7 @@ }, { "cell_type": "markdown", - "id": "6a0fe5e7", + "id": "56", "metadata": {}, "source": [ "##### Example 4 - Filter on folder names\n", @@ -885,7 +885,7 @@ { "cell_type": "code", "execution_count": null, - "id": "503d7709", + "id": "57", "metadata": {}, "outputs": [], "source": [ @@ -894,7 +894,7 @@ }, { "cell_type": "markdown", - "id": "7fa5110e", + "id": "58", "metadata": {}, "source": [ "##### Example 5 - Modifying metadata\n", @@ -908,7 +908,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d905dbcf", + "id": "59", "metadata": {}, "outputs": [], "source": [ @@ -924,7 +924,7 @@ }, { "cell_type": "markdown", - "id": "7fd3e489", + "id": "60", "metadata": {}, "source": [ "##### Example 6 : Even more complex field processing\n", @@ -934,7 +934,7 @@ { "cell_type": "code", "execution_count": null, - "id": "039f912f", + "id": "61", "metadata": {}, "outputs": [], "source": [ @@ -955,7 +955,7 @@ }, { "cell_type": "markdown", - "id": "431a735c", + "id": "62", "metadata": {}, "source": [ "### Restructuring catalogued files on disk\n", @@ -969,7 +969,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1eb19f5b", + "id": "63", "metadata": {}, "outputs": [], "source": [ @@ -983,7 +983,7 @@ }, { "cell_type": "markdown", - "id": "1b6ccd4e", + "id": "64", "metadata": {}, "source": [ "While this method is simple, it can't handle neither the list-like `variable` field nor the `date_start` and `date_end` datetime fields.\n", @@ -997,7 +997,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6b10e67b", + "id": "65", "metadata": {}, "outputs": [], "source": [ @@ -1006,7 +1006,7 @@ }, { "cell_type": "markdown", - "id": "02d82612", + "id": "66", "metadata": {}, "source": [ "The folder schema can be passed explictly, as a dictionary with two entries:\n", @@ -1019,7 +1019,7 @@ { "cell_type": "code", "execution_count": null, - "id": "76bc0f37", + "id": "67", "metadata": {}, "outputs": [], "source": [ @@ -1032,7 +1032,7 @@ }, { "cell_type": "markdown", - "id": "78f8d562", + "id": "68", "metadata": {}, "source": [ "The function has more options:\n", @@ -1044,7 +1044,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c3758eda", + "id": "69", "metadata": {}, "outputs": [], "source": [ @@ -1053,7 +1053,7 @@ }, { "cell_type": "markdown", - "id": "705a6135", + "id": "70", "metadata": {}, "source": [ "Above, we called the function with a dataset. In this case, the \"facets\" are extracted from various sources, with this priority (highest at the top):\n", @@ -1069,7 +1069,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d65c8a07", + "id": "71", "metadata": {}, "outputs": [], "source": [ @@ -1078,7 +1078,7 @@ }, { "cell_type": "markdown", - "id": "bd529fd2", + "id": "72", "metadata": {}, "source": [ "Or a full DataFrame/Catalog. In this case, the return value is a DataFrame, copy form the catalog, with a \"new_path\" column added." @@ -1087,7 +1087,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5ad9f477", + "id": "73", "metadata": {}, "outputs": [], "source": [ @@ -1097,7 +1097,7 @@ }, { "cell_type": "markdown", - "id": "20e4678a", + "id": "74", "metadata": {}, "source": [ "This can be used in a workflow that renames or copies the files to their new name, usually using `shutil`." @@ -1106,7 +1106,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3296422d", + "id": "75", "metadata": {}, "outputs": [], "source": [ @@ -1133,7 +1133,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c7acfa82-e2e7-42ce-b24e-ab5d4acc6c57", + "id": "76", "metadata": {}, "outputs": [], "source": [] diff --git a/docs/notebooks/2_getting_started.ipynb b/docs/notebooks/2_getting_started.ipynb index 408e5c45..0fdad2e3 100644 --- a/docs/notebooks/2_getting_started.ipynb +++ b/docs/notebooks/2_getting_started.ipynb @@ -3,7 +3,7 @@ { "cell_type": "code", "execution_count": null, - "id": "eb10a72a-9ea1-4414-922b-0ea1aaea0648", + "id": "0", "metadata": { "nbsphinx": "hidden" }, @@ -21,7 +21,7 @@ }, { "cell_type": "markdown", - "id": "4f220a85", + "id": "1", "metadata": {}, "source": [ "# Getting Started\n", @@ -47,7 +47,7 @@ { "cell_type": "code", "execution_count": null, - "id": "892473e9", + "id": "2", "metadata": { "tags": [] }, @@ -81,7 +81,7 @@ }, { "cell_type": "markdown", - "id": "4c35d860", + "id": "3", "metadata": {}, "source": [ "### Searching a subset of datasets within *DataCatalogs*\n", @@ -103,7 +103,7 @@ { "cell_type": "code", "execution_count": null, - "id": "eb36f6c9", + "id": "4", "metadata": { "tags": [] }, @@ -129,7 +129,7 @@ }, { "cell_type": "markdown", - "id": "65f7dfcc", + "id": "5", "metadata": {}, "source": [ "The result of `search_data_catalog` is a dictionary with one entry per unique ID. Note that a unique ID can be associated to multiple *intake datasets*, as is the case here, because `intake-esm` groups catalog lines per *id - domain - processing_level - xrfeq*." @@ -138,7 +138,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9d15968c", + "id": "6", "metadata": { "tags": [] }, @@ -149,7 +149,7 @@ }, { "cell_type": "markdown", - "id": "7f7b97b1", + "id": "7", "metadata": {}, "source": [ "## Extracting data\n", @@ -183,7 +183,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d273c24f", + "id": "8", "metadata": { "tags": [] }, @@ -200,7 +200,7 @@ }, { "cell_type": "markdown", - "id": "890cb41f", + "id": "9", "metadata": {}, "source": [ "### Preparing arguments for *xarray*\n", @@ -219,7 +219,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b781fcbf", + "id": "10", "metadata": { "tags": [] }, @@ -234,7 +234,7 @@ }, { "cell_type": "markdown", - "id": "2c62018f", + "id": "11", "metadata": {}, "source": [ "### Extraction function\n", @@ -258,7 +258,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ab465a36", + "id": "12", "metadata": { "tags": [] }, @@ -279,7 +279,7 @@ }, { "cell_type": "markdown", - "id": "c5247913", + "id": "13", "metadata": {}, "source": [ "### Saving files to disk\n", @@ -307,7 +307,7 @@ { "cell_type": "code", "execution_count": null, - "id": "dd283230", + "id": "14", "metadata": { "tags": [] }, @@ -329,7 +329,7 @@ }, { "cell_type": "markdown", - "id": "d980e512", + "id": "15", "metadata": {}, "source": [ "### Simplifying the call to extract_dataset() with search_data_catalogs()\n", @@ -340,7 +340,7 @@ { "cell_type": "code", "execution_count": null, - "id": "90f1ab0a", + "id": "16", "metadata": { "tags": [] }, @@ -354,7 +354,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d29f08c1", + "id": "17", "metadata": { "tags": [] }, @@ -374,7 +374,7 @@ }, { "cell_type": "markdown", - "id": "8c140dbb", + "id": "18", "metadata": {}, "source": [ "Since `cat_sim` contains multiple datasets, extracting the data should be done by looping on `.items()` or `.values()`. Also, since 'CMIP6_ScenarioMIP_NCC_NorESM2-MM_ssp126_r1i1p1f1_example-region' was extracted in the previous step, `pcat.exists_in_cat` can be used to skip re-extracting." @@ -383,7 +383,7 @@ { "cell_type": "code", "execution_count": null, - "id": "bf5900f3", + "id": "19", "metadata": { "tags": [] }, @@ -413,7 +413,7 @@ { "cell_type": "code", "execution_count": null, - "id": "113b9cfa-d237-43d2-9c4e-9ecd5969372e", + "id": "20", "metadata": { "nbsphinx": "hidden" }, @@ -499,7 +499,7 @@ }, { "cell_type": "markdown", - "id": "9b2040b2", + "id": "21", "metadata": {}, "source": [ "## Regridding data\n", @@ -521,7 +521,7 @@ { "cell_type": "code", "execution_count": null, - "id": "745e751a", + "id": "22", "metadata": { "tags": [] }, @@ -542,7 +542,7 @@ }, { "cell_type": "markdown", - "id": "d0809950", + "id": "23", "metadata": {}, "source": [ "### Masking grid cells\n", @@ -561,7 +561,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1c9ad4ac", + "id": "24", "metadata": { "tags": [] }, @@ -589,7 +589,7 @@ { "cell_type": "code", "execution_count": null, - "id": "081ba5f1", + "id": "25", "metadata": { "tags": [] }, @@ -611,7 +611,7 @@ }, { "cell_type": "markdown", - "id": "4a311378", + "id": "26", "metadata": {}, "source": [ "### Preparing arguments for xESMF.Regridder\n", @@ -665,7 +665,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a1176ecd", + "id": "27", "metadata": { "tags": [] }, @@ -676,7 +676,7 @@ }, { "cell_type": "markdown", - "id": "ceaf40d1", + "id": "28", "metadata": {}, "source": [ "### Regridding function\n", @@ -691,7 +691,7 @@ { "cell_type": "code", "execution_count": null, - "id": "461ba262", + "id": "29", "metadata": { "tags": [] }, @@ -740,7 +740,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8413e56a", + "id": "30", "metadata": { "tags": [] }, @@ -778,7 +778,7 @@ }, { "cell_type": "markdown", - "id": "e0c332fa", + "id": "31", "metadata": {}, "source": [ "## Bias adjusting data\n", @@ -798,7 +798,7 @@ { "cell_type": "code", "execution_count": null, - "id": "90dde88c", + "id": "32", "metadata": { "tags": [] }, @@ -811,7 +811,7 @@ }, { "cell_type": "markdown", - "id": "3401bbd1", + "id": "33", "metadata": {}, "source": [ "### Bias adjustment function\n", @@ -846,7 +846,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d8f8dc7e", + "id": "34", "metadata": { "tags": [] }, @@ -893,7 +893,7 @@ { "cell_type": "code", "execution_count": null, - "id": "6c7eee07", + "id": "35", "metadata": { "tags": [] }, @@ -954,7 +954,7 @@ }, { "cell_type": "markdown", - "id": "65cd14ef", + "id": "36", "metadata": {}, "source": [ "## Computing indicators\n", @@ -992,7 +992,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f060f23e", + "id": "37", "metadata": { "tags": [] }, @@ -1022,7 +1022,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f9f8d1e9", + "id": "38", "metadata": { "tags": [] }, @@ -1033,7 +1033,7 @@ }, { "cell_type": "markdown", - "id": "576bdad3", + "id": "39", "metadata": {}, "source": [ "## Spatio-temporal aggregation\n", @@ -1062,7 +1062,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fb23ba64", + "id": "40", "metadata": { "tags": [] }, @@ -1093,7 +1093,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ef7b336f", + "id": "41", "metadata": { "tags": [] }, @@ -1104,7 +1104,7 @@ }, { "cell_type": "markdown", - "id": "205ead0d", + "id": "42", "metadata": {}, "source": [ "#### Horizon coordinate and time dimension\n", @@ -1122,7 +1122,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7c6aaeaa", + "id": "43", "metadata": { "tags": [] }, @@ -1135,7 +1135,7 @@ }, { "cell_type": "markdown", - "id": "de27bb4b", + "id": "44", "metadata": {}, "source": [ "### Computing deltas\n", @@ -1151,7 +1151,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a6971329", + "id": "45", "metadata": { "tags": [] }, @@ -1180,7 +1180,7 @@ { "cell_type": "code", "execution_count": null, - "id": "698e241a", + "id": "46", "metadata": { "tags": [] }, @@ -1192,7 +1192,7 @@ }, { "cell_type": "markdown", - "id": "30f52b96", + "id": "47", "metadata": {}, "source": [ "### Spatial mean\n", @@ -1216,7 +1216,7 @@ { "cell_type": "code", "execution_count": null, - "id": "17168e53", + "id": "48", "metadata": { "tags": [] }, @@ -1245,7 +1245,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f9bf486a", + "id": "49", "metadata": { "tags": [] }, @@ -1257,7 +1257,7 @@ }, { "cell_type": "markdown", - "id": "1ee6701a", + "id": "50", "metadata": {}, "source": [ "## Ensemble statistics\n", @@ -1283,7 +1283,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fa8e6d0f-5148-4bad-a2ba-ada5035df35c", + "id": "51", "metadata": { "tags": [] }, @@ -1300,7 +1300,7 @@ }, { "cell_type": "markdown", - "id": "862160db-a5b8-4e54-b60c-33c7a54f3969", + "id": "52", "metadata": {}, "source": [ "### Ensemble stats\n", @@ -1318,7 +1318,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1c2d2d54", + "id": "53", "metadata": { "tags": [] }, @@ -1341,7 +1341,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b53bb1b4", + "id": "54", "metadata": { "tags": [] }, @@ -1352,7 +1352,7 @@ }, { "cell_type": "markdown", - "id": "9780fd81", + "id": "55", "metadata": {}, "source": [ "## Clean up\n", @@ -1370,7 +1370,7 @@ }, { "cell_type": "markdown", - "id": "d599c1a1", + "id": "56", "metadata": {}, "source": [ "### Calendars\n", @@ -1385,7 +1385,7 @@ { "cell_type": "code", "execution_count": null, - "id": "465ca630", + "id": "57", "metadata": {}, "outputs": [], "source": [ @@ -1395,7 +1395,7 @@ }, { "cell_type": "markdown", - "id": "344d2ff0", + "id": "58", "metadata": {}, "source": [ "### Attributes\n", @@ -1417,7 +1417,7 @@ { "cell_type": "code", "execution_count": null, - "id": "bcda251f", + "id": "59", "metadata": {}, "outputs": [], "source": [ @@ -1436,7 +1436,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b7c6a2e2", + "id": "60", "metadata": {}, "outputs": [], "source": [ @@ -1459,7 +1459,7 @@ { "cell_type": "code", "execution_count": null, - "id": "91502867", + "id": "61", "metadata": {}, "outputs": [], "source": [ diff --git a/docs/notebooks/3_diagnostics.ipynb b/docs/notebooks/3_diagnostics.ipynb index a50c2b40..a9f1068f 100644 --- a/docs/notebooks/3_diagnostics.ipynb +++ b/docs/notebooks/3_diagnostics.ipynb @@ -3,7 +3,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d513b8c4-0cb4-429b-b169-e0d8d40c795f", + "id": "0", "metadata": { "nbsphinx": "hidden" }, @@ -22,7 +22,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b2e9213c", + "id": "1", "metadata": { "tags": [] }, @@ -54,7 +54,7 @@ }, { "cell_type": "markdown", - "id": "ad709809", + "id": "2", "metadata": {}, "source": [ "# Diagnostics\n", @@ -67,7 +67,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5022726c", + "id": "3", "metadata": { "tags": [] }, @@ -81,7 +81,7 @@ }, { "cell_type": "markdown", - "id": "309dda71-bb05-4960-a882-1e62648c15a3", + "id": "4", "metadata": {}, "source": [ "## Health checks\n", @@ -112,7 +112,7 @@ { "cell_type": "code", "execution_count": null, - "id": "50b76511-571f-4472-81c6-3c4e0872b4d8", + "id": "5", "metadata": { "tags": [] }, @@ -129,7 +129,7 @@ { "cell_type": "code", "execution_count": null, - "id": "84bb901a-3806-40a5-9214-f98f1b52c515", + "id": "6", "metadata": { "tags": [] }, @@ -150,7 +150,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ddb4a2ad-fc69-47c2-9f44-97f7ebaab7f2", + "id": "7", "metadata": { "tags": [] }, @@ -172,7 +172,7 @@ }, { "cell_type": "markdown", - "id": "655d0351", + "id": "8", "metadata": {}, "source": [ "## Properties and measures\n", @@ -189,7 +189,7 @@ }, { "cell_type": "markdown", - "id": "be09b145", + "id": "9", "metadata": {}, "source": [ "Let's start by calculating the properties on the reference dataset.\n", @@ -234,7 +234,7 @@ { "cell_type": "code", "execution_count": null, - "id": "dc1131b2", + "id": "10", "metadata": {}, "outputs": [], "source": [ @@ -245,7 +245,7 @@ }, { "cell_type": "markdown", - "id": "863e8722", + "id": "11", "metadata": {}, "source": [ "The properties can be given an argument `group` ('time', 'time.season' or 'time.month'). For 'time', the time collapsing will be performed over the whole period. For 'time.season'/'time.month', the time collapsing will be performed over each season/month. See `quantile_98_tas` as an example for season." @@ -254,7 +254,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fae03cbe", + "id": "12", "metadata": {}, "outputs": [], "source": [ @@ -282,7 +282,7 @@ }, { "cell_type": "markdown", - "id": "94df9616", + "id": "13", "metadata": {}, "source": [ "To compute a measure as well as a property, add the `dref_for_measure` argument with the reference properties calculated above. This will mesure the difference between the reference properties and the scenario properties.\n", @@ -292,7 +292,7 @@ { "cell_type": "code", "execution_count": null, - "id": "d78534b5", + "id": "14", "metadata": {}, "outputs": [], "source": [ @@ -332,7 +332,7 @@ { "cell_type": "code", "execution_count": null, - "id": "520da8a4", + "id": "15", "metadata": {}, "outputs": [], "source": [ @@ -351,7 +351,7 @@ }, { "cell_type": "markdown", - "id": "9cec0236", + "id": "16", "metadata": {}, "source": [ "If you have different methods of bias adjustement, you might want to compare them and see for each property which method performs best (bias close to 0, ratio close to 1) with a `measures_heatmap`.\n", @@ -369,7 +369,7 @@ { "cell_type": "code", "execution_count": null, - "id": "2522cf60", + "id": "17", "metadata": {}, "outputs": [], "source": [ @@ -403,7 +403,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f20a5915", + "id": "18", "metadata": {}, "outputs": [], "source": [ @@ -416,7 +416,7 @@ { "cell_type": "code", "execution_count": null, - "id": "498ccf9d", + "id": "19", "metadata": {}, "outputs": [], "source": [ @@ -443,7 +443,7 @@ }, { "cell_type": "markdown", - "id": "aac2f2a2", + "id": "20", "metadata": {}, "source": [ "`measure_improved` is another way to compare two datasets. It returns the fraction of the grid points that performed better in the second dataset than in the first dataset. It is useful to see which of properties are best corrected for by the bias adjustement method." @@ -452,7 +452,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ba7ed6ba", + "id": "21", "metadata": {}, "outputs": [], "source": [ diff --git a/docs/notebooks/5_warminglevels.ipynb b/docs/notebooks/5_warminglevels.ipynb index df585771..bb6cbcbe 100644 --- a/docs/notebooks/5_warminglevels.ipynb +++ b/docs/notebooks/5_warminglevels.ipynb @@ -3,7 +3,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f1899896-70a1-4efb-80e6-8765b95f4388", + "id": "0", "metadata": { "nbsphinx": "hidden" }, @@ -21,7 +21,7 @@ }, { "cell_type": "markdown", - "id": "3e311475", + "id": "1", "metadata": {}, "source": [ "# Warming levels\n", @@ -34,7 +34,7 @@ { "cell_type": "code", "execution_count": null, - "id": "eec162f0", + "id": "2", "metadata": { "tags": [] }, @@ -120,7 +120,7 @@ }, { "cell_type": "markdown", - "id": "0d2e4fa8-554a-4647-99c1-5dafad5f278b", + "id": "3", "metadata": {}, "source": [ "## Find warming levels with only the model name\n", @@ -147,7 +147,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fa38e4c5-b693-42ea-bf9e-08862742c729", + "id": "4", "metadata": { "tags": [] }, @@ -184,7 +184,7 @@ }, { "cell_type": "markdown", - "id": "26ddd760", + "id": "5", "metadata": {}, "source": [ "## Find and extract data by warming levels\n", @@ -215,7 +215,7 @@ { "cell_type": "code", "execution_count": null, - "id": "8f4a5b3e", + "id": "6", "metadata": { "tags": [] }, @@ -238,7 +238,7 @@ }, { "cell_type": "markdown", - "id": "60f63d4d-38b3-48a1-af88-7170af99c9ed", + "id": "7", "metadata": {}, "source": [ "#### Vectorized subsetting\n", @@ -253,7 +253,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e394f0d6-3cb2-4e77-a221-fc1c1bd07475", + "id": "8", "metadata": {}, "outputs": [], "source": [ @@ -272,7 +272,7 @@ { "cell_type": "code", "execution_count": null, - "id": "74320396-09e8-40ea-80ee-56ec7ad567c1", + "id": "9", "metadata": {}, "outputs": [], "source": [ @@ -281,7 +281,7 @@ }, { "cell_type": "markdown", - "id": "c02b599e", + "id": "10", "metadata": {}, "source": [ "### Method #2: Producing horizons\n", @@ -301,7 +301,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f5f8c25d", + "id": "11", "metadata": { "tags": [] }, @@ -333,7 +333,7 @@ { "cell_type": "code", "execution_count": null, - "id": "130a2168", + "id": "12", "metadata": { "tags": [] }, @@ -344,7 +344,7 @@ }, { "cell_type": "markdown", - "id": "163f9816", + "id": "13", "metadata": {}, "source": [ "## Deltas and spatial aggregation\n", @@ -355,7 +355,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f31c4d08", + "id": "14", "metadata": { "tags": [] }, @@ -395,7 +395,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7f96ae9b", + "id": "15", "metadata": { "tags": [] }, @@ -406,7 +406,7 @@ }, { "cell_type": "markdown", - "id": "d0e70707", + "id": "16", "metadata": {}, "source": [ "## Ensemble statistics\n", @@ -419,7 +419,7 @@ { "cell_type": "code", "execution_count": null, - "id": "50a1152f-b1c3-4b70-baee-94366fb51453", + "id": "17", "metadata": { "tags": [] }, @@ -431,7 +431,7 @@ { "cell_type": "code", "execution_count": null, - "id": "dd9b6a71-0ee8-4c3e-9962-d18e4b19a1fa", + "id": "18", "metadata": { "tags": [] }, @@ -446,7 +446,7 @@ }, { "cell_type": "markdown", - "id": "b640fa35-d68d-4dbd-83cd-f1a1b3aa974c", + "id": "19", "metadata": {}, "source": [ "Next, the weights and the datasets can be passed to `xs.ensemble_stats` to calculate the ensemble statistics." @@ -455,7 +455,7 @@ { "cell_type": "code", "execution_count": null, - "id": "76c8130d", + "id": "20", "metadata": { "tags": [] }, @@ -483,7 +483,7 @@ { "cell_type": "code", "execution_count": null, - "id": "1f0d8fa0", + "id": "21", "metadata": {}, "outputs": [], "source": [ diff --git a/docs/notebooks/6_config.ipynb b/docs/notebooks/6_config.ipynb index a51bb33e..742466d5 100644 --- a/docs/notebooks/6_config.ipynb +++ b/docs/notebooks/6_config.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "3c366641", + "id": "0", "metadata": {}, "source": [ "# YAML usage\n", @@ -21,7 +21,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7e6662ca", + "id": "1", "metadata": {}, "outputs": [], "source": [ @@ -32,7 +32,7 @@ }, { "cell_type": "markdown", - "id": "1fdc6de2-2b19-4452-823e-158f690e9ff3", + "id": "2", "metadata": {}, "source": [ "## Loading an existing YAML config file\n", @@ -43,7 +43,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9bd25e3b-07a7-48d1-8fc3-755641f835eb", + "id": "3", "metadata": { "tags": [] }, @@ -58,7 +58,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f2d9b141-1768-4783-aec1-8016a1201ff8", + "id": "4", "metadata": { "tags": [] }, @@ -81,7 +81,7 @@ }, { "cell_type": "markdown", - "id": "77d673f4-9659-4aa4-935a-32020385d4ee", + "id": "5", "metadata": { "tags": [] }, @@ -92,7 +92,7 @@ { "cell_type": "code", "execution_count": null, - "id": "e1f292ec-d9f3-433a-9ec2-3cea84faf8dd", + "id": "6", "metadata": { "tags": [] }, @@ -119,7 +119,7 @@ }, { "cell_type": "markdown", - "id": "e837a13d", + "id": "7", "metadata": {}, "source": [ "If one really want to modify the `CONFIG` dictionary from within the workflow itself, its `set` method must be used." @@ -128,7 +128,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f18dd390", + "id": "8", "metadata": {}, "outputs": [], "source": [ @@ -138,7 +138,7 @@ }, { "cell_type": "markdown", - "id": "a565f3a1-530e-45f1-96af-e6a80fe23ca8", + "id": "9", "metadata": {}, "source": [ "## Building a YAML config file\n", @@ -150,7 +150,7 @@ { "cell_type": "code", "execution_count": null, - "id": "75bf160f-c256-4893-b147-90a864832731", + "id": "10", "metadata": {}, "outputs": [], "source": [ @@ -161,7 +161,7 @@ }, { "cell_type": "markdown", - "id": "8c4a85bc-7a8a-40b6-af6c-45d0b5b9b289", + "id": "11", "metadata": {}, "source": [ "These are not linked to any function and will not automatically be called upon by `xscen`, but can be referred to during the execution of the script. Below is an example where `tasks` is used to instruct on which tasks to accomplish and which to skip. Many such example can be seen throughout [the provided templates](https://github.com/Ouranosinc/xscen/tree/main/templates)." @@ -170,7 +170,7 @@ { "cell_type": "code", "execution_count": null, - "id": "ae19691c-e7d8-4747-bca1-acb5b042b4cf", + "id": "12", "metadata": { "tags": [] }, @@ -187,7 +187,7 @@ }, { "cell_type": "markdown", - "id": "c8d0d86f-12f7-483a-8a85-3102e4faf8bc", + "id": "13", "metadata": {}, "source": [ "### Function-specific parameters\n", @@ -230,7 +230,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a59bcf70-9371-4fa4-ad1e-bd4f98dd9d12", + "id": "14", "metadata": { "tags": [] }, @@ -245,7 +245,7 @@ }, { "cell_type": "markdown", - "id": "85b36803-29b8-4993-add3-3c69e4e4a750", + "id": "15", "metadata": {}, "source": [ "Let's test that it is working, using `climatological_op`:" @@ -254,7 +254,7 @@ { "cell_type": "code", "execution_count": null, - "id": "71287ea3-a7b6-41b6-91f4-e36644d463cc", + "id": "16", "metadata": { "tags": [] }, @@ -267,7 +267,7 @@ { "cell_type": "code", "execution_count": null, - "id": "13e7468e-c6f6-4ae8-b204-76b3b4c49000", + "id": "17", "metadata": { "tags": [] }, @@ -288,7 +288,7 @@ }, { "cell_type": "markdown", - "id": "a19640b8-987d-4272-81f3-b25c9ba42bf2", + "id": "18", "metadata": {}, "source": [ "### Managing paths\n", @@ -304,7 +304,7 @@ { "cell_type": "code", "execution_count": null, - "id": "cb086495", + "id": "19", "metadata": {}, "outputs": [], "source": [ @@ -313,7 +313,7 @@ }, { "cell_type": "markdown", - "id": "70e64452", + "id": "20", "metadata": {}, "source": [ "## Passing configuration through the command line\n", @@ -325,7 +325,7 @@ { "cell_type": "code", "execution_count": null, - "id": "870c6205", + "id": "21", "metadata": {}, "outputs": [], "source": [ @@ -347,7 +347,7 @@ }, { "cell_type": "markdown", - "id": "62b5fbda", + "id": "22", "metadata": {}, "source": [ "And then we can simply pass this list to `load_config`, which accepts file paths and \"key=value\" pairs." @@ -356,7 +356,7 @@ { "cell_type": "code", "execution_count": null, - "id": "70e2a027", + "id": "23", "metadata": {}, "outputs": [], "source": [ diff --git a/scripts/global_tas_average_obs.ipynb b/scripts/global_tas_average_obs.ipynb index 1033b99c..43bec101 100644 --- a/scripts/global_tas_average_obs.ipynb +++ b/scripts/global_tas_average_obs.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "00cbb3eb-4e4b-460b-8f5e-5cb72759f437", + "id": "0", "metadata": {}, "source": [ "# Compute global temperature average for observational datasets\n", @@ -21,7 +21,7 @@ { "cell_type": "code", "execution_count": null, - "id": "01cb5af8-6c27-4223-9699-fef62a08e23e", + "id": "1", "metadata": { "tags": [] }, @@ -50,7 +50,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4ff377ea-7ad6-4c57-a485-73871f61a5f3", + "id": "2", "metadata": { "tags": [] }, @@ -89,7 +89,7 @@ }, { "cell_type": "markdown", - "id": "90fb65b3-1f30-4983-8564-4f3ce0d46678", + "id": "3", "metadata": {}, "source": [ "### Berkeley Earth\n", @@ -103,7 +103,7 @@ { "cell_type": "code", "execution_count": null, - "id": "3650631b-db67-4b65-9586-7a18d1f50d57", + "id": "4", "metadata": { "tags": [] }, @@ -146,7 +146,7 @@ { "cell_type": "code", "execution_count": null, - "id": "0f939173-be37-41ca-937c-2126863cd907", + "id": "5", "metadata": { "tags": [] }, @@ -166,7 +166,7 @@ }, { "cell_type": "markdown", - "id": "ecf5d136-8bad-484e-ab0d-9aa3fa9c23e7", + "id": "6", "metadata": {}, "source": [ "### GISTEMP v4\n", @@ -178,7 +178,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f13eabec-2a00-4cee-b195-88c054698dfa", + "id": "7", "metadata": { "tags": [] }, @@ -200,7 +200,7 @@ }, { "cell_type": "markdown", - "id": "8baeca9c-caec-4f81-9f99-233694acabb3", + "id": "8", "metadata": {}, "source": [ "### HadCRUT5\n", @@ -212,7 +212,7 @@ { "cell_type": "code", "execution_count": null, - "id": "5dcf304e-d43a-4c7b-b0f1-8b4203cb2cf8", + "id": "9", "metadata": { "tags": [] }, @@ -238,7 +238,7 @@ }, { "cell_type": "markdown", - "id": "eaa12a90-722c-4a0a-bd21-6db3c1afe73c", + "id": "10", "metadata": {}, "source": [ "### NOAAGlobalTemp v5\n", @@ -250,7 +250,7 @@ { "cell_type": "code", "execution_count": null, - "id": "86e77060-1b95-4a75-b1bf-230955b172fd", + "id": "11", "metadata": { "tags": [] }, @@ -273,7 +273,7 @@ }, { "cell_type": "markdown", - "id": "97a33f82-96e1-4f02-a74e-c7963255669e", + "id": "12", "metadata": {}, "source": [ "### ERA5\n", @@ -285,7 +285,7 @@ { "cell_type": "code", "execution_count": null, - "id": "953de14e-68a8-40cc-9f24-98b40f32645c", + "id": "13", "metadata": { "tags": [] }, @@ -297,7 +297,7 @@ { "cell_type": "code", "execution_count": null, - "id": "b7ce5ea7-c3c7-4ed1-91a1-4b880c939aca", + "id": "14", "metadata": { "tags": [] }, @@ -308,7 +308,7 @@ }, { "cell_type": "markdown", - "id": "cba799a0-62e6-4795-b086-708ea6556504", + "id": "15", "metadata": {}, "source": [ "### JRA-55\n", @@ -321,7 +321,7 @@ { "cell_type": "code", "execution_count": null, - "id": "59084477-1ff6-4744-9146-0acd9172d746", + "id": "16", "metadata": { "tags": [] }, @@ -346,7 +346,7 @@ }, { "cell_type": "markdown", - "id": "c5011372-f958-4175-be0b-af9bebea8daf", + "id": "17", "metadata": {}, "source": [ "## Combine all" @@ -355,7 +355,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c77b9525-6fd1-4776-9243-0116adb297f8", + "id": "18", "metadata": { "tags": [] }, @@ -368,7 +368,7 @@ { "cell_type": "code", "execution_count": null, - "id": "45030be4-2de6-40a4-bad9-af07b40037d6", + "id": "19", "metadata": { "tags": [] }, @@ -385,7 +385,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9d88113e-cc50-40bb-a9e9-088b9e0488eb", + "id": "20", "metadata": { "tags": [] }, @@ -398,7 +398,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f24681dd-f883-46ad-af2d-6d80f0aa8c5c", + "id": "21", "metadata": { "tags": [] }, @@ -428,7 +428,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c055f123-1374-4151-8fa8-795dbad3c41b", + "id": "22", "metadata": { "tags": [] }, @@ -444,7 +444,7 @@ { "cell_type": "code", "execution_count": null, - "id": "a144b9e9-052b-45d4-88ef-8aa36d057dda", + "id": "23", "metadata": { "tags": [] }, @@ -456,7 +456,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fcc7c566-79e3-4044-95a4-ae9e99acd9fa", + "id": "24", "metadata": { "tags": [] }, @@ -468,7 +468,7 @@ { "cell_type": "code", "execution_count": null, - "id": "f257e3ef-5669-487f-b40f-43f72f27004a", + "id": "25", "metadata": {}, "outputs": [], "source": []