From 1eef09506ba992689494cdb6a71f511e9f910caf Mon Sep 17 00:00:00 2001 From: ori-kron-wis Date: Wed, 4 Dec 2024 12:19:51 +0200 Subject: [PATCH 1/2] Added run links for Methylvi --- .github/workflows/run_linux_cuda.yml | 1 + .github/workflows/run_notebook_all.yaml | 1 + .github/workflows/run_notebook_individual.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/run_linux_cuda.yml b/.github/workflows/run_linux_cuda.yml index ccbbde8..320af5d 100644 --- a/.github/workflows/run_linux_cuda.yml +++ b/.github/workflows/run_linux_cuda.yml @@ -24,6 +24,7 @@ on: - multimodal/totalVI.ipynb - quick_start/api_overview.ipynb - quick_start/data_loading.ipynb + - scbs/MethylVI_batch.ipynb - scrna/amortized_lda.ipynb - scrna/AutoZI_tutorial.ipynb - scrna/cellassign_tutorial.ipynb diff --git a/.github/workflows/run_notebook_all.yaml b/.github/workflows/run_notebook_all.yaml index 52cc8cd..0515731 100644 --- a/.github/workflows/run_notebook_all.yaml +++ b/.github/workflows/run_notebook_all.yaml @@ -30,6 +30,7 @@ jobs: - multimodal/totalVI.ipynb - quick_start/api_overview.ipynb - quick_start/data_loading.ipynb + - scbs/MethylVI_batch.ipynb - scrna/amortized_lda.ipynb - scrna/AutoZI_tutorial.ipynb - scrna/cellassign_tutorial.ipynb diff --git a/.github/workflows/run_notebook_individual.yaml b/.github/workflows/run_notebook_individual.yaml index d1aa4c7..5bf1e07 100644 --- a/.github/workflows/run_notebook_individual.yaml +++ b/.github/workflows/run_notebook_individual.yaml @@ -25,6 +25,7 @@ on: - multimodal/totalVI.ipynb - quick_start/api_overview.ipynb - quick_start/data_loading.ipynb + - scbs/MethylVI_batch.ipynb - scrna/amortized_lda.ipynb - scrna/AutoZI_tutorial.ipynb - scrna/cellassign_tutorial.ipynb From cfb7be81b7f4c77ea01415f76ab0f86fea399c0c Mon Sep 17 00:00:00 2001 From: ori-kron-wis Date: Wed, 4 Dec 2024 10:26:52 +0000 Subject: [PATCH 2/2] run scbs/MethylVI_batch.ipynb --- scbs/MethylVI_batch.ipynb | 4313 ++++++++++++++++++++++++++++++++++++- 1 file changed, 4195 insertions(+), 118 deletions(-) diff --git a/scbs/MethylVI_batch.ipynb b/scbs/MethylVI_batch.ipynb index d6e40ca..1699017 100644 --- a/scbs/MethylVI_batch.ipynb +++ b/scbs/MethylVI_batch.ipynb @@ -21,8 +21,47 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-04T10:23:26.802226Z", + "iopub.status.busy": "2024-12-04T10:23:26.802012Z", + "iopub.status.idle": "2024-12-04T10:23:27.780296Z", + "shell.execute_reply": "2024-12-04T10:23:27.779911Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable.It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.\u001b[0m\u001b[33m\r\n", + "\u001b[0m" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\r\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m24.3.1\u001b[0m\r\n", + "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\r\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/site-packages/scvi_colab/_core.py:41: UserWarning: \n", + " Not currently in Google Colab environment.\n", + "\n", + " Please run with `run_outside_colab=True` to override.\n", + "\n", + " Returning with no further action.\n", + " \n", + " warn(\n" + ] + } + ], "source": [ "!pip install --quiet scvi-colab\n", "from scvi_colab import install\n", @@ -40,113 +79,3671 @@ { "cell_type": "code", "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-04T10:23:27.781411Z", + "iopub.status.busy": "2024-12-04T10:23:27.781312Z", + "iopub.status.idle": "2024-12-04T10:23:37.394459Z", + "shell.execute_reply": "2024-12-04T10:23:37.394045Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/site-packages/leidenalg/VertexPartition.py:388: SyntaxWarning: invalid escape sequence '\\m'\n", + " \"\"\" Implements modularity. This quality function is well-defined only for positive edge weights.\n", + "/usr/local/lib/python3.12/site-packages/leidenalg/VertexPartition.py:761: SyntaxWarning: invalid escape sequence '\\m'\n", + " \"\"\" Implements Reichardt and Bornholdt's Potts model with a configuration null model.\n", + "/usr/local/lib/python3.12/site-packages/leidenalg/Optimiser.py:7: SyntaxWarning: invalid escape sequence '\\g'\n", + " \"\"\" Class for doing community detection using the Leiden algorithm.\n", + "/usr/local/lib/python3.12/site-packages/leidenalg/Optimiser.py:305: SyntaxWarning: invalid escape sequence '\\s'\n", + " \"\"\" Optimise the given partitions simultaneously.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/site-packages/anndata/utils.py:429: FutureWarning: Importing read_csv from `anndata` is deprecated. Import anndata.io.read_csv instead.\n", + " warnings.warn(msg, FutureWarning)\n", + "/usr/local/lib/python3.12/site-packages/anndata/utils.py:429: FutureWarning: Importing read_loom from `anndata` is deprecated. Import anndata.io.read_loom instead.\n", + " warnings.warn(msg, FutureWarning)\n", + "/usr/local/lib/python3.12/site-packages/anndata/utils.py:429: FutureWarning: Importing read_text from `anndata` is deprecated. Import anndata.io.read_text instead.\n", + " warnings.warn(msg, FutureWarning)\n", + "/usr/local/lib/python3.12/site-packages/anndata/utils.py:429: FutureWarning: Importing CSCDataset from `anndata.experimental` is deprecated. Import anndata.abc.CSCDataset instead.\n", + " warnings.warn(msg, FutureWarning)\n", + "/usr/local/lib/python3.12/site-packages/anndata/utils.py:429: FutureWarning: Importing CSRDataset from `anndata.experimental` is deprecated. Import anndata.abc.CSRDataset instead.\n", + " warnings.warn(msg, FutureWarning)\n", + "/usr/local/lib/python3.12/site-packages/anndata/utils.py:429: FutureWarning: Importing read_elem from `anndata.experimental` is deprecated. Import anndata.io.read_elem instead.\n", + " warnings.warn(msg, FutureWarning)\n", + "/usr/local/lib/python3.12/site-packages/ml_collections/config_dict/config_dict.py:163: SyntaxWarning: invalid escape sequence '\\['\n", + " index_match = re.match(\"(.*)\\[([0-9]+)\\]\", key)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/site-packages/pyro/ops/stats.py:514: SyntaxWarning: invalid escape sequence '\\g'\n", + " \"\"\"\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/site-packages/docrep/decorators.py:43: SyntaxWarning: 'param_categorical_covariate_keys' is not a valid key!\n", + " doc = func(self, args[0].__doc__, *args[1:], **kwargs)\n" + ] + } + ], + "source": [ + "import tempfile\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import mudata\n", + "import numpy as np\n", + "import pooch\n", + "import scanpy as sc\n", + "import scvi\n", + "import seaborn as sns\n", + "import torch\n", + "from scvi.external import METHYLVI" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-04T10:23:37.396097Z", + "iopub.status.busy": "2024-12-04T10:23:37.395883Z", + "iopub.status.idle": "2024-12-04T10:23:37.399344Z", + "shell.execute_reply": "2024-12-04T10:23:37.399085Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Seed set to 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Last run with scvi-tools version: 1.2.1\n" + ] + } + ], + "source": [ + "scvi.settings.seed = 0\n", + "print(\"Last run with scvi-tools version:\", scvi.__version__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can modify `save_dir` below to change where the data files for this tutorial are saved." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-04T10:23:37.400256Z", + "iopub.status.busy": "2024-12-04T10:23:37.400167Z", + "iopub.status.idle": "2024-12-04T10:23:37.412319Z", + "shell.execute_reply": "2024-12-04T10:23:37.411920Z" + } + }, + "outputs": [], + "source": [ + "sc.set_figure_params(figsize=(6, 6), frameon=False)\n", + "sns.set_theme()\n", + "torch.set_float32_matmul_precision(\"high\")\n", + "save_dir = tempfile.TemporaryDirectory()\n", + "\n", + "%config InlineBackend.print_figure_kwargs={\"facecolor\": \"w\"}\n", + "%config InlineBackend.figure_format=\"retina\"" + ] + }, + { + "cell_type": "markdown", "metadata": {}, + "source": [ + "This dataset was preprocessed as described in the methylVI manuscript. In particular ALLC files containing methylation reads at individual cytosines were aggregated into gene body methylation features using [ALLCools](https://lhqing.github.io/ALLCools/intro.html). Due to their distinct regulatory roles, CpG methylation and CpH methylation (i.e., non-CpG methylation) were considered separately. The resulting methylation count features were stored in a `MuData` object with separate modality fields for each methylation context: `mCG` (for CpG methylation) and `mCH` for CpH methylation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-04T10:23:37.413735Z", + "iopub.status.busy": "2024-12-04T10:23:37.413647Z", + "iopub.status.idle": "2024-12-04T10:24:30.933661Z", + "shell.execute_reply": "2024-12-04T10:24:30.933336Z" + } + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/homes/gws/ewein/micromamba/envs/scvi-dev-env/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n", - "/homes/gws/ewein/micromamba/envs/scvi-dev-env/lib/python3.10/site-packages/docrep/decorators.py:43: SyntaxWarning: 'param_categorical_covariate_keys' is not a valid key!\n", - " doc = func(self, args[0].__doc__, *args[1:], **kwargs)\n" + "Downloading data from 'https://figshare.com/ndownloader/files/49632108' to file '/tmp/tmp7wkqbz17/Liu2021_batch.h5mu'.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\r", + " 0%| | 0.00/883M [00:00" ] @@ -330,8 +3975,15 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-04T10:25:07.287299Z", + "iopub.status.busy": "2024-12-04T10:25:07.287204Z", + "iopub.status.idle": "2024-12-04T10:25:07.291894Z", + "shell.execute_reply": "2024-12-04T10:25:07.291660Z" + } + }, "outputs": [], "source": [ "METHYLVI.setup_mudata(\n", @@ -362,8 +4014,15 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2024-12-04T10:25:07.293215Z", + "iopub.status.busy": "2024-12-04T10:25:07.293131Z", + "iopub.status.idle": "2024-12-04T10:26:43.776651Z", + "shell.execute_reply": "2024-12-04T10:26:43.776298Z" + } + }, "outputs": [ { "name": "stdout", @@ -376,21 +4035,57 @@ "name": "stderr", "output_type": "stream", "text": [ - "Trainer will use only 1 of 8 GPUs because it is running inside an interactive / notebook environment. You may try to set `Trainer(devices=8)` but please note that multi-GPU inside interactive / notebook environments is considered experimental and unstable. Your mileage may vary.\n", - "GPU available: True (cuda), used: True\n", - "TPU available: False, using: 0 TPU cores\n", - "HPU available: False, using: 0 HPUs\n", - "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1,2,3,4,5,6,7]\n", - "/homes/gws/ewein/micromamba/envs/scvi-dev-env/lib/python3.10/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:424: The 'train_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n", - "/homes/gws/ewein/micromamba/envs/scvi-dev-env/lib/python3.10/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:424: The 'val_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=23` in the `DataLoader` to improve performance.\n" + "GPU available: True (cuda), used: True\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "TPU available: False, using: 0 TPU cores\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "HPU available: False, using: 0 HPUs\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0]\n" ] }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:424: The 'train_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=63` in the `DataLoader` to improve performance.\n", + "/usr/local/lib/python3.12/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:424: The 'val_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=63` in the `DataLoader` to improve performance.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8e3779b449344b45b8bb7699b5a44341", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Training: 0%| | 0/500 [00:00" ] @@ -480,7 +4189,375 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.15" + "version": "3.12.7" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": { + "00be142657bd43e497c8869ee66b0362": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_25660ab5330245dc950b8ee12c1561ee", + "placeholder": "​", + "style": "IPY_MODEL_a2c7d17e9f3f4550bd372715f036ebd9", + "tabbable": null, + "tooltip": null, + "value": " 167/500 [01:36<03:08,  1.76it/s, v_num=1, train_loss_step=5.38e+3, train_loss_epoch=5.39e+3]" + } + }, + "25660ab5330245dc950b8ee12c1561ee": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4b3d7863dd584fd080c6c7c1a8786d61": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "73f45bee9abe496c9a0a901e88c01209": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "86e5193a5fea4b7abfdcaffa750151f0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HTMLView", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_ef676dab2909493c97425fc5b1adc4af", + "placeholder": "​", + "style": "IPY_MODEL_4b3d7863dd584fd080c6c7c1a8786d61", + "tabbable": null, + "tooltip": null, + "value": "Epoch 167/500:  33%" + } + }, + "89db28eee2ba41b6b9cc627e3d873ef0": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "FloatProgressModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "ProgressView", + "bar_style": "danger", + "description": "", + "description_allow_html": false, + "layout": "IPY_MODEL_73f45bee9abe496c9a0a901e88c01209", + "max": 500.0, + "min": 0.0, + "orientation": "horizontal", + "style": "IPY_MODEL_a9ccec2f243f4158a2d8ec78d262fe4e", + "tabbable": null, + "tooltip": null, + "value": 167.0 + } + }, + "8e3779b449344b45b8bb7699b5a44341": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HBoxModel", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "2.0.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_86e5193a5fea4b7abfdcaffa750151f0", + "IPY_MODEL_89db28eee2ba41b6b9cc627e3d873ef0", + "IPY_MODEL_00be142657bd43e497c8869ee66b0362" + ], + "layout": "IPY_MODEL_f46b11decc6840beb24267b8bf06f84b", + "tabbable": null, + "tooltip": null + } + }, + "a2c7d17e9f3f4550bd372715f036ebd9": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "HTMLStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "HTMLStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "background": null, + "description_width": "", + "font_size": null, + "text_color": null + } + }, + "a9ccec2f243f4158a2d8ec78d262fe4e": { + "model_module": "@jupyter-widgets/controls", + "model_module_version": "2.0.0", + "model_name": "ProgressStyleModel", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "2.0.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ef676dab2909493c97425fc5b1adc4af": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f46b11decc6840beb24267b8bf06f84b": { + "model_module": "@jupyter-widgets/base", + "model_module_version": "2.0.0", + "model_name": "LayoutModel", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "2.0.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "2.0.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border_bottom": null, + "border_left": null, + "border_right": null, + "border_top": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + } + }, + "version_major": 2, + "version_minor": 0 + } } }, "nbformat": 4,