{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "Hu8S8IvjI4sj" }, "source": [ "# Quickstart\n", "This notebook shows some very simple example of getting started.\n", "\n", "First we need to install some dependancies into your conda or venv environment" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "collapsed": true, "id": "fv7OyVCrfC9v", "outputId": "50b4ab1b-6ac9-4a93-be9a-d1af424b0662", "tags": [ "hide-output" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (2.0.3)\n", "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (3.7.1)\n", "Requirement already satisfied: zarr in /usr/local/lib/python3.10/dist-packages (2.18.2)\n", "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (2024.6.0)\n", "Requirement already satisfied: s3fs in /usr/local/lib/python3.10/dist-packages (2024.6.0)\n", "Requirement already satisfied: intake in /usr/local/lib/python3.10/dist-packages (2.0.5)\n", "Requirement already satisfied: intake_xarray in /usr/local/lib/python3.10/dist-packages (0.7.0)\n", "Requirement already satisfied: intake_parquet in /usr/local/lib/python3.10/dist-packages (0.3.0)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas) (2.8.2)\n", "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2023.4)\n", "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas) (2024.1)\n", "Requirement already satisfied: numpy>=1.21.0 in /usr/local/lib/python3.10/dist-packages (from pandas) (1.25.2)\n", "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.2.1)\n", "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (0.12.1)\n", "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (4.53.0)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (1.4.5)\n", "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (24.1)\n", "Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (9.4.0)\n", "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (3.1.2)\n", "Requirement already satisfied: asciitree in /usr/local/lib/python3.10/dist-packages (from zarr) (0.3.3)\n", "Requirement already satisfied: numcodecs>=0.10.0 in /usr/local/lib/python3.10/dist-packages (from zarr) (0.12.1)\n", "Requirement already satisfied: fasteners in /usr/local/lib/python3.10/dist-packages (from zarr) (0.19)\n", "Requirement already satisfied: aiobotocore<3.0.0,>=2.5.4 in /usr/local/lib/python3.10/dist-packages (from s3fs) (2.13.1)\n", "Requirement already satisfied: aiohttp!=4.0.0a0,!=4.0.0a1 in /usr/local/lib/python3.10/dist-packages (from s3fs) (3.9.5)\n", "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from intake) (6.0.1)\n", "Requirement already satisfied: appdirs in /usr/local/lib/python3.10/dist-packages (from intake) (1.4.4)\n", "Requirement already satisfied: xarray>=02022 in /usr/local/lib/python3.10/dist-packages (from intake_xarray) (2023.7.0)\n", "Requirement already satisfied: dask>=2.2 in /usr/local/lib/python3.10/dist-packages (from intake_xarray) (2023.8.1)\n", "Requirement already satisfied: netcdf4 in /usr/local/lib/python3.10/dist-packages (from intake_xarray) (1.7.1)\n", "Requirement already satisfied: msgpack in /usr/local/lib/python3.10/dist-packages (from intake_xarray) (1.0.8)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from intake_xarray) (2.31.0)\n", "Requirement already satisfied: fastparquet in /usr/local/lib/python3.10/dist-packages (from intake_parquet) (2024.5.0)\n", "Requirement already satisfied: pyarrow in /usr/local/lib/python3.10/dist-packages (from intake_parquet) (14.0.2)\n", "Requirement already satisfied: botocore<1.34.132,>=1.34.70 in /usr/local/lib/python3.10/dist-packages (from aiobotocore<3.0.0,>=2.5.4->s3fs) (1.34.131)\n", "Requirement already satisfied: wrapt<2.0.0,>=1.10.10 in /usr/local/lib/python3.10/dist-packages (from aiobotocore<3.0.0,>=2.5.4->s3fs) (1.14.1)\n", "Requirement already satisfied: aioitertools<1.0.0,>=0.5.1 in /usr/local/lib/python3.10/dist-packages (from aiobotocore<3.0.0,>=2.5.4->s3fs) (0.11.0)\n", "Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs) (1.3.1)\n", "Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs) (23.2.0)\n", "Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs) (1.4.1)\n", "Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs) (6.0.5)\n", "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs) (1.9.4)\n", "Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->s3fs) (4.0.3)\n", "Requirement already satisfied: click>=8.0 in /usr/local/lib/python3.10/dist-packages (from dask>=2.2->intake_xarray) (8.1.7)\n", "Requirement already satisfied: cloudpickle>=1.5.0 in /usr/local/lib/python3.10/dist-packages (from dask>=2.2->intake_xarray) (2.2.1)\n", "Requirement already satisfied: partd>=1.2.0 in /usr/local/lib/python3.10/dist-packages (from dask>=2.2->intake_xarray) (1.4.2)\n", "Requirement already satisfied: toolz>=0.10.0 in /usr/local/lib/python3.10/dist-packages (from dask>=2.2->intake_xarray) (0.12.1)\n", "Requirement already satisfied: importlib-metadata>=4.13.0 in /usr/local/lib/python3.10/dist-packages (from dask>=2.2->intake_xarray) (7.2.0)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n", "Requirement already satisfied: cramjam>=2.3 in /usr/local/lib/python3.10/dist-packages (from fastparquet->intake_parquet) (2.8.3)\n", "Requirement already satisfied: cftime in /usr/local/lib/python3.10/dist-packages (from netcdf4->intake_xarray) (1.6.4)\n", "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from netcdf4->intake_xarray) (2024.6.2)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->intake_xarray) (3.3.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->intake_xarray) (3.7)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->intake_xarray) (2.0.7)\n", "Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from botocore<1.34.132,>=1.34.70->aiobotocore<3.0.0,>=2.5.4->s3fs) (1.0.1)\n", "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.10/dist-packages (from importlib-metadata>=4.13.0->dask>=2.2->intake_xarray) (3.19.2)\n", "Requirement already satisfied: locket in /usr/local/lib/python3.10/dist-packages (from partd>=1.2.0->dask>=2.2->intake_xarray) (1.0.0)\n" ] } ], "source": [ "!pip install pandas matplotlib zarr fsspec s3fs intake intake_xarray intake_parquet" ] }, { "cell_type": "markdown", "metadata": { "id": "wOF1D3hGJF5e" }, "source": [ "#### Open the intake Catalog" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 139 }, "id": "cpiv_WAPGfrY", "outputId": "11e0d328-c765-4382-fbe7-64cc5adba404" }, "outputs": [ { "data": { "application/yaml": "intake:\n args:\n path: https://mastapp.site/intake/catalog.yml\n description: ''\n driver: intake.catalog.local.YAMLFileCatalog\n metadata:\n version: 1\n", "text/plain": [ "intake:\n", " args:\n", " path: https://mastapp.site/intake/catalog.yml\n", " description: ''\n", " driver: intake.catalog.local.YAMLFileCatalog\n", " metadata:\n", " version: 1\n" ] }, "metadata": { "application/json": { "root": "intake" } }, "output_type": "display_data" } ], "source": [ "import intake\n", "catalog = intake.open_catalog('https://mastapp.site/intake/catalog.yml')\n", "catalog" ] }, { "cell_type": "markdown", "metadata": { "id": "l8ci7WglJJPb" }, "source": [ "#### List All Shots" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 721 }, "id": "yNJv-2FfF2zb", "outputId": "2eaafdfa-6e1d-491d-bc62-3c98d42cae77" }, "outputs": [ { "data": { "application/vnd.google.colaboratory.intrinsic+json": { "type": "dataframe", "variable_name": "shots_df" }, "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
urlpreshot_descriptionpostshot_descriptioncampaigncurrent_rangedivertor_configplasma_shapecomissionerfacilityshot_id...cpf_vol_ipmaxcpf_vol_maxcpf_vol_trubycpf_wmhd_ipmaxcpf_wmhd_maxcpf_wmhd_trubycpf_zeff_ipmaxcpf_zeff_maxcpf_zeff_trubycpf_zmag_efit
0s3://mast/level1/shots/15085.zarr\\nReplace ccbv connector. repeat.\\n\\nRadial control unchanged. Zip/FA jump less ...M6NoneConventionalNoneNoneMAST15085...NaNNaNNaNNaNNaNNaNNoneNoneNoneNaN
1s3://mast/level1/shots/15086.zarr\\nAdd another 5cm to Drref during the ramp. Re...\\nEarly termination, at 180ms.\\nM6NoneConventionalNoneNoneMAST15086...NaNNaNNaNNaNNaNNaNNoneNoneNoneNaN
2s3://mast/level1/shots/15087.zarr\\nRepeat, with small change to IDIV.\\n\\nEarly termination at 200ms.\\nM6NoneConventionalNoneNoneMAST15087...NaNNaNNaNNaNNaNNaNNoneNoneNoneNaN
3s3://mast/level1/shots/15088.zarr\\nRestore shot 15085.\\n\\nOK.\\nM6NoneConventionalNoneNoneMAST15088...NaNNaNNaNNaNNaNNaNNoneNoneNoneNaN
4s3://mast/level1/shots/15089.zarr\\nRepeat, with IDIV, BV tweaked to match last ...\\nTerminated early.\\nM6NoneConventionalNoneNoneMAST15089...NaNNaNNaNNaNNaNNaNNoneNoneNoneNaN
..................................................................
11938s3://mast/level1/shots/30467.zarr\\nRepeat with new neutron camera position.\\ncH...\\nTwo times lower DD neutron rate than referen...M9700 kAConventionalConnected Double NullNoneMAST30467...9.0292029.0463940.049469.12246952653.4450.0NoneNoneNone0.013202
11939s3://mast/level1/shots/30468.zarr\\nRepeat with new neutron camera position.\\ncH...\\nGood beam.\\nGood repeat.\\nM9700 kAConventionalLower Single NullNoneMAST30468...9.1024119.1070170.048516.96267549382.1330.0NoneNoneNone0.012445
11940s3://mast/level1/shots/30469.zarr\\nRepeat with increased beam power (74 kV)\\ncH...\\nGood shot. Modes present.\\nM9700 kAConventionalConnected Double NullNoneMAST30469...8.9887309.0479230.047466.24961649115.8050.0NoneNoneNone0.015299
11941s3://mast/level1/shots/30470.zarr\\nRepeat last using hydrogen in outboard and c...\\nNo HF gas.\\nM9700 kAConventionalNoneNoneMAST30470...9.68704910.0555090.017290.43286522310.5160.0NoneNoneNone0.015164
11942s3://mast/level1/shots/30471.zarr\\nThe last plasma:\\nConvert to i/b Helios 1724...\\nGood shot.\\nM9700 kAConventionalLower Single NullNoneMAST30471...8.8175599.2837020.038063.58238040906.0900.0NoneNoneNone0.014340
\n", "

11943 rows × 282 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n" ], "text/plain": [ " url \\\n", "0 s3://mast/level1/shots/15085.zarr \n", "1 s3://mast/level1/shots/15086.zarr \n", "2 s3://mast/level1/shots/15087.zarr \n", "3 s3://mast/level1/shots/15088.zarr \n", "4 s3://mast/level1/shots/15089.zarr \n", "... ... \n", "11938 s3://mast/level1/shots/30467.zarr \n", "11939 s3://mast/level1/shots/30468.zarr \n", "11940 s3://mast/level1/shots/30469.zarr \n", "11941 s3://mast/level1/shots/30470.zarr \n", "11942 s3://mast/level1/shots/30471.zarr \n", "\n", " preshot_description \\\n", "0 \\nReplace ccbv connector. repeat.\\n \n", "1 \\nAdd another 5cm to Drref during the ramp. Re... \n", "2 \\nRepeat, with small change to IDIV.\\n \n", "3 \\nRestore shot 15085.\\n \n", "4 \\nRepeat, with IDIV, BV tweaked to match last ... \n", "... ... \n", "11938 \\nRepeat with new neutron camera position.\\ncH... \n", "11939 \\nRepeat with new neutron camera position.\\ncH... \n", "11940 \\nRepeat with increased beam power (74 kV)\\ncH... \n", "11941 \\nRepeat last using hydrogen in outboard and c... \n", "11942 \\nThe last plasma:\\nConvert to i/b Helios 1724... \n", "\n", " postshot_description campaign \\\n", "0 \\nRadial control unchanged. Zip/FA jump less ... M6 \n", "1 \\nEarly termination, at 180ms.\\n M6 \n", "2 \\nEarly termination at 200ms.\\n M6 \n", "3 \\nOK.\\n M6 \n", "4 \\nTerminated early.\\n M6 \n", "... ... ... \n", "11938 \\nTwo times lower DD neutron rate than referen... M9 \n", "11939 \\nGood beam.\\nGood repeat.\\n M9 \n", "11940 \\nGood shot. Modes present.\\n M9 \n", "11941 \\nNo HF gas.\\n M9 \n", "11942 \\nGood shot.\\n M9 \n", "\n", " current_range divertor_config plasma_shape comissioner \\\n", "0 None Conventional None None \n", "1 None Conventional None None \n", "2 None Conventional None None \n", "3 None Conventional None None \n", "4 None Conventional None None \n", "... ... ... ... ... \n", "11938 700 kA Conventional Connected Double Null None \n", "11939 700 kA Conventional Lower Single Null None \n", "11940 700 kA Conventional Connected Double Null None \n", "11941 700 kA Conventional None None \n", "11942 700 kA Conventional Lower Single Null None \n", "\n", " facility shot_id ... cpf_vol_ipmax cpf_vol_max cpf_vol_truby \\\n", "0 MAST 15085 ... NaN NaN NaN \n", "1 MAST 15086 ... NaN NaN NaN \n", "2 MAST 15087 ... NaN NaN NaN \n", "3 MAST 15088 ... NaN NaN NaN \n", "4 MAST 15089 ... NaN NaN NaN \n", "... ... ... ... ... ... ... \n", "11938 MAST 30467 ... 9.029202 9.046394 0.0 \n", "11939 MAST 30468 ... 9.102411 9.107017 0.0 \n", "11940 MAST 30469 ... 8.988730 9.047923 0.0 \n", "11941 MAST 30470 ... 9.687049 10.055509 0.0 \n", "11942 MAST 30471 ... 8.817559 9.283702 0.0 \n", "\n", " cpf_wmhd_ipmax cpf_wmhd_max cpf_wmhd_truby cpf_zeff_ipmax cpf_zeff_max \\\n", "0 NaN NaN NaN None None \n", "1 NaN NaN NaN None None \n", "2 NaN NaN NaN None None \n", "3 NaN NaN NaN None None \n", "4 NaN NaN NaN None None \n", "... ... ... ... ... ... \n", "11938 49469.122469 52653.445 0.0 None None \n", "11939 48516.962675 49382.133 0.0 None None \n", "11940 47466.249616 49115.805 0.0 None None \n", "11941 17290.432865 22310.516 0.0 None None \n", "11942 38063.582380 40906.090 0.0 None None \n", "\n", " cpf_zeff_truby cpf_zmag_efit \n", "0 None NaN \n", "1 None NaN \n", "2 None NaN \n", "3 None NaN \n", "4 None NaN \n", "... ... ... \n", "11938 None 0.013202 \n", "11939 None 0.012445 \n", "11940 None 0.015299 \n", "11941 None 0.015164 \n", "11942 None 0.014340 \n", "\n", "[11943 rows x 282 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "shots_df = catalog.index.level1.shots().read()\n", "shots_df" ] }, { "cell_type": "markdown", "metadata": { "id": "S4ZTGisaJQUm" }, "source": [ "#### List All Sources" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "id": "eI3YpqABGQ_K", "outputId": "046933be-b3ef-42fb-c8f2-f9c3dab2ce28" }, "outputs": [ { "data": { "application/vnd.google.colaboratory.intrinsic+json": { "summary": "{\n \"name\": \"sources_df\",\n \"rows\": 73918,\n \"fields\": [\n {\n \"column\": \"description\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 43,\n \"samples\": [\n \"Automatic analysis of soft X-rays, sawtooth\",\n \"Halo current Measurements (HAL), P2/P3 Halo Current Measurements (HALO)\",\n \"multi-chord bolometers\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"quality\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"Not Checked\",\n \"Bad\",\n \"Very Bad\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"uuid\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 73918,\n \"samples\": [\n \"f4dcdbe4-394d-52c4-93b4-76558fde02bc\",\n \"388ae284-dce7-56a3-ac7d-2573fbae4578\",\n \"90402feb-c2b2-590d-a9df-56917da27a86\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"shot_id\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 3691,\n \"min\": 15085,\n \"max\": 30471,\n \"num_unique_values\": 11943,\n \"samples\": [\n 24193,\n 26390,\n 29598\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"name\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 45,\n \"samples\": [\n \"asx\",\n \"amh\",\n \"abm\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"url\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 73918,\n \"samples\": [\n \"s3://mast/level1/shots/23931.zarr/efm\",\n \"s3://mast/level1/shots/22588.zarr/rco\",\n \"s3://mast/level1/shots/22671.zarr/rba\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}", "type": "dataframe", "variable_name": "sources_df" }, "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
descriptionqualityuuidshot_idnameurl
0Photron bullet camera BNot Checkedbed283e8-a83b-56f4-a948-43fa9ff3e86b15085rbbs3://mast/level1/shots/15085.zarr/rbb
1Photron bullet camera BNot Checkedd94e21f5-223b-5d7a-92a5-1027f9d1ff5f15086rbbs3://mast/level1/shots/15086.zarr/rbb
2Photron bullet camera BNot Checked8e2e2675-9d2e-58e9-a466-7b953822096c15087rbbs3://mast/level1/shots/15087.zarr/rbb
3Photron bullet camera BNot Checked703f470e-4fae-52bc-9f52-20ab073971a315088rbbs3://mast/level1/shots/15088.zarr/rbb
4Photron bullet camera BNot Checkede28f55ee-1198-5f05-91e7-1b897a80424615089rbbs3://mast/level1/shots/15089.zarr/rbb
.....................
73913Photron bullet camera CNot Checked1476f0e0-209a-551c-938f-4fac3b9d519d30471rbcs3://mast/level1/shots/30471.zarr/rbc
73914CELESTE-1: eCeleste poloidal view spectrometerNot Checked5d648ec1-e9d5-574f-85ae-1cfac43ef2bf30471rcas3://mast/level1/shots/30471.zarr/rca
73915Phantom colour cameraNot Checked3ab8c113-1d6e-5b28-b3bc-253520c96d0230471rcos3://mast/level1/shots/30471.zarr/rco
73916RBG 2D multi-colour visible bremsstrahlung cameraNot Checked85416bc2-faa1-5753-8541-0d27f68434bc30471rgbs3://mast/level1/shots/30471.zarr/rgb
73917RBG 2D multi-colour visible bremsstrahlung cameraNot Checkeda94efa26-63b2-517f-afa5-08b95c309b9630471rgcs3://mast/level1/shots/30471.zarr/rgc
\n", "

73918 rows × 6 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n" ], "text/plain": [ " description quality \\\n", "0 Photron bullet camera B Not Checked \n", "1 Photron bullet camera B Not Checked \n", "2 Photron bullet camera B Not Checked \n", "3 Photron bullet camera B Not Checked \n", "4 Photron bullet camera B Not Checked \n", "... ... ... \n", "73913 Photron bullet camera C Not Checked \n", "73914 CELESTE-1: eCeleste poloidal view spectrometer Not Checked \n", "73915 Phantom colour camera Not Checked \n", "73916 RBG 2D multi-colour visible bremsstrahlung camera Not Checked \n", "73917 RBG 2D multi-colour visible bremsstrahlung camera Not Checked \n", "\n", " uuid shot_id name \\\n", "0 bed283e8-a83b-56f4-a948-43fa9ff3e86b 15085 rbb \n", "1 d94e21f5-223b-5d7a-92a5-1027f9d1ff5f 15086 rbb \n", "2 8e2e2675-9d2e-58e9-a466-7b953822096c 15087 rbb \n", "3 703f470e-4fae-52bc-9f52-20ab073971a3 15088 rbb \n", "4 e28f55ee-1198-5f05-91e7-1b897a804246 15089 rbb \n", "... ... ... ... \n", "73913 1476f0e0-209a-551c-938f-4fac3b9d519d 30471 rbc \n", "73914 5d648ec1-e9d5-574f-85ae-1cfac43ef2bf 30471 rca \n", "73915 3ab8c113-1d6e-5b28-b3bc-253520c96d02 30471 rco \n", "73916 85416bc2-faa1-5753-8541-0d27f68434bc 30471 rgb \n", "73917 a94efa26-63b2-517f-afa5-08b95c309b96 30471 rgc \n", "\n", " url \n", "0 s3://mast/level1/shots/15085.zarr/rbb \n", "1 s3://mast/level1/shots/15086.zarr/rbb \n", "2 s3://mast/level1/shots/15087.zarr/rbb \n", "3 s3://mast/level1/shots/15088.zarr/rbb \n", "4 s3://mast/level1/shots/15089.zarr/rbb \n", "... ... \n", "73913 s3://mast/level1/shots/30471.zarr/rbc \n", "73914 s3://mast/level1/shots/30471.zarr/rca \n", "73915 s3://mast/level1/shots/30471.zarr/rco \n", "73916 s3://mast/level1/shots/30471.zarr/rgb \n", "73917 s3://mast/level1/shots/30471.zarr/rgc \n", "\n", "[73918 rows x 6 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sources_df = catalog.index.level1.sources().read()\n", "sources_df" ] }, { "cell_type": "markdown", "metadata": { "id": "qW5VOYWyJR5t" }, "source": [ "#### List all signals Given a Shot Number" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "id": "oyuHeNgkGOab", "outputId": "06e3ecb7-b177-4817-a265-1b2d81e234e7" }, "outputs": [ { "data": { "application/vnd.google.colaboratory.intrinsic+json": { "repr_error": "Out of range float values are not JSON compliant: nan", "type": "dataframe", "variable_name": "signals_df" }, "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
qualityshapeprovenancedescriptionsignal_typedimensionsuuidshot_idnameversionrankurlsourceunits
0Not Checked[]NoneAnalysed[]76fbeab6-0e2f-58f0-939b-6dd4e99ac69130420air/alphaconst_osp00s3://mast/level1/shots/30420.zarr/air/alphacon...airNone
1Not Checked[]NoneAnalysed[]afb7d470-1afb-57ab-9f8b-7a1177f2883930420abm/calib_shot00s3://mast/level1/shots/30420.zarr/abm/calib_shotabmNone
2Not Checked[32]NoneAnalysed[dim_0]9d4d7d90-99e2-56cb-831c-8b64a7a2324430420abm/channel_status01s3://mast/level1/shots/30420.zarr/abm/channel_...abmNone
3Not Checked[32]NoneAnalysed[dim_0]c3405cd4-06cc-59ba-b6f7-65e5032e7e9b30420abm/channel_type01s3://mast/level1/shots/30420.zarr/abm/channel_...abmNone
4Not Checked[11]NoneAnalysed[chord]8a434405-caa4-5419-9078-cffeec67da6830420abm01s3://mast/level1/shots/30420.zarr/abmabmNone
.............................................
1850Not Checked[288, 64]NoneAnalysed[time, npts_outer]32c80568-557e-5833-8695-ec499e5feb5130420alp/outer_lo_chisq02s3://mast/level1/shots/30420.zarr/alp/outer_lo...alpNone
1851Not Checked[288]NoneAnalysed[time]b12de18d-c29f-5f24-a787-79db5fffc63630420alp/outer_lo_denpeakval01s3://mast/level1/shots/30420.zarr/alp/outer_lo...alpNone
1852Not Checked[288, 64]NoneAnalysed[time, npts_outer]a9dc3c02-4ce6-5df3-b3d3-13cf841c2cca30420alp/outer_lo_density02s3://mast/level1/shots/30420.zarr/alp/outer_lo...alpNone
1853Not Checked[288]NoneAnalysed[time]1a8d902e-b539-54f3-9f83-8c2f981cb78e30420alp/outer_lo_jsapeakpos01s3://mast/level1/shots/30420.zarr/alp/outer_lo...alpNone
1854Not Checked[288]NoneAnalysed[time]dce2202c-46d6-57c2-b3af-ce25bf7bdd1a30420alp/outer_lo_jsapeakval01s3://mast/level1/shots/30420.zarr/alp/outer_lo...alpNone
\n", "

