diff --git a/000039/AllenInstitute/Create_manifest.ipynb b/000039/AllenInstitute/Create_manifest.ipynb index 943d718..b444085 100644 --- a/000039/AllenInstitute/Create_manifest.ipynb +++ b/000039/AllenInstitute/Create_manifest.ipynb @@ -11,6 +11,45 @@ "### This notebook creates a manifest that shows all of the assets within this dandiset, organized by their transgenic lines and recording locations" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000039/AllenInstitute/Create_manifest.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"dandi>=0.60\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "markdown", "id": "5b1f2c68-262f-4d21-84fa-954d8a2acfb1", @@ -88,7 +127,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 100/100 [01:49<00:00, 1.10s/it]\n" + "100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 100/100 [01:49<00:00, 1.10s/it]\n" ] } ], diff --git a/000055/BruntonLab/peterson21/Fig_coarse_labels.ipynb b/000055/BruntonLab/peterson21/Fig_coarse_labels.ipynb index bdd5473..fb6b121 100644 --- a/000055/BruntonLab/peterson21/Fig_coarse_labels.ipynb +++ b/000055/BruntonLab/peterson21/Fig_coarse_labels.ipynb @@ -7,6 +7,62 @@ "# Plot example coarse behavioral labelling trace" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000055/BruntonLab/peterson21/Fig_coarse_labels.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook and fetches helper files that are colocated with the notebook in the repo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"seaborn>=0.13\" \\\n", + " \"scipy>=1.11\" \\\n", + " \"tqdm>=4.66\" \\\n", + " \"ipywidgets>=8\" \\\n", + " \"natsort>=8\" \\\n", + " \"ndx-events<0.3\" \\\n", + " \"nilearn>=0.10\" \\\n", + " \"nwbwidgets>=0.11\" \\\n", + " \"zarr<3\" \\\n", + " \"ipython_genutils\"\n", + "!curl -sL -o plot_utils.py https://raw.githubusercontent.com/dandi/example-notebooks/master/000055/BruntonLab/peterson21/plot_utils.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/000055/BruntonLab/peterson21/dashboard.ipynb b/000055/BruntonLab/peterson21/dashboard.ipynb index 795d4a2..69078b3 100644 --- a/000055/BruntonLab/peterson21/dashboard.ipynb +++ b/000055/BruntonLab/peterson21/dashboard.ipynb @@ -7,15 +7,65 @@ "This notebook demonstrates how to run the dashboard, streaming data directly from the DANDI Archive. It is recommended to run this notebook on the [DANDI Hub](hub.dandiarchive.org) using the \"NWBStream\" environment." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000055/BruntonLab/peterson21/dashboard.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook, including `brunton-lab-to-nwb` from its GitHub repo (it is not on PyPI)." + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "%pip install dandi\n", - "%pip install git+https://github.com/catalystneuro/brunton-lab-to-nwb.git\n", - "%pip install nilearn" + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "# NOTE: this notebook uses `driver='ros3'` to stream NWB from S3 \u2014 Colab's\n", + "# prebuilt h5py includes ROS3, but pip-installed h5py on other platforms may not.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"seaborn>=0.13\" \\\n", + " \"scipy>=1.11\" \\\n", + " \"tqdm>=4.66\" \\\n", + " \"ipywidgets>=8\" \\\n", + " \"natsort>=8\" \\\n", + " \"ndx-events<0.3\" \\\n", + " \"nilearn>=0.10\" \\\n", + " \"nwbwidgets>=0.11\" \\\n", + " \"zarr<3\" \\\n", + " \"ipython_genutils\" \\\n", + " \"bqplot>=0.12\" \\\n", + " \"plotly>=5\" \\\n", + " \"joblib>=1\" \\\n", + " \"git+https://github.com/catalystneuro/brunton-lab-to-nwb.git\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." ] }, { diff --git a/000108/chunglab/demo/2021-09-27_dandi-demo.ipynb b/000108/chunglab/demo/2021-09-27_dandi-demo.ipynb index 914f521..45d6797 100644 --- a/000108/chunglab/demo/2021-09-27_dandi-demo.ipynb +++ b/000108/chunglab/demo/2021-09-27_dandi-demo.ipynb @@ -25,6 +25,53 @@ "See the function, \"read\", below for how to simply read an arbitrary subvolume with stitching." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000108/chunglab/demo/2021-09-27_dandi-demo.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"dandi>=0.60\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"hdf5plugin>=4\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"Pillow>=10\" \\\n", + " \"scikit-image>=0.22\" \\\n", + " \"neuroglancer>=2.39\" \\\n", + " \"requests>=2.31\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "code", "execution_count": 1, diff --git a/000108/chunglab/demo/dashboard.ipynb b/000108/chunglab/demo/dashboard.ipynb index 6022314..6be8306 100644 --- a/000108/chunglab/demo/dashboard.ipynb +++ b/000108/chunglab/demo/dashboard.ipynb @@ -327,6 +327,50 @@ "output_notebook()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000108/chunglab/demo/dashboard.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"dandi>=0.60\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"seaborn>=0.13\" \\\n", + " \"bokeh>=3.4\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "markdown", "id": "6f33476a-fa4e-408e-950a-3ed9a542b0c7", diff --git a/000108/chunglab/demo/validate_lev6.ipynb b/000108/chunglab/demo/validate_lev6.ipynb index d012772..1966da3 100644 --- a/000108/chunglab/demo/validate_lev6.ipynb +++ b/000108/chunglab/demo/validate_lev6.ipynb @@ -17,6 +17,51 @@ "import matplotlib.pyplot as plt" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000108/chunglab/demo/validate_lev6.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"dandi>=0.60\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"zarr<3\" \\\n", + " \"s3fs>=2024.2\" \\\n", + " \"botocore>=1.34\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **⚠️ Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime → Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "code", "execution_count": 9, @@ -183,822 +228,13 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "db78ec3b-cec1-405c-ba41-79da361177d8", "metadata": { "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "subject: MITU01\n", - "all samples: {'170', '67', '11', '153', '32', '44', '166', '58', '116', '126', '151', '100', '123', '97', '20', '56', '53', '88', '85', '19', '92', '41', '164', '154', '127', '114', '102', '39', '40', '160', '60', '121', '156', '118', '86', '30', '57', '64', '125', '101', '6', '10', '112', '150', '152', '163', '90', '120', '83', '107', '104', '178', '26', '9', '22', '72', '25', '109', '13', '169', '59', '28', '98', '105', '99', '33', '167', '113', '157', '94', '128', '8', '103', '81', '159', '21', '168', '65', '172', '38', '117', '37', '165', '147', '73', '110', '17', '12', '162', '50', '124', '68', '179', '77', '42', '108', '16', '176R2', '161', '155', '158', '122', '150R2', '76', '91', '34', '23', '62', '115', '69', '15', '24', '36'}\n", - "SAMPLE: 0 170\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_142/1960209085.py:5: FutureWarning: Indexing with multiple keys (implicitly converted to a tuple of keys) will be deprecated, use a list instead.\n", - " df_sub_agg = df_sub.groupby(['sample', 'stain', 'ses'])[\"chunk\", \"path\"].agg(list)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 1 67\n", - "errors YO {'Zeros': [4], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [3], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 2 11\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 3 153\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 4 32\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 5 44\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 6 166\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 7 58\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 8 116\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 9 126\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 10 151\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 11 100\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 12 123\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 13 97\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 14 20\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 15 56\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 16 53\n", - "errors LEC {'Zeros': [0, 4, 9], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [2], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [2, 5, 10], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 17 88\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 18 85\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "SAMPLE: 19 19\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 20 92\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 21 41\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 22 164\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 23 154\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 24 127\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 25 114\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 26 102\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 27 39\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 28 40\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [4], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 29 160\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 30 60\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 31 121\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 32 156\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 33 118\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 34 86\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 35 30\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 36 57\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 37 64\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 38 125\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 39 101\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 40 6\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 41 10\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [2, 3], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [0], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 42 112\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 43 150\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 44 152\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 45 163\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 46 90\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 47 120\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 48 83\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "SAMPLE: 49 107\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 50 104\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 51 178\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 52 26\n", - "errors LEC {'Zeros': [2, 3], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [8], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 53 9\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 54 22\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 55 72\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 56 25\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [7], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 57 109\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 58 13\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 59 169\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 60 59\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 61 28\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 62 98\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 63 105\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 64 99\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 65 33\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 66 167\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 67 113\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 68 157\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 69 94\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 70 128\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 71 8\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [3], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 72 103\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 73 81\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 74 159\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 75 21\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 76 168\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 77 65\n", - "errors LEC {'Zeros': [1, 3, 4, 5, 7, 8, 9], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [1, 5, 7, 8], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [5, 8], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 78 172\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 79 38\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 80 117\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 81 37\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 82 165\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 83 147\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 84 73\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 85 110\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 86 17\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 87 12\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 88 162\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 89 50\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 90 124\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 91 68\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 92 179\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 93 77\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 94 42\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 95 108\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 96 16\n", - "errors LEC {'Zeros': [6], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 97 176R2\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors CR {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 98 161\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 99 155\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors CR {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 100 158\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 101 122\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 102 150R2\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors CR {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 103 76\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 104 91\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 105 34\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 106 23\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [1], 'Different shapes': None}\n", - "errors NN {'Zeros': [0], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 107 62\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 108 115\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 109 69\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 110 15\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "SAMPLE: 111 24\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [3], 'ClientError': [2, 5], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 112 36\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': True}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "subject: MITU01h3\n", - "all samples: {'6', '16', '12', '10', '8', '20', '14', '4', '26', '9', '18', '1', '15', '5', '7', '32', '25', '19'}\n", - "SAMPLE: 0 6\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_142/1960209085.py:5: FutureWarning: Indexing with multiple keys (implicitly converted to a tuple of keys) will be deprecated, use a list instead.\n", - " df_sub_agg = df_sub.groupby(['sample', 'stain', 'ses'])[\"chunk\", \"path\"].agg(list)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 1 16\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [4], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [0], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [7], 'Different shapes': None}\n", - "SAMPLE: 2 12\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 3 10\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [0], 'Different shapes': None}\n", - "SAMPLE: 4 8\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 5 20\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 6 14\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 7 4\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 8 26\n", - "errors SST {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 9 9\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 10 18\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 11 1\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 12 15\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [9], 'Different shapes': None}\n", - "SAMPLE: 13 5\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 14 7\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 15 32\n", - "errors NPY {'Zeros': [5, 6], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [6], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 16 25\n", - "errors SST {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 17 19\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [0], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "subject: SChmi53\n", - "all samples: {'6', '28', '8', '10', '14', '4', '3', '9', '13', '21', '11', '15', '24', '5', '32', '29', '25', '19'}\n", - "SAMPLE: 0 6\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_142/1960209085.py:5: FutureWarning: Indexing with multiple keys (implicitly converted to a tuple of keys) will be deprecated, use a list instead.\n", - " df_sub_agg = df_sub.groupby(['sample', 'stain', 'ses'])[\"chunk\", \"path\"].agg(list)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 1 28\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 2 8\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 3 10\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 4 14\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 5 4\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 6 3\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 7 9\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 8 13\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 9 21\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 10 11\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 11 15\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 12 24\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 13 5\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 14 32\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 15 29\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 16 25\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 17 19\n", - "errors LEC {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors NN {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "subject: U01hm15x\n", - "all samples: {'mEhmAD03x15R4', 'mEhmAD03x15R2', 'mEhm11206x15R3', 'mEhm11206x15R2', 'mEhmAD021x15R2', 'mEhmAD032x15R4', 'mEhmAD032x15R2', 'mEhm11206x15R4', 'mEhmAD032x15R3', 'mEhmAD06x15R2', 'mEhmAD031x15R2'}\n", - "SAMPLE: 0 mEhmAD03x15R4\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_142/1960209085.py:5: FutureWarning: Indexing with multiple keys (implicitly converted to a tuple of keys) will be deprecated, use a list instead.\n", - " df_sub_agg = df_sub.groupby(['sample', 'stain', 'ses'])[\"chunk\", \"path\"].agg(list)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "errors GFAP {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors PV {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 1 mEhmAD03x15R2\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors SST {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 2 mEhm11206x15R3\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors SST {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 3 mEhm11206x15R2\n", - "errors ABETA {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 4 mEhmAD021x15R2\n", - "errors ABETA {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 5 mEhmAD032x15R4\n", - "errors GFAP {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors PV {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 6 mEhmAD032x15R2\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors SST {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 7 mEhm11206x15R4\n", - "errors CR {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors PTAU {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 8 mEhmAD032x15R3\n", - "errors CR {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors PTAU {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 9 mEhmAD06x15R2\n", - "errors ABETA {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 10 mEhmAD031x15R2\n", - "errors ABETA {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "subject: mEhm\n", - "all samples: {'ADO6R4', 'ADO6R6', 'ADO6R3', 'controlO6R4', 'ADO6R2', 'ADO6R5', 'controlO6R7', '112O6R3', '112O6R2', 'ADO6R8', '112O6R8'}\n", - "SAMPLE: 0 ADO6R4\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_142/1960209085.py:5: FutureWarning: Indexing with multiple keys (implicitly converted to a tuple of keys) will be deprecated, use a list instead.\n", - " df_sub_agg = df_sub.groupby(['sample', 'stain', 'ses'])[\"chunk\", \"path\"].agg(list)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "errors GFAP {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors PV {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 1 ADO6R6\n", - "errors ABETA {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors CD31 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 2 ADO6R3\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors SST {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 3 controlO6R4\n", - "errors GFAP {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors PV {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 4 ADO6R2\n", - "errors ABETA {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 5 ADO6R5\n", - "errors CR {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors PTAU {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 6 controlO6R7\n", - "errors GFAP {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors CD31 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 7 112O6R3\n", - "errors NPY {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors SST {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 8 112O6R2\n", - "errors ABETA {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors IBA1 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 9 ADO6R8\n", - "errors MBP {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors SMI {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "SAMPLE: 10 112O6R8\n", - "errors MBP {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors SMI312 {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n", - "errors YO {'Zeros': [], 'ClientError': [], 'No level 6': [], 'Different shapes': None}\n" - ] - } - ], - "source": [ - "for group in df.groupby(\"subdir\"):\n", - " sub = group[0]\n", - " print(f\"subject: {sub}\")\n", - " df_sub = df[(df[\"sub\"] == sub)]\n", - " df_sub_agg = df_sub.groupby(['sample', 'stain', 'ses'])[\"chunk\", \"path\"].agg(list)\n", - " df_sub_agg = pd.concat((df_sub_agg.index.to_frame(), df_sub_agg), axis=1)\n", - "\n", - " df_sub_agg[\"errors\"] = None\n", - " samples = set(df_sub_agg[\"sample\"].tolist())\n", - " print(\"all samples: \", samples)\n", - " for ii, sample in enumerate(samples):\n", - " print(\"SAMPLE: \", ii, sample) \n", - " for stain in set(df_sub_agg.loc[sample][\"stain\"].tolist()):\n", - " for ses in df_sub_agg.loc[sample].loc[stain][\"ses\"].tolist():\n", - " url_list = get_url(ds, sub, sample, stain, ses)\n", - " _, arrays_lev6_errors = arrays3D_chunks_check(url_list, level=6)\n", - " print(\"errors\", stain, arrays_lev6_errors)\n", - " df_sub_agg.loc[sample].loc[stain].loc[ses][\"errors\"] = arrays_lev6_errors\n", - "\n", - "\n", - " df_sub_agg.to_csv(f'dferr_sub-{sub}.csv')" - ] + "outputs": [], + "source": "for group in df.groupby(\"subdir\"):\n sub = group[0]\n print(f\"subject: {sub}\")\n df_sub = df[(df[\"sub\"] == sub)]\n df_sub_agg = df_sub.groupby(['sample', 'stain', 'ses'])[[\"chunk\", \"path\"]].agg(list)\n df_sub_agg = pd.concat((df_sub_agg.index.to_frame(), df_sub_agg), axis=1)\n\n df_sub_agg[\"errors\"] = None\n samples = set(df_sub_agg[\"sample\"].tolist())\n print(\"all samples: \", samples)\n for ii, sample in enumerate(samples):\n print(\"SAMPLE: \", ii, sample) \n for stain in set(df_sub_agg.loc[sample][\"stain\"].tolist()):\n for ses in df_sub_agg.loc[sample].loc[stain][\"ses\"].tolist():\n url_list = get_url(ds, sub, sample, stain, ses)\n _, arrays_lev6_errors = arrays3D_chunks_check(url_list, level=6)\n print(\"errors\", stain, arrays_lev6_errors)\n df_sub_agg.loc[sample].loc[stain].loc[ses][\"errors\"] = arrays_lev6_errors\n\n\n df_sub_agg.to_csv(f'dferr_sub-{sub}.csv')" }, { "cell_type": "code", @@ -1030,4 +266,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/000363/MAP/demo/browse_map_ephys_data.ipynb b/000363/MAP/demo/browse_map_ephys_data.ipynb index d2d492b..9ecf47b 100644 --- a/000363/MAP/demo/browse_map_ephys_data.ipynb +++ b/000363/MAP/demo/browse_map_ephys_data.ipynb @@ -40,6 +40,56 @@ "[https://dandiarchive.org/dandiset/000363?pos=1](https://dandiarchive.org/dandiset/000363?pos=1)." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000363/MAP/demo/browse_map_ephys_data.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.5,<2.6\" \\\n", + " \"hdmf>=3.11,<3.12\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"numpy>=1.24,<2\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"zarr<3\" \\\n", + " \"ipython_genutils\" \\\n", + " \"nwbwidgets>=0.11\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "code", "execution_count": 1, @@ -86,7 +136,7 @@ "version_minor": 0 }, "text/plain": [ - "Panel(children=(HBox(children=(VBox(children=(RadioButtons(layout=Layout(width='100px'), options=('Local dir',…" + "Panel(children=(HBox(children=(VBox(children=(RadioButtons(layout=Layout(width='100px'), options=('Local dir',\u2026" ] }, "execution_count": 2, @@ -409,7 +459,7 @@ " \n", " \n", "\n", - "
660 rows × 14 columns
\n", + "660 rows \u00d7 14 columns
\n", "" ], "text/plain": [ @@ -807,7 +857,7 @@ " \n", " \n", "\n", - "2116 rows × 36 columns
\n", + "2116 rows \u00d7 36 columns
\n", "" ], "text/plain": [ @@ -1346,7 +1396,7 @@ " \n", " \n", "\n", - "534 rows × 37 columns
\n", + "534 rows \u00d7 37 columns
\n", "" ], "text/plain": [ diff --git a/000402/MICrONS/coregistration/microns_nwb_coreg_notebook.ipynb b/000402/MICrONS/coregistration/microns_nwb_coreg_notebook.ipynb index 7ccd931..e8e1861 100644 --- a/000402/MICrONS/coregistration/microns_nwb_coreg_notebook.ipynb +++ b/000402/MICrONS/coregistration/microns_nwb_coreg_notebook.ipynb @@ -24,6 +24,61 @@ "OR OTHER DEALINGS IN THE SOFTWARE." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000402/MICrONS/coregistration/microns_nwb_coreg_notebook.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook and fetches helper files that are colocated with the notebook in the repo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"tqdm>=4.66\" \\\n", + " \"ipywidgets>=8\" \\\n", + " \"caveclient>=8\"\n", + "!mkdir -p ng_visualization\n", + "!curl -sL -o ng_utils.py https://raw.githubusercontent.com/dandi/example-notebooks/master/000402/MICrONS/coregistration/ng_utils.py\n", + "!curl -sL -o ng_visualization/functional_base_state.json https://raw.githubusercontent.com/dandi/example-notebooks/master/000402/MICrONS/coregistration/ng_visualization/functional_base_state.json\n", + "!curl -sL -o ng_visualization/structural_base_state.json https://raw.githubusercontent.com/dandi/example-notebooks/master/000402/MICrONS/coregistration/ng_visualization/structural_base_state.json\n", + "!curl -sL -o ScanUnit.pkl https://raw.githubusercontent.com/dandi/example-notebooks/master/000402/MICrONS/coregistration/ScanUnit.pkl" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "attachments": {}, "cell_type": "markdown", @@ -673,7 +728,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|█████████████████████████████████████████████████████████████████████████████████████| 8/8 [00:23<00:00, 2.89s/it]\n" + "100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 8/8 [00:23<00:00, 2.89s/it]\n" ] } ], @@ -931,7 +986,7 @@ " return func(args[0], **pargs)\n", "/Users/xenesd1/miniconda3/envs/neurodatarehack2023/lib/python3.11/site-packages/hdmf/utils.py:668: UserWarning: Ignoring cached namespace 'hdmf-experimental' version 0.2.0 because version 0.5.0 is already loaded.\n", " return func(args[0], **pargs)\n", - "100%|█████████████████████████████████████████████████████████████████████████████████████| 8/8 [00:16<00:00, 2.10s/it]\n" + "100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 8/8 [00:16<00:00, 2.10s/it]\n" ] } ], diff --git a/000402/MICrONS/demo/000402_microns_demo.ipynb b/000402/MICrONS/demo/000402_microns_demo.ipynb index ebe25ce..e17bca3 100644 --- a/000402/MICrONS/demo/000402_microns_demo.ipynb +++ b/000402/MICrONS/demo/000402_microns_demo.ipynb @@ -24,6 +24,28 @@ "* [Downloading NWB files](#download-nwb)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000402/MICrONS/demo/000402_microns_demo.ipynb)" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "## Installing requirements\n\nThe cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n# Installs are scoped to the active interpreter via `uv pip install --system`,\n# which is required because Colab runs the kernel outside a virtualenv.\n!pip install -q uv\n!uv pip install --system \\\n \"pynwb>=2.8,<3\" \\\n \"hdmf<4\" \\\n \"dandi>=0.60\" \\\n \"h5py>=3.10\" \\\n \"fsspec>=2024.2\" \\\n \"aiohttp>=3.9\" \\\n \"numpy>=1.24\" \\\n \"matplotlib>=3.7\" \\\n \"nwbwidgets>=0.11\" \\\n \"zarr<3\" \\\n \"ipython_genutils\"" + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": "> **⚠️ Restart runtime after install**\n>\n> The install may upgrade packages already loaded in the kernel. Go to **Runtime → Restart session**, then **Run all cells below** (skip this install cell on re-run)." + }, { "cell_type": "markdown", "id": "65f82552", @@ -2472,4 +2494,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/000409/IBL/01_list_datasets.ipynb b/000409/IBL/01_list_datasets.ipynb index 43d0423..eee48e0 100644 --- a/000409/IBL/01_list_datasets.ipynb +++ b/000409/IBL/01_list_datasets.ipynb @@ -1,5 +1,47 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000409/IBL/01_list_datasets.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"dandi>=0.60\" \\\n", + " \"ONE-api>=3\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"pandas>=2.0\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "code", "execution_count": 2, diff --git a/000409/IBL/02_behaviour_psychometric_curve.ipynb b/000409/IBL/02_behaviour_psychometric_curve.ipynb index 1c0e60b..72b25bf 100644 --- a/000409/IBL/02_behaviour_psychometric_curve.ipynb +++ b/000409/IBL/02_behaviour_psychometric_curve.ipynb @@ -1,5 +1,53 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000409/IBL/02_behaviour_psychometric_curve.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"seaborn>=0.13\" \\\n", + " \"matplotlib>=3.7\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "code", "execution_count": 1, diff --git a/000409/IBL/03_analysis_Imbizo_2023.ipynb b/000409/IBL/03_analysis_Imbizo_2023.ipynb index bf145b5..a8e2939 100644 --- a/000409/IBL/03_analysis_Imbizo_2023.ipynb +++ b/000409/IBL/03_analysis_Imbizo_2023.ipynb @@ -1,5 +1,57 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000409/IBL/03_analysis_Imbizo_2023.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook, including `brainwidemap`/`brainbox` from the `paper-brain-wide-map` GitHub repo (not on PyPI)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"scipy>=1.11\" \\\n", + " \"scikit-learn>=1.4\" \\\n", + " \"ibllib>=2,<3\" \\\n", + " \"iblatlas\" \\\n", + " \"git+https://github.com/int-brain-lab/paper-brain-wide-map.git\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "markdown", "metadata": { @@ -30,7 +82,7 @@ "source": [ "### What are the data of interest\n", "\n", - "#### Choice 💭\n", + "#### Choice \ud83d\udcad\n", "In this notebook, we will teach you how to run analysis, that will revolve around a variable of interest: the `choice`.\n", "\n", "The choice is the decision the mouse makes to turn the wheel clock-wise (`CW`) or counter-clock-wise (`CCW`), in order to correctly bring a visual stimulus presented on the `left` or on the `right` to the center of the screen respectively.\n", @@ -40,14 +92,14 @@ "* value `+1` = CW (right), painted in blue\n", "* value `-1` = CCW (left), painted in red\n", "\n", - "#### Wheel ⭕\n", + "#### Wheel \u2b55\n", "\n", "As we will want to predict the choice of the animal, we need to chose a time window that is not contaminated by movement. To check for such lack of movement, you will explore the `wheel` data, and plot its speed and position.\n", "\n", - "#### First movement 🔽\n", + "#### First movement \ud83d\udd3d\n", "The time window for analysis will be taken **before** the turning of the wheel has started (as such turning is in itself indicative of the choice) . You will use the onset of the `first movement` as detected on the wheel trace to define your time window of interest.\n", "\n", - "#### Spikes and clusters 🧠\n", + "#### Spikes and clusters \ud83e\udde0\n", "You will use the `spikes` from selected single-units (clusters). We will call these `units` throughout the text." ] }, @@ -57,23 +109,23 @@ "id": "9XLzBIEtiv2C" }, "source": [ - "### What questions will each analysis answer\n", + "###\u00a0What questions will each analysis answer\n", "\n", "All of the analysis below use the neural activity in a time window of ~100ms before the first movement.\n", "\n", - "#### Encoding 🔛\n", + "#### Encoding \ud83d\udd1b\n", "If you were to rely on a single unit to predict the choice value, which one would you chose, and what would be the magnitude of the difference between its response to left or right choices?\n", "- Note: This analysis concatenates the activity across trials\n", "\n", - "#### Manifold 📈\n", + "####\u00a0Manifold \ud83d\udcc8\n", "Using all units in a given brain region, when exactly would you be able to differentiate between the left or right choice in our time window of interest?\n", "- Note: This analysis concatenates the activity across trials\n", "\n", - "#### Decoding ⏭\n", + "#### Decoding \u23ed\n", "For a given trial, if you were a downstream neuron receiving the activity from all units in a given region as input, would you be able to differentiate left versus right choices?\n", "\n", "\n", - "#### Explore further 🌍\n", + "#### Explore further \ud83c\udf0d\n", "We will give at the end a set of ideas for you to explore the data further." ] }, @@ -168,7 +220,7 @@ "id": "T0ZD7x99UxJH" }, "source": [ - "## Getting help\n" + "##\u00a0Getting help\n" ] }, { @@ -258,7 +310,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 31.470260620117188/31.470260620117188 [00:04<00:00, 7.51it/s]\n" + "100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 31.470260620117188/31.470260620117188 [00:04<00:00, 7.51it/s]\n" ] }, { @@ -272,7 +324,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "100%|██████████| 3.848422050476074/3.848422050476074 [00:00<00:00, 4.45it/s]\n" + "100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 3.848422050476074/3.848422050476074 [00:00<00:00, 4.45it/s]\n" ] }, { @@ -295,7 +347,7 @@ "from pynwb import NWBHDF5IO\n", "from dandi.dandiapi import DandiAPIClient\n", "\n", - "# IBL\n", + "#\u00a0IBL\n", "from brainbox.population.decode import get_spike_counts_in_bins\n", "from brainbox.ephys_plots import plot_brain_regions\n", "from brainbox.behavior.wheel import interpolate_position, velocity_filtered\n", @@ -304,7 +356,7 @@ "from brainwidemap import bwm_query\n", "from brainwidemap.imbizo.encoding_functions import get_choice_time_shuffle\n", "\n", - "# Generic\n", + "#\u00a0Generic\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", @@ -332,7 +384,7 @@ "id": "fn6nYpZyvOke" }, "source": [ - "🔀 TODO How to search on DANDI for available sessions.\n" + "\ud83d\udd00 TODO How to search on DANDI for available sessions.\n" ] }, { @@ -381,7 +433,7 @@ "file = h5py.File(file_system)\n", "io = NWBHDF5IO(file=file, load_namespaces=True)\n", "\n", - "# Read in the NWB file\n", + "#\u00a0Read in the NWB file\n", "nwb = io.read()" ] }, @@ -442,7 +494,7 @@ "# Load spike data\n", "units = nwb.units.to_dataframe()\n", "\n", - "# Show first 3 rows of dataframe\n", + "#\u00a0Show first 3 rows of dataframe\n", "print(units.head(3).to_markdown())" ] }, @@ -624,7 +676,7 @@ "good_units = units[(units.label == 1) & (units.probe_name == probe_label)]\n", "# We sort by unit number\n", "good_units = good_units.sort_values('unit_name')\n", - "# Reset the index so we start from 0\n", + "#\u00a0Reset the index so we start from 0\n", "good_units = good_units.reset_index()\n", "\n", "# ---------------------------------------------------\n", @@ -670,7 +722,7 @@ "\n", "spikes_list = list()\n", "# We do not know how many spikes there is per row (this is not the spike count !)\n", - "# Loop over each unit\n", + "#\u00a0Loop over each unit\n", "for index, spk in enumerate(input_list):\n", " # Get the number of spikes per cluster\n", " clu_no = good_units.unit_name[index]\n", @@ -737,7 +789,7 @@ "# Load channels data\n", "channels_all = nwb.ec_electrodes.to_dataframe()\n", "\n", - "# Show names in dataframe\n", + "#\u00a0Show names in dataframe\n", "print(channels_all['channel_name'])" ] }, @@ -759,7 +811,7 @@ }, "outputs": [], "source": [ - "# We select only the channels from the NeuropixelsShank00 -- Note this is different than probe_label\n", + "#\u00a0We select only the channels from the NeuropixelsShank00 -- Note this is different than probe_label\n", "# And the channels in the AP band\n", "channels = channels_all[(channels_all['group_name'] == 'NeuropixelsShank00') &\n", " (channels_all['channel_name'].str.startswith('AP'))].copy()\n", @@ -804,7 +856,7 @@ "# Load trial data\n", "trials = nwb.trials.to_dataframe()\n", "\n", - "# Show first 3 rows of dataframe\n", + "#\u00a0Show first 3 rows of dataframe\n", "print(trials.head(3).to_markdown())" ] }, @@ -907,7 +959,7 @@ "wheel = wheel.apply(np.float32)\n", "\n", "\n", - "# Show first 3 rows of dataframe\n", + "#\u00a0Show first 3 rows of dataframe\n", "print(wheel.head(3).to_markdown())" ] }, @@ -921,7 +973,7 @@ "\n", "`velocity_df = nwb.modules['behavior'].data_interfaces['WheelVelocity'].to_dataframe()`\n", "\n", - "🔴 however this data has been processed differently than what is done at the IBL, and therefore **we recommend you to apply the filtering functions above** on the raw wheel data to obtain wheel position, speed, velocity and acceleration." + "\ud83d\udd34 however this data has been processed differently than what is done at the IBL, and therefore **we recommend you to apply the filtering functions above** on the raw wheel data to obtain wheel position, speed, velocity and acceleration." ] }, { @@ -1127,7 +1179,7 @@ "# Note: the cluster_id returned are stricty increasing, as we have in the dataframe:\n", "print(f'the cluster_id returned :\\n\\n {cluster_id} \\n\\n is in the same order as in the dataframe :\\n')\n", "print(good_units.unit_name.to_numpy().astype('int'))\n", - "# Validate\n", + "#\u00a0Validate\n", "np.testing.assert_equal(cluster_id, good_units.unit_name.to_numpy().astype('int'))\n", "\n", "# Compute rate (for all clusters of interest)\n", @@ -1194,7 +1246,7 @@ "# Plot the brain regions through which the channels on the insertion pass\n", "plot_brain_regions(channels.atlas_id.to_numpy(), channel_depths=channels.rel_y.to_numpy(), ax=axs[0])\n", "# Plot scatter plot of cluster depths vs cluster modulation index\n", - "axs[1].scatter(modulation_index, good_units.mean_relative_depth, c=p_sig) # color by significance\n", + "axs[1].scatter(modulation_index, good_units.mean_relative_depth, c=p_sig) #\u00a0color by significance\n", "axs[1].set_xlabel('M.I.')\n", "axs[1].get_yaxis().set_visible(False)" ] @@ -1227,7 +1279,7 @@ "id": "9Rjb4rDugFDw" }, "source": [ - "### Introduction" + "###\u00a0Introduction" ] }, { @@ -1605,7 +1657,7 @@ "id": "Eg9FL7Gwi_kg" }, "source": [ - "## Decoding" + "##\u00a0Decoding" ] }, { @@ -1690,7 +1742,7 @@ "# ---------------------------------------------------\n", "# Split trials into test and training sets for the logistic regression.\n", "# Take first half of trials for training, second half for testing (test_size = 0.5)\n", - "# Fix random seed to repeat results across runs\n", + "#\u00a0Fix random seed to repeat results across runs\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0)\n", "\n", "# ---------------------------------------------------\n", @@ -1768,7 +1820,7 @@ "id": "7k6TzvziZLZ_" }, "source": [ - "## More ideas" + "##\u00a0More ideas" ] }, { @@ -1778,7 +1830,7 @@ }, "source": [ "\n", - "### 📗 We studied choice - what about other binary variables?\n" + "### \ud83d\udcd7 We studied choice - what about other binary variables?\n" ] }, { @@ -1869,7 +1921,7 @@ "id": "DjWQu5RgP7GI" }, "source": [ - "### 📙 Delineating mixed-responses using General Linear Model (GLM)\n" + "### \ud83d\udcd9 \u00a0Delineating mixed-responses using General Linear Model (GLM)\n" ] }, { @@ -1894,7 +1946,7 @@ "id": "IW7dpMx4TQCO" }, "source": [ - "#### Example figure and code" + "####\u00a0Example figure and code" ] }, { @@ -1939,7 +1991,7 @@ "source": [ "**How to install the repository**\n", "\n", - "🐍 Note: This may not work in Colab, install this on your machine instead 🪛" + "\ud83d\udc0d Note: This may not work in Colab, install this on your machine instead \ud83e\ude9b" ] }, { @@ -1971,7 +2023,7 @@ "id": "7QthjogrOaE5" }, "source": [ - "###📘 Correlate neural activity with continuous variables instead of binary" + "###\ud83d\udcd8 Correlate neural activity with continuous variables instead of binary" ] }, { @@ -2000,7 +2052,7 @@ "id": "O0wlhu_2XoKC" }, "source": [ - "### 📕 Model the behavior and see if there are neural correlates" + "### \ud83d\udcd5 Model the behavior and see if there are neural correlates" ] }, { diff --git a/000458/AllenInstitute/reanalysis.ipynb b/000458/AllenInstitute/reanalysis.ipynb index f621dc6..13a7c93 100644 --- a/000458/AllenInstitute/reanalysis.ipynb +++ b/000458/AllenInstitute/reanalysis.ipynb @@ -7,13 +7,59 @@ "# Reanalyzing Dandiset #000458" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000458/AllenInstitute/reanalysis.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"numpy>=1.24\" \\\n", + " \"matplotlib>=3.7\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook works through some basic reanalysis of Dandiset #000458 to demonstrate how easy and straightforward the process is!\n", "\n", - "We will aim to make an approximate reproduction of Figure 4B from the 2023 _Neuron_ article [“Active cortical networks promote shunting fast synaptic inhibition _in vivo_”](https://doi.org/10.1016/j.neuron.2023.08.005) by Burman et al." + "We will aim to make an approximate reproduction of Figure 4B from the 2023 _Neuron_ article [\u201cActive cortical networks promote shunting fast synaptic inhibition _in vivo_\u201d](https://doi.org/10.1016/j.neuron.2023.08.005) by Burman et al." ] }, { diff --git a/000458/FlatironInstitute/000_lindi_vs_fsspec_streaming.ipynb b/000458/FlatironInstitute/000_lindi_vs_fsspec_streaming.ipynb index 9ce21cb..d4af170 100644 --- a/000458/FlatironInstitute/000_lindi_vs_fsspec_streaming.ipynb +++ b/000458/FlatironInstitute/000_lindi_vs_fsspec_streaming.ipynb @@ -1,5 +1,27 @@ { "cells": [ + { + "cell_type": "markdown", + "source": "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000458/FlatironInstitute/000_lindi_vs_fsspec_streaming.ipynb)", + "metadata": {} + }, + { + "cell_type": "markdown", + "source": "## Installing requirements\n\nThe cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs.", + "metadata": {} + }, + { + "cell_type": "code", + "source": "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n# Installs are scoped to the active interpreter via `uv pip install --system`,\n# which is required because Colab runs the kernel outside a virtualenv.\n!pip install -q uv\n!uv pip install --system \\\n \"pynwb>=2.8,<3\" \\\n \"hdmf<4\" \\\n \"dandi>=0.60\" \\\n \"fsspec>=2024.2\" \\\n \"aiohttp>=3.9\" \\\n \"h5py>=3.10\" \\\n \"lindi>=0.4\"", + "metadata": {}, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": "> **⚠️ Restart runtime after install**\n>\n> The install may upgrade packages already loaded in the kernel. Go to **Runtime → Restart session**, then **Run all cells below** (skip this install cell on re-run).", + "metadata": {} + }, { "cell_type": "code", "execution_count": 1, @@ -144,4 +166,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file diff --git a/000458/FlatironInstitute/001_summarize_contents.ipynb b/000458/FlatironInstitute/001_summarize_contents.ipynb index 4134c54..fc824a6 100644 --- a/000458/FlatironInstitute/001_summarize_contents.ipynb +++ b/000458/FlatironInstitute/001_summarize_contents.ipynb @@ -9,6 +9,50 @@ "This notebook summarizes the contents of all the NWB files in Dandiset 000458 including the file size, session description, and trial information. Readers can quickly and easily use these descriptions to determine which NWB files to investigate further." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000458/FlatironInstitute/001_summarize_contents.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook and fetches a colocated helper module." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"lindi>=0.4\"\n", + "!mkdir -p helpers\n", + "!curl -sL -o helpers/stream_nwbfile.py https://raw.githubusercontent.com/dandi/example-notebooks/master/000458/FlatironInstitute/helpers/stream_nwbfile.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "code", "execution_count": 1, diff --git a/000559/dattalab/markowitz_gillis_nature_2023/read_avi.ipynb b/000559/dattalab/markowitz_gillis_nature_2023/read_avi.ipynb index 6573eb4..cd9e9b6 100644 --- a/000559/dattalab/markowitz_gillis_nature_2023/read_avi.ipynb +++ b/000559/dattalab/markowitz_gillis_nature_2023/read_avi.ipynb @@ -7,6 +7,50 @@ "# Read AVI Files" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000559/dattalab/markowitz_gillis_nature_2023/read_avi.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"dandi>=0.60\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"tqdm>=4.66\" \\\n", + " \"ipywidgets>=8\" \\\n", + " \"opencv-python>=4.8\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure1d.ipynb b/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure1d.ipynb index 2258e5c..2b960e7 100644 --- a/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure1d.ipynb +++ b/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure1d.ipynb @@ -1,5 +1,55 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure1d.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"numpy>=1.24,<2\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"colorcet>=3.1\" \\\n", + " \"neuroconv>=0.6\"\n", + "!curl -sL -o stream_nwbfile.py https://raw.githubusercontent.com/dandi/example-notebooks/master/000559/dattalab/markowitz_gillis_nature_2023/stream_nwbfile.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "code", "execution_count": 36, diff --git a/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure_S1.ipynb b/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure_S1.ipynb index 08ef2b3..8805cda 100644 --- a/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure_S1.ipynb +++ b/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure_S1.ipynb @@ -1,5 +1,59 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000559/dattalab/markowitz_gillis_nature_2023/reproduce_figure_S1.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8,<3\" \\\n", + " \"hdmf<4\" \\\n", + " \"dandi>=0.60\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"numpy>=1.24,<2\" \\\n", + " \"pandas>=2.0\" \\\n", + " \"matplotlib>=3.7\" \\\n", + " \"seaborn>=0.13\" \\\n", + " \"scipy>=1.11\" \\\n", + " \"scikit-image>=0.22\" \\\n", + " \"tqdm>=4.66\" \\\n", + " \"ipywidgets>=8\" \\\n", + " \"cellpose>=3,<4\"\n", + "!curl -sL -o stream_nwbfile.py https://raw.githubusercontent.com/dandi/example-notebooks/master/000559/dattalab/markowitz_gillis_nature_2023/stream_nwbfile.py" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "code", "execution_count": 1, diff --git a/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb b/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb index 0caef73..c82440d 100644 --- a/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb +++ b/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb @@ -30,6 +30,55 @@ "* [Showing rate maps](#rate-maps)\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[](https://colab.research.google.com/github/dandi/example-notebooks/blob/master/000582/Sargolini2006/000582_Sargolini2006_demo.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Installing requirements\n", + "\n", + "The cell below installs the Python packages needed to run this notebook. It uses [`uv`](https://github.com/astral-sh/uv) for fast installs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Expects Python 3.12 (Google Colab's default runtime as of 2026).\n", + "# Installs are scoped to the active interpreter via `uv pip install --system`,\n", + "# which is required because Colab runs the kernel outside a virtualenv.\n", + "!pip install -q uv\n", + "!uv pip install --system \\\n", + " \"pynwb>=2.8\" \\\n", + " \"dandi>=0.56\" \\\n", + " \"h5py>=3.10\" \\\n", + " \"fsspec>=2024.2\" \\\n", + " \"aiohttp>=3.9\" \\\n", + " \"requests>=2.31\" \\\n", + " \"pynapple>=0.6\" \\\n", + " \"numpy>=1.26,<2\" \\\n", + " \"scipy>=1.11\" \\\n", + " \"plotly>=5.17\" \\\n", + " \"pandas>=2.1\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> **\u26a0\ufe0f Restart runtime after install**\n", + ">\n", + "> The install may upgrade packages already loaded in the kernel. Go to **Runtime \u2192 Restart session**, then **Run all cells below** (skip this install cell on re-run)." + ] + }, { "cell_type": "markdown", "id": "1dce9ed7", @@ -474,7 +523,7 @@ "* Licensed under the MIT license\n", "*/\n", "/*! For license information please see plotly.min.js.LICENSE.txt */\n", - "!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.Plotly=e():t.Plotly=e()}(self,(function(){return function(){var t={98847:function(t,e,r){\"use strict\";var n=r(71828),i={\"X,X div\":'direction:ltr;font-family:\"Open Sans\",verdana,arial,sans-serif;margin:0;padding:0;',\"X input,X button\":'font-family:\"Open Sans\",verdana,arial,sans-serif;',\"X input:focus,X button:focus\":\"outline:none;\",\"X a\":\"text-decoration:none;\",\"X a:hover\":\"text-decoration:none;\",\"X .crisp\":\"shape-rendering:crispEdges;\",\"X .user-select-none\":\"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;\",\"X svg\":\"overflow:hidden;\",\"X svg a\":\"fill:#447adb;\",\"X svg a:hover\":\"fill:#3c6dc5;\",\"X .main-svg\":\"position:absolute;top:0;left:0;pointer-events:none;\",\"X .main-svg .draglayer\":\"pointer-events:all;\",\"X .cursor-default\":\"cursor:default;\",\"X .cursor-pointer\":\"cursor:pointer;\",\"X .cursor-crosshair\":\"cursor:crosshair;\",\"X .cursor-move\":\"cursor:move;\",\"X .cursor-col-resize\":\"cursor:col-resize;\",\"X .cursor-row-resize\":\"cursor:row-resize;\",\"X .cursor-ns-resize\":\"cursor:ns-resize;\",\"X .cursor-ew-resize\":\"cursor:ew-resize;\",\"X .cursor-sw-resize\":\"cursor:sw-resize;\",\"X .cursor-s-resize\":\"cursor:s-resize;\",\"X .cursor-se-resize\":\"cursor:se-resize;\",\"X .cursor-w-resize\":\"cursor:w-resize;\",\"X .cursor-e-resize\":\"cursor:e-resize;\",\"X .cursor-nw-resize\":\"cursor:nw-resize;\",\"X .cursor-n-resize\":\"cursor:n-resize;\",\"X .cursor-ne-resize\":\"cursor:ne-resize;\",\"X .cursor-grab\":\"cursor:-webkit-grab;cursor:grab;\",\"X .modebar\":\"position:absolute;top:2px;right:2px;\",\"X .ease-bg\":\"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;\",\"X .modebar--hover>:not(.watermark)\":\"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;\",\"X:hover .modebar--hover .modebar-group\":\"opacity:1;\",\"X .modebar-group\":\"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;\",\"X .modebar-btn\":\"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;\",\"X .modebar-btn svg\":\"position:relative;top:2px;\",\"X .modebar.vertical\":\"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;\",\"X .modebar.vertical svg\":\"top:-1px;\",\"X .modebar.vertical .modebar-group\":\"display:block;float:none;padding-left:0px;padding-bottom:8px;\",\"X .modebar.vertical .modebar-group .modebar-btn\":\"display:block;text-align:center;\",\"X [data-title]:before,X [data-title]:after\":\"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;\",\"X [data-title]:hover:before,X [data-title]:hover:after\":\"display:block;opacity:1;\",\"X [data-title]:before\":'content:\"\";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',\"X [data-title]:after\":\"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;\",\"X .vertical [data-title]:before,X .vertical [data-title]:after\":\"top:0%;right:200%;\",\"X .vertical [data-title]:before\":\"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;\",Y:'font-family:\"Open Sans\",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',\"Y p\":\"margin:0;\",\"Y .notifier-note\":\"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;\",\"Y .notifier-close\":\"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;\",\"Y .notifier-close:hover\":\"color:#444;text-decoration:none;cursor:pointer;\"};for(var a in i){var o=a.replace(/^,/,\" ,\").replace(/X/g,\".js-plotly-plot .plotly\").replace(/Y/g,\".plotly-notifier\");n.addStyleRule(o,i[a])}},98222:function(t,e,r){\"use strict\";t.exports=r(82887)},27206:function(t,e,r){\"use strict\";t.exports=r(60822)},59893:function(t,e,r){\"use strict\";t.exports=r(23381)},5224:function(t,e,r){\"use strict\";t.exports=r(83832)},59509:function(t,e,r){\"use strict\";t.exports=r(72201)},75557:function(t,e,r){\"use strict\";t.exports=r(91815)},40338:function(t,e,r){\"use strict\";t.exports=r(21462)},35080:function(t,e,r){\"use strict\";t.exports=r(51319)},61396:function(t,e,r){\"use strict\";t.exports=r(57516)},40549:function(t,e,r){\"use strict\";t.exports=r(98128)},49866:function(t,e,r){\"use strict\";t.exports=r(99442)},36089:function(t,e,r){\"use strict\";t.exports=r(93740)},19548:function(t,e,r){\"use strict\";t.exports=r(8729)},35831:function(t,e,r){\"use strict\";t.exports=r(93814)},61039:function(t,e,r){\"use strict\";t.exports=r(14382)},97040:function(t,e,r){\"use strict\";t.exports=r(51759)},77986:function(t,e,r){\"use strict\";t.exports=r(10421)},24296:function(t,e,r){\"use strict\";t.exports=r(43102)},58872:function(t,e,r){\"use strict\";t.exports=r(92165)},29626:function(t,e,r){\"use strict\";t.exports=r(3325)},65591:function(t,e,r){\"use strict\";t.exports=r(36071)},69738:function(t,e,r){\"use strict\";t.exports=r(43905)},92650:function(t,e,r){\"use strict\";t.exports=r(35902)},35630:function(t,e,r){\"use strict\";t.exports=r(69816)},73434:function(t,e,r){\"use strict\";t.exports=r(94507)},27909:function(t,e,r){\"use strict\";var n=r(19548);n.register([r(27206),r(5224),r(58872),r(65591),r(69738),r(92650),r(49866),r(25743),r(6197),r(97040),r(85461),r(73434),r(54201),r(81299),r(47645),r(35630),r(77986),r(83043),r(93005),r(96881),r(4534),r(50581),r(40549),r(77900),r(47582),r(35080),r(21641),r(17280),r(5861),r(29626),r(10021),r(65317),r(96268),r(61396),r(35831),r(16122),r(46163),r(40344),r(40338),r(48131),r(36089),r(55334),r(75557),r(19440),r(99488),r(59893),r(97393),r(98222),r(61039),r(24296),r(66398),r(59509)]),t.exports=n},46163:function(t,e,r){\"use strict\";t.exports=r(15154)},96881:function(t,e,r){\"use strict\";t.exports=r(64943)},50581:function(t,e,r){\"use strict\";t.exports=r(21164)},55334:function(t,e,r){\"use strict\";t.exports=r(54186)},65317:function(t,e,r){\"use strict\";t.exports=r(94873)},10021:function(t,e,r){\"use strict\";t.exports=r(67618)},54201:function(t,e,r){\"use strict\";t.exports=r(58810)},5861:function(t,e,r){\"use strict\";t.exports=r(20593)},16122:function(t,e,r){\"use strict\";t.exports=r(29396)},83043:function(t,e,r){\"use strict\";t.exports=r(13551)},48131:function(t,e,r){\"use strict\";t.exports=r(46858)},47582:function(t,e,r){\"use strict\";t.exports=r(17988)},21641:function(t,e,r){\"use strict\";t.exports=r(68868)},96268:function(t,e,r){\"use strict\";t.exports=r(20467)},19440:function(t,e,r){\"use strict\";t.exports=r(91271)},99488:function(t,e,r){\"use strict\";t.exports=r(21461)},97393:function(t,e,r){\"use strict\";t.exports=r(85956)},25743:function(t,e,r){\"use strict\";t.exports=r(52979)},66398:function(t,e,r){\"use strict\";t.exports=r(32275)},17280:function(t,e,r){\"use strict\";t.exports=r(6419)},77900:function(t,e,r){\"use strict\";t.exports=r(61510)},81299:function(t,e,r){\"use strict\";t.exports=r(87619)},93005:function(t,e,r){\"use strict\";t.exports=r(93601)},40344:function(t,e,r){\"use strict\";t.exports=r(96595)},47645:function(t,e,r){\"use strict\";t.exports=r(70954)},6197:function(t,e,r){\"use strict\";t.exports=r(47462)},4534:function(t,e,r){\"use strict\";t.exports=r(17659)},85461:function(t,e,r){\"use strict\";t.exports=r(19990)},82884:function(t){\"use strict\";t.exports=[{path:\"\",backoff:0},{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0,noRotate:!0},{path:\"M2,2V-2H-2V2Z\",backoff:0,noRotate:!0}]},50215:function(t,e,r){\"use strict\";var n=r(82884),i=r(41940),a=r(85555),o=r(44467).templatedArray;r(24695),t.exports=o(\"annotation\",{visible:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},text:{valType:\"string\",editType:\"calc+arraydraw\"},textangle:{valType:\"angle\",dflt:0,editType:\"calc+arraydraw\"},font:i({editType:\"calc+arraydraw\",colorEditType:\"arraydraw\"}),width:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},height:{valType:\"number\",min:1,dflt:null,editType:\"calc+arraydraw\"},opacity:{valType:\"number\",min:0,max:1,dflt:1,editType:\"arraydraw\"},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\",editType:\"arraydraw\"},valign:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"middle\",editType:\"arraydraw\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\",editType:\"arraydraw\"},borderpad:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},borderwidth:{valType:\"number\",min:0,dflt:1,editType:\"calc+arraydraw\"},showarrow:{valType:\"boolean\",dflt:!0,editType:\"calc+arraydraw\"},arrowcolor:{valType:\"color\",editType:\"arraydraw\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},startarrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1,editType:\"arraydraw\"},arrowside:{valType:\"flaglist\",flags:[\"end\",\"start\"],extras:[\"none\"],dflt:\"end\",editType:\"arraydraw\"},arrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},startarrowsize:{valType:\"number\",min:.3,dflt:1,editType:\"calc+arraydraw\"},arrowwidth:{valType:\"number\",min:.1,editType:\"calc+arraydraw\"},standoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},startstandoff:{valType:\"number\",min:0,dflt:0,editType:\"calc+arraydraw\"},ax:{valType:\"any\",editType:\"calc+arraydraw\"},ay:{valType:\"any\",editType:\"calc+arraydraw\"},axref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.x.toString()],editType:\"calc\"},ayref:{valType:\"enumerated\",dflt:\"pixel\",values:[\"pixel\",a.idRegex.y.toString()],editType:\"calc\"},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()],editType:\"calc\"},x:{valType:\"any\",editType:\"calc+arraydraw\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\",editType:\"calc+arraydraw\"},xshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()],editType:\"calc\"},y:{valType:\"any\",editType:\"calc+arraydraw\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\",editType:\"calc+arraydraw\"},yshift:{valType:\"number\",dflt:0,editType:\"calc+arraydraw\"},clicktoshow:{valType:\"enumerated\",values:[!1,\"onoff\",\"onout\"],dflt:!1,editType:\"arraydraw\"},xclick:{valType:\"any\",editType:\"arraydraw\"},yclick:{valType:\"any\",editType:\"arraydraw\"},hovertext:{valType:\"string\",editType:\"arraydraw\"},hoverlabel:{bgcolor:{valType:\"color\",editType:\"arraydraw\"},bordercolor:{valType:\"color\",editType:\"arraydraw\"},font:i({editType:\"arraydraw\"}),editType:\"arraydraw\"},captureevents:{valType:\"boolean\",editType:\"arraydraw\"},editType:\"calc\",_deprecated:{ref:{valType:\"string\",editType:\"calc\"}}})},3749:function(t,e,r){\"use strict\";var n=r(71828),i=r(89298),a=r(92605).draw;function o(t){var e=t._fullLayout;n.filterVisible(e.annotations).forEach((function(e){var r=i.getFromId(t,e.xref),n=i.getFromId(t,e.yref),a=i.getRefType(e.xref),o=i.getRefType(e.yref);e._extremes={},\"range\"===a&&s(e,r),\"range\"===o&&s(e,n)}))}function s(t,e){var r,n=e._id,a=n.charAt(0),o=t[a],s=t[\"a\"+a],l=t[a+\"ref\"],u=t[\"a\"+a+\"ref\"],c=t[\"_\"+a+\"padplus\"],f=t[\"_\"+a+\"padminus\"],h={x:1,y:-1}[a]*t[a+\"shift\"],p=3*t.arrowsize*t.arrowwidth||0,d=p+h,v=p-h,g=3*t.startarrowsize*t.arrowwidth||0,y=g+h,m=g-h;if(u===l){var x=i.findExtremes(e,[e.r2c(o)],{ppadplus:d,ppadminus:v}),b=i.findExtremes(e,[e.r2c(s)],{ppadplus:Math.max(c,y),ppadminus:Math.max(f,m)});r={min:[x.min[0],b.min[0]],max:[x.max[0],b.max[0]]}}else y=s?y+s:y,m=s?m-s:m,r=i.findExtremes(e,[e.r2c(o)],{ppadplus:Math.max(c,d,y),ppadminus:Math.max(f,v,m)});t._extremes[n]=r}t.exports=function(t){var e=t._fullLayout;if(n.filterVisible(e.annotations).length&&t._fullData.length)return n.syncOrAsync([a,o],t)}},44317:function(t,e,r){\"use strict\";var n=r(71828),i=r(73972),a=r(44467).arrayEditor;function o(t,e){var r,n,i,a,o,l,u,c=t._fullLayout.annotations,f=[],h=[],p=[],d=(e||[]).length;for(r=0;r0?[0]:[]);if(o.enter().append(\"g\").classed(f.containerClassName,!0).style(\"cursor\",\"pointer\"),o.exit().each((function(){n.select(this).selectAll(\"g.\"+f.headerGroupClassName).each(a)})).remove(),0!==r.length){var l=o.selectAll(\"g.\"+f.headerGroupClassName).data(r,p);l.enter().append(\"g\").classed(f.headerGroupClassName,!0);for(var u=s.ensureSingle(o,\"g\",f.dropdownButtonGroupClassName,(function(t){t.style(\"pointer-events\",\"all\")})),c=0;c 90&&i.log(\"Long binary search...\"),h-1},e.sorterAsc=function(t,e){return t-e},e.sorterDes=function(t,e){return e-t},e.distinctVals=function(t){var r,n=t.slice();for(n.sort(e.sorterAsc),r=n.length-1;r>-1&&n[r]===o;r--);for(var i,a=n[r]-n[0]||1,s=a/(r||1)/1e4,l=[],u=0;u<=r;u++){var c=n[u],f=c-i;void 0===i?(l.push(c),i=c):f>s&&(a=Math.min(a,f),l.push(c),i=c)}return{vals:l,minDiff:a}},e.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},e.findIndexOfMin=function(t,e){e=e||a;for(var r,n=1/0,i=0;il?r.y-l:0;return Math.sqrt(u*u+f*f)}for(var p=h(u);p;){if((u+=p+r)>f)return;p=h(u)}for(p=h(f);p;){if(u>(f-=p+r))return;p=h(f)}return{min:u,max:f,len:f-u,total:c,isClosed:0===u&&f===c&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},e.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,u=n.iterationLimit||30,c=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,f=0,h=0,p=s;f0?p=i:h=i,f++}return a}},81697:function(t,e,r){\"use strict\";var n=r(92770),i=r(84267),a=r(25075),o=r(21081),s=r(22399).defaultLine,l=r(73627).isArrayOrTypedArray,u=a(s);function c(t,e){var r=t;return r[3]*=e,r}function f(t){if(n(t))return u;var e=a(t);return e.length?e:u}function h(t){return n(t)?t:1}t.exports={formatColor:function(t,e,r){var n,i,s,p,d,v=t.color,g=l(v),y=l(e),m=o.extractOpts(t),x=[];if(n=void 0!==m.colorscale?o.makeColorScaleFuncFromTrace(t):f,i=g?function(t,e){return void 0===t[e]?u:a(n(t[e]))}:f,s=y?function(t,e){return void 0===t[e]?1:h(t[e])}:h,g||y)for(var b=0;b
/i;e.BR_TAG_ALL=/
/gi;var _=/(^|[\\s\"'])style\\s*=\\s*(\"([^\"]*);?\"|'([^']*);?')/i,w=/(^|[\\s\"'])href\\s*=\\s*(\"([^\"]*)\"|'([^']*)')/i,T=/(^|[\\s\"'])target\\s*=\\s*(\"([^\"\\s]*)\"|'([^'\\s]*)')/i,k=/(^|[\\s\"'])popup\\s*=\\s*(\"([\\w=,]*)\"|'([\\w=,]*)')/i;function A(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&L(n)}var M=/(^|;)\\s*color:/;e.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:[\"br\"],i=t.split(m),a=[],o=\"\",s=0,l=0;l
\"+l;e.text=u}(t,o,r,u):\"log\"===c?function(t,e,r,n,a){var o=t.dtick,l=e.x,u=t.tickformat,c=\"string\"==typeof o&&o.charAt(0);if(\"never\"===a&&(a=\"\"),n&&\"L\"!==c&&(o=\"L3\",c=\"L\"),u||\"L\"===c)e.text=bt(Math.pow(10,l),t,a,n);else if(i(o)||\"D\"===c&&s.mod(l+.01,1)<.1){var f=Math.round(l),h=Math.abs(f),p=t.exponentformat;\"power\"===p||mt(p)&&xt(f)?(e.text=0===f?1:1===f?\"10\":\"10\"+(f>1?\"\":P)+h+\"\",e.fontSize*=1.25):(\"e\"===p||\"E\"===p)&&h>2?e.text=\"1\"+p+(f>0?\"+\":P)+h:(e.text=bt(Math.pow(10,l),t,\"\",\"fakehover\"),\"D1\"===o&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if(\"D\"!==c)throw\"unrecognized dtick \"+String(o);e.text=String(Math.round(Math.pow(10,s.mod(l,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var d=String(e.text).charAt(0);\"0\"!==d&&\"1\"!==d||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,o,0,u,v):\"category\"===c?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\"),e.text=String(r)}(t,o):\"multicategory\"===c?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?\"\":String(i[1]),o=void 0===i[0]?\"\":String(i[0]);r?e.text=o+\" - \"+a:(e.text=a,e.text2=o)}(t,o,r):Dt(t)?function(t,e,r,n,i){if(\"radians\"!==t.thetaunit||r)e.text=bt(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text=\"0\";else{var o=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(o[1]>=100)e.text=bt(s.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===o[1]?1===o[0]?e.text=\"π\":e.text=o[0]+\"π\":e.text=[\"\",o[0],\"\",\"⁄\",\"\",o[1],\"\",\"π\"].join(\"\"),l&&(e.text=P+e.text)}}}}(t,o,r,u,v):function(t,e,r,n,i){\"never\"===i?i=\"\":\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\"),e.text=bt(e.x,t,i,n)}(t,o,0,u,v),n||(t.tickprefix&&!d(t.showtickprefix)&&(o.text=t.tickprefix+o.text),t.ticksuffix&&!d(t.showticksuffix)&&(o.text+=t.ticksuffix)),t.labelalias&&t.labelalias.hasOwnProperty(o.text)){var g=t.labelalias[o.text];\"string\"==typeof g&&(o.text=g)}if(\"boundaries\"===t.tickson||t.showdividers){var y=function(e){var r=t.l2p(e);return r>=0&&r<=t._length?e:null};o.xbnd=[y(o.x-.5),y(o.x+t.dtick-.5)]}return o},q.hoverLabelText=function(t,e,r){r&&(t=s.extendFlat({},t,{hoverformat:r}));var n=Array.isArray(e)?e[0]:e,i=Array.isArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return q.hoverLabelText(t,n,r)+\" - \"+q.hoverLabelText(t,i,r);var a=\"log\"===t.type&&n<=0,o=q.tickText(t,t.c2l(a?-n:n),\"hover\").text;return a?0===n?\"0\":P+o:o};var yt=[\"f\",\"p\",\"n\",\"μ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\"];function mt(t){return\"SI\"===t||\"B\"===t}function xt(t){return t>14||t<-15}function bt(t,e,r,n){var a=t<0,o=e._tickround,l=r||e.exponentformat||\"B\",u=e._tickexponent,c=q.getTickFormat(e),f=e.separatethousands;if(n){var h={exponentformat:l,minexponent:e.minexponent,dtick:\"none\"===e.showexponent?e.dtick:i(t)&&Math.abs(t)||1,range:\"none\"===e.showexponent?e.range.map(e.r2d):[0,t||1]};vt(h),o=(Number(h._tickround)||0)+4,u=h._tickexponent,e.hoverformat&&(c=e.hoverformat)}if(c)return e._numFormat(c)(t).replace(/-/g,P);var p,d=Math.pow(10,-o)/2;if(\"none\"===l&&(u=0),(t=Math.abs(t))
\")):x=h.textLabel;var L={x:h.traceCoordinate[0],y:h.traceCoordinate[1],z:h.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:T};d.appendArrayPointValue(L,_,T),t._module.eventData&&(L=_._module.eventData(L,h,_,{},T));var C={points:[L]};if(e.fullSceneLayout.hovermode){var P=[];d.loneHover({trace:_,x:(.5+.5*m[0]/m[3])*s,y:(.5-.5*m[1]/m[3])*l,xLabel:k.xLabel,yLabel:k.yLabel,zLabel:k.zLabel,text:x,name:c.name,color:d.castHoverOption(_,T,\"bgcolor\")||c.color,borderColor:d.castHoverOption(_,T,\"bordercolor\"),fontFamily:d.castHoverOption(_,T,\"font.family\"),fontSize:d.castHoverOption(_,T,\"font.size\"),fontColor:d.castHoverOption(_,T,\"font.color\"),nameLength:d.castHoverOption(_,T,\"namelength\"),textAlign:d.castHoverOption(_,T,\"align\"),hovertemplate:f.castOption(_,T,\"hovertemplate\"),hovertemplateLabels:f.extendFlat({},L,k),eventData:[L]},{container:n,gd:r,inOut_bbox:P}),L.bbox=P[0]}h.distance<5&&(h.buttons||w)?r.emit(\"plotly_click\",C):r.emit(\"plotly_hover\",C),this.oldEventData=C}else d.loneUnhover(n),this.oldEventData&&r.emit(\"plotly_unhover\",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},k.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):f.error(\"Catastrophic and unrecoverable WebGL error. Context lost.\")};requestAnimationFrame(e)};var M=[\"xaxis\",\"yaxis\",\"zaxis\"];function S(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=M[i],o=a.charAt(0),s=n[a],l=e[o],u=e[o+\"calendar\"],c=e[\"_\"+o+\"length\"];if(f.isArrayOrTypedArray(l))for(var h,p=0;p<(c||l.length);p++)if(f.isArrayOrTypedArray(l[p]))for(var d=0;d
\");b.text(T).attr(\"data-unformatted\",T).call(f.convertToTspans,t),_=c.bBox(b.node())}b.attr(\"transform\",a(-3,8-_.height)),x.insert(\"rect\",\".static-attribution\").attr({x:-_.width-6,y:-_.height-3,width:_.width+6,height:_.height+3,fill:\"rgba(255, 255, 255, 0.75)\"});var k=1;_.width+6>w&&(k=w/(_.width+6));var A=[n.l+n.w*h.x[1],n.t+n.h*(1-h.y[0])];x.attr(\"transform\",a(A[0],A[1])+o(k))}},e.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots[p],n=0;n
\")}(e,r,n,i):v.getValue(s.text,r),v.coerceString(m,o)}(C,n,i,T,M);w=function(t,e){var r=v.getValue(t.textposition,e);return v.coerceEnumerated(x,r)}(O,i);var z=\"stack\"===g.mode||\"relative\"===g.mode,R=n[i],F=!z||R._outmost;if(D&&\"none\"!==w&&(!R.isBlank&&s!==u&&f!==p||\"auto\"!==w&&\"inside\"!==w)){var B=C.font,N=d.getBarColor(n[i],O),j=d.getInsideTextFont(O,i,B,N),U=d.getOutsideTextFont(O,i,B),V=r.datum();I?\"log\"===T.type&&V.s0<=0&&(s=T.range[0]