{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "_abtXE7KBXxp"
   },
   "source": [
    "# 6. Region properties"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "C_ueqQujBXxv"
   },
   "source": [
    "Once you have segmented an image you usually want to gather information on the objects that you \"discovered\". Instead of painstakingly do this manually, skimage offers a simplified way to do this with its ```regionprops_table``` tool."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "executionInfo": {
     "elapsed": 1741,
     "status": "ok",
     "timestamp": 1616250325262,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "nbvEvkGJBXxw"
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import skimage\n",
    "import skimage.io\n",
    "import skimage.morphology\n",
    "import scipy.ndimage as ndi"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FdRSQIRyBXxw"
   },
   "source": [
    "Let's first create a mask of the nuclei and clean it up with morphological operations:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "executionInfo": {
     "elapsed": 2392,
     "status": "ok",
     "timestamp": 1616250328336,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "LRbfIk_ABXxx"
   },
   "outputs": [],
   "source": [
    "#image_stack = skimage.io.imread('images/46658_784_B12_1.tif')\n",
    "image_stack = skimage.io.imread('https://github.com/guiwitz/PyImageCourse_beginner/raw/master/images/46658_784_B12_1.tif')\n",
    "\n",
    "image_nuclei = image_stack[:,:,2]#blue channel in RGB\n",
    "image_signal = image_stack[:,:,1]#green channel in RGB\n",
    "\n",
    "# filter image\n",
    "image_nuclei = skimage.filters.median(image_nuclei, skimage.morphology.disk(5))\n",
    "\n",
    "# create mask and clean-up\n",
    "mask_nuclei = image_nuclei > skimage.filters.threshold_otsu(image_nuclei)\n",
    "mask_nuclei = skimage.morphology.binary_closing(mask_nuclei, footprint=skimage.morphology.disk(5))\n",
    "mask_nuclei = ndi.binary_fill_holes(mask_nuclei, skimage.morphology.disk(5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 469
    },
    "executionInfo": {
     "elapsed": 1282,
     "status": "ok",
     "timestamp": 1616250334243,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "EoPdJBjtBXxx",
    "outputId": "a9a2c84a-9ede-44e4-fc2f-048cccb6fa7a"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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/vhjpy2DHIeNExERUQWWLl2KnJwch8+3sLAQ48aNw8SJE3ntLzfBxomIiKgCiYmJ+O233xw6z8LCQowfP55Nk5th40RERFSBwsJC/Pe//3XYXic2Te6LjRMREZEdfv/9d3z22Weo7tnoZ86cwQMPPMCmyU3xcgRERER2ioyMxLx589CtW7cqPf/o0aN44okn8PPPPzs4GTkaL0dARERUTadPn8a9996LtWvXVup5BQUF+Pbbb9GzZ082TW6OjRMREVElnDhxAkOHDsX06dORl5d32cdarVYkJCRg+PDhGD58OA4fPuyilOQsPFRHRERUBb6+vrjhhhtw9913o1evXqhVqxaCgoKQk5ODgoICbNy4EfPnz8fixYuRlZWlOy5VEm/yS0RE5ARKKYSFhSE0NBQNGjTA4cOHYbFYcObMGdhsNt3xqIrYOBERERHZiYPDiYiIiKqJjRMRERGRndg4EREREdmJjRMRERGRndg4EREREdmJjRMRERGRndg4EREREdmJjRMRERGRndg4EREREdmJjRMRERGRnXx0B6hI8+bNMWzYMOTn5yMhIQE7duzAqVOneP8fIiIicjnD36uuQ4cOEh8fDwCw2WxISUnB4sWL8dVXX2Hz5s1soIiIiMjhPOJedSaTCXXr1sUjjzyCJUuW4P3330ejRo1gNpt1RyMiIiIv4FZ7nP5ORJCWloaNGzdizZo1OHDgAAoKCrB7924kJyfDYrG4OC0RERF5gvL2OLl141QWm82Gs2fP4tdff8W///1v7N69G0Z/jURERGQsHnGozh4mkwkRERH4xz/+gVWrVuHDDz9Ejx49EBAQoDsaERERuTmPa5xKi4qKwpNPPolffvkFH3/8MerUqaM7EhEREbkxj26czvPz88OIESMwbtw4+PgY/goMRGQgdevWxa233op69erpjkJEBuAVjdN59913H+6//34oVeZhSyKiizRt2hS///47fvrpJ6xatQodOnTQHYmINPOqxikwMBCTJk1C69atdUchIoMymUwIDQ1Fx44dMXPmTDRv3hwmkwktWrTAwoUL8fzzzyMkJOSi5/j5+XEcJZG3EBFDV/v27cXRli1bJlFRUQKAxWKxLlTt2rVl6tSpcuTIEcnNzS3z88Niscivv/4qAwcOlDZt2si9994ry5Ytk40bN0qnTp20vwYWi+WYKq8v0d4YVVTO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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplots(figsize=(10,10))\n",
    "plt.imshow(mask_nuclei, cmap = 'gray');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "CJUUfmkuBXxy"
   },
   "source": [
    "## Labelling"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xdVMwT5KBXxz"
   },
   "source": [
    "In order to measure objects in the image separately, we first need to label them individually. For that we can just use the ```skimage.morphology.label()``` function which looks for independent groups of white pixels and assigns them integer numbers:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "executionInfo": {
     "elapsed": 581,
     "status": "ok",
     "timestamp": 1616250342558,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "LL3aofvKBXxz"
   },
   "outputs": [],
   "source": [
    "my_labels = skimage.morphology.label(mask_nuclei)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xy2xS0hHBXxz"
   },
   "source": [
    "The label map shows that numbers are assigned from top to bottom in the image:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 469
    },
    "executionInfo": {
     "elapsed": 1936,
     "status": "ok",
     "timestamp": 1616250350395,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "apyNDDlGBXxz",
    "outputId": "612015ee-1d9f-4a88-f4b3-c48ef5a64085"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplots(figsize=(10,10))\n",
    "plt.imshow(my_labels);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0jPSDQ9mBXx0"
   },
   "source": [
    "## Region properties"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "RxpTZ7QBBXx0"
   },
   "source": [
    "Now that we have each region labeled with a different number we can use the ```skimage.measure.regionprops_table()``` function, which takes such as label map and analyzes the geometric properties of each region. We have to specifiy which ```properties``` we want to use. For example the ```area``` and ```labels```:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "executionInfo": {
     "elapsed": 678,
     "status": "ok",
     "timestamp": 1616250356562,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "mmpXctCgBXx0"
   },
   "outputs": [],
   "source": [
    "my_regions = skimage.measure.regionprops_table(my_labels, properties=('label','area'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "lvdTxbDdBXx0"
   },
   "source": [
    "The output is a dictionary of all properties that we asked to get out:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 501,
     "status": "ok",
     "timestamp": 1616250357412,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "xAWRDyguBXx1",
    "outputId": "23f38263-755f-4567-ecc8-5ec9003c626b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'label': array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
       "        18, 19, 20]),\n",
       " 'area': array([ 4221,  8386, 18258,  4043,    73, 49056, 45671, 20537, 46853,\n",
       "        43277, 40768, 15090, 35404, 47642, 54978, 26774,     4,   812,\n",
       "        54298, 29638])}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_regions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dictionaries\n",
    "\n",
    "Until now, in terms of data structures, we have briefly seen lists ```mylist = [5, 4, 2]``` and Numpy arrays via the images. However Python offers additional types of data structures and dictionaries are one of them. As you can see in the output above, they are define with curly parentheses ```{}``` and contain pairs of elements: keys like ```label``` and ```area``` and a *content* for each key, here two Numpy arrays. To better understand let's just create a simple one:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'fruit name': 'apple', 'weigth': 50, 'types': ['golden', 'gala', 'breaburn']}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_dict = {'fruit name': 'apple', 'weigth': 50, 'types': ['golden', 'gala', 'breaburn']}\n",
    "my_dict"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As you can see these dictionaries can contain all types of variables: strings, numbers, lists etc. They are for this reason ideal to hold information of various types and useful to describe entities thanks to the dictionary keys. Each entry in the dictionary can then be recovered via its key:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "50"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_dict['weigth']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7SmPI39ZBXx3"
   },
   "source": [
    "## Recovering image intensity information"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5NKFaWCzBXx3"
   },
   "source": [
    "In what we did above, we only recovered information about our mask. However often we want to obtain information on pixel values of the **original** image. For example, \"what is the average intensity of each nucleus?\"\n",
    "\n",
    "Luckily ```regionprops_table``` allows us to pass as additional argument ```intensity_image``` the image we want to use to quantify intensity. Then we can for example add as property to extract the ```mean_intensity```:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "executionInfo": {
     "elapsed": 502,
     "status": "ok",
     "timestamp": 1616250379810,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "SfajCPMvBXx4"
   },
   "outputs": [],
   "source": [
    "my_regions = skimage.measure.regionprops_table(\n",
    "    my_labels,intensity_image=image_signal, properties=('label','area','mean_intensity'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "YHdAPnsqBXx4"
   },
   "source": [
    "Now we have access to additional parameters. For example the mean_intensity in each nucleus:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "executionInfo": {
     "elapsed": 514,
     "status": "ok",
     "timestamp": 1616250382794,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "_PuK9oxdBXx4",
    "outputId": "20c037cb-7628-45c8-b41a-ad973d7e634c"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'label': array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
       "        18, 19, 20]),\n",
       " 'area': array([ 4221,  8386, 18258,  4043,    73, 49056, 45671, 20537, 46853,\n",
       "        43277, 40768, 15090, 35404, 47642, 54978, 26774,     4,   812,\n",
       "        54298, 29638]),\n",
       " 'mean_intensity': array([ 79.26510306,  65.99773432,  70.26109103,  63.02671284,\n",
       "         47.43835616,  53.71450995,  53.8070986 ,  70.45391245,\n",
       "         66.13772864,  41.4125517 ,  58.67503925,  44.19814447,\n",
       "         74.77155124,  41.70190168,  35.9041071 ,  53.07787406,\n",
       "        112.        , 102.9864532 ,  56.11020664,  66.28379108])}"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_regions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we have this information, we can of course, plot it. For example we can produce a histogram of mean nuclei intensities:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 265
    },
    "executionInfo": {
     "elapsed": 795,
     "status": "ok",
     "timestamp": 1616250403913,
     "user": {
      "displayName": "Guillaume Witz",
      "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgT0K2JVYzEsjzsS5nhkUVjUrSIJ5jHzXnBoYrmVf8=s64",
      "userId": "16033870147214403532"
     },
     "user_tz": -60
    },
    "id": "sWIsqx_4BXx5",
    "outputId": "b1d01701-4ac3-4c7e-e2a2-3e6a86624e7f"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(my_regions['mean_intensity']);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ctIzlnC7BXx9"
   },
   "source": [
    "## Filtering information\n",
    "\n",
    "Obviously, we had some \"bad segmentations\", i.e. some fragments remaining from the processing that are not actual nuclei. We can easily filter those out for example based on size using Numpy logical indexing:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 4221,  8386, 18258,  4043,    73, 49056, 45671, 20537, 46853,\n",
       "       43277, 40768, 15090, 35404, 47642, 54978, 26774,     4,   812,\n",
       "       54298, 29638])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_regions['area']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We create a logical array by setting a condition on one dictionary entry:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True,  True,  True,  True, False,  True,  True,  True,  True,\n",
       "        True,  True,  True,  True,  True,  True,  True, False,  True,\n",
       "        True,  True])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "selected = my_regions['area'] > 100\n",
    "selected"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And then use it for logical indexing:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 79.26510306,  65.99773432,  70.26109103,  63.02671284,\n",
       "        53.71450995,  53.8070986 ,  70.45391245,  66.13772864,\n",
       "        41.4125517 ,  58.67503925,  44.19814447,  74.77155124,\n",
       "        41.70190168,  35.9041071 ,  53.07787406, 102.9864532 ,\n",
       "        56.11020664,  66.28379108])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_regions['mean_intensity'][selected]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## One step further: Pandas\n",
    "\n",
    "In the above example, if we wanted to use one measurement to filter all other measurements, we would have to repeat the selection multiple times. Ideally, we would put all the measured properties into a table, one column per property, and then do typical database operations to sub-select parts of the data. This can be done using yet another data structure called a DataFrame. These structures are provided by the Pandas library, the main data science library in Python. We here give a very brief insight into that library. First we import it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To understand what a DataFrame is, let's transform a plain Numpy array into a DataFrame:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[51, 92, 14, 71, 60],\n",
       "       [20, 82, 86, 74, 74],\n",
       "       [87, 99, 23,  2, 21]])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "my_array = np.random.randint(0,100, (3,5))\n",
    "my_array"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can simply turn this array into a DataFrame by using:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "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>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>51</td>\n",
       "      <td>92</td>\n",
       "      <td>14</td>\n",
       "      <td>71</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20</td>\n",
       "      <td>82</td>\n",
       "      <td>86</td>\n",
       "      <td>74</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>87</td>\n",
       "      <td>99</td>\n",
       "      <td>23</td>\n",
       "      <td>2</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    0   1   2   3   4\n",
       "0  51  92  14  71  60\n",
       "1  20  82  86  74  74\n",
       "2  87  99  23   2  21"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(my_array)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that the array content is still there but in addition now we have column and row names, currently just indices. We could however give specific column names:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "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>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "      <th>e</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>51</td>\n",
       "      <td>92</td>\n",
       "      <td>14</td>\n",
       "      <td>71</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20</td>\n",
       "      <td>82</td>\n",
       "      <td>86</td>\n",
       "      <td>74</td>\n",
       "      <td>74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>87</td>\n",
       "      <td>99</td>\n",
       "      <td>23</td>\n",
       "      <td>2</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    a   b   c   d   e\n",
       "0  51  92  14  71  60\n",
       "1  20  82  86  74  74\n",
       "2  87  99  23   2  21"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_df = pd.DataFrame(my_array, columns=['a', 'b', 'c', 'd', 'e'])\n",
    "my_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The difference with Numpy arrays is that DataFrames can contain different types of information (text, numbers etc.) and that they should really be seen as \"organized\" data. So for example we can recover a column of the table without resorting to the type of indexing we did before:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    14\n",
       "1    86\n",
       "2    23\n",
       "Name: c, dtype: int64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_df['c']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now how can such a structure help us do the sort of data filtering we have mentioned before? Just like with arrays, we can use some constraining tests. For example we can ask: are there data points in column ```c``` which are smaller than 50?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     True\n",
       "1    False\n",
       "2     True\n",
       "Name: c, dtype: bool"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_df['c'] < 50"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Similarly to what happened with arrays, we get a new column that is boolean. And again similarly to what we did with arrays we can use it for logical indexing using square parentheses:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "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>a</th>\n",
       "      <th>b</th>\n",
       "      <th>c</th>\n",
       "      <th>d</th>\n",
       "      <th>e</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>51</td>\n",
       "      <td>92</td>\n",
       "      <td>14</td>\n",
       "      <td>71</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>87</td>\n",
       "      <td>99</td>\n",
       "      <td>23</td>\n",
       "      <td>2</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    a   b   c   d   e\n",
       "0  51  92  14  71  60\n",
       "2  87  99  23   2  21"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_df[my_df['c'] < 50]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What happened here is that we kept only those entries in the table where the values in the ```c``` column were smaller than 50: we filtered all the properties (columns) in our table in one go!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Back to our problem\n",
    "\n",
    "In our analysis we ended up with a dictionary:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'label': array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
       "        18, 19, 20]),\n",
       " 'area': array([ 4221,  8386, 18258,  4043,    73, 49056, 45671, 20537, 46853,\n",
       "        43277, 40768, 15090, 35404, 47642, 54978, 26774,     4,   812,\n",
       "        54298, 29638]),\n",
       " 'mean_intensity': array([ 79.26510306,  65.99773432,  70.26109103,  63.02671284,\n",
       "         47.43835616,  53.71450995,  53.8070986 ,  70.45391245,\n",
       "         66.13772864,  41.4125517 ,  58.67503925,  44.19814447,\n",
       "         74.77155124,  41.70190168,  35.9041071 ,  53.07787406,\n",
       "        112.        , 102.9864532 ,  56.11020664,  66.28379108])}"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_regions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also easily turn this dictionary into a DataFrame:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "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>label</th>\n",
       "      <th>area</th>\n",
       "      <th>mean_intensity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4221</td>\n",
       "      <td>79.265103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>8386</td>\n",
       "      <td>65.997734</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>18258</td>\n",
       "      <td>70.261091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>4043</td>\n",
       "      <td>63.026713</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>73</td>\n",
       "      <td>47.438356</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>49056</td>\n",
       "      <td>53.714510</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>45671</td>\n",
       "      <td>53.807099</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>20537</td>\n",
       "      <td>70.453912</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>46853</td>\n",
       "      <td>66.137729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>43277</td>\n",
       "      <td>41.412552</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>40768</td>\n",
       "      <td>58.675039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>15090</td>\n",
       "      <td>44.198144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13</td>\n",
       "      <td>35404</td>\n",
       "      <td>74.771551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14</td>\n",
       "      <td>47642</td>\n",
       "      <td>41.701902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>54978</td>\n",
       "      <td>35.904107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16</td>\n",
       "      <td>26774</td>\n",
       "      <td>53.077874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>17</td>\n",
       "      <td>4</td>\n",
       "      <td>112.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>18</td>\n",
       "      <td>812</td>\n",
       "      <td>102.986453</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>54298</td>\n",
       "      <td>56.110207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>29638</td>\n",
       "      <td>66.283791</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    label   area  mean_intensity\n",
       "0       1   4221       79.265103\n",
       "1       2   8386       65.997734\n",
       "2       3  18258       70.261091\n",
       "3       4   4043       63.026713\n",
       "4       5     73       47.438356\n",
       "5       6  49056       53.714510\n",
       "6       7  45671       53.807099\n",
       "7       8  20537       70.453912\n",
       "8       9  46853       66.137729\n",
       "9      10  43277       41.412552\n",
       "10     11  40768       58.675039\n",
       "11     12  15090       44.198144\n",
       "12     13  35404       74.771551\n",
       "13     14  47642       41.701902\n",
       "14     15  54978       35.904107\n",
       "15     16  26774       53.077874\n",
       "16     17      4      112.000000\n",
       "17     18    812      102.986453\n",
       "18     19  54298       56.110207\n",
       "19     20  29638       66.283791"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_regions_df = pd.DataFrame(my_regions)\n",
    "my_regions_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And now we can use what we have just learned: let's remove tiny regions with an area smaller than 100:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "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>label</th>\n",
       "      <th>area</th>\n",
       "      <th>mean_intensity</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4221</td>\n",
       "      <td>79.265103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>8386</td>\n",
       "      <td>65.997734</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>18258</td>\n",
       "      <td>70.261091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>4043</td>\n",
       "      <td>63.026713</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>49056</td>\n",
       "      <td>53.714510</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>45671</td>\n",
       "      <td>53.807099</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>20537</td>\n",
       "      <td>70.453912</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>46853</td>\n",
       "      <td>66.137729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>43277</td>\n",
       "      <td>41.412552</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>40768</td>\n",
       "      <td>58.675039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>15090</td>\n",
       "      <td>44.198144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13</td>\n",
       "      <td>35404</td>\n",
       "      <td>74.771551</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14</td>\n",
       "      <td>47642</td>\n",
       "      <td>41.701902</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>54978</td>\n",
       "      <td>35.904107</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16</td>\n",
       "      <td>26774</td>\n",
       "      <td>53.077874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>18</td>\n",
       "      <td>812</td>\n",
       "      <td>102.986453</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>54298</td>\n",
       "      <td>56.110207</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>29638</td>\n",
       "      <td>66.283791</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    label   area  mean_intensity\n",
       "0       1   4221       79.265103\n",
       "1       2   8386       65.997734\n",
       "2       3  18258       70.261091\n",
       "3       4   4043       63.026713\n",
       "5       6  49056       53.714510\n",
       "6       7  45671       53.807099\n",
       "7       8  20537       70.453912\n",
       "8       9  46853       66.137729\n",
       "9      10  43277       41.412552\n",
       "10     11  40768       58.675039\n",
       "11     12  15090       44.198144\n",
       "12     13  35404       74.771551\n",
       "13     14  47642       41.701902\n",
       "14     15  54978       35.904107\n",
       "15     16  26774       53.077874\n",
       "17     18    812      102.986453\n",
       "18     19  54298       56.110207\n",
       "19     20  29638       66.283791"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_regions_df[my_regions_df['area'] > 100]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see that we indeed removed to elements in that table, indices 4 and 16.\n",
    "\n",
    "Pandas is a very powerful library and in this course we can't offer more than this brief insight into how it can be useful for data post-processing. To learn more you can also visit this other course: https://guiwitz.github.io/DAVPy/Readme.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "12-Regions.ipynb",
   "provenance": [],
   "toc_visible": true
  },
  "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.9.10"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
