Skip to content

Instantly share code, notes, and snippets.

@ScottWales
Created April 22, 2021 04:00
Show Gist options
  • Save ScottWales/7402c7c5cbd96f6bed62f810899b611a to your computer and use it in GitHub Desktop.
Save ScottWales/7402c7c5cbd96f6bed62f810899b611a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Intake ESGF test\n",
"\n",
"Demonstration of sample intake catalogue for esgf datasets in hh5"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import intake"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Loading the catalogue\n",
"\n",
"The sample catalogue is at /g/data/hh5/public/apps/nci-intake-catalogue/catalogue.yaml. If you're using the hh5 conda environment, this can be accessed via Intake's default catalogue list"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"application/json": "catalogue:\n args:\n path: /g/data/hh5/public/apps/nci-intake-catalogue/catalogue.yaml\n description: ''\n driver: intake.catalog.local.YAMLFileCatalog\n metadata:\n version: 1\n",
"text/plain": [
"catalogue:\n",
" args:\n",
" path: /g/data/hh5/public/apps/nci-intake-catalogue/catalogue.yaml\n",
" description: ''\n",
" driver: intake.catalog.local.YAMLFileCatalog\n",
" metadata:\n",
" version: 1\n"
]
},
"metadata": {
"application/json": {
"root": "catalogue"
}
},
"output_type": "display_data"
}
],
"source": [
"intake.cat.nci"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If not using hh5 you can load the catalogue manually"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/json": "catalogue:\n args:\n path: /g/data/hh5/public/apps/nci-intake-catalogue/catalogue.yaml\n description: ''\n driver: intake.catalog.local.YAMLFileCatalog\n metadata:\n version: 1\n",
"text/plain": [
"catalogue:\n",
" args:\n",
" path: /g/data/hh5/public/apps/nci-intake-catalogue/catalogue.yaml\n",
" description: ''\n",
" driver: intake.catalog.local.YAMLFileCatalog\n",
" metadata:\n",
" version: 1\n"
]
},
"metadata": {
"application/json": {
"root": "catalogue"
}
},
"output_type": "display_data"
}
],
"source": [
"intake.open_catalog('/g/data/hh5/public/apps/nci-intake-catalogue/catalogue.yaml')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Inspecting the catalogue\n",
"\n",
"From the catalogue, you can get a list of entries by converting it to a list:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['era5', 'era5_land', 'ecmwf', 'esgf']"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(intake.cat.nci)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The child catalogues are then accessed as attributes of the parent.\n",
"\n",
"You can also get a list of catalogue descriptions in Ipython using `.gui` - however this only shows datasets, not directories"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"\n",
"(function(root) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
"\n",
" if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n",
" root._bokeh_onload_callbacks = [];\n",
" root._bokeh_is_loading = undefined;\n",
" }\n",
"\n",
" if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n",
" root._bokeh_timeout = Date.now() + 5000;\n",
" root._bokeh_failed_load = false;\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" try {\n",
" root._bokeh_onload_callbacks.forEach(function(callback) {\n",
" if (callback != null)\n",
" callback();\n",
" });\n",
" } finally {\n",
" delete root._bokeh_onload_callbacks\n",
" }\n",
" console.debug(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(css_urls, js_urls, callback) {\n",
" if (css_urls == null) css_urls = [];\n",
" if (js_urls == null) js_urls = [];\n",
"\n",
" root._bokeh_onload_callbacks.push(callback);\n",
" if (root._bokeh_is_loading > 0) {\n",
" console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" root._bokeh_is_loading = css_urls.length + js_urls.length;\n",
"\n",
" function on_load() {\n",
" root._bokeh_is_loading--;\n",
" if (root._bokeh_is_loading === 0) {\n",
" console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
" run_callbacks()\n",
" }\n",
" }\n",
"\n",
" function on_error() {\n",
" console.error(\"failed to load \" + url);\n",
" }\n",
"\n",
" for (var i = 0; i < css_urls.length; i++) {\n",
" var url = css_urls[i];\n",
" const element = document.createElement(\"link\");\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.rel = \"stylesheet\";\n",
" element.type = \"text/css\";\n",
" element.href = url;\n",
" console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
" document.body.appendChild(element);\n",
" }\n",
"\n",
" var skip = [];\n",
" if (window.requirejs) {\n",
" require([], function() {\n",
" })\n",
" }\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" if (skip.indexOf(url) >= 0) { on_load(); continue; }\n",
" var element = document.createElement('script');\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.async = false;\n",
" element.src = url;\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.head.appendChild(element);\n",
" }\n",
"\tif (!js_urls.length) {\n",
" on_load()\n",
" }\n",
" };\n",
"\n",
" function inject_raw_css(css) {\n",
" const element = document.createElement(\"style\");\n",
" element.appendChild(document.createTextNode(css));\n",
" document.body.appendChild(element);\n",
" }\n",
"\n",
" var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js\", \"https://unpkg.com/@holoviz/panel@^0.10.3/dist/panel.min.js\"];\n",
" var css_urls = [\"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/dataframe.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/alerts.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/card.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/widgets.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/json.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/markdown.css\"];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" inject_raw_css(\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \");\n",
" },\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" function(Bokeh) {} // ensure no trailing comma for IE\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" if ((root.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i].call(root, root.Bokeh);\n",
" }} else if (Date.now() < root._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!root._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" root._bokeh_failed_load = true;\n",
" }\n",
" }\n",
"\n",
" if (root._bokeh_is_loading === 0) {\n",
" console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(css_urls, js_urls, function() {\n",
" console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
"}(window));"
],
"application/vnd.holoviews_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n var skip = [];\n if (window.requirejs) {\n require([], function() {\n })\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) >= 0) { on_load(); continue; }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n\tif (!js_urls.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js\", \"https://unpkg.com/@holoviz/panel@^0.10.3/dist/panel.min.js\"];\n var css_urls = [\"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/dataframe.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/alerts.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/card.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/widgets.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/json.css\", \"https://unpkg.com/@holoviz/panel@0.10.3/dist/css/markdown.css\"];\n\n var inline_js = [\n function(Bokeh) {\n inject_raw_css(\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \");\n },\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n",
" window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n",
"}\n",
"\n",
"\n",
" function JupyterCommManager() {\n",
" }\n",
"\n",
" JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n",
" if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
" var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
" comm_manager.register_target(comm_id, function(comm) {\n",
" comm.on_msg(msg_handler);\n",
" });\n",
" } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
" window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n",
" comm.onMsg = msg_handler;\n",
" });\n",
" } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
" google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n",
" var messages = comm.messages[Symbol.asyncIterator]();\n",
" function processIteratorResult(result) {\n",
" var message = result.value;\n",
" console.log(message)\n",
" var content = {data: message.data, comm_id};\n",
" var buffers = []\n",
" for (var buffer of message.buffers || []) {\n",
" buffers.push(new DataView(buffer))\n",
" }\n",
" var metadata = message.metadata || {};\n",
" var msg = {content, buffers, metadata}\n",
" msg_handler(msg);\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" return messages.next().then(processIteratorResult);\n",
" })\n",
" }\n",
" }\n",
"\n",
" JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n",
" if (comm_id in window.PyViz.comms) {\n",
" return window.PyViz.comms[comm_id];\n",
" } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",
" var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",
" var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n",
" if (msg_handler) {\n",
" comm.on_msg(msg_handler);\n",
" }\n",
" } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",
" var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n",
" comm.open();\n",
" if (msg_handler) {\n",
" comm.onMsg = msg_handler;\n",
" }\n",
" } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
" var comm_promise = google.colab.kernel.comms.open(comm_id)\n",
" comm_promise.then((comm) => {\n",
" window.PyViz.comms[comm_id] = comm;\n",
" if (msg_handler) {\n",
" var messages = comm.messages[Symbol.asyncIterator]();\n",
" function processIteratorResult(result) {\n",
" var message = result.value;\n",
" var content = {data: message.data};\n",
" var metadata = message.metadata || {comm_id};\n",
" var msg = {content, metadata}\n",
" msg_handler(msg);\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" }) \n",
" var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n",
" return comm_promise.then((comm) => {\n",
" comm.send(data, metadata, buffers, disposeOnDone);\n",
" });\n",
" };\n",
" var comm = {\n",
" send: sendClosure\n",
" };\n",
" }\n",
" window.PyViz.comms[comm_id] = comm;\n",
" return comm;\n",
" }\n",
" window.PyViz.comm_manager = new JupyterCommManager();\n",
" \n",
"\n",
"\n",
"var JS_MIME_TYPE = 'application/javascript';\n",
"var HTML_MIME_TYPE = 'text/html';\n",
"var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n",
"var CLASS_NAME = 'output';\n",
"\n",
"/**\n",
" * Render data to the DOM node\n",
" */\n",
"function render(props, node) {\n",
" var div = document.createElement(\"div\");\n",
" var script = document.createElement(\"script\");\n",
" node.appendChild(div);\n",
" node.appendChild(script);\n",
"}\n",
"\n",
"/**\n",
" * Handle when a new output is added\n",
" */\n",
"function handle_add_output(event, handle) {\n",
" var output_area = handle.output_area;\n",
" var output = handle.output;\n",
" if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
" return\n",
" }\n",
" var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",
" var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
" if (id !== undefined) {\n",
" var nchildren = toinsert.length;\n",
" var html_node = toinsert[nchildren-1].children[0];\n",
" html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",
" var scripts = [];\n",
" var nodelist = html_node.querySelectorAll(\"script\");\n",
" for (var i in nodelist) {\n",
" if (nodelist.hasOwnProperty(i)) {\n",
" scripts.push(nodelist[i])\n",
" }\n",
" }\n",
"\n",
" scripts.forEach( function (oldScript) {\n",
" var newScript = document.createElement(\"script\");\n",
" var attrs = [];\n",
" var nodemap = oldScript.attributes;\n",
" for (var j in nodemap) {\n",
" if (nodemap.hasOwnProperty(j)) {\n",
" attrs.push(nodemap[j])\n",
" }\n",
" }\n",
" attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",
" newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",
" oldScript.parentNode.replaceChild(newScript, oldScript);\n",
" });\n",
" if (JS_MIME_TYPE in output.data) {\n",
" toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",
" }\n",
" output_area._hv_plot_id = id;\n",
" if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",
" window.PyViz.plot_index[id] = Bokeh.index[id];\n",
" } else {\n",
" window.PyViz.plot_index[id] = null;\n",
" }\n",
" } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",
" var bk_div = document.createElement(\"div\");\n",
" bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
" var script_attrs = bk_div.children[0].attributes;\n",
" for (var i = 0; i < script_attrs.length; i++) {\n",
" toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
" }\n",
" // store reference to server id on output_area\n",
" output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
" }\n",
"}\n",
"\n",
"/**\n",
" * Handle when an output is cleared or removed\n",
" */\n",
"function handle_clear_output(event, handle) {\n",
" var id = handle.cell.output_area._hv_plot_id;\n",
" var server_id = handle.cell.output_area._bokeh_server_id;\n",
" if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",
" var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",
" if (server_id !== null) {\n",
" comm.send({event_type: 'server_delete', 'id': server_id});\n",
" return;\n",
" } else if (comm !== null) {\n",
" comm.send({event_type: 'delete', 'id': id});\n",
" }\n",
" delete PyViz.plot_index[id];\n",
" if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",
" var doc = window.Bokeh.index[id].model.document\n",
" doc.clear();\n",
" const i = window.Bokeh.documents.indexOf(doc);\n",
" if (i > -1) {\n",
" window.Bokeh.documents.splice(i, 1);\n",
" }\n",
" }\n",
"}\n",
"\n",
"/**\n",
" * Handle kernel restart event\n",
" */\n",
"function handle_kernel_cleanup(event, handle) {\n",
" delete PyViz.comms[\"hv-extension-comm\"];\n",
" window.PyViz.plot_index = {}\n",
"}\n",
"\n",
"/**\n",
" * Handle update_display_data messages\n",
" */\n",
"function handle_update_output(event, handle) {\n",
" handle_clear_output(event, {cell: {output_area: handle.output_area}})\n",
" handle_add_output(event, handle)\n",
"}\n",
"\n",
"function register_renderer(events, OutputArea) {\n",
" function append_mime(data, metadata, element) {\n",
" // create a DOM node to render to\n",
" var toinsert = this.create_output_subarea(\n",
" metadata,\n",
" CLASS_NAME,\n",
" EXEC_MIME_TYPE\n",
" );\n",
" this.keyboard_manager.register_events(toinsert);\n",
" // Render to node\n",
" var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
" render(props, toinsert[0]);\n",
" element.append(toinsert);\n",
" return toinsert\n",
" }\n",
"\n",
" events.on('output_added.OutputArea', handle_add_output);\n",
" events.on('output_updated.OutputArea', handle_update_output);\n",
" events.on('clear_output.CodeCell', handle_clear_output);\n",
" events.on('delete.Cell', handle_clear_output);\n",
" events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n",
"\n",
" OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",
" safe: true,\n",
" index: 0\n",
" });\n",
"}\n",
"\n",
"if (window.Jupyter !== undefined) {\n",
" try {\n",
" var events = require('base/js/events');\n",
" var OutputArea = require('notebook/js/outputarea').OutputArea;\n",
" if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",
" register_renderer(events, OutputArea);\n",
" }\n",
" } catch(err) {\n",
" }\n",
"}\n"
],
"application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"<div id='1001'>\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" <div class=\"bk-root\" id=\"a36ceb31-c935-4b0d-9780-e7a36eae6efd\" data-root-id=\"1001\"></div>\n",
"</div>\n",
"<script type=\"application/javascript\">(function(root) {\n",
" function embed_document(root) {\n",
" var docs_json = {\"7ea3f427-a06b-4144-8133-6bec47987c50\":{\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1010\"},{\"id\":\"1011\"}],\"margin\":[0,0,0,0],\"name\":\"Controls\"},\"id\":\"1009\",\"type\":\"Row\"},{\"attributes\":{\"children\":[{\"id\":\"1002\"},{\"id\":\"1014\"}],\"margin\":[0,0,0,0],\"name\":\"Column00030\"},\"id\":\"1001\",\"type\":\"Column\"},{\"attributes\":{\"children\":[{\"id\":\"1013\"}],\"css_classes\":[\"scrollable\"],\"height\":240,\"margin\":[0,0,0,0],\"name\":\"Description\",\"sizing_mode\":\"stretch_width\",\"width_policy\":\"max\"},\"id\":\"1012\",\"type\":\"Column\"},{\"attributes\":{\"icon\":null,\"label\":\"\\ud83d\\udcca\",\"margin\":[5,10,5,10],\"min_width\":50,\"width\":50},\"id\":\"1010\",\"type\":\"Toggle\"},{\"attributes\":{\"css_classes\":[\"markdown\"],\"margin\":[5,5,5,5],\"name\":\"Markdown00021\",\"text\":\"&lt;div class=&quot;codehilite&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;cmip5&lt;/span&gt;\\n&lt;span class=&quot;nt&quot;&gt;container&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;xarray&lt;/span&gt;\\n&lt;span class=&quot;nt&quot;&gt;plugin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p p-Indicator&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&amp;#39;esm_datastore&amp;#39;&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;]&lt;/span&gt;\\n&lt;span class=&quot;nt&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;CMIP5 (Latest Versions)&lt;/span&gt;\\n\\n&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;Datasets on Gadi, both publised and replicated. Only the latest available file versions are in the listing, see catalogue &amp;#39;cmip5_all&amp;#39; for all available versions&lt;/span&gt;\\n\\n&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;Catalogue columns match those used by ESGF search (esgf.nci.org.au)&lt;/span&gt;\\n\\n&lt;span class=&quot;nt&quot;&gt;Project&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;al33, rr3&lt;/span&gt;\\n&lt;span class=&quot;nt&quot;&gt;Maintained By&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;NCI&lt;/span&gt;\\n&lt;span class=&quot;nt&quot;&gt;Contact&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;help@nci.org.au&lt;/span&gt;\\n&lt;span class=&quot;nt&quot;&gt;References&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;\\n &lt;span class=&quot;p p-Indicator&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;https://pcmdi.llnl.gov/mips/cmip5/&lt;/span&gt;\\n\\n&lt;span class=&quot;nt&quot;&gt;direct_access&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;forbid&lt;/span&gt;\\n&lt;span class=&quot;nt&quot;&gt;user_parameters&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p p-Indicator&quot;&gt;[]&lt;/span&gt;\\n&lt;span class=&quot;nt&quot;&gt;metadata&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; \\n&lt;span class=&quot;nt&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; \\n &lt;span class=&quot;nt&quot;&gt;esmcol_obj&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p p-Indicator&quot;&gt;{{&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;CATALOG_DIR&lt;/span&gt;&lt;span class=&quot;p p-Indicator&quot;&gt;}}&lt;/span&gt;&lt;span class=&quot;l l-Scalar l-Scalar-Plain&quot;&gt;/cmip5/catalogue_latest.json&lt;/span&gt;\\n&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;\"},\"id\":\"1013\",\"type\":\"panel.models.markup.HTML\"},{\"attributes\":{\"reload\":false},\"id\":\"1016\",\"type\":\"panel.models.location.Location\"},{\"attributes\":{\"children\":[{\"id\":\"1007\"},{\"id\":\"1008\"}],\"margin\":[0,0,0,0],\"name\":\"Select Data Source\"},\"id\":\"1006\",\"type\":\"Column\"},{\"attributes\":{\"disabled\":true,\"icon\":null,\"label\":\"\\u2699\",\"margin\":[5,10,5,10],\"min_width\":50,\"width\":50},\"id\":\"1011\",\"type\":\"Toggle\"},{\"attributes\":{\"margin\":[5,10,5,10],\"min_width\":200,\"options\":[\"cmip5\",\"cmip5_all\",\"cmip6\",\"cmip6_all\",\"cordex\",\"cordex_all\"],\"size\":9,\"value\":[\"cmip5\"],\"width_policy\":\"min\"},\"id\":\"1008\",\"type\":\"MultiSelect\"},{\"attributes\":{\"client_comm_id\":\"cc4ee93dadad4609bbc17d2e9b2e4843\",\"comm_id\":\"c5e239de7bca405f8c8bd9bfef534392\",\"plot_id\":\"1001\"},\"id\":\"1015\",\"type\":\"panel.models.comm_manager.CommManager\"},{\"attributes\":{\"children\":[{\"id\":\"1003\"},{\"id\":\"1004\"}],\"margin\":[0,0,0,0],\"name\":\"Row00029\"},\"id\":\"1002\",\"type\":\"Row\"},{\"attributes\":{\"css_classes\":[\"markdown\"],\"margin\":[5,5,5,5],\"max_height\":40,\"name\":\"Markdown00018\",\"text\":\"&lt;h4&gt;Sources&lt;/h4&gt;\"},\"id\":\"1007\",\"type\":\"panel.models.markup.HTML\"},{\"attributes\":{\"children\":[{\"id\":\"1005\"},{\"id\":\"1012\"}],\"margin\":[0,0,0,0],\"name\":\"Row00028\"},\"id\":\"1004\",\"type\":\"Row\"},{\"attributes\":{\"height\":35,\"margin\":[5,5,5,5],\"name\":\"PNG00025\",\"text\":\"&lt;img src=&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAjCAYAAADrJzjpAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAEJUlEQVRYCe2Xx4tUQRDG16yYMO+uCVFUTHjQi3jxKqLgP+HVs4rgSQ/+FV6MmFDMBzHnuKaDLi7qKuLFnP1+8/pbirczb2dGNxws+Lq6uqurv1evXk9PQ0N9MigtWyH9S/gt/EiafjngZ9916iOOk1k1tP1r8O1Trv+J9/TrGFjFhn4r1G0/Ae0x7HrE69AGcRFsvoVCqYZ4DOLgP1PUOFe4UW7S69DEdFzcYh+7rDhzZSc1yHw5H04Q5Humam693jofYEB+IG/7lZUb95Ov1+RaoV3gIViD/io0C8sFxvCvFE9THZnE55bwWBgqOPskoVG4KmwSvgmOq2714kzP1JJrAsQqIb7ySj4eL/IlOcsExPtnVo3t4OQ/WfqUwOZfBLJBhnjVJlSLZh3rwecU4770EgGhVIreXsmh5Fmm4VeNwATbK5wRXguLBISMdFmLJc/ODWsBH/kQ4aKwW9givBV4iLpiexEk2wSySZa2CieTzUOxcS2Zjr68Ney7wmbhTbJ5A6sFhKwXZr7klRqTXij7pUDw90nvlB4uHE82mxfVbCQa+3zY2E8EPsiNyf6YNElZJSBV1bpJz9OCdwLBHexwCDJCfWe+VvIm/UgxZgiW7eqwn2ue/so0aV7J7Kz8dE2aOiewmI8RfVuYJlg4yk4IzFVTNrwZk36ofj4WiYn7PZO9WEDMK7MqtH46iJ0WCOYstKo/S7DwYR0TqiFv0i3yn+oA0iOFs0LchxKaLiDmk1ldtL4nD5OfS+KT+gR/KswWLJA/KhSRN2lOiyleKB1JuyRjCZlHWNJ114tiSTh4q5bPCSHwPSLkycfyuKf55rBmlPouR8eFtDPt/cOS6rteHEvCmzxXmLkhFBc216lrng+Xh+HIaxIso9W5IDDneA/Udwl5Xw3VLw7Cr+hRgc1cNm3qcwJZIH9QwMflwUfdKFjGqMMPTiTdItsl5P3s/1fawSDvknCmID8/RIf8PgFi14VJggXSl4RImhLqFtLe1OTRLgmTf6GxBXaU5qPbJsQTaKzsK0IkTQm57h1fQ/9eHJysHhIg4bJ5pT5XBCR/7o7XmG+Yftg7GnMJOS5ru028CefrASGSb5ftHw2uBshEgZKJmeY+3qOktV9JTJ7M7hcieTK/tOSVnSQ30rwzfVO2695xknvPKG/K7c0fo8uGo3KNcF7goT4kzUNMEBCvz6webr055PcIkPQxSB98SZoap9YRr8usXmojCf4MQJYfHu7qfghOk3ECEv2zkV5sI5ld4hEzfVk2RyES/bKRPtBGUjvEB/LUOD86SJzPRvpQa3LcKjcIvnPzi9vnhfM9St6Oc3X3OQ26Q4jr2Fxt/7k4uDdCU5vejB8YjxVtbh+vw9djjsEY88SvJPaNHKIvMfEpihH96+6zUV7KjeV9ytkQ7pA/TXKLPl8vNeQAAAAASUVORK5CYII=&quot; width=&quot;46px&quot; height=&quot;35px&quot; alt=&quot;&quot;&gt;&lt;/img&gt;\",\"width\":46},\"id\":\"1003\",\"type\":\"panel.models.markup.HTML\"},{\"attributes\":{\"margin\":[0,0,0,0],\"name\":\"Plot\",\"width_policy\":\"max\"},\"id\":\"1014\",\"type\":\"Column\"},{\"attributes\":{\"children\":[{\"id\":\"1006\"},{\"id\":\"1009\"}],\"margin\":[0,0,0,0],\"name\":\"Column00027\"},\"id\":\"1005\",\"type\":\"Column\"}],\"root_ids\":[\"1001\",\"1015\",\"1016\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.3\"}};\n",
" var render_items = [{\"docid\":\"7ea3f427-a06b-4144-8133-6bec47987c50\",\"root_ids\":[\"1001\"],\"roots\":{\"1001\":\"a36ceb31-c935-4b0d-9780-e7a36eae6efd\"}}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
" }\n",
" if (root.Bokeh !== undefined && root.Bokeh.Panel !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (root.Bokeh !== undefined && root.Bokeh.Panel !== undefined) {\n",
" clearInterval(timer);\n",
" embed_document(root);\n",
" } else if (document.readyState == \"complete\") {\n",
" attempts++;\n",
" if (attempts > 100) {\n",
" clearInterval(timer);\n",
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n",
" }\n",
" }\n",
" }, 10, root)\n",
" }\n",
"})(window);</script>"
],
"text/plain": [
"Column\n",
" [0] Row\n",
" [0] PNG(str)\n",
" [1] Row\n",
" [0] Column\n",
" [0] Column(name='Select Data Source')\n",
" [0] Markdown(str, max_height=40)\n",
" [1] MultiSelect(min_width=200, options=OrderedDict([('cmip5', ...]), size=9, value=[name: cmip5\n",
"container: xa...], width_policy='min')\n",
" [1] Row(name='Controls')\n",
" [0] Toggle(name='📊', width=50)\n",
" [1] Toggle(disabled=True, name='⚙', width=50)\n",
" [1] Column(height=240, name='Description', scroll=True, sizing_mode='stretch_width', width_policy='max')\n",
" [0] Markdown(str)\n",
" [1] Column(name='Plot', width_policy='max')"
]
},
"execution_count": 5,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "1001"
}
},
"output_type": "execute_result"
}
],
"source": [
"intake.cat.nci.esgf.gui"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Selecting the cordex catalogue, we get a list of the available filters and how many options there are"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<p><strong>cordex catalog with 11462 dataset(s) from 636562 asset(s)</strong>:</p> <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>unique</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>project</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>product</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>domain</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>institute</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>driving_model</th>\n",
" <td>35</td>\n",
" </tr>\n",
" <tr>\n",
" <th>experiment</th>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ensemble</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rcm_name</th>\n",
" <td>8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rcm_version</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>time_frequency</th>\n",
" <td>6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>variable</th>\n",
" <td>86</td>\n",
" </tr>\n",
" <tr>\n",
" <th>date_range</th>\n",
" <td>1137</td>\n",
" </tr>\n",
" <tr>\n",
" <th>path</th>\n",
" <td>636562</td>\n",
" </tr>\n",
" <tr>\n",
" <th>version</th>\n",
" <td>10</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cordex = intake.cat.nci.esgf.cordex\n",
"cordex"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There's a little bit of metadata available, e.g. the dataset description:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CORDEX (Latest Versions)\n",
"\n",
"Datasets on Gadi, both publised and replicated. Only the latest available file versions are in the listing, see catalogue 'cordex_all' for only the latest versions\n",
"\n",
"Catalogue columns match those used by ESGF search (esgf.nci.org.au)\n",
"\n",
"Project: al33, rr3\n",
"Maintained By: NCI\n",
"Contact: help@nci.org.au\n",
"References:\n",
" - https://cordex.org/\n",
"\n"
]
}
],
"source": [
"print(cordex.description)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Searching\n",
"\n",
"Searching a ESM catalogue returns a new catalogue with only the matching values"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<p><strong>cordex catalog with 6 dataset(s) from 66 asset(s)</strong>:</p> <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>unique</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>project</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>product</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>domain</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>institute</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>driving_model</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>experiment</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ensemble</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rcm_name</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rcm_version</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>time_frequency</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>variable</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>date_range</th>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>path</th>\n",
" <td>66</td>\n",
" </tr>\n",
" <tr>\n",
" <th>version</th>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"unsw_day_tas_aus44i = cordex.search(institute='UNSW', time_frequency='day', variable='tas', domain='AUS-44i')\n",
"unsw_day_tas_aus44i"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can get a list of available values for the filters with `.unique()`"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'rcm_name': {'count': 3, 'values': ['WRF360J', 'WRF360K', 'WRF360L']}}"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unsw_day_tas_aus44i.unique('rcm_name')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A list of all the matching datasets is available as `.keys()` - I've set up the sample catalogue so the keys this returns match the dataset IDs from ESGF"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-0.historical.r1i1p1.WRF360J.v1.day.tas.v20180614',\n",
" 'cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-0.historical.r1i1p1.WRF360K.v1.day.tas.v20180614',\n",
" 'cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-0.historical.r1i1p1.WRF360L.v1.day.tas.v20180614',\n",
" 'cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-3.historical.r1i1p1.WRF360J.v1.day.tas.v20180614',\n",
" 'cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-3.historical.r1i1p1.WRF360K.v1.day.tas.v20180614',\n",
" 'cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-3.historical.r1i1p1.WRF360L.v1.day.tas.v20180614']\n"
]
}
],
"source": [
"from pprint import pp\n",
"pp(list(unsw_day_tas_aus44i.keys()))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Getting the datasets\n",
"\n",
"There are a few ways to get to a dataset from here - you can index the catalogue as a dictionary and call `.to_dask()`"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2 {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.Dataset&gt;\n",
"Dimensions: (bnds: 2, lat: 133, lon: 238, time: 20089)\n",
"Coordinates:\n",
" * lon (lon) float64 88.75 89.25 89.75 90.25 ... -153.8 -153.2 -152.8\n",
" * lat (lat) float64 -53.25 -52.75 -52.25 -51.75 ... 11.75 12.25 12.75\n",
" * time (time) datetime64[ns] 1951-01-01T12:00:00 ... 2005-12-31T12:00:00\n",
" height float64 2.0\n",
"Dimensions without coordinates: bnds\n",
"Data variables:\n",
" time_bnds (time, bnds) datetime64[ns] dask.array&lt;chunksize=(1826, 2), meta=np.ndarray&gt;\n",
" tas (time, lat, lon) float32 dask.array&lt;chunksize=(1826, 133, 238), meta=np.ndarray&gt;\n",
"Attributes: (12/29)\n",
" postprocessing_version: 1.0\n",
" intake_esm_varname: [&#x27;tas&#x27;]\n",
" experiment: ACCESS1.0 historical run\n",
" CORDEX_domain: AUS-44i\n",
" model_id: UNSW-WRF360L\n",
" driving_model_id: CSIRO-BOM-ACCESS1-0\n",
" ... ...\n",
" experiment_id: historical\n",
" product: output\n",
" wrf_schemes_ra_sw_physics: CAM; Collins et al. (2004, NCAR)\n",
" Conventions: CF-1.4\n",
" wrf_schemes_sf_surface_physics: Noah; Chen and Dudhia (2001, MWR)\n",
" intake_esm_dataset_key: cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACC...</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-3d80eeaa-8621-4048-8bef-3bd7bb790402' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-3d80eeaa-8621-4048-8bef-3bd7bb790402' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>bnds</span>: 2</li><li><span class='xr-has-index'>lat</span>: 133</li><li><span class='xr-has-index'>lon</span>: 238</li><li><span class='xr-has-index'>time</span>: 20089</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-d05c6c8b-8467-4923-bad8-78018c756319' class='xr-section-summary-in' type='checkbox' checked><label for='section-d05c6c8b-8467-4923-bad8-78018c756319' class='xr-section-summary' >Coordinates: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lon</span></div><div class='xr-var-dims'>(lon)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>88.75 89.25 89.75 ... -153.2 -152.8</div><input id='attrs-0cad62ea-e727-496f-9c33-9af614903e5a' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-0cad62ea-e727-496f-9c33-9af614903e5a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c27a4b71-1365-4cf3-9ad9-c1fe57f5303b' class='xr-var-data-in' type='checkbox'><label for='data-c27a4b71-1365-4cf3-9ad9-c1fe57f5303b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>long_name :</span></dt><dd>Longitude</dd><dt><span>units :</span></dt><dd>degrees_east</dd><dt><span>axis :</span></dt><dd>X</dd></dl></div><div class='xr-var-data'><pre>array([ 88.75, 89.25, 89.75, ..., -153.75, -153.25, -152.75])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lat</span></div><div class='xr-var-dims'>(lat)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-53.25 -52.75 ... 12.25 12.75</div><input id='attrs-603c7f1e-2ce7-4b89-9d97-070e9eaf7cf4' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-603c7f1e-2ce7-4b89-9d97-070e9eaf7cf4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-59817cde-3fde-4657-a7ce-527141406a83' class='xr-var-data-in' type='checkbox'><label for='data-59817cde-3fde-4657-a7ce-527141406a83' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>long_name :</span></dt><dd>Latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd><dt><span>axis :</span></dt><dd>Y</dd></dl></div><div class='xr-var-data'><pre>array([-53.25, -52.75, -52.25, -51.75, -51.25, -50.75, -50.25, -49.75, -49.25,\n",
" -48.75, -48.25, -47.75, -47.25, -46.75, -46.25, -45.75, -45.25, -44.75,\n",
" -44.25, -43.75, -43.25, -42.75, -42.25, -41.75, -41.25, -40.75, -40.25,\n",
" -39.75, -39.25, -38.75, -38.25, -37.75, -37.25, -36.75, -36.25, -35.75,\n",
" -35.25, -34.75, -34.25, -33.75, -33.25, -32.75, -32.25, -31.75, -31.25,\n",
" -30.75, -30.25, -29.75, -29.25, -28.75, -28.25, -27.75, -27.25, -26.75,\n",
" -26.25, -25.75, -25.25, -24.75, -24.25, -23.75, -23.25, -22.75, -22.25,\n",
" -21.75, -21.25, -20.75, -20.25, -19.75, -19.25, -18.75, -18.25, -17.75,\n",
" -17.25, -16.75, -16.25, -15.75, -15.25, -14.75, -14.25, -13.75, -13.25,\n",
" -12.75, -12.25, -11.75, -11.25, -10.75, -10.25, -9.75, -9.25, -8.75,\n",
" -8.25, -7.75, -7.25, -6.75, -6.25, -5.75, -5.25, -4.75, -4.25,\n",
" -3.75, -3.25, -2.75, -2.25, -1.75, -1.25, -0.75, -0.25, 0.25,\n",
" 0.75, 1.25, 1.75, 2.25, 2.75, 3.25, 3.75, 4.25, 4.75,\n",
" 5.25, 5.75, 6.25, 6.75, 7.25, 7.75, 8.25, 8.75, 9.25,\n",
" 9.75, 10.25, 10.75, 11.25, 11.75, 12.25, 12.75])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>1951-01-01T12:00:00 ... 2005-12-...</div><input id='attrs-5aae6cb3-40aa-49c4-91c0-d76372899416' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5aae6cb3-40aa-49c4-91c0-d76372899416' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-bcf6a86e-22d9-478e-a35c-c8eea266cf94' class='xr-var-data-in' type='checkbox'><label for='data-bcf6a86e-22d9-478e-a35c-c8eea266cf94' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>time</dd><dt><span>long_name :</span></dt><dd>time</dd><dt><span>bounds :</span></dt><dd>time_bnds</dd></dl></div><div class='xr-var-data'><pre>array([&#x27;1951-01-01T12:00:00.000000000&#x27;, &#x27;1951-01-02T12:00:00.000000000&#x27;,\n",
" &#x27;1951-01-03T12:00:00.000000000&#x27;, ..., &#x27;2005-12-29T12:00:00.000000000&#x27;,\n",
" &#x27;2005-12-30T12:00:00.000000000&#x27;, &#x27;2005-12-31T12:00:00.000000000&#x27;],\n",
" dtype=&#x27;datetime64[ns]&#x27;)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>height</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>2.0</div><input id='attrs-13532f8b-7355-40b6-9d01-4eee12bd823b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-13532f8b-7355-40b6-9d01-4eee12bd823b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-94e5add6-7962-4ed3-83f0-23b6b4e9c974' class='xr-var-data-in' type='checkbox'><label for='data-94e5add6-7962-4ed3-83f0-23b6b4e9c974' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>height</dd><dt><span>long_name :</span></dt><dd>height</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>positive :</span></dt><dd>up</dd><dt><span>axis :</span></dt><dd>Z</dd></dl></div><div class='xr-var-data'><pre>array(2.)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-c8079205-26dd-40dc-8a6b-d5c707ce5752' class='xr-section-summary-in' type='checkbox' checked><label for='section-c8079205-26dd-40dc-8a6b-d5c707ce5752' class='xr-section-summary' >Data variables: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>time_bnds</span></div><div class='xr-var-dims'>(time, bnds)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(1826, 2), meta=np.ndarray&gt;</div><input id='attrs-c7d2de4b-6685-454e-9d87-bd5e571ea184' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c7d2de4b-6685-454e-9d87-bd5e571ea184' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-659ce485-db47-4b23-b5db-486842e86190' class='xr-var-data-in' type='checkbox'><label for='data-659ce485-db47-4b23-b5db-486842e86190' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n",
"<tr>\n",
"<td>\n",
"<table>\n",
" <thead>\n",
" <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th> Bytes </th><td> 321.42 kB </td> <td> 29.23 kB </td></tr>\n",
" <tr><th> Shape </th><td> (20089, 2) </td> <td> (1827, 2) </td></tr>\n",
" <tr><th> Count </th><td> 33 Tasks </td><td> 11 Chunks </td></tr>\n",
" <tr><th> Type </th><td> datetime64[ns] </td><td> numpy.ndarray </td></tr>\n",
" </tbody>\n",
"</table>\n",
"</td>\n",
"<td>\n",
"<svg width=\"75\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"0\" y1=\"10\" x2=\"25\" y2=\"10\" />\n",
" <line x1=\"0\" y1=\"21\" x2=\"25\" y2=\"21\" />\n",
" <line x1=\"0\" y1=\"32\" x2=\"25\" y2=\"32\" />\n",
" <line x1=\"0\" y1=\"43\" x2=\"25\" y2=\"43\" />\n",
" <line x1=\"0\" y1=\"54\" x2=\"25\" y2=\"54\" />\n",
" <line x1=\"0\" y1=\"65\" x2=\"25\" y2=\"65\" />\n",
" <line x1=\"0\" y1=\"76\" x2=\"25\" y2=\"76\" />\n",
" <line x1=\"0\" y1=\"87\" x2=\"25\" y2=\"87\" />\n",
" <line x1=\"0\" y1=\"98\" x2=\"25\" y2=\"98\" />\n",
" <line x1=\"0\" y1=\"109\" x2=\"25\" y2=\"109\" />\n",
" <line x1=\"0\" y1=\"120\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n",
" <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"0.0,0.0 25.412616514582485,0.0 25.412616514582485,120.0 0.0,120.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"12.706308\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n",
" <text x=\"45.412617\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,45.412617,60.000000)\">20089</text>\n",
"</svg>\n",
"</td>\n",
"</tr>\n",
"</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>tas</span></div><div class='xr-var-dims'>(time, lat, lon)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(1826, 133, 238), meta=np.ndarray&gt;</div><input id='attrs-65dd26ec-a2ff-4287-9bd3-be2c244d14bb' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-65dd26ec-a2ff-4287-9bd3-be2c244d14bb' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-85c0afea-731a-4d61-928e-91473a436ca2' class='xr-var-data-in' type='checkbox'><label for='data-85c0afea-731a-4d61-928e-91473a436ca2' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Near-Surface Air Temperature</dd><dt><span>standard_name :</span></dt><dd>air_temperature</dd><dt><span>cell_methods :</span></dt><dd>time: mean</dd><dt><span>units :</span></dt><dd>K</dd></dl></div><div class='xr-var-data'><table>\n",
"<tr>\n",
"<td>\n",
"<table>\n",
" <thead>\n",
" <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th> Bytes </th><td> 2.54 GB </td> <td> 231.33 MB </td></tr>\n",
" <tr><th> Shape </th><td> (20089, 133, 238) </td> <td> (1827, 133, 238) </td></tr>\n",
" <tr><th> Count </th><td> 33 Tasks </td><td> 11 Chunks </td></tr>\n",
" <tr><th> Type </th><td> float32 </td><td> numpy.ndarray </td></tr>\n",
" </tbody>\n",
"</table>\n",
"</td>\n",
"<td>\n",
"<svg width=\"156\" height=\"146\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"10\" y1=\"25\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"25\" style=\"stroke-width:2\" />\n",
" <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"31\" />\n",
" <line x1=\"22\" y1=\"12\" x2=\"22\" y2=\"38\" />\n",
" <line x1=\"29\" y1=\"19\" x2=\"29\" y2=\"44\" />\n",
" <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"51\" />\n",
" <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"57\" />\n",
" <line x1=\"48\" y1=\"38\" x2=\"48\" y2=\"63\" />\n",
" <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"70\" />\n",
" <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"76\" />\n",
" <line x1=\"67\" y1=\"57\" x2=\"67\" y2=\"83\" />\n",
" <line x1=\"74\" y1=\"64\" x2=\"74\" y2=\"89\" />\n",
" <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,96.00085180870013 10.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"36\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"16\" y1=\"6\" x2=\"42\" y2=\"6\" />\n",
" <line x1=\"22\" y1=\"12\" x2=\"49\" y2=\"12\" />\n",
" <line x1=\"29\" y1=\"19\" x2=\"55\" y2=\"19\" />\n",
" <line x1=\"35\" y1=\"25\" x2=\"61\" y2=\"25\" />\n",
" <line x1=\"42\" y1=\"32\" x2=\"68\" y2=\"32\" />\n",
" <line x1=\"48\" y1=\"38\" x2=\"74\" y2=\"38\" />\n",
" <line x1=\"54\" y1=\"44\" x2=\"81\" y2=\"44\" />\n",
" <line x1=\"61\" y1=\"51\" x2=\"87\" y2=\"51\" />\n",
" <line x1=\"67\" y1=\"57\" x2=\"93\" y2=\"57\" />\n",
" <line x1=\"74\" y1=\"64\" x2=\"100\" y2=\"64\" />\n",
" <line x1=\"80\" y1=\"70\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"36\" y1=\"0\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"10.0,0.0 36.242557076454275,0.0 106.83079237057193,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"80\" y1=\"70\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"80\" y1=\"96\" x2=\"106\" y2=\"96\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n",
" <line x1=\"106\" y1=\"70\" x2=\"106\" y2=\"96\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"80.58823529411765,70.58823529411765 106.83079237057193,70.58823529411765 106.83079237057193,96.00085180870013 80.58823529411765,96.00085180870013\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"93.709514\" y=\"116.000852\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >238</text>\n",
" <text x=\"126.830792\" y=\"83.294544\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,126.830792,83.294544)\">133</text>\n",
" <text x=\"35.294118\" y=\"80.706734\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,80.706734)\">20089</text>\n",
"</svg>\n",
"</td>\n",
"</tr>\n",
"</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-440ddd69-c287-4252-9ef8-2809d0297228' class='xr-section-summary-in' type='checkbox' ><label for='section-440ddd69-c287-4252-9ef8-2809d0297228' class='xr-section-summary' >Attributes: <span>(29)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>postprocessing_version :</span></dt><dd>1.0</dd><dt><span>intake_esm_varname :</span></dt><dd>[&#x27;tas&#x27;]</dd><dt><span>experiment :</span></dt><dd>ACCESS1.0 historical run</dd><dt><span>CORDEX_domain :</span></dt><dd>AUS-44i</dd><dt><span>model_id :</span></dt><dd>UNSW-WRF360L</dd><dt><span>driving_model_id :</span></dt><dd>CSIRO-BOM-ACCESS1-0</dd><dt><span>wrf_schemes_ra_lw_physics :</span></dt><dd>CAM; Collins et al. (2004, NCAR)</dd><dt><span>references :</span></dt><dd>http://www.ccrc.unsw.edu.au</dd><dt><span>creation_date :</span></dt><dd>2017-08-05 10:41:25 Z</dd><dt><span>comment :</span></dt><dd>CCRC version of WRF3.6, locally known as WRF3.6.0.5. It includes time varying forcings</dd><dt><span>contact :</span></dt><dd>Jason Evans (jason.evans@unsw.edu.au), Roman Olson (roman.olson@unsw.edu.au), Daniel Argueso (d.argueso@unsw.edu.au), Alejandro Di Luca (a.diluca@unsw.edu.au), Giovanni Di Virgilio (giovanni@unsw.edu.au)</dd><dt><span>institute_id :</span></dt><dd>UNSW</dd><dt><span>driving_model_ensemble_member :</span></dt><dd>r1i1p1</dd><dt><span>wrf_schemes_cu_physics :</span></dt><dd>Kain-Fritsch; Kain (2004, JAM)</dd><dt><span>driving_experiment_name :</span></dt><dd>historical</dd><dt><span>wrf_options :</span></dt><dd>sst_update &amp; tmn_update</dd><dt><span>project_id :</span></dt><dd>CORDEX</dd><dt><span>institution :</span></dt><dd>UNSW Australia</dd><dt><span>frequency :</span></dt><dd>day</dd><dt><span>history :</span></dt><dd>Interpolated from the original variable in the native grid to the regular lat/lon grid using a nearest neighbor interpolation method</dd><dt><span>wrf_schemes_sf_sfclay_physics :</span></dt><dd>Old_MM5; Paulson (1970, JAM), Dyer and Hicks (1970, QJRMS), and Webb (1970, QJRMS)</dd><dt><span>wrf_schemes_bl_pbl_physics :</span></dt><dd>YSU; Hong, Noh and Dudhia (2006, MWR)</dd><dt><span>rcm_version_id :</span></dt><dd>v1</dd><dt><span>experiment_id :</span></dt><dd>historical</dd><dt><span>product :</span></dt><dd>output</dd><dt><span>wrf_schemes_ra_sw_physics :</span></dt><dd>CAM; Collins et al. (2004, NCAR)</dd><dt><span>Conventions :</span></dt><dd>CF-1.4</dd><dt><span>wrf_schemes_sf_surface_physics :</span></dt><dd>Noah; Chen and Dudhia (2001, MWR)</dd><dt><span>intake_esm_dataset_key :</span></dt><dd>cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-0.historical.r1i1p1.WRF360L.v1.day.tas.v20180614</dd></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (bnds: 2, lat: 133, lon: 238, time: 20089)\n",
"Coordinates:\n",
" * lon (lon) float64 88.75 89.25 89.75 90.25 ... -153.8 -153.2 -152.8\n",
" * lat (lat) float64 -53.25 -52.75 -52.25 -51.75 ... 11.75 12.25 12.75\n",
" * time (time) datetime64[ns] 1951-01-01T12:00:00 ... 2005-12-31T12:00:00\n",
" height float64 2.0\n",
"Dimensions without coordinates: bnds\n",
"Data variables:\n",
" time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(1826, 2), meta=np.ndarray>\n",
" tas (time, lat, lon) float32 dask.array<chunksize=(1826, 133, 238), meta=np.ndarray>\n",
"Attributes: (12/29)\n",
" postprocessing_version: 1.0\n",
" intake_esm_varname: ['tas']\n",
" experiment: ACCESS1.0 historical run\n",
" CORDEX_domain: AUS-44i\n",
" model_id: UNSW-WRF360L\n",
" driving_model_id: CSIRO-BOM-ACCESS1-0\n",
" ... ...\n",
" experiment_id: historical\n",
" product: output\n",
" wrf_schemes_ra_sw_physics: CAM; Collins et al. (2004, NCAR)\n",
" Conventions: CF-1.4\n",
" wrf_schemes_sf_surface_physics: Noah; Chen and Dudhia (2001, MWR)\n",
" intake_esm_dataset_key: cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACC..."
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unsw_day_tas_aus44i['cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-0.historical.r1i1p1.WRF360L.v1.day.tas.v20180614'].to_dask()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"or you can call to_dataset_dict(), which converts a catalogue into a dictionary of datasets. This lets you give options like chunk sizes"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"--> The keys in the returned dictionary of datasets are constructed as follows:\n",
"\t'project.product.domain.institute.driving_model.experiment.ensemble.rcm_name.rcm_version.time_frequency.variable.version'\n"
]
},
{
"data": {
"text/html": [
"\n",
" <div>\n",
" <style>\n",
" /* Turns off some styling */\n",
" progress {\n",
" /* gets rid of default border in Firefox and Opera. */\n",
" border: none;\n",
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
" background-size: auto;\n",
" }\n",
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
" background: #F44336;\n",
" }\n",
" </style>\n",
" <progress value='6' class='' max='6' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
" 100.00% [6/6 00:01<00:00]\n",
" </div>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2 {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'>&lt;xarray.Dataset&gt;\n",
"Dimensions: (bnds: 2, lat: 133, lon: 238, time: 20089)\n",
"Coordinates:\n",
" * lon (lon) float64 88.75 89.25 89.75 90.25 ... -153.8 -153.2 -152.8\n",
" * lat (lat) float64 -53.25 -52.75 -52.25 -51.75 ... 11.75 12.25 12.75\n",
" * time (time) datetime64[ns] 1951-01-01T12:00:00 ... 2005-12-31T12:00:00\n",
" height float64 2.0\n",
"Dimensions without coordinates: bnds\n",
"Data variables:\n",
" time_bnds (time, bnds) datetime64[ns] dask.array&lt;chunksize=(1826, 2), meta=np.ndarray&gt;\n",
" tas (time, lat, lon) float32 dask.array&lt;chunksize=(1826, 133, 119), meta=np.ndarray&gt;\n",
"Attributes: (12/29)\n",
" postprocessing_version: 1.0\n",
" intake_esm_varname: [&#x27;tas&#x27;]\n",
" experiment: ACCESS1.0 historical run\n",
" CORDEX_domain: AUS-44i\n",
" model_id: UNSW-WRF360L\n",
" driving_model_id: CSIRO-BOM-ACCESS1-0\n",
" ... ...\n",
" experiment_id: historical\n",
" product: output\n",
" wrf_schemes_ra_sw_physics: CAM; Collins et al. (2004, NCAR)\n",
" Conventions: CF-1.4\n",
" wrf_schemes_sf_surface_physics: Noah; Chen and Dudhia (2001, MWR)\n",
" intake_esm_dataset_key: cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACC...</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-859bd66b-3f39-4806-8fd2-0a5264c6324b' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-859bd66b-3f39-4806-8fd2-0a5264c6324b' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>bnds</span>: 2</li><li><span class='xr-has-index'>lat</span>: 133</li><li><span class='xr-has-index'>lon</span>: 238</li><li><span class='xr-has-index'>time</span>: 20089</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-eee8413b-482d-4a50-b958-0919963ffdfe' class='xr-section-summary-in' type='checkbox' checked><label for='section-eee8413b-482d-4a50-b958-0919963ffdfe' class='xr-section-summary' >Coordinates: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lon</span></div><div class='xr-var-dims'>(lon)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>88.75 89.25 89.75 ... -153.2 -152.8</div><input id='attrs-2453f309-4fab-4515-af12-13cd1a43d92a' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-2453f309-4fab-4515-af12-13cd1a43d92a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e56503ca-6c00-41e5-af24-6a48e862a63d' class='xr-var-data-in' type='checkbox'><label for='data-e56503ca-6c00-41e5-af24-6a48e862a63d' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>long_name :</span></dt><dd>Longitude</dd><dt><span>units :</span></dt><dd>degrees_east</dd><dt><span>axis :</span></dt><dd>X</dd></dl></div><div class='xr-var-data'><pre>array([ 88.75, 89.25, 89.75, ..., -153.75, -153.25, -152.75])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>lat</span></div><div class='xr-var-dims'>(lat)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-53.25 -52.75 ... 12.25 12.75</div><input id='attrs-e0e5ea3e-008c-4c5c-b85d-e468e465f9a4' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-e0e5ea3e-008c-4c5c-b85d-e468e465f9a4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fa2c6b0f-9152-475b-9423-b6344839c215' class='xr-var-data-in' type='checkbox'><label for='data-fa2c6b0f-9152-475b-9423-b6344839c215' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>long_name :</span></dt><dd>Latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd><dt><span>axis :</span></dt><dd>Y</dd></dl></div><div class='xr-var-data'><pre>array([-53.25, -52.75, -52.25, -51.75, -51.25, -50.75, -50.25, -49.75, -49.25,\n",
" -48.75, -48.25, -47.75, -47.25, -46.75, -46.25, -45.75, -45.25, -44.75,\n",
" -44.25, -43.75, -43.25, -42.75, -42.25, -41.75, -41.25, -40.75, -40.25,\n",
" -39.75, -39.25, -38.75, -38.25, -37.75, -37.25, -36.75, -36.25, -35.75,\n",
" -35.25, -34.75, -34.25, -33.75, -33.25, -32.75, -32.25, -31.75, -31.25,\n",
" -30.75, -30.25, -29.75, -29.25, -28.75, -28.25, -27.75, -27.25, -26.75,\n",
" -26.25, -25.75, -25.25, -24.75, -24.25, -23.75, -23.25, -22.75, -22.25,\n",
" -21.75, -21.25, -20.75, -20.25, -19.75, -19.25, -18.75, -18.25, -17.75,\n",
" -17.25, -16.75, -16.25, -15.75, -15.25, -14.75, -14.25, -13.75, -13.25,\n",
" -12.75, -12.25, -11.75, -11.25, -10.75, -10.25, -9.75, -9.25, -8.75,\n",
" -8.25, -7.75, -7.25, -6.75, -6.25, -5.75, -5.25, -4.75, -4.25,\n",
" -3.75, -3.25, -2.75, -2.25, -1.75, -1.25, -0.75, -0.25, 0.25,\n",
" 0.75, 1.25, 1.75, 2.25, 2.75, 3.25, 3.75, 4.25, 4.75,\n",
" 5.25, 5.75, 6.25, 6.75, 7.25, 7.75, 8.25, 8.75, 9.25,\n",
" 9.75, 10.25, 10.75, 11.25, 11.75, 12.25, 12.75])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>1951-01-01T12:00:00 ... 2005-12-...</div><input id='attrs-602b8667-302f-4103-8187-c833ab7f646c' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-602b8667-302f-4103-8187-c833ab7f646c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-36f31f34-4d03-4427-b751-0298ecb13162' class='xr-var-data-in' type='checkbox'><label for='data-36f31f34-4d03-4427-b751-0298ecb13162' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>time</dd><dt><span>long_name :</span></dt><dd>time</dd><dt><span>bounds :</span></dt><dd>time_bnds</dd></dl></div><div class='xr-var-data'><pre>array([&#x27;1951-01-01T12:00:00.000000000&#x27;, &#x27;1951-01-02T12:00:00.000000000&#x27;,\n",
" &#x27;1951-01-03T12:00:00.000000000&#x27;, ..., &#x27;2005-12-29T12:00:00.000000000&#x27;,\n",
" &#x27;2005-12-30T12:00:00.000000000&#x27;, &#x27;2005-12-31T12:00:00.000000000&#x27;],\n",
" dtype=&#x27;datetime64[ns]&#x27;)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>height</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>2.0</div><input id='attrs-a59dc582-4508-4815-960c-2f86a146e07c' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-a59dc582-4508-4815-960c-2f86a146e07c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-5ade23e8-e9fb-464e-9ffc-a27a85bc966e' class='xr-var-data-in' type='checkbox'><label for='data-5ade23e8-e9fb-464e-9ffc-a27a85bc966e' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>standard_name :</span></dt><dd>height</dd><dt><span>long_name :</span></dt><dd>height</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>positive :</span></dt><dd>up</dd><dt><span>axis :</span></dt><dd>Z</dd></dl></div><div class='xr-var-data'><pre>array(2.)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-9e1f429a-067e-4cbc-b9f0-f4c998fc0014' class='xr-section-summary-in' type='checkbox' checked><label for='section-9e1f429a-067e-4cbc-b9f0-f4c998fc0014' class='xr-section-summary' >Data variables: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>time_bnds</span></div><div class='xr-var-dims'>(time, bnds)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(1826, 2), meta=np.ndarray&gt;</div><input id='attrs-276b81cd-01ca-4bff-8d57-c40b7ab12f3b' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-276b81cd-01ca-4bff-8d57-c40b7ab12f3b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2fbaa361-cb6d-4d56-8b8e-e2106c98292f' class='xr-var-data-in' type='checkbox'><label for='data-2fbaa361-cb6d-4d56-8b8e-e2106c98292f' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n",
"<tr>\n",
"<td>\n",
"<table>\n",
" <thead>\n",
" <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th> Bytes </th><td> 321.42 kB </td> <td> 29.23 kB </td></tr>\n",
" <tr><th> Shape </th><td> (20089, 2) </td> <td> (1827, 2) </td></tr>\n",
" <tr><th> Count </th><td> 33 Tasks </td><td> 11 Chunks </td></tr>\n",
" <tr><th> Type </th><td> datetime64[ns] </td><td> numpy.ndarray </td></tr>\n",
" </tbody>\n",
"</table>\n",
"</td>\n",
"<td>\n",
"<svg width=\"75\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"0\" y1=\"10\" x2=\"25\" y2=\"10\" />\n",
" <line x1=\"0\" y1=\"21\" x2=\"25\" y2=\"21\" />\n",
" <line x1=\"0\" y1=\"32\" x2=\"25\" y2=\"32\" />\n",
" <line x1=\"0\" y1=\"43\" x2=\"25\" y2=\"43\" />\n",
" <line x1=\"0\" y1=\"54\" x2=\"25\" y2=\"54\" />\n",
" <line x1=\"0\" y1=\"65\" x2=\"25\" y2=\"65\" />\n",
" <line x1=\"0\" y1=\"76\" x2=\"25\" y2=\"76\" />\n",
" <line x1=\"0\" y1=\"87\" x2=\"25\" y2=\"87\" />\n",
" <line x1=\"0\" y1=\"98\" x2=\"25\" y2=\"98\" />\n",
" <line x1=\"0\" y1=\"109\" x2=\"25\" y2=\"109\" />\n",
" <line x1=\"0\" y1=\"120\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n",
" <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"0.0,0.0 25.412616514582485,0.0 25.412616514582485,120.0 0.0,120.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"12.706308\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n",
" <text x=\"45.412617\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,45.412617,60.000000)\">20089</text>\n",
"</svg>\n",
"</td>\n",
"</tr>\n",
"</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>tas</span></div><div class='xr-var-dims'>(time, lat, lon)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(1826, 133, 119), meta=np.ndarray&gt;</div><input id='attrs-8f73f64c-d920-42fc-b598-2326ba60ff5b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-8f73f64c-d920-42fc-b598-2326ba60ff5b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-142ea39e-7e55-4a61-a62c-577948002b55' class='xr-var-data-in' type='checkbox'><label for='data-142ea39e-7e55-4a61-a62c-577948002b55' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>Near-Surface Air Temperature</dd><dt><span>standard_name :</span></dt><dd>air_temperature</dd><dt><span>cell_methods :</span></dt><dd>time: mean</dd><dt><span>units :</span></dt><dd>K</dd></dl></div><div class='xr-var-data'><table>\n",
"<tr>\n",
"<td>\n",
"<table>\n",
" <thead>\n",
" <tr><td> </td><th> Array </th><th> Chunk </th></tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr><th> Bytes </th><td> 2.54 GB </td> <td> 115.66 MB </td></tr>\n",
" <tr><th> Shape </th><td> (20089, 133, 238) </td> <td> (1827, 133, 119) </td></tr>\n",
" <tr><th> Count </th><td> 55 Tasks </td><td> 22 Chunks </td></tr>\n",
" <tr><th> Type </th><td> float32 </td><td> numpy.ndarray </td></tr>\n",
" </tbody>\n",
"</table>\n",
"</td>\n",
"<td>\n",
"<svg width=\"156\" height=\"146\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"10\" y1=\"25\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"25\" style=\"stroke-width:2\" />\n",
" <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"31\" />\n",
" <line x1=\"22\" y1=\"12\" x2=\"22\" y2=\"38\" />\n",
" <line x1=\"29\" y1=\"19\" x2=\"29\" y2=\"44\" />\n",
" <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"51\" />\n",
" <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"57\" />\n",
" <line x1=\"48\" y1=\"38\" x2=\"48\" y2=\"63\" />\n",
" <line x1=\"54\" y1=\"44\" x2=\"54\" y2=\"70\" />\n",
" <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"76\" />\n",
" <line x1=\"67\" y1=\"57\" x2=\"67\" y2=\"83\" />\n",
" <line x1=\"74\" y1=\"64\" x2=\"74\" y2=\"89\" />\n",
" <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,96.00085180870013 10.0,25.412616514582485\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"36\" y2=\"0\" style=\"stroke-width:2\" />\n",
" <line x1=\"16\" y1=\"6\" x2=\"42\" y2=\"6\" />\n",
" <line x1=\"22\" y1=\"12\" x2=\"49\" y2=\"12\" />\n",
" <line x1=\"29\" y1=\"19\" x2=\"55\" y2=\"19\" />\n",
" <line x1=\"35\" y1=\"25\" x2=\"61\" y2=\"25\" />\n",
" <line x1=\"42\" y1=\"32\" x2=\"68\" y2=\"32\" />\n",
" <line x1=\"48\" y1=\"38\" x2=\"74\" y2=\"38\" />\n",
" <line x1=\"54\" y1=\"44\" x2=\"81\" y2=\"44\" />\n",
" <line x1=\"61\" y1=\"51\" x2=\"87\" y2=\"51\" />\n",
" <line x1=\"67\" y1=\"57\" x2=\"93\" y2=\"57\" />\n",
" <line x1=\"74\" y1=\"64\" x2=\"100\" y2=\"64\" />\n",
" <line x1=\"80\" y1=\"70\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"23\" y1=\"0\" x2=\"93\" y2=\"70\" />\n",
" <line x1=\"36\" y1=\"0\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"10.0,0.0 36.242557076454275,0.0 106.83079237057193,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Horizontal lines -->\n",
" <line x1=\"80\" y1=\"70\" x2=\"106\" y2=\"70\" style=\"stroke-width:2\" />\n",
" <line x1=\"80\" y1=\"96\" x2=\"106\" y2=\"96\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Vertical lines -->\n",
" <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"96\" style=\"stroke-width:2\" />\n",
" <line x1=\"93\" y1=\"70\" x2=\"93\" y2=\"96\" />\n",
" <line x1=\"106\" y1=\"70\" x2=\"106\" y2=\"96\" style=\"stroke-width:2\" />\n",
"\n",
" <!-- Colored Rectangle -->\n",
" <polygon points=\"80.58823529411765,70.58823529411765 106.83079237057193,70.58823529411765 106.83079237057193,96.00085180870013 80.58823529411765,96.00085180870013\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n",
"\n",
" <!-- Text -->\n",
" <text x=\"93.709514\" y=\"116.000852\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >238</text>\n",
" <text x=\"126.830792\" y=\"83.294544\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,126.830792,83.294544)\">133</text>\n",
" <text x=\"35.294118\" y=\"80.706734\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,80.706734)\">20089</text>\n",
"</svg>\n",
"</td>\n",
"</tr>\n",
"</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-4b875e47-5d5d-4d46-8b29-76baefece01a' class='xr-section-summary-in' type='checkbox' ><label for='section-4b875e47-5d5d-4d46-8b29-76baefece01a' class='xr-section-summary' >Attributes: <span>(29)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>postprocessing_version :</span></dt><dd>1.0</dd><dt><span>intake_esm_varname :</span></dt><dd>[&#x27;tas&#x27;]</dd><dt><span>experiment :</span></dt><dd>ACCESS1.0 historical run</dd><dt><span>CORDEX_domain :</span></dt><dd>AUS-44i</dd><dt><span>model_id :</span></dt><dd>UNSW-WRF360L</dd><dt><span>driving_model_id :</span></dt><dd>CSIRO-BOM-ACCESS1-0</dd><dt><span>wrf_schemes_ra_lw_physics :</span></dt><dd>CAM; Collins et al. (2004, NCAR)</dd><dt><span>references :</span></dt><dd>http://www.ccrc.unsw.edu.au</dd><dt><span>creation_date :</span></dt><dd>2017-08-05 10:41:25 Z</dd><dt><span>comment :</span></dt><dd>CCRC version of WRF3.6, locally known as WRF3.6.0.5. It includes time varying forcings</dd><dt><span>contact :</span></dt><dd>Jason Evans (jason.evans@unsw.edu.au), Roman Olson (roman.olson@unsw.edu.au), Daniel Argueso (d.argueso@unsw.edu.au), Alejandro Di Luca (a.diluca@unsw.edu.au), Giovanni Di Virgilio (giovanni@unsw.edu.au)</dd><dt><span>institute_id :</span></dt><dd>UNSW</dd><dt><span>driving_model_ensemble_member :</span></dt><dd>r1i1p1</dd><dt><span>wrf_schemes_cu_physics :</span></dt><dd>Kain-Fritsch; Kain (2004, JAM)</dd><dt><span>driving_experiment_name :</span></dt><dd>historical</dd><dt><span>wrf_options :</span></dt><dd>sst_update &amp; tmn_update</dd><dt><span>project_id :</span></dt><dd>CORDEX</dd><dt><span>institution :</span></dt><dd>UNSW Australia</dd><dt><span>frequency :</span></dt><dd>day</dd><dt><span>history :</span></dt><dd>Interpolated from the original variable in the native grid to the regular lat/lon grid using a nearest neighbor interpolation method</dd><dt><span>wrf_schemes_sf_sfclay_physics :</span></dt><dd>Old_MM5; Paulson (1970, JAM), Dyer and Hicks (1970, QJRMS), and Webb (1970, QJRMS)</dd><dt><span>wrf_schemes_bl_pbl_physics :</span></dt><dd>YSU; Hong, Noh and Dudhia (2006, MWR)</dd><dt><span>rcm_version_id :</span></dt><dd>v1</dd><dt><span>experiment_id :</span></dt><dd>historical</dd><dt><span>product :</span></dt><dd>output</dd><dt><span>wrf_schemes_ra_sw_physics :</span></dt><dd>CAM; Collins et al. (2004, NCAR)</dd><dt><span>Conventions :</span></dt><dd>CF-1.4</dd><dt><span>wrf_schemes_sf_surface_physics :</span></dt><dd>Noah; Chen and Dudhia (2001, MWR)</dd><dt><span>intake_esm_dataset_key :</span></dt><dd>cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-0.historical.r1i1p1.WRF360L.v1.day.tas.v20180614</dd></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (bnds: 2, lat: 133, lon: 238, time: 20089)\n",
"Coordinates:\n",
" * lon (lon) float64 88.75 89.25 89.75 90.25 ... -153.8 -153.2 -152.8\n",
" * lat (lat) float64 -53.25 -52.75 -52.25 -51.75 ... 11.75 12.25 12.75\n",
" * time (time) datetime64[ns] 1951-01-01T12:00:00 ... 2005-12-31T12:00:00\n",
" height float64 2.0\n",
"Dimensions without coordinates: bnds\n",
"Data variables:\n",
" time_bnds (time, bnds) datetime64[ns] dask.array<chunksize=(1826, 2), meta=np.ndarray>\n",
" tas (time, lat, lon) float32 dask.array<chunksize=(1826, 133, 119), meta=np.ndarray>\n",
"Attributes: (12/29)\n",
" postprocessing_version: 1.0\n",
" intake_esm_varname: ['tas']\n",
" experiment: ACCESS1.0 historical run\n",
" CORDEX_domain: AUS-44i\n",
" model_id: UNSW-WRF360L\n",
" driving_model_id: CSIRO-BOM-ACCESS1-0\n",
" ... ...\n",
" experiment_id: historical\n",
" product: output\n",
" wrf_schemes_ra_sw_physics: CAM; Collins et al. (2004, NCAR)\n",
" Conventions: CF-1.4\n",
" wrf_schemes_sf_surface_physics: Noah; Chen and Dudhia (2001, MWR)\n",
" intake_esm_dataset_key: cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACC..."
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"unsw_day_tas_aus44i.to_dataset_dict(cdf_kwargs={'chunks': {'lon': 119}})['cordex.output.AUS-44i.UNSW.CSIRO-BOM-ACCESS1-0.historical.r1i1p1.WRF360L.v1.day.tas.v20180614']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Advanced searching\n",
"\n",
"You can get a list of all datasets that have both variables 'tasmax' and 'tasmin' with `require_all_on`. Columns named here must have valid matches for all permutations of the other filter - so each 'rcm_name' returned must have matches for both variables."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<p><strong>cordex catalog with 12 dataset(s) from 132 asset(s)</strong>:</p> <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>unique</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>project</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>product</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>domain</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>institute</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>driving_model</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>experiment</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ensemble</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rcm_name</th>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>rcm_version</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>time_frequency</th>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>variable</th>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>date_range</th>\n",
" <td>11</td>\n",
" </tr>\n",
" <tr>\n",
" <th>path</th>\n",
" <td>132</td>\n",
" </tr>\n",
" <tr>\n",
" <th>version</th>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cordex.search(institute='UNSW', time_frequency='day', variable=['tasmax', 'tasmin'], domain='AUS-44i', require_all_on=['rcm_name'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:analysis3]",
"language": "python",
"name": "conda-env-analysis3-py"
},
"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.8.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
@hot007
Copy link

hot007 commented Jun 30, 2021

Just wanted to say thanks for this demo notebook Scott, just needed to use it and it contained exactly what I wanted to know! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment