Skip to content

carbonplan/html-reprs

Repository files navigation

html-reprs

This is a simple web app/api that allows retreiving the Xarray HTML representation of a dataset. This is useful for rendering Xarray datasets repr in a web page.

We are currently using this in the LEAP data catalog to render the Xarray repr of dataset in the feedstock page.

Usage

To use this service, you can send a GET request to the /xarray endpoint with the url query parameter set to the URL of the dataset you want to render. The service will return a JSON object with the HTML representation of the dataset.

curl -X 'GET' \
  'https://html-reprs.fly.dev/xarray/?url=https%3A%2F%2Fncsa.osn.xsede.org%2FPangeo%2Fpangeo-forge%2FHadISST-feedstock%2Fhadisst.zarr' \
  -H 'accept: application/json'
Returned JSON response
{
  "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\nhtml[theme=dark],\nhtml[data-theme=dark],\nbody[data-theme=dark],\nbody.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 !important;\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 0 20px 0 20px;\n}\n\n.xr-section-item {\n  display: contents;\n}\n\n.xr-section-item input {\n  display: inline-block;\n  opacity: 0;\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:focus + label {\n  border: 2px solid var(--xr-font-color0);\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-index-preview {\n  grid-column: 2 / 5;\n  color: var(--xr-font-color2);\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.xr-index-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.xr-index-data-in:checked ~ .xr-index-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-index-name div,\n.xr-index-data,\n.xr-attrs {\n  padding-left: 25px !important;\n}\n\n.xr-attrs,\n.xr-var-attrs,\n.xr-var-data,\n.xr-index-data {\n  grid-column: 1 / -1;\n}\n\ndl.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.xr-no-icon {\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; Size: 474MB\nDimensions:    (latitude: 180, longitude: 360, time: 1829, nv: 2)\nCoordinates:\n  * latitude   (latitude) float32 720B 89.5 88.5 87.5 86.5 ... -87.5 -88.5 -89.5\n  * longitude  (longitude) float32 1kB -179.5 -178.5 -177.5 ... 178.5 179.5\n  * time       (time) datetime64[ns] 15kB 1870-01-16T11:59:59.505615234 ... 2...\nDimensions without coordinates: nv\nData variables:\n    sst        (time, latitude, longitude) float32 474MB dask.array&lt;chunksize=(1829, 180, 360), meta=np.ndarray&gt;\n    time_bnds  (time, nv) float32 15kB dask.array&lt;chunksize=(1829, 2), meta=np.ndarray&gt;\nAttributes:\n    Conventions:                CF-1.0\n    Title:                      Monthly version of HadISST sea surface temper...\n    comment:                    Data restrictions: for academic research use ...\n    description:                HadISST 1.1 monthly average sea surface tempe...\n    history:                    22/7/2022 converted to netcdf from pp format\n    institution:                Met Office Hadley Centre\n    reference:                  Rayner, N. A., Parker, D. E., Horton, E. B., ...\n    source:                     HadISST\n    supplementary_information:  Updates and supplementary information will be...</pre><div class='xr-wrap' style='display:none'><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-0f7363fa-7fc6-4ad7-8b4c-038bb2ab826a' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-0f7363fa-7fc6-4ad7-8b4c-038bb2ab826a' class='xr-section-summary'  title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>latitude</span>: 180</li><li><span class='xr-has-index'>longitude</span>: 360</li><li><span class='xr-has-index'>time</span>: 1829</li><li><span>nv</span>: 2</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-94632c93-ad39-4e57-a2cc-9ff05d9ce6db' class='xr-section-summary-in' type='checkbox'  checked><label for='section-94632c93-ad39-4e57-a2cc-9ff05d9ce6db' class='xr-section-summary' >Coordinates: <span>(3)</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'>latitude</span></div><div class='xr-var-dims'>(latitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>89.5 88.5 87.5 ... -88.5 -89.5</div><input id='attrs-5a6c9961-1d30-4f04-953d-853e18b78faf' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5a6c9961-1d30-4f04-953d-853e18b78faf' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-be3aecba-ddfe-424c-968d-fa26e811e288' class='xr-var-data-in' type='checkbox'><label for='data-be3aecba-ddfe-424c-968d-fa26e811e288' 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>Latitude</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd></dl></div><div class='xr-var-data'><pre>array([ 89.5,  88.5,  87.5,  86.5,  85.5,  84.5,  83.5,  82.5,  81.5,  80.5,\n        79.5,  78.5,  77.5,  76.5,  75.5,  74.5,  73.5,  72.5,  71.5,  70.5,\n        69.5,  68.5,  67.5,  66.5,  65.5,  64.5,  63.5,  62.5,  61.5,  60.5,\n        59.5,  58.5,  57.5,  56.5,  55.5,  54.5,  53.5,  52.5,  51.5,  50.5,\n        49.5,  48.5,  47.5,  46.5,  45.5,  44.5,  43.5,  42.5,  41.5,  40.5,\n        39.5,  38.5,  37.5,  36.5,  35.5,  34.5,  33.5,  32.5,  31.5,  30.5,\n        29.5,  28.5,  27.5,  26.5,  25.5,  24.5,  23.5,  22.5,  21.5,  20.5,\n        19.5,  18.5,  17.5,  16.5,  15.5,  14.5,  13.5,  12.5,  11.5,  10.5,\n         9.5,   8.5,   7.5,   6.5,   5.5,   4.5,   3.5,   2.5,   1.5,   0.5,\n        -0.5,  -1.5,  -2.5,  -3.5,  -4.5,  -5.5,  -6.5,  -7.5,  -8.5,  -9.5,\n       -10.5, -11.5, -12.5, -13.5, -14.5, -15.5, -16.5, -17.5, -18.5, -19.5,\n       -20.5, -21.5, -22.5, -23.5, -24.5, -25.5, -26.5, -27.5, -28.5, -29.5,\n       -30.5, -31.5, -32.5, -33.5, -34.5, -35.5, -36.5, -37.5, -38.5, -39.5,\n       -40.5, -41.5, -42.5, -43.5, -44.5, -45.5, -46.5, -47.5, -48.5, -49.5,\n       -50.5, -51.5, -52.5, -53.5, -54.5, -55.5, -56.5, -57.5, -58.5, -59.5,\n       -60.5, -61.5, -62.5, -63.5, -64.5, -65.5, -66.5, -67.5, -68.5, -69.5,\n       -70.5, -71.5, -72.5, -73.5, -74.5, -75.5, -76.5, -77.5, -78.5, -79.5,\n       -80.5, -81.5, -82.5, -83.5, -84.5, -85.5, -86.5, -87.5, -88.5, -89.5],\n      dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>longitude</span></div><div class='xr-var-dims'>(longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>-179.5 -178.5 ... 178.5 179.5</div><input id='attrs-54c13add-8306-4b60-b764-2d041c730b9c' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-54c13add-8306-4b60-b764-2d041c730b9c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-71c4a4a5-1c27-413d-b546-45f471917377' class='xr-var-data-in' type='checkbox'><label for='data-71c4a4a5-1c27-413d-b546-45f471917377' 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>Longitude</dd><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>units :</span></dt><dd>degrees_east</dd></dl></div><div class='xr-var-data'><pre>array([-179.5, -178.5, -177.5, ...,  177.5,  178.5,  179.5], dtype=float32)</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'>1870-01-16T11:59:59.505615234 .....</div><input id='attrs-71dec4cb-6a56-45f2-bece-4e52f7dcbf3c' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-71dec4cb-6a56-45f2-bece-4e52f7dcbf3c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f75ea234-74f8-4300-b23a-cb0c91122338' class='xr-var-data-in' type='checkbox'><label for='data-f75ea234-74f8-4300-b23a-cb0c91122338' 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>Time</dd><dt><span>standard_name :</span></dt><dd>time</dd></dl></div><div class='xr-var-data'><pre>array([&#x27;1870-01-16T11:59:59.505615234&#x27;, &#x27;1870-02-14T23:59:59.340820312&#x27;,\n       &#x27;1870-03-16T11:59:59.340820312&#x27;, ..., &#x27;2022-03-16T12:00:00.000000000&#x27;,\n       &#x27;2022-04-16T12:00:00.000000000&#x27;, &#x27;2022-05-16T12:00:00.000000000&#x27;],\n      dtype=&#x27;datetime64[ns]&#x27;)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-0f52c5cc-9918-4900-a06e-d65180ae658a' class='xr-section-summary-in' type='checkbox'  checked><label for='section-0f52c5cc-9918-4900-a06e-d65180ae658a' 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>sst</span></div><div class='xr-var-dims'>(time, latitude, longitude)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(1829, 180, 360), meta=np.ndarray&gt;</div><input id='attrs-64c7e63a-2a57-40bb-b38f-c0c11edf5778' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-64c7e63a-2a57-40bb-b38f-c0c11edf5778' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-71e9d609-3361-4ac7-82fb-8aef693c0e7a' class='xr-var-data-in' type='checkbox'><label for='data-71e9d609-3361-4ac7-82fb-8aef693c0e7a' 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>cell_methods :</span></dt><dd>time: lat: lon: mean</dd><dt><span>long_name :</span></dt><dd>sst</dd><dt><span>standard_name :</span></dt><dd>sea_surface_temperature</dd><dt><span>units :</span></dt><dd>C</dd></dl></div><div class='xr-var-data'><table>\n    <tr>\n        <td>\n            <table style=\"border-collapse: collapse;\">\n                <thead>\n                    <tr>\n                        <td> </td>\n                        <th> Array </th>\n                        <th> Chunk </th>\n                    </tr>\n                </thead>\n                <tbody>\n                    \n                    <tr>\n                        <th> Bytes </th>\n                        <td> 452.11 MiB </td>\n                        <td> 452.11 MiB </td>\n                    </tr>\n                    \n                    <tr>\n                        <th> Shape </th>\n                        <td> (1829, 180, 360) </td>\n                        <td> (1829, 180, 360) </td>\n                    </tr>\n                    <tr>\n                        <th> Dask graph </th>\n                        <td colspan=\"2\"> 1 chunks in 2 graph layers </td>\n                    </tr>\n                    <tr>\n                        <th> Data type </th>\n                        <td colspan=\"2\"> float32 numpy.ndarray </td>\n                    </tr>\n                </tbody>\n            </table>\n        </td>\n        <td>\n        <svg width=\"172\" height=\"159\" 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=\"38\" x2=\"80\" y2=\"109\" style=\"stroke-width:2\" />\n\n  <!-- Vertical lines -->\n  <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"38\" style=\"stroke-width:2\" />\n  <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"109\" style=\"stroke-width:2\" />\n\n  <!-- Colored Rectangle -->\n  <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,109.09633304754514 10.0,38.50809775342749\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n\n  <!-- Horizontal lines -->\n  <line x1=\"10\" y1=\"0\" x2=\"51\" y2=\"0\" style=\"stroke-width:2\" />\n  <line x1=\"80\" y1=\"70\" x2=\"122\" 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=\"51\" y1=\"0\" x2=\"122\" y2=\"70\" style=\"stroke-width:2\" />\n\n  <!-- Colored Rectangle -->\n  <polygon points=\"10.0,0.0 51.94206947829488,0.0 122.53030477241253,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n\n  <!-- Horizontal lines -->\n  <line x1=\"80\" y1=\"70\" x2=\"122\" y2=\"70\" style=\"stroke-width:2\" />\n  <line x1=\"80\" y1=\"109\" x2=\"122\" y2=\"109\" style=\"stroke-width:2\" />\n\n  <!-- Vertical lines -->\n  <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"109\" style=\"stroke-width:2\" />\n  <line x1=\"122\" y1=\"70\" x2=\"122\" y2=\"109\" style=\"stroke-width:2\" />\n\n  <!-- Colored Rectangle -->\n  <polygon points=\"80.58823529411765,70.58823529411765 122.53030477241253,70.58823529411765 122.53030477241253,109.09633304754514 80.58823529411765,109.09633304754514\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n\n  <!-- Text -->\n  <text x=\"101.559270\" y=\"129.096333\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >360</text>\n  <text x=\"142.530305\" y=\"89.842284\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,142.530305,89.842284)\">180</text>\n  <text x=\"35.294118\" y=\"93.802215\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,93.802215)\">1829</text>\n</svg>\n        </td>\n    </tr>\n</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time_bnds</span></div><div class='xr-var-dims'>(time, nv)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(1829, 2), meta=np.ndarray&gt;</div><input id='attrs-e39b6f92-124e-47da-ae0b-3019217893c1' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-e39b6f92-124e-47da-ae0b-3019217893c1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-afb0060a-2265-4775-9847-d045424b7f45' class='xr-var-data-in' type='checkbox'><label for='data-afb0060a-2265-4775-9847-d045424b7f45' 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 style=\"border-collapse: collapse;\">\n                <thead>\n                    <tr>\n                        <td> </td>\n                        <th> Array </th>\n                        <th> Chunk </th>\n                    </tr>\n                </thead>\n                <tbody>\n                    \n                    <tr>\n                        <th> Bytes </th>\n                        <td> 14.29 kiB </td>\n                        <td> 14.29 kiB </td>\n                    </tr>\n                    \n                    <tr>\n                        <th> Shape </th>\n                        <td> (1829, 2) </td>\n                        <td> (1829, 2) </td>\n                    </tr>\n                    <tr>\n                        <th> Dask graph </th>\n                        <td colspan=\"2\"> 1 chunks in 2 graph layers </td>\n                    </tr>\n                    <tr>\n                        <th> Data type </th>\n                        <td colspan=\"2\"> float32 numpy.ndarray </td>\n                    </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=\"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)\">1829</text>\n</svg>\n        </td>\n    </tr>\n</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-e108385a-2e36-444a-b68a-8928a76c4335' class='xr-section-summary-in' type='checkbox'  ><label for='section-e108385a-2e36-444a-b68a-8928a76c4335' class='xr-section-summary' >Indexes: <span>(3)</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-index-name'><div>latitude</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-4e80f2f1-7c24-41d2-b44b-658ba23fe895' class='xr-index-data-in' type='checkbox'/><label for='index-4e80f2f1-7c24-41d2-b44b-658ba23fe895' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 89.5,  88.5,  87.5,  86.5,  85.5,  84.5,  83.5,  82.5,  81.5,  80.5,\n       ...\n       -80.5, -81.5, -82.5, -83.5, -84.5, -85.5, -86.5, -87.5, -88.5, -89.5],\n      dtype=&#x27;float32&#x27;, name=&#x27;latitude&#x27;, length=180))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>longitude</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-c4f415f0-a44d-48cf-966e-088a58695e65' class='xr-index-data-in' type='checkbox'/><label for='index-c4f415f0-a44d-48cf-966e-088a58695e65' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([-179.5, -178.5, -177.5, -176.5, -175.5, -174.5, -173.5, -172.5, -171.5,\n       -170.5,\n       ...\n        170.5,  171.5,  172.5,  173.5,  174.5,  175.5,  176.5,  177.5,  178.5,\n        179.5],\n      dtype=&#x27;float32&#x27;, name=&#x27;longitude&#x27;, length=360))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>time</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-ac5fe621-c03c-4ce9-879c-a6d801274a99' class='xr-index-data-in' type='checkbox'/><label for='index-ac5fe621-c03c-4ce9-879c-a6d801274a99' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(DatetimeIndex([&#x27;1870-01-16 11:59:59.505615234&#x27;,\n               &#x27;1870-02-14 23:59:59.340820312&#x27;,\n               &#x27;1870-03-16 11:59:59.340820312&#x27;,\n               &#x27;1870-04-15 23:59:59.340820312&#x27;,\n                         &#x27;1870-05-16 12:00:00&#x27;,\n                         &#x27;1870-06-16 00:00:00&#x27;,\n                         &#x27;1870-07-16 12:00:00&#x27;,\n                         &#x27;1870-08-16 12:00:00&#x27;,\n                         &#x27;1870-09-16 00:00:00&#x27;,\n                         &#x27;1870-10-16 12:00:00&#x27;,\n               ...\n                         &#x27;2021-08-16 12:00:00&#x27;,\n                         &#x27;2021-09-16 12:00:00&#x27;,\n                         &#x27;2021-10-16 12:00:00&#x27;,\n                         &#x27;2021-11-16 12:00:00&#x27;,\n                         &#x27;2021-12-16 12:00:00&#x27;,\n                         &#x27;2022-01-16 12:00:00&#x27;,\n                         &#x27;2022-02-16 12:00:00&#x27;,\n                         &#x27;2022-03-16 12:00:00&#x27;,\n                         &#x27;2022-04-16 12:00:00&#x27;,\n                         &#x27;2022-05-16 12:00:00&#x27;],\n              dtype=&#x27;datetime64[ns]&#x27;, name=&#x27;time&#x27;, length=1829, freq=None))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-a34d1673-d579-40af-ad3f-844cbc72949a' class='xr-section-summary-in' type='checkbox'  checked><label for='section-a34d1673-d579-40af-ad3f-844cbc72949a' class='xr-section-summary' >Attributes: <span>(9)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>Conventions :</span></dt><dd>CF-1.0</dd><dt><span>Title :</span></dt><dd>Monthly version of HadISST sea surface temperature component</dd><dt><span>comment :</span></dt><dd>Data restrictions: for academic research use only. Data are Crown copyright see (http://www.opsi.gov.uk/advice/crown-copyright/copyright-guidance/index.htm)</dd><dt><span>description :</span></dt><dd>HadISST 1.1 monthly average sea surface temperature</dd><dt><span>history :</span></dt><dd>22/7/2022 converted to netcdf from pp format</dd><dt><span>institution :</span></dt><dd>Met Office Hadley Centre</dd><dt><span>reference :</span></dt><dd>Rayner, N. A., Parker, D. E., Horton, E. B., Folland, C. K., Alexander, L. V., Rowell, D. P., Kent, E. C., Kaplan, A.  Global analyses of sea surface temperature, sea ice, and night marine air temperature since the late nineteenth century J. Geophys. Res.Vol. 108, No. D14, 4407 10.1029/2002JD002670</dd><dt><span>source :</span></dt><dd>HadISST</dd><dt><span>supplementary_information :</span></dt><dd>Updates and supplementary information will be available from http://www.metoffice.gov.uk/hadobs/hadisst</dd></dl></div></li></ul></div></div>",
  "sanitized_url": "https://ncsa.osn.xsede.org/Pangeo/pangeo-forge/HadISST-feedstock/hadisst.zarr",
  "url": "https://ncsa.osn.xsede.org/Pangeo/pangeo-forge/HadISST-feedstock/hadisst.zarr"
}