ARMED-MixedEffectsDL / adni_t1w / site_differences.ipynb
site_differences.ipynb
Raw
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Look for site-level differences in imaging parameters and measurements. Generate a table with this aggregated site-level information."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import re\n",
    "import glob\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from armed.misc import expand_data_path"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Diag', 'T1w_Path', 'Site', 'Model', 'Series_Description',\n",
       "       'Slice_Thickness', 'TE', 'TR', 'Flip_Angle', 'Voxel_Size_X',\n",
       "       'Voxel_Size_Y', 'Voxel_Size_Z', 'Hippocampus_Mean_Intensity',\n",
       "       'Brain_Mean_Intensity', 'Brain_SD_Intensity',\n",
       "       'Hippocampus_Edge_Contrast', 'Manufacturer', 'TI'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "strDataPath = expand_data_path('ADNI23_sMRI/image_info_quality_metrics.csv')\n",
    "df = pd.read_csv(strDataPath, index_col=0)\n",
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# fill missing manufacturers\n",
    "df.loc[df['Model'] == 'Skyra_fit', 'Manufacturer'] = 'Siemens'\n",
    "df.loc[df['Model'] == 'Prisma_fit', 'Manufacturer'] = 'Siemens'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Parse subject ID from image paths\n",
    "def get_id(x):\n",
    "    return re.search(r'sub-(\\d*)_', x)[1]\n",
    "\n",
    "df['Subject'] = df['T1w_Path'].apply(get_id)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Count number of images per site\n",
    "dfSiteCounts = df['Site'].value_counts(ascending=False).to_frame('Images')\n",
    "dfSiteCounts.index.name = 'Site'\n",
    "sortorder = dfSiteCounts.index\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(16, 3))\n",
    "sns.barplot(x=dfSiteCounts.index, y=dfSiteCounts['Images'], order=sortorder, ax=ax, color='C0')\n",
    "ax.tick_params(axis='x', labelsize=7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1152x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Count number of subjects per site\n",
    "dfSubjects = df.loc[~df['Subject'].duplicated()]\n",
    "\n",
    "dfSiteSubjectCounts = dfSubjects['Site'].value_counts(ascending=False).to_frame('Subjects')\n",
    "dfSiteSubjectCounts.index.name = 'Site'\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(16, 3))\n",
    "sns.barplot(x=dfSiteSubjectCounts.index, y=dfSiteSubjectCounts['Subjects'], order=sortorder, ax=ax, color='C0')\n",
    "ax.tick_params(axis='x', labelsize=7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='Manufacturer', ylabel='Site'>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 360x864 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Compute frequency of scanner manufacturers at each site\n",
    "dfManuFreq = df.groupby('Site')['Manufacturer'].value_counts(normalize=True).to_frame('Frequency')\n",
    "dfManuFreq.reset_index(inplace=True)\n",
    "dfManuFreqWide = pd.pivot(dfManuFreq, index='Site', columns='Manufacturer')\n",
    "dfManuFreqWide.columns = dfManuFreqWide.columns.droplevel(0)\n",
    "dfManuFreqWide.fillna(0, inplace=True)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5, 12))\n",
    "sns.heatmap(dfManuFreqWide, ax=ax)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Model</th>\n",
       "      <th>Series_Description</th>\n",
       "      <th>TR</th>\n",
       "      <th>TE</th>\n",
       "      <th>TI</th>\n",
       "      <th>Flip_Angle</th>\n",
       "      <th>Voxel_Size_X</th>\n",
       "      <th>Voxel_Size_Y</th>\n",
       "      <th>Voxel_Size_Z</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Site</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Intera</td>\n",
       "      <td>MPRAGE SENSE2</td>\n",
       "      <td>0.006762</td>\n",
       "      <td>0.003112</td>\n",
       "      <td>0.9</td>\n",
       "      <td>9.0</td>\n",
       "      <td>1.199997</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>1.054688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Signa HDxt</td>\n",
       "      <td>Accelerated SAG IR-SPGR</td>\n",
       "      <td>0.006964</td>\n",
       "      <td>0.002832</td>\n",
       "      <td>0.4</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1.199997</td>\n",
       "      <td>1.054700</td>\n",
       "      <td>1.054700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>DISCOVERY MR750</td>\n",
       "      <td>Accelerated Sag IR-FSPGR</td>\n",
       "      <td>0.007332</td>\n",
       "      <td>0.003036</td>\n",
       "      <td>0.4</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1.199997</td>\n",
       "      <td>1.015600</td>\n",
       "      <td>1.015600</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Ingenia</td>\n",
       "      <td>MPRAGE SENSE2</td>\n",
       "      <td>0.006744</td>\n",
       "      <td>0.003106</td>\n",
       "      <td>0.9</td>\n",
       "      <td>9.0</td>\n",
       "      <td>1.200012</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>1.054688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Signa HDxt</td>\n",
       "      <td>Accelerated SAG IR-SPGR</td>\n",
       "      <td>0.006964</td>\n",
       "      <td>0.002832</td>\n",
       "      <td>0.4</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1.199997</td>\n",
       "      <td>1.054700</td>\n",
       "      <td>1.054700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>301</th>\n",
       "      <td>Ingenia</td>\n",
       "      <td>VWIP Coronal 3D Accelerated MPRAGE</td>\n",
       "      <td>0.006536</td>\n",
       "      <td>0.002944</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>305</th>\n",
       "      <td>Achieva dStream</td>\n",
       "      <td>Sagittal 3D Accelerated MPRAGE</td>\n",
       "      <td>0.006512</td>\n",
       "      <td>0.002940</td>\n",
       "      <td>NaN</td>\n",
       "      <td>9.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>305</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.006529</td>\n",
       "      <td>0.002941</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>341</th>\n",
       "      <td>Prisma</td>\n",
       "      <td>Accelerated Sagittal MPRAGE</td>\n",
       "      <td>2.300000</td>\n",
       "      <td>0.002980</td>\n",
       "      <td>0.9</td>\n",
       "      <td>9.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>941</th>\n",
       "      <td>Prisma_fit</td>\n",
       "      <td>Accelerated Sagittal MPRAGE</td>\n",
       "      <td>2.300000</td>\n",
       "      <td>0.002950</td>\n",
       "      <td>0.9</td>\n",
       "      <td>9.0</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>1.054688</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>74 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                Model                  Series_Description        TR        TE  \\\n",
       "Site                                                                            \n",
       "2              Intera                       MPRAGE SENSE2  0.006762  0.003112   \n",
       "3          Signa HDxt             Accelerated SAG IR-SPGR  0.006964  0.002832   \n",
       "5     DISCOVERY MR750           Accelerated Sag IR-FSPGR   0.007332  0.003036   \n",
       "6             Ingenia                       MPRAGE SENSE2  0.006744  0.003106   \n",
       "7          Signa HDxt             Accelerated SAG IR-SPGR  0.006964  0.002832   \n",
       "...               ...                                 ...       ...       ...   \n",
       "301           Ingenia  VWIP Coronal 3D Accelerated MPRAGE  0.006536  0.002944   \n",
       "305   Achieva dStream      Sagittal 3D Accelerated MPRAGE  0.006512  0.002940   \n",
       "305               NaN                                 NaN  0.006529  0.002941   \n",
       "341            Prisma         Accelerated Sagittal MPRAGE  2.300000  0.002980   \n",
       "941        Prisma_fit         Accelerated Sagittal MPRAGE  2.300000  0.002950   \n",
       "\n",
       "       TI  Flip_Angle  Voxel_Size_X  Voxel_Size_Y  Voxel_Size_Z  \n",
       "Site                                                             \n",
       "2     0.9         9.0      1.199997      1.054688      1.054688  \n",
       "3     0.4        11.0      1.199997      1.054700      1.054700  \n",
       "5     0.4        11.0      1.199997      1.015600      1.015600  \n",
       "6     0.9         9.0      1.200012      1.054688      1.054688  \n",
       "7     0.4        11.0      1.199997      1.054700      1.054700  \n",
       "...   ...         ...           ...           ...           ...  \n",
       "301   NaN         9.0      0.500000      1.000000      0.500000  \n",
       "305   NaN         9.0      1.000000      1.000000      1.000000  \n",
       "305   NaN         NaN           NaN           NaN           NaN  \n",
       "341   0.9         9.0      1.000000      1.000000      1.000000  \n",
       "941   0.9         9.0      1.000000      1.054688      1.054688  \n",
       "\n",
       "[74 rows x 9 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find most common scanner model, sequence description, TR, TE, TI, Flip angle, etc. per site\n",
    "lsCols = ['Model', 'Series_Description', 'TR', 'TE', 'TI', 'Flip_Angle', 'Voxel_Size_X', 'Voxel_Size_Y', 'Voxel_Size_Z']\n",
    "dfModelSeq = df.groupby('Site')[lsCols].apply(pd.DataFrame.mode)\n",
    "dfModelSeq.index = dfModelSeq.index.droplevel(level=1)\n",
    "dfModelSeq"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Hippocampus_Mean_Intensity</th>\n",
       "      <th>Hippocampus_Edge_Contrast</th>\n",
       "      <th>Brain_Mean_Intensity</th>\n",
       "      <th>Brain_SD_Intensity</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Site</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1176.046971</td>\n",
       "      <td>67.500816</td>\n",
       "      <td>997.589619</td>\n",
       "      <td>359.735947</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1106.455835</td>\n",
       "      <td>44.594744</td>\n",
       "      <td>1133.725240</td>\n",
       "      <td>414.571945</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1158.123064</td>\n",
       "      <td>98.544132</td>\n",
       "      <td>1382.090775</td>\n",
       "      <td>564.550907</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>43211.193158</td>\n",
       "      <td>2622.015560</td>\n",
       "      <td>44236.603801</td>\n",
       "      <td>15138.634079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>935.856207</td>\n",
       "      <td>52.804449</td>\n",
       "      <td>992.447567</td>\n",
       "      <td>401.733180</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>177</th>\n",
       "      <td>49861.174845</td>\n",
       "      <td>1233.472511</td>\n",
       "      <td>42810.020732</td>\n",
       "      <td>13708.856099</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>301</th>\n",
       "      <td>60116.823520</td>\n",
       "      <td>3466.709378</td>\n",
       "      <td>59763.031315</td>\n",
       "      <td>19354.493565</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>305</th>\n",
       "      <td>118214.169413</td>\n",
       "      <td>5026.601522</td>\n",
       "      <td>112824.298807</td>\n",
       "      <td>33423.488819</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>341</th>\n",
       "      <td>157.031679</td>\n",
       "      <td>6.552616</td>\n",
       "      <td>154.692272</td>\n",
       "      <td>49.842128</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>941</th>\n",
       "      <td>231.771450</td>\n",
       "      <td>10.836533</td>\n",
       "      <td>213.175313</td>\n",
       "      <td>73.957573</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>63 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      Hippocampus_Mean_Intensity  Hippocampus_Edge_Contrast  \\\n",
       "Site                                                          \n",
       "2                    1176.046971                  67.500816   \n",
       "3                    1106.455835                  44.594744   \n",
       "5                    1158.123064                  98.544132   \n",
       "6                   43211.193158                2622.015560   \n",
       "7                     935.856207                  52.804449   \n",
       "...                          ...                        ...   \n",
       "177                 49861.174845                1233.472511   \n",
       "301                 60116.823520                3466.709378   \n",
       "305                118214.169413                5026.601522   \n",
       "341                   157.031679                   6.552616   \n",
       "941                   231.771450                  10.836533   \n",
       "\n",
       "      Brain_Mean_Intensity  Brain_SD_Intensity  \n",
       "Site                                            \n",
       "2               997.589619          359.735947  \n",
       "3              1133.725240          414.571945  \n",
       "5              1382.090775          564.550907  \n",
       "6             44236.603801        15138.634079  \n",
       "7               992.447567          401.733180  \n",
       "...                    ...                 ...  \n",
       "177           42810.020732        13708.856099  \n",
       "301           59763.031315        19354.493565  \n",
       "305          112824.298807        33423.488819  \n",
       "341             154.692272           49.842128  \n",
       "941             213.175313           73.957573  \n",
       "\n",
       "[63 rows x 4 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Compute median hippocampus intensity/contrast, whole brain intensity per site\n",
    "lsCols = ['Hippocampus_Mean_Intensity', 'Hippocampus_Edge_Contrast', 'Brain_Mean_Intensity', 'Brain_SD_Intensity']\n",
    "dfImageMetrics = df.groupby('Site')[lsCols].apply(pd.DataFrame.median)\n",
    "dfImageMetrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "good    2217\n",
       "bad      103\n",
       "Name: Skullstripping_Quality, dtype: int64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Based on previous manual inspection, determine which images failed skullstripping\n",
    "lsGoodSlices = glob.glob('/archive/bioinformatics/DLLab/KevinNguyen/data/ADNI23_sMRI/right_hippocampus_slices_2pctnorm/coronal_MNI-6_qc/good/*.png')\n",
    "lsGoodSlices = [os.path.basename(s) for s in lsGoodSlices]\n",
    "lsBadSlices = glob.glob('/archive/bioinformatics/DLLab/KevinNguyen/data/ADNI23_sMRI/right_hippocampus_slices_2pctnorm/coronal_MNI-6_qc/bad/*.png')\n",
    "lsBadSlices = [os.path.basename(s) for s in lsBadSlices]\n",
    "\n",
    "lsQC = []\n",
    "for p in df['T1w_Path'].values:\n",
    "    n = os.path.basename(p)\n",
    "    n = n.replace('_run-01', '')\n",
    "    if (n.replace('T1w.nii.gz', 'CN.png') in lsGoodSlices) | (n.replace('T1w.nii.gz', 'Dementia.png') in lsGoodSlices):\n",
    "        lsQC += ['good']\n",
    "    elif (n.replace('T1w.nii.gz', 'CN.png') in lsBadSlices) | (n.replace('T1w.nii.gz', 'Dementia.png') in lsBadSlices):\n",
    "        lsQC += ['bad']\n",
    "    else:\n",
    "        print(n)\n",
    "df['Skullstripping_Quality'] = lsQC\n",
    "df['Skullstripping_Quality'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAADMCAYAAABKtU/lAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqhUlEQVR4nO3debyVZbnw8d8VqJgKqNBwlCkcElERUEsc8JQN5nzUnHJA5RhhdlLLzNcp9ah5ekvFytfZtEk7ieRUHa0sTcEkFSU9HRPKk2JiIqKQ1/vHWuDaizU8e8tisza/7+ezP3s9z7qvdV/P/Yz3eoYVmYkkSZIkSau6d3R3ApIkSZIkFWEHVpIkSZLUFuzASpIkSZLagh1YSZIkSVJbsAMrSZIkSWoLdmAlSZIkSW2hd3cn0FkDBgzIoUOHdncakiRJkqQWmDFjxrzMHFjrvbbrwA4dOpTp06d3dxqSJEmSpBaIiD/Ve89LiCVJkiRJbcEOrCRJkiSpLbSsAxsRV0fE8xHxWJ33IyIuiYinI+L3ETG6VblIkiRJktpfK++BvRa4DLi+zvsfBzYt/+0AfLP8v9MWL17M3LlzWbRoUVfCtYrp06cPG2+8MWussUZ3pyJJkiRpFdKyDmxm/jIihjYosg9wfWYm8EBE9I+I92bmc52ta+7cuay33noMHTqUiOhqyloFZCYvvvgic+fOZdiwYd2djiRJkqRVSHc+hXgjYE7F8NzyuOU6sBExEZgIMHjw4OU+aNGiRYU7r7PmzFtu3IhBA7oUVzR2ZeqOPFd0m26x8Ya88MILbzuvamNOqX0xwIyvHtGSuHqxrYzrqu5om5WtXdq0ndim9a3sdb9d2qY7tqdd1U7bxXZZ3tolrju0yzS6Dq86cfVie9K6X09bPMQpM6/IzLGZOXbgwJo/B+SZ1x7EeSlJkiSplu7swP4ZGFQxvHF5nCRJkiRJy+nODuxU4Ijy04g/ALzclftfGznvvPPYcsst2XrrrRk1ahS//e1v2X3H0bz0txcLf8bQoUOZN690qevY9w9pWPb8889v+P4ee+zB/PnzC9dd6Vvf+hbXX1/veVhd8/LLL3PEEUewySabMHz4cA477DBeeumlLn/eaZ+fzF0/mQrAsccey6xZs4Dm7SJJkiRJRbTsHtiI+C4wHhgQEXOBM4E1ADLzW8DtwB7A08BC4OgVWf/999/PtGnTePjhh1lrrbWYN28eb7zxxoqsYjnnn38+p512Wodxs+bMIzPJTC7+9vX85ZUl/OWVeZ2+J/X4449fkakCcMwxxzBy5MhlHeMzzzyTo446iltvvfVtf/aVV1657HWtdpG0Yq0O9yVJkiS18inEhzR5P4HPtKr+5557jgEDBrDWWmsBMGBAxw7jokWvceLEo/jwx/ZkyLvXZ/r06Vx22WUA7Lnnnpx88smMHz++5me/8Nf/5aTPHMeCBa/QO+Cb3/wmP/nJT3jttdcYNWoUW265Jeeddx4f/ehHef/IUTz+6Ey+dd13OfKgffjBtJ+y8NVX2X/3nRgzZgwPP/wwW265Jddffz3vfOc7GTp0KAcddBB33HEHa6+9NjfddBObbLIJZ511Fuuuu+6yvHbYYQfuuece5s+fz1VXXcXOO+/MwoUL+fynj+Gp2U8ybPgmPP/X/+X0r1zIyG1GLTcNTz/9NDNmzOD73//+snFnnHEGw4cPZ/bs2Tz33HNcfPHFTJs2DYDJkyczduxYjjrqKM455xxuu+02XnvtNXbccUdOPP285e5bHT9+PBdffDE333xzh3YZPnw4G2ywAZ/73OcA+MZF57HBhgP41DH/2pXZLElN2WGuz7aRJLWbtniIU1d85CMfYc6cOWy22WZMmjSJX/ziF8veW/jqq3zm6MPZY+/9OfDQT3X6s39y648Yt+tu/OjOe5k5cyajRo3iggsuYO211+aRRx7hxhtvBOCpp57i4COOZurP7+OfNh7U4TNmz57NpEmTeOKJJ+jbty+XX375svf69evHo48+yuTJk5d19KotWbKEBx98kK9//eucffbZAFx++eX07def2/7r15xw8qnMenRm3WmYNWsWo0aNolevXsvG9erVi2233ZYnnnii4fRPnjyZhx56iMcee4zXXnuNe392d92y1e0yYcKEZWd833zzTe6Y+mP22v/AhvVJkiRJEnTvz+i01LrrrsuMGTP41a9+xT333MMnP/lJLrjgAgAmH3sExxw/mT33O6BLnz1ym1GcfvKJLFm8hOOOPJRRo0bVLDdkyBC2GT225nuDBg1i3LhxABx++OFccsklnHzyyQAccsghzJozj2122p3Pnvg5Zs2ZxwsvL+TVJW+d5dx///0BGDNmDM888wwA9913H/scchQAm26+BZttMaJL09fMPffcw0UXXcTChQv529/+xoCNhrLb7h8tFDt06FA23HBDfve73/HgY3/g/VuOpP/6G7QkT626POsjSZKkruixZ2ChdEZx/PjxnH322Vx22WXccsstAGw7dnvuu/e/KF3FDL179+bNN99cFrdo0aKGnzt2hx25/oe38a73vJejjjqq7sOV1llnnbqfUX3JbeVwvdeVll4a3atXL5YsWdIw31pGjBjBI4880mG633zzTWbOnMno0aPrtsmiRYuYNGkSN998M48++ijHHXccb7z+eqfqPvbYY7n22mv58Q++y/6fPLTTuUuSJElaPfXYDuzs2bN56qmnlg0/8sgjDBlSeorwCSd9kb79+vGV078IlM4KLu3MzZkzhwcffLDhZ/9l7hw2HDiQAw/9FMceeywPP/wwAGussQaLFy8ulN+zzz7L/fffD8BNN93ETjvttOy9pfel3nnbj+uewa1l3Lhx3DWt9ACmp/8wm6eerH8p8CabbMK2227Lueeeu2zcueeey4c+9CEGDx7MkCFDmDVrFq+//jrz58/n5z//OfBWR3bAgAEsWLCAm2++uWle1e2y3377ceedd/LYzEcYt+s/F54+NTfmlOtr/kmSJEk9QY+9hHjBggWccMIJzJ8/n969e7PJJptwxRVX8J+3ln7m5Utnn8/pJ3+Wi887m6u+eQnDhg1jxIgRbLHFFowePbrhZz94/6+55ttT6L1Gbwas33/ZGdiJEyey9dZbM3r0aM4777yGn7H55pszZcoUJkyYwIgRI/j0pz+97L2XXnqJ/T6yK2usuSZfvezbhad50qRJ7Hfgwez1z+N43yabMnyzzVmv73p1y1999dWccMIJDB8+nL///e9st9123HbbbUDpEueDDjqIkSNHMmzYMLbddlsA+vfvz3HHHcfIkSN5z3vew3bbbdc0r8p2ufHGG1lzzTXZbbfdWPKONTvcgytJktTOVvZT3aXVUY/twI4ZM4bf/OY3y43/6W8eXvb6vP+4FChdprv0wUvVlt5f+vyceUx/8k8A7Hvgwex74MEAHX4O58ILL+TCCy9cNvzYY48xa8685epe+Oqr9O7dm+985zs16zzllFM4cvIpHcZ95vNfWPb63nvvXfZ6wIABy3Ls06cPF37jm6zVpw/PPvM/HHvYAbx3o44Pj6rUv39/brjhBqB0xvoTn/gEd911F3vssQcAF110ERdd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",
      "text/plain": [
       "<Figure size 1152x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "dfQualityPct = (df.groupby('Site')['Skullstripping_Quality']).value_counts(normalize=True)\n",
    "dfQualityPct = dfQualityPct.to_frame('Percentage')\n",
    "dfQualityPct.reset_index(inplace=True)\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(16, 3))\n",
    "sns.barplot(data=dfQualityPct, x='Site', y='Percentage', hue='Skullstripping_Quality', order=sortorder, ax=ax)\n",
    "ax.tick_params(axis='x', labelsize=7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Skullstripping_Quality_Bad</th>\n",
       "      <th>Skullstripping_Quality_Good</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Site</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.076923</td>\n",
       "      <td>0.923077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.062500</td>\n",
       "      <td>0.937500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.065217</td>\n",
       "      <td>0.934783</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>177</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>301</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>305</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>341</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>941</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>63 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      Skullstripping_Quality_Bad  Skullstripping_Quality_Good\n",
       "Site                                                         \n",
       "2                       0.000000                     1.000000\n",
       "3                       0.076923                     0.923077\n",
       "5                       0.062500                     0.937500\n",
       "6                       0.000000                     1.000000\n",
       "7                       0.065217                     0.934783\n",
       "...                          ...                          ...\n",
       "177                     0.000000                     1.000000\n",
       "301                     0.000000                     1.000000\n",
       "305                     0.000000                     1.000000\n",
       "341                     0.000000                     1.000000\n",
       "941                     0.000000                     1.000000\n",
       "\n",
       "[63 rows x 2 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfQualityPctWide = pd.pivot(dfQualityPct, index='Site', columns='Skullstripping_Quality')\n",
    "dfQualityPctWide.fillna(0, inplace=True)\n",
    "lsNewCols = ['Skullstripping_Quality_' + t[1].capitalize() for t in dfQualityPctWide.columns]\n",
    "dfQualityPctWide.columns = lsNewCols\n",
    "dfQualityPctWide"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "dfImageInfo = pd.read_csv('image_list_ad_cn.csv', index_col=0)\n",
    "dfDiagPct = dfImageInfo.groupby('Site')['DX_Scan'].value_counts(normalize=True)\n",
    "dfADPct = dfDiagPct.loc[dfDiagPct.index.get_level_values(1) == 'Dementia']\n",
    "dfADPct.index = dfADPct.index.droplevel(level=1)\n",
    "dfADPct = dfADPct.to_frame('Percent_AD')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Images</th>\n",
       "      <th>Subjects</th>\n",
       "      <th>GE</th>\n",
       "      <th>Philips</th>\n",
       "      <th>Siemens</th>\n",
       "      <th>Model</th>\n",
       "      <th>Series_Description</th>\n",
       "      <th>TR</th>\n",
       "      <th>TE</th>\n",
       "      <th>TI</th>\n",
       "      <th>...</th>\n",
       "      <th>Voxel_Size_X</th>\n",
       "      <th>Voxel_Size_Y</th>\n",
       "      <th>Voxel_Size_Z</th>\n",
       "      <th>Hippocampus_Mean_Intensity</th>\n",
       "      <th>Hippocampus_Edge_Contrast</th>\n",
       "      <th>Brain_Mean_Intensity</th>\n",
       "      <th>Brain_SD_Intensity</th>\n",
       "      <th>Skullstripping_Quality_Bad</th>\n",
       "      <th>Skullstripping_Quality_Good</th>\n",
       "      <th>Percent_AD</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Site</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>80</td>\n",
       "      <td>24</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.75</td>\n",
       "      <td>0.250000</td>\n",
       "      <td>Intera</td>\n",
       "      <td>MPRAGE SENSE2</td>\n",
       "      <td>0.006762</td>\n",
       "      <td>0.003112</td>\n",
       "      <td>0.9</td>\n",
       "      <td>...</td>\n",
       "      <td>1.199997</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>1176.046971</td>\n",
       "      <td>67.500816</td>\n",
       "      <td>997.589619</td>\n",
       "      <td>359.735947</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.112500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>65</td>\n",
       "      <td>25</td>\n",
       "      <td>0.723077</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.276923</td>\n",
       "      <td>Signa HDxt</td>\n",
       "      <td>Accelerated SAG IR-SPGR</td>\n",
       "      <td>0.006964</td>\n",
       "      <td>0.002832</td>\n",
       "      <td>0.4</td>\n",
       "      <td>...</td>\n",
       "      <td>1.199997</td>\n",
       "      <td>1.054700</td>\n",
       "      <td>1.054700</td>\n",
       "      <td>1106.455835</td>\n",
       "      <td>44.594744</td>\n",
       "      <td>1133.725240</td>\n",
       "      <td>414.571945</td>\n",
       "      <td>0.076923</td>\n",
       "      <td>0.923077</td>\n",
       "      <td>0.261538</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>16</td>\n",
       "      <td>7</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>DISCOVERY MR750</td>\n",
       "      <td>Accelerated Sag IR-FSPGR</td>\n",
       "      <td>0.007332</td>\n",
       "      <td>0.003036</td>\n",
       "      <td>0.4</td>\n",
       "      <td>...</td>\n",
       "      <td>1.199997</td>\n",
       "      <td>1.015600</td>\n",
       "      <td>1.015600</td>\n",
       "      <td>1158.123064</td>\n",
       "      <td>98.544132</td>\n",
       "      <td>1382.090775</td>\n",
       "      <td>564.550907</td>\n",
       "      <td>0.062500</td>\n",
       "      <td>0.937500</td>\n",
       "      <td>0.812500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>53</td>\n",
       "      <td>18</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>Ingenia</td>\n",
       "      <td>MPRAGE SENSE2</td>\n",
       "      <td>0.006744</td>\n",
       "      <td>0.003106</td>\n",
       "      <td>0.9</td>\n",
       "      <td>...</td>\n",
       "      <td>1.200012</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>43211.193158</td>\n",
       "      <td>2622.015560</td>\n",
       "      <td>44236.603801</td>\n",
       "      <td>15138.634079</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.396226</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>46</td>\n",
       "      <td>15</td>\n",
       "      <td>0.760870</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.239130</td>\n",
       "      <td>Signa HDxt</td>\n",
       "      <td>Accelerated SAG IR-SPGR</td>\n",
       "      <td>0.006964</td>\n",
       "      <td>0.002832</td>\n",
       "      <td>0.4</td>\n",
       "      <td>...</td>\n",
       "      <td>1.199997</td>\n",
       "      <td>1.054700</td>\n",
       "      <td>1.054700</td>\n",
       "      <td>935.856207</td>\n",
       "      <td>52.804449</td>\n",
       "      <td>992.447567</td>\n",
       "      <td>401.733180</td>\n",
       "      <td>0.065217</td>\n",
       "      <td>0.934783</td>\n",
       "      <td>0.239130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>301</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>Ingenia</td>\n",
       "      <td>VWIP Coronal 3D Accelerated MPRAGE</td>\n",
       "      <td>0.006536</td>\n",
       "      <td>0.002944</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.500000</td>\n",
       "      <td>60116.823520</td>\n",
       "      <td>3466.709378</td>\n",
       "      <td>59763.031315</td>\n",
       "      <td>19354.493565</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>305</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>Achieva dStream</td>\n",
       "      <td>Sagittal 3D Accelerated MPRAGE</td>\n",
       "      <td>0.006512</td>\n",
       "      <td>0.002940</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>118214.169413</td>\n",
       "      <td>5026.601522</td>\n",
       "      <td>112824.298807</td>\n",
       "      <td>33423.488819</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>305</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.00</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.006529</td>\n",
       "      <td>0.002941</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>118214.169413</td>\n",
       "      <td>5026.601522</td>\n",
       "      <td>112824.298807</td>\n",
       "      <td>33423.488819</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>341</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>Prisma</td>\n",
       "      <td>Accelerated Sagittal MPRAGE</td>\n",
       "      <td>2.300000</td>\n",
       "      <td>0.002980</td>\n",
       "      <td>0.9</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>157.031679</td>\n",
       "      <td>6.552616</td>\n",
       "      <td>154.692272</td>\n",
       "      <td>49.842128</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>941</th>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>Prisma_fit</td>\n",
       "      <td>Accelerated Sagittal MPRAGE</td>\n",
       "      <td>2.300000</td>\n",
       "      <td>0.002950</td>\n",
       "      <td>0.9</td>\n",
       "      <td>...</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>1.054688</td>\n",
       "      <td>231.771450</td>\n",
       "      <td>10.836533</td>\n",
       "      <td>213.175313</td>\n",
       "      <td>73.957573</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.015152</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>74 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      Images  Subjects        GE  Philips   Siemens            Model  \\\n",
       "Site                                                                   \n",
       "2         80        24  0.000000     0.75  0.250000           Intera   \n",
       "3         65        25  0.723077     0.00  0.276923       Signa HDxt   \n",
       "5         16         7  1.000000     0.00  0.000000  DISCOVERY MR750   \n",
       "6         53        18  0.000000     1.00  0.000000          Ingenia   \n",
       "7         46        15  0.760870     0.00  0.239130       Signa HDxt   \n",
       "...      ...       ...       ...      ...       ...              ...   \n",
       "301        1         1  0.000000     1.00  0.000000          Ingenia   \n",
       "305        2         2  0.000000     1.00  0.000000  Achieva dStream   \n",
       "305        2         2  0.000000     1.00  0.000000              NaN   \n",
       "341        3         3  0.000000     0.00  1.000000           Prisma   \n",
       "941       66        29  0.000000     0.00  1.000000       Prisma_fit   \n",
       "\n",
       "                      Series_Description        TR        TE   TI  ...  \\\n",
       "Site                                                               ...   \n",
       "2                          MPRAGE SENSE2  0.006762  0.003112  0.9  ...   \n",
       "3                Accelerated SAG IR-SPGR  0.006964  0.002832  0.4  ...   \n",
       "5              Accelerated Sag IR-FSPGR   0.007332  0.003036  0.4  ...   \n",
       "6                          MPRAGE SENSE2  0.006744  0.003106  0.9  ...   \n",
       "7                Accelerated SAG IR-SPGR  0.006964  0.002832  0.4  ...   \n",
       "...                                  ...       ...       ...  ...  ...   \n",
       "301   VWIP Coronal 3D Accelerated MPRAGE  0.006536  0.002944  NaN  ...   \n",
       "305       Sagittal 3D Accelerated MPRAGE  0.006512  0.002940  NaN  ...   \n",
       "305                                  NaN  0.006529  0.002941  NaN  ...   \n",
       "341          Accelerated Sagittal MPRAGE  2.300000  0.002980  0.9  ...   \n",
       "941          Accelerated Sagittal MPRAGE  2.300000  0.002950  0.9  ...   \n",
       "\n",
       "      Voxel_Size_X  Voxel_Size_Y  Voxel_Size_Z  Hippocampus_Mean_Intensity  \\\n",
       "Site                                                                         \n",
       "2         1.199997      1.054688      1.054688                 1176.046971   \n",
       "3         1.199997      1.054700      1.054700                 1106.455835   \n",
       "5         1.199997      1.015600      1.015600                 1158.123064   \n",
       "6         1.200012      1.054688      1.054688                43211.193158   \n",
       "7         1.199997      1.054700      1.054700                  935.856207   \n",
       "...            ...           ...           ...                         ...   \n",
       "301       0.500000      1.000000      0.500000                60116.823520   \n",
       "305       1.000000      1.000000      1.000000               118214.169413   \n",
       "305            NaN           NaN           NaN               118214.169413   \n",
       "341       1.000000      1.000000      1.000000                  157.031679   \n",
       "941       1.000000      1.054688      1.054688                  231.771450   \n",
       "\n",
       "      Hippocampus_Edge_Contrast  Brain_Mean_Intensity  Brain_SD_Intensity  \\\n",
       "Site                                                                        \n",
       "2                     67.500816            997.589619          359.735947   \n",
       "3                     44.594744           1133.725240          414.571945   \n",
       "5                     98.544132           1382.090775          564.550907   \n",
       "6                   2622.015560          44236.603801        15138.634079   \n",
       "7                     52.804449            992.447567          401.733180   \n",
       "...                         ...                   ...                 ...   \n",
       "301                 3466.709378          59763.031315        19354.493565   \n",
       "305                 5026.601522         112824.298807        33423.488819   \n",
       "305                 5026.601522         112824.298807        33423.488819   \n",
       "341                    6.552616            154.692272           49.842128   \n",
       "941                   10.836533            213.175313           73.957573   \n",
       "\n",
       "      Skullstripping_Quality_Bad  Skullstripping_Quality_Good  Percent_AD  \n",
       "Site                                                                       \n",
       "2                       0.000000                     1.000000    0.112500  \n",
       "3                       0.076923                     0.923077    0.261538  \n",
       "5                       0.062500                     0.937500    0.812500  \n",
       "6                       0.000000                     1.000000    0.396226  \n",
       "7                       0.065217                     0.934783    0.239130  \n",
       "...                          ...                          ...         ...  \n",
       "301                     0.000000                     1.000000    0.000000  \n",
       "305                     0.000000                     1.000000    0.500000  \n",
       "305                     0.000000                     1.000000    0.500000  \n",
       "341                     0.000000                     1.000000    0.333333  \n",
       "941                     0.000000                     1.000000    0.015152  \n",
       "\n",
       "[74 rows x 21 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dfTable = pd.concat([dfSiteCounts, dfSiteSubjectCounts, dfManuFreqWide, dfModelSeq, dfImageMetrics, \n",
    "                     dfQualityPctWide, dfADPct], axis=1)\n",
    "dfTable['Percent_AD'].fillna(0, inplace=True)\n",
    "dfTable"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Warning: data directory does not exist\n"
     ]
    }
   ],
   "source": [
    "dfTable.to_excel(expand_data_path('ADNI23_sMRI/image_info_quality_metrics_aggregated_v2.xlsx'))"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "a5dc4aa0b7969a772c348262b9338538f97e30fb3762c91cf138c2ab2be38e85"
  },
  "kernelspec": {
   "display_name": "Python 3.8.5 64-bit ('Kevin385Ray': conda)",
   "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.5"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}