{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "2830a672-16e3-4b55-a9b5-d404399e7991",
"metadata": {
"nbsphinx": "hidden"
},
"outputs": [],
"source": [
"import sys\n",
"import warnings\n",
"sys.path.append(r\"C:\\Users\\alexz\\Documents\\GitHub\\mirp\")\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "markdown",
"id": "1e447b05-08e1-4326-9709-531acf639a69",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Tutorial: Computing radiomics features\n",
"\n",
"This tutorial describes step-by-step how you can compute radiomics features from medical imaging using MIRP.\n",
"\n",
"## Download example data\n",
"\n",
"We have prepared an (anonymised) example dataset of T1-weighted images of patients with soft-tissue sarcoma, that is a subset of the public [Soft-tissue Sarcoma dataset](https://www.cancerimagingarchive.net/collection/soft-tissue-sarcoma/) \\[1\\]. The example dataset is a zip-file containing imaging data for three patients."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "3d8f91a9-e514-47bc-8c9b-5e37fb8662e5",
"metadata": {},
"outputs": [],
"source": [
"from urllib.request import urlopen\n",
"from io import BytesIO\n",
"from zipfile import ZipFile\n",
"\n",
"url = r\"https://github.com/oncoray/mirp/raw/acd0b11521acd07aa9597e8f55d480bc54af4e04/data/tutorial_radiomics_mr_t1_data.zip\"\n",
"\n",
"# Specify location where the data is stored.\n",
"save_dir = \".\"\n",
"\n",
"with urlopen(url) as zip_url_pointer:\n",
" with ZipFile(BytesIO(zip_url_pointer.read())) as example_data:\n",
" example_data.extractall(save_dir)"
]
},
{
"cell_type": "markdown",
"id": "1ac63cb7-a935-4e43-a6ce-0c109d9bc10b",
"metadata": {},
"source": [
"This creates a folder with the following structure:\n",
"\n",
" sts_images\n",
" ├─ STS_001\n",
" │ └─ ...\n",
" ├─ ...\n",
" └─ STS_003\n",
" └─ mr_t1\n",
" ├─ image\n",
" | ├─ 1-01.dcm\n",
" | ├─ ...\n",
" | └─ 1-36.dcm\n",
" └─ mask\n",
" └─ 1-1.dcm\n",
"\n",
"In this example dataset, the T1-weighted images are stored in DICOM format in the `mr_t1/image` subdirectory. A segmentation mask is also stored in DICOM format, but in the `mr_t1/mask` subdirectory.\n",
"\n",
"## Finding mask labels\n",
"\n",
"Radiomics features are typically computed from regions of interest, such as a tumour. These regions are delineated by experts or auto-segmentation AI, and stored as segmentation masks. MIRP needs to know which mask label (region of interest) should be used for computing features. A first step is to identify which mask labels exist. This can be done using the `extract_mask_labels` function. We need to define the main directory (`.../sts_images`), and optionally the directory structure relative to the patient directory (`mr_t1/mask`), where the masks can be found."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "a89c4b13-6fc5-4c72-8f67-2048891b23fa",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
sample_name
\n",
"
modality
\n",
"
dir_path
\n",
"
file_name
\n",
"
study_description
\n",
"
series_description
\n",
"
acquisition_time
\n",
"
series_instance_uid
\n",
"
frame_of_reference_uid
\n",
"
roi_label
\n",
"
mask_index
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
STS_001
\n",
"
rtstruct
\n",
"
sts_images\\STS_001\\mr_t1\\mask
\n",
"
1-1.dcm
\n",
"
^THIGH
\n",
"
RTstruct_T1
\n",
"
2009-10-17 17:16:35.000915
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.169505605471...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.178691248814...
\n",
"
GTV_Mass
\n",
"
0
\n",
"
\n",
"
\n",
"
1
\n",
"
STS_001
\n",
"
rtstruct
\n",
"
sts_images\\STS_001\\mr_t1\\mask
\n",
"
1-1.dcm
\n",
"
^THIGH
\n",
"
RTstruct_T1
\n",
"
2009-10-17 17:16:35.000915
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.169505605471...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.178691248814...
\n",
"
GTV_Edema
\n",
"
0
\n",
"
\n",
"
\n",
"
0
\n",
"
STS_002
\n",
"
rtstruct
\n",
"
sts_images\\STS_002\\mr_t1\\mask
\n",
"
1-1.dcm
\n",
"
L-SPINE
\n",
"
RTstruct_T1
\n",
"
2009-10-18 11:56:49.000312
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.337975716601...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.188414386222...
\n",
"
GTV_Mass
\n",
"
1
\n",
"
\n",
"
\n",
"
1
\n",
"
STS_002
\n",
"
rtstruct
\n",
"
sts_images\\STS_002\\mr_t1\\mask
\n",
"
1-1.dcm
\n",
"
L-SPINE
\n",
"
RTstruct_T1
\n",
"
2009-10-18 11:56:49.000312
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.337975716601...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.188414386222...
\n",
"
GTV_Edema
\n",
"
1
\n",
"
\n",
"
\n",
"
0
\n",
"
STS_003
\n",
"
rtstruct
\n",
"
sts_images\\STS_003\\mr_t1\\mask
\n",
"
1-1.dcm
\n",
"
MRI PELVIS C- C
\n",
"
RTstruct_T1
\n",
"
2009-10-18 12:10:34.000164
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.200331945037...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.179145981196...
\n",
"
GTV_Mass
\n",
"
2
\n",
"
\n",
"
\n",
"
1
\n",
"
STS_003
\n",
"
rtstruct
\n",
"
sts_images\\STS_003\\mr_t1\\mask
\n",
"
1-1.dcm
\n",
"
MRI PELVIS C- C
\n",
"
RTstruct_T1
\n",
"
2009-10-18 12:10:34.000164
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.200331945037...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.179145981196...
\n",
"
GTV_Edema
\n",
"
2
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sample_name modality dir_path file_name \\\n",
"0 STS_001 rtstruct sts_images\\STS_001\\mr_t1\\mask 1-1.dcm \n",
"1 STS_001 rtstruct sts_images\\STS_001\\mr_t1\\mask 1-1.dcm \n",
"0 STS_002 rtstruct sts_images\\STS_002\\mr_t1\\mask 1-1.dcm \n",
"1 STS_002 rtstruct sts_images\\STS_002\\mr_t1\\mask 1-1.dcm \n",
"0 STS_003 rtstruct sts_images\\STS_003\\mr_t1\\mask 1-1.dcm \n",
"1 STS_003 rtstruct sts_images\\STS_003\\mr_t1\\mask 1-1.dcm \n",
"\n",
" study_description series_description acquisition_time \\\n",
"0 ^THIGH RTstruct_T1 2009-10-17 17:16:35.000915 \n",
"1 ^THIGH RTstruct_T1 2009-10-17 17:16:35.000915 \n",
"0 L-SPINE RTstruct_T1 2009-10-18 11:56:49.000312 \n",
"1 L-SPINE RTstruct_T1 2009-10-18 11:56:49.000312 \n",
"0 MRI PELVIS C- C RTstruct_T1 2009-10-18 12:10:34.000164 \n",
"1 MRI PELVIS C- C RTstruct_T1 2009-10-18 12:10:34.000164 \n",
"\n",
" series_instance_uid \\\n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.169505605471... \n",
"1 1.3.6.1.4.1.14519.5.2.1.5168.1900.169505605471... \n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.337975716601... \n",
"1 1.3.6.1.4.1.14519.5.2.1.5168.1900.337975716601... \n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.200331945037... \n",
"1 1.3.6.1.4.1.14519.5.2.1.5168.1900.200331945037... \n",
"\n",
" frame_of_reference_uid roi_label mask_index \n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.178691248814... GTV_Mass 0 \n",
"1 1.3.6.1.4.1.14519.5.2.1.5168.1900.178691248814... GTV_Edema 0 \n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.188414386222... GTV_Mass 1 \n",
"1 1.3.6.1.4.1.14519.5.2.1.5168.1900.188414386222... GTV_Edema 1 \n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.179145981196... GTV_Mass 2 \n",
"1 1.3.6.1.4.1.14519.5.2.1.5168.1900.179145981196... GTV_Edema 2 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import os\n",
"from mirp import extract_mask_labels\n",
"\n",
"extract_mask_labels(\n",
" mask=os.path.join(save_dir, \"sts_images\"),\n",
" mask_sub_folder=os.path.join(\"mr_t1\", \"mask\")\n",
")"
]
},
{
"cell_type": "markdown",
"id": "0db6ba4e-9135-4616-9e2a-a0902559611e",
"metadata": {},
"source": [
"We are lucky that all masks are consistently labelled. `GTV_Mass` and `GTV_Edema` both refer to the gross tumour volume, i.e. that part of the tumour that is visible in medical imaging. `GTV-Edema` also covers fluid surrounding the gross tumour volume itself.\n",
"\n",
"## Visualising images\n",
"\n",
"It is often useful to inspect images before computing radiomics features. External viewers for DICOM and many other image types exist, but MIRP also has a simple visualisation tool. You can visualise images by exporting them in MIRP internal formats using `extract_images`:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f86eb246-2d96-46dc-af29-0d4b0d00286a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO\t: MainProcess \t 2024-06-20 17:08:52,671 \t Initialising image extraction using mr images for STS_003.\n"
]
}
],
"source": [
"from mirp import extract_images\n",
"\n",
"images = extract_images(\n",
" image=os.path.join(save_dir, \"sts_images\", \"STS_003\", \"mr_t1\", \"image\"),\n",
" mask=os.path.join(save_dir, \"sts_images\", \"STS_003\", \"mr_t1\", \"mask\"),\n",
" roi_name=\"GTV_Mass\",\n",
" image_export_format=\"native\"\n",
")"
]
},
{
"cell_type": "markdown",
"id": "9e347f59-bb2d-4883-88b8-49d77f7ec6bd",
"metadata": {},
"source": [
"By default, `extract_images` will export dictionaries containing image and mask data (as `numpy.ndarray`) and associated metadata. That way `extract_images` can be used to read and process images as part of an external workflow. The default output can be visualised using `matplotlib` and other tools. Here we use `image_export_format=\"native\"` to export images and masks in the native MIRP format. The output of `extract_images` is a list of images and masks, with one entry per image dataset. We only assess a single image here, which means that `images` only has one element. The nested list always consists of the image -- and any derivatives, such as filtered images -- and masks associated with the image. We can visualise an exported image using its `show` method as follows:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9736db62-aa7a-4f15-9e8d-3d1dbbfcfce9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAa4AAAGzCAYAAAB3vfPfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAADCNUlEQVR4nO29e7RlVXUmPs+59zzu+9atJwUUoKBQIhghwk2GbY9YkRiSjhE7dgZRTNsxamGLOOiEbqPRToKP7piXYnqkO2Z0t7GDI5iIrxBUjLGCgNBBVFr9oUWEqgKK+36cc8/Zvz8q365vzzvX2mufe+69dequb4wzzjl7r73ea35zzvXYpSRJEomIiIiIiOgRlDc7AxEREREREUUQiSsiIiIioqcQiSsiIiIioqcQiSsiIiIioqcQiSsiIiIioqcQiSsiIiIioqcQiSsiIiIioqcQiSsiIiIioqcQiSsiIiIioqcQiSsiYo143eteJ+eee27mWqlUkt/8zd/clPxERJzuiMQVEXGa4Gtf+5q8+c1vlssuu0wqlYqUSiVv+P/+3/+7XHTRRVKv1+WCCy6QP/zDP9ygnEZErA2RuCIi1gGLi4vyjne8Y0PT/MxnPiN/8id/IqVSSZ71rGd5w/7xH/+x/Lt/9+/kec97nvzhH/6hTE5Oyr//9/9e3ve+921QbiMiOkcpHrIbEbE2vO51r5MvfelL8v3vf39T83H06FEZHR2VgYEBuf766+VDH/qQWMN7cXFRzj77bLnyyivljjvuSK//0i/9knzyk5+Uxx57TLZt27aRWY+IKIRocUVEeDA7Oys33HCDnHvuuVKr1WTXrl3ykz/5k/L1r3/d+5w1x/XDH/5QXv/618vevXulVqvJeeedJ29605uk0WikYaampuSGG26Qs88+W2q1mpx//vnyvve9T9rtdm5ed+/eLQMDA7nhvvjFL8rTTz8tb37zmzPXDx48KPPz8/LpT386N46IiM1E/2ZnICLiVMYb3/hG+cQnPiHXX3+97N+/X55++mn5yle+It/61rfkhS98YXA8jz/+uLzoRS+SqakpecMb3iAXXnih/PCHP5RPfOITsrCwINVqVRYWFuQlL3mJ/PCHP5Rf/dVflX379slXv/pVufnmm+WJJ56Q3/u93+tKmR544AEREbn88ssz1y+77DIpl8vywAMPyC/90i91Ja2IiPVAJK6ICA8+/elPy6/8yq/If/2v/zW99h/+w38oHM/NN98sR44ckXvuuSdDGO95z3tSd97v/u7vyve+9z154IEH5IILLhARkV/91V+VvXv3ygc+8AF5+9vfLmefffYaSyTyxBNPSF9fn+zatStzvVqtyvbt2+Xxxx9fcxoREeuJ6CqMiPBgfHxc7rnnnjUJ83a7LZ/85CflZ3/2Z1dZOSKSrv677bbb5MUvfrFs27ZNnnrqqfRz4MABabVa8uUvf7njPDAWFxelWq2a9+r1uiwuLnYlnYiI9UK0uCIiPHj/+98v1113nZx99tly2WWXyU//9E/La1/72txVe4wnn3xSZmZm5OKLL/aG+853viP/+I//KDt37jTvHzt2rFDeXRgYGMjMqzGWlpaC5skiIjYTkbgiIjz4hV/4BXnxi18st99+u/zN3/yNfOADH5D3ve998pd/+Zfy8pe/vKtptdtt+cmf/EmnK/I5z3lOV9I544wzpNVqybFjxzLuwkajIU8//bTs3bu3K+lERKwXInFFROTgjDPOkDe/+c3y5je/WY4dOyYvfOEL5bd/+7eDiWvnzp0yOjoq3/jGN7zhnv3sZ8vc3JwcOHCgG9l24gUveIGIiNx3333y0z/90+n1++67T9rtdno/IuJURZzjiohwoNVqyfT0dObarl27ZO/evbK8vBwcT7lclle84hXyqU99Su67775V97E44xd+4Rfk0KFD8vnPf35VmKmpKVlZWSlYAhs/8RM/IRMTE3Lrrbdmrt96660yODgoV199dVfSiYhYL0SLKyLCgdnZWTnrrLPkVa96lVx66aUyPDwsf/u3fyv33ntvZpVhCH7nd35H/uZv/kZe8pKXyBve8Aa56KKL5IknnpDbbrtNvvKVr8j4+LjcdNNN8td//dfyMz/zM/K6171OLrvsMpmfn5eHHnpIPvGJT8j3v/992bFjhzONH/zgB/I//+f/FBFJCfK3fuu3RETknHPOkde85jUicmKO6z//5/8sBw8elH/9r/+1XHXVVfJ3f/d38r/+1/+S3/7t35aJiYlOqisiYuOQREREmFheXk5uuumm5NJLL01GRkaSoaGh5NJLL00+/OEPZ8Jdd911yTnnnJO5JiLJu971rsy1H/zgB8lrX/vaZOfOnUmtVkue9axnJQcPHkyWl5fTMLOzs8nNN9+cnH/++Um1Wk127NiR/NiP/VjyX/7Lf0kajYY3v1/84hcTETE/L3nJS1aF/2//7b8lz33uc5NqtZo8+9nPTj74wQ8m7Xa7UB1FRGwG4pFPERERERE9hTjHFRERERHRU4jEFRERERHRU4jEFRERERHRU9g04vrQhz4k5557rtTrdbniiivka1/72mZlJSIiIiKih7ApxPV//s//kRtvvFHe9a53yde//nW59NJL5aqrrurakTYREREREacvNmVV4RVXXCE/+qM/Kn/0R38kIieOujn77LPlLW95i/z6r//6RmcnIiIiIqKHsOEbkBuNhtx///1y8803p9fK5bIcOHBADh06ZD6zvLycOamg3W7L8ePHZfv27enJ2hERERERvYMkSWR2dlb27t0r5XIx59+GE9dTTz0lrVZLdu/enbm+e/du+fa3v20+c8stt8i73/3ujcheRERERMQG4rHHHpOzzjqr0DM9sarw5ptvlunp6fRz+PDhzc5SREREREQXMDIyUviZDbe4duzYIX19fXL06NHM9aNHj8qePXvMZ2q1mtRqtY3IXkRERETEBqKT6Z4Nt7iq1apcdtllctddd6XX2u223HXXXTI5ObnR2YmIiIiI6DFsyunwN954o1x33XVy+eWXy4te9CL5vd/7PZmfn5df/uVf3ozsRERERET0EDaFuF796lfLk08+Ke985zvlyJEj8oIXvEA+97nPrVqwERERERERodGTp8PPzMzI2NjYZmcjIiIiImKNmJ6eltHR0ULP9MSqwoiIiIiICCASV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERETyESV0RERERET6EwcX35y1+Wn/3Zn5W9e/dKqVSST37yk5n7SZLIO9/5TjnjjDNkYGBADhw4IN/5zncyYY4fPy7XXnutjI6Oyvj4uLz+9a+Xubm5NRUkIiIiImJroDBxzc/Py6WXXiof+tCHzPvvf//75Q/+4A/kIx/5iNxzzz0yNDQkV111lSwtLaVhrr32Wnn44YflzjvvlDvuuEO+/OUvyxve8IbOSxERERERsXWQrAEiktx+++3p/3a7nezZsyf5wAc+kF6bmppKarVa8ud//udJkiTJN7/5zUREknvvvTcN89nPfjYplUrJD3/4w6B0p6enExGJn/iJn/iJnx7/TE9PF+aers5xPfroo3LkyBE5cOBAem1sbEyuuOIKOXTokIiIHDp0SMbHx+Xyyy9Pwxw4cEDK5bLcc889ZrzLy8syMzOT+UREREREbE10lbiOHDkiIiK7d+/OXN+9e3d678iRI7Jr167M/f7+fpmYmEjDaNxyyy0yNjaWfs4+++xuZjsiIiIioofQE6sKb775Zpmenk4/jz322GZnKSIiIiJik9Dfzcj27NkjIiJHjx6VM844I71+9OhRecELXpCGOXbsWOa5lZUVOX78ePq8Rq1Wk1qt1s2sRpyCKJVKcmLq9NRFL+Rxo1EqlUREJEmS9DfDdZ2fz6vTWOcRjK5aXOedd57s2bNH7rrrrvTazMyM3HPPPTI5OSkiIpOTkzI1NSX3339/GuYLX/iCtNttueKKK7qZnYgclEol81Mul9OP/h96jz99fX3BYULCWvmwPhtVf53e32h0My9WPbvid/UVfj6v7Vxt7Gr3IuHz+k+RsBEbg8IW19zcnHz3u99N/z/66KPy4IMPysTEhOzbt09uuOEG+a3f+i254IIL5LzzzpPf+I3fkL1798or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5VnPepZce+21cvjwYRERuf/++6XZbMqBAwfSsBdeeKHs27dPDh06JCIihw4dkuc///mye/fuNMxVV10lMzMz8vDDDzvTXF5elpmZmcwnIiIiImJrohBxXXHFFfLRj35UPve5z8mtt94qjz76qLz4xS+W2dlZOXLkiFSrVRkfH888s3v3bjly5IiIiBw5ciRDWriPey7ccsstMjY2ln7OPvvsItmOiIiIiDiNUGiO6+Uvf3n6+5JLLpErrrhCzjnnHPmLv/gLGRgY6HrmgJtvvlluvPHG9P/MzEwkr4iIiIgtijUthx8fH5fnPOc58t3vflf27NkjjUZDpqamMmGOHj0qe/bsERGRPXv2rFpliP8IY6FWq8no6GjmExERERGxNbEm4pqbm5Pvfe97csYZZ8hll10mlUpF7rrrrvT+I488IocPH5bJyUkREZmcnJSHHnpIjh07loa58847ZXR0VPbv37+WrEREREREbBUUWcnx9re/PfnSl76UPProo8nf//3fJwcOHEh27NiRHDt2LEmSJHnjG9+Y7Nu3L/nCF76Q3Hfffcnk5GQyOTmZPr+yspJcfPHFycte9rLkwQcfTD73uc8lO3fuTG6++eZCK0riqsL4iZ/4iZ/T49PJqsJCxPXqV786OeOMM5JqtZqceeaZyatf/erku9/9bnp/cXExefOb35xs27YtGRwcTH7+538+eeKJJzJxfP/7309e/vKXJwMDA8mOHTuSt7/97Umz2SyU6Uhc8RM/8RM/p8enE+IqJUmSSI9hZmZGxsbGNjsbERERERFrxPT0dOF1Cz15VmEPcm1EREREhIFO5HlPEtfTTz+92VmIiIiIiOgCZmdnCz9T+KzCUwETExMicuLA3ugytIG9bo899ljcPmAg1o8fsX78iPXjR0j9JEkis7Ozsnfv3sLx9yRxlcsnDMWxsbHYaXIQ9735EevHj1g/fsT68SOvfjo1PHrSVRgRERERsXURiSsiIiIioqfQk8RVq9XkXe96l9Rqtc3OyimLWEd+xPrxI9aPH7F+/Fjv+unJfVwREREREVsXPWlxRURERERsXUTiioiIiIjoKUTiioiIiIjoKUTiioiIiIjoKUTiioiIiIjoKfQkcX3oQx+Sc889V+r1ulxxxRXyta99bbOztCH48pe/LD/7sz8re/fulVKpJJ/85Ccz95MkkXe+851yxhlnyMDAgBw4cEC+853vZMIcP35crr32WhkdHZXx8XF5/etfL3NzcxtYivXDLbfcIj/6oz8qIyMjsmvXLnnFK14hjzzySCbM0tKSHDx4ULZv3y7Dw8NyzTXXrHor9+HDh+Xqq6+WwcFB2bVrl9x0002ysrKykUVZF9x6661yySWXpKcZTE5Oymc/+9n0/lauGwvvfe97pVQqyQ033JBe28p19Ju/+ZtSKpUynwsvvDC9v6F1U/hFKJuMj3/840m1Wk3+x//4H8nDDz+c/Mqv/EoyPj6eHD16dLOztu74zGc+k/yn//Sfkr/8y79MRCS5/fbbM/ff+973JmNjY8knP/nJ5P/+3/+b/Kt/9a+S8847L1lcXEzD/NRP/VRy6aWXJv/wD/+Q/N3f/V1y/vnnJ7/4i7+4wSVZH1x11VXJn/7pnybf+MY3kgcffDD56Z/+6WTfvn3J3NxcGuaNb3xjcvbZZyd33XVXct999yVXXnll8mM/9mPpfbzs9MCBA8kDDzyQfOYzn0l27NhR+GWnpyL++q//Ovn0pz+d/L//9/+SRx55JPmP//E/JpVKJfnGN76RJMnWrhuNr33ta8m5556bXHLJJclb3/rW9PpWrqN3vetdyfOe97zkiSeeSD9PPvlken8j66bniOtFL3pRcvDgwfR/q9VK9u7dm9xyyy2bmKuNhyaudrud7NmzJ/nABz6QXpuamkpqtVry53/+50mSJMk3v/nNRESSe++9Nw3z2c9+NimVSskPf/jDDcv7RuHYsWOJiCR33313kiQn6qNSqSS33XZbGuZb3/pWIiLJoUOHkiQ5oRyUy+XkyJEjaZhbb701GR0dTZaXlze2ABuAbdu2JX/yJ38S64YwOzubXHDBBcmdd96ZvOQlL0mJa6vX0bve9a7k0ksvNe9tdN30lKuw0WjI/fffLwcOHEivlctlOXDggBw6dGgTc7b5ePTRR+XIkSOZuhkbG5MrrrgirZtDhw7J+Pi4XH755WmYAwcOSLlclnvuuWfD87zemJ6eFpGTbxO4//77pdlsZurowgsvlH379mXq6PnPf77s3r07DXPVVVfJzMyMPPzwwxuY+/VFq9WSj3/84zI/Py+Tk5OxbggHDx6Uq6++OlMXIrH/iIh85zvfkb1798qznvUsufbaa+Xw4cMisvF101Onwz/11FPSarUyBRcR2b17t3z729/epFydGjhy5IiIiFk3uHfkyBHZtWtX5n5/f79MTEykYU4XtNttueGGG+THf/zH5eKLLxaRE+WvVqsyPj6eCavryKpD3Ot1PPTQQzI5OSlLS0syPDwst99+u+zfv18efPDBLV83IiIf//jH5etf/7rce++9q+5t9f5zxRVXyEc/+lF57nOfK0888YS8+93vlhe/+MXyjW98Y8PrpqeIKyIiFAcPHpRvfOMb8pWvfGWzs3JK4bnPfa48+OCDMj09LZ/4xCfkuuuuk7vvvnuzs3VK4LHHHpO3vvWtcuedd0q9Xt/s7JxyePnLX57+vuSSS+SKK66Qc845R/7iL/5CBgYGNjQvPeUq3LFjh/T19a1aqXL06FHZs2fPJuXq1ADK76ubPXv2yLFjxzL3V1ZW5Pjx46dV/V1//fVyxx13yBe/+EU566yz0ut79uyRRqMhU1NTmfC6jqw6xL1eR7ValfPPP18uu+wyueWWW+TSSy+V3//93491IyfcXceOHZMXvvCF0t/fL/39/XL33XfLH/zBH0h/f7/s3r17y9cRY3x8XJ7znOfId7/73Q3vPz1FXNVqVS677DK566670mvtdlvuuusumZyc3MScbT7OO+882bNnT6ZuZmZm5J577knrZnJyUqampuT+++9Pw3zhC1+QdrstV1xxxYbnudtIkkSuv/56uf322+ULX/iCnHfeeZn7l112mVQqlUwdPfLII3L48OFMHT300EMZgr/zzjtldHRU9u/fvzEF2UC0221ZXl6OdSMiL33pS+Whhx6SBx98MP1cfvnlcu2116a/t3odMebm5uR73/uenHHGGRvffwovLdlkfPzjH09qtVry0Y9+NPnmN7+ZvOENb0jGx8czK1VOV8zOziYPPPBA8sADDyQikvzu7/5u8sADDyQ/+MEPkiQ5sRx+fHw8+au/+qvkH//xH5Of+7mfM5fD/8iP/Ehyzz33JF/5yleSCy644LRZDv+mN70pGRsbS770pS9lluwuLCykYd74xjcm+/btS77whS8k9913XzI5OZlMTk6m97Fk92Uve1ny4IMPJp/73OeSnTt3nhbLmX/91389ufvuu5NHH300+cd//Mfk13/915NSqZT8zd/8TZIkW7tuXOBVhUmytevo7W9/e/KlL30pefTRR5O///u/Tw4cOJDs2LEjOXbsWJIkG1s3PUdcSZIkf/iHf5js27cvqVaryYte9KLkH/7hHzY7SxuCL37xi4mIrPpcd911SZKcWBL/G7/xG8nu3buTWq2WvPSlL00eeeSRTBxPP/108ou/+IvJ8PBwMjo6mvzyL/9yMjs7uwml6T6suhGR5E//9E/TMIuLi8mb3/zmZNu2bcng4GDy8z//88kTTzyRief73/9+8vKXvzwZGBhIduzYkbz97W9Pms3mBpem+/i3//bfJuecc05SrVaTnTt3Ji996UtT0kqSrV03Lmji2sp19OpXvzo544wzkmq1mpx55pnJq1/96uS73/1uen8j6ya+jysiIiIioqfQU3NcERERERERkbgiIiIiInoKkbgiIiIiInoKkbgiIiIiInoKkbgiIiIiInoKkbgiIiIiInoKkbgiIiIiInoKkbgiIiIiInoKkbgiIiIiInoKkbgiIiIiInoKkbgiIiIiInoK/z+fL9+YabI5qAAAAABJRU5ErkJggg==",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"image, mask = images[0]\n",
"image[0].show(mask=mask[0], slice_id=10)"
]
},
{
"cell_type": "markdown",
"id": "b47d4077-5b8c-42e4-aaa2-d07a253ea4b2",
"metadata": {},
"source": [
"Though just an image is shown here, executing this code outside of a Jupyter Notebook will start an interactive plotter that can be scrolled through.\n",
"\n",
"The T1-weighted image appears as expected: muscle tissue appears grey, and fatty tissue appears bright. The `GTV_Mass` segmentation mask covers the tumour -- use `image[0].show()` to view the image without a mask.\n",
"\n",
"## Assessing image metadata\n",
"\n",
"Image metadata are important for understanding the image and how it was acquired and reconstructed. MIRP allows for exporting image metadata from DICOM and other image formats, though for non-DICOM formats metadata will be considerably more limited."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "8c8e563e-f493-48e9-8a1f-0e2e3b01ccd2",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
sample_name
\n",
"
modality
\n",
"
dir_path
\n",
"
spacing_z
\n",
"
spacing_y
\n",
"
spacing_x
\n",
"
file_name
\n",
"
study_description
\n",
"
series_description
\n",
"
acquisition_time
\n",
"
series_instance_uid
\n",
"
frame_of_reference_uid
\n",
"
scanner_type
\n",
"
manufacturer
\n",
"
image_type
\n",
"
scanning_sequence
\n",
"
scanning_sequence_variant
\n",
"
image_index
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
STS_001
\n",
"
mr
\n",
"
sts_images\\STS_001\\mr_t1\\image
\n",
"
5.2
\n",
"
0.390625
\n",
"
0.390625
\n",
"
1-40.dcm
\n",
"
^THIGH
\n",
"
AXIAL SE T1 - RESEARCH
\n",
"
2000-09-03 11:10:33.000876
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.236909650266...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.178691248814...
\n",
"
Avanto
\n",
"
SIEMENS
\n",
"
['ORIGINAL', 'PRIMARY', 'M', 'ND', 'NORM']
\n",
"
SE
\n",
"
['SK', 'SP', 'OSP']
\n",
"
0
\n",
"
\n",
"
\n",
"
1
\n",
"
STS_002
\n",
"
mr
\n",
"
sts_images\\STS_002\\mr_t1\\image
\n",
"
7.0
\n",
"
0.892857
\n",
"
0.892857
\n",
"
1-01.dcm
\n",
"
L-SPINE
\n",
"
AXT1
\n",
"
2006-01-03 14:19:40.000530
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.103003228939...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.188414386222...
\n",
"
Intera
\n",
"
Philips Medical Systems
\n",
"
['ORIGINAL', 'PRIMARY', 'M_SE', 'M', 'SE']
\n",
"
SE
\n",
"
OSP
\n",
"
1
\n",
"
\n",
"
\n",
"
2
\n",
"
STS_003
\n",
"
mr
\n",
"
sts_images\\STS_003\\mr_t1\\image
\n",
"
7.0
\n",
"
0.781300
\n",
"
0.781300
\n",
"
1-36.dcm
\n",
"
MRI PELVIS C- C
\n",
"
AX T1
\n",
"
2005-03-30 11:28:05.000000
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.900154069973...
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.179145981196...
\n",
"
Signa HDxt
\n",
"
GE MEDICAL SYSTEMS
\n",
"
['ORIGINAL', 'PRIMARY', 'OTHER']
\n",
"
SE
\n",
"
SK
\n",
"
2
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" sample_name modality dir_path spacing_z spacing_y \\\n",
"0 STS_001 mr sts_images\\STS_001\\mr_t1\\image 5.2 0.390625 \n",
"1 STS_002 mr sts_images\\STS_002\\mr_t1\\image 7.0 0.892857 \n",
"2 STS_003 mr sts_images\\STS_003\\mr_t1\\image 7.0 0.781300 \n",
"\n",
" spacing_x file_name study_description series_description \\\n",
"0 0.390625 1-40.dcm ^THIGH AXIAL SE T1 - RESEARCH \n",
"1 0.892857 1-01.dcm L-SPINE AXT1 \n",
"2 0.781300 1-36.dcm MRI PELVIS C- C AX T1 \n",
"\n",
" acquisition_time \\\n",
"0 2000-09-03 11:10:33.000876 \n",
"1 2006-01-03 14:19:40.000530 \n",
"2 2005-03-30 11:28:05.000000 \n",
"\n",
" series_instance_uid \\\n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.236909650266... \n",
"1 1.3.6.1.4.1.14519.5.2.1.5168.1900.103003228939... \n",
"2 1.3.6.1.4.1.14519.5.2.1.5168.1900.900154069973... \n",
"\n",
" frame_of_reference_uid scanner_type \\\n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.178691248814... Avanto \n",
"1 1.3.6.1.4.1.14519.5.2.1.5168.1900.188414386222... Intera \n",
"2 1.3.6.1.4.1.14519.5.2.1.5168.1900.179145981196... Signa HDxt \n",
"\n",
" manufacturer image_type \\\n",
"0 SIEMENS ['ORIGINAL', 'PRIMARY', 'M', 'ND', 'NORM'] \n",
"1 Philips Medical Systems ['ORIGINAL', 'PRIMARY', 'M_SE', 'M', 'SE'] \n",
"2 GE MEDICAL SYSTEMS ['ORIGINAL', 'PRIMARY', 'OTHER'] \n",
"\n",
" scanning_sequence scanning_sequence_variant image_index \n",
"0 SE ['SK', 'SP', 'OSP'] 0 \n",
"1 SE OSP 1 \n",
"2 SE SK 2 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from mirp import extract_image_parameters\n",
"\n",
"extract_image_parameters(\n",
" image=os.path.join(save_dir, \"sts_images\"),\n",
" image_sub_folder=os.path.join(\"mr_t1\", \"image\")\n",
")"
]
},
{
"cell_type": "markdown",
"id": "37197395-07c1-43d7-99b1-b78d6cfc2839",
"metadata": {},
"source": [
"Only known metadata are shown. For example, magnetic field strength was not present in the image metadata in this example.\n",
"\n",
"The metadata have important implications for the image processing:\n",
"\n",
"- The in-plane resolution is much higher than the distance between slices. This suggests that features should be computed by slice, instead in 3D.\n",
"- The in-plane resolution differs between patients. This suggests that the images should be resampled to isotropic pixel sizes, e.g. 1.0 by 1.0 mm.\n",
"- All three images were recorded in different scanners. This suggests that MR intensities cannot be compared between patients, and should be standardised.\n",
"\n",
"## Computing features\n",
"\n",
"The presented metadata suggest that image processing is required to make the MR images more comparable between patients. We will define three image processing steps:\n",
"\n",
"1. Image processing and feature computation are performed by slice (`by_slice=True`) due to large distances between image slices.\n",
"2. In-plane resolution is resampled to 1.0 by 1.0 mm (`new_spacing=1.0`).\n",
"3. Intensities are normalised, here using *z-normalisation* (`intensity_normalisation=\"standardisation\"`).\n",
"\n",
"In addition, we need to define parameters related to intensity discretisation for computing histogram-based and texture features. Since intensities were normalised using *z-normalisation*, we will use a *fixed bin number* algorithm (`base_discretisation_method=\"fixed_bin_number\"`) with 16 bins (`base_discretisation_n_bins=16`).\n",
"\n",
"Many more parameters can be specified, see [Configure the image processing and feature extraction workflow](https://oncoray.github.io/mirp/configuration.html)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "c211ca72-ad62-491e-86ac-b30ac25ad6b4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO\t: MainProcess \t 2024-06-20 17:08:54,208 \t Initialising feature computation using mr images for STS_001.\n",
"INFO\t: MainProcess \t 2024-06-20 17:09:07,088 \t Initialising feature computation using mr images for STS_002.\n",
"INFO\t: MainProcess \t 2024-06-20 17:09:16,781 \t Initialising feature computation using mr images for STS_003.\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
sample_name
\n",
"
image_file_name
\n",
"
image_directory
\n",
"
image_study_date
\n",
"
image_study_description
\n",
"
image_series_description
\n",
"
image_series_instance_uid
\n",
"
image_modality
\n",
"
image_pet_suv_type
\n",
"
image_mask_label
\n",
"
...
\n",
"
ngl_hdhge_d1_a0.0_2d_fbn_n16
\n",
"
ngl_glnu_d1_a0.0_2d_fbn_n16
\n",
"
ngl_glnu_norm_d1_a0.0_2d_fbn_n16
\n",
"
ngl_dcnu_d1_a0.0_2d_fbn_n16
\n",
"
ngl_dcnu_norm_d1_a0.0_2d_fbn_n16
\n",
"
ngl_dc_perc_d1_a0.0_2d_fbn_n16
\n",
"
ngl_gl_var_d1_a0.0_2d_fbn_n16
\n",
"
ngl_dc_var_d1_a0.0_2d_fbn_n16
\n",
"
ngl_dc_entr_d1_a0.0_2d_fbn_n16
\n",
"
ngl_dc_energy_d1_a0.0_2d_fbn_n16
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
STS_001
\n",
"
None
\n",
"
sts_images\\STS_001\\mr_t1\\image
\n",
"
20000903
\n",
"
^THIGH
\n",
"
AXIAL SE T1 - RESEARCH
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.236909650266...
\n",
"
mr
\n",
"
None
\n",
"
GTV_Mass
\n",
"
...
\n",
"
649.904779
\n",
"
685.643163
\n",
"
0.202679
\n",
"
573.379973
\n",
"
0.164149
\n",
"
1.0
\n",
"
2.124407
\n",
"
2.835808
\n",
"
5.207281
\n",
"
0.034652
\n",
"
\n",
"
\n",
"
0
\n",
"
STS_002
\n",
"
None
\n",
"
sts_images\\STS_002\\mr_t1\\image
\n",
"
20060103
\n",
"
L-SPINE
\n",
"
AXT1
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.103003228939...
\n",
"
mr
\n",
"
None
\n",
"
GTV_Mass
\n",
"
...
\n",
"
731.317187
\n",
"
232.044296
\n",
"
0.208755
\n",
"
212.059230
\n",
"
0.183419
\n",
"
1.0
\n",
"
3.301315
\n",
"
5.169630
\n",
"
5.048137
\n",
"
0.050158
\n",
"
\n",
"
\n",
"
0
\n",
"
STS_003
\n",
"
None
\n",
"
sts_images\\STS_003\\mr_t1\\image
\n",
"
20050330
\n",
"
MRI PELVIS C- C
\n",
"
AX T1
\n",
"
1.3.6.1.4.1.14519.5.2.1.5168.1900.900154069973...
\n",
"
mr
\n",
"
None
\n",
"
GTV_Mass
\n",
"
...
\n",
"
608.689328
\n",
"
472.701740
\n",
"
0.345461
\n",
"
334.257475
\n",
"
0.238191
\n",
"
1.0
\n",
"
3.232402
\n",
"
5.422279
\n",
"
4.222418
\n",
"
0.132661
\n",
"
\n",
" \n",
"
\n",
"
3 rows × 203 columns
\n",
"
"
],
"text/plain": [
" sample_name image_file_name image_directory \\\n",
"0 STS_001 None sts_images\\STS_001\\mr_t1\\image \n",
"0 STS_002 None sts_images\\STS_002\\mr_t1\\image \n",
"0 STS_003 None sts_images\\STS_003\\mr_t1\\image \n",
"\n",
" image_study_date image_study_description image_series_description \\\n",
"0 20000903 ^THIGH AXIAL SE T1 - RESEARCH \n",
"0 20060103 L-SPINE AXT1 \n",
"0 20050330 MRI PELVIS C- C AX T1 \n",
"\n",
" image_series_instance_uid image_modality \\\n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.236909650266... mr \n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.103003228939... mr \n",
"0 1.3.6.1.4.1.14519.5.2.1.5168.1900.900154069973... mr \n",
"\n",
" image_pet_suv_type image_mask_label ... ngl_hdhge_d1_a0.0_2d_fbn_n16 \\\n",
"0 None GTV_Mass ... 649.904779 \n",
"0 None GTV_Mass ... 731.317187 \n",
"0 None GTV_Mass ... 608.689328 \n",
"\n",
" ngl_glnu_d1_a0.0_2d_fbn_n16 ngl_glnu_norm_d1_a0.0_2d_fbn_n16 \\\n",
"0 685.643163 0.202679 \n",
"0 232.044296 0.208755 \n",
"0 472.701740 0.345461 \n",
"\n",
" ngl_dcnu_d1_a0.0_2d_fbn_n16 ngl_dcnu_norm_d1_a0.0_2d_fbn_n16 \\\n",
"0 573.379973 0.164149 \n",
"0 212.059230 0.183419 \n",
"0 334.257475 0.238191 \n",
"\n",
" ngl_dc_perc_d1_a0.0_2d_fbn_n16 ngl_gl_var_d1_a0.0_2d_fbn_n16 \\\n",
"0 1.0 2.124407 \n",
"0 1.0 3.301315 \n",
"0 1.0 3.232402 \n",
"\n",
" ngl_dc_var_d1_a0.0_2d_fbn_n16 ngl_dc_entr_d1_a0.0_2d_fbn_n16 \\\n",
"0 2.835808 5.207281 \n",
"0 5.169630 5.048137 \n",
"0 5.422279 4.222418 \n",
"\n",
" ngl_dc_energy_d1_a0.0_2d_fbn_n16 \n",
"0 0.034652 \n",
"0 0.050158 \n",
"0 0.132661 \n",
"\n",
"[3 rows x 203 columns]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"from mirp import extract_features\n",
"\n",
"features = extract_features(\n",
" image=os.path.join(save_dir, \"sts_images\"),\n",
" image_sub_folder=os.path.join(\"mr_t1\", \"image\"),\n",
" mask=os.path.join(save_dir, \"sts_images\"),\n",
" mask_sub_folder=os.path.join(\"mr_t1\", \"mask\"),\n",
" roi_name=\"GTV_Mass\",\n",
" by_slice=True,\n",
" intensity_normalisation=\"standardisation\",\n",
" new_spacing=1.0,\n",
" base_discretisation_method=\"fixed_bin_number\",\n",
" base_discretisation_n_bins=16\n",
")\n",
"\n",
"pd.concat(features)"
]
},
{
"cell_type": "markdown",
"id": "dbf3b352-31f1-4b75-928f-b25fcde2562a",
"metadata": {},
"source": [
"This results in a `pandas.DataFrame` that has a row per image and mask. The first several columns contain parameters related to that image and mask, and how these were processed. After these, feature values are shown. These can be used for, e.g., machine learning using [scikit-learn](https://scikit-learn.org/stable/) or [familiar](https://cran.r-project.org/web/packages/familiar/index.html)."
]
},
{
"cell_type": "markdown",
"id": "fd5f9316-1fe5-4c0c-ab51-0fe255b39074",
"metadata": {},
"source": [
"## References\n",
"\n",
"1. Vallières, Martin, Freeman, Carolyn R., Skamene, Sonia R., & El Naqa, Issam. (2015). A radiomics model from joint FDG-PET and MRI texture features for the prediction of lung metastases in soft-tissue sarcomas of the extremities (Soft-tissue-Sarcoma) \\[Dataset\\]. The Cancer Imaging Archive. http://doi.org/10.7937/K9/TCIA.2015.7GO2GSKS"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}