{ "cells": [ { "cell_type": "markdown", "id": "6ab66bc0-91d6-493f-9efd-baaaa9a37829", "metadata": {}, "source": [ "# Schemas mechanics\n", "\n", "The Caipy loader features a way to parse the caipyjson and efficiently transform into column-wise data which is more compatible with pandas.\n", "\n", "The schemas will help check caipy json structure, automatically normalize the data so that it's not nested anymore, and will booleanize the sets. See related tutorial about booleanization here : [Demo booleanization](7_demo_booleanize.ipynb)\n", "\n", "## What is a schemas ?\n", "\n", "A schemas is way to specify data structure. For each key of an object is given its type. It can be a string, a float, to more complexe types like lists and objects themselves. That ways you can specify how should the data be nested.\n", "\n", "See more info about json schemas in the [official documentation](https://json-schema.org/specification)\n", "\n", "This library provides a default schema but you can provide your own schema as well with a path or a url.\n", "\n", ".. nbinfo::\n", " For a better readability, we use mercury's [JSON displayer](https://runmercury.com/examples/display-json-jupyter-notebook/), but you can simply replace `mr.JSON` with `display` for every shown dictionary\n" ] }, { "cell_type": "code", "execution_count": 1, "id": "de814ecb-25c8-454d-8081-094a53e37dc0", "metadata": {}, "outputs": [], "source": [ "%%capture\n", "\n", "%load_ext autoreload\n", "%autoreload 2\n", "import json\n", "\n", "import mercury as mr\n", "\n", "from lours.dataset.io.schema_util import load_json_schema\n", "\n", "app = mr.App(title=\"Display notebook\", static_notebook=True)" ] }, { "cell_type": "code", "execution_count": 2, "id": "9f4eb685-6f28-4f36-a9f8-1c5d79e15412", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "default_caipy_schema = load_json_schema(\"default\")\n", "# Show the json with mercury, for better readability\n", "mr.JSON(default_caipy_schema)" ] }, { "cell_type": "markdown", "id": "09257084-56fe-4b17-be6f-28c65585a7a3", "metadata": {}, "source": [ "The interesting types for us are\n", "- `enum` which can be converted to [pandas categorical](https://pandas.pydata.org/docs/user_guide/categorical.html)\n", "- `array`, with the `uniqueItems` set to `True`, this can be seen as an unordered set and thus can be [booleanized](7_demo_booleanize.ipynb)\n", "- `object` this tells us that data is nested and thus need to be normalized. For example, the `weather` tag for images is inside the `tags` object. In the images dataframe, this will go in the `tags.weather` column.\n", "\n", "In the future, we might have to deal with `array` object that are not ordered sets. They can be converted to categorical data within the columns `array.1`, `array.2` etc, but there is no support for it for the moment.\n", "\n", "### Data checking\n", "\n", "The first obvious use of schemas is for validation.\n", "\n", "For example the following data structure is rejected because the value `custom_dict[\"annotations\"][0][\"attributes\"][\"colors\"]` is set to `turquoise` while it must be on of the following values, that are specified in the schema: `custom_caipy_schema[\"properties\"][\"annotations\"][\"items\"][\"properties\"][\"attributes\"][\"properties\"][\"colors\"][\"items\"][\"enum\"]`" ] }, { "cell_type": "code", "execution_count": 3, "id": "5e3c191a-6141-43e6-ad28-72b5dd295963", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with open(\"../../test_lours/test_data/caipy_dataset/tags/custom_schema/785.json\") as f:\n", " custom_dict = json.load(f)\n", "\n", "mr.JSON(custom_dict)\n", "\n", "mr.JSON(\n", " default_caipy_schema[\"properties\"][\"annotations\"][\"items\"][\"properties\"][\n", " \"attributes\"\n", " ][\"properties\"][\"colors\"][\"items\"][\"enum\"]\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "id": "22741882-a848-411f-8329-1b3163917dd9", "metadata": { "tags": [ "raises-exception" ] }, "outputs": [ { "ename": "ValidationError", "evalue": "\"turquoise\" is not one of [\"red\",\"green\",\"yellow\",\"blue\",\"white\",\"black\",\"orange\",\"purple\",\"grey\",\"brown\",\"pink\",\"beige\",\"cyan\"]\n\nFailed validating \"enum\" in schema[\"properties\"][\"annotations\"][\"items\"][\"properties\"][\"attributes\"][\"properties\"][\"colors\"][\"items\"]\n\nOn instance[\"annotations\"][0][\"attributes\"][\"colors\"][1]:\n \"turquoise\"", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValidationError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[4], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mjsonschema_rs\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m JSONSchema\n\u001b[1;32m 3\u001b[0m validator \u001b[38;5;241m=\u001b[39m JSONSchema(default_caipy_schema)\n\u001b[0;32m----> 5\u001b[0m \u001b[43mvalidator\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mvalidate\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcustom_dict\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[0;31mValidationError\u001b[0m: \"turquoise\" is not one of [\"red\",\"green\",\"yellow\",\"blue\",\"white\",\"black\",\"orange\",\"purple\",\"grey\",\"brown\",\"pink\",\"beige\",\"cyan\"]\n\nFailed validating \"enum\" in schema[\"properties\"][\"annotations\"][\"items\"][\"properties\"][\"attributes\"][\"properties\"][\"colors\"][\"items\"]\n\nOn instance[\"annotations\"][0][\"attributes\"][\"colors\"][1]:\n \"turquoise\"" ] } ], "source": [ "from jsonschema_rs import JSONSchema\n", "\n", "validator = JSONSchema(default_caipy_schema)\n", "\n", "validator.validate(custom_dict)" ] }, { "cell_type": "markdown", "id": "36e70901-4c47-4390-aecf-ac16b3266bf4", "metadata": {}, "source": [ "### list and enum formatting\n", "\n", "As mentioned above, we can use the schemas to construct dataframe with the right columns and dtypes, even if some values are not present.\n", "\n", "A regular caveat is the mix of fields that are present in some annotations but not in others. Pandas deals with missing values with `NaN` and `None`, but we can replace them with the right default value. For example, if we know that a field is a list, we can give it the empty list as default value." ] }, { "cell_type": "code", "execution_count": 5, "id": "9034c67e-7f95-4468-9481-d4cec283d6c7", "metadata": {}, "outputs": [], "source": [ "from lours.dataset.io.schema_util import (\n", " fill_with_dtypes_and_default_value,\n", " get_enums,\n", " get_remapping_dict_from_schema,\n", ")\n", "\n", "image_schema = default_caipy_schema[\"properties\"][\"image\"]\n", "annotations_schema = default_caipy_schema[\"properties\"][\"annotations\"][\"items\"]" ] }, { "cell_type": "markdown", "id": "9bca5efe-2068-44fe-a4d6-b4543f69a319", "metadata": {}, "source": [ "To better understand the flattening of the data, we can look at some utility function with schemas.\n", "\n", "`get_remapping_dict_from_schema` function will construct a nested dict where the values are the column name destination.\n", "\n", "`get_enums` will search for arrays with unique items and retrieve all possible values. This will be used to construct boolean columns which tell us for each enum if it was in the original list for this very row." ] }, { "cell_type": "code", "execution_count": 6, "id": "3e797653-948a-4a9c-a33d-c3e837b52c15", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mr.JSON(get_remapping_dict_from_schema(image_schema))" ] }, { "cell_type": "code", "execution_count": 7, "id": "6b115140-3b0f-42fe-86a3-9349c7a6566b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "enums = get_enums(annotations_schema)\n", "# convert sets to list for json serialization\n", "mr.JSON({k: list(v) for k, v in enums.items()})" ] }, { "cell_type": "markdown", "id": "03106ccb-0e67-42c6-9b45-766e11a7f4ee", "metadata": {}, "source": [ "In the following cells, we use the caipy loader with and without the default schema. Notice how in the the annotations data of image1, there is no \"position\" in the dictionary.\n", "\n", "If we load the caipy without schema, we can flatten the json data, thanks to [pandas.json_normalize](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.json_normalize.html), but the missing data will be set to `None`, while it should be an empty list.\n", "\n", "Using the schema can help setting the right default value" ] }, { "cell_type": "code", "execution_count": 8, "id": "ceab5df0-764a-4d36-8f31-31ba94492866", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from lours.dataset import from_caipy\n", "\n", "with open(\n", " \"../../test_lours/test_data/caipy_dataset/tags/small_tagged_dataset/Annotations/image1.json\"\n", ") as f:\n", " caipy_json = json.load(f)\n", "mr.JSON(caipy_json[\"annotations\"][0])\n", "with open(\n", " \"../../test_lours/test_data/caipy_dataset/tags/small_tagged_dataset/Annotations/image2.json\"\n", ") as f:\n", " caipy_json = json.load(f)\n", "mr.JSON(caipy_json[\"annotations\"][0])" ] }, { "cell_type": "code", "execution_count": 9, "id": "6327eb19-c223-4751-9c6b-97359bbffad2", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "83fa3e7b01c3437fa9ada7adbb43a4ab", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/2 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
image_idcategory_strcategory_idbox_x_minbox_y_minbox_widthbox_heightareaattributes.colorsattributes.occludedattributes.position
id
2697916091stop sign13100.22117.54253.43274.9046726.4303[red, white]TrueNone
116123410395teddy bear8849.1966.20378.97379.6884587.4391[grey]None[front]
\n", "" ], "text/plain": [ " image_id category_str category_id box_x_min box_y_min box_width \\\n", "id \n", "269791 6091 stop sign 13 100.22 117.54 253.43 \n", "1161234 10395 teddy bear 88 49.19 66.20 378.97 \n", "\n", " box_height area attributes.colors attributes.occluded \\\n", "id \n", "269791 274.90 46726.4303 [red, white] True \n", "1161234 379.68 84587.4391 [grey] None \n", "\n", " attributes.position \n", "id \n", "269791 None \n", "1161234 [front] " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "no_schema_dataset.annotations" ] }, { "cell_type": "code", "execution_count": 11, "id": "52706cbc-3a74-476e-a1a7-fd4ddbee938e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
image_idcategory_strcategory_idbox_x_minbox_y_minbox_widthbox_heightareaattributes.colorsattributes.occludedattributes.position
id
2697916091stop sign13100.22117.54253.43274.9046726.4303[red, white]True[]
116123410395teddy bear8849.1966.20378.97379.6884587.4391[grey]None[front]
\n", "
" ], "text/plain": [ " image_id category_str category_id box_x_min box_y_min box_width \\\n", "id \n", "269791 6091 stop sign 13 100.22 117.54 253.43 \n", "1161234 10395 teddy bear 88 49.19 66.20 378.97 \n", "\n", " box_height area attributes.colors attributes.occluded \\\n", "id \n", "269791 274.90 46726.4303 [red, white] True \n", "1161234 379.68 84587.4391 [grey] None \n", "\n", " attributes.position \n", "id \n", "269791 [] \n", "1161234 [front] " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "schema_dataset.annotations" ] }, { "cell_type": "markdown", "id": "c2acc4bb-0177-4a17-b858-f1259e7a5bb1", "metadata": {}, "source": [ "Note that thanks to schema tool `fill_with_default_value` we can put default values afterward." ] }, { "cell_type": "code", "execution_count": 12, "id": "f75c7186-517b-4ac6-a862-82eca358c611", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
image_idcategory_strcategory_idbox_x_minbox_y_minbox_widthbox_heightareaattributes.colorsattributes.occludedattributes.position
id
2697916091stop sign13100.22117.54253.43274.9046726.4303[red, white]True[]
116123410395teddy bear8849.1966.20378.97379.6884587.4391[grey]None[front]
\n", "
" ], "text/plain": [ " image_id category_str category_id box_x_min box_y_min box_width \\\n", "id \n", "269791 6091 stop sign 13 100.22 117.54 253.43 \n", "1161234 10395 teddy bear 88 49.19 66.20 378.97 \n", "\n", " box_height area attributes.colors attributes.occluded \\\n", "id \n", "269791 274.90 46726.4303 [red, white] True \n", "1161234 379.68 84587.4391 [grey] None \n", "\n", " attributes.position \n", "id \n", "269791 [] \n", "1161234 [front] " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fill_with_dtypes_and_default_value(annotations_schema, schema_dataset.annotations)" ] }, { "cell_type": "markdown", "id": "aaaca254-e00a-4d32-b394-0a679bf9602d", "metadata": {}, "source": [ "### From dataframe to nested json\n", "\n", "Once you have manipulated your dataset you can then re-save it according to the schema." ] }, { "cell_type": "code", "execution_count": 13, "id": "7a889e81-3fd6-4fb5-885c-356be2a82803", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from lours.dataset.io.schema_util import remap_dict\n", "\n", "flat_dict = schema_dataset.annotations.iloc[0].to_dict()\n", "mr.JSON(flat_dict)\n", "\n", "nested_dict = remap_dict(flat_dict, get_remapping_dict_from_schema(annotations_schema))\n", "mr.JSON(nested_dict)" ] }, { "cell_type": "markdown", "id": "0f54b8a1-94b1-40c6-93b1-4ae2cca0ec52", "metadata": {}, "source": [ "## Using a custom schema" ] }, { "cell_type": "markdown", "id": "582e7e7d-685b-42e2-b0e5-6f29e715a3ce", "metadata": {}, "source": [ "If you have custom data that you want to work with, you can give your own json schema instead of the ones provided by the official package.\n", "\n", "The given schema to `from_caipy` and `from_caipy_generic` can be either a path to a json or directly a dictionary.\n", "\n", "In the following schema, the value \"turquoise\" is now considered as a valid value in image's spectrum. Also, the possible values for list items for annotations colors (`annotation[\"attributes\"][\"colors\"]`) and annotations actions (`annotations[\"attributes\"][\"actions\"]`) and reduced to only 2 possible items each. Respectively \"blue\" and \"white\" for colors, and \"sitting\" and \"laying\" for actions.\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "558af890-daf3-4054-8bf5-465bcb40c2ff", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with open(\"../../test_lours/test_data/caipy_dataset/tags/custom_schema.json\") as f:\n", " custom_schema = json.load(f)\n", "\n", "mr.JSON(custom_schema)" ] }, { "cell_type": "code", "execution_count": 15, "id": "8204ae39-103e-444d-a18c-86dd285feb3f", "metadata": {}, "outputs": [], "source": [ "from lours.dataset import from_caipy_generic" ] }, { "cell_type": "markdown", "id": "880ad091-ffee-477c-a539-c15934925a44", "metadata": {}, "source": [ "As mentioned above, this cell will fail because by default caipy expects the CA-V5.b schema" ] }, { "cell_type": "code", "execution_count": 16, "id": "76b8077b-8506-40c6-92f0-74bf58156d17", "metadata": { "tags": [ "raises-exception" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "specifying a fictive path for images : ../../test_lours/test_data/caipy_dataset/tags/Images\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e8bbf1c121694b819c95b56fce893fb2", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/1 [00:00 1\u001b[0m dataset \u001b[38;5;241m=\u001b[39m \u001b[43mfrom_caipy_generic\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 2\u001b[0m \u001b[43m \u001b[49m\u001b[43mimages_folder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43mannotations_folder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m../../test_lours/test_data/caipy_dataset/tags/custom_schema/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 4\u001b[0m \u001b[43m \u001b[49m\u001b[43muse_schema\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/workspace/Bamboo/lours/dataset/io/caipy.py:326\u001b[0m, in \u001b[0;36mfrom_caipy_generic\u001b[0;34m(images_folder, annotations_folder, dataset_name, split, splits_to_read, use_schema, json_schema, booleanize)\u001b[0m\n\u001b[1;32m 323\u001b[0m dataset \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m split_dataset\n\u001b[1;32m 325\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(dataset) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m splits_to_read \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 326\u001b[0m dataset \u001b[38;5;241m=\u001b[39m \u001b[43mload_caipy_split\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 327\u001b[0m \u001b[43m \u001b[49m\u001b[43mimages_folder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mimages_folder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 328\u001b[0m \u001b[43m \u001b[49m\u001b[43mannotations_folder\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mannotations_folder\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 329\u001b[0m \u001b[43m \u001b[49m\u001b[43mdataset_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdataset_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 330\u001b[0m \u001b[43m \u001b[49m\u001b[43msplit_name\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msplit\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 331\u001b[0m \u001b[43m \u001b[49m\u001b[43mschema\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mschema\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 332\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m schema \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 335\u001b[0m image_schema \u001b[38;5;241m=\u001b[39m schema[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mproperties\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mimage\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", "File \u001b[0;32m~/workspace/Bamboo/lours/dataset/io/caipy.py:132\u001b[0m, in \u001b[0;36mload_caipy_split\u001b[0;34m(images_folder, annotations_folder, dataset_name, split_name, schema)\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mload_caipy_split\u001b[39m(\n\u001b[1;32m 106\u001b[0m images_folder: Path,\n\u001b[1;32m 107\u001b[0m annotations_folder: Path,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 110\u001b[0m schema: \u001b[38;5;28mdict\u001b[39m \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 111\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Dataset:\n\u001b[1;32m 112\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Load a particular caipy split folder and convert it to a lours Dataset\u001b[39;00m\n\u001b[1;32m 113\u001b[0m \n\u001b[1;32m 114\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[38;5;124;03m caipy splits\u001b[39;00m\n\u001b[1;32m 131\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 132\u001b[0m images, annotations \u001b[38;5;241m=\u001b[39m \u001b[43mload_caipy_annot_folder\u001b[49m\u001b[43m(\u001b[49m\u001b[43mannotations_folder\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mschema\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 133\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m images \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 134\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m images\u001b[38;5;241m.\u001b[39mindex\u001b[38;5;241m.\u001b[39mis_unique:\n", "File \u001b[0;32m~/workspace/Bamboo/lours/dataset/io/caipy.py:55\u001b[0m, in \u001b[0;36mload_caipy_annot_folder\u001b[0;34m(folder_path, schema)\u001b[0m\n\u001b[1;32m 53\u001b[0m frame_data \u001b[38;5;241m=\u001b[39m json\u001b[38;5;241m.\u001b[39mload(f)\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m validator \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 55\u001b[0m validator\u001b[38;5;241m.\u001b[39mvalidate(frame_data)\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m frame_data\u001b[38;5;241m.\u001b[39mkeys():\n\u001b[1;32m 57\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m (\n\u001b[1;32m 58\u001b[0m frame_data[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124minstances\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 59\u001b[0m ), \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mOnly instance type supported for now\u001b[39m\u001b[38;5;124m\"\u001b[39m\n", "\u001b[0;31mValidationError\u001b[0m: \"turquoise\" is not one of [\"red\",\"green\",\"yellow\",\"blue\",\"white\",\"black\",\"orange\",\"purple\",\"grey\",\"brown\",\"pink\",\"beige\",\"cyan\"]\n\nFailed validating \"enum\" in schema[\"properties\"][\"annotations\"][\"items\"][\"properties\"][\"attributes\"][\"properties\"][\"colors\"][\"items\"]\n\nOn instance[\"annotations\"][0][\"attributes\"][\"colors\"][1]:\n \"turquoise\"" ] } ], "source": [ "dataset = from_caipy_generic(\n", " images_folder=None,\n", " annotations_folder=\"../../test_lours/test_data/caipy_dataset/tags/custom_schema/\",\n", " use_schema=True,\n", ")" ] }, { "cell_type": "markdown", "id": "077e2450-e510-4c8c-aea0-9a4aee104453", "metadata": {}, "source": [ "This one will succeed\n", "\n", "Also note that booleanize columns are less numerous for `attributes.actions` and `attributes.colors`" ] }, { "cell_type": "code", "execution_count": 17, "id": "19a2abea-83e2-41a8-8689-9ad7104ff60c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "specifying a fictive path for images : ../../test_lours/test_data/caipy_dataset/tags/Images\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e86cdb20f4494218bb77df42d5f395a7", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/1 [00:00Dataset object containing…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dataset" ] } ], "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.11.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "020d9542b75c45f6855127e769e6c32e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "0472a0c52b384c20bac6bba7be697d7a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "0778ae2a76624d2bb213cfd3edc6b0c0": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "07c8022be9374b64aa3c20cf242c8cfe": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_7261a2e98e4044d4a94b6cfcc1b66bf4", "max": 2, "style": "IPY_MODEL_747f2dd2e1ba4ddd86bfc4dd09db8fd8", "value": 2 } }, "08145d806a2e44a2b0c0b5b53c16e157": { "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 } }, "0af99b88e526451a8f116aa914a03c85": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LinkModel", "state": { "source": [ "IPY_MODEL_6eb8130148024f58af7d2dfa7afea151", "index" ], "target": [ "IPY_MODEL_a0ac4aaf7a5449e09f480e6201bc05cb", "selected_index" ] } }, "0b51da5c21874f6580a40b2b7febf6aa": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "0cab193239a241ffb35beb1b574f5c7b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "1202c640ef9f41bbbc914724efe44bc1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_ed741ca35a4d43d381ed7b2535bf8072", "IPY_MODEL_549d413cb13845379ee6a3a78e409fd7" ], "layout": "IPY_MODEL_512e1e5adafb41cbb38e71f29abd2a11" } }, "132a6bc35e734f4f83266d240d1cd744": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "1613cfa2cd45417ba93de2b5ce06cff1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "1905b37bd49745b2a2e7458d07b4ce10": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "1edff217974249e28897179dbf04b14a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_64a23506013b4f4fbfbb29100ab4b3bd", "IPY_MODEL_a6a54532063d4f2192b6d2789bdf1084", "IPY_MODEL_f961f09764c94c2fa7b64cda94f2edcc" ], "layout": "IPY_MODEL_57ed44748e5c4f1f82f65fe9c95a7a1a" } }, "1f1e688f42a0486f8b9d68d1c2d7e3d9": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "3386375631aa45338f7e9edce9b94b09": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "StackModel", "state": { "children": [ "IPY_MODEL_764544f8c3b744ba9273aa7f9aad35c7", "IPY_MODEL_7ba1e595d0cd4e33a38718af458506e8" ], "layout": "IPY_MODEL_5a872f11b50b415fa8f19e1950438847", "selected_index": 0, "titles": [ "", "" ] } }, "339a0f00e9824c288198159a2f73f01e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ToggleButtonsStyleModel", "state": { "button_width": "auto", "description_width": "" } }, "34c1d2ad78204bc7aa3de0d414b0fe0b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "3ba44a1d939448178ebc6cac1d2e714f": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_8de82515a9794723b9c81fb955f3e289", "outputs": [ { "data": { "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
widthheightrelative_pathtypetags.timetags.weather
id
200640427785.jpg.jpgdaysunny
\n
", "text/plain": " width height relative_path type tags.time tags.weather\nid \n200 640 427 785.jpg .jpg day sunny" }, "metadata": {}, "output_type": "display_data" } ] } }, "3c1d3ed53fcf45c8b92ac7eabb027f50": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_d19def3b87944cc99f9185b90eb2188f", "style": "IPY_MODEL_832c102947f9488b830e9120d8b2c67f", "value": "Booleanize" } }, "3efb9b0c090f4637b0aed6db54106d50": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_c01cc6cb84634d7681bec200fbf7c97c", "outputs": [ { "data": { "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 image_idcategory_strcategory_idbox_x_minbox_y_minbox_widthbox_heightchildren_idsconfidenceparent_idattributes
 occludedcolorsposition
id             
0200person21256.000000202.00000059.00000047.000000[]0.5000001True['blue', 'turquoise'][]
1200head8001256.000000202.00000059.00000047.000000[0]nanNone[]['side']
\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "49005d311ed749579739e17178d63113": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "danger", "layout": "IPY_MODEL_b812c9c9a28e4f659fef5b2664c63d45", "max": 1, "style": "IPY_MODEL_c88961be156e4788a619d140851f9332" } }, "494095efddbe4d71b61a012fbf915854": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "4c99ce4d531d4c93962e9128578d845e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_020d9542b75c45f6855127e769e6c32e", "style": "IPY_MODEL_c6e6d89936094b358cf8e337738c153b", "value": " 0/1 [00:00<?, ?it/s]" } }, "4e6a9a7046c54d3dbc3a36ce7d9d01e0": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "512e1e5adafb41cbb38e71f29abd2a11": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "5493f94105a7474980a9785fc1528de8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_f3133f171cfe43638d63c5cf30547758", "IPY_MODEL_6eb8130148024f58af7d2dfa7afea151" ], "layout": "IPY_MODEL_8111db8f01f8487588cc169fed9dcbed" } }, "549d413cb13845379ee6a3a78e409fd7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "raw", "nested" ], "index": 0, "layout": "IPY_MODEL_945580f822df48c486846b21da68dad3", "style": "IPY_MODEL_6e22121a4bec45e1b19131be7fc2b4c9" } }, "57ed44748e5c4f1f82f65fe9c95a7a1a": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "5829f3bb40cf45fe8cfd1f332a046774": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_efdd0543154c41419318d2792c78ffb1", "IPY_MODEL_1202c640ef9f41bbbc914724efe44bc1" ], "layout": "IPY_MODEL_c99c8c543aef4dffb302a9e9063cb3dc" } }, "582b250a8051424e8968e2b9769936c4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "59d75ec48f4647df9a21712316e07f34": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "5a872f11b50b415fa8f19e1950438847": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "5a93db12b02c4a8999caa5b9011074f6": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_1f1e688f42a0486f8b9d68d1c2d7e3d9", "outputs": [ { "data": { "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 widthheightrelative_pathtypetags
 timeweather
id      
200640427785.jpg.jpgdaysunny
\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "62af9d68b3f64503919bd7735e1967ea": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "64a23506013b4f4fbfbb29100ab4b3bd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_a6d2854c1f394f7792db677090d9ae79", "style": "IPY_MODEL_c4a7b899fde3414fb88c7a3fa4e993c7", "value": "100%" } }, "667e4b4282a54423b9a533fe5208dba3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LinkModel", "state": { "source": [ "IPY_MODEL_549d413cb13845379ee6a3a78e409fd7", "index" ], "target": [ "IPY_MODEL_764544f8c3b744ba9273aa7f9aad35c7", "selected_index" ] } }, "6b20424f43e34457a459b9fb49563ebd": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "6c6919eb334f47be98faf5ba28ec0e33": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_5829f3bb40cf45fe8cfd1f332a046774", "IPY_MODEL_3386375631aa45338f7e9edce9b94b09" ], "layout": "IPY_MODEL_59d75ec48f4647df9a21712316e07f34" } }, "6d440019159f4d84a3c24a4b13ff5b89": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "6e22121a4bec45e1b19131be7fc2b4c9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "6eb8130148024f58af7d2dfa7afea151": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DropdownModel", "state": { "_options_labels": [ "raw", "nested" ], "index": 0, "layout": "IPY_MODEL_78b0abd0531a474bba9883a74b0279b6", "style": "IPY_MODEL_8f894354dd5d49e98c0ee8bf67ee743b" } }, "6f90bab6fd0a433d92b6568c10011d49": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_7a774d05dca449298aed214a6a24ed2a", "IPY_MODEL_cb0353c3b3d9478eb7698c58c9baf2d7" ], "layout": "IPY_MODEL_0b51da5c21874f6580a40b2b7febf6aa" } }, "7067bdcd363a46de8a7715214354aad0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_5493f94105a7474980a9785fc1528de8", "IPY_MODEL_a0ac4aaf7a5449e09f480e6201bc05cb" ], "layout": "IPY_MODEL_6b20424f43e34457a459b9fb49563ebd" } }, "7261a2e98e4044d4a94b6cfcc1b66bf4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "72fceef903164e3ea814bd95216dbc4f": { "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 } }, "747f2dd2e1ba4ddd86bfc4dd09db8fd8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "764544f8c3b744ba9273aa7f9aad35c7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "StackModel", "state": { "children": [ "IPY_MODEL_d91f4d2ae06c4d4aac4159000b6311a6", "IPY_MODEL_8cd7d60565f842b2a3e4839edf9a44a1" ], "layout": "IPY_MODEL_beaa9f3a774e4f73aa85f825e5f82648", "selected_index": 0, "titles": [ "", "" ] } }, "78b0abd0531a474bba9883a74b0279b6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "7a774d05dca449298aed214a6a24ed2a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_ee240d46f88a48a1bcbc6fb7e7dd7314", "style": "IPY_MODEL_582b250a8051424e8968e2b9769936c4", "value": "

Dataset object containing 1 image and 2 objects\nName :\n\tNone\nImages root :\n\t../../test_lours/test_data/caipy_dataset/tags/Images

" } }, "7b411ff204894507b1e05046a27c96d6": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_ac4ff6daf42a4e38866e6307e6423c1c", "outputs": [ { "data": { "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
category string
category_id
2person
800head
\n
", "text/plain": " category string\ncategory_id \n2 person\n800 head" }, "metadata": {}, "output_type": "display_data" } ] } }, "7ba1e595d0cd4e33a38718af458506e8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "StackModel", "state": { "children": [ "IPY_MODEL_8be6b7114e624437a0780fc41bbcde4b", "IPY_MODEL_3efb9b0c090f4637b0aed6db54106d50" ], "layout": "IPY_MODEL_ff0060cae9d94b33b4a5e385735a2438", "selected_index": 0, "titles": [ "", "" ] } }, "8111db8f01f8487588cc169fed9dcbed": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "816bc188d37b45989b66a38657e2ced7": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "832c102947f9488b830e9120d8b2c67f": { "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 } }, "83fa3e7b01c3437fa9ada7adbb43a4ab": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_add0fbf1df5b43c3905fb329c24f0c7c", "IPY_MODEL_07c8022be9374b64aa3c20cf242c8cfe", "IPY_MODEL_e14b398b9ec5451ca69dcce3c74f9d6a" ], "layout": "IPY_MODEL_6d440019159f4d84a3c24a4b13ff5b89" } }, "84100c7e780c4dd6909bd6fe2f99ca2d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "88cba09fff7143e286cdcf19e8456a78": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "8be6b7114e624437a0780fc41bbcde4b": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_f8058b4477c94a9facda7722e1640667", "outputs": [ { "data": { "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
image_idcategory_strcategory_idbox_x_minbox_y_minbox_widthbox_heightchildren_idsconfidenceparent_idattributes.occludedattributes.colorsattributes.position
id
0200person21256.0202.059.047.0[]0.51True[blue, turquoise][]
1200head8001256.0202.059.047.0[0]NaN<NA>None[][side]
\n
", "text/plain": " image_id category_str category_id box_x_min box_y_min box_width \\\nid \n0 200 person 2 1256.0 202.0 59.0 \n1 200 head 800 1256.0 202.0 59.0 \n\n box_height children_ids confidence parent_id attributes.occluded \\\nid \n0 47.0 [] 0.5 1 True \n1 47.0 [0] NaN None \n\n attributes.colors attributes.position \nid \n0 [blue, turquoise] [] \n1 [] [side] " }, "metadata": {}, "output_type": "display_data" } ] } }, "8cafb999451f4221a8124d400bc0a55d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "8cd7d60565f842b2a3e4839edf9a44a1": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_a6996a82cace49d999cbed1a4fb0abdb", "outputs": [ { "data": { "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 image_idcategory_strcategory_idbox_x_minbox_y_minbox_widthbox_heightchildren_idsconfidenceparent_idattributes
 occludedcolorsposition
 beigeblackbluebrowncyangreengreyorangepinkpurpleredturquoiseyellowbackfrontsidetopunknown
id                             
0200person21256.000000202.00000059.00000047.000000[]0.5000001TrueFalseFalseTrueFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalseFalseFalseFalseFalse
1200head8001256.000000202.00000059.00000047.000000[0]nanNoneFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseTrueFalseFalse
\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "8d6199a3871349debdfc0cb8897ea864": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "8de82515a9794723b9c81fb955f3e289": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "8f894354dd5d49e98c0ee8bf67ee743b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "DescriptionStyleModel", "state": { "description_width": "" } }, "9008e4454f0241458be4b73eaa693dc3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "945580f822df48c486846b21da68dad3": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "94f9c5f8a41d4892a49c34eeadf16df4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "width": "auto" } }, "9697d7c26c324dbfb89d987d7983571f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "9d8a7b299a9f4d598e0e1c69bde24923": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_cb66a7ceaa5941078911876f1a396f5d", "style": "IPY_MODEL_9008e4454f0241458be4b73eaa693dc3", "value": "100%" } }, "a0ac4aaf7a5449e09f480e6201bc05cb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "StackModel", "state": { "children": [ "IPY_MODEL_b419179e66264c568b48400f27e214bf", "IPY_MODEL_5a93db12b02c4a8999caa5b9011074f6" ], "layout": "IPY_MODEL_f7d6302323bf4bfb93145887943d8696", "selected_index": 0, "titles": [ "", "" ] } }, "a4b5e8b0543546479436bf4508650eb2": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_9697d7c26c324dbfb89d987d7983571f", "outputs": [ { "data": { "text/html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 widthheightrelative_pathtypetags
 timeweather
id      
200640427785.jpg.jpgdaysunny
\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "a6996a82cace49d999cbed1a4fb0abdb": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "a6a54532063d4f2192b6d2789bdf1084": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_816bc188d37b45989b66a38657e2ced7", "max": 2, "style": "IPY_MODEL_aaeb1b50dce7497a834f277eb76482ed", "value": 2 } }, "a6d2854c1f394f7792db677090d9ae79": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "a9f9a646f9374a3ba733d2a07dc17c92": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_84100c7e780c4dd6909bd6fe2f99ca2d", "max": 1, "style": "IPY_MODEL_ffce6b7069e64cc5bbf0f7f20f48ccfd", "value": 1 } }, "aaeb1b50dce7497a834f277eb76482ed": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "ab5f61a0128345cda42a8ef8cd5e4e0c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_0472a0c52b384c20bac6bba7be697d7a", "style": "IPY_MODEL_1613cfa2cd45417ba93de2b5ce06cff1", "value": " 1/1 [00:00<00:00, 268.30it/s]" } }, "ac4ff6daf42a4e38866e6307e6423c1c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "add0fbf1df5b43c3905fb329c24f0c7c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_0778ae2a76624d2bb213cfd3edc6b0c0", "style": "IPY_MODEL_fd7fe384d24740a4a794e1033ccc4418", "value": "100%" } }, "afa310091e6746029cdf6a67d3c64810": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "b149b4fbbecc4014ba875fc52e4bae83": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LinkModel", "state": { "source": [ "IPY_MODEL_ed741ca35a4d43d381ed7b2535bf8072", "index" ], "target": [ "IPY_MODEL_3386375631aa45338f7e9edce9b94b09", "selected_index" ] } }, "b419179e66264c568b48400f27e214bf": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_daa90d3456594b8283afa01d77962bb8", "outputs": [ { "data": { "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
widthheightrelative_pathtypetags.timetags.weather
id
200640427785.jpg.jpgdaysunny
\n
", "text/plain": " width height relative_path type tags.time tags.weather\nid \n200 640 427 785.jpg .jpg day sunny" }, "metadata": {}, "output_type": "display_data" } ] } }, "b812c9c9a28e4f659fef5b2664c63d45": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "b980a535007f4e8e829e31917b4bf732": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LinkModel", "state": { "source": [ "IPY_MODEL_549d413cb13845379ee6a3a78e409fd7", "index" ], "target": [ "IPY_MODEL_7ba1e595d0cd4e33a38718af458506e8", "selected_index" ] } }, "beaa9f3a774e4f73aa85f825e5f82648": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "c01cc6cb84634d7681bec200fbf7c97c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "c4a7b899fde3414fb88c7a3fa4e993c7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "c6e6d89936094b358cf8e337738c153b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "c88961be156e4788a619d140851f9332": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } }, "c99c8c543aef4dffb302a9e9063cb3dc": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "caa0b80e1eca4d8bb201d7564db9c8cf": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_34c1d2ad78204bc7aa3de0d414b0fe0b", "style": "IPY_MODEL_08145d806a2e44a2b0c0b5b53c16e157", "value": "Column format" } }, "cb0353c3b3d9478eb7698c58c9baf2d7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "TabModel", "state": { "children": [ "IPY_MODEL_f56bbc59797e43dabe586dfc62e624ce", "IPY_MODEL_e6ad46ef21fb44d394b1bb05d9317fc7", "IPY_MODEL_7b411ff204894507b1e05046a27c96d6" ], "layout": "IPY_MODEL_df339ee1ee724facb026e650075d1fa6", "selected_index": 0, "titles": [ "Images", "Annotations", "Label Map" ] } }, "cb66a7ceaa5941078911876f1a396f5d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "cf3ed0b8ec2f4217ba17c19b04a07dbd": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "d000be4f92144f4b9c8bb566c3ffe3d3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_8cafb999451f4221a8124d400bc0a55d", "style": "IPY_MODEL_1905b37bd49745b2a2e7458d07b4ce10", "value": "  0%" } }, "d19def3b87944cc99f9185b90eb2188f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "d35853516d0d4a2fa78b663d9a02bec6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "d91f4d2ae06c4d4aac4159000b6311a6": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_d35853516d0d4a2fa78b663d9a02bec6", "outputs": [ { "data": { "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
image_idcategory_strcategory_idbox_x_minbox_y_minbox_widthbox_heightchildren_idsconfidenceparent_id...attributes.colors.pinkattributes.colors.purpleattributes.colors.redattributes.colors.turquoiseattributes.colors.yellowattributes.position.backattributes.position.frontattributes.position.sideattributes.position.topattributes.position.unknown
id
0200person21256.0202.059.047.0[]0.51...FalseFalseFalseTrueFalseFalseFalseFalseFalseFalse
1200head8001256.0202.059.047.0[0]NaN<NA>...FalseFalseFalseFalseFalseFalseFalseTrueFalseFalse
\n

2 rows × 29 columns

\n
", "text/plain": " image_id category_str category_id box_x_min box_y_min box_width \\\nid \n0 200 person 2 1256.0 202.0 59.0 \n1 200 head 800 1256.0 202.0 59.0 \n\n box_height children_ids confidence parent_id ... \\\nid ... \n0 47.0 [] 0.5 1 ... \n1 47.0 [0] NaN ... \n\n attributes.colors.pink attributes.colors.purple attributes.colors.red \\\nid \n0 False False False \n1 False False False \n\n attributes.colors.turquoise attributes.colors.yellow \\\nid \n0 True False \n1 False False \n\n attributes.position.back attributes.position.front \\\nid \n0 False False \n1 False False \n\n attributes.position.side attributes.position.top \\\nid \n0 False False \n1 True False \n\n attributes.position.unknown \nid \n0 False \n1 False \n\n[2 rows x 29 columns]" }, "metadata": {}, "output_type": "display_data" } ] } }, "daa90d3456594b8283afa01d77962bb8": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "df339ee1ee724facb026e650075d1fa6": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "e14b398b9ec5451ca69dcce3c74f9d6a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_4e6a9a7046c54d3dbc3a36ce7d9d01e0", "style": "IPY_MODEL_132a6bc35e734f4f83266d240d1cd744", "value": " 2/2 [00:00<00:00, 244.85it/s]" } }, "e6ad46ef21fb44d394b1bb05d9317fc7": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_494095efddbe4d71b61a012fbf915854", "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6c6919eb334f47be98faf5ba28ec0e33", "version_major": 2, "version_minor": 0 }, "text/plain": "VBox(children=(HBox(children=(VBox(children=(Label(value='Booleanize'), Label(value='Column format'))), VBox(c…" }, "metadata": {}, "output_type": "display_data" } ] } }, "e6fbb2d2b90b4174ab7da2bc3c0fb06e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "e86cdb20f4494218bb77df42d5f395a7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_9d8a7b299a9f4d598e0e1c69bde24923", "IPY_MODEL_a9f9a646f9374a3ba733d2a07dc17c92", "IPY_MODEL_ab5f61a0128345cda42a8ef8cd5e4e0c" ], "layout": "IPY_MODEL_88cba09fff7143e286cdcf19e8456a78" } }, "e8bbf1c121694b819c95b56fce893fb2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_d000be4f92144f4b9c8bb566c3ffe3d3", "IPY_MODEL_49005d311ed749579739e17178d63113", "IPY_MODEL_4c99ce4d531d4c93962e9128578d845e" ], "layout": "IPY_MODEL_62af9d68b3f64503919bd7735e1967ea" } }, "ed741ca35a4d43d381ed7b2535bf8072": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ToggleButtonsModel", "state": { "_options_labels": [ "yes ", "no " ], "button_style": "", "icons": [ "check", "times" ], "index": 0, "layout": "IPY_MODEL_94f9c5f8a41d4892a49c34eeadf16df4", "style": "IPY_MODEL_339a0f00e9824c288198159a2f73f01e", "tooltips": [] } }, "ee240d46f88a48a1bcbc6fb7e7dd7314": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "efdd0543154c41419318d2792c78ffb1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "VBoxModel", "state": { "children": [ "IPY_MODEL_3c1d3ed53fcf45c8b92ac7eabb027f50", "IPY_MODEL_caa0b80e1eca4d8bb201d7564db9c8cf" ], "layout": "IPY_MODEL_cf3ed0b8ec2f4217ba17c19b04a07dbd" } }, "f3133f171cfe43638d63c5cf30547758": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "LabelModel", "state": { "layout": "IPY_MODEL_e6fbb2d2b90b4174ab7da2bc3c0fb06e", "style": "IPY_MODEL_72fceef903164e3ea814bd95216dbc4f", "value": "Column format" } }, "f56bbc59797e43dabe586dfc62e624ce": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_0cab193239a241ffb35beb1b574f5c7b", "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7067bdcd363a46de8a7715214354aad0", "version_major": 2, "version_minor": 0 }, "text/plain": "VBox(children=(HBox(children=(Label(value='Column format'), Dropdown(options=('raw', 'nested'), value='raw')))…" }, "metadata": {}, "output_type": "display_data" } ] } }, "f7d6302323bf4bfb93145887943d8696": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "f8058b4477c94a9facda7722e1640667": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "f961f09764c94c2fa7b64cda94f2edcc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_8d6199a3871349debdfc0cb8897ea864", "style": "IPY_MODEL_afa310091e6746029cdf6a67d3c64810", "value": " 2/2 [00:00<00:00, 373.42it/s]" } }, "fd7fe384d24740a4a794e1033ccc4418": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "ff0060cae9d94b33b4a5e385735a2438": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "ffce6b7069e64cc5bbf0f7f20f48ccfd": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }