{ "cells": [ { "cell_type": "markdown", "id": "bef9ccd1-1c69-4013-a3e7-03ee90819ea6", "metadata": {}, "source": [ "# Drawing annotations using stackivew\n", "In this notebook we use `stackview.annotate` to create a label image with manual annotations." ] }, { "cell_type": "code", "execution_count": 1, "id": "3b1a7dbd-0bc5-438f-abe2-4149aab93339", "metadata": {}, "outputs": [], "source": [ "import stackview\n", "\n", "import numpy as np\n", "from skimage.data import cells3d" ] }, { "cell_type": "markdown", "id": "edef71e8-999e-457f-b6b4-3b8b265a37c4", "metadata": {}, "source": [ "The cells3d dataset from scikit-image serves as example image. One of the two channels shown nuclei." ] }, { "cell_type": "code", "execution_count": 2, "id": "cedf8811-7ef3-478f-908b-b32738b96dc7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
shape(60, 256, 256)
dtypeuint16
size7.5 MB
min0
max65535
\n", "\n", "
" ], "text/plain": [ "StackViewNDArray([[[5311, 4458, 5880, ..., 4220, 6497, 4932],\n", " [4078, 4552, 3557, ..., 4552, 4884, 5169],\n", " [3414, 5074, 4363, ..., 4078, 6117, 5406],\n", " ...,\n", " [3983, 3983, 2750, ..., 4410, 4600, 5880],\n", " [3604, 4173, 4600, ..., 5548, 5690, 4268],\n", " [4078, 4268, 4220, ..., 5359, 6686, 7492]],\n", "\n", " [[4220, 4932, 5074, ..., 6449, 6117, 4932],\n", " [3082, 4979, 4505, ..., 4505, 6971, 5880],\n", " [4695, 4315, 4695, ..., 4742, 5785, 5074],\n", " ...,\n", " [3414, 3841, 3462, ..., 5169, 4742, 5027],\n", " [4173, 3319, 2798, ..., 5406, 4600, 4837],\n", " [3225, 3557, 3651, ..., 5453, 5406, 4837]],\n", "\n", " [[4552, 4505, 4742, ..., 4458, 4979, 4647],\n", " [3367, 4268, 4647, ..., 6402, 6022, 5738],\n", " [3509, 3272, 4647, ..., 5264, 4220, 6259],\n", " ...,\n", " [3841, 3936, 3888, ..., 4884, 5169, 4789],\n", " [3604, 3225, 2798, ..., 4552, 6117, 5690],\n", " [4126, 4458, 4837, ..., 5928, 6734, 5027]],\n", "\n", " ...,\n", "\n", " [[5121, 5833, 5738, ..., 5406, 3983, 4220],\n", " [5311, 5453, 5453, ..., 5169, 5027, 4884],\n", " [6544, 5121, 5264, ..., 4363, 5406, 4695],\n", " ...,\n", " [4884, 2324, 3130, ..., 4552, 4979, 6070],\n", " [3225, 2513, 2513, ..., 4742, 3035, 2418],\n", " [3272, 2798, 3888, ..., 3604, 4268, 3746]],\n", "\n", " [[5359, 5928, 5738, ..., 4268, 4505, 4031],\n", " [7445, 6829, 4268, ..., 4884, 5596, 3082],\n", " [6497, 6544, 4932, ..., 3604, 5359, 4410],\n", " ...,\n", " [5833, 2703, 3367, ..., 3177, 4220, 4220],\n", " [4031, 3509, 5216, ..., 4268, 3604, 4932],\n", " [3557, 2987, 3936, ..., 3604, 3462, 5264]],\n", "\n", " [[6402, 6781, 4789, ..., 5928, 6022, 3651],\n", " [4363, 4837, 6307, ..., 4315, 3651, 4126],\n", " [4979, 4695, 4742, ..., 4789, 4837, 4552],\n", " ...,\n", " [4078, 2513, 3035, ..., 1849, 3888, 4363],\n", " [3936, 3888, 4315, ..., 5216, 4031, 5643],\n", " [4173, 4505, 3794, ..., 4979, 6781, 4031]]],\n", " dtype=uint16)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "image = cells3d()[:,1]\n", "\n", "stackview.insight(image)" ] }, { "cell_type": "markdown", "id": "d827461d-0e08-4975-b66f-b18256e02085", "metadata": {}, "source": [ "Before annotating the nuclei, we create an empty label image of type unsigned 32-bit integer. This type is necessary so that stackview views the image correctly as labels. Compatible types are: `int32`,`uint32`,`int64`,`uint64`." ] }, { "cell_type": "code", "execution_count": 3, "id": "afb31fa6-55d5-4a1d-aee3-f5044f074e42", "metadata": {}, "outputs": [], "source": [ "labels = np.zeros(image.shape).astype(np.uint32)" ] }, { "cell_type": "markdown", "id": "df242616-4f39-4bd4-b44b-53fcc85fe81f", "metadata": {}, "source": [ "The function `stackview.annotate` creates a user interface where we can draw labels on top of the original image. Click and drag for drawing. Hold the `ALT` key for erasing." ] }, { "cell_type": "code", "execution_count": 4, "id": "dff17db0-f777-46a0-a0c6-22eb933a8048", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "9eedc7dd19034648b409e436fb9df936", "version_major": 2, "version_minor": 0 }, "text/plain": [ "VBox(children=(HBox(children=(HBox(children=(VBox(children=(ImageWidget(height=256, width=256),)),)), VBox(chi…" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stackview.annotate(image, labels)" ] }, { "cell_type": "markdown", "id": "6e6450c7-598c-4570-b752-6022cd264cfb", "metadata": {}, "source": [ "You can also annotate in a different plane than the Z-plane by providing an axis (0=z,1=y,2=x)." ] }, { "cell_type": "code", "execution_count": null, "id": "6a879f47-d14b-4903-8d32-2d1131161837", "metadata": { "tags": [] }, "outputs": [], "source": [ "stackview.annotate(image, labels, axis=1)" ] }, { "cell_type": "markdown", "id": "27282508-e7e8-479b-afb5-5c42cf09c742", "metadata": {}, "source": [ "Once annotations are drawn, we can view them as usual using the `insight()` function." ] }, { "cell_type": "code", "execution_count": null, "id": "f78fbc93-9d4b-4104-bd2c-3f5cfea406ec", "metadata": {}, "outputs": [], "source": [ "stackview.insight(labels)" ] }, { "cell_type": "markdown", "id": "723802ea-901b-4b36-8533-886001f4760d", "metadata": {}, "source": [ "Just for fun we use the [apoc](https://github.com/haesleinhuepf/apoc) library to create an instance segmentation of nuclei from our annotation." ] }, { "cell_type": "code", "execution_count": null, "id": "e8710645-7a5d-4e6f-843e-16fe63b7c659", "metadata": {}, "outputs": [], "source": [ "import apoc\n", "\n", "segmenter = apoc.ObjectSegmenter(positive_class_identifier=1)\n", "features = apoc.PredefinedFeatureSet.small_quick.value\n", "\n", "segmenter.train(image=image, ground_truth=labels, features=features)\n", "result = segmenter.predict(image)\n", "\n", "stackview.insight(result[30])" ] }, { "cell_type": "code", "execution_count": null, "id": "3ee3fbdd-41fe-4f34-912f-7b39f6e9cca1", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.15" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "022f0cf6afad4cb3ad212fd9a549bc74": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_ff1606ca36da47c1a2c48307ea5bec28", "IPY_MODEL_d9c20a6f09204583b1472d6b89e1b8fc", "IPY_MODEL_463322bc68694ec6815c5b33cdab9b98" ], "layout": "IPY_MODEL_32a4ceef1d6747269046bea8bf3945e5" } }, "038c13b1ead74af48489380ebe1d5eca": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "max_width": "30px", "min_width": "10px" } }, "0a19a672319f49b887a5065729e09be1": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "0eb51cea9f544daebe6e7c6b8802335e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelStyleModel", "state": { "description_width": "", "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "129392e9d36940d0a969917f62e39a65": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "13e45a27d526406cb17e1407e21ab2f0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonStyleModel", "state": { "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "14eb17673653472c8f78e0a672ea26d7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_d666b881d22f4fa4bb0894b685f334e6" ], "layout": "IPY_MODEL_2a4a9db12e624aa99131d90fffd83487" } }, "15b109eddbc04b839c0f0e2f19baec2d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "197be31bf19b47ceae049b17e1560963": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_20ca7e3e401d474ca986c3e7065cbda7", "style": "IPY_MODEL_5f77dbaa00564456aefa9b666d0f09b0", "value": "Eraser radius:" } }, "20ca7e3e401d474ca986c3e7065cbda7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "26c71af86b5c4e789416d0b9721cd70e": { "model_module": "ipycanvas", "model_module_version": "^0.13", "model_name": "CanvasModel", "state": { "_canvas_manager": "IPY_MODEL_b9aa54164d7643308e756addc507773a", "_model_module_version": "^0.13", "_view_count": 1, "_view_module_version": "^0.13", "height": 256, "layout": "IPY_MODEL_da84c306fc794ffc826b025b76854d67", "width": 256 } }, "2a4a9db12e624aa99131d90fffd83487": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "2a542e300ae44e6ca9195490f5346a59": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "32a4ceef1d6747269046bea8bf3945e5": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "401f1ec663f94c518e91c6152d1c44b1": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "463322bc68694ec6815c5b33cdab9b98": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonModel", "state": { "description": "+", "layout": "IPY_MODEL_038c13b1ead74af48489380ebe1d5eca", "style": "IPY_MODEL_d228e350037d4b8b9090b509f6fef20b", "tooltip": null } }, "4baac408208e48eaaae2ede43b2e90fb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonModel", "state": { "description": "-", "layout": "IPY_MODEL_ed43b7f2439942c68ed83aa23ae3d517", "style": "IPY_MODEL_e9ba42241fa2412799c171b8a0a804c1", "tooltip": null } }, "54c6da5bf8e547568647a845013af33c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "5c29f0375b0b45cdbfdd721f85d93b64": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_0a19a672319f49b887a5065729e09be1", "style": "IPY_MODEL_fca1cc851b0045339182f0db3de50ad2", "value": "2" } }, "5f77dbaa00564456aefa9b666d0f09b0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelStyleModel", "state": { "description_width": "", "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "676dac06718e453594023bd62cb76e46": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelStyleModel", "state": { "description_width": "", "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "6b51ceb5e4c6424b8d0d9add6757d1a8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonStyleModel", "state": { "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "73f6cd1e20dc42d9ae16b3ac8e5be110": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "7f17288bd70f4f36b281155d30be0bac": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_ca1c2f5eb5d14f71a5ceeeaeb39afd01", "IPY_MODEL_022f0cf6afad4cb3ad212fd9a549bc74", "IPY_MODEL_84e8479161044c74b8f066ee55ccfa7d", "IPY_MODEL_9a8b13a47db040e097573894d77919e9", "IPY_MODEL_197be31bf19b47ceae049b17e1560963", "IPY_MODEL_b177918e39ac491eaf94089e98b8e91d" ], "layout": "IPY_MODEL_8a06d332fe0f4a7f88981c0c7d0e2e93" } }, "81480b58ff6f42ed9e553d4e143410b1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonModel", "state": { "description": "+", "layout": "IPY_MODEL_d9e7863139234da5bbd8e53ab7fbbcad", "style": "IPY_MODEL_f4c6e5a3f5ab4e8584438522c7e9883d", "tooltip": null } }, "84b8bd8d4f09486a994f3071ad3f9c37": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "84e8479161044c74b8f066ee55ccfa7d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_cf9babcae86041d48e9b6f168a46f7cc", "style": "IPY_MODEL_676dac06718e453594023bd62cb76e46", "value": "Draw radius:" } }, "8a06d332fe0f4a7f88981c0c7d0e2e93": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "8cb992c3d714450088f1c0611975c46f": { "model_module": "ipyevents", "model_module_version": "2.0.1", "model_name": "EventModel", "state": { "_supported_key_events": [ "keydown", "keyup" ], "_supported_mouse_events": [ "click", "auxclick", "dblclick", "mouseenter", "mouseleave", "mousedown", "mouseup", "mousemove", "wheel", "contextmenu", "dragstart", "drag", "dragend", "dragenter", "dragover", "dragleave", "drop" ], "_supported_touch_events": [ "touchstart", "touchend", "touchmove", "touchcancel" ], "_view_module": "@jupyter-widgets/controls", "source": "IPY_MODEL_26c71af86b5c4e789416d0b9721cd70e", "throttle_or_debounce": "", "watched_events": [ "mousemove" ], "xy_coordinate_system": "" } }, "94e415ef5eaf4767b1f0a0b80c5c002c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonModel", "state": { "description": "+", "layout": "IPY_MODEL_ed43b7f2439942c68ed83aa23ae3d517", "style": "IPY_MODEL_b42e68838c344d8a82f1fe42fcaccb83", "tooltip": null } }, "9a8b13a47db040e097573894d77919e9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_f0471834559040c2b52e46816e905d57", "IPY_MODEL_5c29f0375b0b45cdbfdd721f85d93b64", "IPY_MODEL_81480b58ff6f42ed9e553d4e143410b1" ], "layout": "IPY_MODEL_73f6cd1e20dc42d9ae16b3ac8e5be110" } }, "9d6b6047f26d4de3a7b60dd6b4f0e579": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "9eedc7dd19034648b409e436fb9df936": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_d0a4cb4d4d214f749488bbea9793947f", "IPY_MODEL_b166256ab10842c7860862c4175d2399" ], "layout": "IPY_MODEL_2a542e300ae44e6ca9195490f5346a59" } }, "b166256ab10842c7860862c4175d2399": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "IntSliderModel", "state": { "behavior": "drag-tap", "continuous_update": false, "description": "Slice", "layout": "IPY_MODEL_f0453a59baf24895b9bc7ad914fac03e", "max": 59, "style": "IPY_MODEL_f9a0171ff7d7417ea4522aef68c20c19", "value": 30 } }, "b177918e39ac491eaf94089e98b8e91d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_4baac408208e48eaaae2ede43b2e90fb", "IPY_MODEL_c7f0d86817dc4d31b2d05004a461deab", "IPY_MODEL_94e415ef5eaf4767b1f0a0b80c5c002c" ], "layout": "IPY_MODEL_401f1ec663f94c518e91c6152d1c44b1" } }, "b42e68838c344d8a82f1fe42fcaccb83": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonStyleModel", "state": { "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "b5681c775ef54b658f484a534a8bd4fc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelStyleModel", "state": { "description_width": "", "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "b9aa54164d7643308e756addc507773a": { "model_module": "ipycanvas", "model_module_version": "^0.13", "model_name": "CanvasManagerModel", "state": { "_model_module_version": "^0.13", "_view_module": null, "_view_module_version": "" } }, "c7f0d86817dc4d31b2d05004a461deab": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_15b109eddbc04b839c0f0e2f19baec2d", "style": "IPY_MODEL_0eb51cea9f544daebe6e7c6b8802335e", "value": "10" } }, "ca1c2f5eb5d14f71a5ceeeaeb39afd01": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_9d6b6047f26d4de3a7b60dd6b4f0e579", "style": "IPY_MODEL_b5681c775ef54b658f484a534a8bd4fc", "value": "Label ID:" } }, "cf9babcae86041d48e9b6f168a46f7cc": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "d0a4cb4d4d214f749488bbea9793947f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_14eb17673653472c8f78e0a672ea26d7", "IPY_MODEL_7f17288bd70f4f36b281155d30be0bac" ], "layout": "IPY_MODEL_84b8bd8d4f09486a994f3071ad3f9c37" } }, "d228e350037d4b8b9090b509f6fef20b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonStyleModel", "state": { "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "d666b881d22f4fa4bb0894b685f334e6": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_26c71af86b5c4e789416d0b9721cd70e" ], "layout": "IPY_MODEL_54c6da5bf8e547568647a845013af33c" } }, "d6802c356eb348c2849077a59d50ad30": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelStyleModel", "state": { "description_width": "", "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "d9c20a6f09204583b1472d6b89e1b8fc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_129392e9d36940d0a969917f62e39a65", "style": "IPY_MODEL_d6802c356eb348c2849077a59d50ad30", "value": "2" } }, "d9e7863139234da5bbd8e53ab7fbbcad": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "max_width": "30px", "min_width": "10px" } }, "da84c306fc794ffc826b025b76854d67": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "e9ba42241fa2412799c171b8a0a804c1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonStyleModel", "state": { "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "ed43b7f2439942c68ed83aa23ae3d517": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "max_width": "30px", "min_width": "10px" } }, "f0453a59baf24895b9bc7ad914fac03e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "f0471834559040c2b52e46816e905d57": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonModel", "state": { "description": "-", "layout": "IPY_MODEL_d9e7863139234da5bbd8e53ab7fbbcad", "style": "IPY_MODEL_6b51ceb5e4c6424b8d0d9add6757d1a8", "tooltip": null } }, "f4c6e5a3f5ab4e8584438522c7e9883d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonStyleModel", "state": { "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "f9a0171ff7d7417ea4522aef68c20c19": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "SliderStyleModel", "state": { "description_width": "" } }, "fca1cc851b0045339182f0db3de50ad2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelStyleModel", "state": { "description_width": "", "font_family": null, "font_size": null, "font_style": null, "font_variant": null, "font_weight": null, "text_color": null, "text_decoration": null } }, "ff1606ca36da47c1a2c48307ea5bec28": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ButtonModel", "state": { "description": "-", "layout": "IPY_MODEL_038c13b1ead74af48489380ebe1d5eca", "style": "IPY_MODEL_13e45a27d526406cb17e1407e21ab2f0", "tooltip": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }