{ "cells": [ { "cell_type": "markdown", "id": "b3954c58", "metadata": {}, "source": [ "# How to extract digitizer peaks with the SCS Toolbox" ] }, { "cell_type": "code", "execution_count": 1, "id": "e8d99d6e", "metadata": {}, "outputs": [], "source": [ "import toolbox_scs as tb\n", "import matplotlib.pyplot as plt\n", "%matplotlib notebook\n", "plt.rcParams['figure.constrained_layout.use'] = True" ] }, { "cell_type": "markdown", "id": "0dc88ec5", "metadata": {}, "source": [ "First, to explore the data contained in a run, we open a `DataCollection` using `open_run()` which is equivalent to the `extra_data.open_run()` function:" ] }, { "cell_type": "code", "execution_count": 2, "id": "5653df96", "metadata": {}, "outputs": [], "source": [ "proposal, runNB = 2956, 13\n", "run = tb.open_run(proposal, runNB)" ] }, { "cell_type": "markdown", "id": "78b464eb", "metadata": {}, "source": [ "Each channel of each digitizer stores a string that is used to describe which device is connected to that channel. A dictionnary of all channels can be accessed as follows:" ] }, { "cell_type": "code", "execution_count": 3, "id": "24776895", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'FastADC_Ch0': 'CHEM DIAG X-ray PD',\n", " 'FastADC_Ch1': 'PPL I0 at in-coupling window',\n", " 'FastADC_Ch2': 'CHEM APD',\n", " 'FastADC_Ch3': 'PPL Reflectometer PD',\n", " 'FastADC_Ch4': '',\n", " 'FastADC_Ch5': 'PPL 800 nm I0 ILH PD',\n", " 'FastADC_Ch6': '',\n", " 'FastADC_Ch7': 'No Description',\n", " 'FastADC_Ch8': 'No Description',\n", " 'FastADC_Ch9': 'CHEM DIAG Laser PD',\n", " 'FastADC2_Ch0': 'No Description',\n", " 'FastADC2_Ch1': 'No Description',\n", " 'FastADC2_Ch2': 'No Description',\n", " 'FastADC2_Ch3': 'No Description',\n", " 'FastADC2_Ch4': 'No Description',\n", " 'FastADC2_Ch5': 'diode 2 - diam = 5mm',\n", " 'FastADC2_Ch6': 'I0_400 nm',\n", " 'FastADC2_Ch7': 'diode 5 - diam = 3mm + Filter (Ti 400 nm / Polyimide 200 nm)',\n", " 'FastADC2_Ch8': 'diode 6 - 10x10 mm + filter longpass > 550 nm',\n", " 'FastADC2_Ch9': 'diode 8 - APD diam = 3 mm + Filter (Ti 400 nm / Polyimide 200 nm)'}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tb.digitizer_signal_description(run)" ] }, { "cell_type": "markdown", "id": "8533a26e", "metadata": {}, "source": [ "As is customary, we can always list the available mnemonics for the run as follows:" ] }, { "cell_type": "code", "execution_count": 4, "id": "fb343bd8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['sase3', 'sase2', 'sase1', 'maindump', 'bunchpattern', 'bunchPatternTable', 'npulses_sase3', 'npulses_sase1', 'BAM414', 'BAM1932M', 'BAM1932S', 'nrj', 'nrj_target', 'M2BEND', 'tpi', 'VSLIT', 'ESLIT', 'HSLIT', 'transmission', 'transmission_col2', 'GATT_pressure', 'UND', 'UND2', 'UND3', 'XTD10_photonFlux', 'XTD10_photonFlux_sigma', 'XTD10_XGM', 'XTD10_XGM_sigma', 'XTD10_SA3', 'XTD10_SA3_sigma', 'XTD10_SA1', 'XTD10_SA1_sigma', 'XTD10_slowTrain', 'XTD10_slowTrain_SA1', 'XTD10_slowTrain_SA3', 'SCS_photonFlux', 'SCS_photonFlux_sigma', 'SCS_XGM', 'SCS_XGM_sigma', 'SCS_SA1', 'SCS_SA1_sigma', 'SCS_SA3', 'SCS_SA3_sigma', 'SCS_slowTrain', 'SCS_slowTrain_SA1', 'SCS_slowTrain_SA3', 'HFM_BENDING', 'VFM_BENDING', 'AFS_DelayLine', 'AFS_FocusLens', 'PP800_PhaseShifter', 'PP800_SynchDelayLine', 'PP800_DelayLine', 'PP800_HalfWP', 'PP800_HWP_POWER', 'PP800_FocusLens', 'FFT_FocusLens', 'hRIXS_det', 'hRIXS_delay', 'hRIXS_index', 'hRIXS_norm', 'hRIXS_ABB', 'hRIXS_ABL', 'hRIXS_ABR', 'hRIXS_ABT', 'hRIXS_DRX', 'hRIXS_DTY1', 'hRIXS_DTZ', 'hRIXS_GMX', 'hRIXS_GRX', 'hRIXS_GTLY', 'hRIXS_GTRY', 'hRIXS_GTX', 'hRIXS_GTZ', 'XRD_DRY', 'XRD_SRX', 'XRD_SRY', 'XRD_SRZ', 'XRD_STX', 'XRD_STY', 'XRD_STZ', 'XRD_SXT1Y', 'XRD_SXT2Y', 'XRD_SXTX', 'XRD_SXTZ', 'FastADC0peaks', 'FastADC0raw', 'FastADC1peaks', 'FastADC1raw', 'FastADC2peaks', 'FastADC2raw', 'FastADC3peaks', 'FastADC3raw', 'FastADC4peaks', 'FastADC4raw', 'FastADC5peaks', 'FastADC5raw', 'FastADC6peaks', 'FastADC6raw', 'FastADC7peaks', 'FastADC7raw', 'FastADC8peaks', 'FastADC8raw', 'FastADC9peaks', 'FastADC9raw', 'FastADC2_0peaks', 'FastADC2_0raw', 'FastADC2_1peaks', 'FastADC2_1raw', 'FastADC2_2peaks', 'FastADC2_2raw', 'FastADC2_3peaks', 'FastADC2_3raw', 'FastADC2_4peaks', 'FastADC2_4raw', 'FastADC2_5peaks', 'FastADC2_5raw', 'FastADC2_6peaks', 'FastADC2_6raw', 'FastADC2_7peaks', 'FastADC2_7raw', 'FastADC2_8peaks', 'FastADC2_8raw', 'FastADC2_9peaks', 'FastADC2_9raw'])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tb.mnemonics_for_run(run).keys()" ] }, { "cell_type": "markdown", "id": "0b88c855", "metadata": {}, "source": [ "Let's assume that we are interested in the APD signal on diode 8, which corresponds to Ch9 of Fast ADC 2. We will load the raw traces of this channel (mnemonic *FastADC2_9raw*) and extract the peaks.\n", "\n", "This is, in principle, all done automatically in the `load()` function. The only piece of information that is required is which bunch pattern to use for the extraction (`'sase3'` if the device is looking at the FEL or `'scs_ppl'` if the device is looking at the PP laser), so that all data loaded simultaneously (XGM, BAM, digitizer, ...) is pulse-aligned. By default, data from FastADC2 uses the 'sase3' bunch pattern (parameter `fadc2_bp`), so we can in this case omit this parameter in the `load` function.\n", "\n", "A peak-finding algorithm analyses the averaged trace and finds the location of the peaks and performs trapezoidal integration on the interval centered on the peak." ] }, { "cell_type": "code", "execution_count": 5, "id": "addab039", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", "<defs>\n", "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "</symbol>\n", "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "</symbol>\n", "</defs>\n", "</svg>\n", "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", " *\n", " */\n", "\n", ":root {\n", " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", " --xr-background-color: var(--jp-layout-color0, white);\n", " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", "}\n", "\n", "html[theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", " --xr-font-color3: rgba(255, 255, 255, 0.38);\n", " --xr-border-color: #1F1F1F;\n", " --xr-disabled-color: #515151;\n", " --xr-background-color: #111111;\n", " --xr-background-color-row-even: #111111;\n", " --xr-background-color-row-odd: #313131;\n", "}\n", "\n", ".xr-wrap {\n", " display: block;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", "\n", ".xr-text-repr-fallback {\n", " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", " display: none;\n", "}\n", "\n", ".xr-header {\n", " padding-top: 6px;\n", " padding-bottom: 6px;\n", " margin-bottom: 4px;\n", " border-bottom: solid 1px var(--xr-border-color);\n", "}\n", "\n", ".xr-header > div,\n", ".xr-header > ul {\n", " display: inline;\n", " margin-top: 0;\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-obj-type,\n", ".xr-array-name {\n", " margin-left: 2px;\n", " margin-right: 10px;\n", "}\n", "\n", ".xr-obj-type {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-sections {\n", " padding-left: 0 !important;\n", " display: grid;\n", " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", "}\n", "\n", ".xr-section-item {\n", " display: contents;\n", "}\n", "\n", ".xr-section-item input {\n", " display: none;\n", "}\n", "\n", ".xr-section-item input + label {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-item input:enabled + label {\n", " cursor: pointer;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-item input:enabled + label:hover {\n", " color: var(--xr-font-color0);\n", "}\n", "\n", ".xr-section-summary {\n", " grid-column: 1;\n", " color: var(--xr-font-color2);\n", " font-weight: 500;\n", "}\n", "\n", ".xr-section-summary > span {\n", " display: inline-block;\n", " padding-left: 0.5em;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-summary-in + label:before {\n", " display: inline-block;\n", " content: '►';\n", " font-size: 11px;\n", " width: 15px;\n", " text-align: center;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label:before {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-summary-in:checked + label:before {\n", " content: '▼';\n", "}\n", "\n", ".xr-section-summary-in:checked + label > span {\n", " display: none;\n", "}\n", "\n", ".xr-section-summary,\n", ".xr-section-inline-details {\n", " padding-top: 4px;\n", " padding-bottom: 4px;\n", "}\n", "\n", ".xr-section-inline-details {\n", " grid-column: 2 / -1;\n", "}\n", "\n", ".xr-section-details {\n", " display: none;\n", " grid-column: 1 / -1;\n", " margin-bottom: 5px;\n", "}\n", "\n", ".xr-section-summary-in:checked ~ .xr-section-details {\n", " display: contents;\n", "}\n", "\n", ".xr-array-wrap {\n", " grid-column: 1 / -1;\n", " display: grid;\n", " grid-template-columns: 20px auto;\n", "}\n", "\n", ".xr-array-wrap > label {\n", " grid-column: 1;\n", " vertical-align: top;\n", "}\n", "\n", ".xr-preview {\n", " color: var(--xr-font-color3);\n", "}\n", "\n", ".xr-array-preview,\n", ".xr-array-data {\n", " padding: 0 5px !important;\n", " grid-column: 2;\n", "}\n", "\n", ".xr-array-data,\n", ".xr-array-in:checked ~ .xr-array-preview {\n", " display: none;\n", "}\n", "\n", ".xr-array-in:checked ~ .xr-array-data,\n", ".xr-array-preview {\n", " display: inline-block;\n", "}\n", "\n", ".xr-dim-list {\n", " display: inline-block !important;\n", " list-style: none;\n", " padding: 0 !important;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list li {\n", " display: inline-block;\n", " padding: 0;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list:before {\n", " content: '(';\n", "}\n", "\n", ".xr-dim-list:after {\n", " content: ')';\n", "}\n", "\n", ".xr-dim-list li:not(:last-child):after {\n", " content: ',';\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-has-index {\n", " font-weight: bold;\n", "}\n", "\n", ".xr-var-list,\n", ".xr-var-item {\n", " display: contents;\n", "}\n", "\n", ".xr-var-item > div,\n", ".xr-var-item label,\n", ".xr-var-item > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-even);\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-var-item > .xr-var-name:hover span {\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-var-list > li:nth-child(odd) > div,\n", ".xr-var-list > li:nth-child(odd) > label,\n", ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-odd);\n", "}\n", "\n", ".xr-var-name {\n", " grid-column: 1;\n", "}\n", "\n", ".xr-var-dims {\n", " grid-column: 2;\n", "}\n", "\n", ".xr-var-dtype {\n", " grid-column: 3;\n", " text-align: right;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-var-preview {\n", " grid-column: 4;\n", "}\n", "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", ".xr-preview,\n", ".xr-attrs dt {\n", " white-space: nowrap;\n", " overflow: hidden;\n", " text-overflow: ellipsis;\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-var-name:hover,\n", ".xr-var-dims:hover,\n", ".xr-var-dtype:hover,\n", ".xr-attrs dt:hover {\n", " overflow: visible;\n", " width: auto;\n", " z-index: 1;\n", "}\n", "\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " display: none;\n", " background-color: var(--xr-background-color) !important;\n", " padding-bottom: 5px !important;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", ".xr-var-data-in:checked ~ .xr-var-data {\n", " display: block;\n", "}\n", "\n", ".xr-var-data > table {\n", " float: right;\n", "}\n", "\n", ".xr-var-name span,\n", ".xr-var-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", "dl.xr-attrs {\n", " padding: 0;\n", " margin: 0;\n", " display: grid;\n", " grid-template-columns: 125px auto;\n", "}\n", "\n", ".xr-attrs dt, dd {\n", " padding: 0;\n", " margin: 0;\n", " float: left;\n", " padding-right: 10px;\n", " width: auto;\n", "}\n", "\n", ".xr-attrs dt {\n", " font-weight: normal;\n", " grid-column: 1;\n", "}\n", "\n", ".xr-attrs dt:hover span {\n", " display: inline-block;\n", " background: var(--xr-background-color);\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-attrs dd {\n", " grid-column: 2;\n", " white-space: pre-wrap;\n", " word-break: break-all;\n", "}\n", "\n", ".xr-icon-database,\n", ".xr-icon-file-text2 {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", " height: 1.5em !important;\n", " stroke-width: 0;\n", " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", "</style><pre class='xr-text-repr-fallback'><xarray.Dataset>\n", "Dimensions: (pulse_slot: 2700, sa3_pId: 400, trainId: 7804)\n", "Coordinates:\n", " * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n", "Dimensions without coordinates: pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2211625 0 ... 16777216\n", " nrj (trainId) float64 931.6 931.6 931.5 ... 937.1 937.0 937.1\n", " FastADC2_9peaks (trainId, sa3_pId) float64 -1.532e+04 ... -2.655e+03\n", " SCS_SA3 (trainId, sa3_pId) float64 553.6 1.003e+03 ... 626.1\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0013</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-ceff61c0-3b8d-4eaa-876e-9edbcd951905' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-ceff61c0-3b8d-4eaa-876e-9edbcd951905' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>pulse_slot</span>: 2700</li><li><span class='xr-has-index'>sa3_pId</span>: 400</li><li><span class='xr-has-index'>trainId</span>: 7804</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-d02862a9-8aa4-413f-b03a-ea78c2f2a2bc' class='xr-section-summary-in' type='checkbox' checked><label for='section-d02862a9-8aa4-413f-b03a-ea78c2f2a2bc' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>trainId</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>uint64</div><div class='xr-var-preview xr-preview'>1501374970 ... 1501382869</div><input id='attrs-121f08ad-d92e-40fa-98e0-18ae6000c1d7' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-121f08ad-d92e-40fa-98e0-18ae6000c1d7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8bb57d9a-187c-4158-88b4-dbc8ab53b225' class='xr-var-data-in' type='checkbox'><label for='data-8bb57d9a-187c-4158-88b4-dbc8ab53b225' 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([1501374970, 1501374971, 1501374972, ..., 1501382867, 1501382868,\n", " 1501382869], dtype=uint64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>sa3_pId</span></div><div class='xr-var-dims'>(sa3_pId)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>772 776 780 784 ... 2360 2364 2368</div><input id='attrs-1a6d7e3f-ef1f-4ae2-bd82-8ae997b1d36e' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-1a6d7e3f-ef1f-4ae2-bd82-8ae997b1d36e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-888da014-026c-4862-95c3-6d9adc1e51b6' class='xr-var-data-in' type='checkbox'><label for='data-888da014-026c-4862-95c3-6d9adc1e51b6' 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([ 772, 776, 780, ..., 2360, 2364, 2368])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-3e1ed5cb-2e36-423e-83a7-0eb623b6dea9' class='xr-section-summary-in' type='checkbox' checked><label for='section-3e1ed5cb-2e36-423e-83a7-0eb623b6dea9' class='xr-section-summary' >Data variables: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>bunchPatternTable</span></div><div class='xr-var-dims'>(trainId, pulse_slot)</div><div class='xr-var-dtype'>uint32</div><div class='xr-var-preview xr-preview'>2211625 0 ... 16777216 16777216</div><input id='attrs-5e1f770a-49d6-45c8-a035-30c2e3ba01e6' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-5e1f770a-49d6-45c8-a035-30c2e3ba01e6' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-62d2527b-f53e-43a9-b0ec-d4c63b0e509f' class='xr-var-data-in' type='checkbox'><label for='data-62d2527b-f53e-43a9-b0ec-d4c63b0e509f' 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([[ 2211625, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " ...,\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216]],\n", " dtype=uint32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>nrj</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>931.6 931.6 931.5 ... 937.0 937.1</div><input id='attrs-666ddee4-e219-4218-939f-7674b2149d4c' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-666ddee4-e219-4218-939f-7674b2149d4c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d2e6ab4c-84d8-42e4-b6a5-93ac0aefac0d' class='xr-var-data-in' type='checkbox'><label for='data-d2e6ab4c-84d8-42e4-b6a5-93ac0aefac0d' 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([931.56104815, 931.58133731, 931.54481745, ..., 937.07140648,\n", " 937.04266612, 937.05908897])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>FastADC2_9peaks</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-1.532e+04 ... -2.655e+03</div><input id='attrs-f1a9cb03-ce61-4cde-ac5b-455367001750' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-f1a9cb03-ce61-4cde-ac5b-455367001750' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-da1e650b-5dc8-4d12-8dce-9851ff85a556' class='xr-var-data-in' type='checkbox'><label for='data-da1e650b-5dc8-4d12-8dce-9851ff85a556' 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([[-15322.5, -29118. , -16230. , ..., -3377. , -20600.5, -12762.5],\n", " [-19830. , -6252. , -11845.5, ..., -8974. , -8157.5, -37125. ],\n", " [-30643.5, -1225. , -31828. , ..., -20236.5, -11664.5, -18687.5],\n", " ...,\n", " [ -1367.5, 556.5, 325. , ..., -2096.5, -1793. , -812.5],\n", " [ -1442. , -2169.5, 1108.5, ..., -2121.5, -3154.5, -535. ],\n", " [ -2377. , -2471.5, -2109.5, ..., -469.5, -712. , -2655. ]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>SCS_SA3</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>553.6 1.003e+03 ... 625.2 626.1</div><input id='attrs-04e0f251-7cdb-4520-b71b-9a5fa8e03740' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-04e0f251-7cdb-4520-b71b-9a5fa8e03740' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-3196e9f4-5a7a-4776-9865-81c75ebd6b19' class='xr-var-data-in' type='checkbox'><label for='data-3196e9f4-5a7a-4776-9865-81c75ebd6b19' 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([[ 553.58990479, 1002.7635498 , 588.21862793, ..., 159.72709656,\n", " 584.90869141, 469.00732422],\n", " [ 729.78295898, 197.31863403, 350.71511841, ..., 333.3782959 ,\n", " 239.52154541, 1348.59741211],\n", " [1012.35583496, 155.80020142, 1075.75500488, ..., 780.81335449,\n", " 518.77160645, 652.95458984],\n", " ...,\n", " [ 712.21923828, 687.50018311, 623.03265381, ..., 995.31140137,\n", " 853.53509521, 1076.88537598],\n", " [ 337.43884277, 476.76254272, 561.50762939, ..., 634.65576172,\n", " 1289.45837402, 382.07299805],\n", " [ 313.94122314, 462.3732605 , 684.91363525, ..., 132.80506897,\n", " 625.18811035, 626.13842773]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-3710211f-06f9-4711-9ec0-fc6b80904fe4' class='xr-section-summary-in' type='checkbox' checked><label for='section-3710211f-06f9-4711-9ec0-fc6b80904fe4' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>runFolder :</span></dt><dd>/gpfs/exfel/exp/SCS/202202/p002956/raw/r0013</dd></dl></div></li></ul></div></div>" ], "text/plain": [ "<xarray.Dataset>\n", "Dimensions: (pulse_slot: 2700, sa3_pId: 400, trainId: 7804)\n", "Coordinates:\n", " * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n", "Dimensions without coordinates: pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2211625 0 ... 16777216\n", " nrj (trainId) float64 931.6 931.6 931.5 ... 937.1 937.0 937.1\n", " FastADC2_9peaks (trainId, sa3_pId) float64 -1.532e+04 ... -2.655e+03\n", " SCS_SA3 (trainId, sa3_pId) float64 553.6 1.003e+03 ... 626.1\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0013" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "proposal = 2956\n", "fields = ['SCS_SA3', 'nrj', 'FastADC2_9raw']\n", "run, ds = tb.load(proposal, 13, fields,)\n", "ds" ] }, { "cell_type": "markdown", "id": "1eec684f", "metadata": {}, "source": [ "We see here that `ds` has a variable `FastADC2_9peaks` which has dimensions `['trainId', 'sa3_pId']`, which is exactly what we wanted: the raw traces were automatically transformed into vectors of length `sa3_pId`.\n", "\n", "If, for instance, the recorded signal was an optical laser(OL) pulse and that the OL pattern was different from the sase 3 bunch pattern, we would need to specify `fadc2_bp='scs_ppl'` in the load function." ] }, { "cell_type": "markdown", "id": "7b204c22", "metadata": {}, "source": [ "We can always inspect how the peak extraction was performed by using the following function:" ] }, { "cell_type": "code", "execution_count": 6, "id": "946601a8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bunch pattern sase3: 400 pulses, 96 samples between two pulses\n", "Auto-find peak params: 400 pulses, 96 samples between two pulses\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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\" width=\"600\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'pulseStart': 6759,\n", " 'pulseStop': 6776,\n", " 'baseStart': 6743,\n", " 'baseStop': 6755,\n", " 'period': 96,\n", " 'npulses': 400}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "good_params = tb.check_peak_params(run, 'FastADC2_9raw')\n", "good_params" ] }, { "cell_type": "markdown", "id": "8ab2e1fe", "metadata": {}, "source": [ "This shows a plot with the first and last pulses identified by the peak-finding algorithm and displays the region of integration and the region for baseline subtraction. The function returns a dictionnary `good_params` that has all parameters necessary to perform the trapezoidal integration over the digitizer trace." ] }, { "cell_type": "markdown", "id": "9aa9fca4", "metadata": {}, "source": [ "## If the peak-finding algorithm fails" ] }, { "cell_type": "code", "execution_count": 7, "id": "57bb528b", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "The period from the bunch pattern is different than that found by the peak-finding algorithm. Either the algorithm failed or the bunch pattern source (sase3) is not correct.\n" ] }, { "data": { "text/html": [ "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", "<defs>\n", "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "</symbol>\n", "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "</symbol>\n", "</defs>\n", "</svg>\n", "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", " *\n", " */\n", "\n", ":root {\n", " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", " --xr-background-color: var(--jp-layout-color0, white);\n", " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", "}\n", "\n", "html[theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", " --xr-font-color3: rgba(255, 255, 255, 0.38);\n", " --xr-border-color: #1F1F1F;\n", " --xr-disabled-color: #515151;\n", " --xr-background-color: #111111;\n", " --xr-background-color-row-even: #111111;\n", " --xr-background-color-row-odd: #313131;\n", "}\n", "\n", ".xr-wrap {\n", " display: block;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", "\n", ".xr-text-repr-fallback {\n", " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", " display: none;\n", "}\n", "\n", ".xr-header {\n", " padding-top: 6px;\n", " padding-bottom: 6px;\n", " margin-bottom: 4px;\n", " border-bottom: solid 1px var(--xr-border-color);\n", "}\n", "\n", ".xr-header > div,\n", ".xr-header > ul {\n", " display: inline;\n", " margin-top: 0;\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-obj-type,\n", ".xr-array-name {\n", " margin-left: 2px;\n", " margin-right: 10px;\n", "}\n", "\n", ".xr-obj-type {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-sections {\n", " padding-left: 0 !important;\n", " display: grid;\n", " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", "}\n", "\n", ".xr-section-item {\n", " display: contents;\n", "}\n", "\n", ".xr-section-item input {\n", " display: none;\n", "}\n", "\n", ".xr-section-item input + label {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-item input:enabled + label {\n", " cursor: pointer;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-item input:enabled + label:hover {\n", " color: var(--xr-font-color0);\n", "}\n", "\n", ".xr-section-summary {\n", " grid-column: 1;\n", " color: var(--xr-font-color2);\n", " font-weight: 500;\n", "}\n", "\n", ".xr-section-summary > span {\n", " display: inline-block;\n", " padding-left: 0.5em;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-summary-in + label:before {\n", " display: inline-block;\n", " content: '►';\n", " font-size: 11px;\n", " width: 15px;\n", " text-align: center;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label:before {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-summary-in:checked + label:before {\n", " content: '▼';\n", "}\n", "\n", ".xr-section-summary-in:checked + label > span {\n", " display: none;\n", "}\n", "\n", ".xr-section-summary,\n", ".xr-section-inline-details {\n", " padding-top: 4px;\n", " padding-bottom: 4px;\n", "}\n", "\n", ".xr-section-inline-details {\n", " grid-column: 2 / -1;\n", "}\n", "\n", ".xr-section-details {\n", " display: none;\n", " grid-column: 1 / -1;\n", " margin-bottom: 5px;\n", "}\n", "\n", ".xr-section-summary-in:checked ~ .xr-section-details {\n", " display: contents;\n", "}\n", "\n", ".xr-array-wrap {\n", " grid-column: 1 / -1;\n", " display: grid;\n", " grid-template-columns: 20px auto;\n", "}\n", "\n", ".xr-array-wrap > label {\n", " grid-column: 1;\n", " vertical-align: top;\n", "}\n", "\n", ".xr-preview {\n", " color: var(--xr-font-color3);\n", "}\n", "\n", ".xr-array-preview,\n", ".xr-array-data {\n", " padding: 0 5px !important;\n", " grid-column: 2;\n", "}\n", "\n", ".xr-array-data,\n", ".xr-array-in:checked ~ .xr-array-preview {\n", " display: none;\n", "}\n", "\n", ".xr-array-in:checked ~ .xr-array-data,\n", ".xr-array-preview {\n", " display: inline-block;\n", "}\n", "\n", ".xr-dim-list {\n", " display: inline-block !important;\n", " list-style: none;\n", " padding: 0 !important;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list li {\n", " display: inline-block;\n", " padding: 0;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list:before {\n", " content: '(';\n", "}\n", "\n", ".xr-dim-list:after {\n", " content: ')';\n", "}\n", "\n", ".xr-dim-list li:not(:last-child):after {\n", " content: ',';\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-has-index {\n", " font-weight: bold;\n", "}\n", "\n", ".xr-var-list,\n", ".xr-var-item {\n", " display: contents;\n", "}\n", "\n", ".xr-var-item > div,\n", ".xr-var-item label,\n", ".xr-var-item > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-even);\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-var-item > .xr-var-name:hover span {\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-var-list > li:nth-child(odd) > div,\n", ".xr-var-list > li:nth-child(odd) > label,\n", ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-odd);\n", "}\n", "\n", ".xr-var-name {\n", " grid-column: 1;\n", "}\n", "\n", ".xr-var-dims {\n", " grid-column: 2;\n", "}\n", "\n", ".xr-var-dtype {\n", " grid-column: 3;\n", " text-align: right;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-var-preview {\n", " grid-column: 4;\n", "}\n", "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", ".xr-preview,\n", ".xr-attrs dt {\n", " white-space: nowrap;\n", " overflow: hidden;\n", " text-overflow: ellipsis;\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-var-name:hover,\n", ".xr-var-dims:hover,\n", ".xr-var-dtype:hover,\n", ".xr-attrs dt:hover {\n", " overflow: visible;\n", " width: auto;\n", " z-index: 1;\n", "}\n", "\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " display: none;\n", " background-color: var(--xr-background-color) !important;\n", " padding-bottom: 5px !important;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", ".xr-var-data-in:checked ~ .xr-var-data {\n", " display: block;\n", "}\n", "\n", ".xr-var-data > table {\n", " float: right;\n", "}\n", "\n", ".xr-var-name span,\n", ".xr-var-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", "dl.xr-attrs {\n", " padding: 0;\n", " margin: 0;\n", " display: grid;\n", " grid-template-columns: 125px auto;\n", "}\n", "\n", ".xr-attrs dt, dd {\n", " padding: 0;\n", " margin: 0;\n", " float: left;\n", " padding-right: 10px;\n", " width: auto;\n", "}\n", "\n", ".xr-attrs dt {\n", " font-weight: normal;\n", " grid-column: 1;\n", "}\n", "\n", ".xr-attrs dt:hover span {\n", " display: inline-block;\n", " background: var(--xr-background-color);\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-attrs dd {\n", " grid-column: 2;\n", " white-space: pre-wrap;\n", " word-break: break-all;\n", "}\n", "\n", ".xr-icon-database,\n", ".xr-icon-file-text2 {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", " height: 1.5em !important;\n", " stroke-width: 0;\n", " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", "</style><pre class='xr-text-repr-fallback'><xarray.Dataset>\n", "Dimensions: (pulse_slot: 2700, sa3_pId: 400, trainId: 81)\n", "Coordinates:\n", " * trainId (trainId) uint64 1501384603 1501384604 ... 1501384683\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n", "Dimensions without coordinates: pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2144041 0 ... 16777216\n", " nrj (trainId) float64 925.4 925.5 925.5 ... 926.1 926.1 926.1\n", " FastADC2_9peaks (trainId, sa3_pId) float64 -104.5 -541.0 ... -111.5\n", " SCS_SA3 (trainId, sa3_pId) float64 96.74 318.3 ... 318.1 127.5\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0014</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-3c07123a-4595-4fa0-8f05-e79ffadbcf59' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-3c07123a-4595-4fa0-8f05-e79ffadbcf59' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>pulse_slot</span>: 2700</li><li><span class='xr-has-index'>sa3_pId</span>: 400</li><li><span class='xr-has-index'>trainId</span>: 81</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-c149570e-4ddc-4835-8db7-bcd86f9ff6f0' class='xr-section-summary-in' type='checkbox' checked><label for='section-c149570e-4ddc-4835-8db7-bcd86f9ff6f0' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>trainId</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>uint64</div><div class='xr-var-preview xr-preview'>1501384603 ... 1501384683</div><input id='attrs-cb3b83d8-a21b-420d-bb70-f057038dc81f' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-cb3b83d8-a21b-420d-bb70-f057038dc81f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-55a633b1-b2aa-4ff5-869c-ae29e1351a54' class='xr-var-data-in' type='checkbox'><label for='data-55a633b1-b2aa-4ff5-869c-ae29e1351a54' 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([1501384603, 1501384604, 1501384605, 1501384606, 1501384607, 1501384608,\n", " 1501384609, 1501384610, 1501384611, 1501384612, 1501384613, 1501384614,\n", " 1501384615, 1501384616, 1501384617, 1501384618, 1501384619, 1501384620,\n", " 1501384621, 1501384622, 1501384623, 1501384624, 1501384625, 1501384626,\n", " 1501384627, 1501384628, 1501384629, 1501384630, 1501384631, 1501384632,\n", " 1501384633, 1501384634, 1501384635, 1501384636, 1501384637, 1501384638,\n", " 1501384639, 1501384640, 1501384641, 1501384642, 1501384643, 1501384644,\n", " 1501384645, 1501384646, 1501384647, 1501384648, 1501384649, 1501384650,\n", " 1501384651, 1501384652, 1501384653, 1501384654, 1501384655, 1501384656,\n", " 1501384657, 1501384658, 1501384659, 1501384660, 1501384661, 1501384662,\n", " 1501384663, 1501384664, 1501384665, 1501384666, 1501384667, 1501384668,\n", " 1501384669, 1501384670, 1501384671, 1501384672, 1501384673, 1501384674,\n", " 1501384675, 1501384676, 1501384677, 1501384678, 1501384679, 1501384680,\n", " 1501384681, 1501384682, 1501384683], dtype=uint64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>sa3_pId</span></div><div class='xr-var-dims'>(sa3_pId)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>772 776 780 784 ... 2360 2364 2368</div><input id='attrs-a303215d-9744-460b-a2ce-e5085d1eae23' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-a303215d-9744-460b-a2ce-e5085d1eae23' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a7aa7a8c-5900-45da-a06d-0cc870fdd889' class='xr-var-data-in' type='checkbox'><label for='data-a7aa7a8c-5900-45da-a06d-0cc870fdd889' 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([ 772, 776, 780, ..., 2360, 2364, 2368])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-48a47511-be72-45bb-a0ad-ba775bf269e3' class='xr-section-summary-in' type='checkbox' checked><label for='section-48a47511-be72-45bb-a0ad-ba775bf269e3' class='xr-section-summary' >Data variables: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>bunchPatternTable</span></div><div class='xr-var-dims'>(trainId, pulse_slot)</div><div class='xr-var-dtype'>uint32</div><div class='xr-var-preview xr-preview'>2144041 0 ... 16777216 16777216</div><input id='attrs-f078dd94-d9f7-406e-90bc-fdc8486bafd5' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-f078dd94-d9f7-406e-90bc-fdc8486bafd5' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-40c77f96-3b7f-40d5-99b6-6c4eaa99e2ae' class='xr-var-data-in' type='checkbox'><label for='data-40c77f96-3b7f-40d5-99b6-6c4eaa99e2ae' 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([[ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " ...,\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216]],\n", " dtype=uint32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>nrj</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>925.4 925.5 925.5 ... 926.1 926.1</div><input id='attrs-4ea995c6-5009-4b2a-ba38-70a8b0dfd336' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-4ea995c6-5009-4b2a-ba38-70a8b0dfd336' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4c9a6973-adb0-4b22-b505-7b5ba8d04b23' class='xr-var-data-in' type='checkbox'><label for='data-4c9a6973-adb0-4b22-b505-7b5ba8d04b23' 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([925.44986356, 925.45787299, 925.4819021 , 925.47789716,\n", " 925.4819021 , 925.50593247, 925.50993765, 925.51394287,\n", " 925.51394287, 925.5219534 , 925.52595872, 925.54999137,\n", " 925.55800253, 925.55800253, 925.55800253, 925.55800253,\n", " 925.55800253, 925.55800253, 925.55800253, 925.6421281 ,\n", " 925.63411548, 925.63411548, 925.66616678, 925.65014085,\n", " 925.66616678, 925.66216025, 925.68619997, 925.67818659,\n", " 925.68219327, 925.6982203 , 925.71024095, 925.75031201,\n", " 925.73829033, 925.74630475, 925.73027605, 925.75031201,\n", " 925.75832664, 925.79038655, 925.80240958, 925.78237136,\n", " 925.81844078, 925.79439419, 925.81844078, 925.81042511,\n", " 925.82645659, 925.85050485, 925.85050485, 925.85451302,\n", " 925.87054602, 925.87455436, 925.87455436, 925.87455436,\n", " 925.87455436, 925.87455436, 925.87455436, 925.9346836 ,\n", " 925.93067474, 925.94671038, 925.93869249, 925.95873748,\n", " 925.97878334, 925.96675572, 925.97878334, 925.98279261,\n", " 926.006849 , 926.006849 , 926.01486807, 926.03090663,\n", " 926.01486807, 926.03892612, 926.05897545, 926.04694574,\n", " 926.07100546, 926.07902564, 926.07501553, 926.08704597,\n", " 926.11110776, 926.12313913, 926.11110776, 926.13918144,\n", " 926.12313913])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>FastADC2_9peaks</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-104.5 -541.0 ... -588.0 -111.5</div><input id='attrs-94a9319f-93e7-4f4d-9f76-e237eea711b7' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-94a9319f-93e7-4f4d-9f76-e237eea711b7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c45b919d-2a29-4e63-bc87-c97511c605ea' class='xr-var-data-in' type='checkbox'><label for='data-c45b919d-2a29-4e63-bc87-c97511c605ea' 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([[ -104.5, -541. , 346.5, ..., -452.5, -392.5, -409.5],\n", " [ 904.5, -159.5, 89. , ..., -876. , 491.5, 326. ],\n", " [ 224. , -728.5, 908.5, ..., -1197.5, -406. , 137. ],\n", " ...,\n", " [ 745. , 537. , -256. , ..., 442. , -368.5, 298. ],\n", " [ 873. , 454.5, 295. , ..., 184. , -105. , -425. ],\n", " [ 155.5, 591.5, 226.5, ..., 468.5, -588. , -111.5]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>SCS_SA3</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>96.74 318.3 207.7 ... 318.1 127.5</div><input id='attrs-49e548a5-7f7d-4eeb-872f-aa3715f1301c' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-49e548a5-7f7d-4eeb-872f-aa3715f1301c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-bd1be01d-b9d0-42c1-94b8-7f41385adc82' class='xr-var-data-in' type='checkbox'><label for='data-bd1be01d-b9d0-42c1-94b8-7f41385adc82' 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([[ 96.74268341, 318.27020264, 207.72872925, ..., 35.73929596,\n", " 163.54811096, 174.30079651],\n", " [299.78881836, 92.3753891 , 70.10060883, ..., 69.12624359,\n", " 524.85430908, 87.67070007],\n", " [404.20025635, 279.92312622, 314.24661255, ..., 172.837677 ,\n", " 268.44836426, 64.08099365],\n", " ...,\n", " [189.83627319, 57.99938965, 23.51241302, ..., 145.43904114,\n", " 465.1857605 , 183.91159058],\n", " [409.84234619, 311.26708984, 343.91918945, ..., 346.11724854,\n", " 174.09924316, 13.22632408],\n", " [184.24003601, 28.4738636 , 332.86248779, ..., 1.58539009,\n", " 318.09182739, 127.50392151]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-34f13d32-4ada-4e0c-9576-b5cf9f673846' class='xr-section-summary-in' type='checkbox' checked><label for='section-34f13d32-4ada-4e0c-9576-b5cf9f673846' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>runFolder :</span></dt><dd>/gpfs/exfel/exp/SCS/202202/p002956/raw/r0014</dd></dl></div></li></ul></div></div>" ], "text/plain": [ "<xarray.Dataset>\n", "Dimensions: (pulse_slot: 2700, sa3_pId: 400, trainId: 81)\n", "Coordinates:\n", " * trainId (trainId) uint64 1501384603 1501384604 ... 1501384683\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n", "Dimensions without coordinates: pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2144041 0 ... 16777216\n", " nrj (trainId) float64 925.4 925.5 925.5 ... 926.1 926.1 926.1\n", " FastADC2_9peaks (trainId, sa3_pId) float64 -104.5 -541.0 ... -111.5\n", " SCS_SA3 (trainId, sa3_pId) float64 96.74 318.3 ... 318.1 127.5\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0014" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "run_b, ds_b = tb.load(proposal, 14, fields,)\n", "ds_b" ] }, { "cell_type": "markdown", "id": "750f5b79", "metadata": {}, "source": [ "Here we get a warning that indicates that the peak-finding algorithm and the bunch pattern used to extract the peaks do not match. If the bunch pattern in the `load` function was set correctly, this is most likely due to a failure of the peak-finding algorithm. To check, we can plot the average trace and check the integration parameters:" ] }, { "cell_type": "code", "execution_count": 8, "id": "bfbfe9bc", "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAgAElEQVR4XuydBXgU1xbHD67B3YOEIMEJSXC3UgoULxRKCxTaYm0p7lJoS0vtAaW4Q4Hi7hY0BNcAwd2dvntmmWV2MnJnd2azuzn3fXzvveydK/87M/vbc+85J95/rAAVUoAUIAVIAVKAFCAFSIE4o0A8AsA4s9Y0UVKAFCAFSAFSgBQgBQQFCADpRiAFSAFSgBQgBUgBUiCOKUAAGMcWnKZLCpACpAApQAqQAqQAASDdA6QAKUAKkAKkAClACsQxBQgA49iC03RJAVKAFCAFSAFSgBQgAKR7gBQgBUgBUoAUIAVIgTimAAGghQv+5s0buHLlCvj5+UG8ePEs7ImaJgVIAVKAFCAFSAFSwKYARvh7+PAhZMuWDeLHj68oCwGghXdLdHQ05MyZ08IeqGlSgBQgBUgBUoAUIAWUFbh06RLkyJGDANDdN8j9+/chTZo0gAuQKlUqd3dP/ZECpAApQAqQAqRAHFTgwYMHggHq3r17kDp1agJAd98DuAAoPIIgAaC71af+SAFSgBQgBUiBuKkAD3/QFrCF9wbPAljYPTVNCpACpAApQAqQAnFQAR7+IAC08MbgWQALu6emSQFSgBQgBUgBUiAOKsDDHwSAFt4YPAtgYffUNClACpACpAApQArEQQV4+IMA0MIbg2cBLOyemiYFSAFSgBQgBUiBOKgAD38QAFp4Y/AsgIXdU9OkAClACpACpAApEAcV4OEPAkALbwyeBbCwe2qaFCAFSAFSgBQgBeKgAjz8QQBo4Y3BswAWdk9NkwKkAClACpACpEAcVICHPwgALbwxeBbAwu6paVKAFCAFSAFSgBSIgwrw8AcBoIU3Bs8CWNg9NU0KkAKkAClACpACcVABHv4gALTwxuBZAAu7p6ZJAVKAFCAFSAFSIA4qwMMfBIAW3hg8C2Bh99Q0KUAKkAKkAClACsRBBXj4gwDQwhuDZwEs7J6aJgVIAVKAFCAFSIE4qAAPfxAAWnhj8CyAhd1T06QAKUAKkAKkACkQBxXg4Q8CQAtvDJ4FsLB7apoUIAVIAVKAFCAF4qACPPxBAGjhjcGzABZ2T037gAKv3/wHCeLH84GZ0BRIAVKAFCAF3KUAD38QAFq4GjwLYGH31LSXK9B74WFYGXkVNn5dBTL6JfHy2dDwSQFSgBQgBdylAA9/EABauBo8C2Bh99S0QQXuPH4Bj569glzpkxu80prqeb5bITTcs2YAfFW9gDWdUKukAClACpACPqcAD38QAFq47DwLYGH31LRBBUTgCu9bHTKlSmrwavOqn7nxELacugXDlh8jADRPVmqJFCAFSIE4owAPfxAAWng78CyAhd1T0wYVEAFw2ifBUDkgo8GrzasujkNskSyA5mlLLZECpAApEBcU4OEPAkAL7wSeBbCwe2raoAIEgAYFo+qkAClACpACHqkAD38QAFq4dDwLYGH31LRBBUQAnNq+LFQpmMng1eZVJwugeVpSS6QAKUAKxEUFePiDANDCO4NnASzsnpo2qICnAmCPGgHQrQY5gRhcTqpOCpACpECcVYCHPwgALbw9eBbAwu6paYMKWAGA95++hP/++w/SJE/MPRq5BZAAkFs6qkgKkAKkACnAFODhDwJAC28VngWwsHtq2qACInhNYVvAVU3YAn71+g3k77dKGMWp4XUhccL4XCMiAOSSiSqRAqQAKUAKqCjAwx8EgBbePjwLYGH31LRBBcwGwPtPXkLxoWuFURgJLUMAaHDhqDopQAqQAqSAgwI8/EEAaOFNw7MAFnZPTRtUgADQoGBUnRQgBUgBUsAjFeDhDwJAC5eOZwEs7N4jmt5/4S78uvE0DHivMOTLmNIjxiQfBI7x0KV79sDLU9qxLeBA172AzbIAdmcOIN2ZIwgVUoAUIAVIAVKARwEe/iAA5FHSyTo8C+Bk015zmWhVy5shhZDT1hOLfMvVGwDwxLUHsObIdfiskj8kT5zQE2WlMZECpAApQArEkgI8/EEAaOHi8CyAhd17RNMiXCVhDhAnmSOEJxZvBEBxzJ9V9Id+9Qt7oqw0JlKAFPABBdYfuw7XHz6D1uVy+8Bs4s4UePiDANDC+4FnASzs3iOaFkElfjyAc6Pq647p2cvX0G5KOFQskBG6Vs2vW9+MCnIA/LtdGagWmNnlpqVbwHtYfuHMnPmF5eNR2gIW64TkTQdzO4a6PFZqgBQgBUgBJQXEd836npUhfybPPMZDKxdTAR7+IAC08M7hWQALu4+1phHidp29DaH50kPggNX2cUSN1gfAmbsvQP8lR4RrxPo3Hz6HjH5JLJuPZQDIYgAWH2LzAiYAtGz5qGFSgBSwUAHx/TivYwiUy5vewp6oaTMV4OEPAkAzFZe1xbMAFnYfa01/Necg/BtxBT4okQ2WHLpiCAD/2nYOhq84LlwzolFRwEDKY1afhL71AqFjpXyWzMkMAMRgzw+fv4JUSRPZx4hjNwMAu1UvAD1qOjqBkAXQkluBGiUFSAGZAuK7Zn6nUAj2T0f6eIkCPPxBAGjhYvIsgIXdx1rTcqASB3JuZD14yqyDKZKoOy1IAVA+AR4LojOTlo93UtsyUJ15AcfHfeu35cyNR3Ds6gNoUCwrxIv37u/i573mR8CiA9Gw6PNQKJkzrXAtAaAzq0HXkAKkgCcpIL4fF3QOhbJ5CAA9aW20xsLDHwSAFq4mzwJY2H2sNa0GgHhebfe5O7C9d1XIkTa54vg8AQBxYAXYWZc13SvZIVCc0/8+Kg11imaJMXbpnDOkTMKurQgJE8QnC6DFd+Hh6HuQJlliyJVe+X6yuHtqnhTweQXEdxv+uC2dmwDQWxachz98EgDff/99OHToENy4cQPSpk0LNWrUgO+//x6yZctmX7s1a9bAoEGD4OjRo5A0aVKoVKkS/PDDD+Dv72+vs2XLFujZs6dQB6/99ttvoXPnztzrz7MA3I15UUU1ABSn8E3tgqoOHhO3noWRK08oztZdFkCx84MDakLaFLYcvuKcPq+SD3rXCdQEQPwQHTfal/e3A+DuPtUhS+qkXKso109rC7gc25KZx7Zm4mK5fO8plB+9UZi6VfdGXNSV5kwKSBV4B4BhDADTWi7O81evIUnCBJb34+sd8PCHTwLguHHjIDQ0FLJmzQqXL1+Gr7/+WljrnTt3Cv997tw5KFy4sAB3HTp0gPv370OPHj2E5MkHDx4U6pw/fx6KFi0Kn332GXTq1Al27NgBXbp0gTlz5kCTJk247h2eBeBqyMsq8QLghduPIR77j9R6U2XsJoi6/URxxmpf8rjVuuLwVajLLHMisBmRTG28rgLgJxX8odhgmxOICIB4VhCdWjJpeAQTAPKt3pZTN+Hjv8MJAPnkolqkgFMKiO+jf7qEQalc1gLgz+tPwc/rTwM5nDi1VA4X8fCHTwKgXLp///0XPvjgA3j+/DkkSpQIFi5cCC1bthT+f/z48YXqy5Ytg4YNG9rr9O7dG/C648dtDglY0PoXEREBu3bt4lodngXgasjLKvEAYPvyeaDwwDXCzE6PqAuJ2HYpFq1r1QDw02l7Yf3xG1CG/Tpd+HmYYbWcAUAEuei7T9lWdjLhTKAStHVgMfrkADhm9Qn4Y/NZGNawCLQJzaM4VnlbXzEnkJ4qTiBmWQBfv/kPJjEHHDzkbfVL3vACqVxAAGiWktQOKaCugPg+WswAsKTFACj2FZjFD1azIzhUnFeAhz98HgDv3LkDn3/+uWAJ3L59u6BmVFQUBAYGwu+//w7t2rWDR48eCZY+FGz1alvYEtwSLlmyJPzyyy/2FVi8eDE0a9YMnjx5IoCkXuFZAL02vPFzPQBsXDI7/HPwsn1qhwfXsnvPOgOA0muc2Qp0BgCb/W8XhEfdgS+r5YdetQpyA6DYV0LmJHKGOcUoFfl4xD6kdcU6ZgHgvL0XofeiSNvzwRGuxxPuy63MAtiWLICesBQ0Bh9V4OiV+1B/vO17c2nX8lA8ZxpLZ0oAaJ68PPzhswCIFrzffvtNgLWQkBBYvnw5pE//LobR1q1boWnTpnD79m14/fq1sGW8cuVKSJPGdoMHBAQIcNi3b1/7iuAWcvny5eHKlSvC9rK8oEUR/4kFFyBnzpzCFnOqVKnMW1kPb0kPAOXDjw0APHjxLixmEIrwJoZqkY9LbQv4a3ZNvr4r7dURmJTmXDZPWtgbdVeoh1vA2N/3zAKIJQEDwLOcAIj1MZdyB7alLBazAXD48mPw1/bzQvPeAoDbTt+ENpNpC9jDXwc0PC9WQHokZ9kXFSAoR2pLZyO+1wplTQWrulW0tK8dZ24JOeC7sHPdSpEdLO3cDY37FAAOHjwYhgwZoinb3r17oUyZMkKdW7duAVr/Lly4IFyXOnVqAQJxoa9duyZY+HBbGLeCHz58CAMHDoSECRPCunXrhDoIgO3bt4c+ffrY+8RzgBUqVICrV69CliwxPUHVxkgAqH23RwyqBamT2SyqVlkA7zx+AWmTJ7I/6GI/zcvkhHn7LikO8ABzAkkncwLpXDkfg8YAKNBvlS4AShtFAAwZtcGhHylgSj9Q00AKZrEFgBjkO2kizzigTQDohm8R6iJOKxA8Yj3cYGeWsSz/sgIUze4eACzMAHClhQD48NlLCHp7Pvt/H5VikR1iGnS8feF9CgAR6PCfVsmTJ4/g0Ssv0dHRgiUOLXho6RswYACsWrUK9u3bZ68q1sHzfWgxdGYLmCyAADcePIPgkY6go/cgIQDeevQccEtvyLJjqtXVLFN6W8A7z96CVpP2QIPi2eDXliV1QVMcgNUAqHZm0QgA4pk9DNDqauGxAI5ceRwmbj0H7jgMzjOf7advwUeT9whVvcVqyTMvqkMKeIoCZRkAotOarwHgrxtOw4/rTgnz6levEHxWKa+nSG7aOHwKAF1R5dKlS5ArVy7YtGkTVKlSBXr16iWcB9yzx/blgQWtehjqBa18YWFhgFvI6Bhy7Ng7IMGzhBhehpxA1FejyZ87Yf8F27Ynb4kYWAuKD7V5y2oVZwGwDYOEbQwWsIht8GxTWw2AagedPRUAxXFp5R9efeQqTGZbyT+3KAnZ0yTTW1KXPicAdEk+upgU0FWgzPD1wo9zLCu/qgiFs1l7lEl8x1htARSd8XBeVmaZ0hXYwgpxEgDDw8MB/+FWLcYAxJAvuL2LgIfx/JIkSQIbN24UYgPilq24BYxn/U6cOCF4/SZLlsweBgZDwKCDCEIfegFTGBjtO5YHrOQtWA2AH/21B7az8x4EgOprN2LFMeYFrH0GkAcAxTqVAjLC9E+CLXm9vXj1BhInjA94hqc1W1vpulrSITVKCsRRBcoMX8cA8IUwezyTh2fzrCx6APjq9RtYEXkVcqdPAcXZeURnz+7xAOD5W49h2s4o6FQ5L2RNbe2PWSs0jZMAGBkZCd26dRPCtTx+/Fhw1qhTpw70798fsmfPbtd57ty5MGbMGDh16hQkT55c2BrGYNHoHSwWDASN8QHFQNBoFaRA0OYD4KGBNaHE0HW6z4CzFkBPBcCCmf1gTY+YoQ7MsACeuv4Q5u29JBxwTs8yk+gVIwCo5Xksjh29BdFr0Oyy+eQNaDdlL/SvXwjQStCKAwAxTqR4xtTs8VB7pIAvKxA0aI2Q4xzLapbdKDBLTAA0M4SUHgBO2XHefkzoo5BcMPyDIEPyj1p1HA5euMe8mVPbf/DiFnCT0jlgy6kbLJZsVnj+8g2sYjsZA5YegZev/4Mgdu5xGTv/6G0lTgKgJy0SzwK4c7z4oOKXoejYYEXfzlgA4yoABmROCWt7VI6xDGYAoNgG5jSe3K6s7lK7EwDfsPtQmmdZd3CSCqWGrQN06MEy+9NyugD4+6YzMHbNSRjzYTFoxhx+qJACpICjAvg8YbiX8vkyxHgupe8iPGuMZ47lZW74RfjuH1sIqT19qwvfL2JcV6Na6wFgh6l7YcOJG/ZmjZ79FdtHh8C7T14K7YTlSy+8U05cewhtQ3MLiQjwPLq05GepQUuyH7Vt2OfFctgihaAH8S12PrJG4cxGp+mW+jz84bNhYNyisE4nPAvgznE2/mMHHLh4D9Yxq1MBZn1yttxmZ0K+WXgYmpfNCbWLOHpDOwOANQplZoGcr+sOx4gFENMJfb/qJFRjAPTnljNsu/C20L6RM4D7+9ewW8/EeTnrBbyrTzUIHWVLWyYWdwBg5lRJ2Eu5hq62VgDgYhaUWw5685nH9aClR+FvBqWh7MVrtDgA4GcMAJlzD5bzo+opbgeJ68ai7sC5UfWNdkf1SQGfV0Dc5lX6kSR9n6PV/dOKMZ0lhiw7ClN2RNl1csVipgeAnzAA3GgCAKotanoGr7ff/sBUq/NesayCM6F/H1sosE1fVwH/DCk075Me8w7BK/bDV3RCdMdNxcMfBIAWrgTPAljYfYymxYdLLZ8t71i+WRABC/ZHOwCVeK0zAMjbrzRjiPQaJS/gCVvOwqhVtph7+Atv51lzABDPg2AcQKNhYGIbADFzidZ5GdHDF/XSA20tz2NxLfBFii+8j9kv5p5ML/n9kYb9Aj/EnH+MltLMAii+oGdLAFBte4oA0KjCVD+uKSA+I/hD/K+PbWHUlN7nA1ksUkxvKS9yAFR6h5y9+Qgw9We1QHVrGabz7Dr7gNA8ZlgKzpMOGpfKARUKZLB3aTUASi2DWvfBWmZEqTVuq1BlRodgqFggo2r1ByzkjJgRql5QFuE8IVoYp7Iz0lY6yvHwBwGghU87zwJY2H2Mps0CwHZTwmHzSZuJXA4LVgKg1CInTm7/hTvQ5M93qfnE8fRbHAmz9lwUqoXmTQ+7znkeAEr1e8TO2aRMklAYr5Et4KLZU7HD0GmgflBWCMv/7kUptoEWwDYhuWHm7ouwuGuY6mFmswFQevMpxS80AwDnfBYCLSftFrpS81AkAHTnG4b68kYFeAFwUIPC0L58TAAc/O9RmMqcJdSeeek7bdHnoVA6d8xtZKwTwGKrvmBOHvIifX9YDYB4VhiPSekVfN/UG79NqKYHgPeevFA8416fWRJ/b1VKryunP+fhDwJAp+XVv5BnAfRbMa+GdBvzu7rvnF2M9qBkcRPbsBIAsQ/5Vp+8PyUARKeFPefvCEN0dQsYLYC9ahaEgP7GAkErWQBxPCeG1YGFzJraf8kRGPZBUWjJttXzS4JMS9fm1PC6gver9IWq9tKVAuD1B7YwDs3K5GBn4YorLreVACj1HhTHhS9ajP9otEgtgGYBIJ5JfPjsFaRmVkkqpEBcU4AXAAczAGznIgAOZTnQ23LmQBfXQQqA7ZnxYdNb44P0fc67ZnrfT35JEwrvAr0iBcCZHco5WCnl16oBoJLFVa9fI5/z8AcBoBFFDdblWQCDTbpUPS4B4McsR+yWtwd5pQ+1EQDEOIDJEyeAz6bvs8cRrFs0ixB+5IHkJaGWCk66WGoAiFbN0izWllgmtCkNnWbsV1zn2kUyw4Q2ti0apReZkqUtk18SeyT/Jmw75cdmxgFwEPOGy8A8icXAqbg1M7+zcvBppXF9U7sgdK2a32HczgKgNCzF3I4h0GKizQK44qsKUCRbzCwFPBZA8WC5OzIduPQA08WkgAUKKAEgxnLFs94dJe8ihDfcTWC/l4RUlmIxYgH0eABkuzCi17OW1Pi+EXMk6wHgXXamsCQ7uiIvBIAW3Mye1CQBoPmrwWMBPMm8uWr/bDufgQUh7smL18L/NgqAS1j+3qEsT65W4QHAnd9Vg7DRjk4g2CZ6zZWTZE75pUUJ6Db3kGp3WuN3BQBHsSwfE1iWD6lG+L9Ps3AyNd+edREHpQaA0sTx0gkoAWAq9kv78ODahm8QZwGQZXdk1mNlJxDxC1BuIcVt+f9tPgu4VWN1/DPDQtAFpIBJCigBoNIPOcxHvpftpBy8dFdwfEie2HZkRQkA5cd1pO2NacI88tlOh7zU+2UbHLv6IMbf3WkBTMG+Kx6//a7Qkhe3ssWjR7NYNILy7PjNkcv34dNp+6B33YLQqGQO++Wi86W8PUwEgLsjzsYy1Ft+Hv4gC6Ceii58zrMALjRv+FJ3WAD9+6wA5m9gWeEBQDH0hziIpIniwzMW20kKN3pbAVgXX2JzWIiDH9baUgapFVcAUAqn2L6VANi4VHb4qVkJxWmoAWBk9H1o8Nt2h2uUAHAPO2PZ/K01Tt6BEgBK18LIzSLNTNCJpW8SoVXNeieuszMAOIBty8/YfcHhvjEyVqpLClipwJMXryDi0n0omyctJExgOxriTOEFQIyXN4L9UMSC3qyYWhML7hBM22V7TsQSzn7YZkr1Li2r2lEd6TXOAGB4P9aPX8z0r2o68Lz3eTTE85Bi2lIRACuP3cQcXZ7EeF9o9dmjRgB0q1GAp0vDdXj4gwDQsKz8F/AsAH9rrtfUA0B8oSRmLxK9l0lsngE8N7KeEFrk2cvXQoqiCt9vchBmXPPi8M+By/YtW/wQz81h9ggsRiyA7gBA+aqOZy/Wr+YcVF1sVyyASgD4lP3ajYhmoYGOXRdSuEk1wv+tBID4hbOgc5h9jPdZPC2tVH5WAaBcJKXAsNJ79fjQOpCM/cKXFzULYCMWNukgC5sk1eQlO6TubIwz159gasFbFNDzujdjHmKA++4MILozkNAqi9g541Ts3G1NhZh1vAD4bZ2CMGb1SaEbKQAOZAA43U0AKIcpjPAwmzmD8RazABA9osWdIQRAdDQs//1GuHr/WYx3qF6fRmMZ8s6Vhz8IAHnVdKIezwI40azTl4g3Ijoy9KlbyKEd0VUd4xmheV+rqAFgTxbr6B+2ZWplEQGwPNtOvXzvqeGu4jQAlmQWwOaOFkBpnmRRTOkLiQcAMWVS1R82q66FmQAoTU6v1KE4dvyBkDRRAoezkq3L5YIRjWJmDuAFwAUshiHGv8RzmvL4l4ZvRLrAZxXAH1X1f90mhDEZzbY7rSrifZuRnfPd20891mf03Sf2H8py2NgXdQc+/J8tioL0TJoStOROn9xu4fqtVUl4r1g2wNRsaAkTLeXiXPFoS2YDFkA8btGMjUNvC1g+LoyccGQI/1ESPRjjXSspAOJ5yAIsUDQGk77BAkNjUTqOo9Y2ASCv6l5Wz1MBEGWUh83YxIJrtmdBNuU3r1zyeXsvQu9FtqjvRm90M5ZPBEBnH2RPB0D8Zf2lRRbARgwAx8kAUM+ZBM+1vPer4xYwWgBnsl+9SRLarGmeBoAYY6stcwJC8MQsIGJR+qK8wn5EiGczm7NMId+zjCFikZ7dkW/zW/XSNuMZoTZiV4HFB6Ohx7wI3Xepq6MUn1100NrHjquoFemPOPl9ixEIvmZxXbHUKJSJxQG0ZQ3Se78iAFZnMf0qjtlozxUs7d8IAM7acwH6LT6iOn4tmEL4mtY+GELyptPdueKZF++aSAFQ6ZrdfRCAkwjn+/S0tOpdwsMfZAHkXXEn6vEsgBPNOn2J1jmMjSeuwydT9+m+tLTa0LvRnR645EIzABC3jvEsmV7BLeC5LJ+uFCKUrnHlDKC8PbMBEKHn5ttfpRjAOQnbDsdgrqVzp4VO0/fb4yNKxyF9ISkBoFgXHVuypUnmNACeZdv5Um9CJW0xfSGmXMIfKF9Wzw8V2Za/+CtbbS3UrMNKACi/Z48ya0KKt/EYCQD1nhD6XKoABjrG+zQJszz3eZsazaovdynM6AHgYXbE4/3fdii+210BQDwuJPUSlmph5Ayg3vcGjzXty2r5odfbgPNolVwReVV4x+VIm9zhJtXri/eO1gNAbOdDll/4h6bFCQB5RfW1et4EgBtYKrYOzIMJi9ZLK7YBUIQGZx9kjD1XfMharlvN2wBwOossj4FS8Rxhl1m2iPpSAJROGrPB/Mk8XNUgSvy7FgCKL90otgVcxYktYAzPU48lX5da3aTj2X76FrNKhwsJ2bGgRW8aCzhrJQB2Ybp8W8cWI7PJnzsBw2GIz4TW2VeuG4oq+bQCogMcZncQj6fENgBint6lh67ECIQvLoQjAL7LBKL3fsUAxokSxFMFQCMWQL2+eABQ+uMO3xGDWHBqLItYOkoEQbHo9cV7g/IAoNJ7Q+99y9s/Tz0e/iALII+STtbhWQAnm3bqMi14W8+cAD5l8e7Em1atA28HwAUsfl3Tt2de9ESMDQDErZUvZjvnBKI0HzUAxHhe8nM74vW8FkBXAVCpP+kcig5aA3g2SCy4hb3z7C0QA1urvUxdsQA2lpyTJADUe0Loc6kCescpzFaLZwtY632N41ECQNwxwLO2WgXfU1oWQDMBcCQ7t9uKnd/Fc72BA1YrDksKgB3Z99ha9n2m9H4hAHSUjwDQ7KdS0p43ASB6gWLAYy0AxO24fH1tCbCtfLi0lsRVC+D8TqHQbMK71HFafeG5mnlu3gL2BACsUyQL/NKyhHDGj8cCiFtflcduVpVSzQlEeg+hl/amkzcgxD+9PSNHkYGrHWJyfVAim2DJsBQAJaFyCACtezkui7gCGGMTnZIwKLgvFHcCIAZpFgPIa20BGwVA/JEl5uN1BQDxeMhz9kyjUyEWVwwHGVImZmcca8KJaw+gzs+29GvyQgAYUxMe/iAAtPDNw7MAFnYfo2mth3Dt0Wt2c77atsX1B88cghbLYdGsX1dWAqARvc0EQGnWCq0x4NaK1gvYiBML9qNmAWwbmjtG6AbpuIaztHQfMSuhFgBiHDA8s8gLgJhyLa/sB4R4D41edQL+t+Usy+aRimX1qCgMpTADQDGAN/5/VwFQ6YtSfs9Ks6V8yLaA99EWsJFHhruuqHsHdh4VAwz7QjEDAPFZunyXOSZJ8nrLtXn+6jUU7P/OEiYCkpKGxgAwE5y58Qii3say03tPYXgt0Wggr4uOYnuj7sLoxkHQIjiXKQAoTVepBIDonT+L5TxfdCDa4WOeLWSj9x/vFjCmXMV3m1ax6pgAD38QABpdeQP1eRbAQHOqVdH9HIPWNmfR1SsFZFStp/UyWMMAUExBZlMyjAwAACAASURBVAQAMZcthtvA4g4AxBA1+KvSHX1hfCd0QDDDCYR3nc22ACL0oNOLvHzMAFAevFVapzc7B4fnBLUAUIQ3XgBU+wWP91voqA0OMbQePnsJQYMdz2o2ZBbA3S5YAHkAUDy4jXMjAOS9a43XE59f6Za78VY86wozAFBsY9kXFSAoR8zUhjhjPF+IxxzE4iwA7mQpLbvMPgD3WBxPLOgFzAuAvWoGQEGWyULNCUS6MrM/KwetJu1xWKxRDAwxdl4ejne5+NwGDlhlD+gvX3m195z4jsL/lho5XL1zMG87fueaUQgAzVDRA9twFwBK4+8ZceDYwcz0eGAZy+oj16DzTFsOWrU2bjALYLAkbZlwXfeKEJgllXCdO6CsGHsp/steju7oC+ckDyWidJvhy0z0+nP1NvQUAMSgr12q5OcCwIvMYlCJRcHXKpsZuKM1r974mFs4SgCotL4IgHvO3YFr7D5UK9iW2hlAHgBsyjz3xjLPPSxN/7dTsGKIzwQ5gbh6d7+7ngBQWUtRF3yntGSWM6ViFgDKnzEjAIjjmsgsbjwAqHXX8ERQwF2MFV9WiPHdI21XCwAxbVtB9h01etVxmMkshGaUxV3CoNEfO81oStPp0pUOePiDLICuKKxzLc8CmNF9c3ambQ/L0Sh+Uam1KX/gpfC2irnNf/7Wc/TP1qWgblDWGM2cYnlha8nywrobAJW+jM3QUK0NjOWkdebM7L7N3gJWG1+7sDwwlXnLqRUMFv4dswJiYFYx6blSXXyB8wAgHhhf+kV5qMvyfcqLHAArFsjgkMlFrI85efczILMSAMV8wHjetcXEXQSAZt/gb9sT30VKsSkt6tLyZs20AGoBYM/5LOA+y3YkFmctgDEBMDOcvvHQHuxZT7D/fVTabjTQq6v2OS8AzmFWxBo/vcvvLm9PCwCxLkIkBubG8DBmlCVdy8MHv9tC67hayALoqoIeen1sAGBeZlJvw7b32pf3j6GK/IHHRNRikvtWk3YzD8vb9muUbsoeLNPHYlmmD18HQHffWp4CgDhvhMSmZXKYAoDYHt5vPADoiuauWgAxGDTm5qz50xYHBxT5F9Wp4XWFFIPuLu5IMeaOOREAKqvMYwE0AppGnC8wE4gRADTjPnEXAJoxVmkbBIBmK+qD7cUGAIoyKp0h0QJAvcPC2G6XWfthZeQ1h5UiADT3xv2DWV/FGH5KLRt1AlEbnZ4FULxuxVcVTANAvCcb/OaYVQT7kVsAXVG0f/1CMHyFLWG9vPBsAbdg52gxWLb8fKT8iwrPR+I5SXcW9PxEa2zDktlipHJ05zjM6MtXABBDk+Ahf8yx2/ovx3Nu4r1tRC9RFzH0ifxaDIuE4ZHkRc2KpPRe/4c5SVxgxzZ+2XDaoRmjW8BG5qVW99jQ2szZK+Z8pPUzMesdniPUsgCqObuZMUalNpYyC2BDsgBaJa9vtBubAIgKHhhQE9KlSGwXU2sLmAcAlX55EgCae696GwCiE5BabC65MuhhK/fQE78kw5gTyJW3idTNVdSxNfkXpfyeRgtg0kT6AKiXf9WKOYxZfQL+eBu826ptIyvGrdSmqDt6dv/coqQl3WJGiO3M0aEUCwScKqk1oWbGM4j6ad0p1fEbXSc9APyCOW0sPxxzGxNjlqZnDl/yovRe1zo/7e4jLxWYtzOukVbhAUBLbiCNRskC6G7FvbC/2AZAeb5f+YP/HjtTheE+0iRPHMOpYlLbMsKvWrHg1pN/H8cYgPgZAaC5NyaevxTPYiq17G4LIN5DSo4b4tgwc4YIJc4qgXPyFADEhPdVmCe9ngUwNgBwFDvEPmHLOUFmo2DBszaDWfaEKBaG5G+WDzY+y7FqZXEHAP7K4OxHBmei45gV8+k1P0LxR43Yl9F10tsCFrONKM0FnTJwGxdz+wZm9YNyLKam3Eo1luW6/mbhYSuksKxNhFKMyKBlAbSsc5WG/2FOII3JCcTdsntXf+4CQAxsHP7WCUSqEG7fFcn2LpSA0i+/WgzyJjLY0ztXMmnrORixMubWGgGgufckvsDXs7R8asXdAKi3BVy3aBZYxTzIXSmeBIBZUycVDowfjr7vMCX5FjBuJ6M2mMsY/7c7itUAKH0H4NZc8sQJLZuW2Bd6dv/CaQFcsO8STGTvob8+LgO509sCDGuVKswzXYxpd2ZEXcFjtXiONMIZT7OK3CFD3q5ZADifzf3ekxcwcqV6TLlAFpalT71C8PHf4cIw8Ae+3FqIQbfvP7WFffGWYgPAEAaAW7xlyIbGafQe4W2chz/IC5hXTSfq8SyAE83GuEQNAJcz1/mi2bUB0I8lvo8cUlsXANW2DWIDAMPypXdwWDFDQ29pA4PmoudkqWHrXBpy+/J5YMqOKN024hoA6grytkKKxAnsTiLnRtaz3GKG3Y5iP8AmMADCYsWXhvQZR0tRU7YdblVxBgDFazDWKea91itSAJRa1s3UTskxTjouo32pbQFrbduK/SEAdqteQHMHQU8zT/zcEy2AZupk9B7h7ZuHPwgAedV0oh7PAjjRrMMlGK6iJfPgVbIA+ioAuqqZt1+PAVQxJZorhRcA9baAzbAAondwh6l7PeIMoDOanmbWpUQszI3VZcSKYzBp23m3AOAYBoDNPBQAg/3TAaZ01CtSABzUoDAMWXbMdO08CQBxcmYGKNbT112fZ0mVFGZ+GuxRW8Bmzp0A0Ew1PagtqwEQPcKq/rAZMHm3UiEA9KCbwcOG8gkLE/T3DhtMaBW9WF9+SRPCw2ev9JrR/Lwxy7+LAZ4xwK3V5fyoehAv3rvzbTyWFb0xxRYA7r9wR8jiUJ0dGzCjSLVwFwBWC8wEbVjKwQos9qMeRIvjw3hu8zvrAyC+G8/feixIkyhBPHj5+j+nAfAlOpScvgVlWIozP4lDSfe5B2HJoSuq8hv9chfnKA1Ijo3z3qfpmdPfbZYZypcKHsuY0QHPANIWsJF15eEPsgAaUdRgXZ4FMNikQ/WF+6OFA79qhQcA8Vq1WEyYL/br2gUFDzq1F5DU0YT3JeXKnOlacxTgBUBzetNuBdOBYSBzdwLgShYQFs/5Yf5hV4u7AHD48mPw1/Z3FkDxedveuyrkSJvc1Wk4POPuAkBx0F9Wyw+9ahXUnIMrACht2CiU4bXfMw/sP5kHdhnmUbzw8zB7c90YAC61AADF97LYEe+7NSU70oOGAV8rG3pVhuo/EgAaWVce/iAANKKowbo8C2CwSYfqeChay6OLFwDX9qgUI8OH2NFHIbmYp3CQKgCKOWOxPu9LypU507XmKNChgj9MfgsT5rTofCt4phGPMLgDAMXzembeq+hgkNANW8BD2RamaLWV/mjDVFelc6dzfgHeXhkbZwDFQWdjVp6dfap7LACWGb6O5dS2WdakAPnVnIPwb4T5FkACQMdbQS86gss3fyw24MwPEp7h8vAHASCPkk7W4VkAJ5sWLkPPsG81XPrlwaDVvvRalcsFs/co50jEbAdN2BbdnPBLikP9omp+wUpIAOjKSrr/2oKZ/eAkS+3nCcXbAdBdFkB1AAxjAJjW5aWMTQCUA4/SZMyyAA55vwh8zLLcGCmlmdOVuLUq/cL+kgHgMg4A5M3gIl0DaT+8P1h81QLIG7jeyJp6Sl0CQE9ZCZPH4S0AiBHg1x+/4dTsCQCdko0ukihQlp2r2sty/LqjWGEBdBcADll21O65LbUAYkyyUrnMBUB3bwG7EwCxL3mMVL17r+TQtXCXnbeUjxOdlzacUH93dqqUF2qzUEkdp+8D9OBvWCK7ZlcEgMryZE+TzC07BHr3gRWfEwBaoaoHtOk9AKgde05LSsw9vIidiUnLDh/z/kr1gKWhIcRRBc6ykC0Yu8/Me9VdW8AYqHnqzig7hIhzWMwAsKQXAeAmBkztGTjJi94XodQCGJI3HYzfeAbmdQyBcswrXqlUY04g5946gcg/n8bCyFRm4WR4S/Eha+3x84xa5jKkTKy4fazUNwEg74r4Tj29+97ZmfLwB20BO6sux3U8C8DRjGqV+XvZFvAi9aju/35RnkXBT2O/Xu1LTy/4sN4Y82dKCet7Vjb1S1WvT/qcFHBGge/qBgI6N+nlHzXSdmwDIKalKpHz3XNuZOzSuvL3gwjLzrandN2us7eFsFXykiNtMtjeu5pmV+L45BZj6RcobrUeunQPCrAjDu//ut00AAwavMbu7W4UANMkTyR4a2NR+rIfu+YE7GZe8JjvtmD/1XYNjPaDF/rqFrCZ96CntUUA6GkrYtJ4YhsAMWF1cfbFcPbmI4hgL8WeLG2RUnEVAMUXm5lWFZOWgJohBSxXwJktYAxPcuvRc5apJxV3xo1BS4/YU9RJt4DF59zVicqfX8xLXS8oq6vNOlyvljs3Z7pksO1b1wFw6aHL0G3uIcib0ZYp5NxNWxgYeZnavixUKZiJe25BgxgAvvWuNQpmegAoDf7cd3GkfUyYO7s7y1qSM11y7h/X0gDl3JOjirGqAAFgrMpvXeeeAoB6YEYAaN09QC37vgI9awZAFAO6H5sVd4gxqDZzTMWFW4pY0jLr0MGBtbhEGsgAcPquC0JdKQDKLf1cjSlUkr8nfmhaHD4sncPZ5mJcF333CVT4fpNie0YAEOMAhkfdsbcj/QJt/McOOHDxnvAZHk9R2wKWAuAfm8/A0xevNcPQFBm42p75xRUAxDiUaAXNnzklZPJLKoxT6/2M2T1Wd6/EDYCmLRY15DYFCADdJrV7O7IaAOftvQi9F737xSifnWgZcAcA/taqJHwx+6B7BabeSAEPUmAuO48WonIeTTrMY1ceQL3x2xQBRms6A5YcgRm7bQAYObgWBA22QaQ83JOzklgNgHrvIb0vQp4tYGkfWgAongF88eoNBPRfJUi2m4WhycLC0WDZfPIGzGNHbIZ/UBTSs1zPhRkAPmGQiMUVAJzYprSQkxgDU58eUU8XANlxVTg3qj4BoLM3tRdcp3ffOzsFHv6gM4DOqstxHc8CcDSjWmVu+EX47h91ABTPBum9eF0ZA11LCpACNgWmsG3Fqmxb8eLtJ5AoYTzImjqZojRaAIhn2DBHc7EcqVnWCcfYfv2XRMLM3THDNREA1rfrzPuuEwHw2cvXEDjAdu5u6zdVIVd6W0BtsR0MUv5T8xIOAOYKACZNFB+evXzjAJJ6Y1YL1E/PnW8oQADoG+sYYxYEgD66sDQtUkBBAQRAzBQhWubUXuxHr9yH+uO321uQ1ltz9Bp0YhYiLPLr+7HzYbMU4nWu+KoCO0uYWrgGc4NjdhP0kpUGh37FUpnpBau20gK45dRN+PjvcM37Ru+L0KgFUKszcQtYCoDbvq0qnLe78fAZBI/YIFweli89c84IcQBATF+HlsFsLDSJHrxhG9IzgNIxifPVa4MA0LdfN3r3vbOz5+EPsgA6qy7HdTwLwNGMahWyALqiHl1LCpirQPMyOaE0i2koBmdXe7FPYIA2atUJRQDEdGOYdgzL51XyAWbaEQs6CCgFbJfGtJO+E8T+77DcsJXHboKaLGcwWrPkBT/HMa8/ft3hIzPPAIaO2gBX7z/zGAAslDUVzOwQDMkSJ7B7hCMAJk2UAMqOWG8fJwLgrE/LgX+flQ5jr8hyF2N+Wj140wJAPA84k23pD1h6VFcXnn7MvZupNXcpQADoLqXd3I/VADiHbQH3oS1gN68qdUcK8CmAX/Dx4rFDXLIidebAj6RfAJjbG3N8i0XM84tn1QaxOID4zMvLqm4VAYEGizxfMP5NCpxKXzbyPsX2jQDgpTtPYNGBaBZiJw+kYzFB5cUoAK5iuZrnsjN4PzHHGjyDJ7XUaYWBMQJKGAD/lxYloQjz8MWCWlcZuxleMSuqXglgThxre/CFvlKzAE5qWwY+YwGi9QpZAPUU8u7PCQC9e/1URx/bACgGiDXyUvTRpaBpkQJuV0AKgE9evBLi0wVmSQWlWFoxaRG/AM6xcE3VFBLej29ZEjDnrFpZ3b2i0K4aAI5ceRwmbj0nfK70ZdOWbc1uZVu08vIj8wJuwryAMYRU5lRJ7Q4SSuNAq9nNh89ZaJWMMLV9cIwqYcwCeEXHAniYObasPHwV6rDMGSWG2jRCL2QE0bq/bIPjVx8IfzMLANERA0PPhLCxYdnxXTUoP3oj131iBgB+XSsAflh7Src/AkBdiby6AgGgVy+f+uBjGwDFFFEEgD56g9G0PFoBMe0cDrL1X7thx5nbiuMVvwAasMDFkZfvG57TGhYmpCALF6IGgGrZJcSO2kzeA9tO34rRL4JX0eypoM7PNo9lrS8qsY8kLHf4yeF1nQLA6uxsHaZVw/OLGBgZC/5tcruyDluteM5y34V3qQONOmWoCbyTAWAYJwBiLu01PfjCs2CoHzGNnLRvAkDDt7pPXkAA6JPLCmA1AOJ5IGngULmMBIA+emPRtLxCAWkmDa0fYZjODD1+q7LUZRfZVqrRspaBSAADEmcBUG1s3zcJYk4lYH/H8ABg4gTx4dQI5wBQad7uBMBdfapB6Cg+C6CR+HxqW8A1C2eGdcccz10qaYCZZvL3s4WqoeJ7ChAA+t6aCjOyGgBn7bkA/RYfUVWPANBHbyyallcogOkRb7NsH5irVs8K37deoBDixRkAXMcAEFOfmQ2A2N7IRkGGADAhC1x3huVblhfcWr1876nhdXMnAGIcQHE7WG+gZgCgXh/i5/VZNpYV7EwkFd9UgADQN9c11gFw0edhLBREWt0vHx+Vn6ZFCniEAut7VoIaP23VHAumLnv1+j+nABDbz5/JGgAc1TjI7mjGYwHESSrV8++zAliIQ8NFCQDxnbbfgi3gPX2rQ7mRtvOAegWdbtD5Rg/ssR01C6BeH/R53FCAANCidX7+nP36LlcOIiIi4ODBg1CixLsQCJGRkfDFF19AeHg4pEuXDjp16gQDBgxw8NpbtGiR8LezZ89Cvnz5YMSIEdCoUSPu0ca2BZAAkHupqCIpYJkC/esXguErjmsDIEtbht6nzlgAJ39cBhIwyxvmth2x4hhM2nZe6EspzpzSl40WxIxmACgGmxeDJytNRNrGt3UKQpcq+R2q8YCSUrtKAFgqVxp7ujc5cDrbD7aDuXfRk5mnGAFAvyQJ7XmEedqmOnFLAa8DwKCgIDh58iS8ePHCo1eqW7ducPr0aVi1apUDACKYBQQEQNWqVaFfv35w6tQpaNeuHQwaNAh69eolzGnXrl1QsWJFGDZsmAB9ixcvhoEDB8L27dsFqOQpVgMgxpDqz9JDqZW2oblhaMOiXL9SeeZDdUgBUsC4Av3qFYIRzBNXq+RhGSgw+ogzACi2i0c+MHyKFABHrTrOwsDYPIDlsIShZRIzpw0taGrKvHAXSMLSqH1ZyduQ13MFzL6rGwijJXETi7MsKRHR75xlzHICMbKyGOoG01+2mrTHyGVUlxSIoYDXASBaxu7duwcdOnTw2OVE6OvZsyfgWIsUKeIAgH/++Sf06dMHrl+/DkmSJBHmMHr0aPj1118hOjpasAI2b95c2MLFdsRSp04dSJs2LcyZM4dr3lYDIOYFxfygWoVCCHAtFVUiBSxTgMcCmIIFJH78NtesswMZ2rAIYDw+EQCPD60DhVgOW2kRv2zmsxh73y46DL+3KgVdZx/g7tIIAO44c0sIao3byNLMJ9ydqVQMyp7awVs6NgDQ1TnQ9aSA0o8yM1Xh4Q+fzASCYFe6dGlYsmQJZMiQAfz9/R0AsG3btnD//n1YunSpXW/cIi5VqhScO3dOqJ8rVy7o0aOH8E8s48aNg59//hkuXLAlZJcX3HLGf2LBBciZM6fQV6pUtjhdZhYCQDPVpLZIAWsU4AFAM3pGADx/67GQSxiLfKsU/4aw9ODZSyg2eK1TXaKjRIaUiR3SymH+YnmmDOkPz4x+SYQYgVYVMVj2P2z7tuf8CKu6oXZJAUsU8GgLID7cd+7cgQQJEkCaNGksEcDMRnG89erVg/Lly0P//v0hKioqBgDWqlUL8uTJAxMnTrR3feXKFciePTvs3LkTQkNDIXHixDB16lRo1aqVvc7s2bOhffv2DpAnHfvgwYNhyJAhMaZDAGjmClNbpIB3KTDwvcIwdPkxyweNADiQI62YWuBn3gGW808H8zqF2qtvPnkD2k3Z63C5u3ceZn9WjrZjeReQ6nmUAh4JgGvWrIHvv/8edu/ebQceBMD3339fOBeXI0cOt4qoBlfSQezdu1cAuHnz5sHWrVsFaFUDQLTyTZgwwX755cuXhTnh2b+QkBABAKdNmwYtW7a015k1a5aw7f3smXJOS7dbAHdFUR5Jt96F1BkpYFyBQQ0Kw5BlngOArpzHE2cv/dLCYyi4GyEt7gbA+sVYqBSWRYQKKeBtCngcAKKlC71i0TEiadKkAgh98sknAiDNnTtXcKxA0ELPWHeVW7duAf7TKmjVa9GiBSxbtszBm/f169cCDLZu3VqYi1VbwPKx8ezBu6LfdAaAPL/4zXjhuzJOupYUiMsKeBIAmrUOngaAZs2L2iEF3K2AxwFg4cKFhfAnovULQ6U0bdpUsKahg0SzZs3gzZs3sHDhQndrpdvfxYsXBecNseDWbu3atYWxovcuQiw6gfTt21dwAkFLHxa0do4fP97BCeThw4ewcuVKe1t169YVtsE9xQmEBwD39a8BZYav19WNKpACpIA1CgxmFsDBHmIBNGuG0i+t/ksihSDW0uJuC6BZ86J2SAF3K+BxAJg8eXI4duyYcE5OLIkSJRKcH7JlywZ79uwB9Ii9e/ddPkZ3i8bbn9IWMJ7JK1iwIFSrVk0AQbRoorUTw7yIYWDQwlmpUiUh9l/Dhg0FhxE8U+hJYWB4ALBb9QLwy4bTvHJRPVKAFDBZAZ6zeWZ06a5+cKwEgGasGLVBCmjn2HZFH54dSEUv4EKFWODS4cOhSZMmQv+HDh2C4OBgePr0qbCVeubMGSGo8qNHj1wZn1uuVQJA7BgDQXft2lUIBI2hXTp37iwAIFo4xYJWQ4Q+9AwWA0E3btyYe9w8C8DdmELFLrP2w8rIa640QdeSAqSAxQq4C8zc1Q/K9WkFfwjLnx6qBWYWQlHJzwBKA0hbLC81Twp4tQIeZwHErVB0uujSpYsQJw+9ZWvUqAFTpkwRhMYzgmPHjhVCq1BRV8BqAKSzfXT3kQKer8Aw5p07QMc714xZuBMAxfHil5fSFrAZ86E2SIG4oIDHASCKjkGRZ86cKXgA4xk6BMJkyZIJ64FZQNCxAs8KUiEApHuAFCAF1BUY/kFRzYw9ZmlHAGiWktQOKeA+BTwSAI1Mf8GCBVC/fn3As4NU3ilAFkC6G0gBUmBEo6LQb7F2xh4zVIqNnLP45aW0BWzGfKgNUiAuKOD1AIhZLvCcYN68eePCenHPkQCQWyqqSAr4rALFc6aBiEv3fHJ++OX19YIIWCjJF+yTE6VJkQIWKeD1AOjn5wcREREEgLIbhADQoieGmiUFSAGPUIDCvXjEMtAgvFgBAkAvXjytoRMA+ujC0rRIAVJAUODEsDoQOGA1qUEKkAJOKkAA6KRwnn4ZAaCnrxCNjxQgBVxRIDCLH5y49tCVJuhaUiBOK0AA6KPLbzUA9vknEuaEO0bg91EpaVqkAClACpACpIDPKUAA6HNLapuQ1QA4ZNlRmLIjykfVo2mRAqQAKUAKkAK+rYDXA2BgYCCsXbsWcuXK5dsrZXB2BIAGBaPqpAApQAqQAqRAHFLA6wEwDq2VoakSABqSiyqTAqQAKUAKkAJxSgGPAsCMGTM65MPVWokbN27EqYUyOlkCQKOKUX1SgBQgBUgBUiDuKOBRADh58mRu5Tt06MBdNy5WJACMi6tOcyYFSAFSgBQgBfgU8CgA5Bsy1eJRgACQRyWqQwqQAqQAKUAKxE0FPBoAo6KiYOrUqXD27Fn48ccfIVOmTILDR86cOaFQoUJxc8U4Z201AA7+9yhM3RnFORqqRgqQAqQAKUAKkAKepIDHAuC2bdugTp06EBwcDDt37oTjx48L6d5Gjx4N+/fvhwULFniSjh43FgJAj1sSGhApQAqQAqQAKeAxCngsAIaFhUGjRo3gm2++AWm+3/DwcGjSpAlcunTJY0T0xIEQAHriqtCYSAFSgBQgBUgBz1DAYwEwZcqUEBkZCf7+/g4AiNvCGPvv2bNnnqGgh46CANBDF4aGRQqQAqQAKUAKeIACHguAOXLkELZ5Q0NDHQBwyZIl0KtXL+FcIBV1BQgA6e4gBUgBUoAU8HYFulbNB79vou97K9bRYwHw66+/hr1798LChQshX758cOjQIbh58ya0bt1a+DdkyBAr9PCZNgkAfWYpaSKkAClACsRZBWZ2KAcfTd4TZ+dv5cQ9FgBfvHgBbdq0gUWLFsGbN28gceLE8PLlS2jWrBnMmDEDEiZMaKUuXt+21QBIuYC9/hahCZACpAAp4PEKzOgQDG0mh3v8OL1xgB4LgKKYp06dggMHDggQWKpUKeH8HxV9BawGQAoDo78GVIMUIAVIAVLANQWmfxIMbf8mAHRNReWrPR4ArZh0XGiTADAurDLNkRQgBUgB31bgny5h0PiPnb49yVianccCIFr8cKt3w4YNgHl/8f9LCwaEpqKuAAEg3R2kAClACpAC3q7AwQE1oeSwdd4+DafGXyJnGjh06Z5T1/Jc5LEA2K1bN5g0aRLUrVsXsmbNCvHixXOYz6+//sozvzhbx2oAHLT0CEzbdSHO6ksTJwVIAVKAFLBegXMj60Heviut78gDezALAOd8FgLDVxyDo1ceOMzSYwEwY8aMMGXKFHjvvfc8cFk8f0gEgJ6/RjRCUoAUIAVIAW0FzjIAzOejAPhLixLQbe4hVQHMAsC1PSpBr/kREHn5vncAIFr9tmzZAgEBAfR8OKGA1QA4YMkRmLGbLIBOLA1dQgqQAqQAKcCpwJkRdaHggNXw+s1/nFd4R7WMfklgb78akOe7K+wMGAAAIABJREFUFQ4DblQyOyw+eFn4m5kA+M2CCIiI9hIAHDNmDERHR8P48eO9YzU9bJRWA2D/JZEwc/dFD5s1DYcUIAVIAVLAlxTALeBjVx/AuHWnYMOJG7E+tWD/dBB+/o7L48icKgns6RsTAJuUygGLDkSbCoBruleCbxcdhgjZeUKP3QJu2rQprFu3DnAruGjRopAoUSIHwefPn+/yAvhyAwSAvry6NDdSgBQgBeKGAiKk/Pfff+DfJ/bPAjYtzbKU7bcBmitlVOMgaBmcK4YF8EPW/sK37ZfOnRb2X7ir2k1I3nSw+5w+jCIAfvfPYTh40dGhxGMBEINAaxX0EKairoDVANhvcSTM2kMWQLoHSQFSgBQgBaxTQAop8u1S63pVb9ksABTnJZ9TszI5YP4+G2Au6BwKTf+3S3UwhwbWhBJD9T2kEQD7su9sOUx6LADGxsL6Up9WA2CnGftgzdHrviQZzYUUIAVIAVLAwxTgAcAcaZNB9N2nbhm5FNBc6VANAFsG54Q54ZeEprGOFvTqfS6Ob3X3ioDn9vdGOVoTCQBdWUEPvtZqAAzovwpevHKMzejBctDQSAFSgBQgBbxQAR4AREeRQOYo8spiRxE8t1c5IKPdQueKnGoA2KpcLpj9dndND/D0PhfHhxbACVvOwj9vnUvwnOGnFf2hUNZUrkxB9Voe/ojH9vRV3Xpu3rwJ3377rWogaMwVTEVdAZ4FcEW/hr/viHGg1JX26FpSgBQgBUgBUkCuAA8AYp0C/VbCy9fWegojALYKzg3j1p9yeaHUAPCjkFx2B0s9wNP7XGoBjM9iKdcat1X408nhdSBJwgQuz0GtAR7+0ATA+vXrw9mzZ6Fr166KgaCbNGli2eB9oWGeBXBlnm0m74Ftp2+50gRdSwqQAqQAKUAKaCpgFgCOaVJM8IR1pSAAbvmmqmBtdLWoAWDb0Nww/W2SBT3A0/tcCoAFM/tBh2n7IEWShPBry5KuDl/zeh7+0ARAPz8/2Lp1K5Qsae1ALVUhFhvnWQBXhkcA6Ip6dC0pQAqQAqQAjwJ6AFiYbWOu7FYR8rNg0VpbwOt7VoYaP23h6VK1TiW2/Tv9k2DowzxqxXN6zjQohoDBa+Vn/EY2ChIcNrDIAS9V0oTw4Nkre5e8ALiK6WPVdq/S/Hn4QxMACxUqBHPmzIESJUo4o2+cv4ZnAVwRiQDQFfXoWlKAFCAFSAEeBfQAMHJwLfBLmkgTABsUzyZYvbQcKjKkTAJ/tysD3ecdgnM3HysOLbxfdcjklxRcjYPbmAV7/qm5jW3kY5rGAPPjv8MVATBN8kRw78lL3wfA1atXwy+//CLkA86RIwfPfUJ1JAoQANLtQAqQAqQAKeDtCugBoPi5mgVwwHuFoUMFf0XYwj9+Ut4fetctaD8TF3XrMVT5YbOibGJfrmbCUgPAPOmTw9CGRaGtBACLDV5jt/p1rJQXJm495wCAoaM2wNX7zzSX2essgBgA+uHDh/Dy5UtIlSpVjEDQN27EfkRwT36wrAbAj/7aA9vP0BlAT74HaGykAClACni7AloA+F3dQOhcOZ8wxdVHrkLnmQdiTFcPIBEOERKlRc1SyAOAaGn8cs5BTdmlADgn/CLbUrZt+ZZhgZ+71SgAbSa/swAeuHgXmrFYgN/ULgjtGawWGvguLR6Op/mEXbBHJzOJ1wHg5MmTNQXs0KGDt9/Xlo6fANBSealxUoAUIAVIATcooAVwmCYufvx49lEogZseAKIFcGADfQCsH5QVfm9dSuhr4NIjdkcNuQTY34lrD6DOz9tU1ZECIFbacuoms+ydhdGNi8HFO0+gNTOwYBHH/ur1G0iYIL7wt8+m74N1x2wxePHzK/eewvAVx6BaYGb4muX7VSorv6oIhbNZE/JFqT8e/tA8A+iG+8qnu+BZAFcEsMICmDhhfIot6Mqi0LWkAClACviYAmoAVzZPWpYpI8xhtmYB4MrIq7DqyDVYFnHF3v75UfUgHgulgmUQA8Bpbz11lQAQ//bbxtPww1rlcDGNS7EzgM2U/Rt2sp21VjIAlPbRkQHgWgkAip9pbV17NQDiNjD+k5bkyZNz3eZPnjyBixcvgjxuYLFixbiu99ZKVgPgkcv34b1ft5sqT9eq+eD3TWdNbZMaIwVIAVKAFPBeBaQAKI0/W84/HczrFOoyALYvnwcGNSiiKJAUKKXjGPzvUZi6M0rxGrHe3qg7qmnc5BZAaUM7zzIAnORoAeQBwAu3H0PlsZsVx7S9d1XIkZaPmcy4U3j4Q9MCiODWt29fmD9/Ply/HjPl2OvXrzXHiYGk27dvD6tWrVKsp3e9GSLEZhs8C+Dq+MzMyxiWLz0Eswf65/WnXR0WXU8KkAKkACngIwpIwavRHzvg4MV7wswwrEv+TCldBsB2YXlg8PvmAyAOTO07UgsAd5+7DS0m7hbmJZ27OFE1C6AWACq1Y+XtwcMfmgD45Zdfwrp162Dw4MHwySefwPjx4yE6OlrwCh49ejS0adNGc/ytW7eGqKgo+Pnnn6Fq1aqwePFiASSHDx8OP/74I2CgaV8uPAvg6vyNAmBgFj92NuKhYrcEgK6uBl1PCpACpIBvKdCpcl7oU7eQfVJSAFSCGme2gJ0BwCHLjsKUHVGKYuudOcSLtABwDwPA5hoA2GnGPlhz9N0ZQHEQD569hGKD1zqMCYNKY9q34jnTuPXG4OEPTQDMlSsXTJs2TYA3DAp98OBByJ8/v/C3BQsWwPLlyzUnlDVrVli6dCkEBwcLXsT79u2DgIAA+Pfff2HMmDGwfbu525duVZejM54F4GhGs4pRAGwTkhvqsYO0LSfZft1IS7XATFAsR2qyALq6KHQ9KUAKkAJeokDJXGnsFj2lIcshzwoA/JhB0hAWekWpqG0BD112DP7ecd55ANQ4A/jkxSsIYiCXM20y2MyyjshL5xn7YfXRa8Kf5frIv5P//aI8+151L/zhuHj4QxMAU6RIAcePHwcEQYwDiBa8smXLwvnz5yEoKAgePXqkeYsj9B0+fBjy5Mkj/Js1axaUL19euL5IkSKAW8xWlufPn0O5cuUgIiJCgFcxoPXmzZth3LhxEB4eLohUoEAB+OabbwAtltKyaNEiGDBggJAOL1++fDBixAho1KgR95B5FoC7MZWKRgEQcxzWD8oWAwADMqeEyR+XhUUHojUBsBELnrn4bTJrV8dO15MCpAApQArErgJdquSDPzarn/t2BwCilQxj7ymVbnMPwtJDVwQL2tKu5e1Vft90BsauOWkJAGKjz16+hoTMu1n0/JV2pAWAY9eccDhHv+yLChDEDCvuLjz8oQmACHl//PEHVKxYEWrUqAGlSpUSLHe///47jBw5Ei5fvqw5J4RF3O6tXbs2fPDBB4IVcNSoUcJW8sKFCwWwsrJ069YNTp8+LZxBlAIgjv3p06dQt25dyJw5M6xYsQJ69OgBS5YsgQYNGghD2rVrlzDvYcOGCdCH8Dtw4EDBaolQyVN4FoCnHa06RgEQLYB1g7LYD7iKbYsP+S/s/J9akm0875EzXTJo8udOOHL5gatDp+tJAVKAFCAFYkmBAuzsXsvgXIARXAYza5pakQPgX9vOsZAnx4XqZm0BawHg0xevWc77m1ChQAZInjihfZj49w7T9sLOs7djDF3NaUVaUcsLWG9Jxqw+YYdmJQ0wRAyGisGy4qsKUCSbFwLgDz/8IAR/RpBav369AEfogo2WtbFjx0LPnj01dUKLH3oOt2vXTgAwBMHbt29D4sSJYerUqdC8eXM9nZ3+HKEPx4dWPLQ2SgFQqVE8j4gw+Pfffwsf49gQ4KQOLHXq1IG0adMK6fF4ijcC4M/rT6laAE8MqwNJEyUQpv7er9sIAnluAqpDCpACpICHKfAHi6VXt2gW4ft8KttGVQPAbKmTws4+1R1G/99//0G98dshJG86Rc9duVFibY9KEJDZz96GktECDRPDPlC2AGpJd5+lZCs+1PHMnRxMpVvWZgHghC1nYdSqE0JzSgB4jWUFCWHZQbBEDKoFqZMlcvsdwMMfhuIAokMHbpviOUC0BhotuOV74sQJYUs5Q4YMRi/nro+OJqVLlxYsetiPv7+/LgBWqFABQkJCAKEXC44RrYL4Tyy4bYwOLRcuXFAcC4Ix/hMLLkDOnDnh/v37gvXTiuKMBVDpDKB4E2sB4MnhdeypeggArVhNapMUIAVIAXMVSJE4ATxm1jJpWdO9EhRkDoFY1ACwX71CUL9YVsiWJpmhAcm/k/TOyGHjeDRp+AdBhvrByncev4BSw9bFuE7a57h1p+CXDTEjW8z+tByE5XeOQyIu3QMMh4MlzgCg0dUZOnQofP311yCPF4jbr2hBxC1Vs4vw66RePeGsYf/+/QUvZD0AxO1oPP934MABwVqIRbRStmrVyj7E2bNnC2FtpJAnHT96Sw8ZMiTGlHwRAOuP3wZHr9A2sNn3L7VHCpACpACPAn+1LQOfvt1mVKsfnCcdTGxbGkoMdYQkKQBOY7H0BrGYevLibNiSBiw2bSSLUSsWHgBsXS4XjGhkHABvPnwOZUes1xz781evoWD/1Q51tnxTBXKnT8Ejs2qdQwwCs6VJCpn8ksao4zMWwC1btsCGDRsA8/6+efPGYaITJ07UFDBBggRw9epVyJQpk0M93AbGvxmJA6gGV9KG9+5l5wF27oR58+bB1q1bAfvXA0B0CHnvvfeEs45t27a1N4cAiN7OLVu2tP8Nt7Qx/d2zZ8pJn73BAoi/tNACKAa5lD+kWhbAU8PrAmYKwUIA6NK7gy4mBUgBUsAlBRCs9JIBxAYAvnnzH1Qauwmi7z4V5mclAF5/8AzKjbRttUqLvM+2f4fDVpbqTQ1KXVoIhYt9AgDRgQOtdCVLlgQM6SKmYBHnu2zZMk3d4sePL8T9y5gxo0O9jRs3CmfsMFA0b7l16xbgP62CnsYtWrQAHJd0rAiaCINo5UOoEwvCLcIfxiTs2LGjQ9PObAHLx8azB887f7V6RreA8ZcWmvXVAHDTiRvQfupexe4IAF1dLbqeFCAF4oICVQtmhE0n+b/fnNFEhJzlh6/AF7MPKjaBgf0ntolpAZSeyzPbAogDaT8l3D5/HgBsxb6XRjphAURP3cABjtY97F/e58cMADHXr7sAUAqmEQPZGcDkXngGMFu2bIK3LzpxGCnoKIEAJm59ymEMw8d07txZ8CY2u2DKOQQvsVy5ckVwPsFtXvTexXA2WETL3/fffw9du3aNMQwE1IcPH8LKlSvtn6HXcJo0abzaCUTJAoiHeed2tKXzwS10/z7v5iwVRnoGkCyAZt+51B4pQAr4ggLTPwmGdCkSm56mU64NT7BjtABOYABYUnZObh1zzCjw1jHDEwCwZXBOGNXYudSwG09ch0+m2jxu1QDP3QB4g1kmg99aJr0WANOlSwe4rYox8IwUtLIhSGD2EHSaSJ36nQs0bq2ipS401DF/oJH2jdRV2gJG+EOvX/Ru/uqrr+zN4dhwzlhwK7lSpUpC7L+GDRsKAa3xTKGvhYGZxM6RIAD6JX33C0XNqkgAaOTOo7qkACkQFxVY3b0ivHr9n0sAmDlVErj+4J1DoZKOBIA2Vc7efATVf9yiCYDSLeDRjYOgBQt/Y2XBEDWFBtosk9LvTSv7lLfNswOp6QWMDhwIRJgP2JmCW6xhYWFCKJnYKkoAiBZN6VawOLbKlSsLlkGxoNUQoe/cuXP2QNCNGzfmngrPAnA3plJRhDXM4pE0UXxYGWmLTq5W5BZA3jhO8hu53i/b4NhVcgJxdf3oelKAFPAtBRAA06dIouicwDvTv9uViWHVkl/rCgCG960OmVLZnBdiywKIW9MdWUYNLK5YAI0CoLPOLbxrJ9aLjL7PdkIBimZ3fwxAHAMPf8QAwG+//dY+Tzw7h3HxMORLsWLFYoAcBoXmLej5izEBpcWq0Ci8Y7K6Hs8CuDoGEQB/aFocPiydg8XwU4/jh30RALqqOF1PCpACZiiQO31yuHDb2mxQZozTaBsIgIFZUoHR89nSfhZ9HiYE3NcqvACIuzxirDw8Z5cscXxoVNJ2FArL9F1RMHCpeV7A2CbPGUAEQDQizN5zEf5l2TKysJiDzpRzzAJYTccCKN0CdhcAOjMXM6/h4Y8YAIjZL3gKnutDT1utgnH/ECjnz58vBICWFyNewDxj8rQ6PAvg6pjlAIjtab14eADwE+YEspE5g8jLmRF17Wlx6AygqytH15MCcVuBY0NrQ+GBa3xOBDMAEFOeiXHm1ATiBcD5nUMB06m9Yt65v7eKGb/3/K3HUPWHzTG6cQWUeAGwVpEswnExuYOpkZtCafxaTiCuzMvIuGK7Lg9/GAoEbXRC6FyxadMmwHiAGGIFnT4wfdyECRNg9OjRMXLvGm3f0+vzLICrc2gzeQ+En78D4X1r2D2NXAVATGGDqWykZRo72Fw54J03N20Bu7pydD0pwKdAp8p5YcKWc3yVvahWXATA/31UGjrPtG17qpVahTMLjhtqznjidUYAUO+2iL77BPZF3YXu8w7Zq7oCSmjV67s4EjKkTAz7+td06F78fkILIAKgq4UAUFlBHv7QBED01n316pXg+Sot9+7dg4QJE0LKlCk11w5DqUyfPh2qVKkiZMLAQMuYRWTGjBmCJ63Uw9bVm8ATr+dZAFfHjb+eXrIDx2J8PmxPCwDbl88DNdkLRgwDo/SQd2QAuFYGgPJ6BICurhxdTwrwKYDPnivbiXy9uL9WXARAXEutfOu4CuK7VmnNMYzXLAZX0npa7/yyedLCgs5hXIu79ug1+5m8LOx84G52TtDZgrEAt7D8vcXY+bf0KZNYCoBRzIJZRWbBJAugk2cApSuFGTXw3xdffOGwgBg0GeFt+fLlmvcHAuLRo0chd+7cQviVf/75B4KDg+H8+fMQFBQECJi+XNwBgEr6aX1Z7PyuGkTdfqwJgJ1m7IM1R99ZAIvlSC2c0XC4N8gJxJdvXZqbxQos/7ICt5coAaDzizH7s3Jw/OpDGLb8mPONGLxSawsY11LvnLYWALYNzc3O7NlSkfJYAGMLALUkM9sCeJGdI8XA09JCAGgCAKIHMIY9KVy4sIO4x48fBzwrqBeYGR1Hfv31V0Dv2lq1agmOJJhrd/z48YAOJNHR0QYfLe+q7okAeGRIbTgcfU8TADszz6zV7NcgFkzQXY8lDZf/itt97ja0mLjbuxaERksKxKICmBD+/lObI5wRqDNSNxanZ6jrVEkTChYmq88AHhxQE9KymHwYLHnW7ouwi723rC56AKiWm1YclxYAtgvLA1NZ6jZeAMQ4gHgGkKeYaQF0JwCitbH5xF2wl21hyzUU/z85gaRSXBLNLeAUKVLAnj17oGjRog4XHzlyRLDkoZOHVhk3bpyQgQNj7eFZQIy9h44fuK38008/CXH4fLl4KgC+fPXGHhhUaQv424URMH+fDc61zoFgFHbM+3j6hm9bcn35HqW5uU8BAsB3WuO5xm7VC1gOgIcG1oQ0yRMLHY9edQL+t+WsJQvepUo++GOzrW09APxp3SkYv+G06jjUAHDge4Xh4p0nBIAKyuFRKDxbKe5cyb+3pMeaXDnbaMnNY1GjPPyhCYBoucM0cBjMWVoQ6PA8H1oHjRTM0rFv3z4hpl7x4sWNXOqVdXkWwIqJlWZR328/fqHYdOTgWkLQZ0xVkyxxAkglCQAtXoAJtvFhalE2JzQtk1NziOiA0mzCLiumQW2SAj6lAFq9Hjx7Zf9hxXuuzxctgAiAX9cqCAX6rbJ0jUULoNUAuKFXZXswYl0AXHsSxm88YxgAR7EAxievPTQEgHFhC1gUUrpzJYe8Swyc27H0dJ9U8IfW5XJbes95SuM8/KEJgBjmBbduMZhz9eq2A6EbNmwQsmSsWbNG2Nqloq4AzwJYoZ/8DJ+0j8MMAJWgz5Vx8H6RudIHXUsKeLsCZAF8t4IIgH3qFgKrj5LoAeBpFtrKDAjd9HUVeyiVNd0rQcEsfoqOOwgmPzIA/NUJANz2bVUhZt+kbeftPyJERdXewc4CIGYi2cMiS1hRzD4DyAOAVszD09vk4Q/dMDD79+8XzusdOnQIkiVLJpzjw8wggYGBmvN/8+YNTJ06VXD8wGwcGOfH398fPvzwQ2jTpo1LcX88XXhxfDwLYMVcCACtUJXaJAVcU8BTARBDddx6pLxjYGTGX1bLD9tO34JDl+7pXiYCIFa08gekHgCaZV3FGKk950cwHZ/DzA7lIH78eKoA+MOak/DbJpsFEL1tP6uU18FJRWkLGMPH1GFnsW+z9j/4Y4cQyLlnzQC7zmoaGjkDuOnkDRbAea/QpjcC4B+bz8CY1SdjwLHuzeijFXj4QxcAndEG9+MbNGggeArjVi/CIv4NnUciIyPh/fffhyVLljjTtFddw7MAVkzo34gr8NWcgzGaTpM8ERxgMZnw5WRmsfIFbuY4qS1SIDYV8FQAbFA8Gyxj7wxXi5bzgrxtXwJADK5cv1jWGPIpvRdRo00syH57Fmwfi5Jm8r8NbVgE2obm0VweMyyAr5kzRb6+K70WAF+ws+2Y1q5iQAYhE0tcLzz8YQkATpkyRXDwWLp0KVStWtVhHTZu3AgffPAB/Pbbb0JwaF8uPAtgxfwRtqVBRLtWzQdfsQPX8dh/pPECzeqbANAsJakdX1bAUwHw2zoF7ZYTZ/VPnCA+nGJWMCw87wN3AaB45hnH9f3qE/DnW0cNcZ5GLICDGxSGwctihpMRrXNy7dQAEN/P64/fgIKZ/SAXS4eH5e/t52Ho21A1cgAc8n4R+Jh5/2oVMwBQunbeaAF09t711et4+EMXAPEMIAZ0/uuvv+w6dejQAS5dugRr165V1A6vqVatGnz33XeKn48cORK2bNkinCP05cKzAFbNv9zI9czR47nQvNVeTzwvfKvmSe2SAp6gQEDmlHDqurY3vBEnELQorTh81f78WvmMnRxeBwr2X+2SjIkSxIPTI+p5FAD2q1dI2F4Vi5IXML4b7z15IZzJw63r/RfehRKRC4J18XN5jl6jAKgkNG4dlxm+HopmTwXLv7SlYxXXnADQpVszzl7Mwx+6AIjn9bJnzy6kbhNL79694cqVK0JGD6WSJUsWWL16NZQoUULx84MHD0LdunXh2jVbrDlfLTwLYNXchyw7ClN2REGBTClhXU9rnXWs/HKySh9qlxQwUwGzAfCLqvnt58SMWKmMzik/ez+sZ+8HV59howCIIU3QI1MKOkbHrldf/sNXDQDFdpQCCr/PtsfxSA0WbO/czUdQ7cctDl1j2rbaCinN1CyAauN+/PwVJE2UABK8PaIjXo+Wx3blbVqpFTPOAErXgiyAeneX53/Owx+6AOjMNBMnTgwXLlyArFljnovA9hAe0SHk+XObhcpXC88CWDV3jNG3hgVzrlggI6RjgVCtLK5+eVg5NmqbFHCHAjwAKAbxFTPraD03Yz4sBt8uPGwHD6ueMbMAMCGDljMj9S2AmIoSz2oNalDEfhzFqrnJAVBtC1h6f8jHMuvTctD6rz32dVDKO2uGBVDpHhXHMogBYHsnAdCIF7AUAJWyP5n1HFnlBWzW+HylHR7+sAQAMfgzWvcyZsyoqOX169chW7ZsQlBoXy48C+AL87fqBe4L2tAc4oYCeJ7r5PWHmpM9PrQObDl1A0LzZoDUzCFL/tx0ZNuVE7eeE9pAqMDtwCQJE0BGvyQuW+jUBpYvYwrY0KuKy+3znAGsFpgJJrUtY7dwiWNSe39IraDO3EVmACB69H402XUA7F+/ELRieXyTJ07IPZXYAMCdZ28J5ySHswxQudOn4B6rkYoEgEbUcr4uD384BYA3btwQzgRiOBilEj9+fGGLN0kSxyTQYl20/OEWMQGg84vrSVcSAHrSatBYYkMBHgA8xyxkUg98+XNzlKVpLDLIdi7673ZloFpgZvtUxLrB/umEVI7PXr7hmmZI3nQs1t4d1bpmAeBHIbkYNAQJ/Si9D1ImSQiYhlKpiPXHNS8OPeZF2Ku4uvVtBQBG3XoMVX7Y7DANni3gn5uXgA9KZudaMzkYG7UAru1RCWqN2yo0Y9QCaGiATlauOGYjXLrzFKRZWpxsii7TUMAyAIyIiIBSpUqpAlz79u25Fga9hX258CyAL8yfANAXVpHm4IoCaNn6bPo+zSbUADBXuuTQq1YANCyRXfBUPXL5PkxpVxYSMs9aOQxgXLefW5SAsNEbHfqqUSgz8yy97vC3+Z1CoVSuNJBfI9uGWQAoPdMXOGBVDEBNwbIOHWUWUKWCWRqi7z6F0Hzp4btFh2Hu3ktCNasBUGq1lOuM/x/PRl67/8zBAohHawIHODrMWA2AczuGQEje9Jr3lvgOzsO8ijd/U9UO4Z4IgC9fv4Hn7BgA/iigYp0CPPyhaAE8diymq7t0mCdOnICmTZv6vAXP1aXhWQBX+/CE6wkAPWEVaAyxpYAYbDhk5Aa4xlIsFs+RGiKi78cYjhoALvo8FErnTsf1BS8G9q3NLDzSLefFXcKg0R87HdrY3rsq5EibXHN71ywAlFpzpLnExQFpAaB00ENZmJW/d7zLdOHKu0XLApiXbX2PZecs5bqL/RXKmgpWdasI21lga+kWMI71DkuzmYAlNig+1BYFgwcAMYtHTgb6RsopdqTgLMuzXjdI+Sy9tK28fVYAC+PHAkRnh3HM2ijOwxMB0IgGVNd5BXj4QxEAcQsXM3dgvCJ5Ef+O/623hbtu3TqoUKGCkEEkLhaeBfAFXVx5SfvC/GkOcVsBETTQi3TG7ijoUCEvhIzaEEOU86PqOWRAEp8bMwAQAaPimE2GAbBeUBb4o3VpTUj8imX4eJ9ZJ2v85Oj9Ku1MmmLyLPOUrS7zlPUEAJR6AauFxuIBQHHeYl0eALQ6FBdqvvTQFXbv+QPGmyQAjNvvJJw9D38oAmCGDBlg1KhRQiw/pYLtSy0HAAAgAElEQVQWQgzmrAeAqVKlEjx9S5cuLeQNrlKlCpQvXx5SpkwZJ1aHZwF8QQgCQF9YRZqDswoofbkrPRNqALiwcyiUYVu7WkV6BhC3duUWQGcB8MCAmkKUALVn+OPQ3DCkYVFhaFfvs23aUY5bz+KYMaduIsmWdeGBq+HJi3dOfsnZFvAxlS1g6byttABaBYATWRiYWgphYD74fYcQWxD1RZ3dWcT1rMvSx/3JHIqoxD0FePhDEQBr164NlSpVgn79+imqhmcAS5YsCZjvV6sgIIaHhwtBnzdv3gw7d+6EZ8+eCecHEQalsQV9cXl4FsAX5k0A6AurSHNwVgEeAOxTNxA6Vc7n0IX43JgBgLv6VIsBZ+LWtNrzKYU2tTp6jivihOQalBq2TtgqFQsvAB64eBcas61s+Vk2pbX5pnZBwHN8I1YeV1w6rS1gPQtgYBY/WN29kuIWsNiZnjfrdXYcAL2624TkhjwZrPGoVbtnN7DzoDN2X4AxTYpBJpZvmErcU4CHPxQBcNGiRfD48WPVVG13796Ff/75BzAjiJFy5MgR+OGHH2DWrFkCPOpZEI207Yl1eRbAE8dtdEwEgEYVo/q+pAAPAGrVcRUAm5fJCd+z82zS5xA9ahuVzCHIrPZ8SsfEU4e3LawnB0DeLWC89sLtx5CZQQsGRdZ6t+jlHnYFAFsG54JRjYNg2+mb0GZyuKCjvD09APSle5zm4n0K8PCHU2FgeKU4fvy43fqHVkAEPjwTiNY/3BIuXrw4b1NeWY9nAbxyYrJBEwD6wirSHJxVQAnuhrG8rpNZflexuAqAZYavg1uPXkDfeoHQsVI+hy1gJRAyCndmA2BJ5iBx98lL+/yNAKB0HZTGlYbFUMTQKEYAF9tcywLjd5yxXxHmxD7PMKcLTMH3SYU84Jc0EQGgsw8FXRfrCvDwhyIA4vYvnvFr0KABFChQwOmJoDMJBoPu3r07vP/++1CkSBGn2/LGC3kWwBvnJR8zAaAvrCLNwVkF9LYTlaxH+DcjW8A3Hz6HfVF3oGbhzEJ4GOkZQKsAEEPI/NOlvIMsvKAoB0DR2cSoxkbOUsrblq8LOjWuiLwKhZmHb96MfOfQeSyAGAII14UKKeBJCvDwhyIAYpDnZcuWwfr16yF37tzQsGFDAeBCQ0MNzQ/Bb+vWrXD06FEhLzBa/vBfxYoV44QjCM8CGBLUQysTAHrowtCw3KKAqwC4u091yJLa2DmtGbuiYMDSoyw+XDqY29H2XpY+h2ZYAKsUzAhT2wc7BYDyLeAWZXPCaHYezWhRereobcXqAaDRvrH+vScvoMTQdSwjS3w4ObyuohYEgM4oS9dYrQAPf2huAT99+hQwlMvSpUth+fLlQgiD9957TwDCmjVrQtKkfC+te/fuwbZt24TtYPwXGRkpAOHu3but1iBW2+dZgFgdoEmdEwCaJCQ145UKOAuAGOft4bOXujEAlURBa1YkCxgdwFLQ4Vk5XwXAVcxi9/WCCEjLPGkxWDQWdwIg9neXObOgxsmYJ7O0iO89AkCvfGx9ftA8/MF9BhBfOOjF+++//wr/Ll26BDVq1IDevXvrWgbv3LkjgN+mTZsEb2C0COLWMOYL9uXCswC+MH8CQF9YRZqDswo4C4DO9qd2nRELoDx2ndIz3L1GAeheI0AReuRjkGvw09qTMH7jGXs1Zy2AYgOD/z0KU3dGxQoA6ulNAGj2nUztmaEAD39wA6B8QCdPnhRAELeImzVrpjjebt262YEvXbp0QmgZcRu4aFFbbClfLjwL4AvzJwD0hVWkOTirgLcBYPvyeZgTheN5bOkzjCnQNp+8AW1YDMAkCZWtXnoA+Iql++o8cz9LT3dDqOoOAMSYhT1qBgjhZ5InTmh4W93o+oua/cXOANagM4BG5aP6FivAwx+KAIhbtrNnz4aPPvoIMJiztNy/f9/+mZ+fn+YUPvzwwzgFfHIxeBbA4nvALc0TALpFZurEQxXQA8AahTLBXx+XtXz0vBbAdmF5YPD7ygDYsEQ2+KVFSdWx8jqBYAPoBY3e0FiWdC0PJXKmcVoDeYBoaUPimDAuYNeq+Z3uw+iFBIBGFaP67lSAhz8UAXD48OFw4MABIdafUkGww+weffr0ced8vK4vngXwukkpDJgA0BdWkebgrAJ6ANi4VHb4qVkJZ5vnvs4MANSDKCMAOIoFaJ7AAiFjcTUVmjSsjtoZQL2xcwvJWbHJnzvh2JUHsLd/DUiZJCHnVVSNFHCPAjz8oQiAmOVj7Nixwhk/pYLewd988w0cPHiQayaYOu7ixYvw4sW7yPB4IXoW+3LhWQBfmD8BoC+sIs3BWQX0AHA0CyjcggUWtrp0mbUfVkbazlVreQErWQB/23gaVrM4eXM+CxHi36kVIwCodW7PqBbDmSXxr7dxFT0FAN+8+Q9esX+JmYcwFVLA0xTg4Q9FAMRtX3TUyJkzp+KcEObwDB92oFXOnTsHjRo1Erx+0YMYHUmw4P/GQplAPO2WcW48BIDO6UZX+YYCagB46c4TwNRm7xXLBgni2955Vha0RtUbvw1al8sFIxoF2buSP59KAMg7LiMAOHXHeRi8zLYF7KoFcG74Rfjun0jFtkqwoNP3WNDplV9VhMLZHI8s8c6L6pECvqaA0wCYJk0aWL16NYSEhChqguFb6tSpA3hWUKtgIOkECRLApEmTIG/evEJe4Nu3b0OvXr2ElHAYD9CXC88C+ML8CQB9YRVpDs4q4CrcONuv0nXPXr62h4URPz/CwsXsOHMLRq06IfwJnSWGNHTOCS+2APA1s7T9sekMhORLD2XzpHOY+qPnrwADZfu7Od+umetGbZECZivAwx+KFkD01A0LC4ORI0cqjgnP/mFIGAztolUyZMgAGzduhGLFikHq1KkFACxYsKDwN4RA3i1ks4VxV3s8C+CusVjZDwGglepS256ugCcBoJZW4nPqLgC8dv8ZhIzaAMVzpIalX1Tw9GWk8ZECPqUAD38oAuCCBQugdevWMH78eOjYsSNgSjcsb968gQkTJgip3WbMmKEa/kVUMW3atLB//37B+pcvXz7ADCNVq1aFs2fPQlBQEDx58sSnBJdPhmcBfEEAAkBfWEWag7MKeBsAymMAGpm3EQsgtovWuWQsiLI7tsCNzIPqkgK+rgAPf6jGAcQAz+gIgtvBCG94bu/MmTOAYWB69OghbOHqFdziRUsf5hVu1aoV3L17F/r37w8TJ04UwPDIkSN6TXj15zwL4NUTfDt4AkBfWEWag7MKeBsAzv60HITlz+DUdI0CoFOd0EWkACngsgI8/KEZCBq3eWfNmiWAHzpwBAQECCCH28M8Zc2aNfD48WNo3LgxoEMIppE7ceIEpE+fHubNmwfVqlXjacZr6/AsgNdOTjJwAkBfWEWag7MKEAC67uThrPZ0HSlACigrwMMfTmcCcVZ0TAuHW8OiJ7Cz7XjDdTwL4A3z0BsjAaCeQvS5LyvgbQA4i1kAyztpARzJYvtNZLH9mpXJAfP3RduX1Vs08OX7kOZGCkgV4OEPTQA8f/48LF26FKKiogRgw7N8GLsP07/plVevXkHSpEnh0KFDQsiYuFh4FsAXdCEA9IVVpDk4q4C3wI/4nM7sUA4qFHBuCxi9cSOZV3ERFm6lQL9VBIDO3jR0HSlgsQI8/KEKgHj+r1+/foAgh1u2uAWM1rtEiRLB6NGjhXOAegXPDmI2keLFi+tV9cnPeRbAFyZOAOgLq0hzcFYBbwPAGR2CoWKBjM5O136dWuYRlxumBkgBUsBlBXj4QxEAMbwLns/DcC/o8YvhXLDcvHkTxo0bB2PGjIHNmzdDhQrarv1TpkwB9CieOXMmpEvnGLvJ5dl5QQM8C+AF09AdIgGgrkRUwYcVIACkM4A+fHvT1LxUAR7+UATAFi1agJ+fnxDAWal8+umngnPHnDlzNKXBlHLoQPLy5Uth2zhFihQO9THfsC8XngXwhfkTAPrCKtIcnFXA2wBw+ifBUCmALIDOrjddRwp4gwI8/KEIgP7+/jB9+nTVTB1bt26Fjz/+GPCMoFYZMmSI5ueDBg3yBh2dHiPPAjjduAddSADoQYtBQ3G7At4GgNMYAFYmAHT7fUIdkgLuVICHPxQBMHny5HDq1CnIkSOH4ngvXbokZPTw9EDOz58/h3LlykFERISQdaREiRIx5oMWSrRUYso6eWq7RYsWwYABA4TA1XieccSIEUJuY97CswC8bXlyPQJAT14dGpvVCngbAE5tXxaqFMzksix0BtBlCakBUsAyBXj4QxEAMfPHtWvXIFMm5ZfE9evXIVu2bPD69WvLBm9Gw926dYPTp0/DqlWrFAEQt6YxpmHGjBmF1HZSANy1a5dgAR02bNj/2zsTeJnK/49/7fuefU12spMtsoZsERGFRKQoRVmyFCEU9WuTpPzSIn9biEqRLbIlu2zJFuJnv5b+83l0prlzz9x55tw5c8+c+3ler/v76d5znuX9PTPznmdV0jd37lwZPny4rFq1SkmlTtIJgE4+Tr+GAuj0CLF+dhJIqgJYy3PM21HPcW9Fc2aQ5c/eYydi5k0CJBAiAR3/CCiAWOmbMWNG0yLPnz8vQ4YMsSyAGD5GLyLOBLYrQfoGDBgg6MUrW7asqQDitJOjR49Kw4YN1WIXXwF88MEHBQCRj5GaNm2q9jAMNvfRuF4nAHa1P5L5UgAjSZtlOY1AtAngh54ewPph6AE8dPqifLDqgPS8u6gUzJ7eaWFhfUggSRPQ8Q9TAcTQr85GzZA4KwnyeOzYMcEqYTsSeiirVKki8+bNUyuYMafRfwgY8onFLNinEFvV+AtgoUKF1FY3vtvdYAX05MmT5dChQ1rV1gmAVkYOv4gC6PAAsXq2EkiqAmgrVGZOAiSQIAI6/hHxk0AS1CKNm7FfYfPmzaV27drq3GFsYu0vgKdPn1bz/rA9Td26dWXGjBlxBDB16tTq9zj6zkizZs2S7t27C+YWmiX83vdvCEDBggXV+cmZM2fWqH10XkIBjM64sdbhIRB1AtjN0wNYKuFzAMNDj7mQAAnYQcA2AcRQKeTpySeftKPepnmOHDlSgq0q3rBhg5rLh3OGsVIZCzvMBBBnE+NcYwxzIwUSwI8++kg6derkrQ/ORe7Ro4dcuXIlpDpSACP2mLAgEog4gWgTwOndqkqDUrkjzokFkgAJRI5A2AXwu+++kw8++EAtiMBKYfSkBUtHjhyRBQsWyOHDhyUmJibW5a+99lqw271/P3XqlOAnvlSkSBHBHoYLFy6MNYSNxSqQwc6dOwukLmvWrHLhwgVvVug1vHnzprpm6tSp8uijj4qVIWD2AGqHkxeSgGsIRJsAftC1qjQsTQF0zQPIhpCACYGwCCDm+WGuHn4gcRCshx9+WC2cwLFw8SUII84OxhDs7t271ZnA6JGDcFWuXNmWRSCoIxpuJCzyuPfee+XLL79Uq3cxv3Hnzp2xFrDgvOPx48er3sP8+fOrhR5YBILFLosXL/bm1axZMyWPXAQSO+ocAub7T1ImQAFMytFn20nAmQQsCyC2R8ECimnTpgmOhWvSpImaCwfxw556ZcqU0Wpx9erVBStnX3rpJXWyCO7F1jLoicPv+/Tpo5VPQi4yGwL2z89sCBgyiPmB2PuvdevWAknEnEJuAxM3GhTAhDyhvDfaCUSLAN45Yqmcv3pdNg5rJDkypol27Kw/CZBAPAQsCyAkrVixYtKlSxfVE5YjRw5VDHr8QhFASB9W2WITZfSqQZ6wJQvygFRBzuxOVgUQ9UKvIaRv//793o2gMX9QN+kEQDcvJ19HAXRydFg3uwlEiwBeuXZDLsXckOwZUtuNhPmTAAkkMgEd/zBdBYxhTmyjAgF84IEHVO+dFQHMkyePGuZFjyHEb+zYsWpIGAKIVbq+8/ASmZUtxesEwJaCI5wpBTDCwFmcowhEiwA6ChorQwIkYCsBHf8wFUAc8TZ79my14GPjxo3SokULJYPt2rVTPXq6Q8Bt2rSR++67T3r27CmDBg1Si0e6deum9t1Dj+C3335rK4DEzlwnAIldx3CUTwEMB0XmEa0EKIDRGjnWmwTcS0DHP4LuA4gzgadPny4ff/yxOh4OIoi98OrVqyc4Mi6+hKFT9PKVL19enRv83HPPqWFgDC9jU+XChQu7l76nZToBcAMACqAbosg2WCVAAbRKjveRAAnYRUDHP4IKoFE5bKWyaNEiJYNYGYth4pMnT9pVd1fkqxMANzSUAuiGKLINVglQAK2S430kQAJ2EdDxD1MBRM9d0aJFA9YLPYHoEcSwbnwJeWBzZmMRiXEtNpLGNjAox81JJwBuaD8F0A1RZBusEqAAWiXH+0iABOwioOMfpgKITZ6xchcLNrBaF9u5WEkYIoYsYlWxb8JZvdhoOdCRalbKcuI9OgFwYr1DrRMFMFRivN5NBCiAboom20IC7iCg4x8BF4EsXbpU7X2H4d6UKVNKy5YtlQw2atRIcE5ufAknfyBhEQhO3siSJYv3cgwlY4Pob775Rm0O7eakEwA3tJ8C6IYosg1WCVAArZLjfSRAAnYR0PGPoHMAcUQaFm5A6vBz7NgxtTE0ZBArfP2Hd9EYY3FIsmTJ1Kkfvgl7CeLItkmTJqnVxW5OOgFwQ/spgG6IIttglQAF0Co53kcCJGAXAR3/CCqA/pXbsWOHOmsXvYPYImby5MkBT/TAEXCYA3jbbbfZ1UZH56sTAEc3QLNyFEBNULzMlQQogK4MKxtFAlFNQMc/QhZAXyJYBfzXX39JyZIloxqUXZXXCYBdZUcyXwpgJGmzLKcRoAA6LSKsDwmQgI5/mArg5s2bZeDAgWrD5syZM8ciee7cObUhNHr+ypUrF5TyxYsX1XnChw8flpiYmFjX9+vXL+j90XyBTgCiuX1G3SmAbogi22CVAAXQKjneRwIkYBcBHf8wFcDOnTurXr3hw4eb1m306NFqAcfMmTPjrTtEsnnz5moTaIhg9uzZ5dSpU4JVxlgZzG1g7Ap9ZPOlAEaWN0tzFgEKoLPiwdqQAAnoHURhKoA4qWPOnDlSoUIFU46//PKL3H///fLbb7/Fy/mee+6REiVKyDvvvKM2jsYZwFgEgtNE+vfvL23btnV1nHQM3A0AKIBuiCLbYJUABdAqOd5HAiRgFwEd/zAVwLRp08rOnTsFizjM0oEDB9R5wJcvX4637pC+n376SfUm4t9r166V0qVLq9917dpVdu3aZVfbHZGvTgAcUdEEVoICmECAvD2qCVAAozp8rDwJuJKAjn+YCmCBAgXkgw8+kHvvvdcUzJIlS6Rnz55y5MiReMHlzJlTVq9erXoBIYFvvPGGyhPih5NAMDTs5qQTADe0nwLohiiyDVYJUACtkuN9JEACdhHQ8Q9TAUTv3MGDB9XiDf+Eff0wtIu9/LDJc3wJ+wV269ZNHnroIendu7dgTiAWfmDuIFYPoyfQzUknAG5oPwXQDVFkG6wSoABaJcf7SIAE7CKg4x+mArhv3z6pUqWKlC1bVp577jnVe4dNnTEsPHHiRMFegD///LMUL1483rrjmvPnz0v9+vXlzz//VMO+2FQacww//PDDgHMM7QIS6Xx1AhDpOtlRHgXQDqrMM1oIUACjJVKsJwkkHQI6/hFwH0D0zqH3Dqt9IX9I6P2DDELeatSokXRIWmypTgAsZu2o2yiAjgoHKxNhAhTACANncSRAAkEJ6PhHvBtBQ/jQi4ceQfwbc/nQM2gIYdAaJPELdALgBkQUQDdEkW2wSoACaJUc7yMBErCLgI5/JOgkELOKV6pUSVsQN23aZFfbHZGvTgAcUdEEVoICmECAvD2qCVAAozp8rDwJuJKAjn8EFECs0MV8P5wGggUh6PXDtjAPPPCADBgwQLBVjFkaNWqU99dXrlyRt99+W20ZU7NmTfX7devWyfbt2+WJJ56QsWPHuhK80SidALgBAAXQDVFkG6wSoABaJcf7SIAE7CKg4x+mAnjt2jWpU6eOWrWLbVtKlSqlhoCxCOSbb76RatWqqRXCKVOmjLfujz32mOTNm1defvnlWNeNGDFCfv/9d5k+fbpdbXdEvjoBcERFE1gJCmACAfL2qCZAAYzq8LHyJOBKAjr+YSqA2K9vzJgx8sMPP6iNm30Teu8aNGigjonr27dvvOCyZMliulp47969UrVqVcG5wm5OOgFwQ/spgG6IIttglQAF0Co53kcCJGAXAR3/MBXAevXqqaHep556yrRuU6ZMkblz5ypBjC/lyZNHDfN279491mVYRfzCCy/IiRMn7Gq7I/LVCYAjKprASlAAEwiQt0c1AQpgVIePlScBVxLQ8Q9TAcQJHt9//72UK1fOFMy2bdtULyD29osvjRs3TkaOHCkYCja2jcEcQAz9ogcREujmpBMAN7SfAuiGKLINVglQAK2S430kQAJ2EdDxD1MBTJUqlZqjhx48s3Ts2DEpXLiwxMTEBK37F198IegxxPxBJAwp9+/fXzp06BD03mi/QCcA0d5G1J8C6IYosg1WCVAArZLjfSRAAnYR0PEPUwFMkSKFHD9+XNATaJYwdJsvXz65ceOGXXV3Rb46AXBDQymAbogi22CVAAXQKjneRwIkYBcBHf8wFcDkyZNLxYoVA67yvX79umzdupUCGCRyOgGwK/iRzJcCGEnaLMtpBCiATosI60MCJKDjH6YC+OKLL2rR89/eResmz0U4ExhDzMuXL9e9JSqv0wlAVDbMr9IUQDdEkW2wSoACaJUc7yMBErCLgI5/hP0kEJ3GDBkyRDCPEKuB3Zx0AuCG9lMA3RBFtsEqAQqgVXK8jwRIwC4COv4RsgBi775Zs2bJBx98oPb4YwpMQCcAbuBHAXRDFNkGqwQogFbJ8T4SIAG7COj4h7YAYs8/SB+OhsMGz/fff7+89dZb8db9pZdekueee07Sp08f67rLly/LhAkT1FYwbk46AXBD+ymAbogi22CVAAXQKjneRwIkYBcBHf+IVwD/+OMPmTFjhhqqPX36tCBD9P5hCxecDRwsYTUxhnpz5coV61Lkhd+5fRWxTgCCMYyGv1MAoyFKrKNdBCiAdpFlviRAAlYJ6PiHqQCil2/atGnqpA+cBdylSxdp0aKFZMyYUa3+LVOmjFadsJoYW8b4byeDxR8PPvhg0I2ktQpx8EU6AXBw9bWrRgHURsULXUiAAujCoLJJJBDlBHT8w1QAU6ZMKYMGDVI/WbNm9WLABtE6ApgtWzbVQ4j5gpkzZ47VW4hevwsXLkjv3r2DDiFHOX/VY4rhcoNDtLcnUP0pgG6NLNulQ4ACqEOJ15AACUSSgI5/mArgo48+KnPmzFF7AT788MNqyBcipyuAH330kfz999+CfCZPnqwkyEipU6eWIkWKSM2aNSPJIlHK0glAolQszIVSAMMMlNlFFQEKYFSFi5UlgSRBQMc/As4BvHjxonz22Wfq3N5NmzZJ8+bNZf78+aoHsGzZsloAV6xYIbVq1VLimBSTTgDcwIUC6IYosg1WCVAArZLjfSRAAnYR0PEPrVXAOMcXIjhz5ky5evWqtGzZUh544AFp1apVvHU/fPhwvH8vVKiQXW13RL46AXBERRNYCQpgAgHy9qgmQAGM6vCx8iTgSgI6/qElgAYdHAG3cOFCtR3MsmXLJCYmJl5wWAQS32phrgJ2x3NHAXRHHNkKawQogNa48S4SIAH7CIRdAH2riu1d8ubNG2/tMVzsm65duyabN2+W1157TcaMGSNt27a1r/UOyFknAA6oZoKrQAFMMEJmEMUEKIBRHDxWnQRcSkDHP0x7AOvWrSsLFizwrgDGvxs3bizp0qULC6pFixapjaCxzYybk04A3NB+CqAbosg2WCVAAbRKjveRAAnYRUDHP0wFEEO3x48f927gjBXAW7ZskaJFi4alrnv37lUrjLHQxM1JJwBuaD8F0A1RZBusEqAAWiXH+0iABOwioOMfWgKYKVMmtfo3VAFEBXwTtobB0PHIkSNl165dSirdnHQC4Ib2UwDdEEW2wSoBCqBVcryPBEjALgI6/mGrAJotAoEEFixYUG0x4/a9AHUCYFfwI5kvBTCStFmW0whQAJ0WEdaHBEhAxz8CCiA2czY2cO7UqZPa0Dl37tyxqAbbBgb7APomCCGOhStWrJjgtBG7E7asueuuu1TvJRafYNjZSBDRSZMmydSpU+XQoUNquLtPnz4yZMgQ7zWo/4ABA2T79u2SL18+dTIKTjDRTToB0M3LyddRAJ0cHdbNbgIUQLsJM38SIIFQCej4R0ABDFYYtndx+jYu/fv3F8w3XLJkSRwB7Nevn9rK5tVXX5U777xTHdd26tQpadSokWr6gQMHpFy5ctKzZ095/PHHZfXq1fLEE0/Ip59+Ku3atQuGR/1dJwBaGTn8IgqgwwPE6tlKgAJoK15mTgIkYIGAjn+EtA+ghTrI7t275c033xRsJg1pLFWqlDz55JPq/+1MkD703uFIO5xc4tsDiLqUL19efv31VylZsqRpNZ5//nm1EhrXGgm9f+hNXLt2rVbVdQKglZHDL6IAOjxArJ6tBCiAtuJl5iRAAhYI6PhHWATwvvvuk2nTpsXZF/DLL78UDB9XrVrVO99v3bp1smHDBpk1a5a0b9/eQrOC33LixAmpUqWKzJs3T2677Ta5/fbbYwkgev2wmXWvXr3kP//5jzq3GD1/+H327NlVAdgKp1KlSjJlyhRvgXPnzlXnIl+6dEnreDudAARvjfOvoAA6P0asoX0EKID2sWXOJEAC1gjo+EdYBDDQKmGsGu7SpYu89NJLsVowYsQIdazc/v37rbUsnrsgczi3uHbt2jJs2DA5ePBgHAFET96MGTPUnEDsR4ih7GeeeUayZcsmy5cvV7mXKFFCunXrFmtO4Jo1a1S+R48eNd0EG3MO8WMkBAALXjC8jK103JoogG6NLNulQ4ACqLm/jaIAACAASURBVEOJ15AACUSSQKILYPr06eWXX35Riz58E+blVahQQfWk6SZsHTNq1Kh4L0fPIiTt888/l5UrV0qKFClMBRA9f++//74anoboIW3atEn1GmJ7GgwL4/fdu3eXwYMHe8vEPMA6deqorWzy5MkTpy6B6kgB1I0yryOB6CNAAYy+mLHGJOB2AokugOiJwzAvRMo3ffjhh2obmKVLl2rHAAs08BNfKlKkiHTs2FGdV+x7BjF6+CCDnTt3FqxuRg/kK6+8IjiazkiXL18WCCsWhuDUEytDwOwB1A4nLyQB1xCgALomlGwICbiGQKIL4LvvvivDhw9X8+Zq1KihwGIO4OzZs1VvHrZWMVKwLWV0o3L48GG1+tZIGK699957BfMRsSVMgQIFlOThd/v27ZM77rhDXYrFHRgSNnoFsQgEIrljxw5vXtgmBptXcxFI7GhwCFj36eR1biRAAXRjVNkmEohuAokugNj3TyfZuaWM2RzAmzdvSrVq1SRjxoxqf0P8d9++fdU8PcghkrENDLaAwVYwkD7MHeQ2MHEjSgHUecp5jVsJUADdGlm2iwSil0CiC6AT0JkJIOqFnsGnnnpKCV+GDBmkWbNmamNoYxUwrsFG0FgcYmwEjV5BbgRNAXTCc806OIcABdA5sWBNSIAEbhGImACOHTtWnaKRNWvWWOw//vhjefDBByVNmjSxfh8TE6PmAD7yyCOujpVOANwAgD2Abogi22CVAAXQKjneRwIkYBcBHf+IdxuYI0eOKKnDUKlvwuIJDIlioUR8CQsvsGIWx6z5ptOnT6vfOf0kkYQGRicACS3DCfdTAJ0QBdYhsQhQABOLPMslARIIREDHP0wFENLWunVr2bhxo1pNi9Wzb731llcEsdEyFnAEEzjMAcS1OP/XN2HBRf369eXMmTOujp5OANwAgALohiiyDVYJUACtkuN9JEACdhHQ8Q9TAezatavs2bNHHeF29uxZtRceNlj+5ptv1GbJkLq8efOqxRNmCSdoQBwhejiGLWXKlN7LII1YYNG0aVP54osv7Gq7I/LVCYAjKprASlAAEwiQt0c1AQpgVIePlScBVxLQ8Q9TAcyfP7/g2LPq1asrMNjfDnP5Dh06JN99953aPy++HkBjw2b8/7PPPhtrCDl16tSC/fratWsn+Lebk04A3NB+CqAbosg2WCVAAbRKjveRAAnYRUDHP0wFEHP+Nm/eLMWLF/fW7fr162pTZxzf9t///lftmRdsCBibLkMc06ZNa1cbHZ2vTgAc3QDNylEANUHxMlcSoAC6MqxsFAlENQEd/zAVwPLly6vTMtBL55sMCcSxaVggEkwAo5peGCqvE4AwFJPoWVAAEz0ErEAiEqAAJiJ8Fk0CJGBKQMc/TAUQ+93hxAuzo9oggRDDr776KqgAYhGI75Fs/rV0u0DqBMANzy4F0A1RZBusEqAAWiXH+0iABOwioOMfpgIIybt06ZI6GcMsQdzQA1i4cOF46z5v3rxYAoi5gxhaxtAw5gf26NHDrrY7Il+dADiiogmsBAUwgQB5e1QToABGdfhYeRJwJQEd/wi4DyBuxlxA/+PcIH8XL14MKIc6JGfNmiWff/65zJ8/X+fyqL1GJwBR2zifilMA3RBFtsEqAQqgVXK8jwRIwC4COv5hKoBYAWwMA6dPnz5W/dAziG1eJk6cKC1btrRU999++00wzxAi6eakEwA3tJ8C6IYosg1WCVAArZLjfSRAAnYR0PEPUwFs0qSJdOjQQR577DHTuk2fPl314JnNEQzWmMuXL6t9BZcsWSK7d+8OdnlU/10nAFHdwH8qTwF0QxTZBqsEKIBWyfE+EiABuwjo+IepAGKPv5UrV0qxYsVM67Zv3z51DNzRo0fjrTs2jfZdBILNpM+fPy/oVcRWMq1atbKr7Y7IVycAjqhoAitBAUwgQN4etQS61SoiI1uVjdr6s+IkQALuJKDjH6YCmC5dOrVYo1SpUqZkdu7cKZUrVxb05sWXZsyYEUsAMZ8Qx8Lddddd6kQRtyedALiBAQXQDVFkG6wQoABaocZ7SIAE7Cag4x+mAli6dGkZOnSodOnSxbSOM2fOlDFjxsiuXbuCtgFHyX3wwQcCaURvIPLG6t8sWbIEvTfaL9AJQLS3EfWnALohimyDFQIUQCvUeA8JkIDdBHT8w1QAIX8Yol2/fr3kzp07Vj2PHz+uevAgh5DA+NLPP/+szvzFSSA4Vg5DwPgdeg6XLVumehHdnHQC4Ib2UwDdEEW2wQoBCqAVaryHBEjAbgI6/mEqgJinV7NmTTl8+LASvZIlS6reO/TiffLJJ1KwYEFZt26dZMqUKd423H333Woe4fvvvy8pU6ZU12KPQSwuwZFymGfo5qQTADe0nwLohiiyDVYIUACtUOM9JEACdhPQ8Y+A+wCeO3dOrdbFat+//vpL1RXz9nC27yuvvCJZs2YNWv9Acwl37NghVatWVZtNuznpBMAN7acAuiGKbIMVAhRAK9R4DwmQgN0EdPzDVADR84dePvT6Ydj21KlT6v+xgCO+o938G4ThY8wXxLYyvgnbxzzyyCNy4sQJuxkkav46AUjUCoapcApgmEAym6gjQAGMupCxwiSQJAjo+IepAKZIkUKOHTsmuXLlShCofv36CTaVxqbRtWrVUvK4atUqGThwoDpPePLkyQnK3+k36wTA6W3QqR8FUIcSr3EjAQqgG6PKNpFA9BPQ8Q9TAcR2LVjskVABjImJUbL37rvvqrl/SKlSpZI+ffrIuHHjJE2aNNFPOZ4W6ATADQAogG6IIttghQAF0Ao13kMCJGA3AR3/sFUAjQZirh+Of8MwMhaF+B8vZzeIxMpfJwCJVbdwlksBDCdN5hVNBCiA0RQt1pUEkg4BHf8IKICjR4+WjBkzxksLQ7xMgQnoBMAN/CiAbogi22CFQNeahWVU63JWbuU9JEACJGAbAR3/CCiABQoUEMwFDJQwnw9buTBRACmAfBUkVQIUwKQaebabBJxNIEECGI45gM7GY3/tdAJgfy3sL4ECaD9jluBMAhRAZ8aFtSKBpE5Axz9sXQXMAPxPHXmHPRUzZ87sWhwUQNeGlg0LQoACyEeEBEjAiQQsC2C4VgE7EUok66QTgEjWx66yKIB2kWW+TidAAXR6hFg/EkiaBHT8w7QHcNSoUWr7lqSyWteux0MnAHaVHcl8dQSwZO5MsvvE+UhWi2WRgO0EHvEsAnmJi0Bs58wCSIAEQiOg4x+mAhjojF4MZ2IblwwZMoRWkyR6tU4A3IBGRwArF8oqmw6fdUNz2QYS8BKgAPJhIAEScCIBHf8IuArYOAbOv2FYGYyNnCdNmqQ2dWYKTEAnAG7gRwF0QxTZBisEKIBWqPEeEiABuwno+IepAGLRglk6e/asrF+/Xg0P9+rVS4YMGWJ3G6I6f50ARHUD/6l83Ve/l8NnLgVsSsrkyaR8gSzsAXRDsNmGWAQogHwgSIAEnEhAxz9MBTBYY+bPn6/kb/v27cEuTdJ/1wmAGwA1eX2F7DlxIWBTat2RQ65cu0EBdEOw2QYKIJ8BEiABxxPQ8Q9LAnjw4EEpV66cXLgQ+EPf8XQiUEGdAESgGrYXEUwAO1UvKLuPn6cA2h4JFhBpAuwBjDRxlkcCJKBDQMc/LAngmjVrpEuXLjwJJEgUdAKgE0inXxNMALcObyLdZ6ynADo9kKxfyAQogCEj4w0kQAIRIKDjHyEL4MmTJ6Vjx45StGhRmTZtWgSaEb1F6AQgelv3b82DCeDBcfdJ27dXUwDdEGy2IRYBCiAfCBIgAScS0PEPUwGsVKmSYBWwf8LikCNHjkjp0qVl2bJlkitXLie22zF10gmAYyqbgIpQABMAj7dGNQEKYFSHj5UnAdcS0PGPgBtBm1HBcWalSpWSJk2aCLaDYYqfgE4A3MCQAuiGKLINgQhkz5BazlyMMf0zBZDPDQmQgBMJ6PhHyEPAZg399NNPpVWrVtwg2g+OTgCc+OCEWqfGr62QvScDLwjiEHCoRHm9kwh89VQdafHmKtMqLXyyjtzp2eKIiQRIgAScREDHP8IigOgZ3LJli5oXyPQvAZ0AuIEXBdANUWQbAhFYObC+1J3wvemf8eWGiQRIgAScRkDHP8IigJkyZZKtW7dSANkDGPBDkotAnPb2wProEqAA6pLidSRAAk4hQAFM5EjoBCCRqxiW4tkDGBaMzMShBCiADg0Mq0UCJBCQgI5/sAfQxgdIJwA2Fh+xrOMTwByeCfQbX2zMbWAiFg0WFG4CPw6qL3d7jjs0SxwCDjdt5kcCJBAOAjr+QQEMB+kAeegEwMbiI5Z1IAHcMLSRZEqbUtKmSiH3e/YB3Hz4bMTqxIJIIFwE2AMYLpLMhwRIIFIEdPyDAmhjNHQCYGPxEcs6kAD69o5QACMWDhYUZgL+AlgkR3o5ePqSKoU9gGGGzexIgATCQkDHP8IigDgXeMmSJVKwYMGwVNwtmegEwA1tpQC6IYpsQyACvgKI4eBZ6w/LOz/8RgHkI0MCJOBYAjr+oS2AV65ckc8//1wuXrwojRs3luLFizu24UbFrl69KnfddZdaobx582apWLGit85Lly6VESNGyPbt2yVt2rRSt25dmThxotx+++3ea1asWCEDBgxQ1+TLl08GDRokvXv31m63TgC0M3PwhRRABwdHo2pFc2aQ/X9e1LjSOZfUL5lTvt/9Z0Qq5CuAO19qKm8s30sBjAh5FkICJGCVgI5/mArgwIEDJSYmRqZMmaLKxr8hUhCh9OnTy/Xr1+Wbb76RmjVrWq1bRO7r37+/7N27V/VO+grg/v37pUyZMkruevToITji7plnnhEAw3VIBw4cEPRs9uzZUx5//HFZvXq1PPHEE4JNr9u1a6dVf50AaGXk8IsogA4PUJDq3eERwN+iTACH3VdaRi/aGRHwFMCIYGYhJEACYSSg4x+mAgjxeeWVV9TpHkgffvihPPvss0qOChUqJI8++qicPHlSFi1aFMbqhjcrSB8Eb86cOVK2bNlYAvjll19Kp06dBD2EyZMnVwUvXLhQWrdurX6XKlUqef7552XBggWyc+e/HzLo/UNv4tq1a7UqqxMArYwcfhEF0OEBCoMA5s6cRuoUyylzNh3x5lY2X2bZfvR/EW/8wzUKyz2eHsAeH/0ckbIpgBHBzEJIgATCSEDHP0wFECd7bNq0SYoVK6aqA1nCZs9Tp05V/41TP5o3by5Hjx4NY3XDl9WJEyekSpUqMm/ePLntttvUsK5vD+DBgwfVmcZvvfWWdOvWTS5cuKB6+gDs66+/VhXBkHClSpW8vaD43dy5c6VDhw5y6dIlJYn+CfKIHyMhP8yLRA8jmLo1BToLOL5FIBCKE//7l5Vb2URDu3R6AM0EcOnTdeXeySu9TRzUtKS8+vVu25uM5+q7nScSTQCnfLdX3l3BOYC2B5oFkAAJWCZgWQCzZs0qGzZs8M7zg0C9+OKLqucPCQJVunRpuXz5suXK2XXj33//reS0du3aMmzYMFVXfwFE2StXrpT27dvL6dOn5caNG2o4e/HixYK2I5UoUULJ4ZAhQ7xVXbNmjcoX4ps3b944TRg5cqSMGjUqzu8pgBJnG5jnm5aS8V/vsusxYL4hELAqgOsGN5QaY79LFAH8dscJeezjxOkBpACG8HDxUhIggUQhYFkAa9SooXq6jAUQ5cuXl3379nkXSGBxRNeuXZVcRSoFkivf8iGtkDQsVoHgpUiRwlQAjx8/rnr42rRpo3o3z58/L8OHD5eUKVOquY3JkiVTAti9e3cZPHiwtwjMA6xTp44cO3ZM8uTJE6fp7AGMjSS+HkAKYKReOcHL0RXAu4vnlC83/jsE/NOQhnLXK84RwAoFs8rW3833mkyeTCSF53+u3fg7OBC/K/yHgCmAISPkDSRAAhEmYFkAMW8OYnT33XerhR/VqlVTc+SMhPlxWCTxxRdfRKxJp06dEvzEl4oUKSIdO3ZUdYXEGQk9fJDBzp07y0cffaR6MzFH8Oef/+1BOHLkiBquxfw+CLCVIWD/uukEIGIAbSzIyhAwBdDGgISYtRsFcErHitL/sy1eEgWypZNqRbLL3M1/hEjHM1owsL7UnXDrJBCsAqYAhoyQN5AACUSYgI5/BNwG5ttvv1WLPNDT9dRTT6nVv0bCMGe9evXknnvuiXCTghd3+PBhNZfPSBiuvffeewULP7CSuUCBAmpBy6pVq+Snn37yXodePWz1gl6+WrVqqUUgEMkdO3Z4r+nTp4+a/8hFILHjoCOAbT0ngWzyOQnkhWalZNwSDgEHf6Ltv8KNAvhO58rS55NNFED7Hx+WQAIk4EACCRJAB7bHUpXM5gAuX75cGjVqJBhWNoaAMddv165datVvunTpvNvAYAsYLBCB9GEVMLeBiRsGCqClRzPgTVnTp5Kzl66FN9N4cqMAxo+aPYARexRZEAmQQJgIWBZA7J2HOXHvvfdenNWrWNCAnrDRo0dL0aJFw1RV+7IJtAjks88+k1dffVX27NmjejexCGT8+PFqdbCRMNcR+wMaG0GjV5AbQVMA7Xtab+X8cuuy8uL87XYX481fRwB71S0qZy7GRHwO4J35s8i2P87FYoG5pWaLQHznAKIH8JUlO+X3M7cWqnEIOGKPEwsiARJwAAHLAtirVy+1GhaCZJYgQsj8nXfecUAznVsFnQA4t/b6NWMPoD4rnSv3v9Jcig5ZrHNpWK7REcDdo5vK0Lm/RlwAqxXJJhsO/qUngAWyyNYjt2QRApglXSp5aNqtaR4JEcAVA++RehN+UPnsermpTP6W28CE5cFjJiRAArYR0PEP0zmA6AWbOXOmWvxhljZu3CgPPfSQ7N5t/55fttGJQMY6AYhANWwvQmcjaM4B1A8DeriKvBC5TdZ1BBB1em721qgSwGwZUkvHqesogPqPHq8kARJwCQEd/zAVQMyBw3y4woULm6I4dOiQ2gcQGyIzBSagEwA38KMAhjeK0SKA6z3bwFT32QbGjpXdCekBpACG97lkbiRAAtFDQMc/TAUQK39nzZolDRo0MG3td999p7ZUwX56TBRACmB4XwXRIIAPVCkgg+4taYsA9mtYXN7wnLaBBAF8oVlpaffOGi/kgHMA/YaAKYDhfS6ZGwmQQPQQsCyA2AT62rVr6ugzs4Qzc1OnTi2zZ8+OHhqJUFOdACRCtcJeJAUwvEijQQCfaVRCOlUvGEsAw3UU3MT2FdRwsyGAs3vXkvoTf5ADpy6q31kRQJwdnC19atN9AJvfmUcWbwv8ZZZzAMP7fDM3EiAB+wno+IdpDyDOzcWq2BYtWsigQYOkZMmSqrYYFsbCEOwPiBM3KleubH8rorgEnQBEcfO8VacAJiyKLcrnla9+ORarh8uJcwAHeqRs9j8ngURaAJ/6dLMs3Hrr7HErArh+aEMZu3iXqQBiYUepF2+dAW6WKIAJe755NwmQQOQJ6PhHwI2gv/rqK3X2L87KNRLO2b3ttttk2rRp0qpVq8i3KMpK1AlAlDXJtLpmAvhmp0rSskI+7/X3ezaC3pyIG0GXypNJ6pfKJe/88JvjkA/2bIo91mdT7Ej3ADYqnVu+3XkiXi6oU2IK4NlLMfK2J3ZtK+eXUnkyx9oG5qkGxaT67dll4rI93qPgsArYdwgY9X/m8y2mAhiMNwXQcS8ZVogESCAIAR3/CCiAyPvy5cvy9ddfq3OAIX/oCWzSpInaKJkpOAGdAATPxflXmAmg7znAaEEkBDC+obypD1eRJmXzRHR1rW7kElsANwxtJNXGfBuSAA67r7S08gi+7yIQO4eA/Svnuw+g8ay1fmu1VwDn9Kmpzv01VgHjmqc/2yzzttzqRfRNFEDdJ5XXkQAJRAsBHf8wFUAckXbmzBlp1qyZt604QxcnZ1y8eFHatGkjb775pqRJkyZaWCRKPXUCkCgVC3OhThHA+PbPowAGDnowAcKd/j2AOBP3/JVrtgjgJM8cwGf95gCGKoCo77r9py0JYK07ckj9krlkzOKdUt1zfvCE9uW5D2CY3zOYHQmQgL0EdPzDVAAhfjjnFxs+I23btk2qVKkiXbt2Vdu/TJgwQXBEGoSQKTABnQC4gV+4BLBeiZyyYs+flpHEJzIfP1pd6nryj+TcOqMhr3WoIAO+uLWowSwldg8guFUd/Y2cuhATsI7+Aoj/Pnn+ilQf8533nlB6ADEkv+DJOlJi2JI4ZfrywipgLALxT3hOuk5fr35t1gNoVQBRr6+frqtGPHYc+5/ckTOjnPjfFQqg5VclbyQBEkgMAjr+YSqAefPmlYULF0rVqlVVvYcOHSo4Fm3VqlXqv7H6d8SIEbJjx47EaFfUlKkTgKhpTDwVdboAYpHFGx0rSfLkyQIK4KO1b5fpqw9oh+M9z5Dy4zM3al0frIctUgKI0zxKDou72AH1Q29erbHL5fzV6942fdC1qsxYc1DyZ00n49qVjzUHMBwCCNEyE3IdAbxx8295dMYGKZU3kwz2bBOD5DsEjPptPHTGs33MWq8kxjcEXPGlZer85cfq3C7DWpSJFddDpy9SALWedF5EAiTgFAI6/mEqgGnTphWcB1ywYEHVljp16kjTpk1l2LBht95MDx6UO++8U86fP++UtjqyHjoBcGTFQ6yU0wXQdz5ioB7AUI9fCyZ1vgiDXfuCZxHIuCCLQBqVzuVZqHEyxMjEvjxQPQw+k5btljeX7/Pe9FmvGlKjaA7vf/suAsE9f56/GmvuYCg9gKXzZpYl/e+OI4DNyuWRxmVye3tMA/UAmoHwF8CbHkl87OOfpVD29DKyVdl45wAePXtZvt99UtpVLiBpU6WgACboSePNJEACiU1Axz9MBRAngOAouLp160pMTIw6Fxg9gg0bNlRtwpBwvXr11DxBpsAEdALgBn52CyAm9M9ce8h0Ar+OaDldAF9uXVZenL/d2xQzUfOXRCvPTTABvHr9RqwewoQKIHrTpq0y71UNJIBzn6il9vszhswTIoD+jOLrAYyPp38P4Ovf7pH3Vuy/9WXYI8JMJEACJOA0Ajr+YSqAmN8HyRs/frzMmzdPsADk6NGjavNnpE8++UQmT54sGzZscFqbHVUfnQA4qsIWK2O3ABofssHm7wUTHDTPST2Awz1DjZhf1tCzDUuH924NVRpSUdIzN+7q9Zve30VCAFFY7XHL5Q9PbxgSBfAW/gueYfFyI5aqf+8b00wmeHpKKYAW3yx4GwmQQEQI6PiHqQD++eef0rZtW1m9erVkzJhRCeD999/vrTR6AmvUqCFjxoyJSEOitRCdAERr23zrbUUAsSgDw3MxPpJjtgjk/kr55fUHK6ri7BTAA2Oby+2DF2uFo0rhbDKnT62g9fEVOrO6G2K7/sCZOAL40PvrZM1v/+7B6QQBXOupTydPvYyFEsGGgMPRA/hht2pq/0ad5D8E7H+P1R5A5LP3xHlJmSK53H5bBs+ejTspgDoB4TUkQAKJRkDHP+LdB/DcuXNKAFOkiD0nBkO/+L3RI5hoLXR4wToBcHgTtKpnRQC/eLymlPec3frfdYdk9KKdqhys0l35zypgnAdb1PNh2/zOvJI6ZXLLAjikeSnpVfcObzsCSWQoAvhul8rStFxeWwVw6Nxt8slPh731doIAojIHPcOzebOmlTQpUwSdAxgOAQxliNVOAfR9IVAAtd4WeBEJkEAiEtDxj3gFMBHr7oqidQLghoZaEcAFT9b2CGBWmeFZeTty4a3V5L4CaPbBP3PtwVhz5fzZ+Q8Bv/5gBWlTMb8kS5Ys6gTw3OVrMmHpLo8g35JApwigL/NTF656to/5dwNp/0UgVgXwoGfV7TOf39o2hwLohncItoEESCDSBHT8gwJoY1R0AmBj8RHLusnrK2TPiQuxyvP/4PY9CSRTmpTyy8gmSsxCEUAU8MQnG2XxtuOmbfMXQDN5iJYeQKOBRn0pgMEf52A9gP09J4HMD3ASSPDc/72CPYCh0OK1JEACiUFAxz8ogDZGRicANhYfsaxDFUDfc4KjUwCreIaA9Y+VC7Y4xWwOoL8A4mzbPp9sSlBMg9UDmce3CMS/8GA9gOPb3SnPz9lmWuf4VgHb1QNIAUzQ48ObSYAEooiAjn9QAG0MqE4AbCw+YllHUgD7eiRo0bZjidwDGDkB3HH0f3L64lXJkSGNNH/jR+2YFsiWTo78dWs1r5HsFsCB95b0DFvvVsUNbV5aHvVsA3PHEPOFNYEE8NsB9WTbH2dtGQKmAGo/PryQBEggygno+AcF0MYg6wTAxuIjlnWocwAT0gMYrQJoVu/4VgH7B++iZyuSsv9sRaIT2JEty3jnVkZCALFau0TuTDL+612qOKNttcZ+J0fPXYlTZTMBrFgwq8zrW1vmbj5iTQD/s0q2HjkXq3zfgimAOk8OryEBEnADAR3/oADaGGmdANhYfMSydqsAdqlRyLsIwxfmu11C7wHEqRRnLsVIp6nrZO/JW/MlQxFAXB9sGxzfOkZaAH8e1khm/3wkjgBeu3FTDp+5JA0nrYj1PJoJII7Xu7dsnogIIE78wFnGTzUoLtVvzx7Sa4VzAEPCxYtJgAQSgYCOf1AAbQyMTgBsLD5iWYcqgNMeqSqNPMd9IX2z44T09OwHiBRsFTCuiWQP4NONisvkb/fG4WhFAI1MHvvoZ8+RbidcIYCnPauAq/yzCnjD0Eby5ca4AoiGHjt3WWp6zhn2TWYCONUjgE08Ajh/yx/S/7MtsRjpPMytQ+gBxHB13/rFdLKNcw0F0BI23kQCJBBBAjr+QQG0MSA6AbCx+IhlHaoA/vZKc0mR/NbWLH///be89f0+KZc/i0xffdC7D2Cg7T8ogHphDUcP4NYRTSRLulQBC/QXwN//uiRt314TR9xCFcAr125IyzdXSdUi2WRs2/J6DfZcRQHURsULSYAEXE5Axz8ogDY+BDoBsLH4iGWtI4DYcawPRwAAIABJREFU8HnYvF/F6Pkxq9wj09dbFsC3PatksWm07zBpQreBCUcPILa82TbqXm9zo6kHMNgefP4CmDNTGvn54BkpmD295M6c1tvmUAXQ+GLgu3+jzsNMAdShxGtIgASSAgEd/6AA2vgk6ATAxuIjlrW/ALavUkAmtK8Qq3zMgdt0+C8lgBk8UhRuAfzu2XpyR86MjhLAOsVuk+GexRhYHGGkYAKYL0taWTO4oSmfUOYAfv/cPVJ/4g+x8gl1FbAVATSr+FHP2cK1PGcM+6b4hoCtPrgUQKvkeB8JkIDbCOj4BwXQxqjrBMDG4iOWta8Azn2ilhrOTeU5NzXUlJAeQDsEsL/nOLop34U+B3Dzi43lgmfVLnrC/FO4BLCh53zc73adVNnf5+n53OyRa9/VtpA3iNcYzzF7xrY5FMB/N4LmHMBQX528ngRIIJoI6PgHBdDGiOoEwMbiI5a1rwAG6zWKr1JuEcD4GJgJ4C9Hzkqr/6xWaHR6ADEvr1WFfDLTM6yOhPLQw1rUZ889ow4Dvtgi/7fpD+91Zr2IvvX13Qg6WCzPXIyRyi9/o/JeP7Sh5Mr077Cvb5zZAxixlyILIgESIAFFQMc/KIA2Piw6AbCx+Ihl7QQB/GlIQzXvLJxzAK32AIYqgFgIc/vgWxsm58+aTla/0MA0dkbbMqdNKa09Zxz7CiBuMGu7vwCa7cuXVARw3f7T0tGzDQ8SewAj9vbAgkiABBKBgI5/UABtDIxOAGwsPmJZJ7YAjrm/nHS+q7BqbzQKoG+97RbAI56VunXGfx/r2fAVwDrjl3tPEAnWA/iXpwewktED6BHwXD4LP3wLcEoPoC/n9z1bETX+ZyuiUF8o3AYmVGK8ngRIINIEdPyDAmhjVHQCYGPxEcs6sQXQV1SMc3VTpUgme8c0j8Mg0EKKA2Obe3vhjJsi1QMYSQFEWds8p2W09OyZZ6SkJIBo+69Hz0nHagUl1FXGBq/3V+6XMYt3qv8MJskRexGyIBIgARLwIaDjHxRAGx8ZnQDYWHzEsnaSAKLRmFNXIFt6yZ4hNQXQbw6gkpZTF+UenxXCSUkAw/GiwD6FL8z5RRqUzq3mYjKRAAmQgNMI6PgHBdDGqOkEwMbiI5a10wQwvoYbPYBpUiaX656FEzc8P0hJqQcQ7W06eaXsOn5etT0xBLCMZzugxf3vjjVkv9yzlU9Rz1Y+VlOwbWCs5sv7SIAESCDaCOj4BwXQxqjqBMDG4iOWdTQKYJEc6aWsZ7uaRb8csyyAM9celBfnb4/DOdRFIMjAEFO75wAalV2550/BqmunCOB95fPKWw9VTtAzSwFMED7eTAIk4CICOv5BAbQx4DoBsLH4iGUdLgF8+IOf5Me9p+JIiW9DzI6CC2UeliFaoQpghQJZZKtn/hiScRaw75m1vnVMLAHE/McXPaetvNS6rNxVNIeqkv8qYKOeKzwC2NVBAviyp84P1yySoGeWApggfLyZBEjARQR0/IMCaGPAdQJgY/ERyzopCODeMc2k+NAliumifnWkbL4s4jQBNAs4BTBiLwMWRAIkQAKOIaDjHxRAG8OlEwAbi49Y1m4UwN717hDMEzROAkGv3gbPObd//HVZ2lTKr9i6UQDvmfC9HDx9SbUvWM/q2UsxUvGlWxtBG/swmj10ZtvA+M8BZA9gxF6uLIgESCAJENDxDwqgjQ+CTgBsLD5iWbtNAF/rUEFttPyG5xg4XwH0BxppAXzTU59J3+xRc+WwqbH/RtDh6AHENik9Ptogg5qWkgc8ZzrHlyiAEXuJsSASIAESCImAjn9QAENCGtrFOgEILUdnXh2tAji6zZ3SxTPvsGLBrIIzjI3TOL4dUFeK5cokr3tky0kCiOjjjOGMaVKquX52CCDKwMkkOnvkUQCd+XpkrUiABEhAxz8ogDY+JzoBsLH4iGUdrQL4w8D68vuZS5InS1pJmTxZVAigEVQ7BVD3waEA6pLidSRAAiQQWQI6/kEBtDEmOgGwsfiIZf31r8ek9383yYNVC8r4B8pbLjeSq4Bvvy2DfP/cPd66+p7Hmxg9gHe/utwjo5flkZqFPat4ywVlSAGMi4irgIM+NryABEggiRDQ8Q8KoI0Pg04AbCw+oln/ef6q3JYxtdbQYaCKRZsALt1+XB6fuTFOc6xsA3Py/BX5ftdJz8kS+SVd6hRBY0cBjIuoled4u1/+2aon2AKWoIB5AQmQAAlEMQEd/6AA2hhgnQDYWHzUZZ3YAlhz7HI5d/mabB3RRFJ7VgAHmwN4/cZNKfbP1jC+sOOTD6O3tFSeTPL103Utx8gJAvi/K9ek/Mhlqg3rhzaUXJnSmrYnUquAKYCWHyfeSAIk4DICOv5BAbQx6DoBsLH4qMs6MQUQsK55hO6mZwFEmpS3euBe8ywCwUpgpEBSZ2wsrSuAGGreeey8YAhap6cvUBB1BXDB1qPS79PNSmj3jG7mzS7QRtChPjTD5m2T6zf+lnHtAg/9UwBDpcrrSYAESCBhBHT8w5UCWKRIETl06FAses8//7yMGzfO+7vDhw9L3759Zfny5ZIuXTp56KGHZOLEiZI6dep/PyRXrJABAwbI9u3bJV++fDJo0CDp3bu3dlR0AqCdWRK4MJICiJNAsAgkvmSHAIYrjK8s3ilTV+6PV07xRwgnZK9MvsyxeujCJYA67aEA6lDiNSRAAiQQPgI6/uFaAezRo4f07NnTSzNjxoyCH6QbN25IxYoVJWfOnDJp0iQ5ffq0dO3aVdq2bStvvvmmuubAgQNSrlw5lcfjjz8uq1evlieeeEI+/fRTadeunVaUdAKglVESucgNAti/YXF5pnEJ2yOGFbhdP9wg91fMJ91q3x5yeRTAkJHxBhIgARKIGgI6/uFaAXz66acFP2ZpyZIl0qJFC/n9999Vzx7SZ599Jt26dZOTJ09K5syZBT2GCxYskJ07d3qzQO/f1q1bZe3atVoPgU4AtDJKIhdFuwA2LZtH3n24SlREK5IC6DtX0IAT5ySQNuXk4RqFE8SOcwAThI83kwAJuIiAjn+4VgCvXr0qMTExUrBgQWnfvr0MHDjQO7w7fPhwmT9/vpI5I/3111+SPXt2NSRcv359qVu3rlSqVEmmTJnivWbu3LnSoUMHuXTpkqRKlSrOo4Iy8WMkBADlnzt3TkklU/wEol0Am9+ZR97uTAE0izJWOKfw7LX4yPT16s8UQL4bkAAJkIB9BJKsAL7++utSuXJlyZYtm6xfv14GDx4srVu3lmnTpinavXr1koMHD8qyZbdWMBopTZo0MmPGDOnUqZOUKFFC9QgOGTLE+/c1a9ZI7dq15ejRo5I3b944kRs5cqSMGjUqzu8pgHoPOQVQj1M4ropkD6BvfY1FMxTAcESReZAACZCAOQFXCWAgufJt+oYNG6Rq1apxaMyZM0ceeOABOXXqlOTIkUMJIBaJLF26NNa1WADy8ccfS8eOHZUAdu/eXcmjkTAPsE6dOnLs2DHJkydPnHLYA5iwlyIFMGH8QrmbAhgKLV5LAiRAAtFFwFUCCHnDT3wJq3/Tpo27F9kff/whBQoUkHXr1sldd90ldg0B+9dNJwDR9UjZW1sKoL18fXNf+9tp6fT+OvWrSG6azB7AyMWYJZEACSRdAjr+4co5gP4h/+qrr6Rly5aq169QoUJiLAI5cuSIdyj3888/VyuBfReBLFy4UHbs2OHNrk+fPrJlyxYuArHpNUUBtAmsSbY3b/4tT3yySYrmzCCDmpaKWMEUwIihZkEkQAJJmECSFECs0EVPHxZyZMmSRTAs/Mwzz6ihYSz8QDK2gcmdO7dMmDBBzpw5o+b7tWnTJs42MNgCBlvBIF+sAuY2MPa9ogbO3iqzNx6Jt1fqiU82yuJtx2NVIpQeLENA7NgH8KNHq0u9EjntA+SCnCmALggim0ACJOB4AklSADdt2qT269u1a5dakVu4cGE1pw+bOKdPn94bNGwEjev8N4LGQhAjrfBsBA15NDaCxtYw3Ajavuf+zMUYwckS7asWlPolc5kW5DQB3HX8f7Jgy1FpWSGflM7Lld7Bno5iQxbLdU/vY7daRWRkq7JiCOHL3AYmGDr+nQRIgAS0CSRJAdSmE4ELdQIQgWq4qginCaCr4EagMYdOX5RvdpyQh+4qJOlTp6QARoA5iyABEkh6BHT8I0nMAUys0OsEILHqFq3lUgCjNXLm9WYPoLviydaQAAk4g4COf1AAbYyVTgBsLN6VWVMA3RVWCqC74snWkAAJOIOAjn9QAG2MlU4AbCzelVlTAN0VVgqgu+LJ1pAACTiDgI5/UABtjJVOAGws3pVZUwDdFVYKoLviydaQAAk4g4COf1AAbYyVTgBsLN6VWVMA3RVWCqC74snWkAAJOIOAjn9QAG2MlU4AbCzelVlHUgD/s3yvTFy2R3EMZa9BV4K3qVEUQJvAMlsSIIEkTUDHPyiANj4iOgGwsXhXZh1JAfzflWvS4d210qxcXunfqLgreSZ2oyiAiR0Blk8CJOBGAjr+QQG0MfI6AbCxeFdmHUkBdCVAhzUqnAL41KebZeHWo+yxdViMWR0SIIHIE9DxDwqgjXHRCYCNxbsy63AJ4O23ZZDvn7vHlYyiqVHhFMDTF67KK4t3ScfqBaVakezRhIF1JQESIIGwEtDxDwpgWJHHzkwnADYW78qsKYDuCms4BdBdZNgaEiABErBOQMc/KIDW+Qa9UycAQTPhBbEIhEsAi+RILz8MrE+6iUzAEMBJ7StIuyoFErk2LJ4ESIAE3EFAxz8ogDbGWicANhbvyqwpgO4K67Qf98u6/WfknS6VJVWK5O5qHFtDAiRAAolEQMc/KIA2BkcnADYW78qsKYCuDCsbRQIkQAIkEEYCOv5BAQwjcP+sdAJgY/GuzJoC6MqwslEkQAIkQAJhJKDjHxTAMAKnANoI85+sKYD2M2YJJEACJEAC0U2AApjI8dMJQCJXMeqKpwBGXchYYRIgARIggQgT0PEP9gDaGBSdANhYvCuzpgC6MqxsFAmQAAmQQBgJ6PgHBTCMwDkEbCNMDgHbD5clkAAJkAAJuIIABTCRw6gTgESuYtQVzx7AqAsZK0wCJEACJBBhAjr+wR5AG4OiEwAbi3dl1mv2nZKHpv0Uq20Hx92n3VZj42FuBK2NjBeSAAmQAAlEGQEd/6AA2hhUnQDYWLxrsz527rI88M5a+ePsZdVGCqBrQ82GkQAJkAAJWCCg4x8UQAtgdW/RCYBuXrwuNoG6r34vh89cogDywSABEiABEiABPwI6/kEBtPGx0QmAjcW7OmsKoKvDy8aRAAmQAAkkgICOf1AAEwA42K06AQiWB/9uToACyCeDBEiABEiABMwJ6PgHBdDGp0cnADYW7+qsKYCuDi8bRwIkQAIkkAACOv5BAUwA4GC36gQgWB78uzmB5lN+lB3H/qf+yEUgfEpIgARIgARI4F8COv5BAbTxidEJgI3FuzrrfSfPy5OzNsvTjYpL03J5tdvKbWC0UfFCEiABEiCBKCWg4x8UQBuDqxMAG4tn1iYEKIB8LEiABEiABNxOQMc/KIA2PgU6AbCxeGZNAeQzQAIkQAIkkAQJ6PgHBdDGB0MnADYWz6wpgHwGSIAESIAEkiABHf+gANr4YOgEwMbimTUFkM8ACZAACZBAEiSg4x8UQBsfDJ0A2Fg8szYhMHbxTnlv5X6Z9khVaVQmNxmRAAmQAAmQgOsI6PgHBdDGsOsEwMbimXUAAuevXJNMaVORDwmQAAmQAAm4koCOf1AAbQy9TgBsLJ5ZkwAJkAAJkAAJJEECOv5BAbTxwdAJgI3FM2sSIAESIAESIIEkSEDHPyiANj4YOgGwsXhmTQIkQAIkQAIkkAQJ6PgHBdDGB0MnADYWz6xJgARIgARIgASSIAEd/6AA2vhg6ATAxuKZNQmQAAmQAAmQQBIkoOMfFEAbHwydANhYPLMmARIgARIgARJIggR0/IMCaOODoRMAG4tn1iRAAiRAAiRAAkmQgI5/UABtfDB0AmBj8cyaBEiABEiABEggCRLQ8Q8KoI0Phk4AbCyeWZMACZAACZAACSRBAjr+QQG08cHQCYCNxTNrEiABEiABEiCBJEhAxz9cKYBFihSRQ4cOxQr5888/L+PGjVO/27p1q/r3qlWr5NSpU4Lre/fuLf379491z4oVK2TAgAGyfft2yZcvnwwaNEhdp5t0AqCbF68jARIgARIgARIgAR0COv7hWgHs0aOH9OzZ08spY8aMgh+k6dOny5YtW6Rdu3ZSsGBBWbNmjfTq1UteffVVefLJJ9U1Bw4ckHLlyqk8Hn/8cVm9erU88cQT8umnn6r7dJJOAHTy4TUkQAIkQAIkQAIkoEtAxz9cK4BPP/204Ec39e3bV3bu3CnLly9Xt6DHcMGCBep3RkLvH3oP165dq5WtTgC0MuJFJEACJEACJEACJKBJQMc/XCuAV69elZiYGNXD1759exk4cKCkTp06ILouXbrIlStX5Msvv1TX1K1bVypVqiRTpkzx3jN37lzp0KGDXLp0SVKlShU0DDoBCJoJLyABEiABEiABEiCBEAjo+IcrBfD111+XypUrS7Zs2WT9+vUyePBgad26tUybNs0UH3r06tWrJ4sWLZLGjRura0qUKCHdunWTIUOGeO/BUHHt2rXl6NGjkjdv3jh5QTrxYyQEAAJ67tw5yZw5cwih46UkQAIkQAIkQAIkYI2AqwRw5MiRMmrUqHhJbNiwQapWrRrnmjlz5sgDDzygFnzkyJEj1t+xwKN+/frSr18/GTZsmPdvEMDu3bsreTQS5gHWqVNHjh07Jnny5IlTTqA6UgCtPcC8iwRIgARIgARIIHQCrhJAyBt+4ktYzZs2bdo4l/zxxx9SoEABWbdundx1113ev+/YsUPJ32OPPSZjxoyJdZ+VIWD/HkCIX6FCheT3339nD2Dozy/vIAESIAESIAESsEDAGIE8e/asZMmSxTQHVw4B+7f0q6++kpYtW6qtYSBkSOj5a9CggXTt2lWt/vVPWASycOFCgSQaqU+fPmr1sO4ikCNHjqghYCYSIAESIAESIAESiDQBdEChA8wsuU4AIWfo6UPPHqwXw8LPPPOMGhqeP3++V/7w9yZNmsjEiRO9XFKkSCE5c+ZU/21sA4MtYLAVDPLFKuBQtoG5efOmmi+YKVMmSZYsmS1xNyyfvYy24A0pU8YiJFy2XsxY2Io3pMwZi5Bw2XoxY2Er3pAytzsWf//9t5w/f17tYZw8efKkIYCbNm1S+/Xt2rVLLcgoXLiwdOzYUW3inD59egUh0Fw9XHvw4EEvKGwEDXk0NoJGr2AoG0GH9DRYvFhnnN9i1rwtRAKMRYjAbLycsbARbohZMxYhArPxcsbCRrghZu2EWLiuBzDEGET95U54iKIeYpgawFiECWQYsmEswgAxTFkwFmECGYZsGIswQAxTFk6IBQUwTMFMrGyc8BAlVtudVi5j4ZyIMBaMhXMIOKcmfF0wFr4EKIDOeR4s1QTD3GPHjlXb1aRJk8ZSHrwpPAQYi/BwDEcujEU4KIYnD8YiPBzDkQtjEQ6K4cnDCbGgAIYnlsyFBEiABEiABEiABKKGAAUwakLFipIACZAACZAACZBAeAhQAMPDkbmQAAmQAAmQAAmQQNQQoABGTahYURIgARIgARIgARIIDwEKYHg4MhcSIAESIAESIAESiBoCFMCoCVXcir799tsyYcIEOXbsmJQtW1YmT54sd999dxS3KLJVx+rp//u//1ObhqdLl05q1aol48ePl5IlS3orgpVazz33nDoB5vLly9KwYUMBd9+jdQ4fPix9+/aV5cuXq3weeughdcJM6tSpvflgU/EBAwZ4NxXHxuT+m4oznrdwIS5DhgyR/v37q2caiXGI7GsD56dj4/slS5ao575EiRLywQcfSJUqVVRFcMrAqFGjZOrUqfLXX3+pM9bfeust9T5kJPy+X79+smDBAvWrVq1ayZtvvilZs2b1XrNt2zZ58sknZf369ZI9e3bByUsvvvhirJOT5syZo37322+/yR133KHObb///vsjCySRSrt+/bo6uOCTTz6R48ePS968eaVbt24ybNgw7+kOjIU9wVm5cqX6fN24caP6jJ07d660adPGW5iTuOvUxYwSBdCeZ8f2XD///HN5+OGHlYzUrl1b3nvvPZk2bZo6u9g479j2SkR5AU2bNlWnxFSrVk3wRjt06FDBBxIYZsiQQbUO5z/jTOgZM2ZIjhw55Nlnn5UzZ86oNwUcHXjjxg2pWLGiOkJw0qRJcvr0aXW+dNu2bdWHHZJxrCCOFMQH3OrVq9VpNb7HCjKetx4mHN3YoUMHyZw5szrO0RBAxiFyLzaIW6VKlRR/cM+VK5eSryJFiigBQ8IXJYgYXheQw9GjRws+MHfv3q2OvkRq1qyZ4Dx0SCJSr169VB54PSFhTzrci3Lw2tuzZ4+SmxEjRqjXGRKO4MSX2pdffllJHz6Ehw8fLqtWrVLS6fYExq+//rp89NFHSq5//vln6d69u+KNL0iMhX1PAL784L26cuXK0q5duzgC6KTXgE5dzEhRAO17fmzNGW9+eDDfeecdbzmlS5dW31DQg8IUOoE///xTfdiht65u3bpy7tw5JXYzZ86UBx98UGWIs50LFiwoixcvlnvvvVf1kLRo0UJwFjPOXET67LPP1AfZyZMnlcigJwW9IDt37vRWCr1/W7duVR9wSIynyIULF9QzjS81+ICDWEMAGYfQn+WE3PHCCy+oD74ff/zRNBv0NuBZf/rpp9WzjYQe2ty5cysxxJccPOtlypRR57IbooZ/16xZU/W4o5cd713Yv/TEiRPePUzHjRunvjhBHHF+Ol53EEW8zoyEL27ZsmVTX6DcnvDeAq7ofTUSZATHmuJ9ibGIzBOAZ9G3B9BJ3HXqEogSBTAyz09YS4mJiVFvALNnz441FIJvhFu2bFECwxQ6gX379knx4sVVL2C5cuXUkC6GfNHjhw8cI1WoUEGJNobA0Bsxf/58JXNGQg8KhrNwP3o3IJPoUZkyZYr3GryZoKfr0qVL6k2c8RTVcwpu6PG45557vALIOIT+LCfkDogbvtxAwvBekj9/ftVjjR5spP3796ueQJy7jufaSK1bt1bDu+itmj59uprycPbs2VhVwd8RX/RiPfLII0ru8fox0ubNm9WXAJRx++23q9EMnMeOHyPhfnwxOHToUEKaGRX3QojfffddWbZsmeotxftMkyZNVPs7derEWEQoiv4C6KTXgE5dKIARelAiUQx6ofCmjG/pmLdmpFdeeUW9+WIYhik0ApAwfIBB3oyej1mzZqkPKvRu+Ca8AePDCcPuGNY6ePCgeoP2TTiVBcNjeJPGGzd6BDGvzUhr1qxRQ/eIJcpO6vFErymGuzAEnDZt2lgCyDiE9iwn9GrwR4LAtW/fXs3PQ28fnndIm/HsYp6g0euN6/FagJQtXbpU8F6E5x/Dur4JrwW8ptDzh9cRhoSNIWJcZ7y3oQz0FmIeLfLBvFojBXoeEtpuJ96P9wa8b6Bn1ZhygtcJ+CExFpGJmr8AOom7Tl0CUWIPYGSen7CW4v8maWSONwYMC2CIhSk0AljEsWjRIjW3yFjgEeiDpnHjxqoHBN/MfT/0fEvEB9fHH3+s5hj6fugZ10De69SpoyYX37x5Uwmg8aGX1OKJ4fOqVasqiUbvKpJvDyDjENqznNCr8ewiHngejYTFHJBzTFnw/fKCRQlGQg8hYvn1118rATT7Mooe9h49egiGmX2/SBl5QCrx+kM5NWrUUAKIfPBFykhYEIE8rly5ktCmOv5+fDEaOHCgWoyAOYAY4YGMv/baa6rHnLGITAgDCSA+ixP7NaDzDFAAI/OcRKQUDgGHF/NTTz0l8+bNU5PY0bNnJA49hpdzoNzAHhP80cNhJCyuwZtu8uTJVY9So0aNOBQfmXBI4cKFBV9ysKjMSJivh3mZEDSdIScOAYcnWJhvDFnGF1QjIQ7//e9/1Rd9xiI8nIPlwiHgYIT494gSwMRqbMmACfNGwtwdDGNyEYheKDC8AvnDfLwffvhBzf/zTcbiA7zZYr4eEnrs0EPhvwgE86WMb4JY0Ytv576LQLDyEauLjYTVlfg277sIJKnG8/z583Hmc2GYsFSpUmqRAT4EsRiHcdB7rhN6FYZb0ZPnuwgEc/B++ukn1eNkTDrH77CdERK+lGIBlf8iENxTvXp1dQ3+jV4930UgGN7EIhBjyyTc/8Ybb8RaBILnA683I2F1MeYSJoVFINh5AMKH9wsj4f39ww8/VMPrjEVCn3a9+wMtAnHCa0DnGQjUSg4B68XfcVcZ24ZgGBJzZTCP5v3331f7zOEbPFNwApjYjuFFTEL33fsvS5Ysaj8/JLzxfvXVV2oeEhYoYE9AbPXivw0MVuphmAYLRjDfD4tE/LeBwepIDJNB+rAK2GwbGMbzVtx8h4AZh+DPcjivwFAv5hZjkRO++GAOIJ5bvMd07txZFQVRM0QEX5ww5IsvUf7bwGCIDHMHkTBdAu9NxjYw+IKF112DBg3UPLe9e/eq1w4WVhnbwEA4sYgK01vw5RavVeyBl1S2gQGPb7/9VjHEEDAWyYDjo48+qmLAWITzyY+dF3YlwMJAJCx2wrA7FvXhcwCLk5z0GtCpixkpCqB9z4/tOaP379VXX1W9Uli1itVxeLNk0iOAb3VmCd+u8caLhHlGmIMDUfTdCBq9UkbCRtCQSf+NoLEQxEhYTYlvixB0TJxHz5bZRtCM5y1i/gLIOOg90+G6Cl96sNAAUoZpEVgQYqwCRhnGxrMQE9+NoPE+ZCR8GfLfCPo///lPnI2gMbwJycRKe7wmIIC+r80vv/xSSZ8x3AkZxD6bSSGh9xObYGOUAiMKeO/AfEgwMnpNGQt7ngR8oYHw+SeM7qBDwEncdepCAbTnOWEiQ2AXAAAIvUlEQVSuJEACJEACJEACJBBVBNgDGFXhYmVJgARIgARIgARIIOEEKIAJZ8gcSIAESIAESIAESCCqCFAAoypcrCwJkAAJkAAJkAAJJJwABTDhDJkDCZAACZAACZAACUQVAQpgVIWLlSUBEiABEiABEiCBhBOgACacIXMgARIgARIgARIggagiQAGMqnCxsiRAAiRAAiRAAiSQcAIUwIQzZA4kQAIkQAIkQAIkEFUEKIBRFS5WlgRIwCCA3e9xvB5OisBpFDgmq2LFiiEBOnjwoDrpwsq9IRXk8Iv9T16xu7rGKQuIG871ZSIBEog8AQpg5JmzRBIggTAQWLJkiTofFjJRtGhRue222yRlypQh5RyqAOK87Y8//lh+/fVXVU6VKlXUObjVq1cPqVynXRxOAdRhSgF02hPA+iRFAhTApBh1tpkEXEAA58pOmDBBDh06ZLk1OrLim3nnzp2ldu3aUqtWLUmbNq06i/v//u//1BnP+fPnt1yPxL6RApjYEWD5JBB5AhTAyDNniSRAAgkk0K1bN/noo4+8uRQuXFjeffddGT16tOqdS5EihdSsWVOmTJkid9xxh/e69evXq2HjnTt3Srly5WTo0KHStm3bWEPAkLlBgwbJjz/+qA58x7AyDn/3zcfI8MaNG5ItWzaBjD7yyCNBW/X222/L66+/Lr///rtkyZJF7r77bjWEjfT111/HW39DVj///HN588035eeff1Zt+OSTT+TcuXPSp08f2bVrl9SpU0dmzpwpOXPmVPmC1dmzZ6VSpUry1ltvyZUrV6RTp04qj9SpU6tr/AUwJiZGhg0bpvLGvShn/Pjx6jokSPeTTz4pq1atElxbpEgRJePNmzcXM6levHixPP3006rdNWrUkK5du0r37t3V0D2HgIM+NryABGwhQAG0BSszJQESsJMAhOeNN96QqVOnyoYNG5TwrVy5UpIlSyZ33nmnXLx4UYYPH65kZMuWLZI8eXL1O8z3a9Cggbz44oty4MAB6d+/v+zfv98rgH/88YeUL19eic7gwYMlc+bMsnr1atXjV7JkyThNOn/+vOTKlUtmz54tLVq0iLfJEDbID+QM+Z05c0ZJZr9+/dR9c+bMibf+hliVKlVKJk+eLIUKFZJHH31UCRjqCflNnz69dOjQQRo1aiTvvPOOVwCR93333afajXwgXz179pQxY8aYCiB6OnHduHHjJF++fDJ37lwlhNu2bZPixYurtqLcSZMmSYYMGWTHjh2qDnXr1o0jgJA+3NO7d28lqeDw7LPPyokTJyiAdr5ImDcJBCFAAeQjQgIkEJUEIEH4gaiYpT///FPJGaQFPViQRUgdhASihIReQ0iJsQhkyJAh8tlnn8nu3bslVapUQbn07dtXli5dqnodMSQcX8JQMcTryJEjkilTpqB5+9ffEMBp06ZJjx491P2oK3rzvvvuOyW2SJA29FiiNxAJPYALFy6M0+6BAweqnkPIsW8P4G+//aaEDfWE/BkJUom5jpjzCElu166djBgxIk47/HsAwXTevHlqmByCjvTCCy+oHkX2AAZ9DHgBCdhGgAJoG1pmTAIkYCcBfwGEuKCHa926dXLq1Cm5efOm6vVbtGiRGpp85plnZOvWrbJ8+XJvtfDfGOI1BBDXYejUd3g5UBsw/w+yhQUNEKJgCb2FmD947Ngxadq0qfq5//77vTIarP6GWGEYu1q1aqq477//XonfyZMnvUO+H374oephQw+jIYCHDx82bTfyxPC5rwCiNxO9iOjZ801Xr15Vw+UYgoaEQpwhhBBDyKDBwF8A0UYMk0+fPt2b3fz586VNmzYUwGAPDf9OAjYSoADaCJdZkwAJ2EfAXwDLlCkjBQsWVPP30HMFAUTPH4YvIRuYg/bLL7/EK4AQmYwZMwYVwIkTJ6oh12+//VaqVq2q3cjr168rYVy2bJka8kXvG4awMQ8uWP3N5taZraZF7x/airl7wQQQc/kwlOwrgBA8DAGjxw5D674JbPLkyaN+hZ5UyDXa8tVXX6nh4KeeeirOEDDYZ8+enQKo/ZTwQhKIDAEKYGQ4sxQSIIEwE/AVwNOnT6ttYDAPEAsrkLBAAf82BNAYAsbQZrp06dQ17733npqbZvQAjho1SslffEPAWOwA+cPQL+b0WU3onYT4Qbjq1asXtP4JEUAMAfu3+7nnnjMdAt6zZ4+a7+jLMlgbMbQOGYRgBxoCxjxBI+F69J5yCDgYWf6dBOwjQAG0jy1zJgESsJGArwCitw/z/Zo1a6bmpWHIE/PM0LtmCOCFCxfUIpDGjRurBQ0QFSwC2bdvn1cAIZKQHwgZJAUrdTGkjKFO/B7DvhhmnjVrlhrONRJ6xvATX0IvGRacYKEEhkSxMhYraSFNpUuXDlr/hAggehtbtmyp2o1eP8xFxM/YsWNVlf1XAXfp0kUtfkGvHlYPY0gdQ+dYYINhcvQwgnWJEiWUxGE4GCuBIbP+9UQsMKcQ8yWxAnvjxo1qiPr48eMUQBtfH8yaBIIRoAAGI8S/kwAJOJKA/xAwhmOxohaSBVnDKmGIjSGAaARkDj1+2AYGQ66QOQz7+p4EAiHDAgn0IGII1NgGBptNQ3LM9h2EdI4cOTJeTsgPAob8sRULpAjb0GC+HVKw+idEADEcXKFCBbUNDObydezYUW1dkyZNGlMBvHbtmurlxKbXWBmdI0cOta0OekghgRjqxUbc6FXE6l/MZ8T2NrjOrJ6QX8zBxLAxZBryiRXM7AF05EuLlUoiBCiASSTQbCYJkEDSJGDsA4iVuEwkQAIkYBCgAPJZIAESIAEXE6AAuji4bBoJJIAABTAB8HgrCZAACRgEsKkz5sUFSpiDmBiJApgY1FkmCTifAAXQ+TFiDUmABKKAwOXLl9V8uUCpWLFiUdAKVpEESCCpEKAAJpVIs50kQAIkQAIkQAIk8A8BCiAfBRIgARIgARIgARJIYgQogEks4GwuCZAACZAACZAACfw/WHPa8ALbb1MAAAAASUVORK5CYII=\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "bunch pattern sase3: 400 pulses, 96 samples between two pulses\n", "Auto-find peak params: 1820 pulses, 43 samples between two pulses\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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\" width=\"600\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'pulseStart': 0,\n", " 'pulseStop': 12,\n", " 'baseStart': 0,\n", " 'baseStop': 1,\n", " 'period': 43,\n", " 'npulses': 1820}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plt.figure()\n", "tb.get_dig_avg_trace(run_b, 'FastADC2_9raw').plot()\n", "\n", "bad_params = tb.check_peak_params(run_b, 'FastADC2_9raw')\n", "bad_params" ] }, { "cell_type": "markdown", "id": "9974f9b8", "metadata": {}, "source": [ "We see that the peaks are very weak and this lead to a bad assignment of the pulse parameters by the peak-finding algorithm. From here, we can redefine the integration parameters according to the position on the average trace. We also know that the integration parameters of the previously loaded run are good. We will now use these integration parameters to extract the data from run 14.\n", "\n", "We first load the fields, but specify to the `load` function that we want to keep the raw trace without performing peak integration (`extract_fadc2=False`)." ] }, { "cell_type": "code", "execution_count": 9, "id": "e97c52cd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", "<defs>\n", "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "</symbol>\n", "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "</symbol>\n", "</defs>\n", "</svg>\n", "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", " *\n", " */\n", "\n", ":root {\n", " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", " --xr-background-color: var(--jp-layout-color0, white);\n", " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", "}\n", "\n", "html[theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", " --xr-font-color3: rgba(255, 255, 255, 0.38);\n", " --xr-border-color: #1F1F1F;\n", " --xr-disabled-color: #515151;\n", " --xr-background-color: #111111;\n", " --xr-background-color-row-even: #111111;\n", " --xr-background-color-row-odd: #313131;\n", "}\n", "\n", ".xr-wrap {\n", " display: block;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", "\n", ".xr-text-repr-fallback {\n", " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", " display: none;\n", "}\n", "\n", ".xr-header {\n", " padding-top: 6px;\n", " padding-bottom: 6px;\n", " margin-bottom: 4px;\n", " border-bottom: solid 1px var(--xr-border-color);\n", "}\n", "\n", ".xr-header > div,\n", ".xr-header > ul {\n", " display: inline;\n", " margin-top: 0;\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-obj-type,\n", ".xr-array-name {\n", " margin-left: 2px;\n", " margin-right: 10px;\n", "}\n", "\n", ".xr-obj-type {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-sections {\n", " padding-left: 0 !important;\n", " display: grid;\n", " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", "}\n", "\n", ".xr-section-item {\n", " display: contents;\n", "}\n", "\n", ".xr-section-item input {\n", " display: none;\n", "}\n", "\n", ".xr-section-item input + label {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-item input:enabled + label {\n", " cursor: pointer;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-item input:enabled + label:hover {\n", " color: var(--xr-font-color0);\n", "}\n", "\n", ".xr-section-summary {\n", " grid-column: 1;\n", " color: var(--xr-font-color2);\n", " font-weight: 500;\n", "}\n", "\n", ".xr-section-summary > span {\n", " display: inline-block;\n", " padding-left: 0.5em;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-summary-in + label:before {\n", " display: inline-block;\n", " content: '►';\n", " font-size: 11px;\n", " width: 15px;\n", " text-align: center;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label:before {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-summary-in:checked + label:before {\n", " content: '▼';\n", "}\n", "\n", ".xr-section-summary-in:checked + label > span {\n", " display: none;\n", "}\n", "\n", ".xr-section-summary,\n", ".xr-section-inline-details {\n", " padding-top: 4px;\n", " padding-bottom: 4px;\n", "}\n", "\n", ".xr-section-inline-details {\n", " grid-column: 2 / -1;\n", "}\n", "\n", ".xr-section-details {\n", " display: none;\n", " grid-column: 1 / -1;\n", " margin-bottom: 5px;\n", "}\n", "\n", ".xr-section-summary-in:checked ~ .xr-section-details {\n", " display: contents;\n", "}\n", "\n", ".xr-array-wrap {\n", " grid-column: 1 / -1;\n", " display: grid;\n", " grid-template-columns: 20px auto;\n", "}\n", "\n", ".xr-array-wrap > label {\n", " grid-column: 1;\n", " vertical-align: top;\n", "}\n", "\n", ".xr-preview {\n", " color: var(--xr-font-color3);\n", "}\n", "\n", ".xr-array-preview,\n", ".xr-array-data {\n", " padding: 0 5px !important;\n", " grid-column: 2;\n", "}\n", "\n", ".xr-array-data,\n", ".xr-array-in:checked ~ .xr-array-preview {\n", " display: none;\n", "}\n", "\n", ".xr-array-in:checked ~ .xr-array-data,\n", ".xr-array-preview {\n", " display: inline-block;\n", "}\n", "\n", ".xr-dim-list {\n", " display: inline-block !important;\n", " list-style: none;\n", " padding: 0 !important;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list li {\n", " display: inline-block;\n", " padding: 0;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list:before {\n", " content: '(';\n", "}\n", "\n", ".xr-dim-list:after {\n", " content: ')';\n", "}\n", "\n", ".xr-dim-list li:not(:last-child):after {\n", " content: ',';\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-has-index {\n", " font-weight: bold;\n", "}\n", "\n", ".xr-var-list,\n", ".xr-var-item {\n", " display: contents;\n", "}\n", "\n", ".xr-var-item > div,\n", ".xr-var-item label,\n", ".xr-var-item > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-even);\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-var-item > .xr-var-name:hover span {\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-var-list > li:nth-child(odd) > div,\n", ".xr-var-list > li:nth-child(odd) > label,\n", ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-odd);\n", "}\n", "\n", ".xr-var-name {\n", " grid-column: 1;\n", "}\n", "\n", ".xr-var-dims {\n", " grid-column: 2;\n", "}\n", "\n", ".xr-var-dtype {\n", " grid-column: 3;\n", " text-align: right;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-var-preview {\n", " grid-column: 4;\n", "}\n", "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", ".xr-preview,\n", ".xr-attrs dt {\n", " white-space: nowrap;\n", " overflow: hidden;\n", " text-overflow: ellipsis;\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-var-name:hover,\n", ".xr-var-dims:hover,\n", ".xr-var-dtype:hover,\n", ".xr-attrs dt:hover {\n", " overflow: visible;\n", " width: auto;\n", " z-index: 1;\n", "}\n", "\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " display: none;\n", " background-color: var(--xr-background-color) !important;\n", " padding-bottom: 5px !important;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", ".xr-var-data-in:checked ~ .xr-var-data {\n", " display: block;\n", "}\n", "\n", ".xr-var-data > table {\n", " float: right;\n", "}\n", "\n", ".xr-var-name span,\n", ".xr-var-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", "dl.xr-attrs {\n", " padding: 0;\n", " margin: 0;\n", " display: grid;\n", " grid-template-columns: 125px auto;\n", "}\n", "\n", ".xr-attrs dt, dd {\n", " padding: 0;\n", " margin: 0;\n", " float: left;\n", " padding-right: 10px;\n", " width: auto;\n", "}\n", "\n", ".xr-attrs dt {\n", " font-weight: normal;\n", " grid-column: 1;\n", "}\n", "\n", ".xr-attrs dt:hover span {\n", " display: inline-block;\n", " background: var(--xr-background-color);\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-attrs dd {\n", " grid-column: 2;\n", " white-space: pre-wrap;\n", " word-break: break-all;\n", "}\n", "\n", ".xr-icon-database,\n", ".xr-icon-file-text2 {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", " height: 1.5em !important;\n", " stroke-width: 0;\n", " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", "</style><pre class='xr-text-repr-fallback'><xarray.Dataset>\n", "Dimensions: (fadc2_samplesId: 100000, pulse_slot: 2700, sa3_pId: 400, trainId: 7804)\n", "Coordinates:\n", " * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n", "Dimensions without coordinates: fadc2_samplesId, pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2211625 0 ... 16777216\n", " nrj (trainId) float64 931.6 931.6 931.5 ... 937.1 937.0 937.1\n", " FastADC2_9raw (trainId, fadc2_samplesId) int16 -458 -425 ... -463 -470\n", " SCS_SA3 (trainId, sa3_pId) float64 553.6 1.003e+03 ... 626.1\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0013</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-2fad4339-13b0-4e78-8733-1a2ed0072cb1' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-2fad4339-13b0-4e78-8733-1a2ed0072cb1' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>fadc2_samplesId</span>: 100000</li><li><span>pulse_slot</span>: 2700</li><li><span class='xr-has-index'>sa3_pId</span>: 400</li><li><span class='xr-has-index'>trainId</span>: 7804</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-b47191bd-36ce-4c6e-9eff-f668f29e2cc5' class='xr-section-summary-in' type='checkbox' checked><label for='section-b47191bd-36ce-4c6e-9eff-f668f29e2cc5' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>trainId</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>uint64</div><div class='xr-var-preview xr-preview'>1501374970 ... 1501382869</div><input id='attrs-147d54fb-631b-4498-83b6-647937ef0a5d' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-147d54fb-631b-4498-83b6-647937ef0a5d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-9af56f8c-a999-44ae-933a-bf1fdef4e37f' class='xr-var-data-in' type='checkbox'><label for='data-9af56f8c-a999-44ae-933a-bf1fdef4e37f' 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([1501374970, 1501374971, 1501374972, ..., 1501382867, 1501382868,\n", " 1501382869], dtype=uint64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>sa3_pId</span></div><div class='xr-var-dims'>(sa3_pId)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>772 776 780 784 ... 2360 2364 2368</div><input id='attrs-2e458acd-66f0-40ab-92d4-6b6a4bf7b7ca' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-2e458acd-66f0-40ab-92d4-6b6a4bf7b7ca' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-ac17c446-1dcd-4f52-9d29-9d207b28e873' class='xr-var-data-in' type='checkbox'><label for='data-ac17c446-1dcd-4f52-9d29-9d207b28e873' 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([ 772, 776, 780, ..., 2360, 2364, 2368])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-86f0ed7d-83cc-40c3-96fe-6a394f9e0f64' class='xr-section-summary-in' type='checkbox' checked><label for='section-86f0ed7d-83cc-40c3-96fe-6a394f9e0f64' class='xr-section-summary' >Data variables: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>bunchPatternTable</span></div><div class='xr-var-dims'>(trainId, pulse_slot)</div><div class='xr-var-dtype'>uint32</div><div class='xr-var-preview xr-preview'>2211625 0 ... 16777216 16777216</div><input id='attrs-ac04360b-8545-484e-adf8-c277b774ddb4' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-ac04360b-8545-484e-adf8-c277b774ddb4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a5df71a3-1a24-47cb-aa23-5527e52c8c7a' class='xr-var-data-in' type='checkbox'><label for='data-a5df71a3-1a24-47cb-aa23-5527e52c8c7a' 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([[ 2211625, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " ...,\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216]],\n", " dtype=uint32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>nrj</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>931.6 931.6 931.5 ... 937.0 937.1</div><input id='attrs-08807b62-67ec-4fc4-86eb-c2212cae249b' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-08807b62-67ec-4fc4-86eb-c2212cae249b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-6fbf4748-01c7-4bf2-b85d-b1859dee13be' class='xr-var-data-in' type='checkbox'><label for='data-6fbf4748-01c7-4bf2-b85d-b1859dee13be' 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([931.56104815, 931.58133731, 931.54481745, ..., 937.07140648,\n", " 937.04266612, 937.05908897])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>FastADC2_9raw</span></div><div class='xr-var-dims'>(trainId, fadc2_samplesId)</div><div class='xr-var-dtype'>int16</div><div class='xr-var-preview xr-preview'>-458 -425 -437 ... -491 -463 -470</div><input id='attrs-c7001c2e-ebe5-43f8-9ad7-948140bfbbc0' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c7001c2e-ebe5-43f8-9ad7-948140bfbbc0' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f6b485bc-bd9d-4eeb-aa23-821083ef452c' class='xr-var-data-in' type='checkbox'><label for='data-f6b485bc-bd9d-4eeb-aa23-821083ef452c' 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([[-458, -425, -437, ..., -355, -357, -363],\n", " [-400, -393, -382, ..., -410, -410, -423],\n", " [-448, -474, -453, ..., -337, -362, -363],\n", " ...,\n", " [-374, -384, -380, ..., -472, -475, -478],\n", " [-460, -452, -452, ..., -345, -348, -358],\n", " [-426, -439, -461, ..., -491, -463, -470]], dtype=int16)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>SCS_SA3</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>553.6 1.003e+03 ... 625.2 626.1</div><input id='attrs-cea2b99a-b38c-4de6-9dd0-44ba47530e9c' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-cea2b99a-b38c-4de6-9dd0-44ba47530e9c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8fcc6829-f175-4ff4-9331-c6cf62883e74' class='xr-var-data-in' type='checkbox'><label for='data-8fcc6829-f175-4ff4-9331-c6cf62883e74' 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([[ 553.58990479, 1002.7635498 , 588.21862793, ..., 159.72709656,\n", " 584.90869141, 469.00732422],\n", " [ 729.78295898, 197.31863403, 350.71511841, ..., 333.3782959 ,\n", " 239.52154541, 1348.59741211],\n", " [1012.35583496, 155.80020142, 1075.75500488, ..., 780.81335449,\n", " 518.77160645, 652.95458984],\n", " ...,\n", " [ 712.21923828, 687.50018311, 623.03265381, ..., 995.31140137,\n", " 853.53509521, 1076.88537598],\n", " [ 337.43884277, 476.76254272, 561.50762939, ..., 634.65576172,\n", " 1289.45837402, 382.07299805],\n", " [ 313.94122314, 462.3732605 , 684.91363525, ..., 132.80506897,\n", " 625.18811035, 626.13842773]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-fa21cc1f-a37b-4fc4-ad18-e69cf90d27dc' class='xr-section-summary-in' type='checkbox' checked><label for='section-fa21cc1f-a37b-4fc4-ad18-e69cf90d27dc' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>runFolder :</span></dt><dd>/gpfs/exfel/exp/SCS/202202/p002956/raw/r0013</dd></dl></div></li></ul></div></div>" ], "text/plain": [ "<xarray.Dataset>\n", "Dimensions: (fadc2_samplesId: 100000, pulse_slot: 2700, sa3_pId: 400, trainId: 7804)\n", "Coordinates:\n", " * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n", "Dimensions without coordinates: fadc2_samplesId, pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2211625 0 ... 16777216\n", " nrj (trainId) float64 931.6 931.6 931.5 ... 937.1 937.0 937.1\n", " FastADC2_9raw (trainId, fadc2_samplesId) int16 -458 -425 ... -463 -470\n", " SCS_SA3 (trainId, sa3_pId) float64 553.6 1.003e+03 ... 626.1\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0013" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "new_params = good_params\n", "\n", "# or we can define the new parameters manually:\n", "# new_params = {'pulseStart': 6759,\n", "# 'pulseStop': 6776,\n", "# 'baseStart': 6743,\n", "# 'baseStop': 6755,\n", "# 'period': 96,\n", "# 'npulses': 400}\n", "\n", "run_b, ds_b = tb.load(proposal, runNB, fields, extract_fadc2=False)\n", "ds_b" ] }, { "cell_type": "markdown", "id": "d4ac83a7", "metadata": {}, "source": [ "In `ds_b`, `FastADC2_9raw` is the raw trace with dimensions `['trainId, 'fadc2_samplesId']`. We can now call `get_digitizer_peaks()`: " ] }, { "cell_type": "code", "execution_count": 10, "id": "ab494efd", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", "<defs>\n", "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "</symbol>\n", "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "</symbol>\n", "</defs>\n", "</svg>\n", "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", " *\n", " */\n", "\n", ":root {\n", " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", " --xr-background-color: var(--jp-layout-color0, white);\n", " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", "}\n", "\n", "html[theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", " --xr-font-color3: rgba(255, 255, 255, 0.38);\n", " --xr-border-color: #1F1F1F;\n", " --xr-disabled-color: #515151;\n", " --xr-background-color: #111111;\n", " --xr-background-color-row-even: #111111;\n", " --xr-background-color-row-odd: #313131;\n", "}\n", "\n", ".xr-wrap {\n", " display: block;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", "\n", ".xr-text-repr-fallback {\n", " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", " display: none;\n", "}\n", "\n", ".xr-header {\n", " padding-top: 6px;\n", " padding-bottom: 6px;\n", " margin-bottom: 4px;\n", " border-bottom: solid 1px var(--xr-border-color);\n", "}\n", "\n", ".xr-header > div,\n", ".xr-header > ul {\n", " display: inline;\n", " margin-top: 0;\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-obj-type,\n", ".xr-array-name {\n", " margin-left: 2px;\n", " margin-right: 10px;\n", "}\n", "\n", ".xr-obj-type {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-sections {\n", " padding-left: 0 !important;\n", " display: grid;\n", " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", "}\n", "\n", ".xr-section-item {\n", " display: contents;\n", "}\n", "\n", ".xr-section-item input {\n", " display: none;\n", "}\n", "\n", ".xr-section-item input + label {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-item input:enabled + label {\n", " cursor: pointer;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-item input:enabled + label:hover {\n", " color: var(--xr-font-color0);\n", "}\n", "\n", ".xr-section-summary {\n", " grid-column: 1;\n", " color: var(--xr-font-color2);\n", " font-weight: 500;\n", "}\n", "\n", ".xr-section-summary > span {\n", " display: inline-block;\n", " padding-left: 0.5em;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-summary-in + label:before {\n", " display: inline-block;\n", " content: '►';\n", " font-size: 11px;\n", " width: 15px;\n", " text-align: center;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label:before {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-summary-in:checked + label:before {\n", " content: '▼';\n", "}\n", "\n", ".xr-section-summary-in:checked + label > span {\n", " display: none;\n", "}\n", "\n", ".xr-section-summary,\n", ".xr-section-inline-details {\n", " padding-top: 4px;\n", " padding-bottom: 4px;\n", "}\n", "\n", ".xr-section-inline-details {\n", " grid-column: 2 / -1;\n", "}\n", "\n", ".xr-section-details {\n", " display: none;\n", " grid-column: 1 / -1;\n", " margin-bottom: 5px;\n", "}\n", "\n", ".xr-section-summary-in:checked ~ .xr-section-details {\n", " display: contents;\n", "}\n", "\n", ".xr-array-wrap {\n", " grid-column: 1 / -1;\n", " display: grid;\n", " grid-template-columns: 20px auto;\n", "}\n", "\n", ".xr-array-wrap > label {\n", " grid-column: 1;\n", " vertical-align: top;\n", "}\n", "\n", ".xr-preview {\n", " color: var(--xr-font-color3);\n", "}\n", "\n", ".xr-array-preview,\n", ".xr-array-data {\n", " padding: 0 5px !important;\n", " grid-column: 2;\n", "}\n", "\n", ".xr-array-data,\n", ".xr-array-in:checked ~ .xr-array-preview {\n", " display: none;\n", "}\n", "\n", ".xr-array-in:checked ~ .xr-array-data,\n", ".xr-array-preview {\n", " display: inline-block;\n", "}\n", "\n", ".xr-dim-list {\n", " display: inline-block !important;\n", " list-style: none;\n", " padding: 0 !important;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list li {\n", " display: inline-block;\n", " padding: 0;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list:before {\n", " content: '(';\n", "}\n", "\n", ".xr-dim-list:after {\n", " content: ')';\n", "}\n", "\n", ".xr-dim-list li:not(:last-child):after {\n", " content: ',';\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-has-index {\n", " font-weight: bold;\n", "}\n", "\n", ".xr-var-list,\n", ".xr-var-item {\n", " display: contents;\n", "}\n", "\n", ".xr-var-item > div,\n", ".xr-var-item label,\n", ".xr-var-item > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-even);\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-var-item > .xr-var-name:hover span {\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-var-list > li:nth-child(odd) > div,\n", ".xr-var-list > li:nth-child(odd) > label,\n", ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-odd);\n", "}\n", "\n", ".xr-var-name {\n", " grid-column: 1;\n", "}\n", "\n", ".xr-var-dims {\n", " grid-column: 2;\n", "}\n", "\n", ".xr-var-dtype {\n", " grid-column: 3;\n", " text-align: right;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-var-preview {\n", " grid-column: 4;\n", "}\n", "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", ".xr-preview,\n", ".xr-attrs dt {\n", " white-space: nowrap;\n", " overflow: hidden;\n", " text-overflow: ellipsis;\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-var-name:hover,\n", ".xr-var-dims:hover,\n", ".xr-var-dtype:hover,\n", ".xr-attrs dt:hover {\n", " overflow: visible;\n", " width: auto;\n", " z-index: 1;\n", "}\n", "\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " display: none;\n", " background-color: var(--xr-background-color) !important;\n", " padding-bottom: 5px !important;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", ".xr-var-data-in:checked ~ .xr-var-data {\n", " display: block;\n", "}\n", "\n", ".xr-var-data > table {\n", " float: right;\n", "}\n", "\n", ".xr-var-name span,\n", ".xr-var-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", "dl.xr-attrs {\n", " padding: 0;\n", " margin: 0;\n", " display: grid;\n", " grid-template-columns: 125px auto;\n", "}\n", "\n", ".xr-attrs dt, dd {\n", " padding: 0;\n", " margin: 0;\n", " float: left;\n", " padding-right: 10px;\n", " width: auto;\n", "}\n", "\n", ".xr-attrs dt {\n", " font-weight: normal;\n", " grid-column: 1;\n", "}\n", "\n", ".xr-attrs dt:hover span {\n", " display: inline-block;\n", " background: var(--xr-background-color);\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-attrs dd {\n", " grid-column: 2;\n", " white-space: pre-wrap;\n", " word-break: break-all;\n", "}\n", "\n", ".xr-icon-database,\n", ".xr-icon-file-text2 {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", " height: 1.5em !important;\n", " stroke-width: 0;\n", " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", "</style><pre class='xr-text-repr-fallback'><xarray.Dataset>\n", "Dimensions: (sa3_pId: 400, trainId: 7898)\n", "Coordinates:\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 788 ... 2356 2360 2364 2368\n", " * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n", "Data variables:\n", " FastADC2_9peaks (trainId, sa3_pId) float64 -1.565e+04 ... -2.689e+03</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-1a580b1b-8420-4bd0-9924-a83b078504d3' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-1a580b1b-8420-4bd0-9924-a83b078504d3' 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'>sa3_pId</span>: 400</li><li><span class='xr-has-index'>trainId</span>: 7898</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-961b0992-4e33-4603-b0f1-0af25155c443' class='xr-section-summary-in' type='checkbox' checked><label for='section-961b0992-4e33-4603-b0f1-0af25155c443' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>sa3_pId</span></div><div class='xr-var-dims'>(sa3_pId)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>772 776 780 784 ... 2360 2364 2368</div><input id='attrs-d5199f6a-e89d-4483-81fb-17f91f53eedc' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d5199f6a-e89d-4483-81fb-17f91f53eedc' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c4965141-5905-4d4f-a588-d9e69daab4c8' class='xr-var-data-in' type='checkbox'><label for='data-c4965141-5905-4d4f-a588-d9e69daab4c8' 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([ 772, 776, 780, ..., 2360, 2364, 2368])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>trainId</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>uint64</div><div class='xr-var-preview xr-preview'>1501374970 ... 1501382869</div><input id='attrs-46a1d522-342f-4f73-a874-ed1298fdda5a' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-46a1d522-342f-4f73-a874-ed1298fdda5a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-7faed2b3-e7d3-4e2a-9b97-73f6e7ab8686' class='xr-var-data-in' type='checkbox'><label for='data-7faed2b3-e7d3-4e2a-9b97-73f6e7ab8686' 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([1501374970, 1501374971, 1501374972, ..., 1501382867, 1501382868,\n", " 1501382869], dtype=uint64)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-0d0ac157-3802-4886-904c-6d9577da8e21' class='xr-section-summary-in' type='checkbox' checked><label for='section-0d0ac157-3802-4886-904c-6d9577da8e21' 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>FastADC2_9peaks</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-1.565e+04 ... -2.689e+03</div><input id='attrs-9f0959a7-5022-4d7d-9b6a-b7270d04c702' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-9f0959a7-5022-4d7d-9b6a-b7270d04c702' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-50862483-4c69-4615-883c-d67e8d04aac5' class='xr-var-data-in' type='checkbox'><label for='data-50862483-4c69-4615-883c-d67e8d04aac5' 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([[-15648.5, -29868.5, -16662.5, ..., -3587.5, -21078.5, -13057.5],\n", " [-20308.5, -6250.5, -12165. , ..., -9081.5, -8160.5, -37829. ],\n", " [-31327.5, -1469.5, -32350. , ..., -20526.5, -11936.5, -18997.5],\n", " ...,\n", " [ -1415.5, 451.5, 250. , ..., -2123.5, -1804.5, -835. ],\n", " [ -1453.5, -2112. , 1057. , ..., -2213.5, -3012.5, -583.5],\n", " [ -2324. , -2395.5, -2104.5, ..., -542.5, -850.5, -2689. ]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-021ce0e9-d80c-4624-937c-269deb846ac2' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-021ce0e9-d80c-4624-937c-269deb846ac2' 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: (sa3_pId: 400, trainId: 7898)\n", "Coordinates:\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 788 ... 2356 2360 2364 2368\n", " * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n", "Data variables:\n", " FastADC2_9peaks (trainId, sa3_pId) float64 -1.565e+04 ... -2.689e+03" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "peaks = tb.get_digitizer_peaks(run_b, 'FastADC2_9raw', \n", " integParams=good_params, bunchPattern='sase3')\n", "peaks" ] }, { "cell_type": "markdown", "id": "1fa35662", "metadata": {}, "source": [ "`peaks` is an xarray Dataset that contains the extracted peaks from the variables contained in `mnemonics` argument (here `mnemonics='FastADC2_9raw'`).\n", "\n", "`get_digitizer_peaks()` gives the option to merge the resulting data into an existing dataset (`merge_with`). This can be conveniently used to create the final dataset with extracted peaks:" ] }, { "cell_type": "code", "execution_count": 11, "id": "1e1c6b19", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", "<defs>\n", "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "</symbol>\n", "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "</symbol>\n", "</defs>\n", "</svg>\n", "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", " *\n", " */\n", "\n", ":root {\n", " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", " --xr-background-color: var(--jp-layout-color0, white);\n", " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", "}\n", "\n", "html[theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", " --xr-font-color3: rgba(255, 255, 255, 0.38);\n", " --xr-border-color: #1F1F1F;\n", " --xr-disabled-color: #515151;\n", " --xr-background-color: #111111;\n", " --xr-background-color-row-even: #111111;\n", " --xr-background-color-row-odd: #313131;\n", "}\n", "\n", ".xr-wrap {\n", " display: block;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", "\n", ".xr-text-repr-fallback {\n", " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", " display: none;\n", "}\n", "\n", ".xr-header {\n", " padding-top: 6px;\n", " padding-bottom: 6px;\n", " margin-bottom: 4px;\n", " border-bottom: solid 1px var(--xr-border-color);\n", "}\n", "\n", ".xr-header > div,\n", ".xr-header > ul {\n", " display: inline;\n", " margin-top: 0;\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-obj-type,\n", ".xr-array-name {\n", " margin-left: 2px;\n", " margin-right: 10px;\n", "}\n", "\n", ".xr-obj-type {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-sections {\n", " padding-left: 0 !important;\n", " display: grid;\n", " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", "}\n", "\n", ".xr-section-item {\n", " display: contents;\n", "}\n", "\n", ".xr-section-item input {\n", " display: none;\n", "}\n", "\n", ".xr-section-item input + label {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-item input:enabled + label {\n", " cursor: pointer;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-item input:enabled + label:hover {\n", " color: var(--xr-font-color0);\n", "}\n", "\n", ".xr-section-summary {\n", " grid-column: 1;\n", " color: var(--xr-font-color2);\n", " font-weight: 500;\n", "}\n", "\n", ".xr-section-summary > span {\n", " display: inline-block;\n", " padding-left: 0.5em;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-summary-in + label:before {\n", " display: inline-block;\n", " content: '►';\n", " font-size: 11px;\n", " width: 15px;\n", " text-align: center;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label:before {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-summary-in:checked + label:before {\n", " content: '▼';\n", "}\n", "\n", ".xr-section-summary-in:checked + label > span {\n", " display: none;\n", "}\n", "\n", ".xr-section-summary,\n", ".xr-section-inline-details {\n", " padding-top: 4px;\n", " padding-bottom: 4px;\n", "}\n", "\n", ".xr-section-inline-details {\n", " grid-column: 2 / -1;\n", "}\n", "\n", ".xr-section-details {\n", " display: none;\n", " grid-column: 1 / -1;\n", " margin-bottom: 5px;\n", "}\n", "\n", ".xr-section-summary-in:checked ~ .xr-section-details {\n", " display: contents;\n", "}\n", "\n", ".xr-array-wrap {\n", " grid-column: 1 / -1;\n", " display: grid;\n", " grid-template-columns: 20px auto;\n", "}\n", "\n", ".xr-array-wrap > label {\n", " grid-column: 1;\n", " vertical-align: top;\n", "}\n", "\n", ".xr-preview {\n", " color: var(--xr-font-color3);\n", "}\n", "\n", ".xr-array-preview,\n", ".xr-array-data {\n", " padding: 0 5px !important;\n", " grid-column: 2;\n", "}\n", "\n", ".xr-array-data,\n", ".xr-array-in:checked ~ .xr-array-preview {\n", " display: none;\n", "}\n", "\n", ".xr-array-in:checked ~ .xr-array-data,\n", ".xr-array-preview {\n", " display: inline-block;\n", "}\n", "\n", ".xr-dim-list {\n", " display: inline-block !important;\n", " list-style: none;\n", " padding: 0 !important;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list li {\n", " display: inline-block;\n", " padding: 0;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list:before {\n", " content: '(';\n", "}\n", "\n", ".xr-dim-list:after {\n", " content: ')';\n", "}\n", "\n", ".xr-dim-list li:not(:last-child):after {\n", " content: ',';\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-has-index {\n", " font-weight: bold;\n", "}\n", "\n", ".xr-var-list,\n", ".xr-var-item {\n", " display: contents;\n", "}\n", "\n", ".xr-var-item > div,\n", ".xr-var-item label,\n", ".xr-var-item > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-even);\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-var-item > .xr-var-name:hover span {\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-var-list > li:nth-child(odd) > div,\n", ".xr-var-list > li:nth-child(odd) > label,\n", ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-odd);\n", "}\n", "\n", ".xr-var-name {\n", " grid-column: 1;\n", "}\n", "\n", ".xr-var-dims {\n", " grid-column: 2;\n", "}\n", "\n", ".xr-var-dtype {\n", " grid-column: 3;\n", " text-align: right;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-var-preview {\n", " grid-column: 4;\n", "}\n", "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", ".xr-preview,\n", ".xr-attrs dt {\n", " white-space: nowrap;\n", " overflow: hidden;\n", " text-overflow: ellipsis;\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-var-name:hover,\n", ".xr-var-dims:hover,\n", ".xr-var-dtype:hover,\n", ".xr-attrs dt:hover {\n", " overflow: visible;\n", " width: auto;\n", " z-index: 1;\n", "}\n", "\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " display: none;\n", " background-color: var(--xr-background-color) !important;\n", " padding-bottom: 5px !important;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", ".xr-var-data-in:checked ~ .xr-var-data {\n", " display: block;\n", "}\n", "\n", ".xr-var-data > table {\n", " float: right;\n", "}\n", "\n", ".xr-var-name span,\n", ".xr-var-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", "dl.xr-attrs {\n", " padding: 0;\n", " margin: 0;\n", " display: grid;\n", " grid-template-columns: 125px auto;\n", "}\n", "\n", ".xr-attrs dt, dd {\n", " padding: 0;\n", " margin: 0;\n", " float: left;\n", " padding-right: 10px;\n", " width: auto;\n", "}\n", "\n", ".xr-attrs dt {\n", " font-weight: normal;\n", " grid-column: 1;\n", "}\n", "\n", ".xr-attrs dt:hover span {\n", " display: inline-block;\n", " background: var(--xr-background-color);\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-attrs dd {\n", " grid-column: 2;\n", " white-space: pre-wrap;\n", " word-break: break-all;\n", "}\n", "\n", ".xr-icon-database,\n", ".xr-icon-file-text2 {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", " height: 1.5em !important;\n", " stroke-width: 0;\n", " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", "</style><pre class='xr-text-repr-fallback'><xarray.Dataset>\n", "Dimensions: (pulse_slot: 2700, sa3_pId: 400, trainId: 7804)\n", "Coordinates:\n", " * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n", "Dimensions without coordinates: pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2211625 0 ... 16777216\n", " nrj (trainId) float64 931.6 931.6 931.5 ... 937.1 937.0 937.1\n", " SCS_SA3 (trainId, sa3_pId) float64 553.6 1.003e+03 ... 626.1\n", " FastADC2_9peaks (trainId, sa3_pId) float64 -1.565e+04 ... -2.689e+03\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0013</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-19337e33-b6b2-436f-a2d4-49e80c3ed7f7' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-19337e33-b6b2-436f-a2d4-49e80c3ed7f7' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>pulse_slot</span>: 2700</li><li><span class='xr-has-index'>sa3_pId</span>: 400</li><li><span class='xr-has-index'>trainId</span>: 7804</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-469ebbbc-6056-4539-92d9-4efc1a3f99f0' class='xr-section-summary-in' type='checkbox' checked><label for='section-469ebbbc-6056-4539-92d9-4efc1a3f99f0' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>trainId</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>uint64</div><div class='xr-var-preview xr-preview'>1501374970 ... 1501382869</div><input id='attrs-a8bc57cc-7476-4231-80d5-a05cb0f78cd2' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-a8bc57cc-7476-4231-80d5-a05cb0f78cd2' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-766d0c6b-7b10-4e22-bbe5-432cef9c8783' class='xr-var-data-in' type='checkbox'><label for='data-766d0c6b-7b10-4e22-bbe5-432cef9c8783' 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([1501374970, 1501374971, 1501374972, ..., 1501382867, 1501382868,\n", " 1501382869], dtype=uint64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>sa3_pId</span></div><div class='xr-var-dims'>(sa3_pId)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>772 776 780 784 ... 2360 2364 2368</div><input id='attrs-75cd7ad6-1be4-4998-a137-82789fefccca' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-75cd7ad6-1be4-4998-a137-82789fefccca' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1b308b6d-5eb4-4ece-bcd4-39f151b4eec2' class='xr-var-data-in' type='checkbox'><label for='data-1b308b6d-5eb4-4ece-bcd4-39f151b4eec2' 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([ 772, 776, 780, ..., 2360, 2364, 2368])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-33893be8-6696-496a-bebc-8e64c804fc5e' class='xr-section-summary-in' type='checkbox' checked><label for='section-33893be8-6696-496a-bebc-8e64c804fc5e' class='xr-section-summary' >Data variables: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>bunchPatternTable</span></div><div class='xr-var-dims'>(trainId, pulse_slot)</div><div class='xr-var-dtype'>uint32</div><div class='xr-var-preview xr-preview'>2211625 0 ... 16777216 16777216</div><input id='attrs-f76b34a4-25a4-4fbf-89a2-7c959bac2e30' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-f76b34a4-25a4-4fbf-89a2-7c959bac2e30' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-ad14389d-080f-4ed2-be79-99f2a20a3604' class='xr-var-data-in' type='checkbox'><label for='data-ad14389d-080f-4ed2-be79-99f2a20a3604' 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([[ 2211625, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " ...,\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216]],\n", " dtype=uint32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>nrj</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>931.6 931.6 931.5 ... 937.0 937.1</div><input id='attrs-662af322-123f-4139-aee1-113ecf70c923' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-662af322-123f-4139-aee1-113ecf70c923' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-5a9e44a6-25e8-4265-a02b-29a4d5829302' class='xr-var-data-in' type='checkbox'><label for='data-5a9e44a6-25e8-4265-a02b-29a4d5829302' 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([931.56104815, 931.58133731, 931.54481745, ..., 937.07140648,\n", " 937.04266612, 937.05908897])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>SCS_SA3</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>553.6 1.003e+03 ... 625.2 626.1</div><input id='attrs-206b90ee-d45c-44ff-aeca-5f5036ba2f77' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-206b90ee-d45c-44ff-aeca-5f5036ba2f77' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b4c06095-66bc-4fae-a5d9-86e9f32306fa' class='xr-var-data-in' type='checkbox'><label for='data-b4c06095-66bc-4fae-a5d9-86e9f32306fa' 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([[ 553.58990479, 1002.7635498 , 588.21862793, ..., 159.72709656,\n", " 584.90869141, 469.00732422],\n", " [ 729.78295898, 197.31863403, 350.71511841, ..., 333.3782959 ,\n", " 239.52154541, 1348.59741211],\n", " [1012.35583496, 155.80020142, 1075.75500488, ..., 780.81335449,\n", " 518.77160645, 652.95458984],\n", " ...,\n", " [ 712.21923828, 687.50018311, 623.03265381, ..., 995.31140137,\n", " 853.53509521, 1076.88537598],\n", " [ 337.43884277, 476.76254272, 561.50762939, ..., 634.65576172,\n", " 1289.45837402, 382.07299805],\n", " [ 313.94122314, 462.3732605 , 684.91363525, ..., 132.80506897,\n", " 625.18811035, 626.13842773]])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>FastADC2_9peaks</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>-1.565e+04 ... -2.689e+03</div><input id='attrs-deea3c25-4479-4637-94ed-2b1aca0bd0b1' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-deea3c25-4479-4637-94ed-2b1aca0bd0b1' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e73f0537-a69d-40b5-be74-a5699c06a8ff' class='xr-var-data-in' type='checkbox'><label for='data-e73f0537-a69d-40b5-be74-a5699c06a8ff' 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([[-15648.5, -29868.5, -16662.5, ..., -3587.5, -21078.5, -13057.5],\n", " [-20308.5, -6250.5, -12165. , ..., -9081.5, -8160.5, -37829. ],\n", " [-31327.5, -1469.5, -32350. , ..., -20526.5, -11936.5, -18997.5],\n", " ...,\n", " [ -1415.5, 451.5, 250. , ..., -2123.5, -1804.5, -835. ],\n", " [ -1453.5, -2112. , 1057. , ..., -2213.5, -3012.5, -583.5],\n", " [ -2324. , -2395.5, -2104.5, ..., -542.5, -850.5, -2689. ]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-e76c6655-9452-4887-83e0-62bb59fae273' class='xr-section-summary-in' type='checkbox' checked><label for='section-e76c6655-9452-4887-83e0-62bb59fae273' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>runFolder :</span></dt><dd>/gpfs/exfel/exp/SCS/202202/p002956/raw/r0013</dd></dl></div></li></ul></div></div>" ], "text/plain": [ "<xarray.Dataset>\n", "Dimensions: (pulse_slot: 2700, sa3_pId: 400, trainId: 7804)\n", "Coordinates:\n", " * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n", " * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n", "Dimensions without coordinates: pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2211625 0 ... 16777216\n", " nrj (trainId) float64 931.6 931.6 931.5 ... 937.1 937.0 937.1\n", " SCS_SA3 (trainId, sa3_pId) float64 553.6 1.003e+03 ... 626.1\n", " FastADC2_9peaks (trainId, sa3_pId) float64 -1.565e+04 ... -2.689e+03\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0013" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds_c = tb.get_digitizer_peaks(run_b, 'FastADC2_9raw', merge_with=ds_b,\n", " integParams=good_params, bunchPattern='sase3')\n", "ds_c" ] }, { "cell_type": "markdown", "id": "b12ce20d", "metadata": {}, "source": [ "## Summary with another example" ] }, { "cell_type": "markdown", "id": "9323274f", "metadata": {}, "source": [ "### Check digitizer signal descriptions and load data" ] }, { "cell_type": "code", "execution_count": 12, "id": "7bae6ce6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'FastADC_Ch0': 'CHEM DIAG X-ray PD', 'FastADC_Ch1': 'PPL I0 at in-coupling window', 'FastADC_Ch2': 'CHEM APD', 'FastADC_Ch3': 'PPL Reflectometer PD', 'FastADC_Ch4': '', 'FastADC_Ch5': 'PPL 800 nm I0 ILH PD', 'FastADC_Ch6': '', 'FastADC_Ch7': 'No Description', 'FastADC_Ch8': 'No Description', 'FastADC_Ch9': 'CHEM DIAG Laser PD'}\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "The period from the bunch pattern is different than that found by the peak-finding algorithm. Either the algorithm failed or the bunch pattern source (sase3) is not correct.\n" ] } ], "source": [ "proposal, runNB = 2953, 1\n", "print(tb.digitizer_signal_description(tb.open_run(proposal, runNB)))\n", "\n", "fields = ['FastADC0raw', 'chem_Y']\n", "run, ds = tb.load(proposal, runNB, fields, fadc_bp='sase3')" ] }, { "cell_type": "markdown", "id": "ea3ceae2", "metadata": {}, "source": [ "### Check integration parameters" ] }, { "cell_type": "code", "execution_count": 13, "id": "228e2851", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bunch pattern sase3: 400 pulses, 96 samples between two pulses\n", "Auto-find peak params: 521 pulses, 93 samples between two pulses\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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\" width=\"600\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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5cqVSzGu//3vf/TNN9/Qzp071QbQCQtvKG1KkQA1JRfE6S0BCKC3fNG6WQQggGb1F6I1n4DEV1wFcMWKFfT000+rUb6kp4EcP36cOnbsSO+8845oM+d3332XXnjhBbr33nvpv//9L91///3EK4H5WDheAPLKK68YQ1oC1JhkEKinBCCAnuJF44YRgAAa1mEI13gCEl9xFcC7776bKlWqRC+++KIrBJa2DRs2qK1cghU+VWTAgAHUuXNnypEjB/Em0qVLl6b+/fur0cP33nsvWBPqc95L8M033ySW03379qkj5FhEA4U3mh49enSiturWrUuLFy+O/xrvbchi++WXX9KZM2eoefPm9J///IeKFi0qikECVNQQKllPAAJofRcjQQ0CEEANWKgKAhEgIPEVVwEsU6aMEqzkjmv79ddf1SKQrVu3Bg0za9asShZ5U2leMMKri3kjaH6X8IYbbiCeRpaUKVOm0MKFC6lmzZp02223uQrggQMHaNSoUfHNZcyYUW05Eyg9evSgiRMn0qeffkp58+alp556SkkoSyWvVg5WJECDtYHPY4MABDA2+hlZyghAAGWcUAsEIkVA4iuuAsjbvLC0lSpVyjWWbdu2UeXKldUoWrDCo338DiCLW+3atemhhx6iRx55hKZNm0Z33XWXEjDdkiZNGlcB5FNHfvjhB9fmeOo6f/78NGbMGOLzibns3buXihUrRj/++CO1bt06aBgSoEEbQYWYIAABjIluRpJCAhBAIShUA4EIEZD4iqsAshTx+3pt2rRxDYVH47p37067du0KGioLH7fH08Affvgh9e7dm2688UZavnw5derUiT7++OOgbSStkJwAsvzxqF+uXLmocePG6v3CwDY1s2bNUlO+LJy5c+eOb5JHI3kqedCgQUHjkAAN2ggqxAQBCGBMdDOSFBKAAApBoRoIRIiAxFdcBZAXamzZsoXmz59/VSi8LyCf4lG2bNlE063JxczHvfGv9OnTqyq8GnjBggXq+n/+859K2HSLmwB+/fXXlD17djXVzCOU/P7ixYsX1fRupkyZaOzYsWoBCr8HmLDwxtY80jlixIirwuC6CeszUJZZHk1MujhGNwfUt5sABNDu/kV2egQggHq8UBsEwiUQsgDyKt3rr7+eKlSooN6T499ZunhaeOjQocRnBfMIHktcSoUFjEfhHnjgASVOkSpu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\" width=\"640\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "[<matplotlib.lines.Line2D at 0x2b57b8d0d588>]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params = tb.check_peak_params(run, 'FastADC0raw', bunchPattern='sase3')\n", "plt.figure()\n", "tb.get_dig_avg_trace(run, 'FastADC0raw').plot()" ] }, { "cell_type": "markdown", "id": "5c732409", "metadata": {}, "source": [ "### Define and check new integration parameters" ] }, { "cell_type": "code", "execution_count": 14, "id": "ccbfd22e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "bunch pattern sase3: 400 pulses, 96 samples between two pulses\n", "Auto-find peak params: 400 pulses, 96 samples between two pulses\n" ] }, { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('<div/>');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " if (mpl.ratio != 1) {\n", " fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n", " }\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " fig.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n", " 'ui-helper-clearfix\"/>');\n", " var titletext = $(\n", " '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n", " 'text-align: center; padding: 3px;\"/>');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('<div/>');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('<canvas/>');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var backingStore = this.context.backingStorePixelRatio ||\n", "\tthis.context.webkitBackingStorePixelRatio ||\n", "\tthis.context.mozBackingStorePixelRatio ||\n", "\tthis.context.msBackingStorePixelRatio ||\n", "\tthis.context.oBackingStorePixelRatio ||\n", "\tthis.context.backingStorePixelRatio || 1;\n", "\n", " mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n", "\n", " var rubberband = $('<canvas/>');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width * mpl.ratio);\n", " canvas.attr('height', height * mpl.ratio);\n", " canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('<button/>');\n", " button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n", " 'ui-button-icon-only');\n", " button.attr('role', 'button');\n", " button.attr('aria-disabled', 'false');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", "\n", " var icon_img = $('<span/>');\n", " icon_img.addClass('ui-button-icon-primary ui-icon');\n", " icon_img.addClass(image);\n", " icon_img.addClass('ui-corner-all');\n", "\n", " var tooltip_span = $('<span/>');\n", " tooltip_span.addClass('ui-button-text');\n", " tooltip_span.html(tooltip);\n", "\n", " button.append(icon_img);\n", " button.append(tooltip_span);\n", "\n", " nav_element.append(button);\n", " }\n", "\n", " var fmt_picker_span = $('<span/>');\n", "\n", " var fmt_picker = $('<select/>');\n", " fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n", " fmt_picker_span.append(fmt_picker);\n", " nav_element.append(fmt_picker_span);\n", " this.format_dropdown = fmt_picker[0];\n", "\n", " for (var ind in mpl.extensions) {\n", " var fmt = mpl.extensions[ind];\n", " var option = $(\n", " '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n", " fmt_picker.append(option)\n", " }\n", "\n", " // Add hover states to the ui-buttons\n", " $( \".ui-button\" ).hover(\n", " function() { $(this).addClass(\"ui-state-hover\");},\n", " function() { $(this).removeClass(\"ui-state-hover\");}\n", " );\n", "\n", " var status_bar = $('<span class=\"mpl-message\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "}\n", "\n", "mpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n", " // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n", " // which will in turn request a refresh of the image.\n", " this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n", "}\n", "\n", "mpl.figure.prototype.send_message = function(type, properties) {\n", " properties['type'] = type;\n", " properties['figure_id'] = this.id;\n", " this.ws.send(JSON.stringify(properties));\n", "}\n", "\n", "mpl.figure.prototype.send_draw_message = function() {\n", " if (!this.waiting) {\n", " this.waiting = true;\n", " this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n", " }\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " var format_dropdown = fig.format_dropdown;\n", " var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n", " fig.ondownload(fig, format);\n", "}\n", "\n", "\n", "mpl.figure.prototype.handle_resize = function(fig, msg) {\n", " var size = msg['size'];\n", " if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n", " fig._resize_canvas(size[0], size[1]);\n", " fig.send_message(\"refresh\", {});\n", " };\n", "}\n", "\n", "mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n", " var x0 = msg['x0'] / mpl.ratio;\n", " var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n", " var x1 = msg['x1'] / mpl.ratio;\n", " var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n", " x0 = Math.floor(x0) + 0.5;\n", " y0 = Math.floor(y0) + 0.5;\n", " x1 = Math.floor(x1) + 0.5;\n", " y1 = Math.floor(y1) + 0.5;\n", " var min_x = Math.min(x0, x1);\n", " var min_y = Math.min(y0, y1);\n", " var width = Math.abs(x1 - x0);\n", " var height = Math.abs(y1 - y0);\n", "\n", " fig.rubberband_context.clearRect(\n", " 0, 0, fig.canvas.width, fig.canvas.height);\n", "\n", " fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n", "}\n", "\n", "mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n", " // Updates the figure title.\n", " fig.header.textContent = msg['label'];\n", "}\n", "\n", "mpl.figure.prototype.handle_cursor = function(fig, msg) {\n", " var cursor = msg['cursor'];\n", " switch(cursor)\n", " {\n", " case 0:\n", " cursor = 'pointer';\n", " break;\n", " case 1:\n", " cursor = 'default';\n", " break;\n", " case 2:\n", " cursor = 'crosshair';\n", " break;\n", " case 3:\n", " cursor = 'move';\n", " break;\n", " }\n", " fig.rubberband_canvas.style.cursor = cursor;\n", "}\n", "\n", "mpl.figure.prototype.handle_message = function(fig, msg) {\n", " fig.message.textContent = msg['message'];\n", "}\n", "\n", "mpl.figure.prototype.handle_draw = function(fig, msg) {\n", " // Request the server to send over a new figure.\n", " fig.send_draw_message();\n", "}\n", "\n", "mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n", " fig.image_mode = msg['mode'];\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Called whenever the canvas gets updated.\n", " this.send_message(\"ack\", {});\n", "}\n", "\n", "// A function to construct a web socket function for onmessage handling.\n", "// Called in the figure constructor.\n", "mpl.figure.prototype._make_on_message_function = function(fig) {\n", " return function socket_on_message(evt) {\n", " if (evt.data instanceof Blob) {\n", " /* FIXME: We get \"Resource interpreted as Image but\n", " * transferred with MIME type text/plain:\" errors on\n", " * Chrome. But how to set the MIME type? It doesn't seem\n", " * to be part of the websocket stream */\n", " evt.data.type = \"image/png\";\n", "\n", " /* Free the memory for the previous frames */\n", " if (fig.imageObj.src) {\n", " (window.URL || window.webkitURL).revokeObjectURL(\n", " fig.imageObj.src);\n", " }\n", "\n", " fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n", " evt.data);\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", " else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n", " fig.imageObj.src = evt.data;\n", " fig.updated_canvas_event();\n", " fig.waiting = false;\n", " return;\n", " }\n", "\n", " var msg = JSON.parse(evt.data);\n", " var msg_type = msg['type'];\n", "\n", " // Call the \"handle_{type}\" callback, which takes\n", " // the figure and JSON message as its only arguments.\n", " try {\n", " var callback = fig[\"handle_\" + msg_type];\n", " } catch (e) {\n", " console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n", " return;\n", " }\n", "\n", " if (callback) {\n", " try {\n", " // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n", " callback(fig, msg);\n", " } catch (e) {\n", " console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n", " }\n", " }\n", " };\n", "}\n", "\n", "// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n", "mpl.findpos = function(e) {\n", " //this section is from http://www.quirksmode.org/js/events_properties.html\n", " var targ;\n", " if (!e)\n", " e = window.event;\n", " if (e.target)\n", " targ = e.target;\n", " else if (e.srcElement)\n", " targ = e.srcElement;\n", " if (targ.nodeType == 3) // defeat Safari bug\n", " targ = targ.parentNode;\n", "\n", " // jQuery normalizes the pageX and pageY\n", " // pageX,Y are the mouse positions relative to the document\n", " // offset() returns the position of the element relative to the document\n", " var x = e.pageX - $(targ).offset().left;\n", " var y = e.pageY - $(targ).offset().top;\n", "\n", " return {\"x\": x, \"y\": y};\n", "};\n", "\n", "/*\n", " * return a copy of an object with only non-object keys\n", " * we need this to avoid circular references\n", " * http://stackoverflow.com/a/24161582/3208463\n", " */\n", "function simpleKeys (original) {\n", " return Object.keys(original).reduce(function (obj, key) {\n", " if (typeof original[key] !== 'object')\n", " obj[key] = original[key]\n", " return obj;\n", " }, {});\n", "}\n", "\n", "mpl.figure.prototype.mouse_event = function(event, name) {\n", " var canvas_pos = mpl.findpos(event)\n", "\n", " if (name === 'button_press')\n", " {\n", " this.canvas.focus();\n", " this.canvas_div.focus();\n", " }\n", "\n", " var x = canvas_pos.x * mpl.ratio;\n", " var y = canvas_pos.y * mpl.ratio;\n", "\n", " this.send_message(name, {x: x, y: y, button: event.button,\n", " step: event.step,\n", " guiEvent: simpleKeys(event)});\n", "\n", " /* This prevents the web browser from automatically changing to\n", " * the text insertion cursor when the button is pressed. We want\n", " * to control all of the cursor setting manually through the\n", " * 'cursor' event from matplotlib */\n", " event.preventDefault();\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " // Handle any extra behaviour associated with a key event\n", "}\n", "\n", "mpl.figure.prototype.key_event = function(event, name) {\n", "\n", " // Prevent repeat events\n", " if (name == 'key_press')\n", " {\n", " if (event.which === this._key)\n", " return;\n", " else\n", " this._key = event.which;\n", " }\n", " if (name == 'key_release')\n", " this._key = null;\n", "\n", " var value = '';\n", " if (event.ctrlKey && event.which != 17)\n", " value += \"ctrl+\";\n", " if (event.altKey && event.which != 18)\n", " value += \"alt+\";\n", " if (event.shiftKey && event.which != 16)\n", " value += \"shift+\";\n", "\n", " value += 'k';\n", " value += event.which.toString();\n", "\n", " this._key_event_extra(event, name);\n", "\n", " this.send_message(name, {key: value,\n", " guiEvent: simpleKeys(event)});\n", " return false;\n", "}\n", "\n", "mpl.figure.prototype.toolbar_button_onclick = function(name) {\n", " if (name == 'download') {\n", " this.handle_save(this, null);\n", " } else {\n", " this.send_message(\"toolbar_button\", {name: name});\n", " }\n", "};\n", "\n", "mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n", " this.message.textContent = tooltip;\n", "};\n", "mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n", "\n", "mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n", "\n", "mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n", " // Create a \"websocket\"-like object which calls the given IPython comm\n", " // object with the appropriate methods. Currently this is a non binary\n", " // socket, so there is still some room for performance tuning.\n", " var ws = {};\n", "\n", " ws.close = function() {\n", " comm.close()\n", " };\n", " ws.send = function(m) {\n", " //console.log('sending', m);\n", " comm.send(m);\n", " };\n", " // Register the callback with on_msg.\n", " comm.on_msg(function(msg) {\n", " //console.log('receiving', msg['content']['data'], msg);\n", " // Pass the mpl event to the overridden (by mpl) onmessage function.\n", " ws.onmessage(msg['content']['data'])\n", " });\n", " return ws;\n", "}\n", "\n", "mpl.mpl_figure_comm = function(comm, msg) {\n", " // This is the function which gets called when the mpl process\n", " // starts-up an IPython Comm through the \"matplotlib\" channel.\n", "\n", " var id = msg.content.data.id;\n", " // Get hold of the div created by the display call when the Comm\n", " // socket was opened in Python.\n", " var element = $(\"#\" + id);\n", " var ws_proxy = comm_websocket_adapter(comm)\n", "\n", " function ondownload(figure, format) {\n", " window.open(figure.imageObj.src);\n", " }\n", "\n", " var fig = new mpl.figure(id, ws_proxy,\n", " ondownload,\n", " element.get(0));\n", "\n", " // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n", " // web socket which is closed, not our websocket->open comm proxy.\n", " ws_proxy.onopen();\n", "\n", " fig.parent_element = element.get(0);\n", " fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n", " if (!fig.cell_info) {\n", " console.error(\"Failed to find cell for figure\", id, fig);\n", " return;\n", " }\n", "\n", " var output_index = fig.cell_info[2]\n", " var cell = fig.cell_info[0];\n", "\n", "};\n", "\n", "mpl.figure.prototype.handle_close = function(fig, msg) {\n", " var width = fig.canvas.width/mpl.ratio\n", " fig.root.unbind('remove')\n", "\n", " // Update the output cell to use the data from the current canvas.\n", " fig.push_to_output();\n", " var dataURL = fig.canvas.toDataURL();\n", " // Re-enable the keyboard manager in IPython - without this line, in FF,\n", " // the notebook keyboard shortcuts fail.\n", " IPython.keyboard_manager.enable()\n", " $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n", " fig.close_ws(fig, msg);\n", "}\n", "\n", "mpl.figure.prototype.close_ws = function(fig, msg){\n", " fig.send_message('closing', msg);\n", " // fig.ws.close()\n", "}\n", "\n", "mpl.figure.prototype.push_to_output = function(remove_interactive) {\n", " // Turn the data on the canvas into data in the output cell.\n", " var width = this.canvas.width/mpl.ratio\n", " var dataURL = this.canvas.toDataURL();\n", " this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n", "}\n", "\n", "mpl.figure.prototype.updated_canvas_event = function() {\n", " // Tell IPython that the notebook contents must change.\n", " IPython.notebook.set_dirty(true);\n", " this.send_message(\"ack\", {});\n", " var fig = this;\n", " // Wait a second, then push the new image to the DOM so\n", " // that it is saved nicely (might be nice to debounce this).\n", " setTimeout(function () { fig.push_to_output() }, 1000);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('<div/>')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items){\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) { continue; };\n", "\n", " var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n", " button.click(method_name, toolbar_event);\n", " button.mouseover(tooltip, toolbar_mouse_event);\n", " nav_element.append(button);\n", " }\n", "\n", " // Add the status bar.\n", " var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n", " nav_element.append(status_bar);\n", " this.message = status_bar[0];\n", "\n", " // Add the close button to the window.\n", " var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n", " var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n", " button.click(function (evt) { fig.handle_close(fig, {}); } );\n", " button.mouseover('Stop Interaction', toolbar_mouse_event);\n", " buttongrp.append(button);\n", " var titlebar = this.root.find($('.ui-dialog-titlebar'));\n", " titlebar.prepend(buttongrp);\n", "}\n", "\n", "mpl.figure.prototype._root_extra_style = function(el){\n", " var fig = this\n", " el.on(\"remove\", function(){\n", "\tfig.close_ws(fig, {});\n", " });\n", "}\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(el){\n", " // this is important to make the div 'focusable\n", " el.attr('tabindex', 0)\n", " // reach out to IPython and tell the keyboard manager to turn it's self\n", " // off when our div gets focus\n", "\n", " // location in version 3\n", " if (IPython.notebook.keyboard_manager) {\n", " IPython.notebook.keyboard_manager.register_events(el);\n", " }\n", " else {\n", " // location in version 2\n", " IPython.keyboard_manager.register_events(el);\n", " }\n", "\n", "}\n", "\n", "mpl.figure.prototype._key_event_extra = function(event, name) {\n", " var manager = IPython.notebook.keyboard_manager;\n", " if (!manager)\n", " manager = IPython.keyboard_manager;\n", "\n", " // Check for shift+enter\n", " if (event.shiftKey && event.which == 13) {\n", " this.canvas_div.blur();\n", " event.shiftKey = false;\n", " // Send a \"J\" for go to next cell\n", " event.which = 74;\n", " event.keyCode = 74;\n", " manager.command_mode();\n", " manager.handle_keydown(event);\n", " }\n", "}\n", "\n", "mpl.figure.prototype.handle_save = function(fig, msg) {\n", " fig.ondownload(fig, null);\n", "}\n", "\n", "\n", "mpl.find_output_cell = function(html_output) {\n", " // Return the cell and output element which can be found *uniquely* in the notebook.\n", " // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n", " // IPython event is triggered only after the cells have been serialised, which for\n", " // our purposes (turning an active figure into a static one), is too late.\n", " var cells = IPython.notebook.get_cells();\n", " var ncells = cells.length;\n", " for (var i=0; i<ncells; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type === 'code'){\n", " for (var j=0; j<cell.output_area.outputs.length; j++) {\n", " var data = cell.output_area.outputs[j];\n", " if (data.data) {\n", " // IPython >= 3 moved mimebundle to data attribute of output\n", " data = data.data;\n", " }\n", " if (data['text/html'] == html_output) {\n", " return [cell, data, j];\n", " }\n", " }\n", " }\n", " }\n", "}\n", "\n", "// Register the function which deals with the matplotlib target/channel.\n", "// The kernel may be null if the page has been refreshed.\n", "if (IPython.notebook.kernel != null) {\n", " IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n", "}\n" ], "text/plain": [ "<IPython.core.display.Javascript object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<img src=\"data:image/png;base64,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\" width=\"600\">" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'pulseStart': 22491,\n", " 'pulseStop': 22525,\n", " 'baseStart': 22480,\n", " 'baseStop': 22485,\n", " 'period': 96,\n", " 'npulses': 400}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "params['period'] = 96\n", "params['npulses'] = 400\n", "params['pulseStart'] = 22491\n", "params['pulseStop'] = 22525\n", "params['baseStart'] = 22480\n", "params['baseStop'] = 22485\n", "\n", "params = tb.check_peak_params(run, 'FastADC0raw',\n", " bunchPattern='sase3', params=params, )\n", "params" ] }, { "cell_type": "markdown", "id": "ff86780b", "metadata": {}, "source": [ "### Reload data with raw trace and extract peaks using the new integration parameters" ] }, { "cell_type": "code", "execution_count": 15, "id": "4225c153", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", "<defs>\n", "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", "</symbol>\n", "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", "</symbol>\n", "</defs>\n", "</svg>\n", "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", " *\n", " */\n", "\n", ":root {\n", " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", " --xr-background-color: var(--jp-layout-color0, white);\n", " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", "}\n", "\n", "html[theme=dark],\n", "body.vscode-dark {\n", " --xr-font-color0: rgba(255, 255, 255, 1);\n", " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", " --xr-font-color3: rgba(255, 255, 255, 0.38);\n", " --xr-border-color: #1F1F1F;\n", " --xr-disabled-color: #515151;\n", " --xr-background-color: #111111;\n", " --xr-background-color-row-even: #111111;\n", " --xr-background-color-row-odd: #313131;\n", "}\n", "\n", ".xr-wrap {\n", " display: block;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", "\n", ".xr-text-repr-fallback {\n", " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", " display: none;\n", "}\n", "\n", ".xr-header {\n", " padding-top: 6px;\n", " padding-bottom: 6px;\n", " margin-bottom: 4px;\n", " border-bottom: solid 1px var(--xr-border-color);\n", "}\n", "\n", ".xr-header > div,\n", ".xr-header > ul {\n", " display: inline;\n", " margin-top: 0;\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-obj-type,\n", ".xr-array-name {\n", " margin-left: 2px;\n", " margin-right: 10px;\n", "}\n", "\n", ".xr-obj-type {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-sections {\n", " padding-left: 0 !important;\n", " display: grid;\n", " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", "}\n", "\n", ".xr-section-item {\n", " display: contents;\n", "}\n", "\n", ".xr-section-item input {\n", " display: none;\n", "}\n", "\n", ".xr-section-item input + label {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-item input:enabled + label {\n", " cursor: pointer;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-item input:enabled + label:hover {\n", " color: var(--xr-font-color0);\n", "}\n", "\n", ".xr-section-summary {\n", " grid-column: 1;\n", " color: var(--xr-font-color2);\n", " font-weight: 500;\n", "}\n", "\n", ".xr-section-summary > span {\n", " display: inline-block;\n", " padding-left: 0.5em;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label {\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-section-summary-in + label:before {\n", " display: inline-block;\n", " content: '►';\n", " font-size: 11px;\n", " width: 15px;\n", " text-align: center;\n", "}\n", "\n", ".xr-section-summary-in:disabled + label:before {\n", " color: var(--xr-disabled-color);\n", "}\n", "\n", ".xr-section-summary-in:checked + label:before {\n", " content: '▼';\n", "}\n", "\n", ".xr-section-summary-in:checked + label > span {\n", " display: none;\n", "}\n", "\n", ".xr-section-summary,\n", ".xr-section-inline-details {\n", " padding-top: 4px;\n", " padding-bottom: 4px;\n", "}\n", "\n", ".xr-section-inline-details {\n", " grid-column: 2 / -1;\n", "}\n", "\n", ".xr-section-details {\n", " display: none;\n", " grid-column: 1 / -1;\n", " margin-bottom: 5px;\n", "}\n", "\n", ".xr-section-summary-in:checked ~ .xr-section-details {\n", " display: contents;\n", "}\n", "\n", ".xr-array-wrap {\n", " grid-column: 1 / -1;\n", " display: grid;\n", " grid-template-columns: 20px auto;\n", "}\n", "\n", ".xr-array-wrap > label {\n", " grid-column: 1;\n", " vertical-align: top;\n", "}\n", "\n", ".xr-preview {\n", " color: var(--xr-font-color3);\n", "}\n", "\n", ".xr-array-preview,\n", ".xr-array-data {\n", " padding: 0 5px !important;\n", " grid-column: 2;\n", "}\n", "\n", ".xr-array-data,\n", ".xr-array-in:checked ~ .xr-array-preview {\n", " display: none;\n", "}\n", "\n", ".xr-array-in:checked ~ .xr-array-data,\n", ".xr-array-preview {\n", " display: inline-block;\n", "}\n", "\n", ".xr-dim-list {\n", " display: inline-block !important;\n", " list-style: none;\n", " padding: 0 !important;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list li {\n", " display: inline-block;\n", " padding: 0;\n", " margin: 0;\n", "}\n", "\n", ".xr-dim-list:before {\n", " content: '(';\n", "}\n", "\n", ".xr-dim-list:after {\n", " content: ')';\n", "}\n", "\n", ".xr-dim-list li:not(:last-child):after {\n", " content: ',';\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-has-index {\n", " font-weight: bold;\n", "}\n", "\n", ".xr-var-list,\n", ".xr-var-item {\n", " display: contents;\n", "}\n", "\n", ".xr-var-item > div,\n", ".xr-var-item label,\n", ".xr-var-item > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-even);\n", " margin-bottom: 0;\n", "}\n", "\n", ".xr-var-item > .xr-var-name:hover span {\n", " padding-right: 5px;\n", "}\n", "\n", ".xr-var-list > li:nth-child(odd) > div,\n", ".xr-var-list > li:nth-child(odd) > label,\n", ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", " background-color: var(--xr-background-color-row-odd);\n", "}\n", "\n", ".xr-var-name {\n", " grid-column: 1;\n", "}\n", "\n", ".xr-var-dims {\n", " grid-column: 2;\n", "}\n", "\n", ".xr-var-dtype {\n", " grid-column: 3;\n", " text-align: right;\n", " color: var(--xr-font-color2);\n", "}\n", "\n", ".xr-var-preview {\n", " grid-column: 4;\n", "}\n", "\n", ".xr-var-name,\n", ".xr-var-dims,\n", ".xr-var-dtype,\n", ".xr-preview,\n", ".xr-attrs dt {\n", " white-space: nowrap;\n", " overflow: hidden;\n", " text-overflow: ellipsis;\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-var-name:hover,\n", ".xr-var-dims:hover,\n", ".xr-var-dtype:hover,\n", ".xr-attrs dt:hover {\n", " overflow: visible;\n", " width: auto;\n", " z-index: 1;\n", "}\n", "\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " display: none;\n", " background-color: var(--xr-background-color) !important;\n", " padding-bottom: 5px !important;\n", "}\n", "\n", ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", ".xr-var-data-in:checked ~ .xr-var-data {\n", " display: block;\n", "}\n", "\n", ".xr-var-data > table {\n", " float: right;\n", "}\n", "\n", ".xr-var-name span,\n", ".xr-var-data,\n", ".xr-attrs {\n", " padding-left: 25px !important;\n", "}\n", "\n", ".xr-attrs,\n", ".xr-var-attrs,\n", ".xr-var-data {\n", " grid-column: 1 / -1;\n", "}\n", "\n", "dl.xr-attrs {\n", " padding: 0;\n", " margin: 0;\n", " display: grid;\n", " grid-template-columns: 125px auto;\n", "}\n", "\n", ".xr-attrs dt, dd {\n", " padding: 0;\n", " margin: 0;\n", " float: left;\n", " padding-right: 10px;\n", " width: auto;\n", "}\n", "\n", ".xr-attrs dt {\n", " font-weight: normal;\n", " grid-column: 1;\n", "}\n", "\n", ".xr-attrs dt:hover span {\n", " display: inline-block;\n", " background: var(--xr-background-color);\n", " padding-right: 10px;\n", "}\n", "\n", ".xr-attrs dd {\n", " grid-column: 2;\n", " white-space: pre-wrap;\n", " word-break: break-all;\n", "}\n", "\n", ".xr-icon-database,\n", ".xr-icon-file-text2 {\n", " display: inline-block;\n", " vertical-align: middle;\n", " width: 1em;\n", " height: 1.5em !important;\n", " stroke-width: 0;\n", " stroke: currentColor;\n", " fill: currentColor;\n", "}\n", "</style><pre class='xr-text-repr-fallback'><xarray.Dataset>\n", "Dimensions: (pulse_slot: 2700, sa3_pId: 400, trainId: 1817)\n", "Coordinates:\n", " * trainId (trainId) uint64 1471028273 1471028274 ... 1471028272\n", " * sa3_pId (sa3_pId) int64 1056 1060 1064 1068 ... 2644 2648 2652\n", "Dimensions without coordinates: pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2146089 0 ... 16777216\n", " chem_Y (trainId) float32 224.2802 224.28229 ... 224.2802\n", " FastADC0peaks (trainId, sa3_pId) float64 239.0 9.5 ... -69.0 101.5\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002953/raw/r0001</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-7043deee-5aef-45da-854f-b40f215a1e5d' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-7043deee-5aef-45da-854f-b40f215a1e5d' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>pulse_slot</span>: 2700</li><li><span class='xr-has-index'>sa3_pId</span>: 400</li><li><span class='xr-has-index'>trainId</span>: 1817</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-6946dfbb-b9b1-4c34-a41c-152823ce8335' class='xr-section-summary-in' type='checkbox' checked><label for='section-6946dfbb-b9b1-4c34-a41c-152823ce8335' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>trainId</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>uint64</div><div class='xr-var-preview xr-preview'>1471028273 ... 1471028272</div><input id='attrs-089b892b-26da-440a-8129-9aa107dd06d6' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-089b892b-26da-440a-8129-9aa107dd06d6' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-97c15a34-3e19-45f5-873c-004b27af5348' class='xr-var-data-in' type='checkbox'><label for='data-97c15a34-3e19-45f5-873c-004b27af5348' 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([1471028273, 1471028274, 1471028275, ..., 1471028270, 1471028271,\n", " 1471028272], dtype=uint64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>sa3_pId</span></div><div class='xr-var-dims'>(sa3_pId)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>1056 1060 1064 ... 2644 2648 2652</div><input id='attrs-d7cf2147-06e5-4273-97a9-d611559007e6' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d7cf2147-06e5-4273-97a9-d611559007e6' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e28a03eb-8ca5-4583-8253-d249b35237ef' class='xr-var-data-in' type='checkbox'><label for='data-e28a03eb-8ca5-4583-8253-d249b35237ef' 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([1056, 1060, 1064, ..., 2644, 2648, 2652])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-2d9e7a87-b051-4aaf-8a17-8cd129970e59' class='xr-section-summary-in' type='checkbox' checked><label for='section-2d9e7a87-b051-4aaf-8a17-8cd129970e59' class='xr-section-summary' >Data variables: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>bunchPatternTable</span></div><div class='xr-var-dims'>(trainId, pulse_slot)</div><div class='xr-var-dtype'>uint32</div><div class='xr-var-preview xr-preview'>2146089 0 ... 16777216 16777216</div><input id='attrs-dcd2e909-e64a-4705-af8b-df1850052314' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-dcd2e909-e64a-4705-af8b-df1850052314' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-51a128df-9baf-46ac-9aad-85ee9e968f28' class='xr-var-data-in' type='checkbox'><label for='data-51a128df-9baf-46ac-9aad-85ee9e968f28' 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([[ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " ...,\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n", " [ 2211625, 0, 2097193, ..., 16777216, 16777216, 16777216]],\n", " dtype=uint32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>chem_Y</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>224.2802 224.28229 ... 224.2802</div><input id='attrs-d90379bd-f8fd-4c16-8a59-17f380df81bf' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d90379bd-f8fd-4c16-8a59-17f380df81bf' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-0d46a78b-af53-4734-8116-257139ab8aff' class='xr-var-data-in' type='checkbox'><label for='data-0d46a78b-af53-4734-8116-257139ab8aff' 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([224.2802 , 224.28229, 224.28229, ..., 224.2802 , 224.2802 ,\n", " 224.2802 ], dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>FastADC0peaks</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>239.0 9.5 -169.0 ... -69.0 101.5</div><input id='attrs-c5b16cb2-b990-4a3d-8908-b9873de9d990' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c5b16cb2-b990-4a3d-8908-b9873de9d990' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-1e948a55-3e65-463a-b5a1-b42fabcc297d' class='xr-var-data-in' type='checkbox'><label for='data-1e948a55-3e65-463a-b5a1-b42fabcc297d' 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([[ 239. , 9.5, -169. , ..., 53.5, 51.5, 113. ],\n", " [-127.5, 47. , -22. , ..., 297.5, 115. , 322. ],\n", " [ 209.5, -281. , -221.5, ..., 33.5, -19.5, 31.5],\n", " ...,\n", " [ 186. , 117. , -55.5, ..., -3. , -91. , -61. ],\n", " [-284.5, -129. , -23.5, ..., 16. , -126. , 120.5],\n", " [-100.5, -339. , 11. , ..., -126. , -69. , 101.5]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-928505e0-a653-4fc4-94ba-fe76bdf2fe37' class='xr-section-summary-in' type='checkbox' checked><label for='section-928505e0-a653-4fc4-94ba-fe76bdf2fe37' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>runFolder :</span></dt><dd>/gpfs/exfel/exp/SCS/202202/p002953/raw/r0001</dd></dl></div></li></ul></div></div>" ], "text/plain": [ "<xarray.Dataset>\n", "Dimensions: (pulse_slot: 2700, sa3_pId: 400, trainId: 1817)\n", "Coordinates:\n", " * trainId (trainId) uint64 1471028273 1471028274 ... 1471028272\n", " * sa3_pId (sa3_pId) int64 1056 1060 1064 1068 ... 2644 2648 2652\n", "Dimensions without coordinates: pulse_slot\n", "Data variables:\n", " bunchPatternTable (trainId, pulse_slot) uint32 2146089 0 ... 16777216\n", " chem_Y (trainId) float32 224.2802 224.28229 ... 224.2802\n", " FastADC0peaks (trainId, sa3_pId) float64 239.0 9.5 ... -69.0 101.5\n", "Attributes:\n", " runFolder: /gpfs/exfel/exp/SCS/202202/p002953/raw/r0001" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "run, ds = tb.load(proposal, runNB, fields, extract_fadc=False)\n", "ds = tb.get_digitizer_peaks(run, 'FastADC0raw', merge_with=ds,\n", " integParams=params, bunchPattern='sase3')\n", "ds" ] }, { "cell_type": "markdown", "id": "3d0d64a0", "metadata": {}, "source": [ "Note that the `mnemonics` parameter in `get_digitizer_peaks` can take a list of mnemonics, so this peak extraction can be simultaneoulsy applied to various channels of a same digitizer (`mnemonics=['FastADC2_5raw', 'FastADC2_9raw']` for instance)." ] } ], "metadata": { "kernelspec": { "display_name": "xfel (Python 3.7)", "language": "python", "name": "xfel" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.3" } }, "nbformat": 4, "nbformat_minor": 5 }