diff --git a/code/Mendez_lengths.xlsx b/code/Mendez_lengths.xlsx new file mode 100644 index 0000000..d772de6 Binary files /dev/null and b/code/Mendez_lengths.xlsx differ diff --git a/code/PAM50_Drez_estimation_from_Mendez2021.ipynb b/code/PAM50_Drez_estimation_from_Mendez2021.ipynb new file mode 100644 index 0000000..07646a4 --- /dev/null +++ b/code/PAM50_Drez_estimation_from_Mendez2021.ipynb @@ -0,0 +1,960 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import nibabel as nib" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "python version: 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)]\n", + "numpy version: 1.16.5\n", + "pandas version: 0.25.1\n", + "nibabel version: 3.1.1\n" + ] + } + ], + "source": [ + "# Display system information and library versions\n", + "import sys\n", + "print(f'python version: {sys.version}')\n", + "print(f'numpy version: {np.__version__}')\n", + "print(f'pandas version: {pd.__version__}')\n", + "print(f'nibabel version: {nib.__version__}')\n", + "# Code was run on Windows 11 (MSI GS66 12UE: i7-12700H, 2.7 GHz, 16 GB)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__Function Definitions__" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [], + "source": [ + "def gaussian_distribution(mean, stdev, N=991):\n", + " \"\"\"\n", + " Generates a Gaussian distribution function based on the inputed mean and \n", + " standard deviation of size N. \n", + "\n", + " Inputs\n", + " ------\n", + " mean : float\n", + " Mean of segment (i.e., from Mendez paper)\n", + " \n", + " std : float\n", + " Standard deviation of segment (from Mendez paper)\n", + "\n", + " N : int \n", + " Number of points to make a Gaussian distribution for\n", + " \"\"\"\n", + " X = np.arange(N)\n", + " exp = np.exp((-1/2) * ((X-mean)/stdev)**2)\n", + " denom = 1 / (stdev*np.sqrt(2*np.pi))\n", + " \n", + " return denom*exp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Converting Anatomical Measurements to PAM50 Layers\n", + "Anatomical measurements used to estimate spinal levels are taken from [Mendez et al. (2021) - Segment-Specific Orientation of the Dorsal and Ventral Roots for Precise Therapeutic Targeting of Human Spinal Cord](https://www.sciencedirect.com/science/article/abs/pii/S0025619620310570)\n", + "\n", + "Methodology: \n", + "- Rostral and caudal extent of the spinal cord from the PAM50 was identified by a neurosurgeon to give a top and bottom layer of the template corresponding to C2 and L5. \n", + "- The length of the spinal cord identified in Supplemental Table 2 from the Mendez paper was computed using the \"Segment length at dorsal column entry in cm\".\n", + "- The total length in cm was compared to the length in layers from the PAM50 to obtain a ratio, which was then used to multiply each length for spinal cord segment legnth and DREZ.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Segmentlength_mean_mmlength_stdev_mmdrez_mean_mmdrez_stdev_mm
0C212.60.911.31.5
1C313.30.79.41.9
2C413.92.011.62.2
3C515.02.212.42.0
4C613.61.611.51.0
\n", + "
" + ], + "text/plain": [ + " Segment length_mean_mm length_stdev_mm drez_mean_mm drez_stdev_mm\n", + "0 C2 12.6 0.9 11.3 1.5\n", + "1 C3 13.3 0.7 9.4 1.9\n", + "2 C4 13.9 2.0 11.6 2.2\n", + "3 C5 15.0 2.2 12.4 2.0\n", + "4 C6 13.6 1.6 11.5 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mendez_lengths = pd.read_excel('Mendez_lengths.xlsx')\n", + "display(mendez_lengths.head())\n", + "# TODO add level number correspondance\n", + "# For clarity, I separated the lengths and drez into separate dataframes\n", + "df_length = mendez_lengths[['Segment', 'length_mean_mm', 'length_stdev_mm']].reset_index()\n", + "df_length['Segment_id'] = df_length.index +2\n", + "df_drez = mendez_lengths[['Segment', 'drez_mean_mm', 'drez_stdev_mm']].reset_index()\n", + "df_length['Segment_id'] = df_drez.index +2" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "412.70000000000005 432.0\n", + "2.093530409498425\n" + ] + } + ], + "source": [ + "# Converting from mm to pixel values\n", + "PAM50_top_layer = 22 # as identified by a neurosurgeon (Superior-Inferior direction)\n", + "PAM50_bot_layer = 886 # as identified by a neurosurgeon (Superior-Inferior direction)\n", + "spine_legnth_mendez = mendez_lengths.length_mean_mm.sum()\n", + "spine_length_PAM50 = PAM50_bot_layer - PAM50_top_layer\n", + "print(spine_legnth_mendez, spine_length_PAM50*0.5)\n", + "ratio = spine_length_PAM50 / spine_legnth_mendez\n", + "print(ratio)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 35.189242\n", + "1 62.300460\n", + "2 90.772474\n", + "3 121.023988\n", + "4 150.961473\n", + "5 177.444633\n", + "6 202.776351\n", + "7 229.468864\n", + "8 260.243761\n", + "9 294.263630\n", + "10 334.982796\n", + "11 381.982554\n", + "12 431.075842\n", + "13 482.681367\n", + "14 535.019627\n", + "15 586.729828\n", + "16 638.230676\n", + "17 688.161376\n", + "18 730.869397\n", + "19 768.448268\n", + "20 801.421371\n", + "21 827.799855\n", + "22 852.608190\n", + "23 875.846378\n", + "Name: segment_midpoints_pixel, dtype: float64\n" + ] + } + ], + "source": [ + "# Get the cumulative sum of mean spinal segment lengths (gives the caudal side of each segment) \n", + "df_length['cumulative_length_mm'] = np.cumsum(df_length.length_mean_mm)\n", + "# Get the midpoint of each spinal segment by subtracting 1/2 of the length to the midpoint\n", + "df_length['segment_midpoints_mm'] = df_length.cumulative_length_mm - df_length.length_mean_mm /2\n", + "df_length['segment_midpoints_pixel'] = df_length.segment_midpoints_mm * ratio + PAM50_top_layer \n", + "\n", + "# The midpoints are the same for drez\n", + "df_drez['segment_midpoints_pixel'] = df_length.segment_midpoints_pixel\n", + "\n", + "# Convert the lengths and standard deviations into pixel values\n", + "df_length['length_mean_pixel'] = df_length.length_mean_mm * ratio\n", + "df_length['length_stdev_pixel'] = df_length.length_stdev_mm * ratio\n", + "df_drez['drez_mean_pixel'] = df_drez.drez_mean_mm * ratio\n", + "df_drez['drez_stdev_pixel'] = df_drez.drez_stdev_mm * ratio" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "# Get start and stop layers found by taking the midpoint of each segment and adding the 1/2 length and converting to int\n", + "df_length['layer_start'] = np.int32(df_length.segment_midpoints_pixel) - np.int32(df_length.length_mean_pixel / 2)\n", + "df_length['layer_stop'] = np.int32(df_length.segment_midpoints_pixel) + np.int32(df_length.length_mean_pixel / 2)\n", + "\n", + "df_drez['layer_start'] = np.int32(df_drez.segment_midpoints_pixel) - np.int32(df_drez.drez_mean_pixel / 2)\n", + "df_drez['layer_stop'] = np.int32(df_drez.segment_midpoints_pixel) + np.int32(df_drez.drez_mean_pixel / 2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Creating new NIFTI files" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
indexSegmentlength_mean_mmlength_stdev_mmSegment_idcumulative_length_mmsegment_midpoints_mmsegment_midpoints_pixellength_mean_pixellength_stdev_pixellayer_startlayer_stop
00C212.60.9212.66.3035.18924226.3784831.8841772248
11C313.30.7325.919.2562.30046027.8439541.4654714975
22C413.92.0439.832.8590.77247429.1000734.18706176104
33C515.02.2554.847.30121.02398831.4029564.605767106136
44C613.61.6668.461.60150.96147328.4720143.349649136164
55C711.71.7780.174.25177.44463324.4943063.559002165189
66C812.51.6892.686.35202.77635126.1691303.349649189215
77T113.02.89105.699.10229.46886427.2158955.861885216242
88T216.45.010122.0113.80260.24376134.33389910.467652243277
99T316.13.011138.1130.05294.26363033.7058406.280591278310
1010T422.83.712160.9149.50334.98279647.7324937.746063311357
1111T522.14.913183.0171.95381.98255446.26702210.258299358404
1212T624.84.014207.8195.40431.07584251.9195548.374122406456
1313T724.56.015232.3220.05482.68136751.29149512.561182457507
1414T825.54.516257.8245.05535.01962753.3850259.420887509561
1515T923.94.117281.7269.75586.72982850.0353778.583475561611
1616T1025.34.418307.0294.35638.23067652.9663199.211534612664
1717T1122.45.019329.4318.20688.16137646.89508110.467652665711
1818T1218.42.620347.8338.60730.86939738.5209605.443179711749
1919L117.53.621365.3356.55768.44826836.6367827.536709750786
2020L214.02.622379.3372.30801.42137129.3094265.443179787815
2121L311.22.623390.5384.90827.79985523.4475415.443179816838
2222L412.52.424403.0396.75852.60819026.1691305.024473839865
2323L59.73.825412.7407.85875.84637820.3072457.955416865885
\n", + "
" + ], + "text/plain": [ + " index Segment length_mean_mm length_stdev_mm Segment_id \\\n", + "0 0 C2 12.6 0.9 2 \n", + "1 1 C3 13.3 0.7 3 \n", + "2 2 C4 13.9 2.0 4 \n", + "3 3 C5 15.0 2.2 5 \n", + "4 4 C6 13.6 1.6 6 \n", + "5 5 C7 11.7 1.7 7 \n", + "6 6 C8 12.5 1.6 8 \n", + "7 7 T1 13.0 2.8 9 \n", + "8 8 T2 16.4 5.0 10 \n", + "9 9 T3 16.1 3.0 11 \n", + "10 10 T4 22.8 3.7 12 \n", + "11 11 T5 22.1 4.9 13 \n", + "12 12 T6 24.8 4.0 14 \n", + "13 13 T7 24.5 6.0 15 \n", + "14 14 T8 25.5 4.5 16 \n", + "15 15 T9 23.9 4.1 17 \n", + "16 16 T10 25.3 4.4 18 \n", + "17 17 T11 22.4 5.0 19 \n", + "18 18 T12 18.4 2.6 20 \n", + "19 19 L1 17.5 3.6 21 \n", + "20 20 L2 14.0 2.6 22 \n", + "21 21 L3 11.2 2.6 23 \n", + "22 22 L4 12.5 2.4 24 \n", + "23 23 L5 9.7 3.8 25 \n", + "\n", + " cumulative_length_mm segment_midpoints_mm segment_midpoints_pixel \\\n", + "0 12.6 6.30 35.189242 \n", + "1 25.9 19.25 62.300460 \n", + "2 39.8 32.85 90.772474 \n", + "3 54.8 47.30 121.023988 \n", + "4 68.4 61.60 150.961473 \n", + "5 80.1 74.25 177.444633 \n", + "6 92.6 86.35 202.776351 \n", + "7 105.6 99.10 229.468864 \n", + "8 122.0 113.80 260.243761 \n", + "9 138.1 130.05 294.263630 \n", + "10 160.9 149.50 334.982796 \n", + "11 183.0 171.95 381.982554 \n", + "12 207.8 195.40 431.075842 \n", + "13 232.3 220.05 482.681367 \n", + "14 257.8 245.05 535.019627 \n", + "15 281.7 269.75 586.729828 \n", + "16 307.0 294.35 638.230676 \n", + "17 329.4 318.20 688.161376 \n", + "18 347.8 338.60 730.869397 \n", + "19 365.3 356.55 768.448268 \n", + "20 379.3 372.30 801.421371 \n", + "21 390.5 384.90 827.799855 \n", + "22 403.0 396.75 852.608190 \n", + "23 412.7 407.85 875.846378 \n", + "\n", + " length_mean_pixel length_stdev_pixel layer_start layer_stop \n", + "0 26.378483 1.884177 22 48 \n", + "1 27.843954 1.465471 49 75 \n", + "2 29.100073 4.187061 76 104 \n", + "3 31.402956 4.605767 106 136 \n", + "4 28.472014 3.349649 136 164 \n", + "5 24.494306 3.559002 165 189 \n", + "6 26.169130 3.349649 189 215 \n", + "7 27.215895 5.861885 216 242 \n", + "8 34.333899 10.467652 243 277 \n", + "9 33.705840 6.280591 278 310 \n", + "10 47.732493 7.746063 311 357 \n", + "11 46.267022 10.258299 358 404 \n", + "12 51.919554 8.374122 406 456 \n", + "13 51.291495 12.561182 457 507 \n", + "14 53.385025 9.420887 509 561 \n", + "15 50.035377 8.583475 561 611 \n", + "16 52.966319 9.211534 612 664 \n", + "17 46.895081 10.467652 665 711 \n", + "18 38.520960 5.443179 711 749 \n", + "19 36.636782 7.536709 750 786 \n", + "20 29.309426 5.443179 787 815 \n", + "21 23.447541 5.443179 816 838 \n", + "22 26.169130 5.024473 839 865 \n", + "23 20.307245 7.955416 865 885 " + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_length" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([954, 927, 899, 868, 839, 812, 787, 760, 729, 695, 655, 608, 558,\n", + " 507, 454, 403, 351, 301, 259, 221, 188, 162, 137, 114])" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "array([945, 927, 891, 857, 826, 794, 757, 713, 668, 622, 572, 522, 471,\n", + " 417, 365, 310, 251, 194, 169], dtype=int64)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "p50_nib_spinal_levels = nib.load('c:/Users/sb199/spinalcordtoolbox/data/PAM50/template/PAM50_label_spinal_levels.nii.gz')\n", + "spinal_z = np.where(p50_nib_spinal_levels.get_fdata()>0)[2]\n", + "spinal_z.sort()\n", + "display(np.array((990 - df_length['segment_midpoints_pixel']).to_list()).astype(int), np.flip(spinal_z))" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "# load the PAM50 mask\n", + "p50_nib = nib.load('c:/Users/sb199/spinalcordtoolbox/data/PAM50/template/PAM50_cord.nii.gz')\n", + "p50_mask = p50_nib.get_fdata()" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [], + "source": [ + "# Spinal segment estimates\n", + "N = 991\n", + "\n", + "for x, row in df_length.iterrows():\n", + " # Copy mask and flip\n", + " p50 = np.flip(np.copy(p50_mask))\n", + "\n", + " pdf_top = gaussian_distribution(row.layer_start, row.length_stdev_pixel)\n", + " pdf_bot = gaussian_distribution(row.layer_stop, row.length_stdev_pixel)\n", + "\n", + " # Indices of probability density function > 1E-6\n", + " ind_top = np.where(pdf_top > 1E-6)[0]\n", + " ind_top = ind_top[ind_top < row.layer_start] # Only above estimated layer\n", + " ind_bot = np.where(pdf_bot > 1E-6)[0]\n", + " ind_bot = ind_bot[ind_bot > row.layer_stop] # Only below estiamted layer\n", + "\n", + " # Create a merged pdf with p=1 at estimated spinal cord levels\n", + " pdf = np.zeros_like(pdf_top)\n", + " pdf[row.layer_start:row.layer_stop+1] = np.max([pdf_top, pdf_bot])\n", + " pdf[ind_top] = pdf_top[ind_top]\n", + " pdf[ind_bot] = pdf_bot[ind_bot]\n", + "\n", + " # Set pdf < 1E-6 to 0\n", + " ind = np.where(pdf > 1E-6)[0]\n", + " zero_indices = np.arange(N)[~np.isin(np.arange(N), ind)]\n", + " p50[:,:, zero_indices] = 0\n", + "\n", + " for i in ind:\n", + " p50[:, :, i][p50[:, :, i]>0] = pdf[i]\n", + "\n", + " # Put back into the original orientation\n", + " p50 = np.flip(p50)\n", + "\n", + " # Save as nifti\n", + " if row.Segment_id < 10:\n", + " row.Segment_id = '0'+ str(row.Segment_id)\n", + " p50_img = nib.Nifti1Image(p50, header=p50_nib.header, affine=p50_nib.affine)\n", + " nib.save(p50_img, f'Outputs/spinal_level_{row.Segment_id}.nii.gz') # TO CHANGE path output\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'Outputs/DREZ/Statistical_anatomical_C2.nii.gz'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 33\u001b[0m \u001b[1;31m# Save as nifti\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 34\u001b[0m \u001b[0mp50_img\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mNifti1Image\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mp50\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0maffine\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0meye\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 35\u001b[1;33m \u001b[0mnib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msave\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mp50_img\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34mf'Outputs/DREZ/Statistical_anatomical_{row.Segment}.nii.gz'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 36\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\Users\\sb199\\Anaconda3\\lib\\site-packages\\nibabel\\loadsave.py\u001b[0m in \u001b[0;36msave\u001b[1;34m(img, filename)\u001b[0m\n\u001b[0;32m 101\u001b[0m \u001b[1;31m# Save the type as expected\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 102\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 103\u001b[1;33m \u001b[0mimg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_filename\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 104\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mImageFileError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 105\u001b[0m \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\Users\\sb199\\Anaconda3\\lib\\site-packages\\nibabel\\filebasedimages.py\u001b[0m in \u001b[0;36mto_filename\u001b[1;34m(self, filename)\u001b[0m\n\u001b[0;32m 332\u001b[0m '''\n\u001b[0;32m 333\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfile_map\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfilespec_to_file_map\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 334\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_file_map\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 335\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 336\u001b[0m @deprecate_with_version('to_filespec method is deprecated.\\n'\n", + "\u001b[1;32mc:\\Users\\sb199\\Anaconda3\\lib\\site-packages\\nibabel\\analyze.py\u001b[0m in \u001b[0;36mto_file_map\u001b[1;34m(self, file_map)\u001b[0m\n\u001b[0;32m 1031\u001b[0m \u001b[1;31m# file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1032\u001b[0m \u001b[0mhdr_img_same\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhdr_fh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msame_file_as\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mimg_fh\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1033\u001b[1;33m \u001b[0mhdrf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhdr_fh\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_prepare_fileobj\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmode\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'wb'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1034\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mhdr_img_same\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1035\u001b[0m \u001b[0mimgf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mhdrf\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\Users\\sb199\\Anaconda3\\lib\\site-packages\\nibabel\\fileholders.py\u001b[0m in \u001b[0;36mget_prepare_fileobj\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 68\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mseek\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpos\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfilename\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 70\u001b[1;33m \u001b[0mobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mImageOpener\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 71\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpos\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 72\u001b[0m \u001b[0mobj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mseek\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpos\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\Users\\sb199\\Anaconda3\\lib\\site-packages\\nibabel\\openers.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, fileish, *args, **kwargs)\u001b[0m\n\u001b[0;32m 112\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 113\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'keep_open'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 114\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopener\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfileish\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 115\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_name\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfileish\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 116\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mme_opened\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\Users\\sb199\\Anaconda3\\lib\\site-packages\\nibabel\\openers.py\u001b[0m in \u001b[0;36m_gzip_open\u001b[1;34m(filename, mode, compresslevel, keep_open)\u001b[0m\n\u001b[0;32m 52\u001b[0m \u001b[1;31m# Fall-back to built-in GzipFile\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 53\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 54\u001b[1;33m \u001b[0mgzip_file\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgzip\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mGzipFile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcompresslevel\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 55\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 56\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mgzip_file\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mc:\\Users\\sb199\\Anaconda3\\lib\\gzip.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, filename, mode, compresslevel, fileobj, mtime)\u001b[0m\n\u001b[0;32m 161\u001b[0m \u001b[0mmode\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;34m'b'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 162\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfileobj\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 163\u001b[1;33m \u001b[0mfileobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmyfileobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mbuiltins\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmode\u001b[0m \u001b[1;32mor\u001b[0m \u001b[1;34m'rb'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 164\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfilename\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 165\u001b[0m \u001b[0mfilename\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfileobj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'name'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m''\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'Outputs/DREZ/Statistical_anatomical_C2.nii.gz'" + ] + } + ], + "source": [ + "# DREZ estimates\n", + "\n", + "for x, row in df_drez.iterrows():\n", + " # Copy mask and flip\n", + " p50 = np.flip(np.copy(p50_mask))\n", + "\n", + " pdf_top = gaussian_distribution(row.layer_start, row.drez_stdev_pixel)\n", + " pdf_bot = gaussian_distribution(row.layer_stop, row.drez_stdev_pixel)\n", + "\n", + " # Indices of probability density function > 1E-6\n", + " ind_top = np.where(pdf_top > 1E-6)[0]\n", + " int_top = ind_top[ind_top < row.layer_start] # Only above estimated layer\n", + " ind_bot = np.where(pdf_bot > 1E-6)[0]\n", + " ind_bot = ind_bot[ind_bot > row.layer_stop] # Only below estiamted layer\n", + "\n", + " # Create a merged pdf with p=1 at estimated spinal cord levels\n", + " pdf = np.zeros_like(pdf_top)\n", + " pdf[row.layer_start:row.layer_stop+1] = np.max([pdf_top, pdf_bot])\n", + " pdf[ind_top] = pdf_top[ind_top]\n", + " pdf[ind_bot] = pdf_bot[ind_bot]\n", + "\n", + " # Set pdf < 1E-6 to 0\n", + " ind = np.where(pdf > 1E-6)[0]\n", + " zero_indices = np.arange(N)[~np.isin(np.arange(N), ind)]\n", + " p50[:,:, zero_indices] = 0\n", + "\n", + " for i in ind:\n", + " p50[:, :, i][p50[:, :, i]>0] = pdf[i]\n", + "\n", + " # Put back into the original orientation\n", + " p50 = np.flip(p50)\n", + "\n", + " # Save as nifti\n", + " p50_img = nib.Nifti1Image(p50, affine=np.eye(4))\n", + " nib.save(p50_img, f'Outputs/DREZ/Statistical_anatomical_{row.Segment}.nii.gz')\n", + "\n" + ] + } + ], + "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.8.15" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/code/Supp_values.xlsx b/code/Supp_values.xlsx new file mode 100644 index 0000000..e59a0f7 Binary files /dev/null and b/code/Supp_values.xlsx differ diff --git a/code/data_process.ipynb b/code/data_process.ipynb new file mode 100644 index 0000000..9f217b1 --- /dev/null +++ b/code/data_process.ipynb @@ -0,0 +1,811 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "c3dd55f5-608b-4e3b-8bdc-04367f296f4d", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "levels = ['C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'C8', \n", + " 'T1', 'T2', 'T3', 'T4','T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12', \n", + " 'L1', 'L2','L3', 'L4', 'L5']" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "cd32092c-d171-4f75-a601-76e8d646df0c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SegmentDREZ length bone entry (cm)Segment length at dorsal column entry (cm)Segment lenght at bone entry (cm)Inferior articular facet to caudal rootlet distance (cm)Intervertebral foramen to rostral rootlet distance (cm)Intervertebral foramen to caudal rootlet distance (cm)Width across columns (mm)
MEANSTDMEANSTDMEANSTDMEANSTDMEANSTDMEANSTDMEANSTD
C21.130.151.260.091.310.102.440.081.550.421.060.077.880.30
C30.940.191.330.071.320.092.500.171.630.251.080.277.181.11
C41.160.221.390.201.460.252.600.141.810.211.010.207.110.99
C51.240.201.500.221.430.112.380.451.510.290.930.197.110.90
C61.150.101.360.161.470.132.480.391.720.121.030.106.980.49
\n", + "
" + ], + "text/plain": [ + "Segment DREZ length bone entry (cm) \\\n", + " MEAN STD \n", + "C2 1.13 0.15 \n", + "C3 0.94 0.19 \n", + "C4 1.16 0.22 \n", + "C5 1.24 0.20 \n", + "C6 1.15 0.10 \n", + "\n", + "Segment Segment length at dorsal column entry (cm) \\\n", + " MEAN STD \n", + "C2 1.26 0.09 \n", + "C3 1.33 0.07 \n", + "C4 1.39 0.20 \n", + "C5 1.50 0.22 \n", + "C6 1.36 0.16 \n", + "\n", + "Segment Segment lenght at bone entry (cm) \\\n", + " MEAN STD \n", + "C2 1.31 0.10 \n", + "C3 1.32 0.09 \n", + "C4 1.46 0.25 \n", + "C5 1.43 0.11 \n", + "C6 1.47 0.13 \n", + "\n", + "Segment Inferior articular facet to caudal rootlet distance (cm) \\\n", + " MEAN STD \n", + "C2 2.44 0.08 \n", + "C3 2.50 0.17 \n", + "C4 2.60 0.14 \n", + "C5 2.38 0.45 \n", + "C6 2.48 0.39 \n", + "\n", + "Segment Intervertebral foramen to rostral rootlet distance (cm) \\\n", + " MEAN STD \n", + "C2 1.55 0.42 \n", + "C3 1.63 0.25 \n", + "C4 1.81 0.21 \n", + "C5 1.51 0.29 \n", + "C6 1.72 0.12 \n", + "\n", + "Segment Intervertebral foramen to caudal rootlet distance (cm) \\\n", + " MEAN STD \n", + "C2 1.06 0.07 \n", + "C3 1.08 0.27 \n", + "C4 1.01 0.20 \n", + "C5 0.93 0.19 \n", + "C6 1.03 0.10 \n", + "\n", + "Segment Width across columns (mm) \n", + " MEAN STD \n", + "C2 7.88 0.30 \n", + "C3 7.18 1.11 \n", + "C4 7.11 0.99 \n", + "C5 7.11 0.90 \n", + "C6 6.98 0.49 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_raw = pd.read_excel(\"Supp_values.xlsx\", header=[0,1], index_col = 0, skipfooter=1, sheet_name=\"lenght\")\n", + "df_raw.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "2ae5c9a7-01f9-482b-897b-ab8f580fce33", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SegmentDREZ length bone entry (mm)Segment length at dorsal column entry (mm)Segment lenght at bone entry (mm)Inferior articular facet to caudal rootlet distance (mm)Intervertebral foramen to rostral rootlet distance (mm)Intervertebral foramen to caudal rootlet distance (mm)Width across columns (mm)
MEANSTDMEANSTDMEANSTDMEANSTDMEANSTDMEANSTDMEANSTD
C211.31.512.60.913.11.024.40.815.54.210.60.77.880.30
C39.41.913.30.713.20.925.01.716.32.510.82.77.181.11
C411.62.213.92.014.62.526.01.418.12.110.12.07.110.99
C512.42.015.02.214.31.123.84.515.12.99.31.97.110.90
C611.51.013.61.614.71.324.83.917.21.210.31.06.980.49
\n", + "
" + ], + "text/plain": [ + "Segment DREZ length bone entry (mm) \\\n", + " MEAN STD \n", + "C2 11.3 1.5 \n", + "C3 9.4 1.9 \n", + "C4 11.6 2.2 \n", + "C5 12.4 2.0 \n", + "C6 11.5 1.0 \n", + "\n", + "Segment Segment length at dorsal column entry (mm) \\\n", + " MEAN STD \n", + "C2 12.6 0.9 \n", + "C3 13.3 0.7 \n", + "C4 13.9 2.0 \n", + "C5 15.0 2.2 \n", + "C6 13.6 1.6 \n", + "\n", + "Segment Segment lenght at bone entry (mm) \\\n", + " MEAN STD \n", + "C2 13.1 1.0 \n", + "C3 13.2 0.9 \n", + "C4 14.6 2.5 \n", + "C5 14.3 1.1 \n", + "C6 14.7 1.3 \n", + "\n", + "Segment Inferior articular facet to caudal rootlet distance (mm) \\\n", + " MEAN STD \n", + "C2 24.4 0.8 \n", + "C3 25.0 1.7 \n", + "C4 26.0 1.4 \n", + "C5 23.8 4.5 \n", + "C6 24.8 3.9 \n", + "\n", + "Segment Intervertebral foramen to rostral rootlet distance (mm) \\\n", + " MEAN STD \n", + "C2 15.5 4.2 \n", + "C3 16.3 2.5 \n", + "C4 18.1 2.1 \n", + "C5 15.1 2.9 \n", + "C6 17.2 1.2 \n", + "\n", + "Segment Intervertebral foramen to caudal rootlet distance (mm) \\\n", + " MEAN STD \n", + "C2 10.6 0.7 \n", + "C3 10.8 2.7 \n", + "C4 10.1 2.0 \n", + "C5 9.3 1.9 \n", + "C6 10.3 1.0 \n", + "\n", + "Segment Width across columns (mm) \n", + " MEAN STD \n", + "C2 7.88 0.30 \n", + "C3 7.18 1.11 \n", + "C4 7.11 0.99 \n", + "C5 7.11 0.90 \n", + "C6 6.98 0.49 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_mm = df_raw.copy()*10\n", + "df_mm[\"Width across columns (mm)\"] = df_raw[\"Width across columns (mm)\"]\n", + "df_mm.columns = df_mm.columns.set_levels(df_mm.columns.levels[0].str.replace(\"cm\",\"mm\"), level=0)\n", + "df_mm.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3038ec20-3759-49be-9627-8a855e8cb09d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DREZ length bone entry (mm)_MEANDREZ length bone entry (mm)_STDSegment length at dorsal column entry (mm)_MEANSegment length at dorsal column entry (mm)_STDSegment lenght at bone entry (mm)_MEANSegment lenght at bone entry (mm)_STDInferior articular facet to caudal rootlet distance (mm)_MEANInferior articular facet to caudal rootlet distance (mm)_STDIntervertebral foramen to rostral rootlet distance (mm)_MEANIntervertebral foramen to rostral rootlet distance (mm)_STDIntervertebral foramen to caudal rootlet distance (mm)_MEANIntervertebral foramen to caudal rootlet distance (mm)_STDWidth across columns (mm)_MEANWidth across columns (mm)_STD
C211.31.512.60.913.11.024.40.815.54.210.60.77.880.30
C39.41.913.30.713.20.925.01.716.32.510.82.77.181.11
C411.62.213.92.014.62.526.01.418.12.110.12.07.110.99
C512.42.015.02.214.31.123.84.515.12.99.31.97.110.90
C611.51.013.61.614.71.324.83.917.21.210.31.06.980.49
\n", + "
" + ], + "text/plain": [ + " DREZ length bone entry (mm)_MEAN DREZ length bone entry (mm)_STD \\\n", + "C2 11.3 1.5 \n", + "C3 9.4 1.9 \n", + "C4 11.6 2.2 \n", + "C5 12.4 2.0 \n", + "C6 11.5 1.0 \n", + "\n", + " Segment length at dorsal column entry (mm)_MEAN \\\n", + "C2 12.6 \n", + "C3 13.3 \n", + "C4 13.9 \n", + "C5 15.0 \n", + "C6 13.6 \n", + "\n", + " Segment length at dorsal column entry (mm)_STD \\\n", + "C2 0.9 \n", + "C3 0.7 \n", + "C4 2.0 \n", + "C5 2.2 \n", + "C6 1.6 \n", + "\n", + " Segment lenght at bone entry (mm)_MEAN \\\n", + "C2 13.1 \n", + "C3 13.2 \n", + "C4 14.6 \n", + "C5 14.3 \n", + "C6 14.7 \n", + "\n", + " Segment lenght at bone entry (mm)_STD \\\n", + "C2 1.0 \n", + "C3 0.9 \n", + "C4 2.5 \n", + "C5 1.1 \n", + "C6 1.3 \n", + "\n", + " Inferior articular facet to caudal rootlet distance (mm)_MEAN \\\n", + "C2 24.4 \n", + "C3 25.0 \n", + "C4 26.0 \n", + "C5 23.8 \n", + "C6 24.8 \n", + "\n", + " Inferior articular facet to caudal rootlet distance (mm)_STD \\\n", + "C2 0.8 \n", + "C3 1.7 \n", + "C4 1.4 \n", + "C5 4.5 \n", + "C6 3.9 \n", + "\n", + " Intervertebral foramen to rostral rootlet distance (mm)_MEAN \\\n", + "C2 15.5 \n", + "C3 16.3 \n", + "C4 18.1 \n", + "C5 15.1 \n", + "C6 17.2 \n", + "\n", + " Intervertebral foramen to rostral rootlet distance (mm)_STD \\\n", + "C2 4.2 \n", + "C3 2.5 \n", + "C4 2.1 \n", + "C5 2.9 \n", + "C6 1.2 \n", + "\n", + " Intervertebral foramen to caudal rootlet distance (mm)_MEAN \\\n", + "C2 10.6 \n", + "C3 10.8 \n", + "C4 10.1 \n", + "C5 9.3 \n", + "C6 10.3 \n", + "\n", + " Intervertebral foramen to caudal rootlet distance (mm)_STD \\\n", + "C2 0.7 \n", + "C3 2.7 \n", + "C4 2.0 \n", + "C5 1.9 \n", + "C6 1.0 \n", + "\n", + " Width across columns (mm)_MEAN Width across columns (mm)_STD \n", + "C2 7.88 0.30 \n", + "C3 7.18 1.11 \n", + "C4 7.11 0.99 \n", + "C5 7.11 0.90 \n", + "C6 6.98 0.49 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_mm_spl = df_mm.copy()\n", + "df_mm_spl.columns = ['_'.join(col) for col in df_mm_spl.columns.values]\n", + "df_mm_spl.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a5311bc6-2264-4aec-a741-ee7ee26f089f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SegmentMEANSTDMesure
0C211.31.5DREZ length
1C212.60.9Seg.L at dorsal CE
2C213.11.0Seg.L at BE
3C224.40.8Inf.Art facet to CR distance
4C215.54.2IF to RR distance
\n", + "
" + ], + "text/plain": [ + " Segment MEAN STD Mesure\n", + "0 C2 11.3 1.5 DREZ length\n", + "1 C2 12.6 0.9 Seg.L at dorsal CE\n", + "2 C2 13.1 1.0 Seg.L at BE\n", + "3 C2 24.4 0.8 Inf.Art facet to CR distance\n", + "4 C2 15.5 4.2 IF to RR distance" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mesure_name = [\"DREZ length\",\"Seg.L at dorsal CE\",\"Seg.L at BE\",\"Inf.Art facet to CR distance\",\"IF to RR distance\",\"IF to CR distance\", \"Dorsal width\"]\n", + "new_df = {\"Segment\":[], \"MEAN\":[], \"STD\":[], \"Mesure\":[]}\n", + "for idx in df_mm_spl.index:\n", + " line = df_mm_spl.loc[idx]\n", + " new_df[\"MEAN\"].extend(line.values[::2])\n", + " new_df[\"STD\"].extend(line.values[1::2])\n", + " new_df[\"Mesure\"].extend(mesure_name)\n", + " new_df[\"Segment\"].extend([idx]*len(mesure_name))\n", + "df_concat = pd.DataFrame(new_df)\n", + "df_concat.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "559a6378-f653-4575-910a-c1fafd427550", + "metadata": {}, + "outputs": [], + "source": [ + "df_concat.to_csv(\"mendez_df.csv\", index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc52f5eb-dfcf-485c-867d-cea137d016ed", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/code/label_center_roots_cervical.nii.gz b/code/label_center_roots_cervical.nii.gz new file mode 100644 index 0000000..9119afa Binary files /dev/null and b/code/label_center_roots_cervical.nii.gz differ diff --git a/code/mendez_df.csv b/code/mendez_df.csv new file mode 100644 index 0000000..0b429e3 --- /dev/null +++ b/code/mendez_df.csv @@ -0,0 +1,169 @@ +Segment,MEAN,STD,Mesure +C2,11.299999999999999,1.5,DREZ length +C2,12.6,0.8999999999999999,Seg.L at dorsal CE +C2,13.100000000000001,1.0,Seg.L at BE +C2,24.4,0.8,Inf.Art facet to CR distance +C2,15.5,4.2,IF to RR distance +C2,10.600000000000001,0.7000000000000001,IF to CR distance +C2,7.88,0.3,Dorsal width +C3,9.399999999999999,1.9,DREZ length +C3,13.3,0.7000000000000001,Seg.L at dorsal CE +C3,13.200000000000001,0.8999999999999999,Seg.L at BE +C3,25.0,1.7000000000000002,Inf.Art facet to CR distance +C3,16.299999999999997,2.5,IF to RR distance +C3,10.8,2.7,IF to CR distance +C3,7.18,1.11,Dorsal width +C4,11.6,2.2,DREZ length +C4,13.899999999999999,2.0,Seg.L at dorsal CE +C4,14.6,2.5,Seg.L at BE +C4,26.0,1.4000000000000001,Inf.Art facet to CR distance +C4,18.1,2.1,IF to RR distance +C4,10.1,2.0,IF to CR distance +C4,7.11,0.99,Dorsal width +C5,12.4,2.0,DREZ length +C5,15.0,2.2,Seg.L at dorsal CE +C5,14.299999999999999,1.1,Seg.L at BE +C5,23.799999999999997,4.5,Inf.Art facet to CR distance +C5,15.1,2.9,IF to RR distance +C5,9.3,1.9,IF to CR distance +C5,7.11,0.9,Dorsal width +C6,11.5,1.0,DREZ length +C6,13.600000000000001,1.6,Seg.L at dorsal CE +C6,14.7,1.3,Seg.L at BE +C6,24.8,3.9000000000000004,Inf.Art facet to CR distance +C6,17.2,1.2,IF to RR distance +C6,10.3,1.0,IF to CR distance +C6,6.98,0.49,Dorsal width +C7,11.399999999999999,2.3000000000000003,DREZ length +C7,11.7,1.7000000000000002,Seg.L at dorsal CE +C7,14.6,1.5,Seg.L at BE +C7,26.0,2.3000000000000003,Inf.Art facet to CR distance +C7,20.099999999999998,0.8,IF to RR distance +C7,11.799999999999999,0.8999999999999999,IF to CR distance +C7,6.52,0.68,Dorsal width +C8,11.799999999999999,2.8000000000000003,DREZ length +C8,12.5,1.6,Seg.L at dorsal CE +C8,15.5,2.1,Seg.L at BE +C8,19.4,2.7,Inf.Art facet to CR distance +C8,22.7,2.2,IF to RR distance +C8,15.0,2.5,IF to CR distance +C8,5.97,0.91,Dorsal width +T1,12.0,2.2,DREZ length +T1,13.0,2.8000000000000003,Seg.L at dorsal CE +T1,17.3,1.6,Seg.L at BE +T1,22.5,4.4,Inf.Art facet to CR distance +T1,28.1,3.9000000000000004,IF to RR distance +T1,17.0,2.9,IF to CR distance +T1,5.4,1.0,Dorsal width +T2,13.100000000000001,3.1,DREZ length +T2,16.4,5.0,Seg.L at dorsal CE +T2,19.8,4.699999999999999,Seg.L at BE +T2,26.099999999999998,6.2,Inf.Art facet to CR distance +T2,33.4,5.6000000000000005,IF to RR distance +T2,22.0,3.8,IF to CR distance +T2,4.87,0.63,Dorsal width +T3,15.3,2.6,DREZ length +T3,16.1,3.0,Seg.L at dorsal CE +T3,18.1,2.5,Seg.L at BE +T3,30.299999999999997,5.8999999999999995,Inf.Art facet to CR distance +T3,40.5,6.3,IF to RR distance +T3,23.4,5.0,IF to CR distance +T3,4.83,0.64,Dorsal width +T4,18.400000000000002,4.0,DREZ length +T4,22.799999999999997,3.7,Seg.L at dorsal CE +T4,21.8,1.9,Seg.L at BE +T4,28.799999999999997,5.8999999999999995,Inf.Art facet to CR distance +T4,42.0,4.9,IF to RR distance +T4,26.299999999999997,6.3,IF to CR distance +T4,4.7,0.83,Dorsal width +T5,19.6,4.2,DREZ length +T5,22.1,4.9,Seg.L at dorsal CE +T5,20.6,3.4000000000000004,Seg.L at BE +T5,32.400000000000006,6.8999999999999995,Inf.Art facet to CR distance +T5,44.400000000000006,6.1,IF to RR distance +T5,28.1,3.5,IF to CR distance +T5,4.57,0.76,Dorsal width +T6,18.799999999999997,3.9000000000000004,DREZ length +T6,24.8,4.0,Seg.L at dorsal CE +T6,21.6,3.1,Seg.L at BE +T6,31.7,6.4,Inf.Art facet to CR distance +T6,41.6,5.0,IF to RR distance +T6,23.1,5.0,IF to CR distance +T6,4.37,0.54,Dorsal width +T7,20.099999999999998,3.5,DREZ length +T7,24.5,6.0,Seg.L at dorsal CE +T7,23.599999999999998,3.5,Seg.L at BE +T7,33.6,7.7,Inf.Art facet to CR distance +T7,40.099999999999994,7.199999999999999,IF to RR distance +T7,21.200000000000003,5.300000000000001,IF to CR distance +T7,4.64,0.62,Dorsal width +T8,19.0,3.1,DREZ length +T8,25.5,4.5,Seg.L at dorsal CE +T8,24.0,2.5,Seg.L at BE +T8,34.300000000000004,7.800000000000001,Inf.Art facet to CR distance +T8,37.0,8.9,IF to RR distance +T8,22.0,8.100000000000001,IF to CR distance +T8,5.08,0.55,Dorsal width +T9,20.4,3.4000000000000004,DREZ length +T9,23.900000000000002,4.1,Seg.L at dorsal CE +T9,25.099999999999998,2.9,Seg.L at BE +T9,36.4,7.4,Inf.Art facet to CR distance +T9,38.199999999999996,9.9,IF to RR distance +T9,20.2,6.800000000000001,IF to CR distance +T9,5.29,0.4,Dorsal width +T10,19.3,3.7,DREZ length +T10,25.299999999999997,4.4,Seg.L at dorsal CE +T10,26.7,3.5,Seg.L at BE +T10,40.599999999999994,6.800000000000001,Inf.Art facet to CR distance +T10,40.9,9.399999999999999,IF to RR distance +T10,24.0,7.5,IF to CR distance +T10,5.41,0.36,Dorsal width +T11,15.5,3.9000000000000004,DREZ length +T11,22.400000000000002,5.0,Seg.L at dorsal CE +T11,28.5,1.7999999999999998,Seg.L at BE +T11,43.9,6.1,Inf.Art facet to CR distance +T11,46.7,9.1,IF to RR distance +T11,31.0,8.0,IF to CR distance +T11,5.45,0.39,Dorsal width +T12,15.600000000000001,3.5999999999999996,DREZ length +T12,18.400000000000002,2.6,Seg.L at dorsal CE +T12,27.0,2.1,Seg.L at BE +T12,52.0,3.3000000000000003,Inf.Art facet to CR distance +T12,56.8,9.200000000000001,IF to RR distance +T12,38.8,8.0,IF to CR distance +T12,5.89,0.29,Dorsal width +L1,15.2,4.2,DREZ length +L1,17.5,3.5999999999999996,Seg.L at dorsal CE +L1,30.299999999999997,5.8,Seg.L at BE +L1,68.1,5.5,Inf.Art facet to CR distance +L1,68.1,10.3,IF to RR distance +L1,54.699999999999996,11.6,IF to CR distance +L1,5.64,0.5,Dorsal width +L2,11.799999999999999,3.2,DREZ length +L2,14.0,2.6,Seg.L at dorsal CE +L2,29.5,4.1,Seg.L at BE +L2,85.8,5.1,Inf.Art facet to CR distance +L2,82.4,14.0,IF to RR distance +L2,72.2,15.2,IF to CR distance +L2,5.47,0.84,Dorsal width +L3,11.200000000000001,2.5,DREZ length +L3,11.200000000000001,2.6,Seg.L at dorsal CE +L3,31.099999999999998,3.5,Seg.L at BE +L3,105.19999999999999,6.4,Inf.Art facet to CR distance +L3,102.69999999999999,22.3,IF to RR distance +L3,95.1,22.7,IF to CR distance +L3,5.72,0.49,Dorsal width +L4,11.6,1.1,DREZ length +L4,12.5,2.4,Seg.L at dorsal CE +L4,31.099999999999998,5.300000000000001,Seg.L at BE +L4,116.30000000000001,4.699999999999999,Inf.Art facet to CR distance +L4,115.39999999999999,13.100000000000001,IF to RR distance +L4,106.19999999999999,15.600000000000001,IF to CR distance +L4,5.54,0.55,Dorsal width +L5,11.200000000000001,3.1,DREZ length +L5,9.7,3.8,Seg.L at dorsal CE +L5,27.0,4.2,Seg.L at BE +L5,127.10000000000001,4.4,Inf.Art facet to CR distance +L5,126.6,15.0,IF to RR distance +L5,118.69999999999999,17.1,IF to CR distance +L5,4.08,0.11,Dorsal width diff --git a/code/spine_level_theo_sandrine_STD.ipynb b/code/spine_level_theo_sandrine_STD.ipynb new file mode 100644 index 0000000..ca741f7 --- /dev/null +++ b/code/spine_level_theo_sandrine_STD.ipynb @@ -0,0 +1,463 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 204, + "id": "3c65eaa5-1b37-4317-9657-e52d4a8bc8a0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "python version: 3.8.15 | packaged by conda-forge | (default, Nov 22 2022, 08:49:06) \n", + "[Clang 14.0.6 ]\n", + "numpy version: 1.23.5\n", + "pandas version: 1.5.3\n", + "nibabel version: 5.1.0\n" + ] + }, + { + "data": { + "text/plain": " Segment MEAN STD Mesure\n0 C2 11.3 1.5 DREZ length\n1 C2 12.6 0.9 Seg.L at dorsal CE\n2 C2 13.1 1.0 Seg.L at BE\n3 C2 24.4 0.8 Inf.Art facet to CR distance\n4 C2 15.5 4.2 IF to RR distance", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SegmentMEANSTDMesure
0C211.31.5DREZ length
1C212.60.9Seg.L at dorsal CE
2C213.11.0Seg.L at BE
3C224.40.8Inf.Art facet to CR distance
4C215.54.2IF to RR distance
\n
" + }, + "execution_count": 204, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import nibabel as nib\n", + "import matplotlib.pyplot as plt\n", + "import scipy\n", + "import math\n", + "import os\n", + "import sys\n", + "\n", + "print(f'python version: {sys.version}')\n", + "print(f'numpy version: {np.__version__}')\n", + "print(f'pandas version: {pd.__version__}')\n", + "print(f'nibabel version: {nib.__version__}')\n", + "\n", + "NEAR_ZERO_THRESHOLD = 1e-6\n", + "\n", + "\n", + "def int2seg(intensity):\n", + " if intensity <= 7:\n", + " return f\"C{intensity}\"\n", + " elif intensity > 7 and intensity <= 19:\n", + " return f\"T{intensity - 7}\"\n", + " else:\n", + " return f\"L{intensity - 19}\"\n", + "\n", + "\n", + "df = pd.read_csv(\"mendez_df.csv\") #Mendez values\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 205, + "id": "21021ea9-ec84-4b84-b534-3012a4681a78", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../../spinalcordtoolbox/data/PAM50/template/\n" + ] + } + ], + "source": [ + "sct_dir = '../../spinalcordtoolbox/data/PAM50/template/'\n", + "print(sct_dir)" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "id": "88c33b8a-3ac6-4275-b939-376d3e2859a7", + "metadata": {}, + "outputs": [], + "source": [ + "# Import foramen data\n", + "#foramen_level = nib.load('PAM50_intervertebral_foramen_sandrine.nii.gz') # TODO add path\n", + "foramen_level = nib.load('test_foramen.nii.gz')\n", + "\n", + "x_f, y_f, z_f = np.where(foramen_level.get_fdata() > NEAR_ZERO_THRESHOLD)\n", + "new_order = np.argsort(z_f)[::-1]\n", + "x_f = [x_f[i] for i in new_order]\n", + "y_f = [y_f[i] for i in new_order]\n", + "z_f = [z_f[i] for i in new_order]" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "id": "97dfb430-080d-4421-8067-aae2c2755cfd", + "metadata": {}, + "outputs": [], + "source": [ + "# Import Centerline data\n", + "center = nib.load(os.path.join(sct_dir, 'PAM50_centerline.nii.gz'))\n", + "x_c, y_c, z_c = np.where(center.get_fdata() > NEAR_ZERO_THRESHOLD)\n", + "new_order = np.argsort(z_c)[::-1]\n", + "x_c = [x_c[i] for i in new_order]\n", + "y_c = [y_c[i] for i in new_order]\n", + "z_c = [z_c[i] for i in new_order]\n", + "\n", + "# Import Cord data\n", + "PATH = os.path.join(sct_dir, 'PAM50_cord.nii.gz')\n", + "cord = nib.load(PATH)\n", + "p50_mask = cord.get_fdata()\n", + "x_cord, y_cord, z_cord = np.where(p50_mask > 0)\n", + "new_order = np.argsort(z_cord)[::-1]\n", + "x_cord = [x_cord[i] for i in new_order]\n", + "y_cord = [y_cord[i] for i in new_order]\n", + "z_cord = [z_cord[i] for i in new_order]\n", + "\n", + "PATH_cerv = 'label_center_roots_cervical.nii.gz'\n", + "cerv = nib.load(PATH_cerv)\n", + "p50_cerv = cerv.get_fdata()\n", + "x_cerv, y_cerv, z_cerv = np.where(p50_cerv > 0)\n", + "new_order = np.argsort(z_cerv)[::-1]\n", + "x_cerv = [x_cerv[i] for i in new_order]\n", + "y_cerv = [y_cerv[i] for i in new_order]\n", + "z_cerv = [z_cerv[i] for i in new_order]\n" + ] + }, + { + "cell_type": "markdown", + "id": "01cf05a5-ac03-4312-ac9b-f6ad2a485283", + "metadata": {}, + "source": [ + "## Estimate without STD\n", + "Take smallest distance bewtenn SC centerline (shifted by average diameter at dorsal rootlet entry and intervertebral foramen) (Sandrine)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 212, + "id": "623713a4-6da3-4b3b-b40c-be237bacd435", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Level 2\n", + "IF \t x:37 \t y:72 \t z:932\n", + "Seg: C2 \t Rostral mean (mm): 15.5 \t Caudal mean(mm): 10.6 \t Width(mm): 7.88\n", + "Seg: C2 \t Rostral mean (vx): 31.0 \t Caudal mean(vx): 21.2 \t Width(vx): 15.76\n", + "new x: 62.12, new y: 66\n", + "Rostral, closest dist: 25, rostral slice: 957\n", + "Caudal, closest dist: 11, rostral slice: 943\n", + "Level 3\n", + "IF \t x:41 \t y:89 \t z:898\n", + "Seg: C3 \t Rostral mean (mm): 16.299999999999997 \t Caudal mean(mm): 10.8 \t Width(mm): 7.18\n", + "Seg: C3 \t Rostral mean (vx): 32.599999999999994 \t Caudal mean(vx): 21.6 \t Width(vx): 14.36\n", + "new x: 62.82, new y: 66\n", + "Rostral, closest dist: 18, rostral slice: 916\n", + "Caudal, closest dist: 0, rostral slice: 898\n", + "Level 4\n", + "IF \t x:42 \t y:88 \t z:865\n", + "Seg: C4 \t Rostral mean (mm): 18.1 \t Caudal mean(mm): 10.1 \t Width(mm): 7.11\n", + "Seg: C4 \t Rostral mean (vx): 36.2 \t Caudal mean(vx): 20.2 \t Width(vx): 14.22\n", + "new x: 62.89, new y: 66\n", + "Rostral, closest dist: 25, rostral slice: 890\n", + "Caudal, closest dist: 0, rostral slice: 865\n", + "Level 5\n", + "IF \t x:42 \t y:88 \t z:830\n", + "Seg: C5 \t Rostral mean (mm): 15.1 \t Caudal mean(mm): 9.3 \t Width(mm): 7.11\n", + "Seg: C5 \t Rostral mean (vx): 30.2 \t Caudal mean(vx): 18.6 \t Width(vx): 14.22\n", + "new x: 62.89, new y: 66\n", + "Rostral, closest dist: 15, rostral slice: 845\n", + "Caudal, closest dist: 0, rostral slice: 830\n", + "Level 6\n", + "IF \t x:42 \t y:88 \t z:797\n", + "Seg: C6 \t Rostral mean (mm): 17.2 \t Caudal mean(mm): 10.3 \t Width(mm): 6.98\n", + "Seg: C6 \t Rostral mean (vx): 34.4 \t Caudal mean(vx): 20.6 \t Width(vx): 13.96\n", + "new x: 63.019999999999996, new y: 66\n", + "Rostral, closest dist: 22, rostral slice: 819\n", + "Caudal, closest dist: 0, rostral slice: 797\n", + "Level 7\n", + "IF \t x:42 \t y:88 \t z:765\n", + "Seg: C7 \t Rostral mean (mm): 20.1 \t Caudal mean(mm): 11.8 \t Width(mm): 6.52\n", + "Seg: C7 \t Rostral mean (vx): 40.2 \t Caudal mean(vx): 23.6 \t Width(vx): 13.04\n", + "new x: 63.480000000000004, new y: 67\n", + "Rostral, closest dist: 31, rostral slice: 796\n", + "Caudal, closest dist: 0, rostral slice: 765\n", + "Level 8\n", + "IF \t x:40 \t y:85 \t z:731\n", + "Seg: T1 \t Rostral mean (mm): 28.1 \t Caudal mean(mm): 17.0 \t Width(mm): 5.4\n", + "Seg: T1 \t Rostral mean (vx): 56.2 \t Caudal mean(vx): 34.0 \t Width(vx): 10.8\n", + "new x: 64.6, new y: 67\n", + "Rostral, closest dist: 50, rostral slice: 781\n", + "Caudal, closest dist: 22, rostral slice: 753\n", + "Level 9\n", + "IF \t x:41 \t y:82 \t z:691\n", + "Seg: T2 \t Rostral mean (mm): 33.4 \t Caudal mean(mm): 22.0 \t Width(mm): 4.87\n", + "Seg: T2 \t Rostral mean (vx): 66.8 \t Caudal mean(vx): 44.0 \t Width(vx): 9.74\n", + "new x: 65.13, new y: 67\n", + "Rostral, closest dist: 62, rostral slice: 753\n", + "Caudal, closest dist: 37, rostral slice: 728\n" + ] + } + ], + "source": [ + "len_level = {}\n", + "z_ref = np.array(range(min(z_c), max(z_c) + 1))\n", + "z_c = z_ref\n", + "dist_list = {\"ref\": [], \"caudal\": [], \"rostral\": [], \"ratio\":[], \"without z\":[]}\n", + "level_list = []\n", + "for i in range(len(x_f)):\n", + " # Get coordinates of intervertebral foramen\n", + " x = x_f[i]\n", + " y = y_f[i]\n", + " z = z_f[i]\n", + "\n", + " # Get level\n", + " level = int(foramen_level.get_fdata()[x, y, z])\n", + " print('Level', level)\n", + " print(f\"IF \\t x:{x} \\t y:{y} \\t z:{z}\")\n", + " # Get correspondance of level number (2 --> C2, etc.)\n", + " seg = int2seg(level)\n", + " # Get mendez measures for the corresponding level\n", + " seg_df = df[df.Segment == seg]\n", + " RR = seg_df[seg_df.Mesure == \"IF to RR distance\"]\n", + " CR = seg_df[seg_df.Mesure == \"IF to CR distance\"]\n", + " W = seg_df.loc[seg_df.Mesure == \"Dorsal width\"].iloc[0]\n", + " w_mean = W.MEAN # get mean value of dorsal width\n", + " rr_mean = RR.MEAN.to_list()[0] # Get mean distance from rostral rootlet to interverteral foramen\n", + " cr_mean = CR.MEAN.to_list()[0] # Get mean distance from caudal rootlet to interverteral foramen\n", + " print(f\"Seg: {seg} \\t Rostral mean (mm): {rr_mean} \\t Caudal mean(mm): {cr_mean} \\t Width(mm): {w_mean}\")\n", + " w_mean = w_mean * 2\n", + " rr_mean = rr_mean * 2\n", + " cr_mean = cr_mean * 2\n", + " print(f\"Seg: {seg} \\t Rostral mean (vx): {rr_mean} \\t Caudal mean(vx): {cr_mean} \\t Width(vx): {w_mean}\")\n", + "\n", + " # Compute the 3D euclidean distance between intervertebral foramen and the back of the SC at dorsal width/2 lateral offset ( in mm)\n", + " new_x = (x_c - w_mean * 0.5)[0] # x value centerline - dorsal width /2 offset\n", + " new_y = min(\n", + " np.where(cord.get_fdata()[int(new_x), :, z] > 0)[0]) # y value of the SC border at x = new_x and z = foramen\n", + " print(f\"new x: {new_x}, new y: {new_y}\")\n", + " distance_foramen_ctl = np.sqrt((x_c - w_mean - x) ** 2 + (new_y - y) ** 2 + (\n", + " z_c - z) ** 2)\n", + " # Get the closest distance to the rostral rootlet compared to the Mendez value\n", + " rostral_diff = np.array([np.abs(i - rr_mean) for i in distance_foramen_ctl])\n", + " # Only use slices higher than the foramen\n", + " rostral = np.argmin(rostral_diff[-len(z_ref[z_c > z]) - 1::])\n", + " z_ref_r = z_c[-len(z_c[z_c > z]) - 1::]\n", + " # Get the slice number (adjusted since the centerline starts at slice 55 not 0)\n", + " r_z = z_ref_r[rostral]\n", + "\n", + " # Get the closest distance to the caudal rootlet compared to the Mendez value\n", + " caudal_diff = np.array([np.abs(i - cr_mean) for i in distance_foramen_ctl])\n", + " # Only use slices higher than the foramen\n", + " caudal = np.argmin(caudal_diff[-len(z_ref[z_c > z]) - 1::])\n", + " # Get the slice number (adjusted since the centerline starts at slice 55 not 0)\n", + " c_z = z_ref_r[caudal]\n", + "\n", + " print(f\"Rostral, closest dist: {rostral}, rostral slice: {r_z}\")\n", + " dist_list[\"rostral\"].append(rr_mean)\n", + " dist_list[\"caudal\"].append(cr_mean)\n", + " level_list.append(level)\n", + " print(f\"Caudal, closest dist: {caudal}, rostral slice: {c_z}\")\n", + " ref_dist = np.sqrt((x_cerv[i] - x) ** 2 + (y_cerv[i] - y) ** 2 + (\n", + " z_cerv[i] - z) ** 2)\n", + " #print(ref_dist)\n", + " dist_list[\"ref\"].append(ref_dist) # foramen to midle DREZ\n", + " dist_list[\"ratio\"].append(ref_dist / cr_mean) # Ratio\n", + " no_z = np.sqrt((x_cerv[i] - x) ** 2 + (y_cerv[i] - y) ** 2 )\n", + " dist_list[\"without z\"].append(no_z) # distance without z\n", + " # Set slices\n", + " len_level[level] = (r_z, c_z)" + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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BQYGmp8risL8+fN57bXXGDRoEKC2EHh7e7Ny5UqefvrpUq/JwdqBf4f8W+rnLc51i32sw42P3bVrF4888ggzZ86kd+/euLm58d133xXo86LX61EUpcD78vepuX5fUdLT0+nVqxe9evXi66+/xtPTk3PnztG7d29ycnKK/bUIIYS4AUWBNWMhchvYuqhBxq2W1lVVSJq2zKxZs4ZWrVrx0EMP4eXlRVhYGF988YV5f0REBLGxsfTq1cu8zc7Ojs6dO7Nz584iz5mdnU1KSkqBR0nodDocbRzL/VGS/jLBwcE4ODiwcePGQvt27NhBQEAAr732Gq1atSI4OJioqKgCx3h6ehITE1Ng24EDB8zPg4KCsLGxYdeuXeZtiYmJnDx50vz6+PHjJCQk8NZbb9GxY0caNmwonX+FEKI0bZoDh74DnRU8vAx8mmpdUYWlaZg5e/Ysn376KcHBwfz1118888wzvPDCC6xYsQKA2NhYALy9vQu8z9vb27zvenPnzsXNzc388PPzK9svQgP29vZMmjSJiRMnsmLFCs6cOcOuXbtYvHgxQUFBnDt3ju+++44zZ86wYMECVq9eXeD93bp147///mPFihWcOnWK6dOnc+TIEfN+Z2dnnnjiCV555RU2btzIkSNHGDlyJHr9tR8Xf39/bG1t+eijjzh79ixr1qzhzTffLLfvgRBCVGr7voKtb6vP+8+HoB6allPRaRpmTCYTLVq0YM6cOYSFhfH0008zevRoPv300wLHXd9qoSjKDVsypkyZQnJysvlx/vz5MqtfS1OnTuWll15i2rRphISEMHjwYOLj4xkwYADjx49nzJgxhIaGsnPnTqZOnVrgvb1792bq1KlMnDiR1q1bk5qayvDhwwsc884779CpUyfuu+8+evToQYcOHcydskFt3Vm2bBk//PADjRo14q233uLdd98tl69dCCEqtTN/w2/j1OcdX4YWw296uACdUpwOEmUkICCAnj178uWXX5q3ffrpp8yaNYvo6GjOnj1LvXr12LdvH2FhYeZjBgwYgLu7O8uXL7/lNVJSUnBzcyM5ORlX14KdprKysoiIiKBOnTrY29uX3hcmxG2Sn0khqrjYI7CkD+SkQtOHYdDnVXYI9s0+v6+nacvM3XffzYkTJwpsO3nyJAEBAQDUqVMHHx8f1q9fb96fk5PDli1baN++fbnWKoQQ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\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "order = np.argsort(level_list)\n", + "#PLOT distances\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"ref\"][i] for i in order], label=\"center\")\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"rostral\"][i] for i in order], label=\"rostral\")\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"caudal\"][i] for i in order], label=\"caudal\")\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"without z\"][i] for i in order], label=\"center without Z\")\n", + "plt.title(\"Euclidian dist formanen -\")\n", + "plt.xlabel(\"Level\")\n", + "plt.ylabel(\"voxel\")\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "#plot ratio\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"ratio\"][i] for i in order], label=\"ratio\")\n", + "plt.legend()\n", + "\n", + "plt.show()\n" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 201, + "id": "6286e55b-4af0-4a17-b0db-7f297fe8e432", + "metadata": {}, + "outputs": [], + "source": [ + "cord_mask = np.copy(p50_mask)\n", + "for lvl in len_level:\n", + " level_r = int(len_level[lvl][0])\n", + " level_c = int(len_level[lvl][1])\n", + " cord_mask[:, :, level_r][cord_mask[:, :, level_r] > 0] = lvl\n", + " cord_mask[:, :, level_c][cord_mask[:, :, level_c] > 0] = lvl\n", + "cord_mask[:, :, :][cord_mask[:, :, :] == 1] = 0\n", + "test_img = nib.Nifti1Image(cord_mask, header=cord.header, affine=cord.affine)\n", + "nib.save(test_img, f'foramen_label_without_std.nii.gz') # TO CHANGE path output" + ] + }, + { + "cell_type": "markdown", + "id": "9053ac71-0120-419a-9d81-527666d8381a", + "metadata": {}, + "source": [ + "## Estimate with STD \n", + "Take smallest distance bewtenn SC centerline (shifted by average diameter at dorsal rootlet entry and intervertebral foramen) (Sandrine)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "566a8692-2fcf-41a6-ba83-84b1a565eb72", + "metadata": {}, + "outputs": [], + "source": [ + "z_ref = np.array(range(min(z_c), max(z_c) + 1))\n", + "z_c = z_ref\n", + "for i in range(len(x_f)):\n", + " # Get coordinates of intervertebral foramen\n", + " x = x_f[i]\n", + " y = y_f[i]\n", + " z = z_f[i]\n", + " # Get level\n", + " level = int(foramen_level.get_fdata()[x, y, z])\n", + " print('Level', level)\n", + " # Get correspondance of level number (2 --> C2, etc.)\n", + " seg = int2seg(level)\n", + " print(seg)\n", + " # Get mendez measures for the corresponding level\n", + " seg_df = df[df.Segment == seg]\n", + " RR = seg_df[seg_df.Mesure == \"IF to RR distance\"]\n", + " CR = seg_df[seg_df.Mesure == \"IF to CR distance\"]\n", + " W = seg_df.loc[seg_df.Mesure == \"Dorsal width\"].iloc[0]\n", + " w_mean = W.MEAN # get mean value of dorsal width\n", + " rr_mean = RR.MEAN.to_list()[0] # Get mean distance from rostral rootlet to interverteral foramen\n", + " cr_mean = CR.MEAN.to_list()[0] # Get mean distance from caudal rootlet to interverteral foramen\n", + " rr_std = RR.STD.to_list()[0] # Get std for mean distance from rostral rootlet to interverteral foramen\n", + " cr_std = CR.STD.to_list()[0] # Get std for mean distance from caudal rootlet to interverteral foramen\n", + " # Get distance for +/- 95% probability\n", + " min_rr = rr_mean - 2 * rr_std\n", + " max_rr = rr_mean + 2 * rr_std\n", + " min_cr = cr_mean - 2 * cr_std\n", + " max_cr = cr_mean + 2 * cr_std\n", + " print(\"Rostral dist\", max_rr, rr_mean, min_rr)\n", + " print(\"Caudal dist\", max_cr, cr_mean, min_cr)\n", + " # Compute the 3D euclidean distance between intervertebral foramen and the back of the SC at dorsal width/2 lateral offset ( in mm)\n", + " new_x = (x_c - w_mean)[0] # x value centerline - dorsal width /2 offset\n", + " new_z = min(\n", + " np.where(cord.get_fdata()[int(new_x), :, z] > 0)[0]) # y value of the SC border at x = new_x and z = foramen\n", + " distance_foramen_ctl = np.sqrt((x_c - w_mean - x) ** 2 + (new_z - y) ** 2 + (\n", + " z_c - z) ** 2) * 0.5 # 0.5 --> pix dim of PAM50 TODO: remove hardcode\n", + " # min std : most caudal point of the probabilistic distribution \n", + " # max std : most rostral point of the probabilistic distribution \n", + " # List with estimation of z value for rostral and caudal (min std, max std, mean)\n", + " all_level = []\n", + " for distance in [max_rr, min_rr, rr_mean, max_cr, min_cr, cr_mean]:\n", + " # Get the closest distance to the rostral rootlet compared to the Mendez value\n", + " rostral_diff = np.array([np.abs(i - distance) for i in distance_foramen_ctl])\n", + " # Only use slices higher than the foramen\n", + " estimate = np.argmin(rostral_diff[-len(z_c[z_c > z]) - 1::])\n", + " z_ref_i = z_ref[-len(z_c[z_c > z]) - 1::]\n", + " # Get the slice number (adjusted since the centerline starts at slice 55 not 0)\n", + " value = z_ref_i[estimate]\n", + " all_level.append(int(value))\n", + "\n", + " print('Rostral', rr_mean, distance_foramen_ctl[-len(z_c[z_c > z]) - 1::][rostral], all_level[2], z)\n", + " print('Caudal', cr_mean, distance_foramen_ctl[-len(z_c[z_c > z]) - 1::][caudal], all_level[5], z)\n", + " # Set colored label from 0 (the least probable) to 20 (mean value)\n", + " cord_mask = np.copy(p50_mask)\n", + " # Max to mean rostral\n", + " for rng in range(all_level[2], all_level[0]):\n", + " if abs(all_level[0] - all_level[2]) != 0:\n", + " proba = 19 * abs(rng - all_level[2]) / (abs(all_level[0] - all_level[2])) + 1\n", + " cord_mask[:, :, rng][cord_mask[:, :, rng] > 0] = 20 - proba\n", + " # Mean to min rostral \n", + " for rng in range(all_level[1], all_level[2]):\n", + " if abs(all_level[2] - all_level[1]) != 0:\n", + " proba = 19 * abs(rng - all_level[1]) / (abs(all_level[2] - all_level[1])) + 1\n", + " cord_mask[:, :, rng][cord_mask[:, :, rng] > 0] = proba\n", + " # Max to mean caudal\n", + " for rng in range(all_level[5], all_level[3]):\n", + " if abs(all_level[3] - all_level[5]) != 0:\n", + " proba = 19 * abs(rng - all_level[5]) / (abs(all_level[3] - all_level[5])) + 1\n", + " cord_mask[:, :, rng][cord_mask[:, :, rng] > 0] = 20 - proba\n", + " # Mean to min caudal\n", + " for rng in range(all_level[4], all_level[5]):\n", + " if abs(all_level[5] - all_level[4]) != 0:\n", + " proba = 19 * abs(rng - all_level[4]) / (abs(all_level[5] - all_level[4])) + 1\n", + " cord_mask[:, :, rng][cord_mask[:, :, rng] > 0] = proba\n", + " # Mean value caudal and rostral = 20\n", + " for l in (all_level[2], all_level[5]):\n", + " cord_mask[:, :, l][cord_mask[:, :, l] > 0] = 20\n", + " cord_mask[:, :, :][cord_mask[:, :, :] == 1] = 0\n", + " test_img = nib.Nifti1Image(cord_mask, header=cord.header, affine=cord.affine)\n", + " nib.save(test_img, f'Outputs/spinal_level_std_{level}.nii.gz') # TO CHANGE path output" + ] + } + ], + "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.8.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/code/spine_level_theo_sandrine_STD_RATIO.ipynb b/code/spine_level_theo_sandrine_STD_RATIO.ipynb new file mode 100644 index 0000000..1e0586a --- /dev/null +++ b/code/spine_level_theo_sandrine_STD_RATIO.ipynb @@ -0,0 +1,620 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "3c65eaa5-1b37-4317-9657-e52d4a8bc8a0", + "metadata": { + "ExecuteTime": { + "end_time": "2023-05-16T19:31:37.255593Z", + "start_time": "2023-05-16T19:31:34.475657Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "python version: 3.8.15 | packaged by conda-forge | (default, Nov 22 2022, 08:49:06) \n", + "[Clang 14.0.6 ]\n", + "numpy version: 1.23.5\n", + "pandas version: 1.5.3\n", + "nibabel version: 5.1.0\n" + ] + }, + { + "data": { + "text/plain": " Segment MEAN STD Mesure\n0 C2 11.3 1.5 DREZ length\n1 C2 12.6 0.9 Seg.L at dorsal CE\n2 C2 13.1 1.0 Seg.L at BE\n3 C2 24.4 0.8 Inf.Art facet to CR distance\n4 C2 15.5 4.2 IF to RR distance", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
SegmentMEANSTDMesure
0C211.31.5DREZ length
1C212.60.9Seg.L at dorsal CE
2C213.11.0Seg.L at BE
3C224.40.8Inf.Art facet to CR distance
4C215.54.2IF to RR distance
\n
" + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import nibabel as nib\n", + "import matplotlib.pyplot as plt\n", + "import scipy\n", + "import math\n", + "import os\n", + "import sys\n", + "\n", + "print(f'python version: {sys.version}')\n", + "print(f'numpy version: {np.__version__}')\n", + "print(f'pandas version: {pd.__version__}')\n", + "print(f'nibabel version: {nib.__version__}')\n", + "\n", + "NEAR_ZERO_THRESHOLD = 1e-6\n", + "\n", + "\n", + "def int2seg(intensity):\n", + " if intensity <= 7:\n", + " return f\"C{intensity}\"\n", + " elif intensity > 7 and intensity <= 19:\n", + " return f\"T{intensity - 7}\"\n", + " else:\n", + " return f\"L{intensity - 19}\"\n", + "\n", + "\n", + "df = pd.read_csv(\"mendez_df.csv\") #Mendez values\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "21021ea9-ec84-4b84-b534-3012a4681a78", + "metadata": { + "ExecuteTime": { + "end_time": "2023-05-16T19:31:37.257413Z", + "start_time": "2023-05-16T19:31:37.254678Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "../../spinalcordtoolbox/data/PAM50/template/\n" + ] + } + ], + "source": [ + "sct_dir = '../../spinalcordtoolbox/data/PAM50/template/'\n", + "print(sct_dir)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "88c33b8a-3ac6-4275-b939-376d3e2859a7", + "metadata": { + "ExecuteTime": { + "end_time": "2023-05-16T19:31:37.484794Z", + "start_time": "2023-05-16T19:31:37.256610Z" + } + }, + "outputs": [], + "source": [ + "# Import foramen data\n", + "#foramen_level = nib.load('PAM50_intervertebral_foramen_sandrine.nii.gz') # TODO add path\n", + "foramen_level = nib.load('test_foramen.nii.gz')\n", + "\n", + "x_f, y_f, z_f = np.where(foramen_level.get_fdata() > NEAR_ZERO_THRESHOLD)\n", + "new_order = np.argsort(z_f)[::-1]\n", + "x_f = [x_f[i] for i in new_order]\n", + "y_f = [y_f[i] for i in new_order]\n", + "z_f = [z_f[i] for i in new_order]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "97dfb430-080d-4421-8067-aae2c2755cfd", + "metadata": { + "ExecuteTime": { + "end_time": "2023-05-16T19:31:38.847815Z", + "start_time": "2023-05-16T19:31:37.489809Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[960, 932, 891, 862, 830, 796, 771, 732]\n", + "[945, 905, 875, 852] [969, 943, 901, 872]\n" + ] + } + ], + "source": [ + "# Import Centerline data\n", + "center = nib.load(os.path.join(sct_dir, 'PAM50_centerline.nii.gz'))\n", + "x_c, y_c, z_c = np.where(center.get_fdata() > NEAR_ZERO_THRESHOLD)\n", + "new_order = np.argsort(z_c)[::-1]\n", + "x_c = [x_c[i] for i in new_order]\n", + "y_c = [y_c[i] for i in new_order]\n", + "z_c = [z_c[i] for i in new_order]\n", + "\n", + "# Import Cord data\n", + "PATH = os.path.join(sct_dir, 'PAM50_cord.nii.gz')\n", + "cord = nib.load(PATH)\n", + "p50_mask = cord.get_fdata()\n", + "x_cord, y_cord, z_cord = np.where(p50_mask > 0)\n", + "new_order = np.argsort(z_cord)[::-1]\n", + "x_cord = [x_cord[i] for i in new_order]\n", + "y_cord = [y_cord[i] for i in new_order]\n", + "z_cord = [z_cord[i] for i in new_order]\n", + "\n", + "PATH_cerv = 'label_center_roots_cervical.nii.gz'\n", + "cerv = nib.load(PATH_cerv)\n", + "p50_cerv = cerv.get_fdata()\n", + "x_cerv, y_cerv, z_cerv = np.where(p50_cerv > 0)\n", + "new_order = np.argsort(z_cerv)[::-1]\n", + "x_cerv = [x_cerv[i] for i in new_order]\n", + "y_cerv = [y_cerv[i] for i in new_order]\n", + "z_cerv = [z_cerv[i] for i in new_order]\n", + "\n", + "PATH_cr = 'label_caudal_rostral_roots.nii.gz'\n", + "cr = nib.load(PATH_cr)\n", + "p50_cr = cr.get_fdata()\n", + "x_cr, y_cr, z_cr = np.where(p50_cr > 0)\n", + "new_order = np.argsort(z_cr)[::-1]\n", + "print(z_cerv)\n", + "x_cr = [x_cr[i] for i in new_order]\n", + "y_cr = [y_cr[i] for i in new_order]\n", + "z_cr = [z_cr[i] for i in new_order]\n", + "\n", + "x_ca = [x_cr[i] for i in range(8) if i % 2 == 1]\n", + "y_ca = [y_cr[i] for i in range(8) if i % 2 == 1]\n", + "z_ca = [z_cr[i] for i in range(8) if i % 2 == 1]\n", + "\n", + "x_ro = [x_cr[i] for i in range(8) if i % 2 == 0]\n", + "y_ro = [y_cr[i] for i in range(8) if i % 2 == 0]\n", + "z_ro = [z_cr[i] for i in range(8) if i % 2 == 0]\n", + "\n", + "print(z_ca, z_ro)\n" + ] + }, + { + "cell_type": "markdown", + "id": "01cf05a5-ac03-4312-ac9b-f6ad2a485283", + "metadata": {}, + "source": [ + "## Estimate without STD\n", + "Take smallest distance bewtenn SC centerline (shifted by average diameter at dorsal rootlet entry and intervertebral foramen) (Sandrine)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "623713a4-6da3-4b3b-b40c-be237bacd435", + "metadata": { + "ExecuteTime": { + "end_time": "2023-05-16T19:33:27.072207Z", + "start_time": "2023-05-16T19:33:27.062384Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Level 2\n", + "IF \t x:37 \t y:72 \t z:932\n", + "Seg: C2 \t Rostral mean (mm): 15.5 \t Caudal mean(mm): 10.6 \t Width(mm): 7.88\n", + "1.4\n", + "Seg: C2 \t Rostral mean (vx): 43.4 \t Caudal mean(vx): 27.56 \t Width(vx): 15.76\n", + "new x: 62.12, new y: 66\n", + "Rostral, closest dist: 39, rostral slice: 971\n", + "Caudal, closest dist: 21, Caudal slice: 953\n", + "Level 3\n", + "IF \t x:41 \t y:89 \t z:898\n", + "Seg: C3 \t Rostral mean (mm): 16.299999999999997 \t Caudal mean(mm): 10.8 \t Width(mm): 7.18\n", + "1.4\n", + "Seg: C3 \t Rostral mean (vx): 45.639999999999986 \t Caudal mean(vx): 28.080000000000002 \t Width(vx): 14.36\n", + "new x: 62.82, new y: 66\n", + "Rostral, closest dist: 37, rostral slice: 935\n", + "Caudal, closest dist: 7, Caudal slice: 905\n", + "Level 4\n", + "IF \t x:42 \t y:88 \t z:865\n", + "Seg: C4 \t Rostral mean (mm): 18.1 \t Caudal mean(mm): 10.1 \t Width(mm): 7.11\n", + "1.4\n", + "Seg: C4 \t Rostral mean (vx): 50.68 \t Caudal mean(vx): 26.26 \t Width(vx): 14.22\n", + "new x: 62.89, new y: 66\n", + "Rostral, closest dist: 44, rostral slice: 909\n", + "Caudal, closest dist: 4, Caudal slice: 869\n", + "Level 5\n", + "IF \t x:42 \t y:88 \t z:830\n", + "Seg: C5 \t Rostral mean (mm): 15.1 \t Caudal mean(mm): 9.3 \t Width(mm): 7.11\n", + "1.4\n", + "Seg: C5 \t Rostral mean (vx): 42.279999999999994 \t Caudal mean(vx): 24.180000000000003 \t Width(vx): 14.22\n", + "new x: 62.89, new y: 66\n", + "Rostral, closest dist: 33, rostral slice: 863\n", + "Caudal, closest dist: 0, Caudal slice: 830\n", + "Level 6\n", + "IF \t x:42 \t y:88 \t z:797\n", + "Seg: C6 \t Rostral mean (mm): 17.2 \t Caudal mean(mm): 10.3 \t Width(mm): 6.98\n", + "1.4\n", + "Seg: C6 \t Rostral mean (vx): 48.16 \t Caudal mean(vx): 26.78 \t Width(vx): 13.96\n", + "new x: 63.019999999999996, new y: 66\n", + "Rostral, closest dist: 40, rostral slice: 837\n", + "Caudal, closest dist: 6, Caudal slice: 803\n", + "Level 7\n", + "IF \t x:42 \t y:88 \t z:765\n", + "Seg: C7 \t Rostral mean (mm): 20.1 \t Caudal mean(mm): 11.8 \t Width(mm): 6.52\n", + "1.4\n", + "Seg: C7 \t Rostral mean (vx): 56.28 \t Caudal mean(vx): 30.680000000000003 \t Width(vx): 13.04\n", + "new x: 63.480000000000004, new y: 67\n", + "Rostral, closest dist: 50, rostral slice: 815\n", + "Caudal, closest dist: 17, Caudal slice: 782\n", + "Level 8\n", + "IF \t x:40 \t y:85 \t z:731\n", + "Seg: T1 \t Rostral mean (mm): 28.1 \t Caudal mean(mm): 17.0 \t Width(mm): 5.4\n", + "1.4\n", + "Seg: T1 \t Rostral mean (vx): 78.67999999999999 \t Caudal mean(vx): 44.2 \t Width(vx): 10.8\n", + "new x: 64.6, new y: 67\n", + "Rostral, closest dist: 74, rostral slice: 805\n", + "Caudal, closest dist: 36, Caudal slice: 767\n", + "Level 9\n", + "IF \t x:41 \t y:82 \t z:691\n", + "Seg: T2 \t Rostral mean (mm): 33.4 \t Caudal mean(mm): 22.0 \t Width(mm): 4.87\n", + "1.4\n", + "Seg: T2 \t Rostral mean (vx): 93.52 \t Caudal mean(vx): 57.2 \t Width(vx): 9.74\n", + "new x: 65.13, new y: 67\n", + "Rostral, closest dist: 90, rostral slice: 781\n", + "Caudal, closest dist: 52, Caudal slice: 743\n" + ] + } + ], + "source": [ + "len_level = {}\n", + "z_ref = np.array(range(min(z_c), max(z_c) + 1))\n", + "z_c = z_ref\n", + "dist_list = {\"ref_center\": [], \"ref_caudal\": [], \"ref_rostral\": [], \"caudal\": [], \"rostral\": [], \"ratio_rostral\": [],\n", + " \"ratio_caudal\": [], \"without z\": [], \"pred center\": []}\n", + "level_list = []\n", + "RATIO =(1.4,1.3)\n", + "slope = 0.0\n", + "for i in range(len(x_f)):\n", + " # Get coordinates of intervertebral foramen\n", + " x = x_f[i]\n", + " y = y_f[i]\n", + " z = z_f[i]\n", + "\n", + " # Get level\n", + " level = int(foramen_level.get_fdata()[x, y, z])\n", + " print('Level', level)\n", + " print(f\"IF \\t x:{x} \\t y:{y} \\t z:{z}\")\n", + " # Get correspondance of level number (2 --> C2, etc.)\n", + " seg = int2seg(level)\n", + " # Get mendez measures for the corresponding level\n", + " seg_df = df[df.Segment == seg]\n", + " RR = seg_df[seg_df.Mesure == \"IF to RR distance\"]\n", + " CR = seg_df[seg_df.Mesure == \"IF to CR distance\"]\n", + " W = seg_df.loc[seg_df.Mesure == \"Dorsal width\"].iloc[0]\n", + " w_mean = W.MEAN # get mean value of dorsal width\n", + " rr_mean = RR.MEAN.to_list()[0] # Get mean distance from rostral rootlet to interverteral foramen\n", + " cr_mean = CR.MEAN.to_list()[0] # Get mean distance from caudal rootlet to interverteral foramen\n", + " print(f\"Seg: {seg} \\t Rostral mean (mm): {rr_mean} \\t Caudal mean(mm): {cr_mean} \\t Width(mm): {w_mean}\")\n", + " w_mean = w_mean * 2\n", + " print(RATIO[0]+slope*i)\n", + " rr_mean = rr_mean * 2 * (RATIO[0]+slope*i)\n", + " cr_mean = cr_mean * 2 * (RATIO[1]+slope*i)\n", + " print(f\"Seg: {seg} \\t Rostral mean (vx): {rr_mean} \\t Caudal mean(vx): {cr_mean} \\t Width(vx): {w_mean}\")\n", + "\n", + " # Compute the 3D euclidean distance between intervertebral foramen and the back of the SC at dorsal width/2 lateral offset ( in mm)\n", + " new_x = (x_c - w_mean * 0.5)[0] # x value centerline - dorsal width /2 offset\n", + " new_y = min(\n", + " np.where(cord.get_fdata()[int(new_x), :, z] > 0)[0]) # y value of the SC border at x = new_x and z = foramen\n", + " print(f\"new x: {new_x}, new y: {new_y}\")\n", + " distance_foramen_ctl = np.sqrt((x_c - w_mean - x) ** 2 + (new_y - y) ** 2 + (\n", + " z_c - z) ** 2)\n", + " # Get the closest distance to the rostral rootlet compared to the Mendez value\n", + " rostral_diff = np.array([np.abs(i - rr_mean) for i in distance_foramen_ctl])\n", + " # Only use slices higher than the foramen\n", + " rostral = np.argmin(rostral_diff[-len(z_ref[z_c > z]) - 1::])\n", + " z_ref_r = z_c[-len(z_c[z_c > z]) - 1::]\n", + " # Get the slice number (adjusted since the centerline starts at slice 55 not 0)\n", + " r_z = z_ref_r[rostral]\n", + "\n", + " # Get the closest distance to the caudal rootlet compared to the Mendez value\n", + " caudal_diff = np.array([np.abs(i - cr_mean) for i in distance_foramen_ctl])\n", + " # Only use slices higher than the foramen\n", + " caudal = np.argmin(caudal_diff[-len(z_ref[z_c > z]) - 1::])\n", + " # Get the slice number (adjusted since the centerline starts at slice 55 not 0)\n", + " c_z = z_ref_r[caudal]\n", + "\n", + " print(f\"Rostral, closest dist: {rostral}, rostral slice: {r_z}\")\n", + " dist_list[\"rostral\"].append(rr_mean)\n", + " dist_list[\"caudal\"].append(cr_mean)\n", + " level_list.append(level)\n", + " print(f\"Caudal, closest dist: {caudal}, Caudal slice: {c_z}\")\n", + " center_dist = np.sqrt((x_cerv[i] - x) ** 2 + (y_cerv[i] - y) ** 2 + (\n", + " z_cerv[i] - z) ** 2)\n", + " #print(ref_dist)\n", + " dist_list[\"ref_center\"].append(center_dist) # foramen to midle DREZ\n", + " try:\n", + " caudal_dist = np.sqrt((x_ca[i] - x) ** 2 + (y_ca[i] - y) ** 2 + (\n", + " z_ca[i] - z) ** 2)\n", + " dist_list[\"ref_caudal\"].append(caudal_dist) # foramen to midle DREZ\n", + " rostral_dist = np.sqrt((x_ro[i] - x) ** 2 + (y_ro[i] - y) ** 2 + (\n", + " z_ro[i] - z) ** 2)\n", + " dist_list[\"ref_rostral\"].append(rostral_dist) # foramen to midle DREZ\n", + " dist_list[\"ratio_caudal\"].append(caudal_dist / cr_mean) # Ratio\n", + " dist_list[\"ratio_rostral\"].append(rostral_dist / rr_mean) # Ratio\n", + " except:\n", + " dist_list[\"ref_caudal\"].append(np.NAN) # foramen to midle DREZ\n", + " dist_list[\"ref_rostral\"].append(np.NAN) # foramen to midle DREZ\n", + " dist_list[\"ratio_caudal\"].append(np.NAN) # Ratio\n", + " dist_list[\"ratio_rostral\"].append(np.NAN) # Ratio\n", + " no_z = np.sqrt((x_cerv[i] - x) ** 2 + (y_cerv[i] - y) ** 2)\n", + " dist_list[\"without z\"].append(no_z) # distance without z\n", + " # Set slices\n", + " len_level[level] = (r_z, c_z, int(c_z + (r_z - c_z)/2))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "outputs": [ + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "
", + "image/png": "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IiIi4tQUdkRERMSpKeyIiIiIU1PYEREREaemsCMiIiJOTWFHREREnJrCjoiIiDg1hR0RERFxago7IiIi4tQcGnZu3LjB5MmTqVWrFt7e3tSuXZtp06ZhsVisba5cucKIESMIDQ3F29ubRo0asWTJEpvlZGdnM3LkSCpXrkz58uXp3bs3SUlJxb05IiIiUgK5OXLls2fPZunSpSxfvpwmTZqwZ88ennnmGfz8/Bg9ejQAY8aMIS4ujpUrV1KzZk1iY2N54YUXCAkJoU+fPgBER0fz+eefs2rVKgICAhg3bhw9e/Zk7969uLq6OnITRURExMFMhmEYjlp5z549qVq1Ku+995512uOPP065cuVYsWIFAOHh4QwYMIApU6ZY27Rq1Yru3bszffp00tPTqVKlCitWrGDAgAEAXLhwgbCwML766isiIyP/sI6MjAz8/PxIT0/H19fXzlspIiIiRaGg398OvYzVvn17Nm7cyLFjxwA4cOAACQkJdO/e3abNZ599xvnz5zEMg7i4OI4dO2YNMXv37iUnJ4du3bpZPxMSEkJ4eDjbt28v3g0SERGREsehl7Feeukl0tPTadiwIa6urpjNZmbOnMmTTz5pbbNo0SL++te/EhoaipubGy4uLvzrX/+iffv2AKSkpODh4YG/v7/NsqtWrUpKSkqe683OziY7O9v6PiMjowi2TkREREoCh4adjz/+mJUrV/Kf//yHJk2asH//fqKjowkJCWHIkCHAzbCzc+dOPvvsM2rUqMGWLVt44YUXCA4OpmvXrvku2zAMTCZTnvNmzZrFa6+9ViTbJCIiIiWLQ/vshIWFMXHiRKKioqzTZsyYwcqVKzl69CiZmZn4+fmxdu1aevToYW3z3HPPkZSUxPr169m0aRNdunTh559/tjm706xZM/r27ZtnqMnrzE5YWJj67IiIiJQipaLPzrVr13BxsS3B1dXVeut5Tk4OOTk5d2zTqlUr3N3d2bBhg3V+cnIyhw4dol27dnmu19PTE19fX5uXiIiIOCeHXsbq1asXM2fOpHr16jRp0oTExETmzZvHsGHDAPD19aVTp05MmDABb29vatSowebNm/nggw+YN28eAH5+fjz77LOMGzeOgIAAKlWqxPjx42natOkdL3OJiIhI2eDQy1iXL19mypQprF27ltTUVEJCQnjyySeZOnUqHh4ewM0OyJMm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\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[960, 932, 891, 862, 830, 796, 771, 732]\n" + ] + } + ], + "source": [ + "order = np.argsort(level_list)\n", + "#PLOT distances\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"ref_center\"][i]/2 for i in order], label=\"ref center\", color=\"darkgray\")\n", + "#plt.plot([level_list[i] for i in order], [dist_list[\"pred center\"][i]/2 for i in order], label=\"center\", color=\"darkgray\")\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"ref_caudal\"][i]/2 for i in order], label=\"ref caudal\", color=\"darkgreen\")\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"ref_rostral\"][i]/2 for i in order], label=\"ref rostral\", color=\"firebrick\")\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"rostral\"][i]/2 for i in order], label=\"rostral\", linestyle=\"--\", color=\"firebrick\")\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"caudal\"][i]/2 for i in order], label=\"caudal\", linestyle=\"--\", color=\"darkgreen\")\n", + "#plt.plot([level_list[i] for i in order], [dist_list[\"without z\"][i] for i in order], label=\"center without Z\")\n", + "plt.title(f\"Euclidian dist formanen - X, ratio on predict (rostral, caudal): {RATIO}\")\n", + "plt.xlabel(\"Cervical level\")\n", + "plt.ylabel(\"mm\")\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "#plot ratio\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"ratio_caudal\"][i]/2 for i in order], label=\"ratio caudal\", color=\"darkgreen\")\n", + "plt.plot([level_list[i] for i in order], [dist_list[\"ratio_rostral\"][i]/2 for i in order], label=\"ratio rostral\", color=\"firebrick\")\n", + "plt.title(f\"Ratio real/prediction\")\n", + "plt.xlabel(\"Cervical level\")\n", + "plt.ylabel(\"mm\")\n", + "\n", + "plt.legend()\n", + "\n", + "plt.show()\n", + "\n", + "#plot ratio\n", + "plt.scatter([*range(2,len(z_ca)+2)], z_ca, label=\"ref caudal\", color=\"darkgreen\")\n", + "plt.scatter([*range(2,len(z_ro)+2)], z_ro, label=\"ref rostral\", color=\"firebrick\")\n", + "plt.scatter([*range(2,len(z_ro)+2)], z_cerv[:4], label=\"ref center\", color=\"darkgray\")\n", + "plt.scatter([*range(2,len(z_ca)+2)], [len_level[i][1] for i in range(2,6)], label=\"caudal\", marker=\"X\", color=\"darkgreen\")\n", + "plt.scatter([*range(2,len(z_ro)+2)], [len_level[i][0] for i in range(2,6)], label=\"rostral\", marker=\"X\", color=\"firebrick\")\n", + "plt.title(f\"Z slice\")\n", + "plt.xlabel(\"Cervical level\")\n", + "plt.ylabel(\"slice n°\")\n", + "plt.legend()\n", + "\n", + "plt.show()\n", + "print(z_cerv)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2023-05-16T19:33:27.723894Z", + "start_time": "2023-05-16T19:33:27.335126Z" + } + } + }, + { + "cell_type": "code", + "execution_count": 147, + "outputs": [ + { + "data": { + "text/plain": "{2: (975, 953, 964),\n 3: (939, 905, 922),\n 4: (913, 869, 891),\n 5: (867, 830, 848),\n 6: (842, 803, 822),\n 7: (820, 782, 801),\n 8: (811, 767, 789),\n 9: (788, 743, 765)}" + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len_level" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 148, + "id": "6286e55b-4af0-4a17-b0db-7f297fe8e432", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[960, 932, 891, 862, 830, 796, 771, 732]\n" + ] + } + ], + "source": [ + "cord_mask = np.copy(p50_mask)\n", + "for lvl in len_level:\n", + " level_r = int(len_level[lvl][0])\n", + " level_c = int(len_level[lvl][1])\n", + " cord_mask[:, :, level_r][cord_mask[:, :, level_r] > 0] = lvl\n", + " cord_mask[:, :, level_c][cord_mask[:, :, level_c] > 0] = lvl\n", + "cord_mask[:, :, :][cord_mask[:, :, :] == 1] = 0\n", + "test_img = nib.Nifti1Image(cord_mask, header=cord.header, affine=cord.affine)\n", + "nib.save(test_img, f'foramen_label_without_std.nii.gz') # TO CHANGE path output\n", + "\n", + "print(z_cerv)\n", + "cord_mask = np.copy(p50_mask)\n", + "for lvl in len_level:\n", + " level_r = int(len_level[lvl][2])\n", + " cord_mask[:, :, level_r][cord_mask[:, :, level_r] > 0] = lvl\n", + "cord_mask[:, :, :][cord_mask[:, :, :] == 1] = 0\n", + "test_img = nib.Nifti1Image(cord_mask, header=cord.header, affine=cord.affine)\n", + "nib.save(test_img, f'foramen_label_without_std_center.nii.gz') # TO CHANGE path output" + ] + }, + { + "cell_type": "markdown", + "id": "9053ac71-0120-419a-9d81-527666d8381a", + "metadata": {}, + "source": [ + "## Estimate with STD \n", + "Take smallest distance bewtenn SC centerline (shifted by average diameter at dorsal rootlet entry and intervertebral foramen) (Sandrine)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "566a8692-2fcf-41a6-ba83-84b1a565eb72", + "metadata": {}, + "outputs": [], + "source": [ + "z_ref = np.array(range(min(z_c), max(z_c) + 1))\n", + "z_c = z_ref\n", + "for i in range(len(x_f)):\n", + " # Get coordinates of intervertebral foramen\n", + " x = x_f[i]\n", + " y = y_f[i]\n", + " z = z_f[i]\n", + " # Get level\n", + " level = int(foramen_level.get_fdata()[x, y, z])\n", + " print('Level', level)\n", + " # Get correspondance of level number (2 --> C2, etc.)\n", + " seg = int2seg(level)\n", + " print(seg)\n", + " # Get mendez measures for the corresponding level\n", + " seg_df = df[df.Segment == seg]\n", + " RR = seg_df[seg_df.Mesure == \"IF to RR distance\"]\n", + " CR = seg_df[seg_df.Mesure == \"IF to CR distance\"]\n", + " W = seg_df.loc[seg_df.Mesure == \"Dorsal width\"].iloc[0]\n", + " w_mean = W.MEAN # get mean value of dorsal width\n", + " rr_mean = RR.MEAN.to_list()[0] # Get mean distance from rostral rootlet to interverteral foramen\n", + " cr_mean = CR.MEAN.to_list()[0] # Get mean distance from caudal rootlet to interverteral foramen\n", + " rr_std = RR.STD.to_list()[0] # Get std for mean distance from rostral rootlet to interverteral foramen\n", + " cr_std = CR.STD.to_list()[0] # Get std for mean distance from caudal rootlet to interverteral foramen\n", + " # Get distance for +/- 95% probability\n", + " min_rr = rr_mean - 2 * rr_std\n", + " max_rr = rr_mean + 2 * rr_std\n", + " min_cr = cr_mean - 2 * cr_std\n", + " max_cr = cr_mean + 2 * cr_std\n", + " print(\"Rostral dist\", max_rr, rr_mean, min_rr)\n", + " print(\"Caudal dist\", max_cr, cr_mean, min_cr)\n", + " # Compute the 3D euclidean distance between intervertebral foramen and the back of the SC at dorsal width/2 lateral offset ( in mm)\n", + " new_x = (x_c - w_mean)[0] # x value centerline - dorsal width /2 offset\n", + " new_z = min(\n", + " np.where(cord.get_fdata()[int(new_x), :, z] > 0)[0]) # y value of the SC border at x = new_x and z = foramen\n", + " distance_foramen_ctl = np.sqrt((x_c - w_mean - x) ** 2 + (new_z - y) ** 2 + (\n", + " z_c - z) ** 2) * 0.5 # 0.5 --> pix dim of PAM50 TODO: remove hardcode\n", + " # min std : most caudal point of the probabilistic distribution \n", + " # max std : most rostral point of the probabilistic distribution \n", + " # List with estimation of z value for rostral and caudal (min std, max std, mean)\n", + " all_level = []\n", + " for distance in [max_rr, min_rr, rr_mean, max_cr, min_cr, cr_mean]:\n", + " # Get the closest distance to the rostral rootlet compared to the Mendez value\n", + " rostral_diff = np.array([np.abs(i - distance) for i in distance_foramen_ctl])\n", + " # Only use slices higher than the foramen\n", + " estimate = np.argmin(rostral_diff[-len(z_c[z_c > z]) - 1::])\n", + " z_ref_i = z_ref[-len(z_c[z_c > z]) - 1::]\n", + " # Get the slice number (adjusted since the centerline starts at slice 55 not 0)\n", + " value = z_ref_i[estimate]\n", + " all_level.append(int(value))\n", + "\n", + " print('Rostral', rr_mean, distance_foramen_ctl[-len(z_c[z_c > z]) - 1::][rostral], all_level[2], z)\n", + " print('Caudal', cr_mean, distance_foramen_ctl[-len(z_c[z_c > z]) - 1::][caudal], all_level[5], z)\n", + " # Set colored label from 0 (the least probable) to 20 (mean value)\n", + " cord_mask = np.copy(p50_mask)\n", + " # Max to mean rostral\n", + " for rng in range(all_level[2], all_level[0]):\n", + " if abs(all_level[0] - all_level[2]) != 0:\n", + " proba = 19 * abs(rng - all_level[2]) / (abs(all_level[0] - all_level[2])) + 1\n", + " cord_mask[:, :, rng][cord_mask[:, :, rng] > 0] = 20 - proba\n", + " # Mean to min rostral \n", + " for rng in range(all_level[1], all_level[2]):\n", + " if abs(all_level[2] - all_level[1]) != 0:\n", + " proba = 19 * abs(rng - all_level[1]) / (abs(all_level[2] - all_level[1])) + 1\n", + " cord_mask[:, :, rng][cord_mask[:, :, rng] > 0] = proba\n", + " # Max to mean caudal\n", + " for rng in range(all_level[5], all_level[3]):\n", + " if abs(all_level[3] - all_level[5]) != 0:\n", + " proba = 19 * abs(rng - all_level[5]) / (abs(all_level[3] - all_level[5])) + 1\n", + " cord_mask[:, :, rng][cord_mask[:, :, rng] > 0] = 20 - proba\n", + " # Mean to min caudal\n", + " for rng in range(all_level[4], all_level[5]):\n", + " if abs(all_level[5] - all_level[4]) != 0:\n", + " proba = 19 * abs(rng - all_level[4]) / (abs(all_level[5] - all_level[4])) + 1\n", + " cord_mask[:, :, rng][cord_mask[:, :, rng] > 0] = proba\n", + " # Mean value caudal and rostral = 20\n", + " for l in (all_level[2], all_level[5]):\n", + " cord_mask[:, :, l][cord_mask[:, :, l] > 0] = 20\n", + " cord_mask[:, :, :][cord_mask[:, :, :] == 1] = 0\n", + " test_img = nib.Nifti1Image(cord_mask, header=cord.header, affine=cord.affine)\n", + " nib.save(test_img, f'Outputs/spinal_level_std_{level}.nii.gz') # TO CHANGE path output" + ] + } + ], + "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.8.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/code/test_foramen.nii.gz b/code/test_foramen.nii.gz new file mode 100644 index 0000000..6b75627 Binary files /dev/null and b/code/test_foramen.nii.gz differ diff --git a/spinal_levels/README.md b/spinal_levels/README.md new file mode 100644 index 0000000..0e6de60 --- /dev/null +++ b/spinal_levels/README.md @@ -0,0 +1,78 @@ +### PAM50 Levels + +These level files are a slightly modified copy of the [level files](https://github.com/PhillipsLab/pam50/tree/main/Spinal%20Cord%20Levels%20NIfTI) produced by the [Phillips Lab](https://github.com/PhillipsLab): + +Modifications include: + +- Change data type from float64 to float32 +- Copy header from current PAM50/spinal_levels +- Rename files + +To reproduce the modified files, please run `git checkout e854bbad9ab550fd93acabeaf43c97cf66b3a4e5`, then run the following script in your terminal: + +```bash +#!/bin/bash +# +# Process Phillips Lab PAM50 spinal levels to match existing PAM50 conventions. +# +# Usage: +# ./process_spinal_levels.sh +# 1. Clone https://github.com/spinalcordtoolbox/PAM50 +# 2. Checkout commit e854bbad9ab550fd93acabeaf43c97cf66b3a4e5 +# 3. Run inside /PAM50/spinal_levels_PhillipsLab/ +# Authors: Sandrine Bédard, Joshua Newton + +set -x +# Immediately exit if error +set -e -o pipefail + +# Exit if user presses CTRL+C (Linux) or CMD+C (OSX) +trap "echo Caught Keyboard Interrupt within script. Exiting now.; exit" INT + +start=`date +%s` + +# Add missing info to the `info_label.txt` file to account for newly-added levels +file_info_label=$(realpath "../spinal_levels/info_label.txt") +extra_spinal_levels="20, Spinal level L1, spinal_level_21.nii.gz +21, Spinal level L2, spinal_level_22.nii.gz +22, Spinal level L3, spinal_level_23.nii.gz +23, Spinal level L4, spinal_level_24.nii.gz +24, Spinal level L5, spinal_level_25.nii.gz" +if [[ $(tail -c 23 "$file_info_label") == "spinal_level_20.nii.gz" ]] +then + echo "$extra_spinal_levels" >> "$file_info_label" +fi + +# Retrieve input params +PATH_IN=$PWD +PATH_OUT="$PATH_IN/spinal_levels_processed" +for FILE in *.nii.gz; do + file=${FILE/%".nii.gz"} + echo $file + mkdir -p $PATH_OUT/${file}_processed + rsync -avzh $FILE $PATH_OUT/${file}_processed + cd $PATH_OUT/${file}_processed + # Change file type + sct_image -i ${file}.nii.gz -type float32 -o ${file}_float32.nii.gz + file="${file}_float32" + # Copy header of SCT PAM50 template + sct_image -i $SCT_DIR/data/PAM50/spinal_levels/spinal_level_02.nii.gz -copy-header $file.nii.gz -o ${file}_header.nii.gz + file="${file}_header" + # Rename the file to the filename corresponding to the level (specified by `info_label.txt`) + level=$(echo "$file" | cut -d '_' -f 3) + file_out=$(grep -F "$level," $file_info_label | cut -d "," -f 3) + cp $file.nii.gz $file_out + cd "$PATH_IN" + echo $PATH_IN +done + +# Display useful info for the log +end=`date +%s` +runtime=$((end-start)) +echo +echo "~~~" +echo "SCT version: `sct_version`" +echo "Ran on: `uname -nsr`" +echo "Duration: $(($runtime / 3600))hrs $((($runtime / 60) % 60))min $(($runtime % 60))sec" +echo "~~~" +``` diff --git a/spinal_levels/info_label.txt b/spinal_levels/info_label.txt index a3adc03..383d5e6 100644 --- a/spinal_levels/info_label.txt +++ b/spinal_levels/info_label.txt @@ -1,4 +1,4 @@ -# Spinal levels labels - generated on 2016-11-28 +# Spinal levels labels - generated on 2023-02-13 # Keyword=IndivLabels (Please DO NOT change this line) # ID, name, file 0, Spinal level C1, spinal_level_01.nii.gz @@ -21,3 +21,8 @@ 17, Spinal level T10, spinal_level_18.nii.gz 18, Spinal level T11, spinal_level_19.nii.gz 19, Spinal level T12, spinal_level_20.nii.gz +20, Spinal level L1, spinal_level_21.nii.gz +21, Spinal level L2, spinal_level_22.nii.gz +22, Spinal level L3, spinal_level_23.nii.gz +23, Spinal level L4, spinal_level_24.nii.gz +24, Spinal level L5, spinal_level_25.nii.gz \ No newline at end of file diff --git a/spinal_levels/spinal_level_02.nii.gz b/spinal_levels/spinal_level_02.nii.gz index c1b17cd..31ce64c 100644 Binary files a/spinal_levels/spinal_level_02.nii.gz and b/spinal_levels/spinal_level_02.nii.gz differ diff --git a/spinal_levels/spinal_level_03.nii.gz b/spinal_levels/spinal_level_03.nii.gz index 5dae653..6559947 100644 Binary files a/spinal_levels/spinal_level_03.nii.gz and b/spinal_levels/spinal_level_03.nii.gz differ diff --git a/spinal_levels/spinal_level_04.nii.gz b/spinal_levels/spinal_level_04.nii.gz index 6fd556a..7c51ae2 100644 Binary files a/spinal_levels/spinal_level_04.nii.gz and b/spinal_levels/spinal_level_04.nii.gz differ diff --git a/spinal_levels/spinal_level_05.nii.gz b/spinal_levels/spinal_level_05.nii.gz index 5b68f5c..24aff26 100644 Binary files a/spinal_levels/spinal_level_05.nii.gz and b/spinal_levels/spinal_level_05.nii.gz differ diff --git a/spinal_levels/spinal_level_06.nii.gz b/spinal_levels/spinal_level_06.nii.gz index 60cba90..b1ce16b 100644 Binary files a/spinal_levels/spinal_level_06.nii.gz and b/spinal_levels/spinal_level_06.nii.gz differ diff --git a/spinal_levels/spinal_level_07.nii.gz b/spinal_levels/spinal_level_07.nii.gz index 5f455db..3b47881 100644 Binary files a/spinal_levels/spinal_level_07.nii.gz and b/spinal_levels/spinal_level_07.nii.gz differ diff --git a/spinal_levels/spinal_level_08.nii.gz b/spinal_levels/spinal_level_08.nii.gz index 70c48fa..d64b4d3 100644 Binary files a/spinal_levels/spinal_level_08.nii.gz and b/spinal_levels/spinal_level_08.nii.gz differ diff --git a/spinal_levels/spinal_level_09.nii.gz b/spinal_levels/spinal_level_09.nii.gz index 9b8b796..d5a1915 100644 Binary files a/spinal_levels/spinal_level_09.nii.gz and b/spinal_levels/spinal_level_09.nii.gz differ diff --git a/spinal_levels/spinal_level_10.nii.gz b/spinal_levels/spinal_level_10.nii.gz index b5adc1e..c52b133 100644 Binary files a/spinal_levels/spinal_level_10.nii.gz and b/spinal_levels/spinal_level_10.nii.gz differ diff --git a/spinal_levels/spinal_level_11.nii.gz b/spinal_levels/spinal_level_11.nii.gz index b096e3f..36c7a04 100644 Binary files a/spinal_levels/spinal_level_11.nii.gz and b/spinal_levels/spinal_level_11.nii.gz differ diff --git a/spinal_levels/spinal_level_12.nii.gz b/spinal_levels/spinal_level_12.nii.gz index 907f7d2..a2fc0ca 100644 Binary files a/spinal_levels/spinal_level_12.nii.gz and b/spinal_levels/spinal_level_12.nii.gz differ diff --git a/spinal_levels/spinal_level_13.nii.gz b/spinal_levels/spinal_level_13.nii.gz index e3a27a0..112cf7c 100644 Binary files a/spinal_levels/spinal_level_13.nii.gz and b/spinal_levels/spinal_level_13.nii.gz differ diff --git a/spinal_levels/spinal_level_14.nii.gz b/spinal_levels/spinal_level_14.nii.gz index 8d204b0..cb0447d 100644 Binary files a/spinal_levels/spinal_level_14.nii.gz and b/spinal_levels/spinal_level_14.nii.gz differ diff --git a/spinal_levels/spinal_level_15.nii.gz b/spinal_levels/spinal_level_15.nii.gz index 9930a4b..1769847 100644 Binary files a/spinal_levels/spinal_level_15.nii.gz and b/spinal_levels/spinal_level_15.nii.gz differ diff --git a/spinal_levels/spinal_level_16.nii.gz b/spinal_levels/spinal_level_16.nii.gz index d9d972f..372614a 100644 Binary files a/spinal_levels/spinal_level_16.nii.gz and b/spinal_levels/spinal_level_16.nii.gz differ diff --git a/spinal_levels/spinal_level_17.nii.gz b/spinal_levels/spinal_level_17.nii.gz index efc662b..af4916e 100644 Binary files a/spinal_levels/spinal_level_17.nii.gz and b/spinal_levels/spinal_level_17.nii.gz differ diff --git a/spinal_levels/spinal_level_18.nii.gz b/spinal_levels/spinal_level_18.nii.gz index 2bd66a6..5d9a97c 100644 Binary files a/spinal_levels/spinal_level_18.nii.gz and b/spinal_levels/spinal_level_18.nii.gz differ diff --git a/spinal_levels/spinal_level_19.nii.gz b/spinal_levels/spinal_level_19.nii.gz index 471f9cc..bf870dd 100644 Binary files a/spinal_levels/spinal_level_19.nii.gz and b/spinal_levels/spinal_level_19.nii.gz differ diff --git a/spinal_levels/spinal_level_20.nii.gz b/spinal_levels/spinal_level_20.nii.gz index 7b56d85..3ce02b1 100644 Binary files a/spinal_levels/spinal_level_20.nii.gz and b/spinal_levels/spinal_level_20.nii.gz differ diff --git a/spinal_levels/spinal_level_21.nii.gz b/spinal_levels/spinal_level_21.nii.gz new file mode 100644 index 0000000..1cb87cc Binary files /dev/null and b/spinal_levels/spinal_level_21.nii.gz differ diff --git a/spinal_levels/spinal_level_22.nii.gz b/spinal_levels/spinal_level_22.nii.gz new file mode 100644 index 0000000..60a1724 Binary files /dev/null and b/spinal_levels/spinal_level_22.nii.gz differ diff --git a/spinal_levels/spinal_level_23.nii.gz b/spinal_levels/spinal_level_23.nii.gz new file mode 100644 index 0000000..38aab64 Binary files /dev/null and b/spinal_levels/spinal_level_23.nii.gz differ diff --git a/spinal_levels/spinal_level_24.nii.gz b/spinal_levels/spinal_level_24.nii.gz new file mode 100644 index 0000000..c411c92 Binary files /dev/null and b/spinal_levels/spinal_level_24.nii.gz differ diff --git a/spinal_levels/spinal_level_25.nii.gz b/spinal_levels/spinal_level_25.nii.gz new file mode 100644 index 0000000..d67ae33 Binary files /dev/null and b/spinal_levels/spinal_level_25.nii.gz differ