Diff of /EL.ipynb [000000] .. [ce2cbf]

Switch to unified view

a b/EL.ipynb
1
{
2
  "cells": [
3
    {
4
      "cell_type": "code",
5
      "execution_count": null,
6
      "id": "138778c4",
7
      "metadata": {
8
        "id": "138778c4"
9
      },
10
      "outputs": [],
11
      "source": [
12
        "from tqdm import tqdm\n",
13
        "import pandas as pd\n",
14
        "from sklearn import metrics\n",
15
        "from scipy.spatial.distance import cdist"
16
      ]
17
    },
18
    {
19
      "cell_type": "code",
20
      "execution_count": null,
21
      "id": "dTSILRD7hIHG",
22
      "metadata": {
23
        "colab": {
24
          "base_uri": "https://localhost:8080/"
25
        },
26
        "id": "dTSILRD7hIHG",
27
        "outputId": "9d7677f8-fc7d-403c-e8dd-6135bc581c01"
28
      },
29
      "outputs": [
30
        {
31
          "name": "stdout",
32
          "output_type": "stream",
33
          "text": [
34
            "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
35
            "Collecting transformers\n",
36
            "  Downloading transformers-4.24.0-py3-none-any.whl (5.5 MB)\n",
37
            "\u001b[K     |████████████████████████████████| 5.5 MB 4.7 MB/s \n",
38
            "\u001b[?25hCollecting huggingface-hub<1.0,>=0.10.0\n",
39
            "  Downloading huggingface_hub-0.10.1-py3-none-any.whl (163 kB)\n",
40
            "\u001b[K     |████████████████████████████████| 163 kB 88.9 MB/s \n",
41
            "\u001b[?25hRequirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from transformers) (2.23.0)\n",
42
            "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.7/dist-packages (from transformers) (1.21.6)\n",
43
            "Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from transformers) (4.13.0)\n",
44
            "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.7/dist-packages (from transformers) (6.0)\n",
45
            "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.7/dist-packages (from transformers) (21.3)\n",
46
            "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.7/dist-packages (from transformers) (2022.6.2)\n",
47
            "Requirement already satisfied: filelock in /usr/local/lib/python3.7/dist-packages (from transformers) (3.8.0)\n",
48
            "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.7/dist-packages (from transformers) (4.64.1)\n",
49
            "Collecting tokenizers!=0.11.3,<0.14,>=0.11.1\n",
50
            "  Downloading tokenizers-0.13.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB)\n",
51
            "\u001b[K     |████████████████████████████████| 7.6 MB 89.1 MB/s \n",
52
            "\u001b[?25hRequirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.7/dist-packages (from huggingface-hub<1.0,>=0.10.0->transformers) (4.1.1)\n",
53
            "Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging>=20.0->transformers) (3.0.9)\n",
54
            "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata->transformers) (3.10.0)\n",
55
            "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (2.10)\n",
56
            "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (1.24.3)\n",
57
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (2022.9.24)\n",
58
            "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->transformers) (3.0.4)\n",
59
            "Installing collected packages: tokenizers, huggingface-hub, transformers\n",
60
            "Successfully installed huggingface-hub-0.10.1 tokenizers-0.13.1 transformers-4.24.0\n"
61
          ]
62
        }
63
      ],
64
      "source": [
65
        "!pip install transformers"
66
      ]
67
    },
68
    {
69
      "cell_type": "code",
70
      "execution_count": null,
71
      "id": "70512d4e",
72
      "metadata": {
73
        "id": "70512d4e",
74
        "outputId": "ebc36a95-bb47-425a-9c2c-7456141778e6"
75
      },
76
      "outputs": [
77
        {
78
          "name": "stdout",
79
          "output_type": "stream",
80
          "text": [
81
            "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n",
82
            "To disable this warning, you can either:\n",
83
            "\t- Avoid using `tokenizers` before the fork if possible\n",
84
            "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n",
85
            "Collecting parallelformers\n",
86
            "  Downloading parallelformers-1.2.7.tar.gz (48 kB)\n",
87
            "\u001b[K     |████████████████████████████████| 48 kB 557 kB/s eta 0:00:011\n",
88
            "\u001b[?25hRequirement already satisfied: transformers>=4.2 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from parallelformers) (4.24.0)\n",
89
            "Requirement already satisfied: torch in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from parallelformers) (1.11.0)\n",
90
            "Collecting dacite\n",
91
            "  Downloading dacite-1.6.0-py3-none-any.whl (12 kB)\n",
92
            "Requirement already satisfied: filelock in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (3.6.0)\n",
93
            "Requirement already satisfied: packaging>=20.0 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (21.3)\n",
94
            "Requirement already satisfied: huggingface-hub<1.0,>=0.10.0 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (0.10.1)\n",
95
            "Requirement already satisfied: tqdm>=4.27 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (4.64.1)\n",
96
            "Requirement already satisfied: regex!=2019.12.17 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (2022.7.25)\n",
97
            "Requirement already satisfied: requests in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (2.27.1)\n",
98
            "Requirement already satisfied: pyyaml>=5.1 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (6.0)\n",
99
            "Requirement already satisfied: numpy>=1.17 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (1.21.5)\n",
100
            "Requirement already satisfied: tokenizers!=0.11.3,<0.14,>=0.11.1 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from transformers>=4.2->parallelformers) (0.13.1)\n",
101
            "Requirement already satisfied: typing-extensions>=3.7.4.3 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from huggingface-hub<1.0,>=0.10.0->transformers>=4.2->parallelformers) (4.1.1)\n",
102
            "Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from packaging>=20.0->transformers>=4.2->parallelformers) (2.4.7)\n",
103
            "Requirement already satisfied: charset-normalizer~=2.0.0 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from requests->transformers>=4.2->parallelformers) (2.0.4)\n",
104
            "Requirement already satisfied: certifi>=2017.4.17 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from requests->transformers>=4.2->parallelformers) (2021.10.8)\n",
105
            "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from requests->transformers>=4.2->parallelformers) (1.26.9)\n",
106
            "Requirement already satisfied: idna<4,>=2.5 in /home2/sashank.sridhar/miniconda3/envs/TripletLoss/lib/python3.9/site-packages (from requests->transformers>=4.2->parallelformers) (3.3)\n",
107
            "Building wheels for collected packages: parallelformers\n",
108
            "  Building wheel for parallelformers (setup.py) ... \u001b[?25ldone\n",
109
            "\u001b[?25h  Created wheel for parallelformers: filename=parallelformers-1.2.7-py3-none-any.whl size=117791 sha256=ce1c96f5d462c55210041d65abcc897059cc1349cfafe5afcc489f60b6fbb7c6\n",
110
            "  Stored in directory: /home2/sashank.sridhar/.cache/pip/wheels/4f/19/42/8d74380c84a1e93401ee163f3bd545853051a4d895fd95ca2e\n",
111
            "Successfully built parallelformers\n",
112
            "Installing collected packages: dacite, parallelformers\n",
113
            "Successfully installed dacite-1.6.0 parallelformers-1.2.7\n"
114
          ]
115
        }
116
      ],
117
      "source": [
118
        "!pip install parallelformers"
119
      ]
120
    },
121
    {
122
      "cell_type": "code",
123
      "execution_count": null,
124
      "id": "6b2ace9d",
125
      "metadata": {
126
        "id": "6b2ace9d"
127
      },
128
      "outputs": [],
129
      "source": [
130
        "!pip install faiss-gpu"
131
      ]
132
    },
133
    {
134
      "cell_type": "markdown",
135
      "id": "5a0d2481",
136
      "metadata": {
137
        "id": "5a0d2481"
138
      },
139
      "source": [
140
        "Download snomed term-concept file from UMLS website"
141
      ]
142
    },
143
    {
144
      "cell_type": "code",
145
      "execution_count": null,
146
      "id": "ea498c9d",
147
      "metadata": {
148
        "colab": {
149
          "base_uri": "https://localhost:8080/"
150
        },
151
        "id": "ea498c9d",
152
        "outputId": "49723e0b-aee4-46f9-b162-e319f10475d6"
153
      },
154
      "outputs": [
155
        {
156
          "name": "stdout",
157
          "output_type": "stream",
158
          "text": [
159
            "1569232\n"
160
          ]
161
        }
162
      ],
163
      "source": [
164
        "snomed_csv = pd.read_csv(\"data/sct2_Description_Snapshot-en_INT_20220831.txt\", delimiter=\"\\t\")\n",
165
        "print(len(snomed_csv))"
166
      ]
167
    },
168
    {
169
      "cell_type": "code",
170
      "execution_count": null,
171
      "id": "d811cd3c",
172
      "metadata": {
173
        "colab": {
174
          "base_uri": "https://localhost:8080/"
175
        },
176
        "id": "d811cd3c",
177
        "outputId": "2bce882d-ab28-4af6-b07f-ed73b1b5f4c8"
178
      },
179
      "outputs": [
180
        {
181
          "data": {
182
            "text/plain": [
183
              "Index(['id', 'effectiveTime', 'active', 'moduleId', 'conceptId',\n",
184
              "       'languageCode', 'typeId', 'term', 'caseSignificanceId'],\n",
185
              "      dtype='object')"
186
            ]
187
          },
188
          "execution_count": 3,
189
          "metadata": {},
190
          "output_type": "execute_result"
191
        }
192
      ],
193
      "source": [
194
        "snomed_csv.columns"
195
      ]
196
    },
197
    {
198
      "cell_type": "code",
199
      "execution_count": null,
200
      "id": "3327f0d9",
201
      "metadata": {
202
        "colab": {
203
          "base_uri": "https://localhost:8080/",
204
          "height": 530
205
        },
206
        "id": "3327f0d9",
207
        "outputId": "7bbd5033-5116-4b65-c66a-f2cb3365f859"
208
      },
209
      "outputs": [
210
        {
211
          "data": {
212
            "text/html": [
213
              "<div>\n",
214
              "<style scoped>\n",
215
              "    .dataframe tbody tr th:only-of-type {\n",
216
              "        vertical-align: middle;\n",
217
              "    }\n",
218
              "\n",
219
              "    .dataframe tbody tr th {\n",
220
              "        vertical-align: top;\n",
221
              "    }\n",
222
              "\n",
223
              "    .dataframe thead th {\n",
224
              "        text-align: right;\n",
225
              "    }\n",
226
              "</style>\n",
227
              "<table border=\"1\" class=\"dataframe\">\n",
228
              "  <thead>\n",
229
              "    <tr style=\"text-align: right;\">\n",
230
              "      <th></th>\n",
231
              "      <th>id</th>\n",
232
              "      <th>effectiveTime</th>\n",
233
              "      <th>active</th>\n",
234
              "      <th>moduleId</th>\n",
235
              "      <th>conceptId</th>\n",
236
              "      <th>languageCode</th>\n",
237
              "      <th>typeId</th>\n",
238
              "      <th>term</th>\n",
239
              "      <th>caseSignificanceId</th>\n",
240
              "    </tr>\n",
241
              "  </thead>\n",
242
              "  <tbody>\n",
243
              "    <tr>\n",
244
              "      <th>0</th>\n",
245
              "      <td>101013</td>\n",
246
              "      <td>20170731</td>\n",
247
              "      <td>1</td>\n",
248
              "      <td>900000000000207008</td>\n",
249
              "      <td>126813005</td>\n",
250
              "      <td>en</td>\n",
251
              "      <td>900000000000013009</td>\n",
252
              "      <td>Neoplasm of anterior aspect of epiglottis</td>\n",
253
              "      <td>900000000000448009</td>\n",
254
              "    </tr>\n",
255
              "    <tr>\n",
256
              "      <th>1</th>\n",
257
              "      <td>102018</td>\n",
258
              "      <td>20170731</td>\n",
259
              "      <td>1</td>\n",
260
              "      <td>900000000000207008</td>\n",
261
              "      <td>126814004</td>\n",
262
              "      <td>en</td>\n",
263
              "      <td>900000000000013009</td>\n",
264
              "      <td>Neoplasm of junctional region of epiglottis</td>\n",
265
              "      <td>900000000000448009</td>\n",
266
              "    </tr>\n",
267
              "    <tr>\n",
268
              "      <th>2</th>\n",
269
              "      <td>103011</td>\n",
270
              "      <td>20170731</td>\n",
271
              "      <td>1</td>\n",
272
              "      <td>900000000000207008</td>\n",
273
              "      <td>126815003</td>\n",
274
              "      <td>en</td>\n",
275
              "      <td>900000000000013009</td>\n",
276
              "      <td>Neoplasm of lateral wall of oropharynx</td>\n",
277
              "      <td>900000000000448009</td>\n",
278
              "    </tr>\n",
279
              "    <tr>\n",
280
              "      <th>3</th>\n",
281
              "      <td>104017</td>\n",
282
              "      <td>20170731</td>\n",
283
              "      <td>1</td>\n",
284
              "      <td>900000000000207008</td>\n",
285
              "      <td>126816002</td>\n",
286
              "      <td>en</td>\n",
287
              "      <td>900000000000013009</td>\n",
288
              "      <td>Neoplasm of posterior wall of oropharynx</td>\n",
289
              "      <td>900000000000448009</td>\n",
290
              "    </tr>\n",
291
              "    <tr>\n",
292
              "      <th>4</th>\n",
293
              "      <td>105016</td>\n",
294
              "      <td>20170731</td>\n",
295
              "      <td>1</td>\n",
296
              "      <td>900000000000207008</td>\n",
297
              "      <td>126817006</td>\n",
298
              "      <td>en</td>\n",
299
              "      <td>900000000000013009</td>\n",
300
              "      <td>Neoplasm of esophagus</td>\n",
301
              "      <td>900000000000448009</td>\n",
302
              "    </tr>\n",
303
              "  </tbody>\n",
304
              "</table>\n",
305
              "</div>"
306
            ],
307
            "text/plain": [
308
              "       id  effectiveTime  active            moduleId  conceptId languageCode  \\\n",
309
              "0  101013       20170731       1  900000000000207008  126813005           en   \n",
310
              "1  102018       20170731       1  900000000000207008  126814004           en   \n",
311
              "2  103011       20170731       1  900000000000207008  126815003           en   \n",
312
              "3  104017       20170731       1  900000000000207008  126816002           en   \n",
313
              "4  105016       20170731       1  900000000000207008  126817006           en   \n",
314
              "\n",
315
              "               typeId                                         term  \\\n",
316
              "0  900000000000013009    Neoplasm of anterior aspect of epiglottis   \n",
317
              "1  900000000000013009  Neoplasm of junctional region of epiglottis   \n",
318
              "2  900000000000013009       Neoplasm of lateral wall of oropharynx   \n",
319
              "3  900000000000013009     Neoplasm of posterior wall of oropharynx   \n",
320
              "4  900000000000013009                        Neoplasm of esophagus   \n",
321
              "\n",
322
              "   caseSignificanceId  \n",
323
              "0  900000000000448009  \n",
324
              "1  900000000000448009  \n",
325
              "2  900000000000448009  \n",
326
              "3  900000000000448009  \n",
327
              "4  900000000000448009  "
328
            ]
329
          },
330
          "execution_count": 4,
331
          "metadata": {},
332
          "output_type": "execute_result"
333
        }
334
      ],
335
      "source": [
336
        "snomed_csv.head()"
337
      ]
338
    },
339
    {
340
      "cell_type": "markdown",
341
      "id": "eee36071",
342
      "metadata": {
343
        "id": "eee36071"
344
      },
345
      "source": [
346
        "Process snomed terms"
347
      ]
348
    },
349
    {
350
      "cell_type": "code",
351
      "execution_count": null,
352
      "id": "fc74afa8",
353
      "metadata": {
354
        "id": "fc74afa8"
355
      },
356
      "outputs": [],
357
      "source": [
358
        "all_ids = snomed_csv['conceptId']\n",
359
        "all_names = []\n",
360
        "for i in snomed_csv['term']:\n",
361
        "    try:\n",
362
        "        all_names.append(i.lower())\n",
363
        "    except:\n",
364
        "        all_names.append('not applicable')\n",
365
        "#         print(i)"
366
      ]
367
    },
368
    {
369
      "cell_type": "code",
370
      "execution_count": null,
371
      "id": "ecbc8292",
372
      "metadata": {
373
        "colab": {
374
          "base_uri": "https://localhost:8080/"
375
        },
376
        "id": "ecbc8292",
377
        "outputId": "eb0c0228-aa13-4a37-e4d5-d1d5cee77806"
378
      },
379
      "outputs": [
380
        {
381
          "data": {
382
            "text/plain": [
383
              "id                            1491117014\n",
384
              "effectiveTime                   20030131\n",
385
              "active                                 1\n",
386
              "moduleId              900000000000207008\n",
387
              "conceptId                      385432009\n",
388
              "languageCode                          en\n",
389
              "typeId                900000000000013009\n",
390
              "term                                 NaN\n",
391
              "caseSignificanceId    900000000000020002\n",
392
              "Name: 906846, dtype: object"
393
            ]
394
          },
395
          "execution_count": 6,
396
          "metadata": {},
397
          "output_type": "execute_result"
398
        }
399
      ],
400
      "source": [
401
        "snomed_csv.iloc[906846]"
402
      ]
403
    },
404
    {
405
      "cell_type": "code",
406
      "execution_count": null,
407
      "id": "6d11f0d6",
408
      "metadata": {
409
        "id": "6d11f0d6"
410
      },
411
      "outputs": [],
412
      "source": [
413
        "snomed_name_id = [(all_names[i], all_ids[i]) for i in range(len(all_ids))]"
414
      ]
415
    },
416
    {
417
      "cell_type": "code",
418
      "execution_count": null,
419
      "id": "f61e031c",
420
      "metadata": {
421
        "colab": {
422
          "base_uri": "https://localhost:8080/"
423
        },
424
        "id": "f61e031c",
425
        "outputId": "3a768eb2-906b-4974-d468-c53b63cd057e"
426
      },
427
      "outputs": [
428
        {
429
          "data": {
430
            "text/plain": [
431
              "1569232"
432
            ]
433
          },
434
          "execution_count": 8,
435
          "metadata": {},
436
          "output_type": "execute_result"
437
        }
438
      ],
439
      "source": [
440
        "len(all_ids)"
441
      ]
442
    },
443
    {
444
      "cell_type": "code",
445
      "execution_count": null,
446
      "id": "8b2c1e53",
447
      "metadata": {
448
        "colab": {
449
          "base_uri": "https://localhost:8080/"
450
        },
451
        "id": "8b2c1e53",
452
        "outputId": "84851594-3060-4197-9886-78d9d1e443fa"
453
      },
454
      "outputs": [
455
        {
456
          "data": {
457
            "text/plain": [
458
              "['neoplasm of anterior aspect of epiglottis',\n",
459
              " 'neoplasm of junctional region of epiglottis',\n",
460
              " 'neoplasm of lateral wall of oropharynx',\n",
461
              " 'neoplasm of posterior wall of oropharynx',\n",
462
              " 'neoplasm of esophagus',\n",
463
              " 'neoplasm of cervical esophagus',\n",
464
              " 'neoplasm of thoracic esophagus',\n",
465
              " 'neoplasm of abdominal esophagus',\n",
466
              " 'neoplasm of middle third of esophagus',\n",
467
              " 'neoplasm of lower third of esophagus']"
468
            ]
469
          },
470
          "execution_count": 9,
471
          "metadata": {},
472
          "output_type": "execute_result"
473
        }
474
      ],
475
      "source": [
476
        "all_names[:10]"
477
      ]
478
    },
479
    {
480
      "cell_type": "code",
481
      "execution_count": null,
482
      "id": "4de928c7",
483
      "metadata": {
484
        "colab": {
485
          "base_uri": "https://localhost:8080/"
486
        },
487
        "id": "4de928c7",
488
        "outputId": "1f491d1a-1d2a-451c-86db-12b1bc92c536"
489
      },
490
      "outputs": [
491
        {
492
          "data": {
493
            "text/plain": [
494
              "0    126813005\n",
495
              "1    126814004\n",
496
              "2    126815003\n",
497
              "3    126816002\n",
498
              "4    126817006\n",
499
              "5    126818001\n",
500
              "6    126819009\n",
501
              "7    126820003\n",
502
              "8    126822006\n",
503
              "9    126823001\n",
504
              "Name: conceptId, dtype: int64"
505
            ]
506
          },
507
          "execution_count": 10,
508
          "metadata": {},
509
          "output_type": "execute_result"
510
        }
511
      ],
512
      "source": [
513
        "all_ids[:10]"
514
      ]
515
    },
516
    {
517
      "cell_type": "markdown",
518
      "id": "0b808263",
519
      "metadata": {
520
        "id": "0b808263"
521
      },
522
      "source": [
523
        "# load sapbert"
524
      ]
525
    },
526
    {
527
      "cell_type": "code",
528
      "execution_count": null,
529
      "id": "a7c7ac5b",
530
      "metadata": {
531
        "id": "a7c7ac5b"
532
      },
533
      "outputs": [],
534
      "source": [
535
        "import numpy as np\n",
536
        "import torch"
537
      ]
538
    },
539
    {
540
      "cell_type": "code",
541
      "execution_count": null,
542
      "id": "d2c96dea",
543
      "metadata": {
544
        "id": "d2c96dea"
545
      },
546
      "outputs": [],
547
      "source": [
548
        "GPU_COUNT = torch.cuda.device_count()"
549
      ]
550
    },
551
    {
552
      "cell_type": "code",
553
      "execution_count": null,
554
      "id": "5c3cfade",
555
      "metadata": {
556
        "id": "5c3cfade",
557
        "outputId": "511a715e-cad2-457c-9ed2-b2e4030cedac"
558
      },
559
      "outputs": [
560
        {
561
          "data": {
562
            "text/plain": [
563
              "4"
564
            ]
565
          },
566
          "execution_count": 13,
567
          "metadata": {},
568
          "output_type": "execute_result"
569
        }
570
      ],
571
      "source": [
572
        "GPU_COUNT"
573
      ]
574
    },
575
    {
576
      "cell_type": "code",
577
      "execution_count": null,
578
      "id": "7bd1e1f2",
579
      "metadata": {
580
        "id": "7bd1e1f2",
581
        "outputId": "1d07efbb-3eb4-48b3-fab2-b8ef364066bd"
582
      },
583
      "outputs": [
584
        {
585
          "data": {
586
            "text/plain": [
587
              "device(type='cuda')"
588
            ]
589
          },
590
          "execution_count": 14,
591
          "metadata": {},
592
          "output_type": "execute_result"
593
        }
594
      ],
595
      "source": [
596
        "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\") ## specify the GPU id's, GPU id's start from 0.\n",
597
        "device"
598
      ]
599
    },
600
    {
601
      "cell_type": "code",
602
      "execution_count": null,
603
      "id": "528023ac",
604
      "metadata": {
605
        "colab": {
606
          "base_uri": "https://localhost:8080/",
607
          "height": 177,
608
          "referenced_widgets": [
609
            "e6bdda56f1e14d45b1c99940a763e69f",
610
            "91742ec5cec441b5a94d3046c777b22c",
611
            "2634942c850f4597be75b3a91f2d75a7",
612
            "c6727941f53a42248764a106e13596c9",
613
            "c2f02ef98fc649fca32c157c0d048a89",
614
            "06f54b167c2e4289b78ba4822d2f98de",
615
            "9b0a676b668a4ff884a72196524a9229",
616
            "d76fe4566fb548188ecd8f0575fccb69",
617
            "394fa40a235147e49fad6edbae132702",
618
            "521596b5e09b4d8fa79410d3601dcc32",
619
            "e2258a4aa3ad44d182d19fa6cb7aa05e",
620
            "998be9daecca4ed6b835333b44a5ba9e",
621
            "7467ec745de94196b786bf7219744a42",
622
            "b2d2469f3f0e4639a51ee68b7b74d20a",
623
            "7eb1948251dd460aa0d42f2d98536ed1",
624
            "9cec228d653e40e8a3774021542ffb68",
625
            "81f4f0e1758e4d2498e62dd95c2ea6c6",
626
            "4db71f00bd814dc3a0e5004eb5a2ae63",
627
            "802c6b027b704fce99d59f7da5eb1955",
628
            "df0df21a4ca647e683889a221065b16f",
629
            "ac83aa99e714487a919ea7aebd0ca422",
630
            "b963ba7bcd0a481a99d32418a5411ea6",
631
            "b769f41cc70c4c65a25f0d4a94811bf6",
632
            "3389a5f07d1a4b4e88c118fe47f241aa",
633
            "79cac786f31e4ee083b5c637d28eb7fc",
634
            "ff99ea7820634adb98d061ef265f2ff4",
635
            "c91b598e790e4c6ba21aeab31c177bf0",
636
            "a9edca0387954a09ada230067e7355b2",
637
            "a8b2871e2a164c94a58762d5cd3a2d95",
638
            "d20681be016d438eb638f1c7108f0d6a",
639
            "5abf07ae3e3c4f0eb8c12334ed383bcf",
640
            "58efb1c2ea714ee0a373ecc67d72368f",
641
            "39801cbd09484e439afb2829be9a9d52",
642
            "17cd86d84b43442081de52f15f833a71",
643
            "dbfa65b199f44020be9db0547b7ab18e",
644
            "d4cb162e77d844d8a672746573950427",
645
            "f00d00978f0f4077a4d10eeec352734f",
646
            "94c0b3dad8754852b8f727454c03c814",
647
            "76ffde2b8d2a4e1ba6a237bda4f7d856",
648
            "ba7d87dddcaa4ab1b7b0d832b4b3c451",
649
            "243d9b8fbc0842cfb96b531e9762bb82",
650
            "7b3448ed1e9442fa92acd84ea146ac2d",
651
            "1f6c9e48bf54406da669ee35c3f61d11",
652
            "fb9ddde1db3f47c5b8d7febc0ab691de",
653
            "ba13e64517a740bc89b29e25dac9de4f",
654
            "3f87d08da51c42ff8c909b12ca2df863",
655
            "e7b62de8e4794cd599198ad69e062f2b",
656
            "0e853c8f845d44fd85b172c8200ec82a",
657
            "743e49cf0f5a464b99ab5e1b96c81543",
658
            "fb6b72144db74d8e85489007e0b97396",
659
            "18c2c03f320e4c59a6451e13d3ce9221",
660
            "862d52c5e86f49f68013d234d1cb80e1",
661
            "d2290c10bbff46548e613f5045eb7117",
662
            "615e44bd9b404f96ab1ca449cb14d30d",
663
            "a0329c633eb04e0594ed4f033d25bc37"
664
          ]
665
        },
666
        "id": "528023ac",
667
        "outputId": "deb976ff-2225-45d1-9bce-ced92357067b"
668
      },
669
      "outputs": [
670
        {
671
          "name": "stderr",
672
          "output_type": "stream",
673
          "text": [
674
            "2022-11-03 15:18:28.534264: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
675
            "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
676
            "2022-11-03 15:18:28.796577: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
677
            "2022-11-03 15:18:30.642085: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
678
            "2022-11-03 15:18:30.642256: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
679
            "2022-11-03 15:18:30.642272: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n"
680
          ]
681
        }
682
      ],
683
      "source": [
684
        "from transformers import AutoTokenizer, AutoModel\n",
685
        "tokenizer = AutoTokenizer.from_pretrained(\"cambridgeltl/SapBERT-from-PubMedBERT-fulltext\")\n",
686
        "model = AutoModel.from_pretrained(\"cambridgeltl/SapBERT-from-PubMedBERT-fulltext\")"
687
      ]
688
    },
689
    {
690
      "cell_type": "code",
691
      "execution_count": null,
692
      "id": "tlzJasirUq6Y",
693
      "metadata": {
694
        "id": "tlzJasirUq6Y",
695
        "outputId": "6fa6247e-3bb5-4e07-b976-09f3b62a26db"
696
      },
697
      "outputs": [
698
        {
699
          "name": "stderr",
700
          "output_type": "stream",
701
          "text": [
702
            "2022-11-03 15:18:42.016139: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
703
            "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
704
            "2022-11-03 15:18:42.048513: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
705
            "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
706
            "2022-11-03 15:18:42.083803: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
707
            "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
708
            "2022-11-03 15:18:42.090996: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
709
            "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
710
            "2022-11-03 15:18:42.302304: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
711
            "2022-11-03 15:18:42.302975: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
712
            "2022-11-03 15:18:42.342529: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
713
            "2022-11-03 15:18:42.344770: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
714
            "2022-11-03 15:18:43.882634: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
715
            "2022-11-03 15:18:43.882867: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
716
            "2022-11-03 15:18:43.882893: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n",
717
            "2022-11-03 15:18:43.895654: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
718
            "2022-11-03 15:18:43.895895: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
719
            "2022-11-03 15:18:43.895920: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n",
720
            "2022-11-03 15:18:43.897874: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
721
            "2022-11-03 15:18:43.898080: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
722
            "2022-11-03 15:18:43.898103: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n",
723
            "2022-11-03 15:18:43.945918: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
724
            "2022-11-03 15:18:43.946181: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda-10.2/lib64:/opt/cudnn-7.6.5.32-cuda-10.2/lib64\n",
725
            "2022-11-03 15:18:43.946208: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n"
726
          ]
727
        },
728
        {
729
          "data": {
730
            "text/plain": [
731
              "<parallelformers.parallelize.parallelize at 0x14a2954f9f40>"
732
            ]
733
          },
734
          "execution_count": 16,
735
          "metadata": {},
736
          "output_type": "execute_result"
737
        }
738
      ],
739
      "source": [
740
        "# model = torch.nn.DataParallel(model)\n",
741
        "# model.to(device)\n",
742
        "from parallelformers import parallelize\n",
743
        "parallelize(model, num_gpus=4, fp16=True)"
744
      ]
745
    },
746
    {
747
      "cell_type": "markdown",
748
      "id": "a3a24048",
749
      "metadata": {
750
        "id": "a3a24048"
751
      },
752
      "source": [
753
        "Generate embeddings for snomed labels"
754
      ]
755
    },
756
    {
757
      "cell_type": "code",
758
      "execution_count": null,
759
      "id": "bb0b8655",
760
      "metadata": {
761
        "id": "bb0b8655"
762
      },
763
      "outputs": [],
764
      "source": [
765
        "# all_names1 = all_names[:100]"
766
      ]
767
    },
768
    {
769
      "cell_type": "code",
770
      "execution_count": null,
771
      "id": "5c5ff31c",
772
      "metadata": {
773
        "colab": {
774
          "base_uri": "https://localhost:8080/"
775
        },
776
        "id": "5c5ff31c",
777
        "outputId": "b229214d-80aa-4d6d-8ca7-7325c60944d6"
778
      },
779
      "outputs": [
780
        {
781
          "name": "stderr",
782
          "output_type": "stream",
783
          "text": [
784
            "100%|█████████████████████████████████████| 12260/12260 [17:08<00:00, 11.92it/s]\n"
785
          ]
786
        }
787
      ],
788
      "source": [
789
        "bs = 128\n",
790
        "all_reps = []\n",
791
        "for i in tqdm(np.arange(0, len(all_names), bs)):\n",
792
        "    toks = tokenizer.batch_encode_plus(all_names[i:i+bs],\n",
793
        "                                      padding=\"max_length\",\n",
794
        "                                      max_length=25,\n",
795
        "                                      truncation=True,\n",
796
        "                                      return_tensors=\"pt\")\n",
797
        "    toks = toks.to(device)\n",
798
        "    output = model(**toks)\n",
799
        "    cls_rep = output[0][:,0,:]\n",
800
        "    \n",
801
        "    all_reps.append(cls_rep.cpu().detach().numpy())\n",
802
        "all_reps_emb = np.concatenate(all_reps, axis=0)"
803
      ]
804
    },
805
    {
806
      "cell_type": "code",
807
      "execution_count": null,
808
      "id": "c1230654",
809
      "metadata": {
810
        "colab": {
811
          "base_uri": "https://localhost:8080/"
812
        },
813
        "id": "c1230654",
814
        "outputId": "a552bfff-4e03-4ac4-e3c4-34365c66c708"
815
      },
816
      "outputs": [
817
        {
818
          "name": "stdout",
819
          "output_type": "stream",
820
          "text": [
821
            "(1569232, 768)\n"
822
          ]
823
        }
824
      ],
825
      "source": [
826
        "print(all_reps_emb.shape)"
827
      ]
828
    },
829
    {
830
      "cell_type": "code",
831
      "execution_count": null,
832
      "id": "00a427c1",
833
      "metadata": {
834
        "id": "00a427c1"
835
      },
836
      "outputs": [],
837
      "source": [
838
        "all_reps_emb = all_reps_emb.astype(np.float32)"
839
      ]
840
    },
841
    {
842
      "cell_type": "code",
843
      "execution_count": null,
844
      "id": "3c884582",
845
      "metadata": {
846
        "id": "3c884582"
847
      },
848
      "outputs": [],
849
      "source": [
850
        "import faiss"
851
      ]
852
    },
853
    {
854
      "cell_type": "code",
855
      "execution_count": null,
856
      "id": "9d7d069d",
857
      "metadata": {
858
        "id": "9d7d069d",
859
        "outputId": "ff1b1498-4628-4c4a-edda-d98637fcace7"
860
      },
861
      "outputs": [
862
        {
863
          "name": "stdout",
864
          "output_type": "stream",
865
          "text": [
866
            "True\n"
867
          ]
868
        }
869
      ],
870
      "source": [
871
        "d = all_reps_emb.shape[1]\n",
872
        "index = faiss.IndexFlatL2(d)   # build the index\n",
873
        "print(index.is_trained)"
874
      ]
875
    },
876
    {
877
      "cell_type": "code",
878
      "execution_count": null,
879
      "id": "77b258e0",
880
      "metadata": {
881
        "id": "77b258e0",
882
        "outputId": "1bde8c9e-b1ed-420a-8bea-fc81b2090075"
883
      },
884
      "outputs": [
885
        {
886
          "name": "stdout",
887
          "output_type": "stream",
888
          "text": [
889
            "1569232\n"
890
          ]
891
        }
892
      ],
893
      "source": [
894
        "index.add(all_reps_emb)                  # add vectors to the index\n",
895
        "print(index.ntotal)"
896
      ]
897
    },
898
    {
899
      "cell_type": "markdown",
900
      "id": "40fe39a4",
901
      "metadata": {
902
        "id": "40fe39a4"
903
      },
904
      "source": [
905
        "Load ground truth data"
906
      ]
907
    },
908
    {
909
      "cell_type": "code",
910
      "execution_count": null,
911
      "id": "44851e30",
912
      "metadata": {
913
        "colab": {
914
          "base_uri": "https://localhost:8080/",
915
          "height": 337
916
        },
917
        "id": "44851e30",
918
        "outputId": "652b992e-de38-468a-e2f3-e5b48a60c143"
919
      },
920
      "outputs": [
921
        {
922
          "data": {
923
            "text/html": [
924
              "<div>\n",
925
              "<style scoped>\n",
926
              "    .dataframe tbody tr th:only-of-type {\n",
927
              "        vertical-align: middle;\n",
928
              "    }\n",
929
              "\n",
930
              "    .dataframe tbody tr th {\n",
931
              "        vertical-align: top;\n",
932
              "    }\n",
933
              "\n",
934
              "    .dataframe thead th {\n",
935
              "        text-align: right;\n",
936
              "    }\n",
937
              "</style>\n",
938
              "<table border=\"1\" class=\"dataframe\">\n",
939
              "  <thead>\n",
940
              "    <tr style=\"text-align: right;\">\n",
941
              "      <th></th>\n",
942
              "      <th>filename</th>\n",
943
              "      <th>mark</th>\n",
944
              "      <th>label</th>\n",
945
              "      <th>offset1</th>\n",
946
              "      <th>offset2</th>\n",
947
              "      <th>span</th>\n",
948
              "      <th>code</th>\n",
949
              "    </tr>\n",
950
              "  </thead>\n",
951
              "  <tbody>\n",
952
              "    <tr>\n",
953
              "      <th>0</th>\n",
954
              "      <td>es-S0212-71992007000100007-1</td>\n",
955
              "      <td>T1</td>\n",
956
              "      <td>ENFERMEDAD</td>\n",
957
              "      <td>40</td>\n",
958
              "      <td>61</td>\n",
959
              "      <td>arterial hypertension</td>\n",
960
              "      <td>38341003</td>\n",
961
              "    </tr>\n",
962
              "    <tr>\n",
963
              "      <th>1</th>\n",
964
              "      <td>es-S0212-71992007000100007-1</td>\n",
965
              "      <td>T2</td>\n",
966
              "      <td>ENFERMEDAD</td>\n",
967
              "      <td>66</td>\n",
968
              "      <td>79</td>\n",
969
              "      <td>polyarthrosis</td>\n",
970
              "      <td>36186002</td>\n",
971
              "    </tr>\n",
972
              "    <tr>\n",
973
              "      <th>2</th>\n",
974
              "      <td>es-S0212-71992007000100007-1</td>\n",
975
              "      <td>T3</td>\n",
976
              "      <td>ENFERMEDAD</td>\n",
977
              "      <td>1682</td>\n",
978
              "      <td>1698</td>\n",
979
              "      <td>pleural effusion</td>\n",
980
              "      <td>60046008</td>\n",
981
              "    </tr>\n",
982
              "    <tr>\n",
983
              "      <th>3</th>\n",
984
              "      <td>es-S0212-71992007000100007-1</td>\n",
985
              "      <td>T4</td>\n",
986
              "      <td>ENFERMEDAD</td>\n",
987
              "      <td>1859</td>\n",
988
              "      <td>1875</td>\n",
989
              "      <td>pleural effusion</td>\n",
990
              "      <td>60046008</td>\n",
991
              "    </tr>\n",
992
              "    <tr>\n",
993
              "      <th>4</th>\n",
994
              "      <td>es-S0212-71992007000100007-1</td>\n",
995
              "      <td>T5</td>\n",
996
              "      <td>ENFERMEDAD</td>\n",
997
              "      <td>1626</td>\n",
998
              "      <td>1648</td>\n",
999
              "      <td>lower lobe atelectasis</td>\n",
1000
              "      <td>46621007</td>\n",
1001
              "    </tr>\n",
1002
              "  </tbody>\n",
1003
              "</table>\n",
1004
              "</div>"
1005
            ],
1006
            "text/plain": [
1007
              "                       filename mark       label  offset1  offset2  \\\n",
1008
              "0  es-S0212-71992007000100007-1   T1  ENFERMEDAD       40       61   \n",
1009
              "1  es-S0212-71992007000100007-1   T2  ENFERMEDAD       66       79   \n",
1010
              "2  es-S0212-71992007000100007-1   T3  ENFERMEDAD     1682     1698   \n",
1011
              "3  es-S0212-71992007000100007-1   T4  ENFERMEDAD     1859     1875   \n",
1012
              "4  es-S0212-71992007000100007-1   T5  ENFERMEDAD     1626     1648   \n",
1013
              "\n",
1014
              "                     span      code  \n",
1015
              "0   arterial hypertension  38341003  \n",
1016
              "1           polyarthrosis  36186002  \n",
1017
              "2        pleural effusion  60046008  \n",
1018
              "3        pleural effusion  60046008  \n",
1019
              "4  lower lobe atelectasis  46621007  "
1020
            ]
1021
          },
1022
          "execution_count": 27,
1023
          "metadata": {},
1024
          "output_type": "execute_result"
1025
        }
1026
      ],
1027
      "source": [
1028
        "entities = pd.read_csv(\"data/entities.tsv\", delimiter=\"\\t\")\n",
1029
        "entities.head()"
1030
      ]
1031
    },
1032
    {
1033
      "cell_type": "code",
1034
      "execution_count": null,
1035
      "id": "8a009c68",
1036
      "metadata": {
1037
        "colab": {
1038
          "base_uri": "https://localhost:8080/"
1039
        },
1040
        "id": "8a009c68",
1041
        "outputId": "0b1bfb0f-0fa5-4487-d95c-2723a0c82f00",
1042
        "scrolled": true
1043
      },
1044
      "outputs": [
1045
        {
1046
          "name": "stdout",
1047
          "output_type": "stream",
1048
          "text": [
1049
            "['arterial hypertension', 'polyarthrosis', 'pleural effusion', 'pleural effusion', 'lower lobe atelectasis', 'infectious spondylodiscitis d10-d11', 'pleural effusion', 'brucellosis', 'orchiepididymitis', 'goitre']\n",
1050
            "0     38341003\n",
1051
            "1     36186002\n",
1052
            "2     60046008\n",
1053
            "3     60046008\n",
1054
            "4     46621007\n",
1055
            "5    302935008\n",
1056
            "6     60046008\n",
1057
            "7     75702008\n",
1058
            "8    197983000\n",
1059
            "9      3716002\n",
1060
            "Name: code, dtype: object\n"
1061
          ]
1062
        }
1063
      ],
1064
      "source": [
1065
        "inp_names = [i.lower() for i in entities['span']]\n",
1066
        "inp_labels = entities['code']\n",
1067
        "print(inp_names[:10])\n",
1068
        "print(inp_labels[:10])"
1069
      ]
1070
    },
1071
    {
1072
      "cell_type": "code",
1073
      "execution_count": null,
1074
      "id": "90bbf268",
1075
      "metadata": {
1076
        "id": "90bbf268"
1077
      },
1078
      "outputs": [],
1079
      "source": [
1080
        "# c=0\n",
1081
        "# for i in inp_label:\n",
1082
        "# #     if type(i)!=float:\n",
1083
        "#     try:\n",
1084
        "#         [float(i)]\n",
1085
        "#     except:\n",
1086
        "#         c+=1\n",
1087
        "# #         print(i.split('+'))\n",
1088
        "# c"
1089
      ]
1090
    },
1091
    {
1092
      "cell_type": "code",
1093
      "execution_count": null,
1094
      "id": "49562d03",
1095
      "metadata": {
1096
        "id": "49562d03"
1097
      },
1098
      "outputs": [],
1099
      "source": [
1100
        "# inp_names1 = inp_names[:10]"
1101
      ]
1102
    },
1103
    {
1104
      "cell_type": "markdown",
1105
      "id": "e6cf5d29",
1106
      "metadata": {
1107
        "id": "e6cf5d29"
1108
      },
1109
      "source": [
1110
        "Generate embeddings for ground truth terms, get their closest snomedct embedding and list out its corresponding snomedct code"
1111
      ]
1112
    },
1113
    {
1114
      "cell_type": "code",
1115
      "execution_count": null,
1116
      "id": "049818b3",
1117
      "metadata": {
1118
        "id": "049818b3"
1119
      },
1120
      "outputs": [],
1121
      "source": [
1122
        "query_toks = tokenizer.batch_encode_plus(list(inp_names),\n",
1123
        "                                        padding = \"max_length\",\n",
1124
        "                                        max_length = 25,\n",
1125
        "                                        truncation=True,\n",
1126
        "                                        return_tensors=\"pt\")\n",
1127
        "query_toks = query_toks.to(device)\n",
1128
        "query_output = model(**query_toks)\n",
1129
        "query_cls_rep = query_output[0][:,0,:]"
1130
      ]
1131
    },
1132
    {
1133
      "cell_type": "code",
1134
      "execution_count": null,
1135
      "id": "f0ab19b8",
1136
      "metadata": {
1137
        "id": "f0ab19b8"
1138
      },
1139
      "outputs": [],
1140
      "source": [
1141
        "query_cls_rep = query_cls_rep.cpu().detach().numpy()"
1142
      ]
1143
    },
1144
    {
1145
      "cell_type": "code",
1146
      "execution_count": null,
1147
      "id": "3d90a519",
1148
      "metadata": {
1149
        "id": "3d90a519"
1150
      },
1151
      "outputs": [],
1152
      "source": [
1153
        "query_cls_rep = query_cls_rep.astype(np.float32)"
1154
      ]
1155
    },
1156
    {
1157
      "cell_type": "code",
1158
      "execution_count": null,
1159
      "id": "184cd570",
1160
      "metadata": {
1161
        "id": "184cd570"
1162
      },
1163
      "outputs": [],
1164
      "source": [
1165
        "k= 1 # take the 1 closest neighbor"
1166
      ]
1167
    },
1168
    {
1169
      "cell_type": "code",
1170
      "execution_count": null,
1171
      "id": "ac0965a5",
1172
      "metadata": {
1173
        "id": "ac0965a5"
1174
      },
1175
      "outputs": [],
1176
      "source": [
1177
        "D, I = index.search(query_cls_rep, k)"
1178
      ]
1179
    },
1180
    {
1181
      "cell_type": "code",
1182
      "execution_count": null,
1183
      "id": "e7fada1e",
1184
      "metadata": {
1185
        "id": "e7fada1e",
1186
        "outputId": "3da12aec-6ca8-42ed-84ef-bb0a1f7589b0"
1187
      },
1188
      "outputs": [
1189
        {
1190
          "name": "stdout",
1191
          "output_type": "stream",
1192
          "text": [
1193
            "[[473409]\n",
1194
            " [ 58583]\n",
1195
            " [ 96888]\n",
1196
            " [ 96888]\n",
1197
            " [477684]]\n"
1198
          ]
1199
        }
1200
      ],
1201
      "source": [
1202
        "print(I[:5])"
1203
      ]
1204
    },
1205
    {
1206
      "cell_type": "code",
1207
      "execution_count": null,
1208
      "id": "4cfb69ca",
1209
      "metadata": {
1210
        "id": "4cfb69ca"
1211
      },
1212
      "outputs": [],
1213
      "source": []
1214
    },
1215
    {
1216
      "cell_type": "code",
1217
      "execution_count": null,
1218
      "id": "2145e65a",
1219
      "metadata": {
1220
        "id": "2145e65a"
1221
      },
1222
      "outputs": [],
1223
      "source": [
1224
        "pred_ids = [all_ids[i[0]] for i in I]\n",
1225
        "# score=sum((pred_ids[i]==inp_label[i])*1 for i in range(len(pred_ids)))\n",
1226
        "# score/len(inp_label)"
1227
      ]
1228
    },
1229
    {
1230
      "cell_type": "markdown",
1231
      "id": "85c1243b",
1232
      "metadata": {
1233
        "id": "85c1243b"
1234
      },
1235
      "source": [
1236
        "In ground truth, zero or more than one codes are also present for each term; here only one code is predicted for each query"
1237
      ]
1238
    },
1239
    {
1240
      "cell_type": "code",
1241
      "execution_count": null,
1242
      "id": "d7476a77",
1243
      "metadata": {
1244
        "id": "d7476a77"
1245
      },
1246
      "outputs": [],
1247
      "source": [
1248
        "p = [[i] for i in pred_ids]\n",
1249
        "t = []\n",
1250
        "for i in inp_labels:\n",
1251
        "    try:\n",
1252
        "        t.append([int(i)])\n",
1253
        "    except:\n",
1254
        "        try:\n",
1255
        "            t.append([int(j) for j in (i.split('+'))])\n",
1256
        "        except:\n",
1257
        "#             print('nomap')\n",
1258
        "            t.append([])\n"
1259
      ]
1260
    },
1261
    {
1262
      "cell_type": "code",
1263
      "execution_count": null,
1264
      "id": "5a676132",
1265
      "metadata": {
1266
        "id": "5a676132",
1267
        "outputId": "2f641e72-e210-4828-965e-03a19f935586"
1268
      },
1269
      "outputs": [
1270
        {
1271
          "data": {
1272
            "text/plain": [
1273
              "38341003"
1274
            ]
1275
          },
1276
          "execution_count": 49,
1277
          "metadata": {},
1278
          "output_type": "execute_result"
1279
        }
1280
      ],
1281
      "source": [
1282
        "p[0][0]"
1283
      ]
1284
    },
1285
    {
1286
      "cell_type": "code",
1287
      "execution_count": null,
1288
      "id": "424b2281",
1289
      "metadata": {
1290
        "id": "424b2281",
1291
        "outputId": "59a92896-28b7-49f2-e3c8-867d987a78c2"
1292
      },
1293
      "outputs": [
1294
        {
1295
          "data": {
1296
            "text/plain": [
1297
              "True"
1298
            ]
1299
          },
1300
          "execution_count": 50,
1301
          "metadata": {},
1302
          "output_type": "execute_result"
1303
        }
1304
      ],
1305
      "source": [
1306
        "p[0][0] in t[0]"
1307
      ]
1308
    },
1309
    {
1310
      "cell_type": "code",
1311
      "execution_count": null,
1312
      "id": "ae535967",
1313
      "metadata": {
1314
        "id": "ae535967",
1315
        "outputId": "bd4df60d-5218-40bf-81a5-2cb7e7150e5d"
1316
      },
1317
      "outputs": [
1318
        {
1319
          "name": "stdout",
1320
          "output_type": "stream",
1321
          "text": [
1322
            "precision 0.3675187969924812\n",
1323
            "recall 0.359147685525349\n",
1324
            "f1 0.3632849645578643\n"
1325
          ]
1326
        }
1327
      ],
1328
      "source": [
1329
        "pre = 0\n",
1330
        "for i in range(len(p)):\n",
1331
        "    if p[i][0] in t[i]:\n",
1332
        "        pre+=1\n",
1333
        "\n",
1334
        "pre /= len(p)\n",
1335
        "print('precision', pre)\n",
1336
        "\n",
1337
        "\n",
1338
        "rec = 0\n",
1339
        "for i in range(len(t)):\n",
1340
        "    if len(t[i])==1:\n",
1341
        "        if t[i][0] in p[i]:\n",
1342
        "            rec+=1\n",
1343
        "    elif len(t[i])>1:\n",
1344
        "        for j in range(len(t[i])):\n",
1345
        "            if t[i][j] in p[i]:\n",
1346
        "                rec+=1\n",
1347
        "\n",
1348
        "rec /= sum(len(i) for i in t)\n",
1349
        "print('recall', rec)       \n",
1350
        "\n",
1351
        "\n",
1352
        "f1 = 2*pre*rec/(pre+rec+np.finfo(np.float32).eps)\n",
1353
        "print('f1', f1)"
1354
      ]
1355
    }
1356
  ],
1357
  "metadata": {
1358
    "accelerator": "GPU",
1359
    "colab": {
1360
      "collapsed_sections": [],
1361
      "machine_shape": "hm",
1362
      "provenance": []
1363
    },
1364
    "gpuClass": "premium",
1365
    "kernelspec": {
1366
      "display_name": "Python 3 (ipykernel)",
1367
      "language": "python",
1368
      "name": "python3"
1369
    },
1370
    "language_info": {
1371
      "codemirror_mode": {
1372
        "name": "ipython",
1373
        "version": 3
1374
      },
1375
      "file_extension": ".py",
1376
      "mimetype": "text/x-python",
1377
      "name": "python",
1378
      "nbconvert_exporter": "python",
1379
      "pygments_lexer": "ipython3",
1380
      "version": "3.9.12"
1381
    },
1382
    "widgets": {
1383
      "application/vnd.jupyter.widget-state+json": {
1384
        "06f54b167c2e4289b78ba4822d2f98de": {
1385
          "model_module": "@jupyter-widgets/base",
1386
          "model_module_version": "1.2.0",
1387
          "model_name": "LayoutModel",
1388
          "state": {
1389
            "_model_module": "@jupyter-widgets/base",
1390
            "_model_module_version": "1.2.0",
1391
            "_model_name": "LayoutModel",
1392
            "_view_count": null,
1393
            "_view_module": "@jupyter-widgets/base",
1394
            "_view_module_version": "1.2.0",
1395
            "_view_name": "LayoutView",
1396
            "align_content": null,
1397
            "align_items": null,
1398
            "align_self": null,
1399
            "border": null,
1400
            "bottom": null,
1401
            "display": null,
1402
            "flex": null,
1403
            "flex_flow": null,
1404
            "grid_area": null,
1405
            "grid_auto_columns": null,
1406
            "grid_auto_flow": null,
1407
            "grid_auto_rows": null,
1408
            "grid_column": null,
1409
            "grid_gap": null,
1410
            "grid_row": null,
1411
            "grid_template_areas": null,
1412
            "grid_template_columns": null,
1413
            "grid_template_rows": null,
1414
            "height": null,
1415
            "justify_content": null,
1416
            "justify_items": null,
1417
            "left": null,
1418
            "margin": null,
1419
            "max_height": null,
1420
            "max_width": null,
1421
            "min_height": null,
1422
            "min_width": null,
1423
            "object_fit": null,
1424
            "object_position": null,
1425
            "order": null,
1426
            "overflow": null,
1427
            "overflow_x": null,
1428
            "overflow_y": null,
1429
            "padding": null,
1430
            "right": null,
1431
            "top": null,
1432
            "visibility": null,
1433
            "width": null
1434
          }
1435
        },
1436
        "0e853c8f845d44fd85b172c8200ec82a": {
1437
          "model_module": "@jupyter-widgets/controls",
1438
          "model_module_version": "1.5.0",
1439
          "model_name": "HTMLModel",
1440
          "state": {
1441
            "_dom_classes": [],
1442
            "_model_module": "@jupyter-widgets/controls",
1443
            "_model_module_version": "1.5.0",
1444
            "_model_name": "HTMLModel",
1445
            "_view_count": null,
1446
            "_view_module": "@jupyter-widgets/controls",
1447
            "_view_module_version": "1.5.0",
1448
            "_view_name": "HTMLView",
1449
            "description": "",
1450
            "description_tooltip": null,
1451
            "layout": "IPY_MODEL_615e44bd9b404f96ab1ca449cb14d30d",
1452
            "placeholder": "​",
1453
            "style": "IPY_MODEL_a0329c633eb04e0594ed4f033d25bc37",
1454
            "value": " 438M/438M [00:12&lt;00:00, 34.9MB/s]"
1455
          }
1456
        },
1457
        "17cd86d84b43442081de52f15f833a71": {
1458
          "model_module": "@jupyter-widgets/controls",
1459
          "model_module_version": "1.5.0",
1460
          "model_name": "HBoxModel",
1461
          "state": {
1462
            "_dom_classes": [],
1463
            "_model_module": "@jupyter-widgets/controls",
1464
            "_model_module_version": "1.5.0",
1465
            "_model_name": "HBoxModel",
1466
            "_view_count": null,
1467
            "_view_module": "@jupyter-widgets/controls",
1468
            "_view_module_version": "1.5.0",
1469
            "_view_name": "HBoxView",
1470
            "box_style": "",
1471
            "children": [
1472
              "IPY_MODEL_dbfa65b199f44020be9db0547b7ab18e",
1473
              "IPY_MODEL_d4cb162e77d844d8a672746573950427",
1474
              "IPY_MODEL_f00d00978f0f4077a4d10eeec352734f"
1475
            ],
1476
            "layout": "IPY_MODEL_94c0b3dad8754852b8f727454c03c814"
1477
          }
1478
        },
1479
        "18c2c03f320e4c59a6451e13d3ce9221": {
1480
          "model_module": "@jupyter-widgets/controls",
1481
          "model_module_version": "1.5.0",
1482
          "model_name": "DescriptionStyleModel",
1483
          "state": {
1484
            "_model_module": "@jupyter-widgets/controls",
1485
            "_model_module_version": "1.5.0",
1486
            "_model_name": "DescriptionStyleModel",
1487
            "_view_count": null,
1488
            "_view_module": "@jupyter-widgets/base",
1489
            "_view_module_version": "1.2.0",
1490
            "_view_name": "StyleView",
1491
            "description_width": ""
1492
          }
1493
        },
1494
        "1f6c9e48bf54406da669ee35c3f61d11": {
1495
          "model_module": "@jupyter-widgets/base",
1496
          "model_module_version": "1.2.0",
1497
          "model_name": "LayoutModel",
1498
          "state": {
1499
            "_model_module": "@jupyter-widgets/base",
1500
            "_model_module_version": "1.2.0",
1501
            "_model_name": "LayoutModel",
1502
            "_view_count": null,
1503
            "_view_module": "@jupyter-widgets/base",
1504
            "_view_module_version": "1.2.0",
1505
            "_view_name": "LayoutView",
1506
            "align_content": null,
1507
            "align_items": null,
1508
            "align_self": null,
1509
            "border": null,
1510
            "bottom": null,
1511
            "display": null,
1512
            "flex": null,
1513
            "flex_flow": null,
1514
            "grid_area": null,
1515
            "grid_auto_columns": null,
1516
            "grid_auto_flow": null,
1517
            "grid_auto_rows": null,
1518
            "grid_column": null,
1519
            "grid_gap": null,
1520
            "grid_row": null,
1521
            "grid_template_areas": null,
1522
            "grid_template_columns": null,
1523
            "grid_template_rows": null,
1524
            "height": null,
1525
            "justify_content": null,
1526
            "justify_items": null,
1527
            "left": null,
1528
            "margin": null,
1529
            "max_height": null,
1530
            "max_width": null,
1531
            "min_height": null,
1532
            "min_width": null,
1533
            "object_fit": null,
1534
            "object_position": null,
1535
            "order": null,
1536
            "overflow": null,
1537
            "overflow_x": null,
1538
            "overflow_y": null,
1539
            "padding": null,
1540
            "right": null,
1541
            "top": null,
1542
            "visibility": null,
1543
            "width": null
1544
          }
1545
        },
1546
        "243d9b8fbc0842cfb96b531e9762bb82": {
1547
          "model_module": "@jupyter-widgets/base",
1548
          "model_module_version": "1.2.0",
1549
          "model_name": "LayoutModel",
1550
          "state": {
1551
            "_model_module": "@jupyter-widgets/base",
1552
            "_model_module_version": "1.2.0",
1553
            "_model_name": "LayoutModel",
1554
            "_view_count": null,
1555
            "_view_module": "@jupyter-widgets/base",
1556
            "_view_module_version": "1.2.0",
1557
            "_view_name": "LayoutView",
1558
            "align_content": null,
1559
            "align_items": null,
1560
            "align_self": null,
1561
            "border": null,
1562
            "bottom": null,
1563
            "display": null,
1564
            "flex": null,
1565
            "flex_flow": null,
1566
            "grid_area": null,
1567
            "grid_auto_columns": null,
1568
            "grid_auto_flow": null,
1569
            "grid_auto_rows": null,
1570
            "grid_column": null,
1571
            "grid_gap": null,
1572
            "grid_row": null,
1573
            "grid_template_areas": null,
1574
            "grid_template_columns": null,
1575
            "grid_template_rows": null,
1576
            "height": null,
1577
            "justify_content": null,
1578
            "justify_items": null,
1579
            "left": null,
1580
            "margin": null,
1581
            "max_height": null,
1582
            "max_width": null,
1583
            "min_height": null,
1584
            "min_width": null,
1585
            "object_fit": null,
1586
            "object_position": null,
1587
            "order": null,
1588
            "overflow": null,
1589
            "overflow_x": null,
1590
            "overflow_y": null,
1591
            "padding": null,
1592
            "right": null,
1593
            "top": null,
1594
            "visibility": null,
1595
            "width": null
1596
          }
1597
        },
1598
        "2634942c850f4597be75b3a91f2d75a7": {
1599
          "model_module": "@jupyter-widgets/controls",
1600
          "model_module_version": "1.5.0",
1601
          "model_name": "FloatProgressModel",
1602
          "state": {
1603
            "_dom_classes": [],
1604
            "_model_module": "@jupyter-widgets/controls",
1605
            "_model_module_version": "1.5.0",
1606
            "_model_name": "FloatProgressModel",
1607
            "_view_count": null,
1608
            "_view_module": "@jupyter-widgets/controls",
1609
            "_view_module_version": "1.5.0",
1610
            "_view_name": "ProgressView",
1611
            "bar_style": "success",
1612
            "description": "",
1613
            "description_tooltip": null,
1614
            "layout": "IPY_MODEL_d76fe4566fb548188ecd8f0575fccb69",
1615
            "max": 198,
1616
            "min": 0,
1617
            "orientation": "horizontal",
1618
            "style": "IPY_MODEL_394fa40a235147e49fad6edbae132702",
1619
            "value": 198
1620
          }
1621
        },
1622
        "3389a5f07d1a4b4e88c118fe47f241aa": {
1623
          "model_module": "@jupyter-widgets/controls",
1624
          "model_module_version": "1.5.0",
1625
          "model_name": "HTMLModel",
1626
          "state": {
1627
            "_dom_classes": [],
1628
            "_model_module": "@jupyter-widgets/controls",
1629
            "_model_module_version": "1.5.0",
1630
            "_model_name": "HTMLModel",
1631
            "_view_count": null,
1632
            "_view_module": "@jupyter-widgets/controls",
1633
            "_view_module_version": "1.5.0",
1634
            "_view_name": "HTMLView",
1635
            "description": "",
1636
            "description_tooltip": null,
1637
            "layout": "IPY_MODEL_a9edca0387954a09ada230067e7355b2",
1638
            "placeholder": "​",
1639
            "style": "IPY_MODEL_a8b2871e2a164c94a58762d5cd3a2d95",
1640
            "value": "Downloading: 100%"
1641
          }
1642
        },
1643
        "394fa40a235147e49fad6edbae132702": {
1644
          "model_module": "@jupyter-widgets/controls",
1645
          "model_module_version": "1.5.0",
1646
          "model_name": "ProgressStyleModel",
1647
          "state": {
1648
            "_model_module": "@jupyter-widgets/controls",
1649
            "_model_module_version": "1.5.0",
1650
            "_model_name": "ProgressStyleModel",
1651
            "_view_count": null,
1652
            "_view_module": "@jupyter-widgets/base",
1653
            "_view_module_version": "1.2.0",
1654
            "_view_name": "StyleView",
1655
            "bar_color": null,
1656
            "description_width": ""
1657
          }
1658
        },
1659
        "39801cbd09484e439afb2829be9a9d52": {
1660
          "model_module": "@jupyter-widgets/controls",
1661
          "model_module_version": "1.5.0",
1662
          "model_name": "DescriptionStyleModel",
1663
          "state": {
1664
            "_model_module": "@jupyter-widgets/controls",
1665
            "_model_module_version": "1.5.0",
1666
            "_model_name": "DescriptionStyleModel",
1667
            "_view_count": null,
1668
            "_view_module": "@jupyter-widgets/base",
1669
            "_view_module_version": "1.2.0",
1670
            "_view_name": "StyleView",
1671
            "description_width": ""
1672
          }
1673
        },
1674
        "3f87d08da51c42ff8c909b12ca2df863": {
1675
          "model_module": "@jupyter-widgets/controls",
1676
          "model_module_version": "1.5.0",
1677
          "model_name": "HTMLModel",
1678
          "state": {
1679
            "_dom_classes": [],
1680
            "_model_module": "@jupyter-widgets/controls",
1681
            "_model_module_version": "1.5.0",
1682
            "_model_name": "HTMLModel",
1683
            "_view_count": null,
1684
            "_view_module": "@jupyter-widgets/controls",
1685
            "_view_module_version": "1.5.0",
1686
            "_view_name": "HTMLView",
1687
            "description": "",
1688
            "description_tooltip": null,
1689
            "layout": "IPY_MODEL_fb6b72144db74d8e85489007e0b97396",
1690
            "placeholder": "​",
1691
            "style": "IPY_MODEL_18c2c03f320e4c59a6451e13d3ce9221",
1692
            "value": "Downloading: 100%"
1693
          }
1694
        },
1695
        "4db71f00bd814dc3a0e5004eb5a2ae63": {
1696
          "model_module": "@jupyter-widgets/controls",
1697
          "model_module_version": "1.5.0",
1698
          "model_name": "DescriptionStyleModel",
1699
          "state": {
1700
            "_model_module": "@jupyter-widgets/controls",
1701
            "_model_module_version": "1.5.0",
1702
            "_model_name": "DescriptionStyleModel",
1703
            "_view_count": null,
1704
            "_view_module": "@jupyter-widgets/base",
1705
            "_view_module_version": "1.2.0",
1706
            "_view_name": "StyleView",
1707
            "description_width": ""
1708
          }
1709
        },
1710
        "521596b5e09b4d8fa79410d3601dcc32": {
1711
          "model_module": "@jupyter-widgets/base",
1712
          "model_module_version": "1.2.0",
1713
          "model_name": "LayoutModel",
1714
          "state": {
1715
            "_model_module": "@jupyter-widgets/base",
1716
            "_model_module_version": "1.2.0",
1717
            "_model_name": "LayoutModel",
1718
            "_view_count": null,
1719
            "_view_module": "@jupyter-widgets/base",
1720
            "_view_module_version": "1.2.0",
1721
            "_view_name": "LayoutView",
1722
            "align_content": null,
1723
            "align_items": null,
1724
            "align_self": null,
1725
            "border": null,
1726
            "bottom": null,
1727
            "display": null,
1728
            "flex": null,
1729
            "flex_flow": null,
1730
            "grid_area": null,
1731
            "grid_auto_columns": null,
1732
            "grid_auto_flow": null,
1733
            "grid_auto_rows": null,
1734
            "grid_column": null,
1735
            "grid_gap": null,
1736
            "grid_row": null,
1737
            "grid_template_areas": null,
1738
            "grid_template_columns": null,
1739
            "grid_template_rows": null,
1740
            "height": null,
1741
            "justify_content": null,
1742
            "justify_items": null,
1743
            "left": null,
1744
            "margin": null,
1745
            "max_height": null,
1746
            "max_width": null,
1747
            "min_height": null,
1748
            "min_width": null,
1749
            "object_fit": null,
1750
            "object_position": null,
1751
            "order": null,
1752
            "overflow": null,
1753
            "overflow_x": null,
1754
            "overflow_y": null,
1755
            "padding": null,
1756
            "right": null,
1757
            "top": null,
1758
            "visibility": null,
1759
            "width": null
1760
          }
1761
        },
1762
        "58efb1c2ea714ee0a373ecc67d72368f": {
1763
          "model_module": "@jupyter-widgets/base",
1764
          "model_module_version": "1.2.0",
1765
          "model_name": "LayoutModel",
1766
          "state": {
1767
            "_model_module": "@jupyter-widgets/base",
1768
            "_model_module_version": "1.2.0",
1769
            "_model_name": "LayoutModel",
1770
            "_view_count": null,
1771
            "_view_module": "@jupyter-widgets/base",
1772
            "_view_module_version": "1.2.0",
1773
            "_view_name": "LayoutView",
1774
            "align_content": null,
1775
            "align_items": null,
1776
            "align_self": null,
1777
            "border": null,
1778
            "bottom": null,
1779
            "display": null,
1780
            "flex": null,
1781
            "flex_flow": null,
1782
            "grid_area": null,
1783
            "grid_auto_columns": null,
1784
            "grid_auto_flow": null,
1785
            "grid_auto_rows": null,
1786
            "grid_column": null,
1787
            "grid_gap": null,
1788
            "grid_row": null,
1789
            "grid_template_areas": null,
1790
            "grid_template_columns": null,
1791
            "grid_template_rows": null,
1792
            "height": null,
1793
            "justify_content": null,
1794
            "justify_items": null,
1795
            "left": null,
1796
            "margin": null,
1797
            "max_height": null,
1798
            "max_width": null,
1799
            "min_height": null,
1800
            "min_width": null,
1801
            "object_fit": null,
1802
            "object_position": null,
1803
            "order": null,
1804
            "overflow": null,
1805
            "overflow_x": null,
1806
            "overflow_y": null,
1807
            "padding": null,
1808
            "right": null,
1809
            "top": null,
1810
            "visibility": null,
1811
            "width": null
1812
          }
1813
        },
1814
        "5abf07ae3e3c4f0eb8c12334ed383bcf": {
1815
          "model_module": "@jupyter-widgets/controls",
1816
          "model_module_version": "1.5.0",
1817
          "model_name": "ProgressStyleModel",
1818
          "state": {
1819
            "_model_module": "@jupyter-widgets/controls",
1820
            "_model_module_version": "1.5.0",
1821
            "_model_name": "ProgressStyleModel",
1822
            "_view_count": null,
1823
            "_view_module": "@jupyter-widgets/base",
1824
            "_view_module_version": "1.2.0",
1825
            "_view_name": "StyleView",
1826
            "bar_color": null,
1827
            "description_width": ""
1828
          }
1829
        },
1830
        "615e44bd9b404f96ab1ca449cb14d30d": {
1831
          "model_module": "@jupyter-widgets/base",
1832
          "model_module_version": "1.2.0",
1833
          "model_name": "LayoutModel",
1834
          "state": {
1835
            "_model_module": "@jupyter-widgets/base",
1836
            "_model_module_version": "1.2.0",
1837
            "_model_name": "LayoutModel",
1838
            "_view_count": null,
1839
            "_view_module": "@jupyter-widgets/base",
1840
            "_view_module_version": "1.2.0",
1841
            "_view_name": "LayoutView",
1842
            "align_content": null,
1843
            "align_items": null,
1844
            "align_self": null,
1845
            "border": null,
1846
            "bottom": null,
1847
            "display": null,
1848
            "flex": null,
1849
            "flex_flow": null,
1850
            "grid_area": null,
1851
            "grid_auto_columns": null,
1852
            "grid_auto_flow": null,
1853
            "grid_auto_rows": null,
1854
            "grid_column": null,
1855
            "grid_gap": null,
1856
            "grid_row": null,
1857
            "grid_template_areas": null,
1858
            "grid_template_columns": null,
1859
            "grid_template_rows": null,
1860
            "height": null,
1861
            "justify_content": null,
1862
            "justify_items": null,
1863
            "left": null,
1864
            "margin": null,
1865
            "max_height": null,
1866
            "max_width": null,
1867
            "min_height": null,
1868
            "min_width": null,
1869
            "object_fit": null,
1870
            "object_position": null,
1871
            "order": null,
1872
            "overflow": null,
1873
            "overflow_x": null,
1874
            "overflow_y": null,
1875
            "padding": null,
1876
            "right": null,
1877
            "top": null,
1878
            "visibility": null,
1879
            "width": null
1880
          }
1881
        },
1882
        "743e49cf0f5a464b99ab5e1b96c81543": {
1883
          "model_module": "@jupyter-widgets/base",
1884
          "model_module_version": "1.2.0",
1885
          "model_name": "LayoutModel",
1886
          "state": {
1887
            "_model_module": "@jupyter-widgets/base",
1888
            "_model_module_version": "1.2.0",
1889
            "_model_name": "LayoutModel",
1890
            "_view_count": null,
1891
            "_view_module": "@jupyter-widgets/base",
1892
            "_view_module_version": "1.2.0",
1893
            "_view_name": "LayoutView",
1894
            "align_content": null,
1895
            "align_items": null,
1896
            "align_self": null,
1897
            "border": null,
1898
            "bottom": null,
1899
            "display": null,
1900
            "flex": null,
1901
            "flex_flow": null,
1902
            "grid_area": null,
1903
            "grid_auto_columns": null,
1904
            "grid_auto_flow": null,
1905
            "grid_auto_rows": null,
1906
            "grid_column": null,
1907
            "grid_gap": null,
1908
            "grid_row": null,
1909
            "grid_template_areas": null,
1910
            "grid_template_columns": null,
1911
            "grid_template_rows": null,
1912
            "height": null,
1913
            "justify_content": null,
1914
            "justify_items": null,
1915
            "left": null,
1916
            "margin": null,
1917
            "max_height": null,
1918
            "max_width": null,
1919
            "min_height": null,
1920
            "min_width": null,
1921
            "object_fit": null,
1922
            "object_position": null,
1923
            "order": null,
1924
            "overflow": null,
1925
            "overflow_x": null,
1926
            "overflow_y": null,
1927
            "padding": null,
1928
            "right": null,
1929
            "top": null,
1930
            "visibility": null,
1931
            "width": null
1932
          }
1933
        },
1934
        "7467ec745de94196b786bf7219744a42": {
1935
          "model_module": "@jupyter-widgets/controls",
1936
          "model_module_version": "1.5.0",
1937
          "model_name": "HTMLModel",
1938
          "state": {
1939
            "_dom_classes": [],
1940
            "_model_module": "@jupyter-widgets/controls",
1941
            "_model_module_version": "1.5.0",
1942
            "_model_name": "HTMLModel",
1943
            "_view_count": null,
1944
            "_view_module": "@jupyter-widgets/controls",
1945
            "_view_module_version": "1.5.0",
1946
            "_view_name": "HTMLView",
1947
            "description": "",
1948
            "description_tooltip": null,
1949
            "layout": "IPY_MODEL_81f4f0e1758e4d2498e62dd95c2ea6c6",
1950
            "placeholder": "​",
1951
            "style": "IPY_MODEL_4db71f00bd814dc3a0e5004eb5a2ae63",
1952
            "value": "Downloading: 100%"
1953
          }
1954
        },
1955
        "76ffde2b8d2a4e1ba6a237bda4f7d856": {
1956
          "model_module": "@jupyter-widgets/base",
1957
          "model_module_version": "1.2.0",
1958
          "model_name": "LayoutModel",
1959
          "state": {
1960
            "_model_module": "@jupyter-widgets/base",
1961
            "_model_module_version": "1.2.0",
1962
            "_model_name": "LayoutModel",
1963
            "_view_count": null,
1964
            "_view_module": "@jupyter-widgets/base",
1965
            "_view_module_version": "1.2.0",
1966
            "_view_name": "LayoutView",
1967
            "align_content": null,
1968
            "align_items": null,
1969
            "align_self": null,
1970
            "border": null,
1971
            "bottom": null,
1972
            "display": null,
1973
            "flex": null,
1974
            "flex_flow": null,
1975
            "grid_area": null,
1976
            "grid_auto_columns": null,
1977
            "grid_auto_flow": null,
1978
            "grid_auto_rows": null,
1979
            "grid_column": null,
1980
            "grid_gap": null,
1981
            "grid_row": null,
1982
            "grid_template_areas": null,
1983
            "grid_template_columns": null,
1984
            "grid_template_rows": null,
1985
            "height": null,
1986
            "justify_content": null,
1987
            "justify_items": null,
1988
            "left": null,
1989
            "margin": null,
1990
            "max_height": null,
1991
            "max_width": null,
1992
            "min_height": null,
1993
            "min_width": null,
1994
            "object_fit": null,
1995
            "object_position": null,
1996
            "order": null,
1997
            "overflow": null,
1998
            "overflow_x": null,
1999
            "overflow_y": null,
2000
            "padding": null,
2001
            "right": null,
2002
            "top": null,
2003
            "visibility": null,
2004
            "width": null
2005
          }
2006
        },
2007
        "79cac786f31e4ee083b5c637d28eb7fc": {
2008
          "model_module": "@jupyter-widgets/controls",
2009
          "model_module_version": "1.5.0",
2010
          "model_name": "FloatProgressModel",
2011
          "state": {
2012
            "_dom_classes": [],
2013
            "_model_module": "@jupyter-widgets/controls",
2014
            "_model_module_version": "1.5.0",
2015
            "_model_name": "FloatProgressModel",
2016
            "_view_count": null,
2017
            "_view_module": "@jupyter-widgets/controls",
2018
            "_view_module_version": "1.5.0",
2019
            "_view_name": "ProgressView",
2020
            "bar_style": "success",
2021
            "description": "",
2022
            "description_tooltip": null,
2023
            "layout": "IPY_MODEL_d20681be016d438eb638f1c7108f0d6a",
2024
            "max": 226150,
2025
            "min": 0,
2026
            "orientation": "horizontal",
2027
            "style": "IPY_MODEL_5abf07ae3e3c4f0eb8c12334ed383bcf",
2028
            "value": 226150
2029
          }
2030
        },
2031
        "7b3448ed1e9442fa92acd84ea146ac2d": {
2032
          "model_module": "@jupyter-widgets/controls",
2033
          "model_module_version": "1.5.0",
2034
          "model_name": "ProgressStyleModel",
2035
          "state": {
2036
            "_model_module": "@jupyter-widgets/controls",
2037
            "_model_module_version": "1.5.0",
2038
            "_model_name": "ProgressStyleModel",
2039
            "_view_count": null,
2040
            "_view_module": "@jupyter-widgets/base",
2041
            "_view_module_version": "1.2.0",
2042
            "_view_name": "StyleView",
2043
            "bar_color": null,
2044
            "description_width": ""
2045
          }
2046
        },
2047
        "7eb1948251dd460aa0d42f2d98536ed1": {
2048
          "model_module": "@jupyter-widgets/controls",
2049
          "model_module_version": "1.5.0",
2050
          "model_name": "HTMLModel",
2051
          "state": {
2052
            "_dom_classes": [],
2053
            "_model_module": "@jupyter-widgets/controls",
2054
            "_model_module_version": "1.5.0",
2055
            "_model_name": "HTMLModel",
2056
            "_view_count": null,
2057
            "_view_module": "@jupyter-widgets/controls",
2058
            "_view_module_version": "1.5.0",
2059
            "_view_name": "HTMLView",
2060
            "description": "",
2061
            "description_tooltip": null,
2062
            "layout": "IPY_MODEL_ac83aa99e714487a919ea7aebd0ca422",
2063
            "placeholder": "​",
2064
            "style": "IPY_MODEL_b963ba7bcd0a481a99d32418a5411ea6",
2065
            "value": " 462/462 [00:00&lt;00:00, 11.0kB/s]"
2066
          }
2067
        },
2068
        "802c6b027b704fce99d59f7da5eb1955": {
2069
          "model_module": "@jupyter-widgets/base",
2070
          "model_module_version": "1.2.0",
2071
          "model_name": "LayoutModel",
2072
          "state": {
2073
            "_model_module": "@jupyter-widgets/base",
2074
            "_model_module_version": "1.2.0",
2075
            "_model_name": "LayoutModel",
2076
            "_view_count": null,
2077
            "_view_module": "@jupyter-widgets/base",
2078
            "_view_module_version": "1.2.0",
2079
            "_view_name": "LayoutView",
2080
            "align_content": null,
2081
            "align_items": null,
2082
            "align_self": null,
2083
            "border": null,
2084
            "bottom": null,
2085
            "display": null,
2086
            "flex": null,
2087
            "flex_flow": null,
2088
            "grid_area": null,
2089
            "grid_auto_columns": null,
2090
            "grid_auto_flow": null,
2091
            "grid_auto_rows": null,
2092
            "grid_column": null,
2093
            "grid_gap": null,
2094
            "grid_row": null,
2095
            "grid_template_areas": null,
2096
            "grid_template_columns": null,
2097
            "grid_template_rows": null,
2098
            "height": null,
2099
            "justify_content": null,
2100
            "justify_items": null,
2101
            "left": null,
2102
            "margin": null,
2103
            "max_height": null,
2104
            "max_width": null,
2105
            "min_height": null,
2106
            "min_width": null,
2107
            "object_fit": null,
2108
            "object_position": null,
2109
            "order": null,
2110
            "overflow": null,
2111
            "overflow_x": null,
2112
            "overflow_y": null,
2113
            "padding": null,
2114
            "right": null,
2115
            "top": null,
2116
            "visibility": null,
2117
            "width": null
2118
          }
2119
        },
2120
        "81f4f0e1758e4d2498e62dd95c2ea6c6": {
2121
          "model_module": "@jupyter-widgets/base",
2122
          "model_module_version": "1.2.0",
2123
          "model_name": "LayoutModel",
2124
          "state": {
2125
            "_model_module": "@jupyter-widgets/base",
2126
            "_model_module_version": "1.2.0",
2127
            "_model_name": "LayoutModel",
2128
            "_view_count": null,
2129
            "_view_module": "@jupyter-widgets/base",
2130
            "_view_module_version": "1.2.0",
2131
            "_view_name": "LayoutView",
2132
            "align_content": null,
2133
            "align_items": null,
2134
            "align_self": null,
2135
            "border": null,
2136
            "bottom": null,
2137
            "display": null,
2138
            "flex": null,
2139
            "flex_flow": null,
2140
            "grid_area": null,
2141
            "grid_auto_columns": null,
2142
            "grid_auto_flow": null,
2143
            "grid_auto_rows": null,
2144
            "grid_column": null,
2145
            "grid_gap": null,
2146
            "grid_row": null,
2147
            "grid_template_areas": null,
2148
            "grid_template_columns": null,
2149
            "grid_template_rows": null,
2150
            "height": null,
2151
            "justify_content": null,
2152
            "justify_items": null,
2153
            "left": null,
2154
            "margin": null,
2155
            "max_height": null,
2156
            "max_width": null,
2157
            "min_height": null,
2158
            "min_width": null,
2159
            "object_fit": null,
2160
            "object_position": null,
2161
            "order": null,
2162
            "overflow": null,
2163
            "overflow_x": null,
2164
            "overflow_y": null,
2165
            "padding": null,
2166
            "right": null,
2167
            "top": null,
2168
            "visibility": null,
2169
            "width": null
2170
          }
2171
        },
2172
        "862d52c5e86f49f68013d234d1cb80e1": {
2173
          "model_module": "@jupyter-widgets/base",
2174
          "model_module_version": "1.2.0",
2175
          "model_name": "LayoutModel",
2176
          "state": {
2177
            "_model_module": "@jupyter-widgets/base",
2178
            "_model_module_version": "1.2.0",
2179
            "_model_name": "LayoutModel",
2180
            "_view_count": null,
2181
            "_view_module": "@jupyter-widgets/base",
2182
            "_view_module_version": "1.2.0",
2183
            "_view_name": "LayoutView",
2184
            "align_content": null,
2185
            "align_items": null,
2186
            "align_self": null,
2187
            "border": null,
2188
            "bottom": null,
2189
            "display": null,
2190
            "flex": null,
2191
            "flex_flow": null,
2192
            "grid_area": null,
2193
            "grid_auto_columns": null,
2194
            "grid_auto_flow": null,
2195
            "grid_auto_rows": null,
2196
            "grid_column": null,
2197
            "grid_gap": null,
2198
            "grid_row": null,
2199
            "grid_template_areas": null,
2200
            "grid_template_columns": null,
2201
            "grid_template_rows": null,
2202
            "height": null,
2203
            "justify_content": null,
2204
            "justify_items": null,
2205
            "left": null,
2206
            "margin": null,
2207
            "max_height": null,
2208
            "max_width": null,
2209
            "min_height": null,
2210
            "min_width": null,
2211
            "object_fit": null,
2212
            "object_position": null,
2213
            "order": null,
2214
            "overflow": null,
2215
            "overflow_x": null,
2216
            "overflow_y": null,
2217
            "padding": null,
2218
            "right": null,
2219
            "top": null,
2220
            "visibility": null,
2221
            "width": null
2222
          }
2223
        },
2224
        "91742ec5cec441b5a94d3046c777b22c": {
2225
          "model_module": "@jupyter-widgets/controls",
2226
          "model_module_version": "1.5.0",
2227
          "model_name": "HTMLModel",
2228
          "state": {
2229
            "_dom_classes": [],
2230
            "_model_module": "@jupyter-widgets/controls",
2231
            "_model_module_version": "1.5.0",
2232
            "_model_name": "HTMLModel",
2233
            "_view_count": null,
2234
            "_view_module": "@jupyter-widgets/controls",
2235
            "_view_module_version": "1.5.0",
2236
            "_view_name": "HTMLView",
2237
            "description": "",
2238
            "description_tooltip": null,
2239
            "layout": "IPY_MODEL_06f54b167c2e4289b78ba4822d2f98de",
2240
            "placeholder": "​",
2241
            "style": "IPY_MODEL_9b0a676b668a4ff884a72196524a9229",
2242
            "value": "Downloading: 100%"
2243
          }
2244
        },
2245
        "94c0b3dad8754852b8f727454c03c814": {
2246
          "model_module": "@jupyter-widgets/base",
2247
          "model_module_version": "1.2.0",
2248
          "model_name": "LayoutModel",
2249
          "state": {
2250
            "_model_module": "@jupyter-widgets/base",
2251
            "_model_module_version": "1.2.0",
2252
            "_model_name": "LayoutModel",
2253
            "_view_count": null,
2254
            "_view_module": "@jupyter-widgets/base",
2255
            "_view_module_version": "1.2.0",
2256
            "_view_name": "LayoutView",
2257
            "align_content": null,
2258
            "align_items": null,
2259
            "align_self": null,
2260
            "border": null,
2261
            "bottom": null,
2262
            "display": null,
2263
            "flex": null,
2264
            "flex_flow": null,
2265
            "grid_area": null,
2266
            "grid_auto_columns": null,
2267
            "grid_auto_flow": null,
2268
            "grid_auto_rows": null,
2269
            "grid_column": null,
2270
            "grid_gap": null,
2271
            "grid_row": null,
2272
            "grid_template_areas": null,
2273
            "grid_template_columns": null,
2274
            "grid_template_rows": null,
2275
            "height": null,
2276
            "justify_content": null,
2277
            "justify_items": null,
2278
            "left": null,
2279
            "margin": null,
2280
            "max_height": null,
2281
            "max_width": null,
2282
            "min_height": null,
2283
            "min_width": null,
2284
            "object_fit": null,
2285
            "object_position": null,
2286
            "order": null,
2287
            "overflow": null,
2288
            "overflow_x": null,
2289
            "overflow_y": null,
2290
            "padding": null,
2291
            "right": null,
2292
            "top": null,
2293
            "visibility": null,
2294
            "width": null
2295
          }
2296
        },
2297
        "998be9daecca4ed6b835333b44a5ba9e": {
2298
          "model_module": "@jupyter-widgets/controls",
2299
          "model_module_version": "1.5.0",
2300
          "model_name": "HBoxModel",
2301
          "state": {
2302
            "_dom_classes": [],
2303
            "_model_module": "@jupyter-widgets/controls",
2304
            "_model_module_version": "1.5.0",
2305
            "_model_name": "HBoxModel",
2306
            "_view_count": null,
2307
            "_view_module": "@jupyter-widgets/controls",
2308
            "_view_module_version": "1.5.0",
2309
            "_view_name": "HBoxView",
2310
            "box_style": "",
2311
            "children": [
2312
              "IPY_MODEL_7467ec745de94196b786bf7219744a42",
2313
              "IPY_MODEL_b2d2469f3f0e4639a51ee68b7b74d20a",
2314
              "IPY_MODEL_7eb1948251dd460aa0d42f2d98536ed1"
2315
            ],
2316
            "layout": "IPY_MODEL_9cec228d653e40e8a3774021542ffb68"
2317
          }
2318
        },
2319
        "9b0a676b668a4ff884a72196524a9229": {
2320
          "model_module": "@jupyter-widgets/controls",
2321
          "model_module_version": "1.5.0",
2322
          "model_name": "DescriptionStyleModel",
2323
          "state": {
2324
            "_model_module": "@jupyter-widgets/controls",
2325
            "_model_module_version": "1.5.0",
2326
            "_model_name": "DescriptionStyleModel",
2327
            "_view_count": null,
2328
            "_view_module": "@jupyter-widgets/base",
2329
            "_view_module_version": "1.2.0",
2330
            "_view_name": "StyleView",
2331
            "description_width": ""
2332
          }
2333
        },
2334
        "9cec228d653e40e8a3774021542ffb68": {
2335
          "model_module": "@jupyter-widgets/base",
2336
          "model_module_version": "1.2.0",
2337
          "model_name": "LayoutModel",
2338
          "state": {
2339
            "_model_module": "@jupyter-widgets/base",
2340
            "_model_module_version": "1.2.0",
2341
            "_model_name": "LayoutModel",
2342
            "_view_count": null,
2343
            "_view_module": "@jupyter-widgets/base",
2344
            "_view_module_version": "1.2.0",
2345
            "_view_name": "LayoutView",
2346
            "align_content": null,
2347
            "align_items": null,
2348
            "align_self": null,
2349
            "border": null,
2350
            "bottom": null,
2351
            "display": null,
2352
            "flex": null,
2353
            "flex_flow": null,
2354
            "grid_area": null,
2355
            "grid_auto_columns": null,
2356
            "grid_auto_flow": null,
2357
            "grid_auto_rows": null,
2358
            "grid_column": null,
2359
            "grid_gap": null,
2360
            "grid_row": null,
2361
            "grid_template_areas": null,
2362
            "grid_template_columns": null,
2363
            "grid_template_rows": null,
2364
            "height": null,
2365
            "justify_content": null,
2366
            "justify_items": null,
2367
            "left": null,
2368
            "margin": null,
2369
            "max_height": null,
2370
            "max_width": null,
2371
            "min_height": null,
2372
            "min_width": null,
2373
            "object_fit": null,
2374
            "object_position": null,
2375
            "order": null,
2376
            "overflow": null,
2377
            "overflow_x": null,
2378
            "overflow_y": null,
2379
            "padding": null,
2380
            "right": null,
2381
            "top": null,
2382
            "visibility": null,
2383
            "width": null
2384
          }
2385
        },
2386
        "a0329c633eb04e0594ed4f033d25bc37": {
2387
          "model_module": "@jupyter-widgets/controls",
2388
          "model_module_version": "1.5.0",
2389
          "model_name": "DescriptionStyleModel",
2390
          "state": {
2391
            "_model_module": "@jupyter-widgets/controls",
2392
            "_model_module_version": "1.5.0",
2393
            "_model_name": "DescriptionStyleModel",
2394
            "_view_count": null,
2395
            "_view_module": "@jupyter-widgets/base",
2396
            "_view_module_version": "1.2.0",
2397
            "_view_name": "StyleView",
2398
            "description_width": ""
2399
          }
2400
        },
2401
        "a8b2871e2a164c94a58762d5cd3a2d95": {
2402
          "model_module": "@jupyter-widgets/controls",
2403
          "model_module_version": "1.5.0",
2404
          "model_name": "DescriptionStyleModel",
2405
          "state": {
2406
            "_model_module": "@jupyter-widgets/controls",
2407
            "_model_module_version": "1.5.0",
2408
            "_model_name": "DescriptionStyleModel",
2409
            "_view_count": null,
2410
            "_view_module": "@jupyter-widgets/base",
2411
            "_view_module_version": "1.2.0",
2412
            "_view_name": "StyleView",
2413
            "description_width": ""
2414
          }
2415
        },
2416
        "a9edca0387954a09ada230067e7355b2": {
2417
          "model_module": "@jupyter-widgets/base",
2418
          "model_module_version": "1.2.0",
2419
          "model_name": "LayoutModel",
2420
          "state": {
2421
            "_model_module": "@jupyter-widgets/base",
2422
            "_model_module_version": "1.2.0",
2423
            "_model_name": "LayoutModel",
2424
            "_view_count": null,
2425
            "_view_module": "@jupyter-widgets/base",
2426
            "_view_module_version": "1.2.0",
2427
            "_view_name": "LayoutView",
2428
            "align_content": null,
2429
            "align_items": null,
2430
            "align_self": null,
2431
            "border": null,
2432
            "bottom": null,
2433
            "display": null,
2434
            "flex": null,
2435
            "flex_flow": null,
2436
            "grid_area": null,
2437
            "grid_auto_columns": null,
2438
            "grid_auto_flow": null,
2439
            "grid_auto_rows": null,
2440
            "grid_column": null,
2441
            "grid_gap": null,
2442
            "grid_row": null,
2443
            "grid_template_areas": null,
2444
            "grid_template_columns": null,
2445
            "grid_template_rows": null,
2446
            "height": null,
2447
            "justify_content": null,
2448
            "justify_items": null,
2449
            "left": null,
2450
            "margin": null,
2451
            "max_height": null,
2452
            "max_width": null,
2453
            "min_height": null,
2454
            "min_width": null,
2455
            "object_fit": null,
2456
            "object_position": null,
2457
            "order": null,
2458
            "overflow": null,
2459
            "overflow_x": null,
2460
            "overflow_y": null,
2461
            "padding": null,
2462
            "right": null,
2463
            "top": null,
2464
            "visibility": null,
2465
            "width": null
2466
          }
2467
        },
2468
        "ac83aa99e714487a919ea7aebd0ca422": {
2469
          "model_module": "@jupyter-widgets/base",
2470
          "model_module_version": "1.2.0",
2471
          "model_name": "LayoutModel",
2472
          "state": {
2473
            "_model_module": "@jupyter-widgets/base",
2474
            "_model_module_version": "1.2.0",
2475
            "_model_name": "LayoutModel",
2476
            "_view_count": null,
2477
            "_view_module": "@jupyter-widgets/base",
2478
            "_view_module_version": "1.2.0",
2479
            "_view_name": "LayoutView",
2480
            "align_content": null,
2481
            "align_items": null,
2482
            "align_self": null,
2483
            "border": null,
2484
            "bottom": null,
2485
            "display": null,
2486
            "flex": null,
2487
            "flex_flow": null,
2488
            "grid_area": null,
2489
            "grid_auto_columns": null,
2490
            "grid_auto_flow": null,
2491
            "grid_auto_rows": null,
2492
            "grid_column": null,
2493
            "grid_gap": null,
2494
            "grid_row": null,
2495
            "grid_template_areas": null,
2496
            "grid_template_columns": null,
2497
            "grid_template_rows": null,
2498
            "height": null,
2499
            "justify_content": null,
2500
            "justify_items": null,
2501
            "left": null,
2502
            "margin": null,
2503
            "max_height": null,
2504
            "max_width": null,
2505
            "min_height": null,
2506
            "min_width": null,
2507
            "object_fit": null,
2508
            "object_position": null,
2509
            "order": null,
2510
            "overflow": null,
2511
            "overflow_x": null,
2512
            "overflow_y": null,
2513
            "padding": null,
2514
            "right": null,
2515
            "top": null,
2516
            "visibility": null,
2517
            "width": null
2518
          }
2519
        },
2520
        "b2d2469f3f0e4639a51ee68b7b74d20a": {
2521
          "model_module": "@jupyter-widgets/controls",
2522
          "model_module_version": "1.5.0",
2523
          "model_name": "FloatProgressModel",
2524
          "state": {
2525
            "_dom_classes": [],
2526
            "_model_module": "@jupyter-widgets/controls",
2527
            "_model_module_version": "1.5.0",
2528
            "_model_name": "FloatProgressModel",
2529
            "_view_count": null,
2530
            "_view_module": "@jupyter-widgets/controls",
2531
            "_view_module_version": "1.5.0",
2532
            "_view_name": "ProgressView",
2533
            "bar_style": "success",
2534
            "description": "",
2535
            "description_tooltip": null,
2536
            "layout": "IPY_MODEL_802c6b027b704fce99d59f7da5eb1955",
2537
            "max": 462,
2538
            "min": 0,
2539
            "orientation": "horizontal",
2540
            "style": "IPY_MODEL_df0df21a4ca647e683889a221065b16f",
2541
            "value": 462
2542
          }
2543
        },
2544
        "b769f41cc70c4c65a25f0d4a94811bf6": {
2545
          "model_module": "@jupyter-widgets/controls",
2546
          "model_module_version": "1.5.0",
2547
          "model_name": "HBoxModel",
2548
          "state": {
2549
            "_dom_classes": [],
2550
            "_model_module": "@jupyter-widgets/controls",
2551
            "_model_module_version": "1.5.0",
2552
            "_model_name": "HBoxModel",
2553
            "_view_count": null,
2554
            "_view_module": "@jupyter-widgets/controls",
2555
            "_view_module_version": "1.5.0",
2556
            "_view_name": "HBoxView",
2557
            "box_style": "",
2558
            "children": [
2559
              "IPY_MODEL_3389a5f07d1a4b4e88c118fe47f241aa",
2560
              "IPY_MODEL_79cac786f31e4ee083b5c637d28eb7fc",
2561
              "IPY_MODEL_ff99ea7820634adb98d061ef265f2ff4"
2562
            ],
2563
            "layout": "IPY_MODEL_c91b598e790e4c6ba21aeab31c177bf0"
2564
          }
2565
        },
2566
        "b963ba7bcd0a481a99d32418a5411ea6": {
2567
          "model_module": "@jupyter-widgets/controls",
2568
          "model_module_version": "1.5.0",
2569
          "model_name": "DescriptionStyleModel",
2570
          "state": {
2571
            "_model_module": "@jupyter-widgets/controls",
2572
            "_model_module_version": "1.5.0",
2573
            "_model_name": "DescriptionStyleModel",
2574
            "_view_count": null,
2575
            "_view_module": "@jupyter-widgets/base",
2576
            "_view_module_version": "1.2.0",
2577
            "_view_name": "StyleView",
2578
            "description_width": ""
2579
          }
2580
        },
2581
        "ba13e64517a740bc89b29e25dac9de4f": {
2582
          "model_module": "@jupyter-widgets/controls",
2583
          "model_module_version": "1.5.0",
2584
          "model_name": "HBoxModel",
2585
          "state": {
2586
            "_dom_classes": [],
2587
            "_model_module": "@jupyter-widgets/controls",
2588
            "_model_module_version": "1.5.0",
2589
            "_model_name": "HBoxModel",
2590
            "_view_count": null,
2591
            "_view_module": "@jupyter-widgets/controls",
2592
            "_view_module_version": "1.5.0",
2593
            "_view_name": "HBoxView",
2594
            "box_style": "",
2595
            "children": [
2596
              "IPY_MODEL_3f87d08da51c42ff8c909b12ca2df863",
2597
              "IPY_MODEL_e7b62de8e4794cd599198ad69e062f2b",
2598
              "IPY_MODEL_0e853c8f845d44fd85b172c8200ec82a"
2599
            ],
2600
            "layout": "IPY_MODEL_743e49cf0f5a464b99ab5e1b96c81543"
2601
          }
2602
        },
2603
        "ba7d87dddcaa4ab1b7b0d832b4b3c451": {
2604
          "model_module": "@jupyter-widgets/controls",
2605
          "model_module_version": "1.5.0",
2606
          "model_name": "DescriptionStyleModel",
2607
          "state": {
2608
            "_model_module": "@jupyter-widgets/controls",
2609
            "_model_module_version": "1.5.0",
2610
            "_model_name": "DescriptionStyleModel",
2611
            "_view_count": null,
2612
            "_view_module": "@jupyter-widgets/base",
2613
            "_view_module_version": "1.2.0",
2614
            "_view_name": "StyleView",
2615
            "description_width": ""
2616
          }
2617
        },
2618
        "c2f02ef98fc649fca32c157c0d048a89": {
2619
          "model_module": "@jupyter-widgets/base",
2620
          "model_module_version": "1.2.0",
2621
          "model_name": "LayoutModel",
2622
          "state": {
2623
            "_model_module": "@jupyter-widgets/base",
2624
            "_model_module_version": "1.2.0",
2625
            "_model_name": "LayoutModel",
2626
            "_view_count": null,
2627
            "_view_module": "@jupyter-widgets/base",
2628
            "_view_module_version": "1.2.0",
2629
            "_view_name": "LayoutView",
2630
            "align_content": null,
2631
            "align_items": null,
2632
            "align_self": null,
2633
            "border": null,
2634
            "bottom": null,
2635
            "display": null,
2636
            "flex": null,
2637
            "flex_flow": null,
2638
            "grid_area": null,
2639
            "grid_auto_columns": null,
2640
            "grid_auto_flow": null,
2641
            "grid_auto_rows": null,
2642
            "grid_column": null,
2643
            "grid_gap": null,
2644
            "grid_row": null,
2645
            "grid_template_areas": null,
2646
            "grid_template_columns": null,
2647
            "grid_template_rows": null,
2648
            "height": null,
2649
            "justify_content": null,
2650
            "justify_items": null,
2651
            "left": null,
2652
            "margin": null,
2653
            "max_height": null,
2654
            "max_width": null,
2655
            "min_height": null,
2656
            "min_width": null,
2657
            "object_fit": null,
2658
            "object_position": null,
2659
            "order": null,
2660
            "overflow": null,
2661
            "overflow_x": null,
2662
            "overflow_y": null,
2663
            "padding": null,
2664
            "right": null,
2665
            "top": null,
2666
            "visibility": null,
2667
            "width": null
2668
          }
2669
        },
2670
        "c6727941f53a42248764a106e13596c9": {
2671
          "model_module": "@jupyter-widgets/controls",
2672
          "model_module_version": "1.5.0",
2673
          "model_name": "HTMLModel",
2674
          "state": {
2675
            "_dom_classes": [],
2676
            "_model_module": "@jupyter-widgets/controls",
2677
            "_model_module_version": "1.5.0",
2678
            "_model_name": "HTMLModel",
2679
            "_view_count": null,
2680
            "_view_module": "@jupyter-widgets/controls",
2681
            "_view_module_version": "1.5.0",
2682
            "_view_name": "HTMLView",
2683
            "description": "",
2684
            "description_tooltip": null,
2685
            "layout": "IPY_MODEL_521596b5e09b4d8fa79410d3601dcc32",
2686
            "placeholder": "​",
2687
            "style": "IPY_MODEL_e2258a4aa3ad44d182d19fa6cb7aa05e",
2688
            "value": " 198/198 [00:00&lt;00:00, 5.39kB/s]"
2689
          }
2690
        },
2691
        "c91b598e790e4c6ba21aeab31c177bf0": {
2692
          "model_module": "@jupyter-widgets/base",
2693
          "model_module_version": "1.2.0",
2694
          "model_name": "LayoutModel",
2695
          "state": {
2696
            "_model_module": "@jupyter-widgets/base",
2697
            "_model_module_version": "1.2.0",
2698
            "_model_name": "LayoutModel",
2699
            "_view_count": null,
2700
            "_view_module": "@jupyter-widgets/base",
2701
            "_view_module_version": "1.2.0",
2702
            "_view_name": "LayoutView",
2703
            "align_content": null,
2704
            "align_items": null,
2705
            "align_self": null,
2706
            "border": null,
2707
            "bottom": null,
2708
            "display": null,
2709
            "flex": null,
2710
            "flex_flow": null,
2711
            "grid_area": null,
2712
            "grid_auto_columns": null,
2713
            "grid_auto_flow": null,
2714
            "grid_auto_rows": null,
2715
            "grid_column": null,
2716
            "grid_gap": null,
2717
            "grid_row": null,
2718
            "grid_template_areas": null,
2719
            "grid_template_columns": null,
2720
            "grid_template_rows": null,
2721
            "height": null,
2722
            "justify_content": null,
2723
            "justify_items": null,
2724
            "left": null,
2725
            "margin": null,
2726
            "max_height": null,
2727
            "max_width": null,
2728
            "min_height": null,
2729
            "min_width": null,
2730
            "object_fit": null,
2731
            "object_position": null,
2732
            "order": null,
2733
            "overflow": null,
2734
            "overflow_x": null,
2735
            "overflow_y": null,
2736
            "padding": null,
2737
            "right": null,
2738
            "top": null,
2739
            "visibility": null,
2740
            "width": null
2741
          }
2742
        },
2743
        "d20681be016d438eb638f1c7108f0d6a": {
2744
          "model_module": "@jupyter-widgets/base",
2745
          "model_module_version": "1.2.0",
2746
          "model_name": "LayoutModel",
2747
          "state": {
2748
            "_model_module": "@jupyter-widgets/base",
2749
            "_model_module_version": "1.2.0",
2750
            "_model_name": "LayoutModel",
2751
            "_view_count": null,
2752
            "_view_module": "@jupyter-widgets/base",
2753
            "_view_module_version": "1.2.0",
2754
            "_view_name": "LayoutView",
2755
            "align_content": null,
2756
            "align_items": null,
2757
            "align_self": null,
2758
            "border": null,
2759
            "bottom": null,
2760
            "display": null,
2761
            "flex": null,
2762
            "flex_flow": null,
2763
            "grid_area": null,
2764
            "grid_auto_columns": null,
2765
            "grid_auto_flow": null,
2766
            "grid_auto_rows": null,
2767
            "grid_column": null,
2768
            "grid_gap": null,
2769
            "grid_row": null,
2770
            "grid_template_areas": null,
2771
            "grid_template_columns": null,
2772
            "grid_template_rows": null,
2773
            "height": null,
2774
            "justify_content": null,
2775
            "justify_items": null,
2776
            "left": null,
2777
            "margin": null,
2778
            "max_height": null,
2779
            "max_width": null,
2780
            "min_height": null,
2781
            "min_width": null,
2782
            "object_fit": null,
2783
            "object_position": null,
2784
            "order": null,
2785
            "overflow": null,
2786
            "overflow_x": null,
2787
            "overflow_y": null,
2788
            "padding": null,
2789
            "right": null,
2790
            "top": null,
2791
            "visibility": null,
2792
            "width": null
2793
          }
2794
        },
2795
        "d2290c10bbff46548e613f5045eb7117": {
2796
          "model_module": "@jupyter-widgets/controls",
2797
          "model_module_version": "1.5.0",
2798
          "model_name": "ProgressStyleModel",
2799
          "state": {
2800
            "_model_module": "@jupyter-widgets/controls",
2801
            "_model_module_version": "1.5.0",
2802
            "_model_name": "ProgressStyleModel",
2803
            "_view_count": null,
2804
            "_view_module": "@jupyter-widgets/base",
2805
            "_view_module_version": "1.2.0",
2806
            "_view_name": "StyleView",
2807
            "bar_color": null,
2808
            "description_width": ""
2809
          }
2810
        },
2811
        "d4cb162e77d844d8a672746573950427": {
2812
          "model_module": "@jupyter-widgets/controls",
2813
          "model_module_version": "1.5.0",
2814
          "model_name": "FloatProgressModel",
2815
          "state": {
2816
            "_dom_classes": [],
2817
            "_model_module": "@jupyter-widgets/controls",
2818
            "_model_module_version": "1.5.0",
2819
            "_model_name": "FloatProgressModel",
2820
            "_view_count": null,
2821
            "_view_module": "@jupyter-widgets/controls",
2822
            "_view_module_version": "1.5.0",
2823
            "_view_name": "ProgressView",
2824
            "bar_style": "success",
2825
            "description": "",
2826
            "description_tooltip": null,
2827
            "layout": "IPY_MODEL_243d9b8fbc0842cfb96b531e9762bb82",
2828
            "max": 112,
2829
            "min": 0,
2830
            "orientation": "horizontal",
2831
            "style": "IPY_MODEL_7b3448ed1e9442fa92acd84ea146ac2d",
2832
            "value": 112
2833
          }
2834
        },
2835
        "d76fe4566fb548188ecd8f0575fccb69": {
2836
          "model_module": "@jupyter-widgets/base",
2837
          "model_module_version": "1.2.0",
2838
          "model_name": "LayoutModel",
2839
          "state": {
2840
            "_model_module": "@jupyter-widgets/base",
2841
            "_model_module_version": "1.2.0",
2842
            "_model_name": "LayoutModel",
2843
            "_view_count": null,
2844
            "_view_module": "@jupyter-widgets/base",
2845
            "_view_module_version": "1.2.0",
2846
            "_view_name": "LayoutView",
2847
            "align_content": null,
2848
            "align_items": null,
2849
            "align_self": null,
2850
            "border": null,
2851
            "bottom": null,
2852
            "display": null,
2853
            "flex": null,
2854
            "flex_flow": null,
2855
            "grid_area": null,
2856
            "grid_auto_columns": null,
2857
            "grid_auto_flow": null,
2858
            "grid_auto_rows": null,
2859
            "grid_column": null,
2860
            "grid_gap": null,
2861
            "grid_row": null,
2862
            "grid_template_areas": null,
2863
            "grid_template_columns": null,
2864
            "grid_template_rows": null,
2865
            "height": null,
2866
            "justify_content": null,
2867
            "justify_items": null,
2868
            "left": null,
2869
            "margin": null,
2870
            "max_height": null,
2871
            "max_width": null,
2872
            "min_height": null,
2873
            "min_width": null,
2874
            "object_fit": null,
2875
            "object_position": null,
2876
            "order": null,
2877
            "overflow": null,
2878
            "overflow_x": null,
2879
            "overflow_y": null,
2880
            "padding": null,
2881
            "right": null,
2882
            "top": null,
2883
            "visibility": null,
2884
            "width": null
2885
          }
2886
        },
2887
        "dbfa65b199f44020be9db0547b7ab18e": {
2888
          "model_module": "@jupyter-widgets/controls",
2889
          "model_module_version": "1.5.0",
2890
          "model_name": "HTMLModel",
2891
          "state": {
2892
            "_dom_classes": [],
2893
            "_model_module": "@jupyter-widgets/controls",
2894
            "_model_module_version": "1.5.0",
2895
            "_model_name": "HTMLModel",
2896
            "_view_count": null,
2897
            "_view_module": "@jupyter-widgets/controls",
2898
            "_view_module_version": "1.5.0",
2899
            "_view_name": "HTMLView",
2900
            "description": "",
2901
            "description_tooltip": null,
2902
            "layout": "IPY_MODEL_76ffde2b8d2a4e1ba6a237bda4f7d856",
2903
            "placeholder": "​",
2904
            "style": "IPY_MODEL_ba7d87dddcaa4ab1b7b0d832b4b3c451",
2905
            "value": "Downloading: 100%"
2906
          }
2907
        },
2908
        "df0df21a4ca647e683889a221065b16f": {
2909
          "model_module": "@jupyter-widgets/controls",
2910
          "model_module_version": "1.5.0",
2911
          "model_name": "ProgressStyleModel",
2912
          "state": {
2913
            "_model_module": "@jupyter-widgets/controls",
2914
            "_model_module_version": "1.5.0",
2915
            "_model_name": "ProgressStyleModel",
2916
            "_view_count": null,
2917
            "_view_module": "@jupyter-widgets/base",
2918
            "_view_module_version": "1.2.0",
2919
            "_view_name": "StyleView",
2920
            "bar_color": null,
2921
            "description_width": ""
2922
          }
2923
        },
2924
        "e2258a4aa3ad44d182d19fa6cb7aa05e": {
2925
          "model_module": "@jupyter-widgets/controls",
2926
          "model_module_version": "1.5.0",
2927
          "model_name": "DescriptionStyleModel",
2928
          "state": {
2929
            "_model_module": "@jupyter-widgets/controls",
2930
            "_model_module_version": "1.5.0",
2931
            "_model_name": "DescriptionStyleModel",
2932
            "_view_count": null,
2933
            "_view_module": "@jupyter-widgets/base",
2934
            "_view_module_version": "1.2.0",
2935
            "_view_name": "StyleView",
2936
            "description_width": ""
2937
          }
2938
        },
2939
        "e6bdda56f1e14d45b1c99940a763e69f": {
2940
          "model_module": "@jupyter-widgets/controls",
2941
          "model_module_version": "1.5.0",
2942
          "model_name": "HBoxModel",
2943
          "state": {
2944
            "_dom_classes": [],
2945
            "_model_module": "@jupyter-widgets/controls",
2946
            "_model_module_version": "1.5.0",
2947
            "_model_name": "HBoxModel",
2948
            "_view_count": null,
2949
            "_view_module": "@jupyter-widgets/controls",
2950
            "_view_module_version": "1.5.0",
2951
            "_view_name": "HBoxView",
2952
            "box_style": "",
2953
            "children": [
2954
              "IPY_MODEL_91742ec5cec441b5a94d3046c777b22c",
2955
              "IPY_MODEL_2634942c850f4597be75b3a91f2d75a7",
2956
              "IPY_MODEL_c6727941f53a42248764a106e13596c9"
2957
            ],
2958
            "layout": "IPY_MODEL_c2f02ef98fc649fca32c157c0d048a89"
2959
          }
2960
        },
2961
        "e7b62de8e4794cd599198ad69e062f2b": {
2962
          "model_module": "@jupyter-widgets/controls",
2963
          "model_module_version": "1.5.0",
2964
          "model_name": "FloatProgressModel",
2965
          "state": {
2966
            "_dom_classes": [],
2967
            "_model_module": "@jupyter-widgets/controls",
2968
            "_model_module_version": "1.5.0",
2969
            "_model_name": "FloatProgressModel",
2970
            "_view_count": null,
2971
            "_view_module": "@jupyter-widgets/controls",
2972
            "_view_module_version": "1.5.0",
2973
            "_view_name": "ProgressView",
2974
            "bar_style": "success",
2975
            "description": "",
2976
            "description_tooltip": null,
2977
            "layout": "IPY_MODEL_862d52c5e86f49f68013d234d1cb80e1",
2978
            "max": 438012727,
2979
            "min": 0,
2980
            "orientation": "horizontal",
2981
            "style": "IPY_MODEL_d2290c10bbff46548e613f5045eb7117",
2982
            "value": 438012727
2983
          }
2984
        },
2985
        "f00d00978f0f4077a4d10eeec352734f": {
2986
          "model_module": "@jupyter-widgets/controls",
2987
          "model_module_version": "1.5.0",
2988
          "model_name": "HTMLModel",
2989
          "state": {
2990
            "_dom_classes": [],
2991
            "_model_module": "@jupyter-widgets/controls",
2992
            "_model_module_version": "1.5.0",
2993
            "_model_name": "HTMLModel",
2994
            "_view_count": null,
2995
            "_view_module": "@jupyter-widgets/controls",
2996
            "_view_module_version": "1.5.0",
2997
            "_view_name": "HTMLView",
2998
            "description": "",
2999
            "description_tooltip": null,
3000
            "layout": "IPY_MODEL_1f6c9e48bf54406da669ee35c3f61d11",
3001
            "placeholder": "​",
3002
            "style": "IPY_MODEL_fb9ddde1db3f47c5b8d7febc0ab691de",
3003
            "value": " 112/112 [00:00&lt;00:00, 4.52kB/s]"
3004
          }
3005
        },
3006
        "fb6b72144db74d8e85489007e0b97396": {
3007
          "model_module": "@jupyter-widgets/base",
3008
          "model_module_version": "1.2.0",
3009
          "model_name": "LayoutModel",
3010
          "state": {
3011
            "_model_module": "@jupyter-widgets/base",
3012
            "_model_module_version": "1.2.0",
3013
            "_model_name": "LayoutModel",
3014
            "_view_count": null,
3015
            "_view_module": "@jupyter-widgets/base",
3016
            "_view_module_version": "1.2.0",
3017
            "_view_name": "LayoutView",
3018
            "align_content": null,
3019
            "align_items": null,
3020
            "align_self": null,
3021
            "border": null,
3022
            "bottom": null,
3023
            "display": null,
3024
            "flex": null,
3025
            "flex_flow": null,
3026
            "grid_area": null,
3027
            "grid_auto_columns": null,
3028
            "grid_auto_flow": null,
3029
            "grid_auto_rows": null,
3030
            "grid_column": null,
3031
            "grid_gap": null,
3032
            "grid_row": null,
3033
            "grid_template_areas": null,
3034
            "grid_template_columns": null,
3035
            "grid_template_rows": null,
3036
            "height": null,
3037
            "justify_content": null,
3038
            "justify_items": null,
3039
            "left": null,
3040
            "margin": null,
3041
            "max_height": null,
3042
            "max_width": null,
3043
            "min_height": null,
3044
            "min_width": null,
3045
            "object_fit": null,
3046
            "object_position": null,
3047
            "order": null,
3048
            "overflow": null,
3049
            "overflow_x": null,
3050
            "overflow_y": null,
3051
            "padding": null,
3052
            "right": null,
3053
            "top": null,
3054
            "visibility": null,
3055
            "width": null
3056
          }
3057
        },
3058
        "fb9ddde1db3f47c5b8d7febc0ab691de": {
3059
          "model_module": "@jupyter-widgets/controls",
3060
          "model_module_version": "1.5.0",
3061
          "model_name": "DescriptionStyleModel",
3062
          "state": {
3063
            "_model_module": "@jupyter-widgets/controls",
3064
            "_model_module_version": "1.5.0",
3065
            "_model_name": "DescriptionStyleModel",
3066
            "_view_count": null,
3067
            "_view_module": "@jupyter-widgets/base",
3068
            "_view_module_version": "1.2.0",
3069
            "_view_name": "StyleView",
3070
            "description_width": ""
3071
          }
3072
        },
3073
        "ff99ea7820634adb98d061ef265f2ff4": {
3074
          "model_module": "@jupyter-widgets/controls",
3075
          "model_module_version": "1.5.0",
3076
          "model_name": "HTMLModel",
3077
          "state": {
3078
            "_dom_classes": [],
3079
            "_model_module": "@jupyter-widgets/controls",
3080
            "_model_module_version": "1.5.0",
3081
            "_model_name": "HTMLModel",
3082
            "_view_count": null,
3083
            "_view_module": "@jupyter-widgets/controls",
3084
            "_view_module_version": "1.5.0",
3085
            "_view_name": "HTMLView",
3086
            "description": "",
3087
            "description_tooltip": null,
3088
            "layout": "IPY_MODEL_58efb1c2ea714ee0a373ecc67d72368f",
3089
            "placeholder": "​",
3090
            "style": "IPY_MODEL_39801cbd09484e439afb2829be9a9d52",
3091
            "value": " 226k/226k [00:00&lt;00:00, 1.73MB/s]"
3092
          }
3093
        }
3094
      }
3095
    }
3096
  },
3097
  "nbformat": 4,
3098
  "nbformat_minor": 5
3099
}