1855 rows × 14 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "\n", "
\n", " \n", " \n", " \n", "
\n", "\n", "
\n", "
\n" ], "text/plain": [ " quality shape provenance description signal_type \\\n", "0 Not Checked [] None Analysed \n", "1 Not Checked [] None Analysed \n", "2 Not Checked [32] None Analysed \n", "3 Not Checked [32] None Analysed \n", "4 Not Checked [11] None Analysed \n", "... ... ... ... ... ... \n", "1850 Not Checked [288, 64] None Analysed \n", "1851 Not Checked [288] None Analysed \n", "1852 Not Checked [288, 64] None Analysed \n", "1853 Not Checked [288] None Analysed \n", "1854 Not Checked [288] None Analysed \n", "\n", " dimensions uuid shot_id \\\n", "0 [] 76fbeab6-0e2f-58f0-939b-6dd4e99ac691 30420 \n", "1 [] afb7d470-1afb-57ab-9f8b-7a1177f28839 30420 \n", "2 [dim_0] 9d4d7d90-99e2-56cb-831c-8b64a7a23244 30420 \n", "3 [dim_0] c3405cd4-06cc-59ba-b6f7-65e5032e7e9b 30420 \n", "4 [chord] 8a434405-caa4-5419-9078-cffeec67da68 30420 \n", "... ... ... ... \n", "1850 [time, npts_outer] 32c80568-557e-5833-8695-ec499e5feb51 30420 \n", "1851 [time] b12de18d-c29f-5f24-a787-79db5fffc636 30420 \n", "1852 [time, npts_outer] a9dc3c02-4ce6-5df3-b3d3-13cf841c2cca 30420 \n", "1853 [time] 1a8d902e-b539-54f3-9f83-8c2f981cb78e 30420 \n", "1854 [time] dce2202c-46d6-57c2-b3af-ce25bf7bdd1a 30420 \n", "\n", " name version rank \\\n", "0 air/alphaconst_osp 0 0 \n", "1 abm/calib_shot 0 0 \n", "2 abm/channel_status 0 1 \n", "3 abm/channel_type 0 1 \n", "4 abm 0 1 \n", "... ... ... ... \n", "1850 alp/outer_lo_chisq 0 2 \n", "1851 alp/outer_lo_denpeakval 0 1 \n", "1852 alp/outer_lo_density 0 2 \n", "1853 alp/outer_lo_jsapeakpos 0 1 \n", "1854 alp/outer_lo_jsapeakval 0 1 \n", "\n", " url source units \n", "0 s3://mast/level1/shots/30420.zarr/air/alphacon... air None \n", "1 s3://mast/level1/shots/30420.zarr/abm/calib_shot abm None \n", "2 s3://mast/level1/shots/30420.zarr/abm/channel_... abm None \n", "3 s3://mast/level1/shots/30420.zarr/abm/channel_... abm None \n", "4 s3://mast/level1/shots/30420.zarr/abm abm None \n", "... ... ... ... \n", "1850 s3://mast/level1/shots/30420.zarr/alp/outer_lo... alp None \n", "1851 s3://mast/level1/shots/30420.zarr/alp/outer_lo... alp None \n", "1852 s3://mast/level1/shots/30420.zarr/alp/outer_lo... alp None \n", "1853 s3://mast/level1/shots/30420.zarr/alp/outer_lo... alp None \n", "1854 s3://mast/level1/shots/30420.zarr/alp/outer_lo... alp None \n", "\n", "[1855 rows x 14 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "signals_df = catalog.index.level1.signals(shot=30420).read()\n", "signals_df" ] }, { "cell_type": "markdown", "metadata": { "id": "kLR6H5S-JVsD" }, "source": [ "#### Open and plot shot data. \n", "\n", "Here we are visualising some plasma current data." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 447 }, "id": "AXaJ1a9GGbtW", "outputId": "76ac54b6-8210-484a-847b-6b7acea96399" }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAArfUlEQVR4nO3df3RU9Z3/8ddMQn5nEgIkIeWn1S0i+ItfRmyrki+ofP3Kka+nnMNainxhlyZUZL/+oFXcFjXKYZVCEbTbRdyCuN1z0EotykaFb0v40VC2CIq6VclCk2iRTH6QmWTmfv9IZiCQhAyZmc+dy/NxzhyTO3dm3jMmNy8+9/35XJdlWZYAAABsxG26AAAAgHMRUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0kmy7gYgSDQZ04cULZ2dlyuVymywEAAL1gWZYaGhpUVFQkt7vnMZKEDCgnTpzQ0KFDTZcBAAAuQnV1tYYMGdLjPgkZULKzsyW1v0GPx2O4GgAA0Bter1dDhw4N/x3vSUIGlNBpHY/HQ0ABACDB9KY9gyZZAABgOwQUAABgOwQUAABgOwQUAABgOwQUAABgOwQUAABgOwQUAABgOwQUAABgOwQUAABgOwQUAABgOwQUAABgOwQUAABgOwQUIIFZlqVNez/X/s9Omi4FAKIqIa9mDKBd5X/9VT/a+r4k6bOnpxuuBgCihxEUIIF9+tcm0yUAQEwQUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUIAEZlmmKwCA2CCgAAAA2yGgAAnM5TJdAQDEBgEFAADYDgEFSGD0oABwKgIKAACwHQIKkMDoQQHgVAQUAABgOwQUIIHRgwLAqQgoAADAdggoQAKjBwWAUxFQAACA7RBQgARGDwoAp4oooAQCAT322GMaOXKk0tPT9fWvf13Lly+XddZR0rIsLVu2TIMHD1Z6erpKSkr08ccfd3qekydPavbs2fJ4PMrNzdW8efPU2NgYnXcEAAASXkQB5ZlnntG6dev0s5/9TB988IGeeeYZrVixQmvWrAnvs2LFCq1evVrr16/X3r17lZmZqWnTpqmlpSW8z+zZs3X48GHt2LFD27Zt065du7RgwYLovSsAAJDQkiPZeffu3brrrrs0ffp0SdKIESP0yiuvaN++fZLaR09WrVqlRx99VHfddZck6eWXX1ZBQYFee+01zZo1Sx988IG2b9+u/fv3a/z48ZKkNWvW6I477tDKlStVVFQUzfcHOBpNsgCcKqIRlBtvvFEVFRX66KOPJEn/+Z//qd/97ne6/fbbJUmffvqpampqVFJSEn5MTk6OJk2apMrKSklSZWWlcnNzw+FEkkpKSuR2u7V3794uX9fn88nr9Xa6AaAHBYBzRTSC8sgjj8jr9WrUqFFKSkpSIBDQk08+qdmzZ0uSampqJEkFBQWdHldQUBC+r6amRvn5+Z2LSE5WXl5eeJ9zlZeX68c//nEkpQIAgAQW0QjKv/3bv2nTpk3avHmzDhw4oI0bN2rlypXauHFjrOqTJC1dulT19fXhW3V1dUxfDwAAmBXRCMqDDz6oRx55RLNmzZIkjR07Vp9//rnKy8s1Z84cFRYWSpJqa2s1ePDg8ONqa2t17bXXSpIKCwtVV1fX6Xnb2tp08uTJ8OPPlZqaqtTU1EhKBS4J9KAAcKqIRlCam5vldnd+SFJSkoLBoCRp5MiRKiwsVEVFRfh+r9ervXv3qri4WJJUXFysU6dOqaqqKrzPO++8o2AwqEmTJl30GwEuRfSgAHCqiEZQ7rzzTj355JMaNmyYrrrqKv3xj3/Us88+q/vuu0+S5HK5tHjxYj3xxBO64oorNHLkSD322GMqKirSjBkzJElXXnmlbrvtNs2fP1/r169Xa2urysrKNGvWLGbwAAAASREGlDVr1uixxx7T97//fdXV1amoqEh/93d/p2XLloX3eeihh9TU1KQFCxbo1KlTuummm7R9+3alpaWF99m0aZPKyso0ZcoUud1uzZw5U6tXr47euwIAAAnNZVmJN0js9XqVk5Oj+vp6eTwe0+UAxmza+7l+tPV9SdJnT083XA0A9CySv99ciwdIYIn3zwsA6B0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCpDAXC7TFQBAbBBQgATGxQIBOBUBBQAA2A4BBQAA2A4BBUhg9KAAcCoCCpDA6EEB4FQEFAAAYDsEFMCGfG0BrXvvv7T9/Rp90eAzXQ4AxF2y6QIAnO++l/br95/8Nfz9o9Ov1P/55mUGKwKA+GIEBbChs8OJJD3xmw8kSdUnmzXikd/oXys/M1AVAMQPAQWwoWuH5p63rfpks7654l1J0mOvH45zRQAQXwQUwIbqvC2SpJfvmxjeFgonIRZTeAA4GAEFsJlg0FJdR2Ps5flZ3e7X0hqMV0kAEHcEFMBmmvxtagu2j47kZaZ0u5+3pTVeJQFA3BFQAJs57Q9IktwuKTXZrV/OmxS+742ym+RJa59819DSZqQ+AIgHphkDNtPUEVAyU5Llcrl00xUD9buHb9HArFSl9UtSekqSvC1tamkNGK4UAGKHgALYTJOvfWQkPSUpvG1I/4zw1+n92rcTUAA4Gad4AJs53RE8MlO7/vdDWkdAOU1AAeBgBBTAZsIjKP2Surw/HFD8BBQAzkVAAWymuSN4ZKR0HVDSGUEBcAkgoAA2Ewoo3Z3iCfWm0IMCwMkIKIDNNHSsb5KV1k1A4RQPgEsAAQWwmfrT7QElJ71fl/d70pM79mMdFADORUABbOZCAWVgVqok6YvGlrjVBADxRkABbOZCAWVQdkdA6bheDwA4EQEFsBnvBQJK/4z26/N81cy1eAA4FwEFsJkLjaCELiB4qtkft5oAIN4IKIDNhC4CmNXNNOPcjPbgcrKJERQAzkVAAWzmzFL3XS/UNiCzvQflq2a/gpYVt7oAIJ4IKIDNNPlCK8l2PYIyKDtVSW6XAkGLRlkAjkVAAWym0dexUFs3p3iS3C4NzGrvQ/mykYACwJkIKICNtAaCamkNSpKyu1lJVpJy00ONsvShAHAmAgpgI6ErGUvdX4tHOtMo+xUzeQA4FAEFsJG/1J9ZHbZfUve/nqGAwggKAKcioAA2crqXVyjO65jJQw8KAKcioAA2Elqk7aoiT4/7DemfLkn6spFTPACciYAC2Mih/66XJGWkdL0GSkjoFA8AOBUBBbCR5CSXJOnYyeYe9/OkEVAAOBsBBbAR7+n2WTzTxxb1uF931+kBAKcgoAA2EppmnNXDGiiS5CGgAHA4AgpgI42hgNLNdXhCCjyp8SgHAIwhoAA2EgooPS3SJkmFnrR4lAMAxhBQABsJn+K5QEBxuVwaPiAjHiUBgBEEFMBGQgEls5srGZ8tNyMl1uUAgDEEFMBGQivJZlygB0WS+rMWCgAHI6AANtLsbw8o6f16E1AYQQHgXAQUwEZ624MiEVAAOBsBBbCRJl/7CMqF1kGRpAFZBBQAzkVAAWzC1xaQPxCUdOFpxpKUl0lAAeBcBBTAJhpb2sJf92YWD8vdA3AyAgpgE+FF2lKSlOR2XXD/XAIKAAcjoAA20djL6/CEcD0eAE4WcUA5fvy4/vZv/1YDBgxQenq6xo4dqz/84Q/h+y3L0rJlyzR48GClp6erpKREH3/8cafnOHnypGbPni2Px6Pc3FzNmzdPjY2NfX83QAILneLpTf+JRA8KAGeLKKB89dVXmjx5svr166ff/va3OnLkiP7pn/5J/fv3D++zYsUKrV69WuvXr9fevXuVmZmpadOmqaWlJbzP7NmzdfjwYe3YsUPbtm3Trl27tGDBgui9KyABhUZQsnsZUAZmccFAAM7VuyNhh2eeeUZDhw7Vhg0bwttGjhwZ/tqyLK1atUqPPvqo7rrrLknSyy+/rIKCAr322muaNWuWPvjgA23fvl379+/X+PHjJUlr1qzRHXfcoZUrV6qoqCga7wtIOLVenyTJH7B6tX9KMmdoAThXREe4X//61xo/frzuuece5efn67rrrtPPf/7z8P2ffvqpampqVFJSEt6Wk5OjSZMmqbKyUpJUWVmp3NzccDiRpJKSErndbu3du7ev7wdIWMu3HZEkffAXr+FKAMC8iALKn//8Z61bt05XXHGF3nrrLS1cuFA/+MEPtHHjRklSTU2NJKmgoKDT4woKCsL31dTUKD8/v9P9ycnJysvLC+9zLp/PJ6/X2+kGOE16yoWXtweAS0VEASUYDOr666/XU089peuuu04LFizQ/PnztX79+ljVJ0kqLy9XTk5O+DZ06NCYvh5gwtVDciRJi0uuMFwJAJgXUUAZPHiwRo8e3WnblVdeqWPHjkmSCgsLJUm1tbWd9qmtrQ3fV1hYqLq6uk73t7W16eTJk+F9zrV06VLV19eHb9XV1ZGUDSSE945+IUl67Y/HDVcCAOZFFFAmT56so0ePdtr20Ucfafjw4ZLaG2YLCwtVUVERvt/r9Wrv3r0qLi6WJBUXF+vUqVOqqqoK7/POO+8oGAxq0qRJXb5uamqqPB5PpxvgVNPGdB3UAeBSElFAeeCBB7Rnzx499dRT+uSTT7R582a9+OKLKi0tlSS5XC4tXrxYTzzxhH7961/r0KFD+u53v6uioiLNmDFDUvuIy2233ab58+dr3759+v3vf6+ysjLNmjWLGTy4pI0YkCFJ+ublg3r9mP879W9iVQ4AGBVRQJkwYYK2bt2qV155RWPGjNHy5cu1atUqzZ49O7zPQw89pEWLFmnBggWaMGGCGhsbtX37dqWlpYX32bRpk0aNGqUpU6bojjvu0E033aQXX3wxeu8KSDCWZemzvzZLkpKTLrzMfcj/Htfej5Xci6XxASCRuCzL6t2iCzbi9XqVk5Oj+vp6TvfAEZr9bRq97C1J0r//fbHGj8jr1eNq6lt0Q3mFkt0uffLUHbEsEQD6LJK/36z0BNjAySZ/+Otxw/v3sCcAXBoIKIANvPvhmZltLlfvT9dEsCsAJBQCCmADQ/pn9OnxCXeeFgAugIAC2MDp1oAkaWIve08AwOkIKIANNHVcyTgjleXuAUAioAC20OxvH0HJTInoAuOiBQWAUxFQABto8neMoHDBQACQREABbOH94/WSpBpvy0U9PgGXMwKAHhFQABvY9+lJSdKf/rvecCUAYA8EFMAGrh6SK0la8K3LInsgTSgAHIqAAtiAu2PFtf4ZKYYrAQB7IKAANnC6tb1JNvMipxnTgQLAaQgogA00+dqnGWdEOM0YAJyKgALYQPNFTjN20YQCwKEIKIANhBZqYx0UAGhHQAFsILySbOrFneJhGRQATkNAAWwgfC0eRlAAQBIBBTAuELTkawtKirxJ1kULCgCHIqAAhoUaZCVGUAAghIACGBbqP0lyu5SazK8kAEgEFMC4cP9JvyS5OGcDAJIIKIBx4SnGF7mKLAA4EQEFMCw8xfgiVpFlvAWAUxFQAMOaQqvI9nEExWIxFAAOQkABDGsOXYenH9fhAYAQAgpgWHOURlAAwEkIKIBhfepBYdYPAIcioACGNV3klYzPRQsKACchoACGhXtQWEUWAMIIKIBhZ9ZBoUkWAEIIKIBhoSbZzIsYQaEDBYBTEVAAw5pCIygX0SQLAE5FQAEMa/ZFqUk2GsUAgE0QUADD6EEBgPMRUADD+tSDQhMKAIcioACGhXpQ0plmDABhBBTAsNN9WEn2bFwsEICTEFAAw0IryWZyLR4ACCOgAIadWUmWJlkACCGgAAa1BoLyB4KSLm6asYul2gA4FAEFMCg0xVjqe5MsHSgAnISAAhgUapBNcruUksSvIwCEcEQEDAqtgZLRL0kuFjUBgDACCmBQc1/XQCHTAHAoAgpg0OnW0Ayevk8xZhkUAE5CQAEMOjOCwhRjADgbAQUw6LQ/OlcyBgCnIaAABnlPt/Xp8fTVAnAqAgpg0O//60tJUtXnX/X5uSxWQgHgIAQUwKCGlvYRlCH90w1XAgD2QkABDPKktTfHfrd4uOFKAMBeCCiAQV80+iRJg7JTL+rxtKAAcCoCCmDQlw1+SdLArIsLKGdjHRQATkJAAQz6a1N7QMnLTDFcCQDYCwEFMMSyLJ1qbg8oAzL7PoICAE5CQAEM8bUF1RZsPy+TlXZxK8lygUEATkVAAQzxB4Lhr1OS+FUEgLNxVAQM8bedCSj9khgJAYCzEVAAQ0IBJSXJzakaADgHAQUwpLXjFE9KMr+GAHAujoyAIaERlL6c3mHcBYBTEVAAQ3xt0R1BYaE2AE5CQAEM4RQPAHSPIyNgyJlTPPwaAsC5ODIChoTWQenLGihM/gHgVH0KKE8//bRcLpcWL14c3tbS0qLS0lINGDBAWVlZmjlzpmprazs97tixY5o+fboyMjKUn5+vBx98UG1tbX0pBUg4oVM8qdHqQRFNKACc46KPjPv379cLL7ygq6++utP2Bx54QG+88YZ+9atfaefOnTpx4oTuvvvu8P2BQEDTp0+X3+/X7t27tXHjRr300ktatmzZxb8LIAFxigcAundRR8bGxkbNnj1bP//5z9W/f//w9vr6ev3iF7/Qs88+q1tvvVXjxo3Thg0btHv3bu3Zs0eS9Pbbb+vIkSP65S9/qWuvvVa33367li9frrVr18rv90fnXQEJINqzeADASS7qyFhaWqrp06erpKSk0/aqqiq1trZ22j5q1CgNGzZMlZWVkqTKykqNHTtWBQUF4X2mTZsmr9erw4cPd/l6Pp9PXq+30w1IdK2B9lMyfQkoLlZCAeBQEV9CdcuWLTpw4ID2799/3n01NTVKSUlRbm5up+0FBQWqqakJ73N2OAndH7qvK+Xl5frxj38caamArUX7FA/roABwkoiOjNXV1br//vu1adMmpaWlxaqm8yxdulT19fXhW3V1ddxeG4gV1kEBgO5FdGSsqqpSXV2drr/+eiUnJys5OVk7d+7U6tWrlZycrIKCAvn9fp06darT42pra1VYWChJKiwsPG9WT+j70D7nSk1Nlcfj6XQDEt3ZFwsEAHQW0ZFxypQpOnTokA4ePBi+jR8/XrNnzw5/3a9fP1VUVIQfc/ToUR07dkzFxcWSpOLiYh06dEh1dXXhfXbs2CGPx6PRo0dH6W0B9sc6KADQvYh6ULKzszVmzJhO2zIzMzVgwIDw9nnz5mnJkiXKy8uTx+PRokWLVFxcrBtuuEGSNHXqVI0ePVr33nuvVqxYoZqaGj366KMqLS1VampqlN4WYH/+aF+LJyrPAgD2EHGT7IU899xzcrvdmjlzpnw+n6ZNm6bnn38+fH9SUpK2bdumhQsXqri4WJmZmZozZ45+8pOfRLsUwNZCIyisgwIA5+tzQHnvvfc6fZ+Wlqa1a9dq7dq13T5m+PDhevPNN/v60kBCi/YICgA4CUdGwBBm8QBA9zgyAoacmcUTnU5Xi4VQADgIAQUwhFM8ANA9joyAIdGYZgwATsWRETAkvNQ9IygAcB6OjIAh0V6ojQ4UAE5CQAEMYRYPAHSPIyNgCNfiAYDucWQEDGEWDwB0jyMjYIg/0N410pel7l3iaoEAnImAAhjibwtIiuLFAumSBeAgBBTAED9NsgDQLY6MgCGtbe1DHjTJAsD5ODIChkRjBMVFCwoAhyKgAIZEfZoxPSgAHISAAhgSGkFhqXsAOB9HRsAAy7JYqA0AesCRETCgNXDmfEyfelCiUQwA2BABBTAgdHpHklKjtQ4KTSgAHISAAhgQOr0j9W0lWQBwKo6MgAGhKxknuV1KcnOiBgDORUABDKBBFgB6xtERMMAXpSsZu85aqY1r8QBwEgIKYIA/SgEFAJyKoyNgQHiZe07xAECXODoCBjCCAgA94+gIGNAapRGUs+f/0IICwEkIKIABoRGUfslMMQaArhBQAAPoQQGAnnF0BAwIneJhFVkA6BpHR8CAcA9Kn9dBOfO1xUIoAByEgAIY0NrWHiY4xQMAXePoCBjg5xQPAPSIoyNgQLgHhXVQAKBLHB0BA8LTjJP6Ns347GvxAICTEFAAA6K1UNvZaJEF4CQEFMAAf6A9TtCDAgBd4+gIGMA6KADQM46OgAGtXCwQAHrE0REw4EwPSvSaXFmnDYCTEFAAA+hBAYCecXQEDGAdFADoGUdHwIAz66DwKwgAXeHoCBgQzR6U0FptFiuhAHAQAgpgQEtrQJKU1i/JcCUAYE8EFMCAZn97QElPIaAAQFcIKIABoRGUdEZQAKBLBBTAgNNRDCjhLhZaUAA4CAEFMCAUUNI4xQMAXSKgAAac9rfP4skgoABAlwgogAH0oABAzwgoQJxZlqVmf5ukKPWgdCyEQgsKACchoABx5g8EFexIE/SgAEDXCChAnLV09J9InOIBgO4QUIA4C83gSXa7uBYPAHSDoyMQZ+E1UKJ0eie0DopFEwoAByGgAHF22s8MHgC4EAIKEGenWztm8NAgCwDdIqAAcRZapI0RFADoHgEFiLPwMvdRDigWK6EAcBACChBnoYASrWXuXa4L7wMAiYaAAsRZC02yAHBBBBQgzrwtrZKkzNRkw5UAgH0RUIA4+6rZL0nKy0wxXAkA2BcBBYizJl/7KZ6sKI2guDqWamOhNgBOElFAKS8v14QJE5Sdna38/HzNmDFDR48e7bRPS0uLSktLNWDAAGVlZWnmzJmqra3ttM+xY8c0ffp0ZWRkKD8/Xw8++KDa2tr6/m6ABNDka/9Zz0ilBwUAuhNRQNm5c6dKS0u1Z88e7dixQ62trZo6daqamprC+zzwwAN644039Ktf/Uo7d+7UiRMndPfdd4fvDwQCmj59uvx+v3bv3q2NGzfqpZde0rJly6L3rgAba/K3B5RojaAAgBNFdITcvn17p+9feukl5efnq6qqSt/61rdUX1+vX/ziF9q8ebNuvfVWSdKGDRt05ZVXas+ePbrhhhv09ttv68iRI/qP//gPFRQU6Nprr9Xy5cv18MMP6x//8R+VksJ5eThb6BRPRgoBBQC606celPr6eklSXl6eJKmqqkqtra0qKSkJ7zNq1CgNGzZMlZWVkqTKykqNHTtWBQUF4X2mTZsmr9erw4cPd/k6Pp9PXq+30w1IVKFTPJnRWuq+Yx0UWlAAOMlFB5RgMKjFixdr8uTJGjNmjCSppqZGKSkpys3N7bRvQUGBampqwvucHU5C94fu60p5eblycnLCt6FDh15s2YBxTR3roDDNGAC6d9EBpbS0VO+//762bNkSzXq6tHTpUtXX14dv1dXVMX9NIFaaO3pQMmmSBYBuXdQ/4crKyrRt2zbt2rVLQ4YMCW8vLCyU3+/XqVOnOo2i1NbWqrCwMLzPvn37Oj1faJZPaJ9zpaamKjU19WJKBWwnPIuHHhQA6FZEIyiWZamsrExbt27VO++8o5EjR3a6f9y4cerXr58qKirC244ePapjx46puLhYklRcXKxDhw6prq4uvM+OHTvk8Xg0evTovrwXICFEfx2UdhYLoQBwkIiOkKWlpdq8ebNef/11ZWdnh3tGcnJylJ6erpycHM2bN09LlixRXl6ePB6PFi1apOLiYt1www2SpKlTp2r06NG69957tWLFCtXU1OjRRx9VaWkpoyRwvEDQivrFAgHAiSIKKOvWrZMk3XzzzZ22b9iwQd/73vckSc8995zcbrdmzpwpn8+nadOm6fnnnw/vm5SUpG3btmnhwoUqLi5WZmam5syZo5/85Cd9eydAAgj1n0g0yQJATyI6QvZmCDktLU1r167V2rVru91n+PDhevPNNyN5acARmjtm8CS5XUpN5koTANAdjpBAHJ1pkE2Sy+W6wN6RoQUFgJMQUIA4CjXIZkZxBk+Ucw4A2AIBBYij0HV4uFAgAPSMgALEUXiRNtZAAYAeEVCAOGoMneJhBAUAekRAAeKouaNJNlqLtEmSSzShAHAeAgoQR40scw8AvUJAAeKomSsZA0CvEFCAOGoKn+KJfg8K66AAcBICChBH4WnGrIMCAD0ioABxFO0rGQOAUxFQgDgKL3XPNGMA6BEBBYij0CkeRlAAoGcEFCCOQqd4otqD0vFfS3TJAnAOAgoQR2eWuucUDwD0hIACxFFoHZR0AgoA9IiAAsTRaQIKAPQKAQWIo/A6KP2iuQ5KexcKC7UBcBICChAnbYGgWlqDkqTsNGbxAEBPCChAnIRm8EhciwcALoSAAsRJg69VkpSS7FZKMr96ANATjpJAnIRGULJjNHpCCwoAJyGgAHHS2DGCkhXl/hOuFQjAiQgoQJw0tLDMPQD0FgEFiBOuZAwAvUdAAeLE29JxiidWPSgshALAQQgoQBz8+YtGPfmbDyRJBTlp0X1ymlAAOBBjzUAcTHl2Z3il1/zsVLPFAEACYAQFiIOzz77kpvczVwgAJAgCChBnORmxCSh0oABwEgIKEGeetOgGFFpQADgRAQWIsxxO8QDABRFQgDjzEFAA4IIIKECcxWoEhWVQADgJAQWIs2gHFJcr1IVCQgHgHAQUIM5Sk6P7axfKJ4ygAHASAgoQZ2dGPKL0fB3/JZ8AcBICChAH1wzNlSTdfd3Xov7cocDDCAoAJyGgAHHg7hjmuH3s4Kg/95kRFBIKAOcgoABxEOzIDrFYVI0eFABOREAB4qEjPbhj8hvHWrIAnIeAAsRBeAQlyg2y7c/Z/l9GUAA4CQEFiINgaAQlFgGl47/0oABwEgIKEAf0oABAZAgoQBxYMR1BoQcFgPMQUIA4CI1uuGOQJRhBAeBEBBQgDkI9KDFpku34Lz0oAJyEgALEwZmAEv3nZiVZAE5EQAHiIJQdYtGDcu5rAIATEFCAOIhPDwoRBYBzEFCAOIhpD0oooET9mQHAHAIKEAcx7UERPSgAnIeAAsTBmVM8sRtBYQwFgJMQUIA4sGK5kuw5rwEATkBAAeIgptfiCU0zjvozA4A5BBQgDsIjKDHpQen8GgDgBAQUIA5iusor04wBOBABBYiDuIygRP+pAcAYAgoQB6HwEIsrD7PUPQAnIqAAcRCfERQSCgDnIKAAcWDF9GKBoReJ/nMDgCkEFCAOYnqKp+M56xp8UX9uADCFgALEQTxGUBa/elAnm/w97tsWCKqlNRD9IgAgyggoQBycGUGJrfeP1/d4/4znf6/rl+9Qk68txpUAQN8YDShr167ViBEjlJaWpkmTJmnfvn0mywFiJpZNsmcLXGAqz/vHvWr2B/Tkmx/EthAA6CNjAeXVV1/VkiVL9Pjjj+vAgQO65pprNG3aNNXV1ZkqCYiZM4uoxTah9LRYW2sgGP56895jem7HRzGtBQD6wlhAefbZZzV//nzNnTtXo0eP1vr165WRkaF/+Zd/MVWSJMnXFpCvjXP0iC5vS/spFXcM8knwrFDS0wDK6XN6T7bsPxb9YgA4QjBoflpgsokX9fv9qqqq0tKlS8Pb3G63SkpKVFlZed7+Pp9PPt+ZGQperzcmdW1//y/6+18e6PK+/3n1YO366AtdUZCt1kBQf/rvns/192TKqHxVfMhIkZ2lJLk1KDtVx0+djuhx994wXD/+X1fJfVYS+bDmzM/rFw0+XTYoK2p1SlLgrANJV8eUEY/8psvH1Xp93d6XyIbmpav6ZGT/35zO7er6ZwPoyeN3jtbcySONvb6REZQvv/xSgUBABQUFnbYXFBSopqbmvP3Ly8uVk5MTvg0dOjQmdYX+lduVbX/6i7wtbar6/Ks+hRNJhJME4A8EIw4nkvSvez7XZT98U59+2aRnd3ykte9+ottW/b/w/WO+lhPNMiV1/sMTPGcIperzr6L+enZHODkf4QQXY+Puz4y+vpERlEgtXbpUS5YsCX/v9XpjElLuGTdElmXp1f3VOnDsVHj7vTcMV2FOmtwulzzpyar1+rS64uPzHp+S7Ja/LXje9nP96I4raVJ0uFtWvtfl9szU6P/KtQXP/Myd/fNnWZZmrtsd9dezu4du+4aO1jTo9YMnetxvzNc8OnLCe0n88Z4+drB+c+gvpss4T1ZqsjJSkljDx6a2fn+y0dc3ElAGDhyopKQk1dbWdtpeW1urwsLC8/ZPTU1VampqzOtyuVz6zoRh+s6EYRfcd8n/+Js+vdb8b13Wp8cjOizLCl/LRpJO+wP6sMarmvoW9c9MUTBo6aqv5ciT1v6rcva+occePlGvA59/pcdePxz3+iXprHyiRa/8UYte+WOX+00dXaC3j5z5nfvs6emxLs2on866znQJtrLWdAFAhIyc4klJSdG4ceNUUVER3hYMBlVRUaHi4mITJeES5Tpn3m96SpKuG9Zft48drBsuG6AbLx+onPR+crlc5+0b+v6qohzdWzxC994wvMfXevMH34xu8R0CvRgC2PngzXrxu+Nj8voAEAvGTvEsWbJEc+bM0fjx4zVx4kStWrVKTU1Nmjt3rqmSgD5ZPmOMls8Yo0DQkkvq1CgbS20XCCgr77lGwwdkxqUWAIgWYwHlO9/5jr744gstW7ZMNTU1uvbaa7V9+/bzGmeBRJMUp2AS8mXj+efvJ18+QKtnXacBWbE/NQoAsWC0SbasrExlZWUmSwAcZd+Ppig/O810GQDQZ1yLB3AQwgkApyCgAJeggZz6AWBzBBTgEvKv8ybqqiKPXpo7wXQpANAjl9XT1cVsyuv1KicnR/X19fJ4PKbLAYxq9LXp4X//kx6c9g2NGMhsHQD2Fcnf74RYSRZA97JSk7V29vWmywCAqOIUDwAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsB0CCgAAsJ2EvJqxZVmS2i/bDAAAEkPo73bo73hPEjKgNDQ0SJKGDh1quBIAABCphoYG5eTk9LiPy+pNjLGZYDCoEydOKDs7Wy6XK6rP7fV6NXToUFVXV8vj8UT1uZ2Gz6r3+Kx6j8+q9/iseo/PKjKx+rwsy1JDQ4OKiorkdvfcZZKQIyhut1tDhgyJ6Wt4PB5+iHuJz6r3+Kx6j8+q9/iseo/PKjKx+LwuNHISQpMsAACwHQIKAACwHQLKOVJTU/X4448rNTXVdCm2x2fVe3xWvcdn1Xt8Vr3HZxUZO3xeCdkkCwAAnI0RFAAAYDsEFAAAYDsEFAAAYDsEFAAAYDsElG589tlnmjdvnkaOHKn09HR9/etf1+OPPy6/32+6NFt68skndeONNyojI0O5ubmmy7GVtWvXasSIEUpLS9OkSZO0b98+0yXZ0q5du3TnnXeqqKhILpdLr732mumSbKu8vFwTJkxQdna28vPzNWPGDB09etR0Wba0bt06XX311eEFx4qLi/Xb3/7WdFkJ4emnn5bL5dLixYuNvD4BpRsffvihgsGgXnjhBR0+fFjPPfec1q9frx/+8IemS7Mlv9+ve+65RwsXLjRdiq28+uqrWrJkiR5//HEdOHBA11xzjaZNm6a6ujrTpdlOU1OTrrnmGq1du9Z0Kba3c+dOlZaWas+ePdqxY4daW1s1depUNTU1mS7NdoYMGaKnn35aVVVV+sMf/qBbb71Vd911lw4fPmy6NFvbv3+/XnjhBV199dXmirDQaytWrLBGjhxpugxb27Bhg5WTk2O6DNuYOHGiVVpaGv4+EAhYRUVFVnl5ucGq7E+StXXrVtNlJIy6ujpLkrVz507TpSSE/v37W//8z/9sugzbamhosK644gprx44d1re//W3r/vvvN1IHIygRqK+vV15enukykCD8fr+qqqpUUlIS3uZ2u1VSUqLKykqDlcFp6uvrJYnj0wUEAgFt2bJFTU1NKi4uNl2ObZWWlmr69Omdjl0mJOTFAk345JNPtGbNGq1cudJ0KUgQX375pQKBgAoKCjptLygo0IcffmioKjhNMBjU4sWLNXnyZI0ZM8Z0ObZ06NAhFRcXq6WlRVlZWdq6datGjx5tuixb2rJliw4cOKD9+/ebLuXS60F55JFH5HK5eryd+8fj+PHjuu2223TPPfdo/vz5hiqPv4v5rADEV2lpqd5//31t2bLFdCm29Y1vfEMHDx7U3r17tXDhQs2ZM0dHjhwxXZbtVFdX6/7779emTZuUlpZmupxLbwTlH/7hH/S9732vx30uu+yy8NcnTpzQLbfcohtvvFEvvvhijKuzl0g/K3Q2cOBAJSUlqba2ttP22tpaFRYWGqoKTlJWVqZt27Zp165dGjJkiOlybCslJUWXX365JGncuHHav3+/fvrTn+qFF14wXJm9VFVVqa6uTtdff314WyAQ0K5du/Szn/1MPp9PSUlJcavnkgsogwYN0qBBg3q17/Hjx3XLLbdo3Lhx2rBhg9zuS2vAKZLPCudLSUnRuHHjVFFRoRkzZkhqH46vqKhQWVmZ2eKQ0CzL0qJFi7R161a99957GjlypOmSEkowGJTP5zNdhu1MmTJFhw4d6rRt7ty5GjVqlB5++OG4hhPpEgwovXX8+HHdfPPNGj58uFauXKkvvvgifB//+j3fsWPHdPLkSR07dkyBQEAHDx6UJF1++eXKysoyW5xBS5Ys0Zw5czR+/HhNnDhRq1atUlNTk+bOnWu6NNtpbGzUJ598Ev7+008/1cGDB5WXl6dhw4YZrMx+SktLtXnzZr3++uvKzs5WTU2NJCknJ0fp6emGq7OXpUuX6vbbb9ewYcPU0NCgzZs367333tNbb71lujTbyc7OPq+PKTMzUwMGDDDT32Rk7lAC2LBhgyWpyxvON2fOnC4/q3fffdd0acatWbPGGjZsmJWSkmJNnDjR2rNnj+mSbOndd9/t8mdozpw5pkuzne6OTRs2bDBdmu3cd9991vDhw62UlBRr0KBB1pQpU6y3337bdFkJw+Q0Y5dlWVY8AxEAAMCFXFpNFQAAICEQUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO0QUAAAgO38f1O/yy1T7j6AAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "dataset = catalog.level1.sources(url=\"s3://mast/level1/shots/30420.zarr/amc\").to_dask()\n", "plt.plot(dataset['time'], dataset['plasma_current'])" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "mast-book", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.9" } }, "nbformat": 4, "nbformat_minor": 0 }