Skip to content

Instantly share code, notes, and snippets.

@ariG23498
Last active May 19, 2021 08:02
Show Gist options
  • Save ariG23498/961f8f9aa667509e88252aac65d2605c to your computer and use it in GitHub Desktop.
Save ariG23498/961f8f9aa667509e88252aac65d2605c to your computer and use it in GitHub Desktop.
wandb-local-seg
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "scratchpad",
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"dc10b07e32f34f22b5200369eef50b83": {
"model_module": "@jupyter-widgets/controls",
"model_name": "VBoxModel",
"state": {
"_view_name": "VBoxView",
"_dom_classes": [],
"_model_name": "VBoxModel",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.5.0",
"box_style": "",
"layout": "IPY_MODEL_596f64b86c2349c1be46ef95239d491a",
"_model_module": "@jupyter-widgets/controls",
"children": [
"IPY_MODEL_e16a72bd1e234c158130e8ae0e1b6ed1",
"IPY_MODEL_3cb794c339594f5989313548c348f291"
]
}
},
"596f64b86c2349c1be46ef95239d491a": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"e16a72bd1e234c158130e8ae0e1b6ed1": {
"model_module": "@jupyter-widgets/controls",
"model_name": "LabelModel",
"state": {
"_view_name": "LabelView",
"style": "IPY_MODEL_fb993943f68b487fbfd0909e9560acbd",
"_dom_classes": [],
"description": "",
"_model_name": "LabelModel",
"placeholder": "​",
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": " 1.54MB of 1.54MB uploaded (0.00MB deduped)\r",
"_view_count": null,
"_view_module_version": "1.5.0",
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_ee242df841b947ee92b2e43a83482416"
}
},
"3cb794c339594f5989313548c348f291": {
"model_module": "@jupyter-widgets/controls",
"model_name": "FloatProgressModel",
"state": {
"_view_name": "ProgressView",
"style": "IPY_MODEL_f28edd94f9f342ab82e3d36f13a893c5",
"_dom_classes": [],
"description": "",
"_model_name": "FloatProgressModel",
"bar_style": "",
"max": 1,
"_view_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"value": 1,
"_view_count": null,
"_view_module_version": "1.5.0",
"orientation": "horizontal",
"min": 0,
"description_tooltip": null,
"_model_module": "@jupyter-widgets/controls",
"layout": "IPY_MODEL_4ff85465575049b89e11c2eed63aeba8"
}
},
"fb993943f68b487fbfd0909e9560acbd": {
"model_module": "@jupyter-widgets/controls",
"model_name": "DescriptionStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "DescriptionStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"_model_module": "@jupyter-widgets/controls"
}
},
"ee242df841b947ee92b2e43a83482416": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
},
"f28edd94f9f342ab82e3d36f13a893c5": {
"model_module": "@jupyter-widgets/controls",
"model_name": "ProgressStyleModel",
"state": {
"_view_name": "StyleView",
"_model_name": "ProgressStyleModel",
"description_width": "",
"_view_module": "@jupyter-widgets/base",
"_model_module_version": "1.5.0",
"_view_count": null,
"_view_module_version": "1.2.0",
"bar_color": null,
"_model_module": "@jupyter-widgets/controls"
}
},
"4ff85465575049b89e11c2eed63aeba8": {
"model_module": "@jupyter-widgets/base",
"model_name": "LayoutModel",
"state": {
"_view_name": "LayoutView",
"grid_template_rows": null,
"right": null,
"justify_content": null,
"_view_module": "@jupyter-widgets/base",
"overflow": null,
"_model_module_version": "1.2.0",
"_view_count": null,
"flex_flow": null,
"width": null,
"min_width": null,
"border": null,
"align_items": null,
"bottom": null,
"_model_module": "@jupyter-widgets/base",
"top": null,
"grid_column": null,
"overflow_y": null,
"overflow_x": null,
"grid_auto_flow": null,
"grid_area": null,
"grid_template_columns": null,
"flex": null,
"_model_name": "LayoutModel",
"justify_items": null,
"grid_row": null,
"max_height": null,
"align_content": null,
"visibility": null,
"align_self": null,
"height": null,
"min_height": null,
"padding": null,
"grid_auto_rows": null,
"grid_gap": null,
"max_width": null,
"order": null,
"_view_module_version": "1.2.0",
"grid_template_areas": null,
"object_position": null,
"object_fit": null,
"grid_auto_columns": null,
"margin": null,
"display": null,
"left": null
}
}
}
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/ariG23498/961f8f9aa667509e88252aac65d2605c/scratchpad.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "m5c601aomx3U",
"outputId": "14178da1-9593-4d96-f49a-bee14edb18dd"
},
"source": [
"!apt-get install p7zip-full"
],
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"text": [
"Reading package lists... Done\n",
"Building dependency tree \n",
"Reading state information... Done\n",
"p7zip-full is already the newest version (16.02+dfsg-6).\n",
"The following package was automatically installed and is no longer required:\n",
" libnvidia-common-460\n",
"Use 'apt autoremove' to remove it.\n",
"0 upgraded, 0 newly installed, 0 to remove and 34 not upgraded.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "RdhfOKyYm9K1",
"outputId": "33ad6b46-3c8d-4f5e-fa21-c2c93342122e"
},
"source": [
"!wget https://github.com/wandb/client/files/6506552/segm-mask.zip"
],
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"text": [
"--2021-05-19 07:52:10-- https://github.com/wandb/client/files/6506552/segm-mask.zip\n",
"Resolving github.com (github.com)... 140.82.114.3\n",
"Connecting to github.com (github.com)|140.82.114.3|:443... connected.\n",
"HTTP request sent, awaiting response... 302 Found\n",
"Location: https://github-repository-files.githubusercontent.com/86031674/6506552?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210519%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210519T075210Z&X-Amz-Expires=300&X-Amz-Signature=9617186c69968d456a7fc43b21709969b36fc93d66857ffdcb65ae0171ee9edd&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=86031674&response-content-disposition=attachment%3Bfilename%3Dsegm-mask.zip&response-content-type=application%2Fzip [following]\n",
"--2021-05-19 07:52:10-- https://github-repository-files.githubusercontent.com/86031674/6506552?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210519%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210519T075210Z&X-Amz-Expires=300&X-Amz-Signature=9617186c69968d456a7fc43b21709969b36fc93d66857ffdcb65ae0171ee9edd&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=86031674&response-content-disposition=attachment%3Bfilename%3Dsegm-mask.zip&response-content-type=application%2Fzip\n",
"Resolving github-repository-files.githubusercontent.com (github-repository-files.githubusercontent.com)... 185.199.108.154, 185.199.109.154, 185.199.110.154, ...\n",
"Connecting to github-repository-files.githubusercontent.com (github-repository-files.githubusercontent.com)|185.199.108.154|:443... connected.\n",
"HTTP request sent, awaiting response... 200 OK\n",
"Length: 1600763 (1.5M) [application/zip]\n",
"Saving to: ‘segm-mask.zip’\n",
"\n",
"segm-mask.zip 100%[===================>] 1.53M --.-KB/s in 0.1s \n",
"\n",
"2021-05-19 07:52:10 (11.0 MB/s) - ‘segm-mask.zip’ saved [1600763/1600763]\n",
"\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JI0gel0Lm5eb",
"outputId": "0b081378-68a7-42cd-b902-02d242491242"
},
"source": [
"!7z x /content/segm-mask.zip"
],
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"text": [
"\n",
"7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21\n",
"p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs Intel(R) Xeon(R) CPU @ 2.30GHz (306F0),ASM,AES-NI)\n",
"\n",
"Scanning the drive for archives:\n",
" 0M Scan /content/\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b1 file, 1600763 bytes (1564 KiB)\n",
"\n",
"Extracting archive: /content/segm-mask.zip\n",
"--\n",
"Path = /content/segm-mask.zip\n",
"Type = zip\n",
"Physical Size = 1600763\n",
"\n",
" 0%\b\b\b\b \b\b\b\b\n",
"Enter password (will not be echoed):\n",
" 16% 1 - segm-mask/sideboard.png\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bEverything is Ok\n",
"\n",
"Folders: 1\n",
"Files: 12\n",
"Size: 1598968\n",
"Compressed: 1600763\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "VFJleMWsnf-H"
},
"source": [
"!mv /content/segm-mask/* /content/"
],
"execution_count": 5,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "wRsHBj-EpDHd",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "cc630e45-2e36-4ea6-c037-05df9d22b065"
},
"source": [
"!pip install wandb -qqq\n",
"import wandb"
],
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": [
"\u001b[K |████████████████████████████████| 1.8MB 4.0MB/s \n",
"\u001b[K |████████████████████████████████| 133kB 29.8MB/s \n",
"\u001b[K |████████████████████████████████| 102kB 8.9MB/s \n",
"\u001b[K |████████████████████████████████| 174kB 23.8MB/s \n",
"\u001b[K |████████████████████████████████| 71kB 7.8MB/s \n",
"\u001b[?25h Building wheel for pathtools (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
" Building wheel for subprocess32 (setup.py) ... \u001b[?25l\u001b[?25hdone\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "-VE3MabfZAcx",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 789,
"referenced_widgets": [
"dc10b07e32f34f22b5200369eef50b83",
"596f64b86c2349c1be46ef95239d491a",
"e16a72bd1e234c158130e8ae0e1b6ed1",
"3cb794c339594f5989313548c348f291",
"fb993943f68b487fbfd0909e9560acbd",
"ee242df841b947ee92b2e43a83482416",
"f28edd94f9f342ab82e3d36f13a893c5",
"4ff85465575049b89e11c2eed63aeba8"
]
},
"outputId": "a52451ff-1b31-4899-e943-190d8c1652f7"
},
"source": [
"import numpy as np\n",
"from PIL import Image\n",
"\n",
"\n",
"# 1️⃣ Start a new run, tracking config metadata\n",
"wandb.init(entity=\"repro\", project=\"GH-2198\")\n",
"\n",
"# Images and GTs are from NYU Depth v2 https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html\n",
"rgbs = ['kitchen1.png', 'kitchen2.png', 'sideboard.png', 'windows.png']\n",
"preds = ['kitchen1_pred.mask.png', 'kitchen2_pred.mask.png', 'sideboard_pred.mask.png', 'windows_pred.mask.png']\n",
"gts = ['kitchen1.mask.png', 'kitchen2.mask.png', 'sideboard.mask.png', 'windows.mask.png']\n",
"\n",
"CLASS_NAMES = ['void',\n",
" 'wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa',\n",
" 'table', 'door', 'window', 'bookshelf', 'picture',\n",
" 'counter', 'blinds', 'desk', 'shelves', 'curtain',\n",
" 'dresser', 'pillow', 'mirror', 'floor mat', 'clothes',\n",
" 'ceiling', 'books', 'refridgerator', 'television',\n",
" 'paper', 'towel', 'shower curtain', 'box', 'whiteboard',\n",
" 'person', 'night stand', 'toilet', 'sink', 'lamp',\n",
" 'bathtub', 'bag',\n",
" 'otherstructure', 'otherfurniture', 'otherprop']\n",
"\n",
"_class_label_dict_wo_void = {i: c for i, c in enumerate(CLASS_NAMES[1:])}\n",
"_class_label_dict = {i: c for i, c in enumerate(CLASS_NAMES)}\n",
"\n",
"def log_sem_seg(rgbs, preds, gts=None, title='Predictions'):\n",
" img_list = []\n",
" for rgb, pred, gt in zip(rgbs, preds, gts):\n",
" rgb = np.asarray(Image.open(rgb))\n",
" pred = np.asarray(Image.open(pred))\n",
" gt = np.asarray(Image.open(gt))\n",
" masks = {'prediction': {'mask_data': pred.astype('uint8'),\n",
" 'class_labels': _class_label_dict_wo_void}}\n",
" if gt is not None:\n",
" masks.update({'ground_truth': {'mask_data': gt.astype('uint8'),\n",
" 'class_labels': _class_label_dict}})\n",
" img_list.append(wandb.Image(rgb.astype('uint8'), masks=masks))\n",
"\n",
" wandb.log({title: img_list}, commit=False)\n",
"\n",
"log_sem_seg(rgbs, preds, gts)\n",
"\n",
"wandb.finish()"
],
"execution_count": 7,
"outputs": [
{
"output_type": "display_data",
"data": {
"application/javascript": [
"\n",
" window._wandbApiKey = new Promise((resolve, reject) => {\n",
" function loadScript(url) {\n",
" return new Promise(function(resolve, reject) {\n",
" let newScript = document.createElement(\"script\");\n",
" newScript.onerror = reject;\n",
" newScript.onload = resolve;\n",
" document.body.appendChild(newScript);\n",
" newScript.src = url;\n",
" });\n",
" }\n",
" loadScript(\"https://cdn.jsdelivr.net/npm/postmate/build/postmate.min.js\").then(() => {\n",
" const iframe = document.createElement('iframe')\n",
" iframe.style.cssText = \"width:0;height:0;border:none\"\n",
" document.body.appendChild(iframe)\n",
" const handshake = new Postmate({\n",
" container: iframe,\n",
" url: 'https://wandb.ai/authorize'\n",
" });\n",
" const timeout = setTimeout(() => reject(\"Couldn't auto authenticate\"), 5000)\n",
" handshake.then(function(child) {\n",
" child.on('authorize', data => {\n",
" clearTimeout(timeout)\n",
" resolve(data)\n",
" });\n",
" });\n",
" })\n",
" });\n",
" "
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"\u001b[34m\u001b[1mwandb\u001b[0m: You can find your API key in your browser here: https://wandb.ai/authorize\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"wandb: Paste an API key from your profile and hit enter: ··········\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"\u001b[34m\u001b[1mwandb\u001b[0m: Appending key for api.wandb.ai to your netrc file: /root/.netrc\n"
],
"name": "stderr"
},
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" Tracking run with wandb version 0.10.30<br/>\n",
" Syncing run <strong style=\"color:#cdcd00\">clean-deluge-6</strong> to <a href=\"https://wandb.ai\" target=\"_blank\">Weights & Biases</a> <a href=\"https://docs.wandb.com/integrations/jupyter.html\" target=\"_blank\">(Documentation)</a>.<br/>\n",
" Project page: <a href=\"https://wandb.ai/repro/GH-2198\" target=\"_blank\">https://wandb.ai/repro/GH-2198</a><br/>\n",
" Run page: <a href=\"https://wandb.ai/repro/GH-2198/runs/u0p89x2m\" target=\"_blank\">https://wandb.ai/repro/GH-2198/runs/u0p89x2m</a><br/>\n",
" Run data is saved locally in <code>/content/wandb/run-20210519_075534-u0p89x2m</code><br/><br/>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"(480, 640, 3)\n",
"(480, 640)\n",
"(480, 640)\n",
"(480, 640, 3)\n",
"(480, 640)\n",
"(480, 640)\n",
"(480, 640, 3)\n",
"(480, 640)\n",
"(480, 640)\n",
"(480, 640, 3)\n",
"(480, 640)\n",
"(480, 640)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"text/html": [
"<br/>Waiting for W&B process to finish, PID 168<br/>Program ended successfully."
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "dc10b07e32f34f22b5200369eef50b83",
"version_minor": 0,
"version_major": 2
},
"text/plain": [
"VBox(children=(Label(value=' 0.00MB of 1.53MB uploaded (0.00MB deduped)\\r'), FloatProgress(value=0.00033947875…"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"Find user logs for this run at: <code>/content/wandb/run-20210519_075534-u0p89x2m/logs/debug.log</code>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"Find internal logs for this run at: <code>/content/wandb/run-20210519_075534-u0p89x2m/logs/debug-internal.log</code>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"<h3>Run summary:</h3><br/><style>\n",
" table.wandb td:nth-child(1) { padding: 0 10px; text-align: right }\n",
" </style><table class=\"wandb\">\n",
"<tr><td>_runtime</td><td>4</td></tr><tr><td>_timestamp</td><td>1621410938</td></tr><tr><td>_step</td><td>0</td></tr></table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"<h3>Run history:</h3><br/><style>\n",
" table.wandb td:nth-child(1) { padding: 0 10px; text-align: right }\n",
" </style><table class=\"wandb\">\n",
"<tr><td>_runtime</td><td>▁</td></tr><tr><td>_timestamp</td><td>▁</td></tr><tr><td>_step</td><td>▁</td></tr></table><br/>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"Synced 5 W&B file(s), 12 media file(s), 0 artifact file(s) and 0 other file(s)"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
" <br/>Synced <strong style=\"color:#cdcd00\">clean-deluge-6</strong>: <a href=\"https://wandb.ai/repro/GH-2198/runs/u0p89x2m\" target=\"_blank\">https://wandb.ai/repro/GH-2198/runs/u0p89x2m</a><br/>\n",
" "
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment