{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "63ce0734-aad1-48c2-948c-f6ad0606132f",
   "metadata": {},
   "source": [
    "## Run a pipeline with test inputs"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cdbd6fb8-f668-4a18-bbb7-f92a3bdf2172",
   "metadata": {},
   "source": [
    "This process will run the entire pipeline described in a configuration file and we will add some  test input to try some metrics"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ce4d8ab-962c-43b7-ab11-6c309b96db51",
   "metadata": {},
   "source": [
    "## Import dependencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "f00299ae-1140-494b-99be-9fa8867c0ac8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "from paidiverpy.pipeline import Pipeline\n",
    "from paidiverpy.sampling_layer import SamplingLayer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "46f413c1-b9a5-4dc1-a27d-9cba7f9c745c",
   "metadata": {},
   "outputs": [],
   "source": [
    "pipeline = Pipeline(config_file_path=\"../config_files/config_benthic_test_steps.yml\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "5cc101c4-4606-476c-bfd7-5f62869154c1",
   "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>ID</th>\n",
       "      <th>filename</th>\n",
       "      <th>XResolution</th>\n",
       "      <th>YResolution</th>\n",
       "      <th>ExposureTime</th>\n",
       "      <th>FNumber</th>\n",
       "      <th>ISO</th>\n",
       "      <th>image-datetime</th>\n",
       "      <th>MaxApertureValue</th>\n",
       "      <th>WhiteBalance</th>\n",
       "      <th>...</th>\n",
       "      <th>speed_of_sound_m_s</th>\n",
       "      <th>temperature_c</th>\n",
       "      <th>positioning_ok</th>\n",
       "      <th>attitude_ok</th>\n",
       "      <th>depth_ok</th>\n",
       "      <th>altitude_ok</th>\n",
       "      <th>X</th>\n",
       "      <th>phototime</th>\n",
       "      <th>flag</th>\n",
       "      <th>point</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>430</td>\n",
       "      <td>20180611041421.png</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:14:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>1545.388</td>\n",
       "      <td>1.5059</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2018-06-11 04:14:21</td>\n",
       "      <td>0</td>\n",
       "      <td>POINT (-153.60531587 11.25172554)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>431</td>\n",
       "      <td>20180611041431.png</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:14:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>1545.447</td>\n",
       "      <td>1.5236</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2018-06-11 04:14:31</td>\n",
       "      <td>0</td>\n",
       "      <td>POINT (-153.60531372 11.25171832)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>432</td>\n",
       "      <td>20180611041441.png</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:14:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>1545.452</td>\n",
       "      <td>1.5234</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2018-06-11 04:14:41</td>\n",
       "      <td>0</td>\n",
       "      <td>POINT (-153.60531259 11.2517135)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>433</td>\n",
       "      <td>20180611041451.png</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:14:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>1545.363</td>\n",
       "      <td>1.4911</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2018-06-11 04:14:51</td>\n",
       "      <td>0</td>\n",
       "      <td>POINT (-153.60531313 11.25170837)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>434</td>\n",
       "      <td>20180611041501.png</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:15:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>1545.324</td>\n",
       "      <td>1.4747</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2018-06-11 04:15:01</td>\n",
       "      <td>0</td>\n",
       "      <td>POINT (-153.60531414 11.25170299)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 37 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    ID            filename  XResolution  YResolution  ExposureTime  FNumber  \\\n",
       "0  430  20180611041421.png          300          300      0.016667        8   \n",
       "1  431  20180611041431.png          300          300      0.016667        8   \n",
       "2  432  20180611041441.png          300          300      0.016667        8   \n",
       "3  433  20180611041451.png          300          300      0.016667        8   \n",
       "4  434  20180611041501.png          300          300      0.016667        8   \n",
       "\n",
       "   ISO      image-datetime  MaxApertureValue  WhiteBalance  ...  \\\n",
       "0  200 2018-06-11 04:14:21          2.828427  FLASH         ...   \n",
       "1  200 2018-06-11 04:14:31          2.828427  FLASH         ...   \n",
       "2  200 2018-06-11 04:14:41          2.828427  FLASH         ...   \n",
       "3  200 2018-06-11 04:14:51          2.828427  FLASH         ...   \n",
       "4  200 2018-06-11 04:15:01          2.828427  FLASH         ...   \n",
       "\n",
       "   speed_of_sound_m_s  temperature_c  positioning_ok  attitude_ok  depth_ok  \\\n",
       "0            1545.388         1.5059               1            1         1   \n",
       "1            1545.447         1.5236               1            1         1   \n",
       "2            1545.452         1.5234               1            1         1   \n",
       "3            1545.363         1.4911               1            1         1   \n",
       "4            1545.324         1.4747               1            1         1   \n",
       "\n",
       "   altitude_ok   X            phototime  flag  \\\n",
       "0            1 NaN  2018-06-11 04:14:21     0   \n",
       "1            1 NaN  2018-06-11 04:14:31     0   \n",
       "2            1 NaN  2018-06-11 04:14:41     0   \n",
       "3            1 NaN  2018-06-11 04:14:51     0   \n",
       "4            1 NaN  2018-06-11 04:15:01     0   \n",
       "\n",
       "                               point  \n",
       "0  POINT (-153.60531587 11.25172554)  \n",
       "1  POINT (-153.60531372 11.25171832)  \n",
       "2   POINT (-153.60531259 11.2517135)  \n",
       "3  POINT (-153.60531313 11.25170837)  \n",
       "4  POINT (-153.60531414 11.25170299)  \n",
       "\n",
       "[5 rows x 37 columns]"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline.get_metadata().head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "796f26c6-355a-411e-8313-1accd5906192",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>{\n",
       "    &quot;general&quot;: {\n",
       "        &quot;name&quot;: &quot;raw&quot;,\n",
       "        &quot;step_name&quot;: &quot;open&quot;,\n",
       "        &quot;sample_data&quot;: &quot;benthic_csv&quot;,\n",
       "        &quot;input_path&quot;: &quot;/home/tobfer/.paidiverpy_cache/benthic_csv/images&quot;,\n",
       "        &quot;output_path&quot;: &quot;output&quot;,\n",
       "        &quot;metadata_path&quot;: &quot;/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv&quot;,\n",
       "        &quot;metadata_type&quot;: &quot;CSV_FILE&quot;,\n",
       "        &quot;image_open_args&quot;: &quot;PNG&quot;,\n",
       "        &quot;append_data_to_metadata&quot;: &quot;/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv&quot;,\n",
       "        &quot;n_jobs&quot;: 1,\n",
       "        &quot;track_changes&quot;: true,\n",
       "        &quot;sampling&quot;: [\n",
       "            {\n",
       "                &quot;name&quot;: &quot;sampling&quot;,\n",
       "                &quot;step_name&quot;: &quot;sampling&quot;,\n",
       "                &quot;test&quot;: false,\n",
       "                &quot;params&quot;: {\n",
       "                    &quot;value&quot;: 1.0,\n",
       "                    &quot;raise_error&quot;: false\n",
       "                },\n",
       "                &quot;mode&quot;: &quot;percent&quot;\n",
       "            }\n",
       "        ]\n",
       "    },\n",
       "    &quot;steps&quot;: [\n",
       "        {\n",
       "            &quot;name&quot;: &quot;overlapping&quot;,\n",
       "            &quot;step_name&quot;: &quot;sampling&quot;,\n",
       "            &quot;test&quot;: true,\n",
       "            &quot;params&quot;: {\n",
       "                &quot;omega&quot;: 57.0,\n",
       "                &quot;theta&quot;: 40.0,\n",
       "                &quot;threshold&quot;: 0.5,\n",
       "                &quot;camera_distance&quot;: 1.12,\n",
       "                &quot;raise_error&quot;: false\n",
       "            },\n",
       "            &quot;mode&quot;: &quot;overlapping&quot;\n",
       "        }\n",
       "    ]\n",
       "}</pre><div><pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">general</span>:\n",
       "  <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "  <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"open\"</span>\n",
       "  <span class=\"ppy-json-key\">sample_data</span>: <span class=\"ppy-json-string\">\"benthic_csv\"</span>\n",
       "  <span class=\"ppy-json-key\">input_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/images\"</span>\n",
       "  <span class=\"ppy-json-key\">output_path</span>: <span class=\"ppy-json-string\">\"output\"</span>\n",
       "  <span class=\"ppy-json-key\">metadata_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv\"</span>\n",
       "  <span class=\"ppy-json-key\">metadata_type</span>: <span class=\"ppy-json-string\">\"CSV_FILE\"</span>\n",
       "  <span class=\"ppy-json-key\">image_open_args</span>: <span class=\"ppy-json-string\">\"PNG\"</span>\n",
       "  <span class=\"ppy-json-key\">append_data_to_metadata</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv\"</span>\n",
       "  <span class=\"ppy-json-key\">n_jobs</span>: <span class=\"ppy-json-number\">1</span>\n",
       "  <span class=\"ppy-json-key\">track_changes</span>: <span class=\"ppy-json-number\">True</span>\n",
       "  <span class=\"ppy-json-key\">sampling</span>:\n",
       "    - <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "      <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "      <span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "      <span class=\"ppy-json-key\">params</span>:\n",
       "        <span class=\"ppy-json-key\">value</span>: <span class=\"ppy-json-number\">1.0</span>\n",
       "        <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "      <span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"percent\"</span>\n",
       "<span class=\"ppy-json-key\">steps</span>:\n",
       "  - <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"overlapping\"</span>\n",
       "    <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">True</span>\n",
       "    <span class=\"ppy-json-key\">params</span>:\n",
       "      <span class=\"ppy-json-key\">omega</span>: <span class=\"ppy-json-number\">57.0</span>\n",
       "      <span class=\"ppy-json-key\">theta</span>: <span class=\"ppy-json-number\">40.0</span>\n",
       "      <span class=\"ppy-json-key\">threshold</span>: <span class=\"ppy-json-number\">0.5</span>\n",
       "      <span class=\"ppy-json-key\">camera_distance</span>: <span class=\"ppy-json-number\">1.12</span>\n",
       "      <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"overlapping\"</span></pre></div></div>"
      ],
      "text/plain": [
       "{\n",
       "    \"general\": {\n",
       "        \"name\": \"raw\",\n",
       "        \"step_name\": \"open\",\n",
       "        \"sample_data\": \"benthic_csv\",\n",
       "        \"input_path\": \"/home/tobfer/.paidiverpy_cache/benthic_csv/images\",\n",
       "        \"output_path\": \"output\",\n",
       "        \"metadata_path\": \"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv\",\n",
       "        \"metadata_type\": \"CSV_FILE\",\n",
       "        \"image_open_args\": \"PNG\",\n",
       "        \"append_data_to_metadata\": \"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv\",\n",
       "        \"n_jobs\": 1,\n",
       "        \"track_changes\": true,\n",
       "        \"sampling\": [\n",
       "            {\n",
       "                \"name\": \"sampling\",\n",
       "                \"step_name\": \"sampling\",\n",
       "                \"test\": false,\n",
       "                \"params\": {\n",
       "                    \"value\": 1.0,\n",
       "                    \"raise_error\": false\n",
       "                },\n",
       "                \"mode\": \"percent\"\n",
       "            }\n",
       "        ]\n",
       "    },\n",
       "    \"steps\": [\n",
       "        {\n",
       "            \"name\": \"overlapping\",\n",
       "            \"step_name\": \"sampling\",\n",
       "            \"test\": true,\n",
       "            \"params\": {\n",
       "                \"omega\": 57.0,\n",
       "                \"theta\": 40.0,\n",
       "                \"threshold\": 0.5,\n",
       "                \"camera_distance\": 1.12,\n",
       "                \"raise_error\": false\n",
       "            },\n",
       "            \"mode\": \"overlapping\"\n",
       "        }\n",
       "    ]\n",
       "}"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline.config"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d811ff5d-67f9-4a55-acd6-8dd405bdf8f1",
   "metadata": {},
   "source": [
    "As you can see in this pipeline configuration file, one of the steps (\"overlapping\") has the parameter \"test\" set to \"True\". In this case, instead of saving the step in the output images, it will show you some information to help you verifying if the given \"params\" are ok or not"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "310d8998-6ac7-4db4-a706-50270b6895ee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.pipeline.pipeline.Pipeline object at 0x747dec861b70&gt;</pre><div>\n",
       "    <div class=\"ppy-pipeline-wrap\">\n",
       "        \n",
       "    <div id=\"ppy-pipeline-jrl-general\" title=\"Click to see more information\"\n",
       "        class=\"ppy-pipeline ppy-pipeline-jrl\"\n",
       "        onclick=\"showParameters('general', 'jrl')\">\n",
       "        <h2 class=\"ppy-h2\">Raw</h2>\n",
       "        <h3 class=\"ppy-h3\">Type: Open</h2>\n",
       "    </div>\n",
       "    <div class=\"ppy-pipeline-arrow\"><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-jrl-step-0\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-jrl\" onclick=\"showParameters('step-0', 'jrl')\">\n",
       "                <h2 class=\"ppy-h2\">Overlapping</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        \n",
       "    </div>\n",
       "    <div id=\"ppy-pipeline-parameters\" class=\"ppy-pipeline-parameters-all\">\n",
       "            <div id=\"ppy-pipeline-parameters-jrl-step-0\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-jrl\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"overlapping\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">omega</span>: <span class=\"ppy-json-number\">57.0</span>\n",
       "  <span class=\"ppy-json-key\">theta</span>: <span class=\"ppy-json-number\">40.0</span>\n",
       "  <span class=\"ppy-json-key\">threshold</span>: <span class=\"ppy-json-number\">0.5</span>\n",
       "  <span class=\"ppy-json-key\">camera_distance</span>: <span class=\"ppy-json-number\">1.12</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"overlapping\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "        <div id=\"ppy-pipeline-parameters-jrl-general\" class=\"ppy-pipeline-parameters ppy-pipeline-parameters-jrl\"\n",
       "            style=\"display: none;\">\n",
       "            <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "            <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"open\"</span>\n",
       "<span class=\"ppy-json-key\">sample_data</span>: <span class=\"ppy-json-string\">\"benthic_csv\"</span>\n",
       "<span class=\"ppy-json-key\">input_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/images\"</span>\n",
       "<span class=\"ppy-json-key\">output_path</span>: <span class=\"ppy-json-string\">\"output\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_type</span>: <span class=\"ppy-json-string\">\"CSV_FILE\"</span>\n",
       "<span class=\"ppy-json-key\">image_open_args</span>: <span class=\"ppy-json-string\">\"PNG\"</span>\n",
       "<span class=\"ppy-json-key\">append_data_to_metadata</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">n_jobs</span>: <span class=\"ppy-json-number\">1</span>\n",
       "<span class=\"ppy-json-key\">track_changes</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">sampling</span>:\n",
       "  - <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">params</span>:\n",
       "      <span class=\"ppy-json-key\">value</span>: <span class=\"ppy-json-number\">1.0</span>\n",
       "      <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"percent\"</span></pre>\n",
       "        </div>\n",
       "    </div>\n",
       "    </div></div>"
      ],
      "text/plain": [
       "<paidiverpy.pipeline.pipeline.Pipeline at 0x747dec861b70>"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# See the pipeline steps. Click in a step to see more information about it\n",
    "pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "e61c25b4-79fd-4f28-94bb-e68aab8d0e94",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('raw',\n",
       "  paidiverpy.open_layer.open_layer.OpenLayer,\n",
       "  {'name': 'raw',\n",
       "   'step_name': 'open',\n",
       "   'sample_data': 'benthic_csv',\n",
       "   'input_path': PosixPath('/home/tobfer/.paidiverpy_cache/benthic_csv/images'),\n",
       "   'output_path': PosixPath('output'),\n",
       "   'metadata_path': PosixPath('/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv'),\n",
       "   'metadata_type': 'CSV_FILE',\n",
       "   'image_open_args': 'PNG',\n",
       "   'append_data_to_metadata': '/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv',\n",
       "   'n_jobs': 1,\n",
       "   'track_changes': True,\n",
       "   'sampling': [{'name': 'sampling',\n",
       "     'step_name': 'sampling',\n",
       "     'test': False,\n",
       "     'params': {'value': 1.0, 'raise_error': False},\n",
       "     'mode': 'percent'}]}),\n",
       " ('overlapping',\n",
       "  paidiverpy.sampling_layer.sampling_layer.SamplingLayer,\n",
       "  {'name': 'overlapping',\n",
       "   'step_name': 'sampling',\n",
       "   'test': True,\n",
       "   'params': {'omega': 57.0,\n",
       "    'theta': 40.0,\n",
       "    'threshold': 0.5,\n",
       "    'camera_distance': 1.12,\n",
       "    'raise_error': False},\n",
       "   'mode': 'overlapping'})]"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# See the pipeline steps in json format. As you can see, the Overlapping step is on test mode\n",
    "pipeline.steps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "0131f808-2a6a-40e0-beb7-41726f5c638a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:36 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:36 | Running step 0: raw - OpenLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 0: raw - OpenLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:37 | Step 0 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 0 completed\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:37 | Running step 1: overlapping - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 1: overlapping - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:37 | As you are using the test mode, the investigation layer will be executed.\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:As you are using the test mode, the investigation layer will be executed.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:38 | Plots generated and saved on the output folder: output/1_overlapping\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:Plots generated and saved on the output folder: output/1_overlapping\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:38 | Number of images before the sampling step: 49. Total number of images after: 23\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 49. Total number of images after: 23\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:38 | Step 1 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 1 completed\n"
     ]
    }
   ],
   "source": [
    "# Run the pipeline. You will see a plot of the overlapping.\n",
    "# This plot will help you to decide if you are ok with the limits provided in the\n",
    "# overlapping( theta = 40, omega - 80 and overlapping of 50%)\n",
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "a5aa8ca4-9231-4769-8b12-b4f3d435a29a",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.images_layer.ImagesLayer object at 0x747dea5148e0&gt;</pre><div>\n",
       "            <div class='ppy-h2 ppy-images-step-header' onclick='toggleMetadata(0, \"ddi\")'>\n",
       "                Step 0: raw\n",
       "                <span id='ppy-images-arrow-ddi-0'\n",
       "                    class='ppy-images-toggle-arrow ppy-font-color-brown'>▼\n",
       "                </span>\n",
       "            </div>\n",
       "            <div id='ppy-images-metadata-ddi-0' class='ppy-images-metadata' style='display:block;'><div class='ppy-images'>\n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-0\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041421.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-0' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-0'\n",
       "                src='data:image/png;base64,[encoded data, 30684 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-1\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041431.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-1' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-1'\n",
       "                src='data:image/png;base64,[encoded data, 30992 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-2\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041441.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-2' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-2'\n",
       "                src='data:image/png;base64,[encoded data, 30448 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-3\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041451.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-3' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-3'\n",
       "                src='data:image/png;base64,[encoded data, 29796 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-4\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041501.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-4' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-4'\n",
       "                src='data:image/png;base64,[encoded data, 29720 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-5\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041511.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-5' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-5'\n",
       "                src='data:image/png;base64,[encoded data, 29300 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-6\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041521.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-6' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-6'\n",
       "                src='data:image/png;base64,[encoded data, 29676 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-7\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041531.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-7' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-7'\n",
       "                src='data:image/png;base64,[encoded data, 29516 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-8\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041541.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-8' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-8'\n",
       "                src='data:image/png;base64,[encoded data, 29600 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-9\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041551.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-9' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-9'\n",
       "                src='data:image/png;base64,[encoded data, 30432 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-10\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041601.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-10' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-10'\n",
       "                src='data:image/png;base64,[encoded data, 29724 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-ddi-0-11\", \"ddi\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041611.png\n",
       "                <span id='ppy-images-arrow-ddi-image-ddi-0-11' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-ddi-0-11'\n",
       "                src='data:image/png;base64,[encoded data, 30888 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            </div></div></div></div>"
      ],
      "text/plain": [
       "<paidiverpy.images_layer.ImagesLayer at 0x747dea5148e0>"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# See the images output.You can see that the step was not added to the images output\n",
    "pipeline.images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "33d64443-85fd-4a90-8fb5-9293d169a465",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Change the step to another limits: overlapping of 70%\n",
    "pipeline.add_step(\n",
    "    \"overlapping\",\n",
    "    SamplingLayer,\n",
    "    {\n",
    "        \"mode\": \"overlapping\",\n",
    "        \"params\": {\"theta\": 40, \"omega\": 57, \"threshold\": 0.1},\n",
    "        \"test\": True,\n",
    "    },\n",
    "    1,\n",
    "    substitute=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "58841787-6bbc-458e-9d4d-e5309035fccc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.pipeline.pipeline.Pipeline object at 0x747dec861b70&gt;</pre><div>\n",
       "    <div class=\"ppy-pipeline-wrap\">\n",
       "        \n",
       "    <div id=\"ppy-pipeline-jhe-general\" title=\"Click to see more information\"\n",
       "        class=\"ppy-pipeline ppy-pipeline-jhe\"\n",
       "        onclick=\"showParameters('general', 'jhe')\">\n",
       "        <h2 class=\"ppy-h2\">Raw</h2>\n",
       "        <h3 class=\"ppy-h3\">Type: Raw</h2>\n",
       "    </div>\n",
       "    <div class=\"ppy-pipeline-arrow\"><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-jhe-step-0\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-jhe\" onclick=\"showParameters('step-0', 'jhe')\">\n",
       "                <h2 class=\"ppy-h2\">Overlapping</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        \n",
       "    </div>\n",
       "    <div id=\"ppy-pipeline-parameters\" class=\"ppy-pipeline-parameters-all\">\n",
       "            <div id=\"ppy-pipeline-parameters-jhe-step-0\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-jhe\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"overlapping\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">omega</span>: <span class=\"ppy-json-number\">57.0</span>\n",
       "  <span class=\"ppy-json-key\">theta</span>: <span class=\"ppy-json-number\">40.0</span>\n",
       "  <span class=\"ppy-json-key\">threshold</span>: <span class=\"ppy-json-number\">0.1</span>\n",
       "  <span class=\"ppy-json-key\">camera_distance</span>: <span class=\"ppy-json-number\">1.12</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"overlapping\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "        <div id=\"ppy-pipeline-parameters-jhe-general\" class=\"ppy-pipeline-parameters ppy-pipeline-parameters-jhe\"\n",
       "            style=\"display: none;\">\n",
       "            <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "            <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">sample_data</span>: <span class=\"ppy-json-string\">\"benthic_csv\"</span>\n",
       "<span class=\"ppy-json-key\">input_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/images\"</span>\n",
       "<span class=\"ppy-json-key\">output_path</span>: <span class=\"ppy-json-string\">\"output\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_type</span>: <span class=\"ppy-json-string\">\"CSV_FILE\"</span>\n",
       "<span class=\"ppy-json-key\">image_open_args</span>: <span class=\"ppy-json-string\">\"PNG\"</span>\n",
       "<span class=\"ppy-json-key\">append_data_to_metadata</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">n_jobs</span>: <span class=\"ppy-json-number\">1</span>\n",
       "<span class=\"ppy-json-key\">track_changes</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">sampling</span>:\n",
       "  - <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">params</span>:\n",
       "      <span class=\"ppy-json-key\">value</span>: <span class=\"ppy-json-number\">1.0</span>\n",
       "      <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"percent\"</span></pre>\n",
       "        </div>\n",
       "    </div>\n",
       "    </div></div>"
      ],
      "text/plain": [
       "<paidiverpy.pipeline.pipeline.Pipeline at 0x747dec861b70>"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "acc95544-7c0f-46ba-b891-eda809ad568a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:40 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:40 | Running step 1: overlapping - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 1: overlapping - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:40 | As you are using the test mode, the investigation layer will be executed.\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:As you are using the test mode, the investigation layer will be executed.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:40 | Plots generated and saved on the output folder: output/1_overlapping\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:Plots generated and saved on the output folder: output/1_overlapping\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:40 | Number of images before the sampling step: 49. Total number of images after: 14\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 49. Total number of images after: 14\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:40 | Step 1 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 1 completed\n"
     ]
    }
   ],
   "source": [
    "# Rerun the pipeline from the second step. It is still on test mode bacause I did not set \"test\" to \"False\"\n",
    "pipeline.run(from_step=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "8f9ee244-931a-4503-99e2-f00487ab2c97",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:41 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:41 | Running step 1: overlapping - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 1: overlapping - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:42 | Number of images before the sampling step: 49. Total number of images after: 35\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 49. Total number of images after: 35\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:42 | Step 1 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 1 completed\n"
     ]
    }
   ],
   "source": [
    "# I am happy with the new value. So now I can update the value on the overlapping step (test to false), and run again\n",
    "pipeline.add_step(\n",
    "    \"overlapping\",\n",
    "    SamplingLayer,\n",
    "    {\n",
    "        \"mode\": \"overlapping\",\n",
    "        \"params\": {\"theta\": 40, \"omega\": 57, \"threshold\": 0.7},\n",
    "        \"test\": False,\n",
    "    },\n",
    "    1,\n",
    "    substitute=True,\n",
    ")\n",
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "c66a0162-68d9-4962-9eee-fb7434403270",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Now I am adding a new step to resample based on obscure images. It is in test mode\n",
    "pipeline.add_step(\n",
    "    \"datetime\",\n",
    "    SamplingLayer,\n",
    "    {\n",
    "        \"mode\": \"datetime\",\n",
    "        \"params\": {\"min\": \"2018-06-11 04:14:00\", \"max\": \"2018-06-11 04:20:00\"},\n",
    "        \"test\": True,\n",
    "    },\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "acaa6b46-e86d-4ec6-88d4-9daa8624da7c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.pipeline.pipeline.Pipeline object at 0x747dec861b70&gt;</pre><div>\n",
       "    <div class=\"ppy-pipeline-wrap\">\n",
       "        \n",
       "    <div id=\"ppy-pipeline-ryn-general\" title=\"Click to see more information\"\n",
       "        class=\"ppy-pipeline ppy-pipeline-ryn\"\n",
       "        onclick=\"showParameters('general', 'ryn')\">\n",
       "        <h2 class=\"ppy-h2\">Raw</h2>\n",
       "        <h3 class=\"ppy-h3\">Type: Raw</h2>\n",
       "    </div>\n",
       "    <div class=\"ppy-pipeline-arrow\"><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-ryn-step-0\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-ryn\" onclick=\"showParameters('step-0', 'ryn')\">\n",
       "                <h2 class=\"ppy-h2\">Overlapping</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        <div class='ppy-pipeline-arrow'><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-ryn-step-1\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-ryn\" onclick=\"showParameters('step-1', 'ryn')\">\n",
       "                <h2 class=\"ppy-h2\">Datetime</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        \n",
       "    </div>\n",
       "    <div id=\"ppy-pipeline-parameters\" class=\"ppy-pipeline-parameters-all\">\n",
       "            <div id=\"ppy-pipeline-parameters-ryn-step-0\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-ryn\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"overlapping\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">omega</span>: <span class=\"ppy-json-number\">57.0</span>\n",
       "  <span class=\"ppy-json-key\">theta</span>: <span class=\"ppy-json-number\">40.0</span>\n",
       "  <span class=\"ppy-json-key\">threshold</span>: <span class=\"ppy-json-number\">0.7</span>\n",
       "  <span class=\"ppy-json-key\">camera_distance</span>: <span class=\"ppy-json-number\">1.12</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"overlapping\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "            <div id=\"ppy-pipeline-parameters-ryn-step-1\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-ryn\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"datetime\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">min</span>: <span class=\"ppy-json-string\">\"2018-06-11 04:14:00\"</span>\n",
       "  <span class=\"ppy-json-key\">max</span>: <span class=\"ppy-json-string\">\"2018-06-11 04:20:00\"</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"datetime\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "        <div id=\"ppy-pipeline-parameters-ryn-general\" class=\"ppy-pipeline-parameters ppy-pipeline-parameters-ryn\"\n",
       "            style=\"display: none;\">\n",
       "            <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "            <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">sample_data</span>: <span class=\"ppy-json-string\">\"benthic_csv\"</span>\n",
       "<span class=\"ppy-json-key\">input_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/images\"</span>\n",
       "<span class=\"ppy-json-key\">output_path</span>: <span class=\"ppy-json-string\">\"output\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_type</span>: <span class=\"ppy-json-string\">\"CSV_FILE\"</span>\n",
       "<span class=\"ppy-json-key\">image_open_args</span>: <span class=\"ppy-json-string\">\"PNG\"</span>\n",
       "<span class=\"ppy-json-key\">append_data_to_metadata</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">n_jobs</span>: <span class=\"ppy-json-number\">1</span>\n",
       "<span class=\"ppy-json-key\">track_changes</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">sampling</span>:\n",
       "  - <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">params</span>:\n",
       "      <span class=\"ppy-json-key\">value</span>: <span class=\"ppy-json-number\">1.0</span>\n",
       "      <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"percent\"</span></pre>\n",
       "        </div>\n",
       "    </div>\n",
       "    </div></div>"
      ],
      "text/plain": [
       "<paidiverpy.pipeline.pipeline.Pipeline at 0x747dec861b70>"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "f57cac0d-a22a-4dbb-8d90-dd1766569b68",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:44 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:44 | Running step 2: datetime - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 2: datetime - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:44 | As you are using the test mode, the investigation layer will be executed.\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:As you are using the test mode, the investigation layer will be executed.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:44 | Plots generated and saved on the output folder: output/2_datetime\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:Plots generated and saved on the output folder: output/2_datetime\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:44 | Number of images before the sampling step: 35. Total number of images after: 21\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 35. Total number of images after: 21\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:44 | Step 2 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 2 completed\n"
     ]
    }
   ],
   "source": [
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "d02e8220-54be-49a4-8daa-f93c8566065c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:45 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:45 | Running step 2: datetime - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 2: datetime - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:45 | Number of images before the sampling step: 35. Total number of images after: 21\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 35. Total number of images after: 21\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:45 | Step 2 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 2 completed\n"
     ]
    }
   ],
   "source": [
    "# I am happy with the limits. So I will apply the changes and rerun (set \"test\" to \"False\")\n",
    "pipeline.add_step(\n",
    "    \"datetime\",\n",
    "    SamplingLayer,\n",
    "    {\n",
    "        \"mode\": \"datetime\",\n",
    "        \"params\": {\"min\": \"2018-06-11 04:14:00\", \"max\": \"2018-06-11 04:20:00\"},\n",
    "        \"test\": False,\n",
    "    },\n",
    "    2,\n",
    "    substitute=True,\n",
    ")\n",
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "5d908cd4-ce0a-4989-835b-b1645ceee7da",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.images_layer.ImagesLayer object at 0x747dea5148e0&gt;</pre><div>\n",
       "            <div class='ppy-h2 ppy-images-step-header' onclick='toggleMetadata(0, \"jic\")'>\n",
       "                Step 0: raw\n",
       "                <span id='ppy-images-arrow-jic-0'\n",
       "                    class='ppy-images-toggle-arrow ppy-font-color-brown'>▼\n",
       "                </span>\n",
       "            </div>\n",
       "            <div id='ppy-images-metadata-jic-0' class='ppy-images-metadata' style='display:block;'><div class='ppy-images'>\n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-0\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041421.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-0' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-0'\n",
       "                src='data:image/png;base64,[encoded data, 30684 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-1\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041431.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-1' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-1'\n",
       "                src='data:image/png;base64,[encoded data, 30992 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-2\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041441.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-2' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-2'\n",
       "                src='data:image/png;base64,[encoded data, 30448 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-3\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041451.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-3' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-3'\n",
       "                src='data:image/png;base64,[encoded data, 29796 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-4\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041501.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-4' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-4'\n",
       "                src='data:image/png;base64,[encoded data, 29720 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-5\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041511.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-5' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-5'\n",
       "                src='data:image/png;base64,[encoded data, 29300 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-6\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041521.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-6' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-6'\n",
       "                src='data:image/png;base64,[encoded data, 29676 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-7\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041531.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-7' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-7'\n",
       "                src='data:image/png;base64,[encoded data, 29516 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-8\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041541.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-8' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-8'\n",
       "                src='data:image/png;base64,[encoded data, 29600 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-9\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041551.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-9' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-9'\n",
       "                src='data:image/png;base64,[encoded data, 30432 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-10\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041601.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-10' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-10'\n",
       "                src='data:image/png;base64,[encoded data, 29724 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-0-11\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041611.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-0-11' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-0-11'\n",
       "                src='data:image/png;base64,[encoded data, 30888 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            </div></div>\n",
       "            <div class='ppy-h2 ppy-images-step-header' onclick='toggleMetadata(1, \"jic\")'>\n",
       "                Step 1: overlapping\n",
       "                <span id='ppy-images-arrow-jic-1'\n",
       "                    class='ppy-images-toggle-arrow ppy-font-color-brown'>▼\n",
       "                </span>\n",
       "            </div>\n",
       "            <div id='ppy-images-metadata-jic-1' class='ppy-images-metadata' style='display:block;'><div class='ppy-images'>\n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-0\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041421.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-0' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-0'\n",
       "                src='data:image/png;base64,[encoded data, 30684 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-1\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041431.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-1' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-1'\n",
       "                src='data:image/png;base64,[encoded data, 30992 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-2\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041451.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-2' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-2'\n",
       "                src='data:image/png;base64,[encoded data, 29796 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-3\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041511.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-3' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-3'\n",
       "                src='data:image/png;base64,[encoded data, 29300 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-4\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041531.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-4' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-4'\n",
       "                src='data:image/png;base64,[encoded data, 29516 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-5\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041541.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-5' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-5'\n",
       "                src='data:image/png;base64,[encoded data, 29600 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-6\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041551.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-6' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-6'\n",
       "                src='data:image/png;base64,[encoded data, 30432 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-7\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041611.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-7' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-7'\n",
       "                src='data:image/png;base64,[encoded data, 30888 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-8\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041631.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-8' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-8'\n",
       "                src='data:image/png;base64,[encoded data, 30844 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-9\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041651.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-9' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-9'\n",
       "                src='data:image/png;base64,[encoded data, 33640 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-10\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041731.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-10' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-10'\n",
       "                src='data:image/png;base64,[encoded data, 34864 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-1-11\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041751.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-1-11' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-1-11'\n",
       "                src='data:image/png;base64,[encoded data, 38584 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            </div></div>\n",
       "            <div class='ppy-h2 ppy-images-step-header' onclick='toggleMetadata(2, \"jic\")'>\n",
       "                Step 2: datetime\n",
       "                <span id='ppy-images-arrow-jic-2'\n",
       "                    class='ppy-images-toggle-arrow ppy-font-color-brown'>▼\n",
       "                </span>\n",
       "            </div>\n",
       "            <div id='ppy-images-metadata-jic-2' class='ppy-images-metadata' style='display:block;'><div class='ppy-images'>\n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-0\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041421.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-0' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-0'\n",
       "                src='data:image/png;base64,[encoded data, 30684 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-1\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041431.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-1' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-1'\n",
       "                src='data:image/png;base64,[encoded data, 30992 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-2\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041451.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-2' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-2'\n",
       "                src='data:image/png;base64,[encoded data, 29796 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-3\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041511.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-3' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-3'\n",
       "                src='data:image/png;base64,[encoded data, 29300 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-4\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041531.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-4' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-4'\n",
       "                src='data:image/png;base64,[encoded data, 29516 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-5\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041541.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-5' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-5'\n",
       "                src='data:image/png;base64,[encoded data, 29600 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-6\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041551.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-6' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-6'\n",
       "                src='data:image/png;base64,[encoded data, 30432 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-7\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041611.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-7' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-7'\n",
       "                src='data:image/png;base64,[encoded data, 30888 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-8\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041631.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-8' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-8'\n",
       "                src='data:image/png;base64,[encoded data, 30844 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-9\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041651.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-9' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-9'\n",
       "                src='data:image/png;base64,[encoded data, 33640 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-10\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041731.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-10' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-10'\n",
       "                src='data:image/png;base64,[encoded data, 34864 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-jic-2-11\", \"jic\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041751.png\n",
       "                <span id='ppy-images-arrow-jic-image-jic-2-11' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-jic-2-11'\n",
       "                src='data:image/png;base64,[encoded data, 38584 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            </div></div></div></div>"
      ],
      "text/plain": [
       "<paidiverpy.images_layer.ImagesLayer at 0x747dea5148e0>"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Now the outputs were save to the images\n",
    "pipeline.images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "a4f3602e-fdd4-486f-ba7f-eddf5d59dd52",
   "metadata": {},
   "outputs": [],
   "source": [
    "from pathlib import Path\n",
    "\n",
    "polygon_path_json = Path.cwd() / \"../polygons/region_polygon.geojson\"\n",
    "polygon_path_shp = Path.cwd() / \"../polygons/region_polygon.shp\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "057cb8f8-8e13-4c11-8b7b-2991325f65d9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Now I am adding a new step to resample based on obscure images. It is in test mode\n",
    "\n",
    "pipeline.add_step(\n",
    "    \"region\",\n",
    "    SamplingLayer,\n",
    "    {\n",
    "        \"mode\": \"region\",\n",
    "        \"params\": {\"file\": polygon_path_json.absolute()},\n",
    "        \"test\": True,\n",
    "    },\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "8628cd14-116d-44b3-8049-9a9138f98392",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.pipeline.pipeline.Pipeline object at 0x747dec861b70&gt;</pre><div>\n",
       "    <div class=\"ppy-pipeline-wrap\">\n",
       "        \n",
       "    <div id=\"ppy-pipeline-vox-general\" title=\"Click to see more information\"\n",
       "        class=\"ppy-pipeline ppy-pipeline-vox\"\n",
       "        onclick=\"showParameters('general', 'vox')\">\n",
       "        <h2 class=\"ppy-h2\">Raw</h2>\n",
       "        <h3 class=\"ppy-h3\">Type: Raw</h2>\n",
       "    </div>\n",
       "    <div class=\"ppy-pipeline-arrow\"><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-vox-step-0\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-vox\" onclick=\"showParameters('step-0', 'vox')\">\n",
       "                <h2 class=\"ppy-h2\">Overlapping</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        <div class='ppy-pipeline-arrow'><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-vox-step-1\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-vox\" onclick=\"showParameters('step-1', 'vox')\">\n",
       "                <h2 class=\"ppy-h2\">Datetime</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        <div class='ppy-pipeline-arrow'><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-vox-step-2\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-vox\" onclick=\"showParameters('step-2', 'vox')\">\n",
       "                <h2 class=\"ppy-h2\">Region</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        \n",
       "    </div>\n",
       "    <div id=\"ppy-pipeline-parameters\" class=\"ppy-pipeline-parameters-all\">\n",
       "            <div id=\"ppy-pipeline-parameters-vox-step-0\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-vox\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"overlapping\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">omega</span>: <span class=\"ppy-json-number\">57.0</span>\n",
       "  <span class=\"ppy-json-key\">theta</span>: <span class=\"ppy-json-number\">40.0</span>\n",
       "  <span class=\"ppy-json-key\">threshold</span>: <span class=\"ppy-json-number\">0.7</span>\n",
       "  <span class=\"ppy-json-key\">camera_distance</span>: <span class=\"ppy-json-number\">1.12</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"overlapping\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "            <div id=\"ppy-pipeline-parameters-vox-step-1\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-vox\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"datetime\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">min</span>: <span class=\"ppy-json-string\">\"2018-06-11 04:14:00\"</span>\n",
       "  <span class=\"ppy-json-key\">max</span>: <span class=\"ppy-json-string\">\"2018-06-11 04:20:00\"</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"datetime\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "            <div id=\"ppy-pipeline-parameters-vox-step-2\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-vox\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"region\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">file</span>: /mnt/noc/code/paidiver/paidiverpy/examples/example_notebooks/../polygons/region_polygon.geojson\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"region\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "        <div id=\"ppy-pipeline-parameters-vox-general\" class=\"ppy-pipeline-parameters ppy-pipeline-parameters-vox\"\n",
       "            style=\"display: none;\">\n",
       "            <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "            <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">sample_data</span>: <span class=\"ppy-json-string\">\"benthic_csv\"</span>\n",
       "<span class=\"ppy-json-key\">input_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/images\"</span>\n",
       "<span class=\"ppy-json-key\">output_path</span>: <span class=\"ppy-json-string\">\"output\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_type</span>: <span class=\"ppy-json-string\">\"CSV_FILE\"</span>\n",
       "<span class=\"ppy-json-key\">image_open_args</span>: <span class=\"ppy-json-string\">\"PNG\"</span>\n",
       "<span class=\"ppy-json-key\">append_data_to_metadata</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">n_jobs</span>: <span class=\"ppy-json-number\">1</span>\n",
       "<span class=\"ppy-json-key\">track_changes</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">sampling</span>:\n",
       "  - <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">params</span>:\n",
       "      <span class=\"ppy-json-key\">value</span>: <span class=\"ppy-json-number\">1.0</span>\n",
       "      <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"percent\"</span></pre>\n",
       "        </div>\n",
       "    </div>\n",
       "    </div></div>"
      ],
      "text/plain": [
       "<paidiverpy.pipeline.pipeline.Pipeline at 0x747dec861b70>"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "1b2321a3-1cae-44e8-b2c4-429c2220b49a",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:48 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:48 | Running step 3: region - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 3: region - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:48 | As you are using the test mode, the investigation layer will be executed.\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:As you are using the test mode, the investigation layer will be executed.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:48 | Plots generated and saved on the output folder: output/3_region\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:Plots generated and saved on the output folder: output/3_region\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:48 | Number of images before the sampling step: 21. Total number of images after: 12\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 21. Total number of images after: 12\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:48 | Step 3 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 3 completed\n"
     ]
    }
   ],
   "source": [
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "a44305cb-9b52-4f27-b076-ff7aa9be6dd4",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Now I am adding a new step to resample based on obscure images. It is in test mode\n",
    "\n",
    "pipeline.add_step(\n",
    "    \"region\",\n",
    "    SamplingLayer,\n",
    "    {\n",
    "        \"mode\": \"region\",\n",
    "        \"params\": {\"file\": polygon_path_shp.absolute()},\n",
    "        \"test\": True,\n",
    "    },\n",
    "    3,\n",
    "    substitute=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "3d2ea280-0f07-462b-9459-d06f2fa8ec80",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:49 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:49 | Running step 3: region - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 3: region - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:49 | As you are using the test mode, the investigation layer will be executed.\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:As you are using the test mode, the investigation layer will be executed.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:49 | Plots generated and saved on the output folder: output/3_region\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:Plots generated and saved on the output folder: output/3_region\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:49 | Number of images before the sampling step: 21. Total number of images after: 0\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 21. Total number of images after: 0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:49 | Step 3 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 3 completed\n"
     ]
    }
   ],
   "source": [
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "e3f438ba-b4fa-455f-b409-65823260d9e9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.pipeline.pipeline.Pipeline object at 0x747dec861b70&gt;</pre><div>\n",
       "    <div class=\"ppy-pipeline-wrap\">\n",
       "        \n",
       "    <div id=\"ppy-pipeline-xjl-general\" title=\"Click to see more information\"\n",
       "        class=\"ppy-pipeline ppy-pipeline-xjl\"\n",
       "        onclick=\"showParameters('general', 'xjl')\">\n",
       "        <h2 class=\"ppy-h2\">Raw</h2>\n",
       "        <h3 class=\"ppy-h3\">Type: Raw</h2>\n",
       "    </div>\n",
       "    <div class=\"ppy-pipeline-arrow\"><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-xjl-step-0\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-xjl\" onclick=\"showParameters('step-0', 'xjl')\">\n",
       "                <h2 class=\"ppy-h2\">Overlapping</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        <div class='ppy-pipeline-arrow'><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-xjl-step-1\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-xjl\" onclick=\"showParameters('step-1', 'xjl')\">\n",
       "                <h2 class=\"ppy-h2\">Datetime</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        <div class='ppy-pipeline-arrow'><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-xjl-step-2\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-xjl\" onclick=\"showParameters('step-2', 'xjl')\">\n",
       "                <h2 class=\"ppy-h2\">Region</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        \n",
       "    </div>\n",
       "    <div id=\"ppy-pipeline-parameters\" class=\"ppy-pipeline-parameters-all\">\n",
       "            <div id=\"ppy-pipeline-parameters-xjl-step-0\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-xjl\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"overlapping\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">omega</span>: <span class=\"ppy-json-number\">57.0</span>\n",
       "  <span class=\"ppy-json-key\">theta</span>: <span class=\"ppy-json-number\">40.0</span>\n",
       "  <span class=\"ppy-json-key\">threshold</span>: <span class=\"ppy-json-number\">0.7</span>\n",
       "  <span class=\"ppy-json-key\">camera_distance</span>: <span class=\"ppy-json-number\">1.12</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"overlapping\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "            <div id=\"ppy-pipeline-parameters-xjl-step-1\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-xjl\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"datetime\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">min</span>: <span class=\"ppy-json-string\">\"2018-06-11 04:14:00\"</span>\n",
       "  <span class=\"ppy-json-key\">max</span>: <span class=\"ppy-json-string\">\"2018-06-11 04:20:00\"</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"datetime\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "            <div id=\"ppy-pipeline-parameters-xjl-step-2\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-xjl\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"region\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">file</span>: /mnt/noc/code/paidiver/paidiverpy/examples/example_notebooks/../polygons/region_polygon.shp\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"region\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "        <div id=\"ppy-pipeline-parameters-xjl-general\" class=\"ppy-pipeline-parameters ppy-pipeline-parameters-xjl\"\n",
       "            style=\"display: none;\">\n",
       "            <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "            <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">sample_data</span>: <span class=\"ppy-json-string\">\"benthic_csv\"</span>\n",
       "<span class=\"ppy-json-key\">input_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/images\"</span>\n",
       "<span class=\"ppy-json-key\">output_path</span>: <span class=\"ppy-json-string\">\"output\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_type</span>: <span class=\"ppy-json-string\">\"CSV_FILE\"</span>\n",
       "<span class=\"ppy-json-key\">image_open_args</span>: <span class=\"ppy-json-string\">\"PNG\"</span>\n",
       "<span class=\"ppy-json-key\">append_data_to_metadata</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">n_jobs</span>: <span class=\"ppy-json-number\">1</span>\n",
       "<span class=\"ppy-json-key\">track_changes</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">sampling</span>:\n",
       "  - <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">params</span>:\n",
       "      <span class=\"ppy-json-key\">value</span>: <span class=\"ppy-json-number\">1.0</span>\n",
       "      <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"percent\"</span></pre>\n",
       "        </div>\n",
       "    </div>\n",
       "    </div></div>"
      ],
      "text/plain": [
       "<paidiverpy.pipeline.pipeline.Pipeline at 0x747dec861b70>"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "46123b5d-a9bd-4472-956c-146dc368331b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:49 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:49 | Running step 3: region - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 3: region - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:49 | As you are using the test mode, the investigation layer will be executed.\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:As you are using the test mode, the investigation layer will be executed.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:50 | Plots generated and saved on the output folder: output/3_region\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:Plots generated and saved on the output folder: output/3_region\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:50 | Number of images before the sampling step: 21. Total number of images after: 21\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 21. Total number of images after: 21\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:50 | Step 3 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 3 completed\n"
     ]
    }
   ],
   "source": [
    "# Now I am adding a new step to resample based on obscure images. It is in test mode\n",
    "\n",
    "pipeline.add_step(\n",
    "    \"region\",\n",
    "    SamplingLayer,\n",
    "    {\n",
    "        \"mode\": \"region\",\n",
    "        \"params\": {\"limits\": {\"min_lon\": -153.608, \"max_lon\": -153.605, \"min_lat\": 11.251, \"max_lat\": 11.253}},\n",
    "        \"test\": True,\n",
    "    },\n",
    "    3,\n",
    "    substitute=True,\n",
    ")\n",
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "cf112730-95b5-44d8-a669-694700b226d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:50 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:50 | Running step 3: obscure - SamplingLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 3: obscure - SamplingLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:50 | As you are using the test mode, the investigation layer will be executed.\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:As you are using the test mode, the investigation layer will be executed.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[93m☁ paidiverpy ☁  |    WARNING | 2025-09-11 16:54:51 | Plots generated and saved on the output folder: output/3_obscure\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:paidiverpy:Plots generated and saved on the output folder: output/3_obscure\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:51 | Number of images before the sampling step: 21. Total number of images after: 21\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Number of images before the sampling step: 21. Total number of images after: 21\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:51 | Step 3 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 3 completed\n"
     ]
    }
   ],
   "source": [
    "# Now I am adding a new step to resample based on obscure images. It is in test mode\n",
    "\n",
    "pipeline.add_step(\n",
    "    \"obscure\",\n",
    "    SamplingLayer,\n",
    "    {\n",
    "        \"mode\": \"obscure\",\n",
    "        \"params\": {\"min\": 0, \"max\": 0.8, \"channel\": \"all\"},\n",
    "        \"test\": True,\n",
    "    },\n",
    "    3,\n",
    "    substitute=True,\n",
    ")\n",
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "54cf44de-8363-475a-86a0-028d45fc4aee",
   "metadata": {},
   "outputs": [],
   "source": [
    "from paidiverpy.colour_layer import ColourLayer\n",
    "\n",
    "pipeline.add_step(\n",
    "    \"grayscale\",\n",
    "    ColourLayer,\n",
    "    {\n",
    "        \"mode\": \"grayscale\",\n",
    "    },\n",
    "    3,\n",
    "    substitute=True,\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "accc9be2-2c81-42b5-8253-f8e253386add",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.pipeline.pipeline.Pipeline object at 0x747dec861b70&gt;</pre><div>\n",
       "    <div class=\"ppy-pipeline-wrap\">\n",
       "        \n",
       "    <div id=\"ppy-pipeline-asx-general\" title=\"Click to see more information\"\n",
       "        class=\"ppy-pipeline ppy-pipeline-asx\"\n",
       "        onclick=\"showParameters('general', 'asx')\">\n",
       "        <h2 class=\"ppy-h2\">Raw</h2>\n",
       "        <h3 class=\"ppy-h3\">Type: Raw</h2>\n",
       "    </div>\n",
       "    <div class=\"ppy-pipeline-arrow\"><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-asx-step-0\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-asx\" onclick=\"showParameters('step-0', 'asx')\">\n",
       "                <h2 class=\"ppy-h2\">Overlapping</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        <div class='ppy-pipeline-arrow'><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-asx-step-1\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-asx\" onclick=\"showParameters('step-1', 'asx')\">\n",
       "                <h2 class=\"ppy-h2\">Datetime</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Sampling</h2>\n",
       "            </div>\n",
       "        <div class='ppy-pipeline-arrow'><svg class='icon ppy-arrow-right'><use xlink:href='#arrow-right'></use></svg></div>\n",
       "            <div id=\"ppy-pipeline-asx-step-2\" title=\"Click to see more information\"\n",
       "                class=\"ppy-pipeline ppy-pipeline-asx\" onclick=\"showParameters('step-2', 'asx')\">\n",
       "                <h2 class=\"ppy-h2\">Grayscale</h2>\n",
       "                <h3 class=\"ppy-h3\">Type: Colour</h2>\n",
       "            </div>\n",
       "        \n",
       "    </div>\n",
       "    <div id=\"ppy-pipeline-parameters\" class=\"ppy-pipeline-parameters-all\">\n",
       "            <div id=\"ppy-pipeline-parameters-asx-step-0\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-asx\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"overlapping\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">omega</span>: <span class=\"ppy-json-number\">57.0</span>\n",
       "  <span class=\"ppy-json-key\">theta</span>: <span class=\"ppy-json-number\">40.0</span>\n",
       "  <span class=\"ppy-json-key\">threshold</span>: <span class=\"ppy-json-number\">0.7</span>\n",
       "  <span class=\"ppy-json-key\">camera_distance</span>: <span class=\"ppy-json-number\">1.12</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"overlapping\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "            <div id=\"ppy-pipeline-parameters-asx-step-1\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-asx\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"datetime\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">min</span>: <span class=\"ppy-json-string\">\"2018-06-11 04:14:00\"</span>\n",
       "  <span class=\"ppy-json-key\">max</span>: <span class=\"ppy-json-string\">\"2018-06-11 04:20:00\"</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"datetime\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "            <div id=\"ppy-pipeline-parameters-asx-step-2\"\n",
       "                class=\"ppy-pipeline-parameters ppy-pipeline-parameters-asx\"\n",
       "                style=\"display: none;\">\n",
       "                <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "                <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"grayscale\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"colour\"</span>\n",
       "<span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">params</span>:\n",
       "  <span class=\"ppy-json-key\">method</span>: <span class=\"ppy-json-string\">\"opencv\"</span>\n",
       "  <span class=\"ppy-json-key\">invert_colours</span>: <span class=\"ppy-json-number\">False</span>\n",
       "  <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "<span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"grayscale\"</span></pre>\n",
       "            </div>\n",
       "        \n",
       "        <div id=\"ppy-pipeline-parameters-asx-general\" class=\"ppy-pipeline-parameters ppy-pipeline-parameters-asx\"\n",
       "            style=\"display: none;\">\n",
       "            <h4 class=\"ppy-h4\">Parameters:</h4>\n",
       "            <pre class=\"ppy-json-block\"><span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"raw\"</span>\n",
       "<span class=\"ppy-json-key\">sample_data</span>: <span class=\"ppy-json-string\">\"benthic_csv\"</span>\n",
       "<span class=\"ppy-json-key\">input_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/images\"</span>\n",
       "<span class=\"ppy-json-key\">output_path</span>: <span class=\"ppy-json-string\">\"output\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_path</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">metadata_type</span>: <span class=\"ppy-json-string\">\"CSV_FILE\"</span>\n",
       "<span class=\"ppy-json-key\">image_open_args</span>: <span class=\"ppy-json-string\">\"PNG\"</span>\n",
       "<span class=\"ppy-json-key\">append_data_to_metadata</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/metadata/appended_metadata_benthic_csv.csv\"</span>\n",
       "<span class=\"ppy-json-key\">n_jobs</span>: <span class=\"ppy-json-number\">1</span>\n",
       "<span class=\"ppy-json-key\">track_changes</span>: <span class=\"ppy-json-number\">True</span>\n",
       "<span class=\"ppy-json-key\">sampling</span>:\n",
       "  - <span class=\"ppy-json-key\">name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">step_name</span>: <span class=\"ppy-json-string\">\"sampling\"</span>\n",
       "    <span class=\"ppy-json-key\">test</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">params</span>:\n",
       "      <span class=\"ppy-json-key\">value</span>: <span class=\"ppy-json-number\">1.0</span>\n",
       "      <span class=\"ppy-json-key\">raise_error</span>: <span class=\"ppy-json-number\">False</span>\n",
       "    <span class=\"ppy-json-key\">mode</span>: <span class=\"ppy-json-string\">\"percent\"</span></pre>\n",
       "        </div>\n",
       "    </div>\n",
       "    </div></div>"
      ],
      "text/plain": [
       "<paidiverpy.pipeline.pipeline.Pipeline at 0x747dec861b70>"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "e64aad73-97e4-462a-9c2d-5c59a99ef04a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:54 | Processing images using 1 cores\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Processing images using 1 cores\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:54 | Running step 3: grayscale - ColourLayer\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Running step 3: grayscale - ColourLayer\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[92m☁ paidiverpy ☁  |       INFO | 2025-09-11 16:54:54 | Step 3 completed\u001b[0m\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:paidiverpy:Step 3 completed\n"
     ]
    }
   ],
   "source": [
    "pipeline.run()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "ff2639ac-8e70-4bbe-afc7-469c99af9077",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>&lt;paidiverpy.images_layer.ImagesLayer object at 0x747dea5148e0&gt;</pre><div>\n",
       "            <div class='ppy-h2 ppy-images-step-header' onclick='toggleMetadata(0, \"dvx\")'>\n",
       "                Step 0: raw\n",
       "                <span id='ppy-images-arrow-dvx-0'\n",
       "                    class='ppy-images-toggle-arrow ppy-font-color-brown'>▼\n",
       "                </span>\n",
       "            </div>\n",
       "            <div id='ppy-images-metadata-dvx-0' class='ppy-images-metadata' style='display:block;'><div class='ppy-images'>\n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-0\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041421.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-0' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-0'\n",
       "                src='data:image/png;base64,[encoded data, 30684 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-1\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041431.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-1' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-1'\n",
       "                src='data:image/png;base64,[encoded data, 30992 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-2\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041441.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-2' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-2'\n",
       "                src='data:image/png;base64,[encoded data, 30448 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-3\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041451.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-3' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-3'\n",
       "                src='data:image/png;base64,[encoded data, 29796 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-4\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041501.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-4' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-4'\n",
       "                src='data:image/png;base64,[encoded data, 29720 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-5\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041511.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-5' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-5'\n",
       "                src='data:image/png;base64,[encoded data, 29300 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-6\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041521.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-6' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-6'\n",
       "                src='data:image/png;base64,[encoded data, 29676 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-7\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041531.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-7' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-7'\n",
       "                src='data:image/png;base64,[encoded data, 29516 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-8\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041541.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-8' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-8'\n",
       "                src='data:image/png;base64,[encoded data, 29600 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-9\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041551.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-9' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-9'\n",
       "                src='data:image/png;base64,[encoded data, 30432 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-10\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041601.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-10' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-10'\n",
       "                src='data:image/png;base64,[encoded data, 29724 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-0-11\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041611.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-0-11' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-0-11'\n",
       "                src='data:image/png;base64,[encoded data, 30888 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            </div></div>\n",
       "            <div class='ppy-h2 ppy-images-step-header' onclick='toggleMetadata(1, \"dvx\")'>\n",
       "                Step 1: overlapping\n",
       "                <span id='ppy-images-arrow-dvx-1'\n",
       "                    class='ppy-images-toggle-arrow ppy-font-color-brown'>▼\n",
       "                </span>\n",
       "            </div>\n",
       "            <div id='ppy-images-metadata-dvx-1' class='ppy-images-metadata' style='display:block;'><div class='ppy-images'>\n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-0\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041421.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-0' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-0'\n",
       "                src='data:image/png;base64,[encoded data, 30684 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-1\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041431.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-1' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-1'\n",
       "                src='data:image/png;base64,[encoded data, 30992 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-2\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041451.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-2' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-2'\n",
       "                src='data:image/png;base64,[encoded data, 29796 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-3\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041511.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-3' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-3'\n",
       "                src='data:image/png;base64,[encoded data, 29300 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-4\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041531.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-4' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-4'\n",
       "                src='data:image/png;base64,[encoded data, 29516 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-5\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041541.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-5' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-5'\n",
       "                src='data:image/png;base64,[encoded data, 29600 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-6\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041551.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-6' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-6'\n",
       "                src='data:image/png;base64,[encoded data, 30432 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-7\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041611.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-7' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-7'\n",
       "                src='data:image/png;base64,[encoded data, 30888 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-8\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041631.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-8' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-8'\n",
       "                src='data:image/png;base64,[encoded data, 30844 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-9\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041651.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-9' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-9'\n",
       "                src='data:image/png;base64,[encoded data, 33640 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-10\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041731.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-10' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-10'\n",
       "                src='data:image/png;base64,[encoded data, 34864 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-1-11\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041751.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-1-11' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-1-11'\n",
       "                src='data:image/png;base64,[encoded data, 38584 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            </div></div>\n",
       "            <div class='ppy-h2 ppy-images-step-header' onclick='toggleMetadata(2, \"dvx\")'>\n",
       "                Step 2: datetime\n",
       "                <span id='ppy-images-arrow-dvx-2'\n",
       "                    class='ppy-images-toggle-arrow ppy-font-color-brown'>▼\n",
       "                </span>\n",
       "            </div>\n",
       "            <div id='ppy-images-metadata-dvx-2' class='ppy-images-metadata' style='display:block;'><div class='ppy-images'>\n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-0\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041421.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-0' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-0'\n",
       "                src='data:image/png;base64,[encoded data, 30684 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-1\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041431.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-1' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-1'\n",
       "                src='data:image/png;base64,[encoded data, 30992 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-2\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041451.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-2' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-2'\n",
       "                src='data:image/png;base64,[encoded data, 29796 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-3\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041511.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-3' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-3'\n",
       "                src='data:image/png;base64,[encoded data, 29300 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-4\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041531.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-4' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-4'\n",
       "                src='data:image/png;base64,[encoded data, 29516 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-5\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041541.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-5' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-5'\n",
       "                src='data:image/png;base64,[encoded data, 29600 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-6\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041551.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-6' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-6'\n",
       "                src='data:image/png;base64,[encoded data, 30432 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-7\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041611.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-7' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-7'\n",
       "                src='data:image/png;base64,[encoded data, 30888 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-8\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041631.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-8' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-8'\n",
       "                src='data:image/png;base64,[encoded data, 30844 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-9\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041651.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-9' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-9'\n",
       "                src='data:image/png;base64,[encoded data, 33640 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-10\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041731.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-10' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-10'\n",
       "                src='data:image/png;base64,[encoded data, 34864 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-2-11\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041751.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-2-11' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-2-11'\n",
       "                src='data:image/png;base64,[encoded data, 38584 characters]'\n",
       "                class='ppy-images-img'/></div>\n",
       "            </div></div>\n",
       "            <div class='ppy-h2 ppy-images-step-header' onclick='toggleMetadata(3, \"dvx\")'>\n",
       "                Step 3: grayscale\n",
       "                <span id='ppy-images-arrow-dvx-3'\n",
       "                    class='ppy-images-toggle-arrow ppy-font-color-brown'>▼\n",
       "                </span>\n",
       "            </div>\n",
       "            <div id='ppy-images-metadata-dvx-3' class='ppy-images-metadata' style='display:block;'><div class='ppy-images'>\n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-0\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041421.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-0' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-0'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/AO6xikNMIphFMYVERzTWFNxminAc08DmplFTpU6ipVFSKKqYpjCoyKYRTGFMI5pjCmGgCngVKoqZBUqCp1qQVKKqEcVGwphFNIqNhTCKjbrTCKUCpAKlReKmUVKoqValUU8CqzVGwqM0hFMaoz0qFutJjinqOakVamQVIF5qRRUqipQKeBVVqjIpmOaaajao2qM0gFPAqVRUyDFSKMipAKkUVKBTwKqGmEcUzFRtUZ5phFMK4ajHNOAqZRxUg6VIoqVVqRRipVp4qmRTT1qJqic1HSe9NNIBTwKlXpUiiplFSqKkAqQCngVTIqM9ajfljULVGetJTactPFSKKeoqZamWpAKeKeKpkVE1Qsajaoj1pKMUqipAKkFPWpVqZalWninCqbGoHPNQscVGxpvWk707GaUU4U8U8VItTKalU1ItPFZ7VC3Wo2qJutNz60U4UtOFOFPFSKealU1KtSrUgrNc1ExqM1GelNop1GaUGpBTxTxUq1KtSr0qVTWWx4qM1GaYabRS0maVTUgNPWpF61KtSqalWpVNZLGmE8U0mmZpCOM0lBNNpQakBqRTUi1KDUimpQealU1ksajJpCeKbSUhNJmjNIDUgNPU1KpqRTmplp461KprLOMVG+O1MJ4oB4pppCaTNFFPU08GpFNSoamU09TUqmv/2Q=='\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-1\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041431.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-1' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-1'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/AOwxxSYyaawqI+lBWjbTgtLjNPVcVIoqUCngVItPUVKBTwKyCKb0prGo8U/HFIR6Cj+VOAqQCngVKq1IFp4WpFWpAKeBWQRxTSOKjIzSYoxQRQRz1pyipAM09RUyipAKeBUiipQKUCsikIphHNNIoxTTSd6eB3qRRxUiipFFSrUqipAKkApwFYvSkJphoxzTTwaTtSY5qRRUiipFFSqKkAqVRUiipAKUViGm000UYzTSO1GKetSDiplqRakAqRakWpBTsViEcUwjHamkZpAKcBSEUmKUVIvWplqVRUop4FSKKfTxWKRnimEUw0AUvSg0mKMYp69amWplqQVItSilHWpFrGaozTMUClIoxRSU9RUoqValFSipAaUVItZBFRsKjooHWlzSUtOFPXrUyVKKkWpBTlqRayj0qNqiNJRRQOtLTgKkFSLUqmpFqQGnA1ItZbVGx4qLk0lJR0opw5p4pwqRTUimpVNPBp4NPU1mmomHrTDxTabSUoNPB5pwNOzT1NSKealBpwPFPU1IKziajamGo2NJnFJmjNOVqcDUgNOFSL1qQGnA1Ip5qYHiswmmMajNMOabRRQDTgTUoNPBp4NPBp6mpVNSqazvrUb1ETSUyg9KTPNKDTgaepp4NPBqRTUgNSKalU1//9k='\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-2\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041451.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-2' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-2'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APRiM9KiZajIxTCKYRTcUmKcBUiipAKeBTgKcBTgKcBTwKYwqJu/vUTCmkUw0wikxTgKeoqVRTgKcBThTxTgKcBTGAqMiomHNMIphFNNIKcBT1FSgU4UtOApwqQCnAUwio2GKiamEUwimEUAU4U9RUgpwpacKcKeKeKY3FRtioiKYelMNN6mgUoHepBTxTqUDNKKcKkFPUU1qhYUwimEUwimEUAUop4p608U6lxSinA1ItNbNRvzzUZFNIpjUwikxSinCpFp4pwpaUU4CpFprVE1MNNPFRsaZRS0op4qQU4UtKKcKkWkbpUZFRmo2phFMNJSinCnipB0pwpaWnCpFpGqNqiY0w1GTTTSUopwpwNSCnCnClFPFSLTCaYaiPNRtTDTTTaUU6nCng08U4U6nCpFqImkPNRE80xqYx5pppKKWninA04Gng04U8VItQZFNJphNRmm000lLSilBp2acDTwacDUi1KtVc0hNMJphNNptGaAaXNKDSg04Gng08GpFqVTVTdTCaQmmMabmkJpM80Zpc0uaXNOBpympBUimpVNU+KaTTSaYTTc0Z4pKM0ZpwNLmlB5p4PNSA1IpqVTX//Z'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-3\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041511.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-3' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-3'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APRse1IaaRTStRkUhFNIpuKQigLTsUlSIKlUVIFqQCgimEU0ikNMIppFMIpMUmKcBQRxQBzUqipFFSqKkAppFNIphFNIppFMNNxTSKAKcBRilUVKoqQCpQKeBTSKYRTDTTTTTcU0jimYpQKWinAVIlSgVItSCmGmHimEU00w0hpppuKBS0uKcBTk61MKkFSAU01G1NNMIphpCKaaaRSUopwpaetSipFqVaYaa1MPSmGmGm000mKMUuKWlHNSLTxUqVIKYaaaYaaajNNPWkoxRiigU4U9akFSLUq1GaYaaaYaYTTDRS0YopKcKetSCpFqVaiJphppphphpKSloNFFANPWpVNSLUq1EaYaYajJppNNzS0ZopaQ0U9TUq1KtSCoie9MNMY1GaaaTNJS5ozzS0hNAp4NSKamU1IDUJpjGmk1GTTTSUUA0hNLmijNOBqRamU1KpqAmmE00nFMJpppKTNGaM0ZoozTgalU1KpqRTUBNMJphNJmkJppNGaKTNLmjNFOBqRTUqmpFNQE0wn0pppKaetITxSZozSUuaM0A08GnKalU1Ipr//Z'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-4\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041531.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-4' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-4'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APSWFRMOajIph6VGaTHNL3pcUoFSKKeBTh1p4FPAp2KcBTWqFhUbCmEZFMYU3FAHOacBTsU5RTwKeBTwKeKcBThTGqNhUTCmYphFNxSgUU4U4U8U8CnqKeKcKcKY1Rnio2FR01hTcUUU4U4U8U8CpBThThThTCKY3SomFRnrSYppFJSCnCpBTgKeKeKeKWnCmNTGqMiozTaQ02ilFSinU4VIKeKWlFIajPrUbUwioyKDTaMd6cKeKcKeKeKcKWnCkPNMNRkZppFRmm0lGaXpThTxTxThSg04U8U00w0w9aa1RmmGilFApwpy0/NKDThTxTxTaY1MNMJqMnFJ2pKWl7UoxThTs0oNOBqQU4U3NI1RmmNTCKbSGilBpacDS5paeKetPFMzQx4qM000w0lNpBRnmlzTs0ZpympAakFOFMpCcU3NNPtTDTT0ptJS0nOaXNGaepqQGpFNSCo80wmkpCaYTSGmGkFL0pSabmlzSg1KpqRTUgNRFqbmjNNJpKaTTTSUZpT0qMnmnZpRzUqmpAakU1Dmmk80bqKSmmkpDTehpSajJ5pwPFLmpFapAakU1//Z'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-5\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041541.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-5' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-5'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APRsUhHFNPSompMUhFNxS4pcUoFPAp4FPAp4FLS4ppFNPSmGozSEU0ikoA70tOAp4FPFOFOpRTqCKjI5phFREUY4oI4puKMUAU4CnininClpRT1pzCoWph600im000lAGaWlApwqQU4UGlFPFSMKiYc1ERg0hHrUZpKTFGKUCnAU4Cn0oo704U8VIahbrTGFMNMNNpKUUtPApwFLS0tKBTxUrVC3WmnpUTUw03NJThThThThS9qKUU4U4VKeRUJ601qjOO9RGm0CnCninUUtAp1OFP7U9qjamN0qI1G1MpRThTxTqKKUUtPBp4p5qMnmo2qNqjPNNopwpwp1GaKUGlBp4qQU9qiao2phph5pmKOtKDk0+lzSZoFOFOFPFPWpCaiaomphpp6UhptC9akBpDSZpQacDTxThUi06mNURppphpDTDTgKWgmkzSilBpwNPFSLTyaYxqM80w0000mm96cKM0hNGaM0oNOB5p4NSqaXNNJppNMNNY0wmkHWijNJmjNHUUoNOBpwNSKaXNBNNzTSaYTTKXNGabmkozS7qM0oNPU08Gv/2Q=='\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-6\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041551.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-6' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-6'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/AO+4IphAzRt9qAuKdtyelOC4oxSHpSYpRS4p2KcBingU8ClxVHnbnPenomak2Adqbto20uOKQ00ikpRThTqcop4pwFPxVALzVhF4pSQKTGRxSbcU0jFJikIpvSlxzThSinrUgFOAp4FU1X5hU2MCm45o6GlxxTW6Uw0hpvelFKKXvT1qUU8DmngVAq04j5aj6UEcUCmmmGkpKUUtFPWpRTxUgqHFBplDUe9Mam4puKTFOFLikxT1GKlWnipBUZ70w02kpaY1NpOooxTgKKTvTxUi08VItRMRmmZyeTRSdqM0xqaaBS0tJSd6eKetPFSCosZOaaaO1IabmkamGlFFOFFJSinjinqakHNNPSmHpTe9IxpmaCabQKdS0UUop1KOalWmlqYTTc01jTM0tJ3pQKd0FIaKWlFOpQakU1AXpAxI5ozTWNMzTs96TvTlpc0hNGaUGnZpaUU9TVMsQaA1OBzQ1N707PFAoFOzSE0lOBpwpRS08GqR60dDxT1pSKb3opQaXNJmlzSZpwpQacDS5pQar0mOacvFLTe9JmlBoNGaM0Zpc0oNPB556UZozUK470E80A0760hpAKOlGaTNLmkzRmnA07NGaM1//9k='\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-7\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041611.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-7' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-7'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APSsUwio2FRkdqiZeaTbSbaaV9qaFNOVaeqYNTKvNTKKeOaMU4CnU0io2FRsKYRTQKGXANRbSDTgtOVakC808CnqKeKWnDpS4ppqM9ajYUw8igLSkVGRihaeKcKeBTwKdilApwHFONRtTDUbiowDnmn44oJ4qM0lPHSnjpSipBThTgM08Cgj5aYajNMYdaZ2o6LTaaaBT8cU4U4U8U4VIBTwKaaYetMIphqPHNIx4pgpDThTx0pcU4dakWnAc09akFMJppphphphHNMIpMYHvTT1pwp45pwFOFPFOFPFOFRk4pKY3FMNJTDSYpMDFKKcop4p1OFOFPFPqDNJmmnk0hptNxQRTaVelPFOHSlFOpwpwp4NQHNNPWkzzSE80nPXtSUlJ2o6U4HJp4pwpwpaVakFQE03vmm5pM0lFJQKTFOFPFKKfSjpSjrTxVcdKQ000lFJRRSZ5p4pwpwpaUGnA06q2aCaaTRRSUUhpKkFKKcKWjNPBp4qnmgt2oBz9KM0Zo7UlJRTxTqM0uaM804Gng1TD5oJxQGozS5pQaSgnikHWng08UhNGaM0oNPBqkpApzH8qb0pQadmlzxSZpSaQGninZpCaM0tLmgHmv/Z'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-8\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041631.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-8' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-8'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/AOxAoxmnAUoFLikIpMcUoFPUU/FOAoK0YqF15qMikC08DilxQBzTwKTFIRxSYzTgKeop4FLiloIqNhmo/LyaCuOKAOKXFGKcBxSNTMUoHNSBaUCnqO9OIpKKTaDQVHamsvGajAxS4oxThwKa1NA704DmpAKdinAUpFNNLjNKFwKNtIVzUGKXrSkYoqNuTSingdDTwKeBTgKXGaYRzTlXNO200ikxVfFKBSmkPSmdTmgCpBUiin0tLRinAUuKTZSbKrDpRig9KaelNxzSgU4dalXmngUuKdikpwpwpcUhFUwOKWmmkxkU2nClqROlSUopaKUU8UoFLiqJ7UGmmk7UmKUdKUdaevSng04U7pSilApwp4pcVnUE0hoptKOKdilzxxT1PFSA0tO6UZp9OBpc1ncUmaOtFNP1pM0+gU9TUop4paKcDS96dWbmjNGcUtIeDSUtKOlPWpRThThS0UtOzWbRSjrmiikpaUVIKfmlBpQaeDS07rSVm9qXNOzwPWg9KKb3pacpp4NOzRmnA08GnCng0GswUtKKWikpAacKdmnbqM04Gng08GnA0tZq470uRQDS5pKDRSg0ZpwNLnilBp4NPBp4NLmv/9k='\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-9\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041651.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-9' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-9'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/ALRT5ai2fMc09Fww4q2qjFTqvy4qVRgVMg4p+3NJt55pCmT9aaYwDRilK09VzipQoxxS44rAK4HSoDwxqSMZx7VbRfxqwF47U9R2qVRipMcUpWjHGKRlpmMClxTh2qUdKdtrnyuTmopVznFLCDirkXIqZOlSKMmplGafjinCjFI3SoWxmnKM81IADUyr2p4Wudwep6U3ANP2AYxT0HzVYBzxUi8Gplp4HFKBxinHpimMOcVGV5p68AZqRRzUy1IBxXM4xwKXyz1pVznBqZARUqjoTTgcVMnPSpV6U4Up6U3FN296eAKei4NSqKkA4rn9mT0pdvykUgXvUyrT8AUm2nJwamVuafmlyaWnY4pQuKkApwFPHTNYQxTWbnpSKSWFWB0oJ5p1KBzUirT+lGaUVIpzT+3vTl5H9acAaeOlYQHrUbgn60qj5QRUmSBilU5NSAcVJgU8dKQk4oGd1PxxT1qTGTT1HFP4pelY5qFhk8U5UobrTkGDUopcmnA08Yo6U4dRTx2qXA7VIop2KMcVjNwKaACc4pw4puPmzT16U6gUA1KDkU7pTwKcoxUq1JS5pRzWOy5PtQFAFIeKYSc80ueaXdigGpFGRUiCpMUop61LSg8U4+lKKyiwpu6mk8c1GT0pRmgdc5p30qVD+tTKKeBS0q9akzTxzTsU6sbpUecGo2fJoBzmnngUA09eTUqip1p9KBR3pw61KBipKUDNYjGon6VASSalA4FKTjmlUE1OigVIo5xUy08DmlopykVIDTlNPBrDbpmomJqMctipdpxwKQKfSpFXA5qZOaeow1TCpB0pDwaTNKKetPBpQ1ZShMfOT+FQXCop+U5HrUcfWp1UFTk4NIiEfWpCCMZzT0J3VMKeDT84FGc800nFIG5p6tUgpy1//9k='\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-10\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041731.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-10' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-10'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/ANt03UgQj3oZKFWnheKjdcE0gGadjPGKcBjinLTxTqTtSe1LTWHanmPNN2YNNxQBTgOKY49qjIFKOadjNOUU/pSgZFKRUZ6gU7tSAZNWCvXioyOSDSFQaNvFJtxTWGaYV5o20Uo4pQamUDHTmhgMVGQKTNOWrDDPNMIpuOcU4dMUjCmlaYR+NNxRjmlx6U5VzzUyrikfoaiIpCAMe9OFWnGKYQKTbkZpBwaU80080wikI9ab3pyr3qRRTqRuTUZHOaQgd6UDirjDg1Ewpop2KQimGmkCgkdKjbilVh0qRTT8cUhphHNNIzTh92rh5qNhxTAMU76UGmMKjLcVH05pcZAoAwacDyKkByKXOKYaULgZpCOKuGo2HOabijGKSmnpUTCm9qM54FLSgYpwOO9LmjFPI6VGw4q6aYw5pgPNITTc4phNNJzxTOp6UdPelBzQxxTVOak9+9PB6UvekYjFXMZph61GfvUhphNMY8Go1PNOzxTD0pRjOaCDTcfMO1Sg5NPHPWgtimM2TV7NNbrzTMUwnmmHpUTnANMzzxS5pfrSDjjtS5xSd6XPNP3YprPTA3NaGc9DSZzSE1E9NzxUMh5+tRjg5zS5x9KAacp596dTc/Nik3Ubu1NY55pqnBrRXrTvxpjVEx70wtgcVGxzUecUE0q/pThkcmnBwTTSeTzTfTignmjNIBhq0AeKUtims1QsajPSmd6axGc00+9AbGMU8kHFNIIPHFLnmhSM0jdaRc5zTwMtV0nPSmk0hP6Uw8nNRkH0phyO1N689qYTyeKbuxzUinoP0NBbmgYwfWk3cn1oJp69qeOBVtAgALkj0Apsu0EbDkGomamxqGD7nC4GQDnmoiDuCjOT04pzq0ar94E9QwpglcHBoknCBchWyOeOnNVxdIzbfKxz2NSSShVUhRhhn6c//WqJLj5vmGVzmphKuwMU4NM8xQSNvP1pdw3EEEEdaep5qTOOK//Z'\n",
       "                class='ppy-images-img'/></div>\n",
       "            \n",
       "        <div>\n",
       "            <p onclick='toggleImage(\"image-dvx-3-11\", \"dvx\")' class=\"ppy-images-image-p\" >\n",
       "                Image: 20180611041751.png\n",
       "                <span id='ppy-images-arrow-dvx-image-dvx-3-11' class='ppy-images-toggle-arrow ppy-font-color-brown'>▼</span>\n",
       "            </p>\n",
       "        \n",
       "            <img id='image-dvx-3-11'\n",
       "                src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCACAAIABAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/AHbBj3pQMnH60jdTxSe+Kmj+btQ64NJgkVCyHPA+tJtHcge1Tw4wVzUqjPFMkUYqAphTVcjk00rj6U3AxxWkq7qftA4qN04qEnBxU8fAz3qQgMaXbxUEq8nGahKkU8ICRg4NTB9p5NOPzYpjAEe9VzH82SaQxgd6hcenWtHGOlOAJpX6c1VdBkVNGAPSrCJmn7feoJEquUxSDjr0ofnBBNPDEAfSnEblyPyqI564qJuvWoyO9a3l5NAQqeh5odOMVXaMnIAzzUkcRHWrAG1aQnvUTYxyeagkODURORSBhikEoBIJ4p4mGMU0yfN7GmycEU0jNdD5WOaQx4zxUTRnNM8vBpGOzrSZLDPSopCcVCSQcg004YVC5CjNVXuFHIFV3ut/OMEVPFIGGM1KzArjPIoV+NpP0oyc11YwaGXFQuMcmoXYCq8hBpo4NJJ93NV+1NfgYHaoJcnvVGVcZNVJOB60iOV5Bq9EWMfJOetTEZHHWngbhuHUda6lSeTTt4IqGQ8Y7VVkPNQk5IxRmmscrUDDFNY/LULH1qpOMKD0rPlPrSwKCegzV+MdSe1HmZzToHIYmunDe9OZufemluuaruf1qMjk4qMnHXNGeKY3SoX4JqFsbqrXAwtZ0nJqWBemKuqu3iq8isj5xkehqZFwvuT1rpwRijPvTWPAqLqTxQVIqFgBSZ96Yx/Ooj0qtJw1VbhstjtVMn5hxwKuQqCMjvVpV4GagmGMHBNOVhgcdK6DJA4oX1J5NKcUi96azcH0qBuWpp+XGKY3fNRPkA4qpNnGe/rVJmyeelQuCTkdqswEqMZ5q+p4yDUTjOc+tRMCj4A610BalzleKAwxTl5GRTGGO1MKjNRsaj700j0FV5VBGO1UJIcE4qudwPIwPepYyC+ARV2NsAZ4OKHYEcGo3IH19K1lmD8qQR9amD+/FITmpEbIxSk55qOTjNVyefSozweaax596aRnqKa0AKk4+lVGjPmDsRUBRlIIHT2qVH3Ken4UrE44qHccEN1rRtVCcqScDBz61cDfnT93HJ6Uqmnh+1Mdsrmq78+ue1MJx159aYASR9elSY5608jjFVnXnjg+9RSpleOtUTlJCPXkU8MT7U1+2K1YQUiVfQdalHOKlBBNIGGT2pQ5xwaCxPFIUJ7cVE6c0EcA0o4+lAPBqBjg0wnjFUJh+/PHB9KYDjkZppYnrj8K2Y2H51Kpweaaz7egznrT1VmXcOc+9SKjDPyn8aftIycUnSoyMjNMbjFN78mnnpnFVpOtQlwDioZBk1GqhT8w/AUhXJzgc+lblnDapEsl5I67uVSPr9adeRwR4NtKZI2XIz1HsazjIWkCDj1q9ZwxyJKXkVdq/KCDyfwoMb7woyWPQVO6vDEm7crnOQwPSovPlXg9enSla4CBdwRtwyePunNRtdRkf6ofnTJ5lRUIRRvXd16c4x+lQm6VOWTcM9M017yIRLI8BCsSFOODj8apfbrdmIMTFsYGG4J96klkVZXjKFZEO1+eBjj/ADzTdh5OaY2VFf/Z'\n",
       "                class='ppy-images-img'/></div>\n",
       "            </div></div></div></div>"
      ],
      "text/plain": [
       "<paidiverpy.images_layer.ImagesLayer at 0x747dea5148e0>"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline.images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "44e5d875-5b52-425e-87ba-c02186ce0a20",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
       "<defs>\n",
       "<symbol id=\"arrow-right\" viewBox=\"0 0 330 330\">\n",
       "  <path id=\"XMLID_222_\" d=\"M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001\n",
       "\tc-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213\n",
       "\tC82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606\n",
       "\tC255,161.018,253.42,157.202,250.606,154.389z\"/>\n",
       "</defs>\n",
       "</svg>\n",
       "<style>/* CSS stylesheet for displaying Paidiverpy objects in jupyterlab.\n",
       " *\n",
       " */\n",
       "\n",
       ":root {\n",
       "  --ppy-font-color: var(--jp-content-font-color, rgba(0, 0, 0, 1));\n",
       "  --ppy-font-color-brown: var(--jp-content-font-color-brown, brown);\n",
       "  --ppy-font-color-olive: var(--jp-content-font-color-olive, olive);\n",
       "  --ppy-font-color-teal: var(--jp-content-font-color-teal, teal);\n",
       "  --ppy-font-color-blue: var(--jp-content-font-color-blue, blue);\n",
       "  --ppy-font-color-gray: var(--jp-content-font-color-gray, gray);\n",
       "  --ppy-border-color: var(--jp-border-color2, #e0e0e0);\n",
       "  --ppy-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
       "  --ppy-background-color: var(--jp-layout-color, white);\n",
       "  --ppy-background-color2: var(--jp-layout-color3, rgba(212, 212, 212, 0.15));\n",
       "}\n",
       "\n",
       "\n",
       "html[theme=\"dark\"],\n",
       "html[data-theme=\"dark\"],\n",
       "body[data-theme=\"dark\"],\n",
       "body.vscode-dark {\n",
       "  --ppy-font-color: rgba(255, 255, 255, 1);\n",
       "  --ppy-font-color-brown: brown;\n",
       "  --ppy-font-color-olive: olive;\n",
       "  --ppy-font-color-teal: teal;\n",
       "  --ppy-font-color-blue: blue;\n",
       "  --ppy-font-color-gray: gray;\n",
       "  --ppy-border-color: #1f1f1f;\n",
       "  --ppy-disabled-color: #515151;\n",
       "  --ppy-background-color: #111111;\n",
       "}\n",
       "\n",
       ".ppy-background-color {\n",
       "  background-color: var(--ppy-background-color) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color-brown {\n",
       "  color: var(--ppy-font-color-brown) !important;\n",
       "}\n",
       "\n",
       ".ppy-font-color {\n",
       "  color: var(--ppy-font-color) !important;\n",
       "}\n",
       ".ppy-h2 {\n",
       "  font-size: 20px !important;\n",
       "}\n",
       ".ppy-h3 {\n",
       "  font-size: 13px !important;\n",
       "}\n",
       ".ppy-p {\n",
       "  font-size: 10px;\n",
       "}\n",
       ".ppy-p-error {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "  font-weight: bold;\n",
       "  display: block;\n",
       "}\n",
       "\n",
       ".ppy-text-repr-fallback {\n",
       "  /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
       "  display: none;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-wrap{\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  align-items: center;\n",
       "}\n",
       "\n",
       ".ppy-pipeline {\n",
       "  float:left;\n",
       "  cursor: pointer;\n",
       "  padding: 10px;\n",
       "  width: max-content;\n",
       "  height: 150px;\n",
       "  margin: 10px;\n",
       "  border: 1px solid #000;\n",
       "  text-align: center;\n",
       "  /* line-height: 80px; */\n",
       "}\n",
       "\n",
       ".ppy-pipeline-clear-fix {\n",
       "  clear: both;\n",
       "}\n",
       "\n",
       ".ppy-pipeline-parameters-all {\n",
       "  padding: 10px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-step-header {\n",
       "  cursor: pointer;\n",
       "  font-weight: bold;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 5px;\n",
       "}\n",
       ".ppy-images-metadata {\n",
       "  margin-left: 20px;\n",
       "  margin-bottom: 10px;\n",
       "}\n",
       ".ppy-images {\n",
       "  display: flex;\n",
       "  flex-wrap: wrap;\n",
       "  gap: 10px;\n",
       "  margin-left: 20px;\n",
       "}\n",
       "\n",
       ".ppy-show-more-button, .ppy-hide-button {\n",
       "  margin-left: 20px;\n",
       "  background-color: #007bff;\n",
       "  color: white;\n",
       "  border: none;\n",
       "  padding: 5px 10px;\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pipeline-arrow {\n",
       "  float:left;\n",
       "  width: 50px;\n",
       "  height: 80px;\n",
       "  margin: 10px;\n",
       "  text-align: center;\n",
       "  line-height: 80px;\n",
       "}\n",
       "\n",
       ".ppy-images-img{\n",
       "  display: block;\n",
       "  max-width: 200px;\n",
       "  margin: 10px;\n",
       "}\n",
       "\n",
       ".ppy-images-toggle-arrow {\n",
       "  cursor: pointer;\n",
       "  margin-left: 5px;\n",
       "}\n",
       "\n",
       ".ppy-images-image-p {\n",
       "  cursor: pointer;\n",
       "}\n",
       "\n",
       ".ppy-arrow-right {\n",
       "  display: inline-block;\n",
       "  vertical-align: middle;\n",
       "  width: 1em;\n",
       "  height: 1.5em !important;\n",
       "  stroke-width: 0;\n",
       "  stroke: currentColor;\n",
       "  fill: currentColor;\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-json-block {\n",
       "  font-family: monospace;\n",
       "  background: var(--ppy-background-color);\n",
       "  padding: 1em;\n",
       "  border-radius: 6px;\n",
       "}\n",
       ".ppy-json-key {\n",
       "  color: var(--ppy-font-color-brown);\n",
       "}\n",
       ".ppy-json-string {\n",
       "  color: var(--ppy-font-color-olive);\n",
       "}\n",
       ".ppy-json-number {\n",
       "  color: var(--ppy-font-color-teal);\n",
       "}\n",
       ".ppy-json-bool {\n",
       "  color: var(--ppy-font-color-blue);\n",
       "}\n",
       ".ppy-json-null {\n",
       "  color: var(--ppy-font-color-gray);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-title-0 {\n",
       "  font-size: 30px;\n",
       "}\n",
       "\n",
       ".ppy-pn-title-1 {\n",
       "  font-size: 20px;\n",
       "}\n",
       ".ppy-pn-title-2 {\n",
       "  font-size: 17px;\n",
       "}\n",
       ".ppy-pn-title-3 {\n",
       "  font-size: 14px;\n",
       "}\n",
       ".ppy-pn-title-4 {\n",
       "  font-size: 12px;\n",
       "}\n",
       "\n",
       ".ppy-pn-bold {\n",
       "  font-weight: bold;\n",
       "}\n",
       ".ppy-pn-italic {\n",
       "  font-style: italic;\n",
       "}\n",
       ".ppy-pn-description {\n",
       "  font-size: 14px;\n",
       "  margin-bottom: 1px;\n",
       "}\n",
       "\n",
       ".bk-root {\n",
       "  width: 100% !important;\n",
       "  max-width: 100% !important;\n",
       "  box-sizing: border-box;\n",
       "}\n",
       "\n",
       "input, .bk-input, .bk-input-group {\n",
       "  margin-top: 0px;\n",
       "  margin-bottom: 3px;\n",
       "  padding-top: 0px;\n",
       "  padding-bottom: 0px;\n",
       "}\n",
       "\n",
       ".ppy-pn-header-button .bk-btn {\n",
       "  background: none !important;\n",
       "  border: none !important;\n",
       "  font-weight: bold;\n",
       "  font-size: 16px;\n",
       "  text-align: left;\n",
       "  padding-left: 0;\n",
       "  cursor: pointer;\n",
       "  box-shadow: none !important;\n",
       "  color: black;\n",
       "}\n",
       "\n",
       ".ppy-pn-danger-modal{\n",
       "  border: 2px solid red;\n",
       "  border-radius: 10px;\n",
       "  box-shadow: 0px 0px 10px rgba(255, 0, 0, 0.5);\n",
       "}\n",
       "\n",
       ".ppy-pn-config-form{\n",
       "  padding: 10px;\n",
       "  margin-top: 10px;\n",
       "  margin-bottom: 10px;\n",
       "  background-color: var(--ppy-background-color2);\n",
       "  border-radius: 5px;\n",
       "  box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.1);\n",
       "}\n",
       "\n",
       "\n",
       ".ppy-pn-align-right {\n",
       "  display: flex;\n",
       "  justify-content: flex-end;\n",
       "}\n",
       "</style><script>function toggleMetadata(stepIndex, randomId) {\n",
       "  var metadata = document.getElementById(\"ppy-images-metadata-\" + randomId + \"-\" + stepIndex);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + stepIndex);\n",
       "  if (metadata.style.display === \"none\") {\n",
       "      metadata.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      metadata.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function toggleImage(imageId, randomId) {\n",
       "  var img = document.getElementById(imageId);\n",
       "  var arrow = document.getElementById(\"ppy-images-arrow-\" + randomId + \"-\" + imageId);\n",
       "  if (img.style.display === \"none\") {\n",
       "      img.style.display = \"block\";\n",
       "      arrow.innerHTML = \"▼\";\n",
       "      arrow.classList.remove(\"ppy-font-color\");\n",
       "      arrow.classList.add(\"ppy-font-color-brown\");\n",
       "  } else {\n",
       "      img.style.display = \"none\";\n",
       "      arrow.innerHTML = \"►\";\n",
       "      arrow.classList.remove(\"ppy-font-color-brown\");\n",
       "      arrow.classList.add(\"ppy-font-color\");\n",
       "  }\n",
       "}\n",
       "function showMore(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"flex\";\n",
       "  showMoreButton.style.display = \"none\";\n",
       "  hideButton.style.display = \"inline-block\";\n",
       "}\n",
       "function hide(stepIndex) {\n",
       "  var moreImages = document.getElementById(\"ppy-more-images-\" + stepIndex);\n",
       "  var showMoreButton = document.getElementById(\"ppy-show-more-button-\" + stepIndex);\n",
       "  var hideButton = document.getElementById(\"ppy-hide-button-\" + stepIndex);\n",
       "  moreImages.style.display = \"none\";\n",
       "  showMoreButton.style.display = \"inline-block\";\n",
       "  hideButton.style.display = \"none\";\n",
       "}\n",
       "\n",
       "\n",
       "function showParameters(id, randomId) {\n",
       "  var currentTarget = document.getElementById('ppy-pipeline-' + randomId + '-' + id);\n",
       "  var square = document.getElementsByClassName('ppy-pipeline-' + randomId);\n",
       "  var allParams = document.getElementsByClassName('ppy-pipeline-parameters-' + randomId);\n",
       "  var selectedParams = document.getElementById('ppy-pipeline-parameters-' + randomId + '-' + id);\n",
       "  var idWasVisible = false;\n",
       "  if (selectedParams) {\n",
       "      var idWasVisible = selectedParams.style.display === 'block';\n",
       "  }\n",
       "  for (var i = 0; i < square.length; i++) {\n",
       "      square[i].classList.remove('ppy-font-color-brown');\n",
       "      square[i].classList.add('ppy-font-color');\n",
       "  }\n",
       "  for (var i = 0; i < allParams.length; i++) {\n",
       "      allParams[i].style.display = 'none';\n",
       "  }\n",
       "  // Show the selected parameter section\n",
       "  if (selectedParams) {\n",
       "      if (idWasVisible) {\n",
       "          selectedParams.style.display = 'none';\n",
       "          currentTarget.classList.remove('ppy-font-color-brown');\n",
       "          currentTarget.classList.add('ppy-font-color');\n",
       "      } else {\n",
       "          selectedParams.style.display = 'block';\n",
       "          currentTarget.classList.remove('ppy-font-color');\n",
       "          currentTarget.classList.add('ppy-font-color-brown');\n",
       "      }\n",
       "  }\n",
       "}\n",
       "\n",
       "hljs.highlightAll();\n",
       "</script><link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css\"><script src=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js\"></script><script>hljs.highlightAll();</script><pre class='ppy-text-repr-fallback'>              filename   ID  XResolution  YResolution  ExposureTime  FNumber  \\\n",
       "0   20180611041421.png  430          300          300      0.016667        8   \n",
       "1   20180611041431.png  431          300          300      0.016667        8   \n",
       "2   20180611041441.png  432          300          300      0.016667        8   \n",
       "3   20180611041451.png  433          300          300      0.016667        8   \n",
       "4   20180611041501.png  434          300          300      0.016667        8   \n",
       "5   20180611041511.png  435          300          300      0.016667        8   \n",
       "6   20180611041521.png  436          300          300      0.016667        8   \n",
       "7   20180611041531.png  437          300          300      0.016667        8   \n",
       "8   20180611041541.png  438          300          300      0.016667        8   \n",
       "9   20180611041551.png  439          300          300      0.016667        8   \n",
       "10  20180611041601.png  440          300          300      0.016667        8   \n",
       "11  20180611041611.png  441          300          300      0.016667        8   \n",
       "12  20180611041621.png  442          300          300      0.016667        8   \n",
       "13  20180611041631.png  443          300          300      0.016667        8   \n",
       "14  20180611041641.png  444          300          300      0.016667        8   \n",
       "15  20180611041651.png  445          300          300      0.016667        8   \n",
       "16  20180611041701.png  446          300          300      0.016667        8   \n",
       "17  20180611041711.png  447          300          300      0.016667        8   \n",
       "18  20180611041721.png  448          300          300      0.016667        8   \n",
       "19  20180611041731.png  449          300          300      0.016667        8   \n",
       "20  20180611041741.png  450          300          300      0.016667        8   \n",
       "21  20180611041751.png  451          300          300      0.016667        8   \n",
       "22  20180611041801.png  452          300          300      0.016667        8   \n",
       "23  20180611041811.png  453          300          300      0.016667        8   \n",
       "24  20180611041821.png  454          300          300      0.016667        8   \n",
       "25  20180611041831.png  455          300          300      0.016667        8   \n",
       "26  20180611041841.png  456          300          300      0.016667        8   \n",
       "27  20180611041851.png  457          300          300      0.016667        8   \n",
       "28  20180611041901.png  458          300          300      0.016667        8   \n",
       "29  20180611041911.png  459          300          300      0.016667        8   \n",
       "30  20180611041921.png  460          300          300      0.016667        8   \n",
       "31  20180611041931.png  461          300          300      0.016667        8   \n",
       "32  20180611041941.png  462          300          300      0.016667        8   \n",
       "33  20180611041951.png  463          300          300      0.016667        8   \n",
       "34  20180611042001.png  464          300          300      0.016667        8   \n",
       "35  20180611042011.png  465          300          300      0.016667        8   \n",
       "36  20180611042021.png  466          300          300      0.016667        8   \n",
       "37  20180611042031.png  467          300          300      0.016667        8   \n",
       "38  20180611042041.png  468          300          300      0.016667        8   \n",
       "39  20180611042051.png  469          300          300      0.016667        8   \n",
       "40  20180611042101.png  470          300          300      0.016667        8   \n",
       "41  20180611042111.png  471          300          300      0.016667        8   \n",
       "42  20180611042121.png  472          300          300      0.016667        8   \n",
       "43  20180611042131.png  473          300          300      0.016667        8   \n",
       "44  20180611042141.png  474          300          300      0.016667        8   \n",
       "45  20180611042151.png  475          300          300      0.016667        8   \n",
       "46  20180611042201.png  476          300          300      0.016667        8   \n",
       "47  20180611042211.png  477          300          300      0.016667        8   \n",
       "48  20180611042221.png  478          300          300      0.016667        8   \n",
       "\n",
       "    ISO      image-datetime  MaxApertureValue  WhiteBalance  ...  \\\n",
       "0   200 2018-06-11 04:14:21          2.828427  FLASH         ...   \n",
       "1   200 2018-06-11 04:14:31          2.828427  FLASH         ...   \n",
       "2   200 2018-06-11 04:14:41          2.828427  FLASH         ...   \n",
       "3   200 2018-06-11 04:14:51          2.828427  FLASH         ...   \n",
       "4   200 2018-06-11 04:15:01          2.828427  FLASH         ...   \n",
       "5   200 2018-06-11 04:15:11          2.828427  FLASH         ...   \n",
       "6   200 2018-06-11 04:15:21          2.828427  FLASH         ...   \n",
       "7   200 2018-06-11 04:15:31          2.828427  FLASH         ...   \n",
       "8   200 2018-06-11 04:15:41          2.828427  FLASH         ...   \n",
       "9   200 2018-06-11 04:15:51          2.828427  FLASH         ...   \n",
       "10  200 2018-06-11 04:16:01          2.828427  FLASH         ...   \n",
       "11  200 2018-06-11 04:16:11          2.828427  FLASH         ...   \n",
       "12  200 2018-06-11 04:16:21          2.828427  FLASH         ...   \n",
       "13  200 2018-06-11 04:16:31          2.828427  FLASH         ...   \n",
       "14  200 2018-06-11 04:16:41          2.828427  FLASH         ...   \n",
       "15  200 2018-06-11 04:16:51          2.828427  FLASH         ...   \n",
       "16  200 2018-06-11 04:17:01          2.828427  FLASH         ...   \n",
       "17  200 2018-06-11 04:17:11          2.828427  FLASH         ...   \n",
       "18  200 2018-06-11 04:17:21          2.828427  FLASH         ...   \n",
       "19  200 2018-06-11 04:17:31          2.828427  FLASH         ...   \n",
       "20  200 2018-06-11 04:17:41          2.828427  FLASH         ...   \n",
       "21  200 2018-06-11 04:17:51          2.828427  FLASH         ...   \n",
       "22  200 2018-06-11 04:18:01          2.828427  FLASH         ...   \n",
       "23  200 2018-06-11 04:18:11          2.828427  FLASH         ...   \n",
       "24  200 2018-06-11 04:18:21          2.828427  FLASH         ...   \n",
       "25  200 2018-06-11 04:18:31          2.828427  FLASH         ...   \n",
       "26  200 2018-06-11 04:18:41          2.828427  FLASH         ...   \n",
       "27  200 2018-06-11 04:18:51          2.828427  FLASH         ...   \n",
       "28  200 2018-06-11 04:19:01          2.828427  FLASH         ...   \n",
       "29  200 2018-06-11 04:19:11          2.828427  FLASH         ...   \n",
       "30  200 2018-06-11 04:19:21          2.828427  FLASH         ...   \n",
       "31  200 2018-06-11 04:19:31          2.828427  FLASH         ...   \n",
       "32  200 2018-06-11 04:19:41          2.828427  FLASH         ...   \n",
       "33  200 2018-06-11 04:19:51          2.828427  FLASH         ...   \n",
       "34  200 2018-06-11 04:20:01          2.828427  FLASH         ...   \n",
       "35  200 2018-06-11 04:20:11          2.828427  FLASH         ...   \n",
       "36  200 2018-06-11 04:20:21          2.828427  FLASH         ...   \n",
       "37  200 2018-06-11 04:20:31          2.828427  FLASH         ...   \n",
       "38  200 2018-06-11 04:20:41          2.828427  FLASH         ...   \n",
       "39  200 2018-06-11 04:20:51          2.828427  FLASH         ...   \n",
       "40  200 2018-06-11 04:21:01          2.828427  FLASH         ...   \n",
       "41  200 2018-06-11 04:21:11          2.828427  FLASH         ...   \n",
       "42  200 2018-06-11 04:21:21          2.828427  FLASH         ...   \n",
       "43  200 2018-06-11 04:21:31          2.828427  FLASH         ...   \n",
       "44  200 2018-06-11 04:21:41          2.828427  FLASH         ...   \n",
       "45  200 2018-06-11 04:21:51          2.828427  FLASH         ...   \n",
       "46  200 2018-06-11 04:22:01          2.828427  FLASH         ...   \n",
       "47  200 2018-06-11 04:22:11          2.828427  FLASH         ...   \n",
       "48  200 2018-06-11 04:22:21          2.828427  FLASH         ...   \n",
       "\n",
       "    TRcornerlong  TRcornerlat  TLcornerlong  TLcornerlat  BLcornerlong  \\\n",
       "0    -153.605307    11.251713   -153.605307    11.251738   -153.605324   \n",
       "1    -153.605305    11.251705   -153.605305    11.251731   -153.605322   \n",
       "2    -153.605304    11.251701   -153.605304    11.251726   -153.605321   \n",
       "3    -153.605305    11.251695   -153.605304    11.251721   -153.605322   \n",
       "4    -153.605305    11.251690   -153.605305    11.251716   -153.605323   \n",
       "5    -153.605308    11.251684   -153.605307    11.251711   -153.605326   \n",
       "6    -153.605309    11.251678   -153.605308    11.251705   -153.605327   \n",
       "7    -153.605312    11.251671   -153.605312    11.251696   -153.605329   \n",
       "8    -153.605313    11.251663   -153.605312    11.251688   -153.605330   \n",
       "9    -153.605313    11.251654   -153.605313    11.251680   -153.605330   \n",
       "10   -153.605313    11.251646   -153.605313    11.251673   -153.605331   \n",
       "11   -153.605314    11.251641   -153.605314    11.251667   -153.605331   \n",
       "12   -153.605313    11.251636   -153.605312    11.251662   -153.605330   \n",
       "13   -153.605312    11.251634   -153.605312    11.251659   -153.605329   \n",
       "14   -153.605312    11.251629   -153.605311    11.251655   -153.605329   \n",
       "15   -153.605311    11.251624   -153.605311    11.251651   -153.605329   \n",
       "16   -153.605311    11.251621   -153.605311    11.251647   -153.605329   \n",
       "17   -153.605312    11.251618   -153.605312    11.251645   -153.605330   \n",
       "18   -153.605312    11.251617   -153.605311    11.251643   -153.605329   \n",
       "19   -153.605309    11.251616   -153.605309    11.251642   -153.605327   \n",
       "20   -153.605306    11.251616   -153.605306    11.251642   -153.605323   \n",
       "21   -153.605302    11.251615   -153.605302    11.251642   -153.605320   \n",
       "22   -153.605299    11.251615   -153.605299    11.251641   -153.605316   \n",
       "23   -153.605289    11.251617   -153.605289    11.251647   -153.605309   \n",
       "24   -153.605281    11.251619   -153.605281    11.251647   -153.605300   \n",
       "25   -153.605277    11.251621   -153.605277    11.251646   -153.605294   \n",
       "26   -153.605268    11.251624   -153.605268    11.251651   -153.605286   \n",
       "27   -153.605263    11.251625   -153.605263    11.251652   -153.605281   \n",
       "28   -153.605253    11.251627   -153.605253    11.251655   -153.605272   \n",
       "29   -153.605246    11.251627   -153.605246    11.251653   -153.605264   \n",
       "30   -153.605239    11.251625   -153.605239    11.251651   -153.605257   \n",
       "31   -153.605232    11.251620   -153.605232    11.251647   -153.605250   \n",
       "32   -153.605223    11.251617   -153.605223    11.251642   -153.605241   \n",
       "33   -153.605212    11.251612   -153.605212    11.251639   -153.605230   \n",
       "34   -153.605203    11.251611   -153.605203    11.251636   -153.605221   \n",
       "35   -153.605194    11.251609   -153.605194    11.251636   -153.605212   \n",
       "36   -153.605186    11.251611   -153.605186    11.251636   -153.605204   \n",
       "37   -153.605179    11.251612   -153.605179    11.251638   -153.605196   \n",
       "38   -153.605171    11.251614   -153.605172    11.251641   -153.605190   \n",
       "39   -153.605166    11.251617   -153.605166    11.251643   -153.605184   \n",
       "40   -153.605161    11.251618   -153.605161    11.251645   -153.605179   \n",
       "41   -153.605155    11.251621   -153.605155    11.251647   -153.605173   \n",
       "42   -153.605144    11.251628   -153.605139    11.251658   -153.605159   \n",
       "43   -153.605130    11.251630   -153.605132    11.251665   -153.605155   \n",
       "44   -153.605122    11.251634   -153.605123    11.251667   -153.605145   \n",
       "45   -153.605120    11.251638   -153.605120    11.251664   -153.605137   \n",
       "46   -153.605114    11.251639   -153.605114    11.251665   -153.605131   \n",
       "47   -153.605106    11.251639   -153.605107    11.251666   -153.605125   \n",
       "48   -153.605102    11.251644   -153.605102    11.251669   -153.605119   \n",
       "\n",
       "    BLcornerlat  BRcornerlong  BRcornerlat  overlap  \\\n",
       "0     11.251739   -153.605325    11.251713        0   \n",
       "1     11.251731   -153.605322    11.251705        0   \n",
       "2     11.251726   -153.605321    11.251701        1   \n",
       "3     11.251721   -153.605322    11.251696        0   \n",
       "4     11.251716   -153.605323    11.251690        1   \n",
       "5     11.251711   -153.605326    11.251684        0   \n",
       "6     11.251705   -153.605327    11.251678        1   \n",
       "7     11.251696   -153.605329    11.251671        0   \n",
       "8     11.251689   -153.605330    11.251663        0   \n",
       "9     11.251680   -153.605330    11.251655        0   \n",
       "10    11.251673   -153.605331    11.251646        1   \n",
       "11    11.251667   -153.605331    11.251641        0   \n",
       "12    11.251663   -153.605331    11.251636        1   \n",
       "13    11.251660   -153.605330    11.251634        0   \n",
       "14    11.251655   -153.605329    11.251629        1   \n",
       "15    11.251651   -153.605329    11.251624        0   \n",
       "16    11.251647   -153.605329    11.251622        1   \n",
       "17    11.251645   -153.605330    11.251618        1   \n",
       "18    11.251643   -153.605329    11.251617        1   \n",
       "19    11.251643   -153.605328    11.251616        0   \n",
       "20    11.251642   -153.605324    11.251616        1   \n",
       "21    11.251642   -153.605320    11.251615        0   \n",
       "22    11.251641   -153.605317    11.251615        1   \n",
       "23    11.251647   -153.605309    11.251617        0   \n",
       "24    11.251647   -153.605300    11.251619        0   \n",
       "25    11.251646   -153.605294    11.251621        1   \n",
       "26    11.251652   -153.605287    11.251624        0   \n",
       "27    11.251652   -153.605281    11.251625        1   \n",
       "28    11.251655   -153.605272    11.251627        0   \n",
       "29    11.251654   -153.605264    11.251627        0   \n",
       "30    11.251651   -153.605257    11.251625        0   \n",
       "31    11.251647   -153.605250    11.251620        0   \n",
       "32    11.251642   -153.605241    11.251617        0   \n",
       "33    11.251639   -153.605230    11.251612        0   \n",
       "34    11.251636   -153.605221    11.251611        0   \n",
       "35    11.251636   -153.605212    11.251609        0   \n",
       "36    11.251636   -153.605204    11.251611        0   \n",
       "37    11.251638   -153.605196    11.251612        0   \n",
       "38    11.251641   -153.605190    11.251614        0   \n",
       "39    11.251643   -153.605184    11.251618        0   \n",
       "40    11.251645   -153.605179    11.251618        0   \n",
       "41    11.251647   -153.605173    11.251621        0   \n",
       "42    11.251661   -153.605164    11.251631        0   \n",
       "43    11.251664   -153.605153    11.251629        0   \n",
       "44    11.251667   -153.605145    11.251634        0   \n",
       "45    11.251664   -153.605137    11.251638        1   \n",
       "46    11.251665   -153.605131    11.251639        0   \n",
       "47    11.251666   -153.605124    11.251639        0   \n",
       "48    11.251669   -153.605119    11.251644        0   \n",
       "\n",
       "                                            polygon_m  \n",
       "0   POLYGON ((-153.60530730838863 11.2517125679763...  \n",
       "1   POLYGON ((-153.60532242262374 11.2517054397381...  \n",
       "2   POLYGON ((-153.60530396770184 11.2517005672041...  \n",
       "3   POLYGON ((-153.60530450358652 11.2516954398786...  \n",
       "4   POLYGON ((-153.60532287038686 11.2516901280594...  \n",
       "5   POLYGON ((-153.60530767270808 11.2516842639279...  \n",
       "6   POLYGON ((-153.60530868210603 11.2516778018813...  \n",
       "7   POLYGON ((-153.60532918833948 11.2516707067058...  \n",
       "8   POLYGON ((-153.60531264279453 11.2516626734196...  \n",
       "9   POLYGON ((-153.60531287424553 11.2516544199985...  \n",
       "10  POLYGON ((-153.6053128455258 11.25164646451044...  \n",
       "11  POLYGON ((-153.60531395294848 11.2516412043738...  \n",
       "12  POLYGON ((-153.60531250603074 11.2516357117654...  \n",
       "13  POLYGON ((-153.60531203486076 11.2516336560737...  \n",
       "14  POLYGON ((-153.60531157256716 11.2516293035685...  \n",
       "15  POLYGON ((-153.6053106272573 11.25162436996680...  \n",
       "16  POLYGON ((-153.60531148160254 11.2516213159115...  \n",
       "17  POLYGON ((-153.60531182829246 11.2516181498626...  \n",
       "18  POLYGON ((-153.6053115481469 11.25161685953249...  \n",
       "19  POLYGON ((-153.60530948504496 11.2516156522718...  \n",
       "20  POLYGON ((-153.60530610784394 11.2516157947657...  \n",
       "21  POLYGON ((-153.6053015951501 11.25161483159092...  \n",
       "22  POLYGON ((-153.60529932432337 11.2516151158048...  \n",
       "23  POLYGON ((-153.6053089846491 11.25161735210587...  \n",
       "24  POLYGON ((-153.6052814564868 11.25161910801365...  \n",
       "25  POLYGON ((-153.605277424527 11.251621334935358...  \n",
       "26  POLYGON ((-153.60526798471008 11.2516238013981...  \n",
       "27  POLYGON ((-153.60526315869816 11.2516251992590...  \n",
       "28  POLYGON ((-153.60527176164203 11.2516273237340...  \n",
       "29  POLYGON ((-153.60524567089854 11.2516267581588...  \n",
       "30  POLYGON ((-153.60523920480418 11.2516248686363...  \n",
       "31  POLYGON ((-153.60524983218897 11.2516203862087...  \n",
       "32  POLYGON ((-153.60522313352865 11.2516165356912...  \n",
       "33  POLYGON ((-153.6052301033692 11.25161193698947...  \n",
       "34  POLYGON ((-153.6052033804677 11.25161063147030...  \n",
       "35  POLYGON ((-153.6052120803318 11.25160935243135...  \n",
       "36  POLYGON ((-153.60518621736148 11.2516105763390...  \n",
       "37  POLYGON ((-153.6051790110036 11.25161224393778...  \n",
       "38  POLYGON ((-153.60518962666754 11.2516141640319...  \n",
       "39  POLYGON ((-153.6051664638791 11.25161736319459...  \n",
       "40  POLYGON ((-153.6051608016717 11.25161844046033...  \n",
       "41  POLYGON ((-153.60515532680574 11.2516207205026...  \n",
       "42  POLYGON ((-153.60514394570419 11.2516282024849...  \n",
       "43  POLYGON ((-153.60515320289943 11.2516290945753...  \n",
       "44  POLYGON ((-153.60514461134548 11.2516339224403...  \n",
       "45  POLYGON ((-153.60511957758825 11.2516381661889...  \n",
       "46  POLYGON ((-153.60511402841288 11.2516389528132...  \n",
       "47  POLYGON ((-153.60512448925505 11.2516392921980...  \n",
       "48  POLYGON ((-153.605119133641 11.251643524156453...  \n",
       "\n",
       "[49 rows x 53 columns]</pre><div>This is a instance of 'MetadataParser'<br><br><b>Dataset Metadata:</b><br><pre class=\"ppy-json-block\">{\n",
       "    <span class=\"ppy-json-key\">\"image-set-uuid\"</span>: <span class=\"ppy-json-string\">\"c0411d9a-fab3-4527-8db3-4aeaf4b70d16\"</span>,\n",
       "    <span class=\"ppy-json-key\">\"input_path\"</span>: <span class=\"ppy-json-string\">\"/home/tobfer/.paidiverpy_cache/benthic_csv/images\"</span>,\n",
       "    <span class=\"ppy-json-key\">\"trimmed_polygon\"</span>: [<span class=\"ppy-json-string\">\"POLYGON ((-153.608 11.251, -153.608 11.253, -153.605 11.253, -153.605 11.251, -153.608 11.251))\"</span>]\n",
       "}</pre><b>Images Metadata:</b><br><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>filename</th>\n",
       "      <th>ID</th>\n",
       "      <th>XResolution</th>\n",
       "      <th>YResolution</th>\n",
       "      <th>ExposureTime</th>\n",
       "      <th>FNumber</th>\n",
       "      <th>ISO</th>\n",
       "      <th>image-datetime</th>\n",
       "      <th>MaxApertureValue</th>\n",
       "      <th>WhiteBalance</th>\n",
       "      <th>...</th>\n",
       "      <th>TRcornerlong</th>\n",
       "      <th>TRcornerlat</th>\n",
       "      <th>TLcornerlong</th>\n",
       "      <th>TLcornerlat</th>\n",
       "      <th>BLcornerlong</th>\n",
       "      <th>BLcornerlat</th>\n",
       "      <th>BRcornerlong</th>\n",
       "      <th>BRcornerlat</th>\n",
       "      <th>overlap</th>\n",
       "      <th>polygon_m</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>20180611041421.png</td>\n",
       "      <td>430</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:14:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605307</td>\n",
       "      <td>11.251713</td>\n",
       "      <td>-153.605307</td>\n",
       "      <td>11.251738</td>\n",
       "      <td>-153.605324</td>\n",
       "      <td>11.251739</td>\n",
       "      <td>-153.605325</td>\n",
       "      <td>11.251713</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60530730838863 11.2517125679763...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20180611041431.png</td>\n",
       "      <td>431</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:14:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605305</td>\n",
       "      <td>11.251705</td>\n",
       "      <td>-153.605305</td>\n",
       "      <td>11.251731</td>\n",
       "      <td>-153.605322</td>\n",
       "      <td>11.251731</td>\n",
       "      <td>-153.605322</td>\n",
       "      <td>11.251705</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60532242262374 11.2517054397381...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>20180611041441.png</td>\n",
       "      <td>432</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:14:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605304</td>\n",
       "      <td>11.251701</td>\n",
       "      <td>-153.605304</td>\n",
       "      <td>11.251726</td>\n",
       "      <td>-153.605321</td>\n",
       "      <td>11.251726</td>\n",
       "      <td>-153.605321</td>\n",
       "      <td>11.251701</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60530396770184 11.2517005672041...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>20180611041451.png</td>\n",
       "      <td>433</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:14:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605305</td>\n",
       "      <td>11.251695</td>\n",
       "      <td>-153.605304</td>\n",
       "      <td>11.251721</td>\n",
       "      <td>-153.605322</td>\n",
       "      <td>11.251721</td>\n",
       "      <td>-153.605322</td>\n",
       "      <td>11.251696</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60530450358652 11.2516954398786...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>20180611041501.png</td>\n",
       "      <td>434</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:15:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605305</td>\n",
       "      <td>11.251690</td>\n",
       "      <td>-153.605305</td>\n",
       "      <td>11.251716</td>\n",
       "      <td>-153.605323</td>\n",
       "      <td>11.251716</td>\n",
       "      <td>-153.605323</td>\n",
       "      <td>11.251690</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60532287038686 11.2516901280594...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>20180611041511.png</td>\n",
       "      <td>435</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:15:11</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605308</td>\n",
       "      <td>11.251684</td>\n",
       "      <td>-153.605307</td>\n",
       "      <td>11.251711</td>\n",
       "      <td>-153.605326</td>\n",
       "      <td>11.251711</td>\n",
       "      <td>-153.605326</td>\n",
       "      <td>11.251684</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60530767270808 11.2516842639279...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>20180611041521.png</td>\n",
       "      <td>436</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:15:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605309</td>\n",
       "      <td>11.251678</td>\n",
       "      <td>-153.605308</td>\n",
       "      <td>11.251705</td>\n",
       "      <td>-153.605327</td>\n",
       "      <td>11.251705</td>\n",
       "      <td>-153.605327</td>\n",
       "      <td>11.251678</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60530868210603 11.2516778018813...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>20180611041531.png</td>\n",
       "      <td>437</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:15:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251671</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251696</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251696</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251671</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60532918833948 11.2516707067058...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>20180611041541.png</td>\n",
       "      <td>438</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:15:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605313</td>\n",
       "      <td>11.251663</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251688</td>\n",
       "      <td>-153.605330</td>\n",
       "      <td>11.251689</td>\n",
       "      <td>-153.605330</td>\n",
       "      <td>11.251663</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60531264279453 11.2516626734196...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>20180611041551.png</td>\n",
       "      <td>439</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:15:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605313</td>\n",
       "      <td>11.251654</td>\n",
       "      <td>-153.605313</td>\n",
       "      <td>11.251680</td>\n",
       "      <td>-153.605330</td>\n",
       "      <td>11.251680</td>\n",
       "      <td>-153.605330</td>\n",
       "      <td>11.251655</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60531287424553 11.2516544199985...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>20180611041601.png</td>\n",
       "      <td>440</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:16:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605313</td>\n",
       "      <td>11.251646</td>\n",
       "      <td>-153.605313</td>\n",
       "      <td>11.251673</td>\n",
       "      <td>-153.605331</td>\n",
       "      <td>11.251673</td>\n",
       "      <td>-153.605331</td>\n",
       "      <td>11.251646</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.6053128455258 11.25164646451044...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>20180611041611.png</td>\n",
       "      <td>441</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:16:11</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605314</td>\n",
       "      <td>11.251641</td>\n",
       "      <td>-153.605314</td>\n",
       "      <td>11.251667</td>\n",
       "      <td>-153.605331</td>\n",
       "      <td>11.251667</td>\n",
       "      <td>-153.605331</td>\n",
       "      <td>11.251641</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60531395294848 11.2516412043738...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>20180611041621.png</td>\n",
       "      <td>442</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:16:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605313</td>\n",
       "      <td>11.251636</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251662</td>\n",
       "      <td>-153.605330</td>\n",
       "      <td>11.251663</td>\n",
       "      <td>-153.605331</td>\n",
       "      <td>11.251636</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60531250603074 11.2516357117654...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>20180611041631.png</td>\n",
       "      <td>443</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:16:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251634</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251659</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251660</td>\n",
       "      <td>-153.605330</td>\n",
       "      <td>11.251634</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60531203486076 11.2516336560737...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>20180611041641.png</td>\n",
       "      <td>444</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:16:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251629</td>\n",
       "      <td>-153.605311</td>\n",
       "      <td>11.251655</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251655</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251629</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60531157256716 11.2516293035685...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>20180611041651.png</td>\n",
       "      <td>445</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:16:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605311</td>\n",
       "      <td>11.251624</td>\n",
       "      <td>-153.605311</td>\n",
       "      <td>11.251651</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251651</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251624</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6053106272573 11.25162436996680...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>20180611041701.png</td>\n",
       "      <td>446</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:17:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605311</td>\n",
       "      <td>11.251621</td>\n",
       "      <td>-153.605311</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251622</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60531148160254 11.2516213159115...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>20180611041711.png</td>\n",
       "      <td>447</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:17:11</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251618</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251645</td>\n",
       "      <td>-153.605330</td>\n",
       "      <td>11.251645</td>\n",
       "      <td>-153.605330</td>\n",
       "      <td>11.251618</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60531182829246 11.2516181498626...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>20180611041721.png</td>\n",
       "      <td>448</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:17:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605312</td>\n",
       "      <td>11.251617</td>\n",
       "      <td>-153.605311</td>\n",
       "      <td>11.251643</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251643</td>\n",
       "      <td>-153.605329</td>\n",
       "      <td>11.251617</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.6053115481469 11.25161685953249...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20180611041731.png</td>\n",
       "      <td>449</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:17:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605309</td>\n",
       "      <td>11.251616</td>\n",
       "      <td>-153.605309</td>\n",
       "      <td>11.251642</td>\n",
       "      <td>-153.605327</td>\n",
       "      <td>11.251643</td>\n",
       "      <td>-153.605328</td>\n",
       "      <td>11.251616</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60530948504496 11.2516156522718...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>20180611041741.png</td>\n",
       "      <td>450</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:17:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605306</td>\n",
       "      <td>11.251616</td>\n",
       "      <td>-153.605306</td>\n",
       "      <td>11.251642</td>\n",
       "      <td>-153.605323</td>\n",
       "      <td>11.251642</td>\n",
       "      <td>-153.605324</td>\n",
       "      <td>11.251616</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60530610784394 11.2516157947657...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>20180611041751.png</td>\n",
       "      <td>451</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:17:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605302</td>\n",
       "      <td>11.251615</td>\n",
       "      <td>-153.605302</td>\n",
       "      <td>11.251642</td>\n",
       "      <td>-153.605320</td>\n",
       "      <td>11.251642</td>\n",
       "      <td>-153.605320</td>\n",
       "      <td>11.251615</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6053015951501 11.25161483159092...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>20180611041801.png</td>\n",
       "      <td>452</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:18:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605299</td>\n",
       "      <td>11.251615</td>\n",
       "      <td>-153.605299</td>\n",
       "      <td>11.251641</td>\n",
       "      <td>-153.605316</td>\n",
       "      <td>11.251641</td>\n",
       "      <td>-153.605317</td>\n",
       "      <td>11.251615</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60529932432337 11.2516151158048...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>20180611041811.png</td>\n",
       "      <td>453</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:18:11</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605289</td>\n",
       "      <td>11.251617</td>\n",
       "      <td>-153.605289</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605309</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605309</td>\n",
       "      <td>11.251617</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6053089846491 11.25161735210587...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>20180611041821.png</td>\n",
       "      <td>454</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:18:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605281</td>\n",
       "      <td>11.251619</td>\n",
       "      <td>-153.605281</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605300</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605300</td>\n",
       "      <td>11.251619</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6052814564868 11.25161910801365...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>20180611041831.png</td>\n",
       "      <td>455</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:18:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605277</td>\n",
       "      <td>11.251621</td>\n",
       "      <td>-153.605277</td>\n",
       "      <td>11.251646</td>\n",
       "      <td>-153.605294</td>\n",
       "      <td>11.251646</td>\n",
       "      <td>-153.605294</td>\n",
       "      <td>11.251621</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.605277424527 11.251621334935358...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>20180611041841.png</td>\n",
       "      <td>456</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:18:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605268</td>\n",
       "      <td>11.251624</td>\n",
       "      <td>-153.605268</td>\n",
       "      <td>11.251651</td>\n",
       "      <td>-153.605286</td>\n",
       "      <td>11.251652</td>\n",
       "      <td>-153.605287</td>\n",
       "      <td>11.251624</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60526798471008 11.2516238013981...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>20180611041851.png</td>\n",
       "      <td>457</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:18:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605263</td>\n",
       "      <td>11.251625</td>\n",
       "      <td>-153.605263</td>\n",
       "      <td>11.251652</td>\n",
       "      <td>-153.605281</td>\n",
       "      <td>11.251652</td>\n",
       "      <td>-153.605281</td>\n",
       "      <td>11.251625</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60526315869816 11.2516251992590...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>20180611041901.png</td>\n",
       "      <td>458</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:19:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605253</td>\n",
       "      <td>11.251627</td>\n",
       "      <td>-153.605253</td>\n",
       "      <td>11.251655</td>\n",
       "      <td>-153.605272</td>\n",
       "      <td>11.251655</td>\n",
       "      <td>-153.605272</td>\n",
       "      <td>11.251627</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60527176164203 11.2516273237340...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>20180611041911.png</td>\n",
       "      <td>459</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:19:11</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605246</td>\n",
       "      <td>11.251627</td>\n",
       "      <td>-153.605246</td>\n",
       "      <td>11.251653</td>\n",
       "      <td>-153.605264</td>\n",
       "      <td>11.251654</td>\n",
       "      <td>-153.605264</td>\n",
       "      <td>11.251627</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60524567089854 11.2516267581588...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>20180611041921.png</td>\n",
       "      <td>460</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:19:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605239</td>\n",
       "      <td>11.251625</td>\n",
       "      <td>-153.605239</td>\n",
       "      <td>11.251651</td>\n",
       "      <td>-153.605257</td>\n",
       "      <td>11.251651</td>\n",
       "      <td>-153.605257</td>\n",
       "      <td>11.251625</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60523920480418 11.2516248686363...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>20180611041931.png</td>\n",
       "      <td>461</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:19:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605232</td>\n",
       "      <td>11.251620</td>\n",
       "      <td>-153.605232</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605250</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605250</td>\n",
       "      <td>11.251620</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60524983218897 11.2516203862087...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>20180611041941.png</td>\n",
       "      <td>462</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:19:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605223</td>\n",
       "      <td>11.251617</td>\n",
       "      <td>-153.605223</td>\n",
       "      <td>11.251642</td>\n",
       "      <td>-153.605241</td>\n",
       "      <td>11.251642</td>\n",
       "      <td>-153.605241</td>\n",
       "      <td>11.251617</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60522313352865 11.2516165356912...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>20180611041951.png</td>\n",
       "      <td>463</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:19:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605212</td>\n",
       "      <td>11.251612</td>\n",
       "      <td>-153.605212</td>\n",
       "      <td>11.251639</td>\n",
       "      <td>-153.605230</td>\n",
       "      <td>11.251639</td>\n",
       "      <td>-153.605230</td>\n",
       "      <td>11.251612</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6052301033692 11.25161193698947...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>20180611042001.png</td>\n",
       "      <td>464</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:20:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605203</td>\n",
       "      <td>11.251611</td>\n",
       "      <td>-153.605203</td>\n",
       "      <td>11.251636</td>\n",
       "      <td>-153.605221</td>\n",
       "      <td>11.251636</td>\n",
       "      <td>-153.605221</td>\n",
       "      <td>11.251611</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6052033804677 11.25161063147030...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>20180611042011.png</td>\n",
       "      <td>465</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:20:11</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605194</td>\n",
       "      <td>11.251609</td>\n",
       "      <td>-153.605194</td>\n",
       "      <td>11.251636</td>\n",
       "      <td>-153.605212</td>\n",
       "      <td>11.251636</td>\n",
       "      <td>-153.605212</td>\n",
       "      <td>11.251609</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6052120803318 11.25160935243135...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>20180611042021.png</td>\n",
       "      <td>466</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:20:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605186</td>\n",
       "      <td>11.251611</td>\n",
       "      <td>-153.605186</td>\n",
       "      <td>11.251636</td>\n",
       "      <td>-153.605204</td>\n",
       "      <td>11.251636</td>\n",
       "      <td>-153.605204</td>\n",
       "      <td>11.251611</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60518621736148 11.2516105763390...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>20180611042031.png</td>\n",
       "      <td>467</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:20:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605179</td>\n",
       "      <td>11.251612</td>\n",
       "      <td>-153.605179</td>\n",
       "      <td>11.251638</td>\n",
       "      <td>-153.605196</td>\n",
       "      <td>11.251638</td>\n",
       "      <td>-153.605196</td>\n",
       "      <td>11.251612</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6051790110036 11.25161224393778...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>20180611042041.png</td>\n",
       "      <td>468</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:20:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605171</td>\n",
       "      <td>11.251614</td>\n",
       "      <td>-153.605172</td>\n",
       "      <td>11.251641</td>\n",
       "      <td>-153.605190</td>\n",
       "      <td>11.251641</td>\n",
       "      <td>-153.605190</td>\n",
       "      <td>11.251614</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60518962666754 11.2516141640319...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>20180611042051.png</td>\n",
       "      <td>469</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:20:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605166</td>\n",
       "      <td>11.251617</td>\n",
       "      <td>-153.605166</td>\n",
       "      <td>11.251643</td>\n",
       "      <td>-153.605184</td>\n",
       "      <td>11.251643</td>\n",
       "      <td>-153.605184</td>\n",
       "      <td>11.251618</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6051664638791 11.25161736319459...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>20180611042101.png</td>\n",
       "      <td>470</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:21:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605161</td>\n",
       "      <td>11.251618</td>\n",
       "      <td>-153.605161</td>\n",
       "      <td>11.251645</td>\n",
       "      <td>-153.605179</td>\n",
       "      <td>11.251645</td>\n",
       "      <td>-153.605179</td>\n",
       "      <td>11.251618</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.6051608016717 11.25161844046033...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>20180611042111.png</td>\n",
       "      <td>471</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:21:11</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605155</td>\n",
       "      <td>11.251621</td>\n",
       "      <td>-153.605155</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605173</td>\n",
       "      <td>11.251647</td>\n",
       "      <td>-153.605173</td>\n",
       "      <td>11.251621</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60515532680574 11.2516207205026...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>20180611042121.png</td>\n",
       "      <td>472</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:21:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605144</td>\n",
       "      <td>11.251628</td>\n",
       "      <td>-153.605139</td>\n",
       "      <td>11.251658</td>\n",
       "      <td>-153.605159</td>\n",
       "      <td>11.251661</td>\n",
       "      <td>-153.605164</td>\n",
       "      <td>11.251631</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60514394570419 11.2516282024849...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>20180611042131.png</td>\n",
       "      <td>473</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:21:31</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605130</td>\n",
       "      <td>11.251630</td>\n",
       "      <td>-153.605132</td>\n",
       "      <td>11.251665</td>\n",
       "      <td>-153.605155</td>\n",
       "      <td>11.251664</td>\n",
       "      <td>-153.605153</td>\n",
       "      <td>11.251629</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60515320289943 11.2516290945753...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>20180611042141.png</td>\n",
       "      <td>474</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:21:41</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605122</td>\n",
       "      <td>11.251634</td>\n",
       "      <td>-153.605123</td>\n",
       "      <td>11.251667</td>\n",
       "      <td>-153.605145</td>\n",
       "      <td>11.251667</td>\n",
       "      <td>-153.605145</td>\n",
       "      <td>11.251634</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60514461134548 11.2516339224403...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>20180611042151.png</td>\n",
       "      <td>475</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:21:51</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605120</td>\n",
       "      <td>11.251638</td>\n",
       "      <td>-153.605120</td>\n",
       "      <td>11.251664</td>\n",
       "      <td>-153.605137</td>\n",
       "      <td>11.251664</td>\n",
       "      <td>-153.605137</td>\n",
       "      <td>11.251638</td>\n",
       "      <td>1</td>\n",
       "      <td>POLYGON ((-153.60511957758825 11.2516381661889...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>20180611042201.png</td>\n",
       "      <td>476</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:22:01</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605114</td>\n",
       "      <td>11.251639</td>\n",
       "      <td>-153.605114</td>\n",
       "      <td>11.251665</td>\n",
       "      <td>-153.605131</td>\n",
       "      <td>11.251665</td>\n",
       "      <td>-153.605131</td>\n",
       "      <td>11.251639</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60511402841288 11.2516389528132...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>20180611042211.png</td>\n",
       "      <td>477</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:22:11</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605106</td>\n",
       "      <td>11.251639</td>\n",
       "      <td>-153.605107</td>\n",
       "      <td>11.251666</td>\n",
       "      <td>-153.605125</td>\n",
       "      <td>11.251666</td>\n",
       "      <td>-153.605124</td>\n",
       "      <td>11.251639</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.60512448925505 11.2516392921980...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>20180611042221.png</td>\n",
       "      <td>478</td>\n",
       "      <td>300</td>\n",
       "      <td>300</td>\n",
       "      <td>0.016667</td>\n",
       "      <td>8</td>\n",
       "      <td>200</td>\n",
       "      <td>2018-06-11 04:22:21</td>\n",
       "      <td>2.828427</td>\n",
       "      <td>FLASH</td>\n",
       "      <td>...</td>\n",
       "      <td>-153.605102</td>\n",
       "      <td>11.251644</td>\n",
       "      <td>-153.605102</td>\n",
       "      <td>11.251669</td>\n",
       "      <td>-153.605119</td>\n",
       "      <td>11.251669</td>\n",
       "      <td>-153.605119</td>\n",
       "      <td>11.251644</td>\n",
       "      <td>0</td>\n",
       "      <td>POLYGON ((-153.605119133641 11.251643524156453...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>49 rows × 53 columns</p>\n",
       "</div></div></div>"
      ],
      "text/plain": [
       "              filename   ID  XResolution  YResolution  ExposureTime  FNumber  \\\n",
       "0   20180611041421.png  430          300          300      0.016667        8   \n",
       "1   20180611041431.png  431          300          300      0.016667        8   \n",
       "2   20180611041441.png  432          300          300      0.016667        8   \n",
       "3   20180611041451.png  433          300          300      0.016667        8   \n",
       "4   20180611041501.png  434          300          300      0.016667        8   \n",
       "5   20180611041511.png  435          300          300      0.016667        8   \n",
       "6   20180611041521.png  436          300          300      0.016667        8   \n",
       "7   20180611041531.png  437          300          300      0.016667        8   \n",
       "8   20180611041541.png  438          300          300      0.016667        8   \n",
       "9   20180611041551.png  439          300          300      0.016667        8   \n",
       "10  20180611041601.png  440          300          300      0.016667        8   \n",
       "11  20180611041611.png  441          300          300      0.016667        8   \n",
       "12  20180611041621.png  442          300          300      0.016667        8   \n",
       "13  20180611041631.png  443          300          300      0.016667        8   \n",
       "14  20180611041641.png  444          300          300      0.016667        8   \n",
       "15  20180611041651.png  445          300          300      0.016667        8   \n",
       "16  20180611041701.png  446          300          300      0.016667        8   \n",
       "17  20180611041711.png  447          300          300      0.016667        8   \n",
       "18  20180611041721.png  448          300          300      0.016667        8   \n",
       "19  20180611041731.png  449          300          300      0.016667        8   \n",
       "20  20180611041741.png  450          300          300      0.016667        8   \n",
       "21  20180611041751.png  451          300          300      0.016667        8   \n",
       "22  20180611041801.png  452          300          300      0.016667        8   \n",
       "23  20180611041811.png  453          300          300      0.016667        8   \n",
       "24  20180611041821.png  454          300          300      0.016667        8   \n",
       "25  20180611041831.png  455          300          300      0.016667        8   \n",
       "26  20180611041841.png  456          300          300      0.016667        8   \n",
       "27  20180611041851.png  457          300          300      0.016667        8   \n",
       "28  20180611041901.png  458          300          300      0.016667        8   \n",
       "29  20180611041911.png  459          300          300      0.016667        8   \n",
       "30  20180611041921.png  460          300          300      0.016667        8   \n",
       "31  20180611041931.png  461          300          300      0.016667        8   \n",
       "32  20180611041941.png  462          300          300      0.016667        8   \n",
       "33  20180611041951.png  463          300          300      0.016667        8   \n",
       "34  20180611042001.png  464          300          300      0.016667        8   \n",
       "35  20180611042011.png  465          300          300      0.016667        8   \n",
       "36  20180611042021.png  466          300          300      0.016667        8   \n",
       "37  20180611042031.png  467          300          300      0.016667        8   \n",
       "38  20180611042041.png  468          300          300      0.016667        8   \n",
       "39  20180611042051.png  469          300          300      0.016667        8   \n",
       "40  20180611042101.png  470          300          300      0.016667        8   \n",
       "41  20180611042111.png  471          300          300      0.016667        8   \n",
       "42  20180611042121.png  472          300          300      0.016667        8   \n",
       "43  20180611042131.png  473          300          300      0.016667        8   \n",
       "44  20180611042141.png  474          300          300      0.016667        8   \n",
       "45  20180611042151.png  475          300          300      0.016667        8   \n",
       "46  20180611042201.png  476          300          300      0.016667        8   \n",
       "47  20180611042211.png  477          300          300      0.016667        8   \n",
       "48  20180611042221.png  478          300          300      0.016667        8   \n",
       "\n",
       "    ISO      image-datetime  MaxApertureValue  WhiteBalance  ...  \\\n",
       "0   200 2018-06-11 04:14:21          2.828427  FLASH         ...   \n",
       "1   200 2018-06-11 04:14:31          2.828427  FLASH         ...   \n",
       "2   200 2018-06-11 04:14:41          2.828427  FLASH         ...   \n",
       "3   200 2018-06-11 04:14:51          2.828427  FLASH         ...   \n",
       "4   200 2018-06-11 04:15:01          2.828427  FLASH         ...   \n",
       "5   200 2018-06-11 04:15:11          2.828427  FLASH         ...   \n",
       "6   200 2018-06-11 04:15:21          2.828427  FLASH         ...   \n",
       "7   200 2018-06-11 04:15:31          2.828427  FLASH         ...   \n",
       "8   200 2018-06-11 04:15:41          2.828427  FLASH         ...   \n",
       "9   200 2018-06-11 04:15:51          2.828427  FLASH         ...   \n",
       "10  200 2018-06-11 04:16:01          2.828427  FLASH         ...   \n",
       "11  200 2018-06-11 04:16:11          2.828427  FLASH         ...   \n",
       "12  200 2018-06-11 04:16:21          2.828427  FLASH         ...   \n",
       "13  200 2018-06-11 04:16:31          2.828427  FLASH         ...   \n",
       "14  200 2018-06-11 04:16:41          2.828427  FLASH         ...   \n",
       "15  200 2018-06-11 04:16:51          2.828427  FLASH         ...   \n",
       "16  200 2018-06-11 04:17:01          2.828427  FLASH         ...   \n",
       "17  200 2018-06-11 04:17:11          2.828427  FLASH         ...   \n",
       "18  200 2018-06-11 04:17:21          2.828427  FLASH         ...   \n",
       "19  200 2018-06-11 04:17:31          2.828427  FLASH         ...   \n",
       "20  200 2018-06-11 04:17:41          2.828427  FLASH         ...   \n",
       "21  200 2018-06-11 04:17:51          2.828427  FLASH         ...   \n",
       "22  200 2018-06-11 04:18:01          2.828427  FLASH         ...   \n",
       "23  200 2018-06-11 04:18:11          2.828427  FLASH         ...   \n",
       "24  200 2018-06-11 04:18:21          2.828427  FLASH         ...   \n",
       "25  200 2018-06-11 04:18:31          2.828427  FLASH         ...   \n",
       "26  200 2018-06-11 04:18:41          2.828427  FLASH         ...   \n",
       "27  200 2018-06-11 04:18:51          2.828427  FLASH         ...   \n",
       "28  200 2018-06-11 04:19:01          2.828427  FLASH         ...   \n",
       "29  200 2018-06-11 04:19:11          2.828427  FLASH         ...   \n",
       "30  200 2018-06-11 04:19:21          2.828427  FLASH         ...   \n",
       "31  200 2018-06-11 04:19:31          2.828427  FLASH         ...   \n",
       "32  200 2018-06-11 04:19:41          2.828427  FLASH         ...   \n",
       "33  200 2018-06-11 04:19:51          2.828427  FLASH         ...   \n",
       "34  200 2018-06-11 04:20:01          2.828427  FLASH         ...   \n",
       "35  200 2018-06-11 04:20:11          2.828427  FLASH         ...   \n",
       "36  200 2018-06-11 04:20:21          2.828427  FLASH         ...   \n",
       "37  200 2018-06-11 04:20:31          2.828427  FLASH         ...   \n",
       "38  200 2018-06-11 04:20:41          2.828427  FLASH         ...   \n",
       "39  200 2018-06-11 04:20:51          2.828427  FLASH         ...   \n",
       "40  200 2018-06-11 04:21:01          2.828427  FLASH         ...   \n",
       "41  200 2018-06-11 04:21:11          2.828427  FLASH         ...   \n",
       "42  200 2018-06-11 04:21:21          2.828427  FLASH         ...   \n",
       "43  200 2018-06-11 04:21:31          2.828427  FLASH         ...   \n",
       "44  200 2018-06-11 04:21:41          2.828427  FLASH         ...   \n",
       "45  200 2018-06-11 04:21:51          2.828427  FLASH         ...   \n",
       "46  200 2018-06-11 04:22:01          2.828427  FLASH         ...   \n",
       "47  200 2018-06-11 04:22:11          2.828427  FLASH         ...   \n",
       "48  200 2018-06-11 04:22:21          2.828427  FLASH         ...   \n",
       "\n",
       "    TRcornerlong  TRcornerlat  TLcornerlong  TLcornerlat  BLcornerlong  \\\n",
       "0    -153.605307    11.251713   -153.605307    11.251738   -153.605324   \n",
       "1    -153.605305    11.251705   -153.605305    11.251731   -153.605322   \n",
       "2    -153.605304    11.251701   -153.605304    11.251726   -153.605321   \n",
       "3    -153.605305    11.251695   -153.605304    11.251721   -153.605322   \n",
       "4    -153.605305    11.251690   -153.605305    11.251716   -153.605323   \n",
       "5    -153.605308    11.251684   -153.605307    11.251711   -153.605326   \n",
       "6    -153.605309    11.251678   -153.605308    11.251705   -153.605327   \n",
       "7    -153.605312    11.251671   -153.605312    11.251696   -153.605329   \n",
       "8    -153.605313    11.251663   -153.605312    11.251688   -153.605330   \n",
       "9    -153.605313    11.251654   -153.605313    11.251680   -153.605330   \n",
       "10   -153.605313    11.251646   -153.605313    11.251673   -153.605331   \n",
       "11   -153.605314    11.251641   -153.605314    11.251667   -153.605331   \n",
       "12   -153.605313    11.251636   -153.605312    11.251662   -153.605330   \n",
       "13   -153.605312    11.251634   -153.605312    11.251659   -153.605329   \n",
       "14   -153.605312    11.251629   -153.605311    11.251655   -153.605329   \n",
       "15   -153.605311    11.251624   -153.605311    11.251651   -153.605329   \n",
       "16   -153.605311    11.251621   -153.605311    11.251647   -153.605329   \n",
       "17   -153.605312    11.251618   -153.605312    11.251645   -153.605330   \n",
       "18   -153.605312    11.251617   -153.605311    11.251643   -153.605329   \n",
       "19   -153.605309    11.251616   -153.605309    11.251642   -153.605327   \n",
       "20   -153.605306    11.251616   -153.605306    11.251642   -153.605323   \n",
       "21   -153.605302    11.251615   -153.605302    11.251642   -153.605320   \n",
       "22   -153.605299    11.251615   -153.605299    11.251641   -153.605316   \n",
       "23   -153.605289    11.251617   -153.605289    11.251647   -153.605309   \n",
       "24   -153.605281    11.251619   -153.605281    11.251647   -153.605300   \n",
       "25   -153.605277    11.251621   -153.605277    11.251646   -153.605294   \n",
       "26   -153.605268    11.251624   -153.605268    11.251651   -153.605286   \n",
       "27   -153.605263    11.251625   -153.605263    11.251652   -153.605281   \n",
       "28   -153.605253    11.251627   -153.605253    11.251655   -153.605272   \n",
       "29   -153.605246    11.251627   -153.605246    11.251653   -153.605264   \n",
       "30   -153.605239    11.251625   -153.605239    11.251651   -153.605257   \n",
       "31   -153.605232    11.251620   -153.605232    11.251647   -153.605250   \n",
       "32   -153.605223    11.251617   -153.605223    11.251642   -153.605241   \n",
       "33   -153.605212    11.251612   -153.605212    11.251639   -153.605230   \n",
       "34   -153.605203    11.251611   -153.605203    11.251636   -153.605221   \n",
       "35   -153.605194    11.251609   -153.605194    11.251636   -153.605212   \n",
       "36   -153.605186    11.251611   -153.605186    11.251636   -153.605204   \n",
       "37   -153.605179    11.251612   -153.605179    11.251638   -153.605196   \n",
       "38   -153.605171    11.251614   -153.605172    11.251641   -153.605190   \n",
       "39   -153.605166    11.251617   -153.605166    11.251643   -153.605184   \n",
       "40   -153.605161    11.251618   -153.605161    11.251645   -153.605179   \n",
       "41   -153.605155    11.251621   -153.605155    11.251647   -153.605173   \n",
       "42   -153.605144    11.251628   -153.605139    11.251658   -153.605159   \n",
       "43   -153.605130    11.251630   -153.605132    11.251665   -153.605155   \n",
       "44   -153.605122    11.251634   -153.605123    11.251667   -153.605145   \n",
       "45   -153.605120    11.251638   -153.605120    11.251664   -153.605137   \n",
       "46   -153.605114    11.251639   -153.605114    11.251665   -153.605131   \n",
       "47   -153.605106    11.251639   -153.605107    11.251666   -153.605125   \n",
       "48   -153.605102    11.251644   -153.605102    11.251669   -153.605119   \n",
       "\n",
       "    BLcornerlat  BRcornerlong  BRcornerlat  overlap  \\\n",
       "0     11.251739   -153.605325    11.251713        0   \n",
       "1     11.251731   -153.605322    11.251705        0   \n",
       "2     11.251726   -153.605321    11.251701        1   \n",
       "3     11.251721   -153.605322    11.251696        0   \n",
       "4     11.251716   -153.605323    11.251690        1   \n",
       "5     11.251711   -153.605326    11.251684        0   \n",
       "6     11.251705   -153.605327    11.251678        1   \n",
       "7     11.251696   -153.605329    11.251671        0   \n",
       "8     11.251689   -153.605330    11.251663        0   \n",
       "9     11.251680   -153.605330    11.251655        0   \n",
       "10    11.251673   -153.605331    11.251646        1   \n",
       "11    11.251667   -153.605331    11.251641        0   \n",
       "12    11.251663   -153.605331    11.251636        1   \n",
       "13    11.251660   -153.605330    11.251634        0   \n",
       "14    11.251655   -153.605329    11.251629        1   \n",
       "15    11.251651   -153.605329    11.251624        0   \n",
       "16    11.251647   -153.605329    11.251622        1   \n",
       "17    11.251645   -153.605330    11.251618        1   \n",
       "18    11.251643   -153.605329    11.251617        1   \n",
       "19    11.251643   -153.605328    11.251616        0   \n",
       "20    11.251642   -153.605324    11.251616        1   \n",
       "21    11.251642   -153.605320    11.251615        0   \n",
       "22    11.251641   -153.605317    11.251615        1   \n",
       "23    11.251647   -153.605309    11.251617        0   \n",
       "24    11.251647   -153.605300    11.251619        0   \n",
       "25    11.251646   -153.605294    11.251621        1   \n",
       "26    11.251652   -153.605287    11.251624        0   \n",
       "27    11.251652   -153.605281    11.251625        1   \n",
       "28    11.251655   -153.605272    11.251627        0   \n",
       "29    11.251654   -153.605264    11.251627        0   \n",
       "30    11.251651   -153.605257    11.251625        0   \n",
       "31    11.251647   -153.605250    11.251620        0   \n",
       "32    11.251642   -153.605241    11.251617        0   \n",
       "33    11.251639   -153.605230    11.251612        0   \n",
       "34    11.251636   -153.605221    11.251611        0   \n",
       "35    11.251636   -153.605212    11.251609        0   \n",
       "36    11.251636   -153.605204    11.251611        0   \n",
       "37    11.251638   -153.605196    11.251612        0   \n",
       "38    11.251641   -153.605190    11.251614        0   \n",
       "39    11.251643   -153.605184    11.251618        0   \n",
       "40    11.251645   -153.605179    11.251618        0   \n",
       "41    11.251647   -153.605173    11.251621        0   \n",
       "42    11.251661   -153.605164    11.251631        0   \n",
       "43    11.251664   -153.605153    11.251629        0   \n",
       "44    11.251667   -153.605145    11.251634        0   \n",
       "45    11.251664   -153.605137    11.251638        1   \n",
       "46    11.251665   -153.605131    11.251639        0   \n",
       "47    11.251666   -153.605124    11.251639        0   \n",
       "48    11.251669   -153.605119    11.251644        0   \n",
       "\n",
       "                                            polygon_m  \n",
       "0   POLYGON ((-153.60530730838863 11.2517125679763...  \n",
       "1   POLYGON ((-153.60532242262374 11.2517054397381...  \n",
       "2   POLYGON ((-153.60530396770184 11.2517005672041...  \n",
       "3   POLYGON ((-153.60530450358652 11.2516954398786...  \n",
       "4   POLYGON ((-153.60532287038686 11.2516901280594...  \n",
       "5   POLYGON ((-153.60530767270808 11.2516842639279...  \n",
       "6   POLYGON ((-153.60530868210603 11.2516778018813...  \n",
       "7   POLYGON ((-153.60532918833948 11.2516707067058...  \n",
       "8   POLYGON ((-153.60531264279453 11.2516626734196...  \n",
       "9   POLYGON ((-153.60531287424553 11.2516544199985...  \n",
       "10  POLYGON ((-153.6053128455258 11.25164646451044...  \n",
       "11  POLYGON ((-153.60531395294848 11.2516412043738...  \n",
       "12  POLYGON ((-153.60531250603074 11.2516357117654...  \n",
       "13  POLYGON ((-153.60531203486076 11.2516336560737...  \n",
       "14  POLYGON ((-153.60531157256716 11.2516293035685...  \n",
       "15  POLYGON ((-153.6053106272573 11.25162436996680...  \n",
       "16  POLYGON ((-153.60531148160254 11.2516213159115...  \n",
       "17  POLYGON ((-153.60531182829246 11.2516181498626...  \n",
       "18  POLYGON ((-153.6053115481469 11.25161685953249...  \n",
       "19  POLYGON ((-153.60530948504496 11.2516156522718...  \n",
       "20  POLYGON ((-153.60530610784394 11.2516157947657...  \n",
       "21  POLYGON ((-153.6053015951501 11.25161483159092...  \n",
       "22  POLYGON ((-153.60529932432337 11.2516151158048...  \n",
       "23  POLYGON ((-153.6053089846491 11.25161735210587...  \n",
       "24  POLYGON ((-153.6052814564868 11.25161910801365...  \n",
       "25  POLYGON ((-153.605277424527 11.251621334935358...  \n",
       "26  POLYGON ((-153.60526798471008 11.2516238013981...  \n",
       "27  POLYGON ((-153.60526315869816 11.2516251992590...  \n",
       "28  POLYGON ((-153.60527176164203 11.2516273237340...  \n",
       "29  POLYGON ((-153.60524567089854 11.2516267581588...  \n",
       "30  POLYGON ((-153.60523920480418 11.2516248686363...  \n",
       "31  POLYGON ((-153.60524983218897 11.2516203862087...  \n",
       "32  POLYGON ((-153.60522313352865 11.2516165356912...  \n",
       "33  POLYGON ((-153.6052301033692 11.25161193698947...  \n",
       "34  POLYGON ((-153.6052033804677 11.25161063147030...  \n",
       "35  POLYGON ((-153.6052120803318 11.25160935243135...  \n",
       "36  POLYGON ((-153.60518621736148 11.2516105763390...  \n",
       "37  POLYGON ((-153.6051790110036 11.25161224393778...  \n",
       "38  POLYGON ((-153.60518962666754 11.2516141640319...  \n",
       "39  POLYGON ((-153.6051664638791 11.25161736319459...  \n",
       "40  POLYGON ((-153.6051608016717 11.25161844046033...  \n",
       "41  POLYGON ((-153.60515532680574 11.2516207205026...  \n",
       "42  POLYGON ((-153.60514394570419 11.2516282024849...  \n",
       "43  POLYGON ((-153.60515320289943 11.2516290945753...  \n",
       "44  POLYGON ((-153.60514461134548 11.2516339224403...  \n",
       "45  POLYGON ((-153.60511957758825 11.2516381661889...  \n",
       "46  POLYGON ((-153.60511402841288 11.2516389528132...  \n",
       "47  POLYGON ((-153.60512448925505 11.2516392921980...  \n",
       "48  POLYGON ((-153.605119133641 11.251643524156453...  \n",
       "\n",
       "[49 rows x 53 columns]"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pipeline.metadata"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "28b464ca-0308-46f2-9c18-2602c33952da",
   "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.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
