Skip to content

Instantly share code, notes, and snippets.

@blakeNaccarato
Last active September 25, 2024 22:51
Show Gist options
  • Save blakeNaccarato/a128f21c65f03d011bda5c9dc778d822 to your computer and use it in GitHub Desktop.
Save blakeNaccarato/a128f21c65f03d011bda5c9dc778d822 to your computer and use it in GitHub Desktop.
Integer slice selection in `xarray`
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Integer slice selection\n",
"\n",
"See [related discussion](https://github.com/pydata/xarray/discussions/9547). This example uses this [dataset](https://github.com/softboiler/boilercv/blob/main/docs/data/filled/2024-07-18T17-44-35.nc), and is executed from the root of the repo."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"#### Full dataset"
],
"text/plain": [
"<IPython.core.display.Markdown 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[data-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 !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 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-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",
"\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",
".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;\n",
"Dimensions: (frame: 500, ypx: 325, xpx: 304)\n",
"Coordinates:\n",
" * frame (frame) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499\n",
" utc (frame) datetime64[ns] ...\n",
" time (frame) float64 ...\n",
" * ypx (ypx) int64 0 1 2 3 4 5 6 7 8 ... 317 318 319 320 321 322 323 324\n",
" * xpx (xpx) int64 0 1 2 3 4 5 6 7 8 ... 296 297 298 299 300 301 302 303\n",
"Data variables:\n",
" video (frame, ypx, xpx) bool ...</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-a7704bc9-e79c-416e-aafb-57d88982e8b2' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-a7704bc9-e79c-416e-aafb-57d88982e8b2' 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'>frame</span>: 500</li><li><span class='xr-has-index'>ypx</span>: 325</li><li><span class='xr-has-index'>xpx</span>: 304</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-db2ccc53-4924-4b88-9b38-155e70f8ef0e' class='xr-section-summary-in' type='checkbox' checked><label for='section-db2ccc53-4924-4b88-9b38-155e70f8ef0e' class='xr-section-summary' >Coordinates: <span>(5)</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'>frame</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 495 496 497 498 499</div><input id='attrs-d06dc2fc-f3f0-4781-8e3e-8955dbda2c56' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-d06dc2fc-f3f0-4781-8e3e-8955dbda2c56' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b988c8ce-8d4b-42cb-a783-c13bca477b52' class='xr-var-data-in' type='checkbox'><label for='data-b988c8ce-8d4b-42cb-a783-c13bca477b52' 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>Frame number</dd></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 497, 498, 499], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>utc</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-4a92bf89-12f3-4c07-9d0c-7f6649622b1b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-4a92bf89-12f3-4c07-9d0c-7f6649622b1b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-94e007ba-b0b4-42c3-ab6c-7c2896ece23c' class='xr-var-data-in' type='checkbox'><label for='data-94e007ba-b0b4-42c3-ab6c-7c2896ece23c' 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>UTC time</dd></dl></div><div class='xr-var-data'><pre>[500 values with dtype=datetime64[ns]]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-260aa6b6-8f15-4c50-bee5-69cb53424732' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-260aa6b6-8f15-4c50-bee5-69cb53424732' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fa3eaac0-06e8-4ed6-aa61-fb6a84be242b' class='xr-var-data-in' type='checkbox'><label for='data-fa3eaac0-06e8-4ed6-aa61-fb6a84be242b' 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 elapsed</dd><dt><span>units :</span></dt><dd>s</dd></dl></div><div class='xr-var-data'><pre>[500 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>ypx</span></div><div class='xr-var-dims'>(ypx)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 320 321 322 323 324</div><input id='attrs-7e94f1de-5b1e-4666-8e11-2263ed563fa4' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-7e94f1de-5b1e-4666-8e11-2263ed563fa4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-030f1799-0609-49e7-98e7-23c35c1f1559' class='xr-var-data-in' type='checkbox'><label for='data-030f1799-0609-49e7-98e7-23c35c1f1559' 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>Height</dd><dt><span>units :</span></dt><dd>px</dd></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 322, 323, 324], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>xpx</span></div><div class='xr-var-dims'>(xpx)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 299 300 301 302 303</div><input id='attrs-9b0979d3-c5b4-4911-9168-df03f041b62e' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-9b0979d3-c5b4-4911-9168-df03f041b62e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2e3093a4-8f08-48c6-ba22-7e43f63f2e40' class='xr-var-data-in' type='checkbox'><label for='data-2e3093a4-8f08-48c6-ba22-7e43f63f2e40' 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'><pre>array([ 0, 1, 2, ..., 301, 302, 303], dtype=int64)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-19bd76aa-df28-4ad4-a938-91a815e8843c' class='xr-section-summary-in' type='checkbox' checked><label for='section-19bd76aa-df28-4ad4-a938-91a815e8843c' class='xr-section-summary' >Data variables: <span>(1)</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>video</span></div><div class='xr-var-dims'>(frame, ypx, xpx)</div><div class='xr-var-dtype'>bool</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-ef5af2fa-7835-4782-8cae-36f75d989390' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-ef5af2fa-7835-4782-8cae-36f75d989390' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8bf0c444-13d5-45c0-a43e-5607bae4f8e6' class='xr-var-data-in' type='checkbox'><label for='data-8bf0c444-13d5-45c0-a43e-5607bae4f8e6' 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>High-speed video data</dd><dt><span>units :</span></dt><dd>Pixel intensity</dd></dl></div><div class='xr-var-data'><pre>[49400000 values with dtype=bool]</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-4a99da5a-709a-40ac-afdd-5ad61ec92a06' class='xr-section-summary-in' type='checkbox' ><label for='section-4a99da5a-709a-40ac-afdd-5ad61ec92a06' 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>frame</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-89c688f4-08ba-40b4-9067-8b3b853ae597' class='xr-index-data-in' type='checkbox'/><label for='index-89c688f4-08ba-40b4-9067-8b3b853ae597' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 490, 491, 492, 493, 494, 495, 496, 497, 498, 499],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;frame&#x27;, length=500))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>ypx</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-7047952b-71e8-4424-8448-1a185153d188' class='xr-index-data-in' type='checkbox'/><label for='index-7047952b-71e8-4424-8448-1a185153d188' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 315, 316, 317, 318, 319, 320, 321, 322, 323, 324],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;ypx&#x27;, length=325))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>xpx</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-69b9c0a4-87d8-4a2e-8821-cfe91c670be1' class='xr-index-data-in' type='checkbox'/><label for='index-69b9c0a4-87d8-4a2e-8821-cfe91c670be1' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 294, 295, 296, 297, 298, 299, 300, 301, 302, 303],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;xpx&#x27;, length=304))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-cb85dfbd-82c5-4ce7-9c27-4ce3a9e5fcf1' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-cb85dfbd-82c5-4ce7-9c27-4ce3a9e5fcf1' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (frame: 500, ypx: 325, xpx: 304)\n",
"Coordinates:\n",
" * frame (frame) int64 0 1 2 3 4 5 6 7 8 ... 492 493 494 495 496 497 498 499\n",
" utc (frame) datetime64[ns] ...\n",
" time (frame) float64 ...\n",
" * ypx (ypx) int64 0 1 2 3 4 5 6 7 8 ... 317 318 319 320 321 322 323 324\n",
" * xpx (xpx) int64 0 1 2 3 4 5 6 7 8 ... 296 297 298 299 300 301 302 303\n",
"Data variables:\n",
" video (frame, ypx, xpx) bool ..."
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"#### Associated contours"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"##### Frame count: 500"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<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></th>\n",
" <th>ypx</th>\n",
" <th>xpx</th>\n",
" </tr>\n",
" <tr>\n",
" <th>frame</th>\n",
" <th>contour</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">0</th>\n",
" <th>0</th>\n",
" <td>293</td>\n",
" <td>158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>294</td>\n",
" <td>157</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>294</td>\n",
" <td>156</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">1</th>\n",
" <th>0</th>\n",
" <td>293</td>\n",
" <td>158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>297</td>\n",
" <td>154</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>299</td>\n",
" <td>154</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">2</th>\n",
" <th>0</th>\n",
" <td>293</td>\n",
" <td>158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>297</td>\n",
" <td>154</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>299</td>\n",
" <td>154</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ypx xpx\n",
"frame contour \n",
"0 0 293 158\n",
" 0 294 157\n",
" 0 294 156\n",
"1 0 293 158\n",
" 0 297 154\n",
" 0 299 154\n",
"2 0 293 158\n",
" 0 297 154\n",
" 0 299 154"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from pathlib import Path\n",
"\n",
"from IPython.display import Markdown, display\n",
"from more_itertools import first, last\n",
"from pandas import DataFrame, IndexSlice, read_hdf\n",
"from xarray import Dataset, open_dataset\n",
"\n",
"\n",
"def get_selector(video: Dataset, dim: str, sel: slice | range | None) -> slice | range:\n",
" \"\"\"Get selector, preferring label-based selection even given an integer slice.\"\"\"\n",
" if not sel:\n",
" return slice(None)\n",
" if isinstance(sel, range):\n",
" return sel\n",
" if all((isinstance(s, int) or s is None) for s in (sel.start, sel.stop, sel.step)):\n",
" start = sel.start or first(video[dim].values)\n",
" stop = (sel.stop or last(video[dim].values)) + 1\n",
" step = sel.step or 1\n",
" return range(start, stop, step)\n",
" return sel\n",
"\n",
"\n",
"DIM = \"frame\"\n",
"\n",
"\n",
"def preview(df: DataFrame):\n",
" \"\"\"Preview a DataFrame.\"\"\"\n",
" display(\n",
" Markdown(\"#### Associated contours\"),\n",
" Markdown(f\"##### Frame count: {df.index.get_level_values(DIM).nunique()}\"),\n",
" df.groupby(DIM).head(3).head(9),\n",
" )\n",
"\n",
"\n",
"SLC = slice(None, None, 10)\n",
"SELECTOR = {DIM: SLC}\n",
"DATA = Path(\"docs\") / \"data\"\n",
"PATH = DATA / \"filled\" / \"2024-07-18T17-44-35.nc\"\n",
"FULL = open_dataset(DATA / \"filled\" / \"2024-07-18T17-44-35.nc\")\n",
"CONTOURS: DataFrame = read_hdf(DATA / \"contours\" / \"2024-07-18T17-44-35.h5\") # pyright: ignore[reportAssignmentType]\n",
"display(Markdown(\"#### Full dataset\"), FULL)\n",
"CONTOURS.pipe(preview)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"#### Decimated dataset"
],
"text/plain": [
"<IPython.core.display.Markdown 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[data-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 !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 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-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",
"\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",
".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;\n",
"Dimensions: (frame: 50, ypx: 325, xpx: 304)\n",
"Coordinates:\n",
" * frame (frame) int64 0 10 20 30 40 50 60 ... 430 440 450 460 470 480 490\n",
" utc (frame) datetime64[ns] ...\n",
" time (frame) float64 ...\n",
" * ypx (ypx) int64 0 1 2 3 4 5 6 7 8 ... 317 318 319 320 321 322 323 324\n",
" * xpx (xpx) int64 0 1 2 3 4 5 6 7 8 ... 296 297 298 299 300 301 302 303\n",
"Data variables:\n",
" video (frame, ypx, xpx) bool ...</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-7acd3968-e5e8-43c7-87df-aac8034b6267' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-7acd3968-e5e8-43c7-87df-aac8034b6267' 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'>frame</span>: 50</li><li><span class='xr-has-index'>ypx</span>: 325</li><li><span class='xr-has-index'>xpx</span>: 304</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-63d55040-f347-4c63-ade8-0aa197eac6d0' class='xr-section-summary-in' type='checkbox' checked><label for='section-63d55040-f347-4c63-ade8-0aa197eac6d0' class='xr-section-summary' >Coordinates: <span>(5)</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'>frame</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 10 20 30 40 ... 460 470 480 490</div><input id='attrs-de84b5b7-3b59-432c-a32a-464729dc0357' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-de84b5b7-3b59-432c-a32a-464729dc0357' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-0e4076cc-95bb-49c1-b4ed-6265f9a897e2' class='xr-var-data-in' type='checkbox'><label for='data-0e4076cc-95bb-49c1-b4ed-6265f9a897e2' 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>Frame number</dd></dl></div><div class='xr-var-data'><pre>array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130,\n",
" 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270,\n",
" 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410,\n",
" 420, 430, 440, 450, 460, 470, 480, 490], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>utc</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-41795e1f-cb97-44a2-84d5-5e606256bf23' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-41795e1f-cb97-44a2-84d5-5e606256bf23' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fd5ab5fb-27c8-4164-92be-f5ff719ca78f' class='xr-var-data-in' type='checkbox'><label for='data-fd5ab5fb-27c8-4164-92be-f5ff719ca78f' 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>UTC time</dd></dl></div><div class='xr-var-data'><pre>[50 values with dtype=datetime64[ns]]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-5b0b3032-6641-46fc-868c-b87de87dbaf1' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5b0b3032-6641-46fc-868c-b87de87dbaf1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-efaaed08-ff29-494e-9124-0bab2c696d20' class='xr-var-data-in' type='checkbox'><label for='data-efaaed08-ff29-494e-9124-0bab2c696d20' 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 elapsed</dd><dt><span>units :</span></dt><dd>s</dd></dl></div><div class='xr-var-data'><pre>[50 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>ypx</span></div><div class='xr-var-dims'>(ypx)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 320 321 322 323 324</div><input id='attrs-25228beb-7e7c-454e-87e7-e05e84af616c' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-25228beb-7e7c-454e-87e7-e05e84af616c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-741e8d8e-cd81-4c33-a8f5-43743c65ab0c' class='xr-var-data-in' type='checkbox'><label for='data-741e8d8e-cd81-4c33-a8f5-43743c65ab0c' 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>Height</dd><dt><span>units :</span></dt><dd>px</dd></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 322, 323, 324], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>xpx</span></div><div class='xr-var-dims'>(xpx)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 299 300 301 302 303</div><input id='attrs-d64f7e28-ef98-4f15-942c-d0c7663194e3' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d64f7e28-ef98-4f15-942c-d0c7663194e3' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4d1cd3ed-beb9-46d4-9a1c-0ac24460fa70' class='xr-var-data-in' type='checkbox'><label for='data-4d1cd3ed-beb9-46d4-9a1c-0ac24460fa70' 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'><pre>array([ 0, 1, 2, ..., 301, 302, 303], dtype=int64)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-ed0a4ae8-2453-40dc-8006-1650f620970a' class='xr-section-summary-in' type='checkbox' checked><label for='section-ed0a4ae8-2453-40dc-8006-1650f620970a' class='xr-section-summary' >Data variables: <span>(1)</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>video</span></div><div class='xr-var-dims'>(frame, ypx, xpx)</div><div class='xr-var-dtype'>bool</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-39750565-deaa-49ec-bae4-2350b9967c05' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-39750565-deaa-49ec-bae4-2350b9967c05' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-337aaf09-e7f5-490f-916c-048d6feabcc5' class='xr-var-data-in' type='checkbox'><label for='data-337aaf09-e7f5-490f-916c-048d6feabcc5' 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>High-speed video data</dd><dt><span>units :</span></dt><dd>Pixel intensity</dd></dl></div><div class='xr-var-data'><pre>[4940000 values with dtype=bool]</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-db7251e1-e803-4d57-bf4d-5641fea1f4f2' class='xr-section-summary-in' type='checkbox' ><label for='section-db7251e1-e803-4d57-bf4d-5641fea1f4f2' 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>frame</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-d5efb03b-1c67-489f-87f3-b00bd3282b01' class='xr-index-data-in' type='checkbox'/><label for='index-d5efb03b-1c67-489f-87f3-b00bd3282b01' 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([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130,\n",
" 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270,\n",
" 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410,\n",
" 420, 430, 440, 450, 460, 470, 480, 490],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;frame&#x27;))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>ypx</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-f2d20a39-c0d7-47f2-8280-574c0442b0c3' class='xr-index-data-in' type='checkbox'/><label for='index-f2d20a39-c0d7-47f2-8280-574c0442b0c3' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 315, 316, 317, 318, 319, 320, 321, 322, 323, 324],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;ypx&#x27;, length=325))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>xpx</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-2bc294ea-aeab-43dc-ad40-3dba5f40fac7' class='xr-index-data-in' type='checkbox'/><label for='index-2bc294ea-aeab-43dc-ad40-3dba5f40fac7' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 294, 295, 296, 297, 298, 299, 300, 301, 302, 303],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;xpx&#x27;, length=304))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-bcf306d0-9bdd-46f0-980f-3e7f612c02b2' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-bcf306d0-9bdd-46f0-980f-3e7f612c02b2' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (frame: 50, ypx: 325, xpx: 304)\n",
"Coordinates:\n",
" * frame (frame) int64 0 10 20 30 40 50 60 ... 430 440 450 460 470 480 490\n",
" utc (frame) datetime64[ns] ...\n",
" time (frame) float64 ...\n",
" * ypx (ypx) int64 0 1 2 3 4 5 6 7 8 ... 317 318 319 320 321 322 323 324\n",
" * xpx (xpx) int64 0 1 2 3 4 5 6 7 8 ... 296 297 298 299 300 301 302 303\n",
"Data variables:\n",
" video (frame, ypx, xpx) bool ..."
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"#### Associated contours"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"##### Frame count: 50"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<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></th>\n",
" <th>ypx</th>\n",
" <th>xpx</th>\n",
" </tr>\n",
" <tr>\n",
" <th>frame</th>\n",
" <th>contour</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">0</th>\n",
" <th>0</th>\n",
" <td>293</td>\n",
" <td>158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>294</td>\n",
" <td>157</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>294</td>\n",
" <td>156</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">10</th>\n",
" <th>0</th>\n",
" <td>290</td>\n",
" <td>193</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>192</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>190</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">20</th>\n",
" <th>0</th>\n",
" <td>290</td>\n",
" <td>195</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>194</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>192</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ypx xpx\n",
"frame contour \n",
"0 0 293 158\n",
" 0 294 157\n",
" 0 294 156\n",
"10 0 290 193\n",
" 0 291 192\n",
" 0 291 190\n",
"20 0 290 195\n",
" 0 291 194\n",
" 0 291 192"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"decimated = FULL.sel(SELECTOR)\n",
"decimated_contours = CONTOURS.loc[IndexSlice[SLC, :], :] # pyright: ignore[reportArgumentType, reportCallIssue]\n",
"display(Markdown(\"#### Decimated dataset\"), decimated)\n",
"decimated_contours.pipe(preview)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"#### Slice selection from decimated dataset decimates it again"
],
"text/plain": [
"<IPython.core.display.Markdown 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[data-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 !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 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-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",
"\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",
".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;\n",
"Dimensions: (frame: 5, ypx: 325, xpx: 304)\n",
"Coordinates:\n",
" * frame (frame) int64 0 100 200 300 400\n",
" utc (frame) datetime64[ns] ...\n",
" time (frame) float64 ...\n",
" * ypx (ypx) int64 0 1 2 3 4 5 6 7 8 ... 317 318 319 320 321 322 323 324\n",
" * xpx (xpx) int64 0 1 2 3 4 5 6 7 8 ... 296 297 298 299 300 301 302 303\n",
"Data variables:\n",
" video (frame, ypx, xpx) bool ...</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-c146b544-8281-446e-b373-27d9e14df7a1' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-c146b544-8281-446e-b373-27d9e14df7a1' 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'>frame</span>: 5</li><li><span class='xr-has-index'>ypx</span>: 325</li><li><span class='xr-has-index'>xpx</span>: 304</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-debc38a0-4dc6-4d31-a100-2e090de3b369' class='xr-section-summary-in' type='checkbox' checked><label for='section-debc38a0-4dc6-4d31-a100-2e090de3b369' class='xr-section-summary' >Coordinates: <span>(5)</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'>frame</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 100 200 300 400</div><input id='attrs-5fffcf93-0fab-4037-b1a5-4b2f8cbe45b8' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-5fffcf93-0fab-4037-b1a5-4b2f8cbe45b8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e04e9547-8ec5-4589-929d-9da1e640587d' class='xr-var-data-in' type='checkbox'><label for='data-e04e9547-8ec5-4589-929d-9da1e640587d' 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>Frame number</dd></dl></div><div class='xr-var-data'><pre>array([ 0, 100, 200, 300, 400], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>utc</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-b2a7c699-bab0-461e-8d1f-b769bca9c7e7' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b2a7c699-bab0-461e-8d1f-b769bca9c7e7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8dea83cb-b41a-46ab-a8bc-60773226547f' class='xr-var-data-in' type='checkbox'><label for='data-8dea83cb-b41a-46ab-a8bc-60773226547f' 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>UTC time</dd></dl></div><div class='xr-var-data'><pre>[5 values with dtype=datetime64[ns]]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-0891d737-e968-4dbc-ac64-26a62e474135' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-0891d737-e968-4dbc-ac64-26a62e474135' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f007fd3e-9e19-4aed-bd93-d2368a01407c' class='xr-var-data-in' type='checkbox'><label for='data-f007fd3e-9e19-4aed-bd93-d2368a01407c' 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 elapsed</dd><dt><span>units :</span></dt><dd>s</dd></dl></div><div class='xr-var-data'><pre>[5 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>ypx</span></div><div class='xr-var-dims'>(ypx)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 320 321 322 323 324</div><input id='attrs-9b8a024a-c222-4056-886d-f662fa0f2c02' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-9b8a024a-c222-4056-886d-f662fa0f2c02' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d9ba1a36-5ee9-494e-9c13-e53b13ccdc4b' class='xr-var-data-in' type='checkbox'><label for='data-d9ba1a36-5ee9-494e-9c13-e53b13ccdc4b' 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>Height</dd><dt><span>units :</span></dt><dd>px</dd></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 322, 323, 324], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>xpx</span></div><div class='xr-var-dims'>(xpx)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 299 300 301 302 303</div><input id='attrs-e289f746-6e7e-4c5f-8171-02840112fd82' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-e289f746-6e7e-4c5f-8171-02840112fd82' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-436ea9a6-8869-464c-9357-f544f74876d0' class='xr-var-data-in' type='checkbox'><label for='data-436ea9a6-8869-464c-9357-f544f74876d0' 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'><pre>array([ 0, 1, 2, ..., 301, 302, 303], dtype=int64)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-ef27c43d-feac-490a-a062-a4af51dc9087' class='xr-section-summary-in' type='checkbox' checked><label for='section-ef27c43d-feac-490a-a062-a4af51dc9087' class='xr-section-summary' >Data variables: <span>(1)</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>video</span></div><div class='xr-var-dims'>(frame, ypx, xpx)</div><div class='xr-var-dtype'>bool</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-dde4d1c1-8397-49e8-8456-f39bc791178d' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-dde4d1c1-8397-49e8-8456-f39bc791178d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-7d09a4e5-2060-49b7-8521-08578a678f3e' class='xr-var-data-in' type='checkbox'><label for='data-7d09a4e5-2060-49b7-8521-08578a678f3e' 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>High-speed video data</dd><dt><span>units :</span></dt><dd>Pixel intensity</dd></dl></div><div class='xr-var-data'><pre>[494000 values with dtype=bool]</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-1bcbb18b-a00a-4f29-af7e-ffc9b58d276f' class='xr-section-summary-in' type='checkbox' ><label for='section-1bcbb18b-a00a-4f29-af7e-ffc9b58d276f' 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>frame</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-08d1d15b-72a7-44d1-9d5e-cb6f5dd4b8f7' class='xr-index-data-in' type='checkbox'/><label for='index-08d1d15b-72a7-44d1-9d5e-cb6f5dd4b8f7' 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([0, 100, 200, 300, 400], dtype=&#x27;int64&#x27;, name=&#x27;frame&#x27;))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>ypx</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-25dba4ed-48a7-4b63-90cc-3a5c8108ea4e' class='xr-index-data-in' type='checkbox'/><label for='index-25dba4ed-48a7-4b63-90cc-3a5c8108ea4e' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 315, 316, 317, 318, 319, 320, 321, 322, 323, 324],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;ypx&#x27;, length=325))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>xpx</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-2fdcc571-024d-44bd-ac9d-db61e713d0b9' class='xr-index-data-in' type='checkbox'/><label for='index-2fdcc571-024d-44bd-ac9d-db61e713d0b9' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 294, 295, 296, 297, 298, 299, 300, 301, 302, 303],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;xpx&#x27;, length=304))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-b1c7f304-6034-4737-82a1-c3a5d3f6d087' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-b1c7f304-6034-4737-82a1-c3a5d3f6d087' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (frame: 5, ypx: 325, xpx: 304)\n",
"Coordinates:\n",
" * frame (frame) int64 0 100 200 300 400\n",
" utc (frame) datetime64[ns] ...\n",
" time (frame) float64 ...\n",
" * ypx (ypx) int64 0 1 2 3 4 5 6 7 8 ... 317 318 319 320 321 322 323 324\n",
" * xpx (xpx) int64 0 1 2 3 4 5 6 7 8 ... 296 297 298 299 300 301 302 303\n",
"Data variables:\n",
" video (frame, ypx, xpx) bool ..."
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"#### Yet slice selection of contours returns as expected"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"#### Associated contours"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"##### Frame count: 50"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<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></th>\n",
" <th>ypx</th>\n",
" <th>xpx</th>\n",
" </tr>\n",
" <tr>\n",
" <th>frame</th>\n",
" <th>contour</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">0</th>\n",
" <th>0</th>\n",
" <td>293</td>\n",
" <td>158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>294</td>\n",
" <td>157</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>294</td>\n",
" <td>156</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">10</th>\n",
" <th>0</th>\n",
" <td>290</td>\n",
" <td>193</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>192</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>190</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">20</th>\n",
" <th>0</th>\n",
" <td>290</td>\n",
" <td>195</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>194</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>192</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ypx xpx\n",
"frame contour \n",
"0 0 293 158\n",
" 0 294 157\n",
" 0 294 156\n",
"10 0 290 193\n",
" 0 291 192\n",
" 0 291 190\n",
"20 0 290 195\n",
" 0 291 194\n",
" 0 291 192"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(\n",
" Markdown(\"#### Slice selection from decimated dataset decimates it again\"),\n",
" decimated.sel({DIM: SLC}),\n",
" Markdown(\"#### Yet slice selection of contours returns as expected\"),\n",
")\n",
"decimated_contours.loc[IndexSlice[SLC, :], :].pipe(preview)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/markdown": [
"#### Range selection returns the decimated dataset. Need to know the last frame index."
],
"text/plain": [
"<IPython.core.display.Markdown 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[data-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 !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 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-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",
"\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",
".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;\n",
"Dimensions: (frame: 50, ypx: 325, xpx: 304)\n",
"Coordinates:\n",
" * frame (frame) int64 0 10 20 30 40 50 60 ... 430 440 450 460 470 480 490\n",
" utc (frame) datetime64[ns] ...\n",
" time (frame) float64 ...\n",
" * ypx (ypx) int64 0 1 2 3 4 5 6 7 8 ... 317 318 319 320 321 322 323 324\n",
" * xpx (xpx) int64 0 1 2 3 4 5 6 7 8 ... 296 297 298 299 300 301 302 303\n",
"Data variables:\n",
" video (frame, ypx, xpx) bool ...</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-3089f5f7-6d05-4b7b-bd3d-d8cd3e9297a8' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-3089f5f7-6d05-4b7b-bd3d-d8cd3e9297a8' 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'>frame</span>: 50</li><li><span class='xr-has-index'>ypx</span>: 325</li><li><span class='xr-has-index'>xpx</span>: 304</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-aec992d0-70e9-4b27-ab63-20dd716e1f85' class='xr-section-summary-in' type='checkbox' checked><label for='section-aec992d0-70e9-4b27-ab63-20dd716e1f85' class='xr-section-summary' >Coordinates: <span>(5)</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'>frame</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 10 20 30 40 ... 460 470 480 490</div><input id='attrs-79bbd17a-57e6-4407-8658-9f6bae1a8f3b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-79bbd17a-57e6-4407-8658-9f6bae1a8f3b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-075f4ba2-bfaa-495c-87c5-e1e537d79237' class='xr-var-data-in' type='checkbox'><label for='data-075f4ba2-bfaa-495c-87c5-e1e537d79237' 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>Frame number</dd></dl></div><div class='xr-var-data'><pre>array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130,\n",
" 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270,\n",
" 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410,\n",
" 420, 430, 440, 450, 460, 470, 480, 490], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>utc</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-998320ee-a908-44f3-bc42-ed24a8a2c924' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-998320ee-a908-44f3-bc42-ed24a8a2c924' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-768c2045-b210-4111-bfec-b51737dc7c54' class='xr-var-data-in' type='checkbox'><label for='data-768c2045-b210-4111-bfec-b51737dc7c54' 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>UTC time</dd></dl></div><div class='xr-var-data'><pre>[50 values with dtype=datetime64[ns]]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time</span></div><div class='xr-var-dims'>(frame)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-4d7ba718-3174-4123-a3ba-ccd53719fad8' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-4d7ba718-3174-4123-a3ba-ccd53719fad8' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-fb906232-5d4b-4a9e-839a-6a86c16f73d1' class='xr-var-data-in' type='checkbox'><label for='data-fb906232-5d4b-4a9e-839a-6a86c16f73d1' 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 elapsed</dd><dt><span>units :</span></dt><dd>s</dd></dl></div><div class='xr-var-data'><pre>[50 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>ypx</span></div><div class='xr-var-dims'>(ypx)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 320 321 322 323 324</div><input id='attrs-9bf836f4-6a37-46ba-b667-bf1dcfb91e4a' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-9bf836f4-6a37-46ba-b667-bf1dcfb91e4a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-7f353922-0689-40c1-967b-7464335fc0e8' class='xr-var-data-in' type='checkbox'><label for='data-7f353922-0689-40c1-967b-7464335fc0e8' 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>Height</dd><dt><span>units :</span></dt><dd>px</dd></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 322, 323, 324], dtype=int64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>xpx</span></div><div class='xr-var-dims'>(xpx)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 ... 299 300 301 302 303</div><input id='attrs-c336b85b-5daa-43a0-9e40-fb073dafa2f3' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c336b85b-5daa-43a0-9e40-fb073dafa2f3' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1e1bfa08-d615-43b6-b1ef-d99b7be04726' class='xr-var-data-in' type='checkbox'><label for='data-1e1bfa08-d615-43b6-b1ef-d99b7be04726' 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'><pre>array([ 0, 1, 2, ..., 301, 302, 303], dtype=int64)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-de8a35f6-0b45-450f-b05f-6fd9f7d97cbd' class='xr-section-summary-in' type='checkbox' checked><label for='section-de8a35f6-0b45-450f-b05f-6fd9f7d97cbd' class='xr-section-summary' >Data variables: <span>(1)</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>video</span></div><div class='xr-var-dims'>(frame, ypx, xpx)</div><div class='xr-var-dtype'>bool</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-96ba3af7-7ee3-4c59-bfe3-5627ec186c49' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-96ba3af7-7ee3-4c59-bfe3-5627ec186c49' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1f04997a-b264-4619-936d-350317c6fc4d' class='xr-var-data-in' type='checkbox'><label for='data-1f04997a-b264-4619-936d-350317c6fc4d' 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>High-speed video data</dd><dt><span>units :</span></dt><dd>Pixel intensity</dd></dl></div><div class='xr-var-data'><pre>[4940000 values with dtype=bool]</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-5adfccb5-c893-409a-97fb-3d0430628ef1' class='xr-section-summary-in' type='checkbox' ><label for='section-5adfccb5-c893-409a-97fb-3d0430628ef1' 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>frame</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-1a487d65-9c6b-4897-9c31-8044eb42cfe8' class='xr-index-data-in' type='checkbox'/><label for='index-1a487d65-9c6b-4897-9c31-8044eb42cfe8' 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([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130,\n",
" 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270,\n",
" 280, 290, 300, 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, 410,\n",
" 420, 430, 440, 450, 460, 470, 480, 490],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;frame&#x27;))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>ypx</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-2658c5b2-34de-4158-9fdd-727c4939508d' class='xr-index-data-in' type='checkbox'/><label for='index-2658c5b2-34de-4158-9fdd-727c4939508d' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 315, 316, 317, 318, 319, 320, 321, 322, 323, 324],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;ypx&#x27;, length=325))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>xpx</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-2c7221b8-bb79-41c3-9118-ae4145be96b7' class='xr-index-data-in' type='checkbox'/><label for='index-2c7221b8-bb79-41c3-9118-ae4145be96b7' 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([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 294, 295, 296, 297, 298, 299, 300, 301, 302, 303],\n",
" dtype=&#x27;int64&#x27;, name=&#x27;xpx&#x27;, length=304))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-1f23024c-cdd9-485f-b9e8-3e08eecd6a39' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-1f23024c-cdd9-485f-b9e8-3e08eecd6a39' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (frame: 50, ypx: 325, xpx: 304)\n",
"Coordinates:\n",
" * frame (frame) int64 0 10 20 30 40 50 60 ... 430 440 450 460 470 480 490\n",
" utc (frame) datetime64[ns] ...\n",
" time (frame) float64 ...\n",
" * ypx (ypx) int64 0 1 2 3 4 5 6 7 8 ... 317 318 319 320 321 322 323 324\n",
" * xpx (xpx) int64 0 1 2 3 4 5 6 7 8 ... 296 297 298 299 300 301 302 303\n",
"Data variables:\n",
" video (frame, ypx, xpx) bool ..."
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"#### Range selection also works okay for contours"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"#### Associated contours"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/markdown": [
"##### Frame count: 50"
],
"text/plain": [
"<IPython.core.display.Markdown object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<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></th>\n",
" <th>ypx</th>\n",
" <th>xpx</th>\n",
" </tr>\n",
" <tr>\n",
" <th>frame</th>\n",
" <th>contour</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">0</th>\n",
" <th>0</th>\n",
" <td>293</td>\n",
" <td>158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>294</td>\n",
" <td>157</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>294</td>\n",
" <td>156</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">10</th>\n",
" <th>0</th>\n",
" <td>290</td>\n",
" <td>193</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>192</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>190</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">20</th>\n",
" <th>0</th>\n",
" <td>290</td>\n",
" <td>195</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>194</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>291</td>\n",
" <td>192</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ypx xpx\n",
"frame contour \n",
"0 0 293 158\n",
" 0 294 157\n",
" 0 294 156\n",
"10 0 290 193\n",
" 0 291 192\n",
" 0 291 190\n",
"20 0 290 195\n",
" 0 291 194\n",
" 0 291 192"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"rng = get_selector(FULL, DIM, SLC)\n",
"display(\n",
" Markdown(\n",
" \"#### Range selection returns the decimated dataset. Need to know the last frame index.\"\n",
" ),\n",
" decimated.sel({DIM: rng}),\n",
" Markdown(\"#### Range selection also works okay for contours\"),\n",
")\n",
"decimated_contours.loc[IndexSlice[rng, :], :].pipe(preview) # pyright: ignore[reportArgumentType]"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment