{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tutorial: `batch`\n", "\n", "`hs_process.batch` extends the functionality of the core modules of `hs_process` ([segment](api/hs_process.segment.html#hs_process.segment), [spatial_mod](api/hs_process.spatial_mod.html#hs_process.spatial_mod), and [spec_mod](api/hs_process.spec_mod.html#hs_process.spec_mod)) so that image processing can run via a *relatively straightforward* script without end user interaction.\n", "\n", "The overall goal of the `batch` module is to implement many post-processing steps across many datacubes via an easy-to-use API. It was designed to save all data products (intermediate or final) to disk. Any unwanted files must be manually deleted by the user.\n", "\n", "***\n", "\n", "## Sample data\n", "Sample imagery captured from a [Resonon](https://resonon.com/) Pika II VIS-NIR line scanning imager and ancillary sample files can be downloaded from this [link](https://drive.google.com/drive/folders/1KpOBB4-qghedVFd8ukQngXNwUit8PFy_?usp=sharing).\n", "\n", "Before trying this tutorial on your own machine, please download the [sample files](https://drive.google.com/drive/folders/1KpOBB4-qghedVFd8ukQngXNwUit8PFy_?usp=sharing) and place into a local directory of your choosing (and do not change the file names). Indicate the location of your sample files by modifying `data_dir`:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "data_dir = r'F:\\\\nigo0024\\Documents\\hs_process_demo'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## Confirm your environment\n", "\n", "Before trying the tutorials, be sure `hs_process` and its dependencies are [properly installed](installation.html#). If you installed in a *virtual environment*, first check we are indeed using the Python instance that was installed with the virtual environment:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python install location: C:\\Users\\nigo0024\\Anaconda3\\envs\\hs_process\\python.exe\n", "Version: 0.0.4\n" ] } ], "source": [ "import sys\n", "import hs_process\n", "print('Python install location: {0}'.format(sys.executable))\n", "print('Version: {0}'.format(hs_process.__version__))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The *spec* folder that contains `python.exe` tells me that the activated Python instance is indeed in the `spec` environment, just as I intend. If you created a virtual environment, but your `python.exe` is not in the `envs\\spec` directory, you either did not properly create your virtual environment or you are not pointing to the correct Python installation in your IDE (e.g., Spyder, Jupyter notebook, etc.).\n", "\n", "***\n", "\n", "## `batch.cube_to_spectra`\n", "Calculates the mean and standard deviation for each cube in `fname_list` and writes the result to a \".spec\" file. [[API]](api/hs_process.batch.html#hs_process.batch.cube_to_spectra)\n", "\n", "**Note:** The following `batch` example builds on the results of the [`spatial_mod.crop_many_gdf` tutorial](tutorial_spatial_mod.html#spatial_mod.crop_many_gdf). Please complete the [`spatial_mod.crop_many_gdf`](tutorial_spatial_mod.html#spatial_mod.crop_many_gdf) example to be sure your directory (i.e., `base_dir`) is populated with multiple hyperspectral datacubes. The following example will be using datacubes located in the following directory: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf`\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_mod', 'crop_many_gdf')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.bip',\n", " progress_bar=True) # searches for all files in ``base_dir`` with a \".bip\" file extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `batch.cube_to_spectra` to calculate the *mean* and *standard deviation* across all pixels for each of the datacubes in `base_dir`." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 39/40: 100%|████████████████████████████████████████████████████████████████████| 40/40 [00:02<00:00, 18.19it/s]\n" ] } ], "source": [ "hsbatch.cube_to_spectra(base_dir=base_dir, write_geotiff=False, out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use [`seaborn`](https://seaborn.pydata.org/index.html) to visualize the spectra of plots 1011, 1012, and 1013. Notice how ``hsbatch.io.name_plot`` is utilized to retrieve the plot ID, and how the *\"history\"* tag is referenced from the metadata to determine the number of pixels whose reflectance was averaged to create the mean spectra. Also remember that pixels across the original input image likely represent a combination of soil, vegetation, and shadow." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'API Example: `batch.cube_to_spectra`')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import re\n", "fname_list = [os.path.join(base_dir, 'cube_to_spec', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-cube-to-spec-mean.spec'),\n", " os.path.join(base_dir, 'cube_to_spec', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1012-cube-to-spec-mean.spec'),\n", " os.path.join(base_dir, 'cube_to_spec', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1013-cube-to-spec-mean.spec')]\n", "ax = None\n", "for fname in fname_list:\n", " hsbatch.io.read_spec(fname)\n", " meta_bands = list(hsbatch.io.tools.meta_bands.values())\n", " data = hsbatch.io.spyfile_spec.load().flatten() * 100\n", " hist = hsbatch.io.spyfile_spec.metadata['history']\n", " pix_n = re.search('', hist).group(1)\n", " if ax is None:\n", " ax = sns.lineplot(x=meta_bands, y=data, label='Plot '+hsbatch.io.name_plot+' (n='+pix_n+')')\n", " else:\n", " ax = sns.lineplot(x=meta_bands, y=data, label='Plot '+hsbatch.io.name_plot+' (n='+pix_n+')', ax=ax)\n", "ax.set_xlabel('Wavelength (nm)', weight='bold')\n", "ax.set_ylabel('Reflectance (%)', weight='bold')\n", "ax.set_title(r'API Example: `batch.cube_to_spectra`', weight='bold') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.segment_band_math`\n", "Batch processing tool to perform band math on multiple datacubes in the same way. `batch.segment_band_math` is typically used prior to `batch.segment_create_mask` to generate the images/directory required for the masking process. [[API]](api/hs_process.batch.html#hs_process.batch.segment_band_math)\n", "\n", "**Note:** The following `batch` example builds on the results of the [`spatial_mod.crop_many_gdf` tutorial](tutorial_spatial_mod.html#spatial_mod.crop_many_gdf). Please complete the [`spatial_mod.crop_many_gdf`](tutorial_spatial_mod.html#spatial_mod.crop_many_gdf) example to be sure your directory (i.e., `base_dir`) is populated with multiple hyperspectral datacubes. The following example will be using datacubes located in the following directory: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf`\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_mod', 'crop_many_gdf')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.bip',\n", " progress_bar=True) # searches for all files in ``base_dir`` with a \".bip\" file extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `batch.segment_band_math` to compute the MCARI2 (Modified Chlorophyll Absorption Ratio Index Improved; Haboudane et al., 2004) spectral index for each of the datacubes in ``base_dir``. See `Harris Geospatial`_ for more information about the MCARI2 spectral index and references to other spectral indices." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 39/40: 100%|████████████████████████████████████████████████████████████████████| 40/40 [00:15<00:00, 2.59it/s]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbEAAAEYCAYAAADSw8iXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAABvQklEQVR4nO3dd1yV5f/48ddhg4BsFJwgB2SoiLkzV7nNsOFILS1n+bG0tL6VfbKhlVlpalaWozRX7p1WpqLgQEFkyh6ykb3u3x/8zv0BGR4UOIzr+XjwAO51vc/N4bzv+7qvoZAkSUIQBEEQmiAtTQcgCIIgCA9LJDFBEAShyRJJTBAEQWiyRBITBEEQmiyRxARBEIQmSyQxQRAEoclqUkls1KhRODs7s3//fnnZv//+i7OzM87Oznz22Wfy8qioKJydnXF3dycvL6/G4y5btgxnZ2fWr18PwL59+3B2duall16qj5dRLyIjI3n99dfp27cvffr0Yc6cOURERNTqGOfPn2fSpEl4enryxBNPsHz5crKysuT1RUVFfPrpp/Tp04cePXqwYMECkpOTqzzWO++8g7OzMwcOHKiw/ObNm0ybNg0vLy8GDBjA0qVLSUtLq7DNhg0bePzxx/Hw8GDGjBncuXOnwvqkpCTefPNNvLy86NOnD++//z65ublqn4uioiK+/vprhg4dSo8ePRg/fjzHjx+v1blSycrKok+fPri6ulZaFx4ezuzZs+nRowcDBw5k9erVlJSUABAbG4uzs3OV+5UXGRkpv7/Lf+3evVutcjTp0qVLODs78+STTwLqv+aGcP//fEMZOnRolX9PZ2dnYmNj66yctWvX4uzszP/93//Var/CwkK+//77Wu2TnZ3Nf//7XwYNGoSnpyfz5s2r9rWsW7euyvMeGRnJ3Llz6dOnD3369GH+/PnExMSoVb5OraLVMC8vLyIiIvD392fChAkA+Pj4yOt9fX3ln/39/QFwdXXF0NCwQeNsaNnZ2cyaNYvY2Fi6du2KJEn89ddfBAYGcvjwYczMzB54jMDAQObMmUNJSQm9evUiOjqanTt3EhcXx48//gjAV199xZYtW7CxscHa2prTp0+TmprKjh07UCgU8rG2bNnCvn37KpWRlpbGK6+8QkZGBm5ubuTn57N//36SkpL45ZdfAPj111/5+uuvMTMzw8nJCR8fH1555RWOHj2Kvr4+eXl5TJ8+ncjISJRKJbm5uezatQuAFStWqHUu1q9fz4YNGzAxMcHT05MrV66waNEitm/fTq9evdQ+7/fu3WPBggVkZGSgra1dYd3du3eZOnUq6enpdOvWjYSEBDZt2kSrVq2YO3eu2mUEBQUB4ODgQOfOneXl9vb2dVpOfTA3N2fYsGFYW1trNI6quLq6kpWVVeGcNoQBAwaQmpoq/56ens7Vq1exsbHB3Ny8QWO5X1ZWFs888wyxsbHMmTNH7f0WLlzI+fPnUSqVGBkZcebMGW7fvs2hQ4cwNjaWtzt+/DgbN26stH9hYSGvvvoq0dHRODo6YmBgwJ9//smdO3c4dOgQOjo1p6kml8R2794tJyiAixcvAqCtrc3t27fJzs7G2NiYGzduyPs0d+fPnyc2NpZevXrx66+/AvD888/j7+/PX3/9JSf8muzbt4+ioiLmzZvHokWLyMzM5PHHH+fcuXMkJCRgYWHBzp070dHRYd++fVhYWDBmzBiuXbuGv78/PXr0IDIykpUrV3L27Nkqy7h69SoZGRk89thjbN++neLiYkaOHMnFixe5d+8eJiYmcjL78ccf8fDw4OWXX+bChQucPn2aMWPGsG/fPiIjI+nVqxdbt24lMzOTp556isDAQEpLS9U6F2fOnAHKrlb79evH3r17effddzl16pTaSezo0aN88cUXxMfHV7n+559/Jj09nbFjx7J69WqCgoJ48cUXuX79ulrHV1ElsVdeeYWJEyfWWzn1QalUNvidjrqmT5/O9OnTG7zcFStWVPh94cKFAHz55Ze0atWqweMpLzc3t9Z3g7du3eL8+fNyDVlpaSmTJ0/mxo0b7N69m5dffpnk5GRWr17NH3/8UeUxwsPDiY6Opl27dhw8eBAdHR1efPFFfH19CQsLw8XFpcYYmlR1Ys+ePQEIDg4mPz+frKwsgoKCsLa2pl+/fpSUlHDlyhXgf3diXl5exMbGMm/ePDw9PXnsscd48803q60Gq4okSXz33Xc8+eSTeHh40K9fP/7zn/+QlJSk9jFUt/cff/wxzz33HF5eXuzZswcou/sYPnw47u7ujB49ukJ1qapKZtasWezatYvHH38cT09PFi9ezL1794Cyq8ovvviC1157Td7P0tISKLvSU8f48eP55JNPGD9+PACmpqbo6+sDZXdQt2/fJjc3l86dO2NtbY22tja9e/cG4Nq1awD89ddfnD17ltGjR+Pm5lapjPuvNBUKBZIkYWBggJ6eHikpKURHR2NkZISHhwcAffv2rVDGhQsXAHjiiSfQ1tbGwsICPz8/9u3bh5aWllrnwsLCQi4fyv6+ACYmJmqdK4Dvv/+e9PR0Xn/99SrXqy6uhg4dCkDXrl25cuVKlVei//77L6NHj8bDw4MXX3yRyMhIed2tW7cAuHLlCm+++SarV68mJSVF7XJUVeMfffQRq1atonfv3vTr14+tW7cSGhrKlClT8PDwYNy4cfL/jjpU7+f169ezYsUKevbsyYABA1i3bp18Pu+vTrxfbGws/fv3x9nZmU2bNgGQmZnJ22+/zYABA3B3d+fxxx9nxYoVFBYWqh3bvXv3ePvtt+nZsyf9+/dn06ZNvPHGGzg7O3Pp0iWg6urE06dPM2rUKPnvcPbsWZydnZk2bZq8ze3bt5k+fTrdunWjX79+fPDBB2RnZ6sdW3l///03J06cYPTo0fTp00ft/aZNm4azszOnT59m5syZdOvWjREjRnDq1Kka90tJSeGdd95hwIABeHh48Mwzz3Ds2DF5/RNPPCH/7OzsXGVtyv2ioqIA6NKlC1paWujo6NC/f3/gf7Vk/v7+/PHHH/Tt25dBgwZVOoaZmZn8v1j+f1KhUFS4k6tOk0piHTt2xNramuLiYgIDA7l8+TIlJSX06dNH/rDz9fWlsLCQoKAgFAoFPXr04JVXXuHMmTN07tyZjh07cuTIEWbOnElRUZFa5e7cuZNvv/2W7Oxs+vbti6mpKcePH6/2A6wm27dvJzMzEzs7Ox577DH++OMPPvroIzIyMujTpw+pqaksXbqUI0eOVNjv+vXrfPrpp3Tu3BkdHR0OHz4s13e3b9+e8ePH069fPwDu3LnDv//+C0CPHj3Uiqt79+48++yzODg4AHDgwAGysrIwNjbGycmJhIQEgApVk6qfVeu6du3Kli1bWLNmTZVXlV5eXkyfPh0/Pz8mTpzI+PHjSUxMZOnSpejr66tVRnR0NADx8fGMHj2a3r178/bbb8vP7tQ5F0uXLsXe3p7XX3+dmTNnsmLFCpydnZk6dapa5wpgypQpnDhxotq7XFWcAQEBDBkyhP79+/PJJ59QUFBQYbuSkhIWLlyImZkZ+vr6+Pr68vHHH8vrVXdie/fu5ciRI2zatImJEyeSmZlZq3L27t3LwYMHad++PWlpaXz66adMnjyZgoICrK2tCQkJ4c0336S2o9D99NNPHD9+HDc3N9LT01m7dq18B1yTe/fuMWfOHFJTU3nppZeYPXs2UPYs9cCBA+jr69OnTx+ys7PZvn07O3bsUDumd999lwMHDqCtrY2TkxMbNmzgn3/+qXGf27dv8/rrrxMREYGTkxOZmZksWbKkwjYZGRnMmDGDS5cu4ebmhpWVFb///jv/+c9/1I6tvHXr1gGwYMGCh9p/6dKlJCQk0KVLFyIjI1m4cCG3b9+uctvs7GwmT57Mvn370NfXp0ePHoSEhLBo0SJ27twJwMCBA+Xthw0bRtu2bR8Yg2qboKAgiouL5Z8BuZbC3t6e7777jp9//lm+oLz/GG+99RZJSUmMHz+eiRMncuXKFebMmUO7du0eGEOTSmLwv7uxGzduyFehffv2lT+0fH19CQoKoqioCEdHR/7991/u3LnDiBEj2LdvH3v27GHcuHGEhITw999/q1Wm6mpjwoQJrFu3jgMHDvD2228ze/bsWj9At7a25vDhwxw6dIiOHTvKb+QdO3bw008/yc93VFemKtnZ2fz4449s3bqV33//HV1dXU6cOFHp4Wd8fDyvvPIKhYWF9OvXD09Pz1rFB2XVkx988AEAs2bNQk9Pj/z8fIAK9dOqn1Xryl9MVEWSJEpLS4GyD92wsDCMjY3lRKX64K2pDNX3HTt2YGhoiLGxMQcOHGDp0qWVyqvuXKj+2bKysjh//jz5+fnY2dlVeq5VkxdeeAFbW9tq16vi3Lx5s/yPvnXrVr744otK23799df89ttvfPXVV8D/7joLCgrw8vJi4MCB7N+/n/Pnz9OzZ08SExPlOy11y9HW1ubAgQPs2bOHzp07I0kSffr0Ye/evWzfvh2AxMREte/cVfT19Tly5Ajbtm2Tq8pUz1BrsnDhQsLCwhg7dizLli2Tl48cOZK5c+dy/PhxfvrpJ/mOWt1GSlFRUZw8eRJdXV327NnDli1b2LFjxwMbd/3444+UlpYyceJE9u3bx8GDByt8qEPZBWhGRgYzZ85kx44dHDp0CC8vL/7991/5g1td165d48aNGwwYMIAuXbrUal+VHj16cOTIEfbt28eECRMoLS1l8+bNVW67Y8cOoqOj6d69O8ePH2fbtm188803QFlVZkFBAZ988om8/fr16+XP1Jp069YNNzc3IiIiGDt2LN7e3vLnquq92bVrV4YPH46WVvXpRvU/GRYWRkBAAAYGBlhZWal1HppsEvP395dvV/v27YurqytmZmYEBgbKy728vAgODgbgxIkTciugQ4cOAaj93GDixImYmZmxefNmHnvsMfmD0dPTs1YffFB2x6OnpwdATk6OXAc9duxYnJ2deeqpp4CyKtPy/3hWVlby8xoHBwecnJyAsvpkldjYWF588UViY2Oxt7fn888/r1VsAP/88w/z5s2joKCAJ554Qr5CVlUtlk/aqjeegYGBWsc+fPgw27dvp0ePHly4cEFuubh48WJu374tn5eaylDFMWjQIPnuonXr1pw5c4a7d++qdS4WL15MXFwcX331FVevXpWrjt57771anKmaqeKcPHkyv/32G7t27UJbW5vdu3fLiVxFlfg7deoE/O+fX19fn2+//ZaffvqJrl27YmVlxYwZM4D/JTp1y1EqlVhZWaFQKLCxsQGQq33atGkjb1ebajsou3BRXYSMGDECKLtrLt9a9H4lJSVytbCxsXGFRkGqFsgff/wxEyZMkJOxunGp/h9cXFzo2LGj/PODEoUqSapeg0KhYOzYsRW2CQkJAcouGFSfJaoq2No+g1Q9Hxo5cmSt9iuvfGJQfW6U/zwoTxXnuHHj5P+z4cOHY2Zmxr179+TXVltaWlps3LiRJ598kpSUFBQKhfysUd0GdVevXuWrr77Czs6OP//8k9OnT2NjY8PHH3/MX3/99cD9m1TDDvhfErt48SIZGRnY29vTvn17AB577DFOnTolV2d4eXlx8+ZNADp37ixXlamoc7sM4OTkxIkTJzh58iQXLlzg6tWr+Pr68ssvv3Dw4MEar8jvV/65i+oDGspu3+9Xvkro/qpPVbWP6k189+5dZsyYQVxcHO3atZNbEdbGpUuXeO211ygoKGDQoEGsXbtWvhNSHSsjI0PeXvWzuuex/D+SpaUllpaW9O3bl+PHj+Pj48OoUaMeWEabNm0IDQ3F2dkZKPsQ7NSpE/7+/iQmJmJjY1PjuUhNTSUyMlJumAJlCWD79u3yB2tdaNOmDREREXKc7dq1w9zcnJSUlAqvT1tbW/5QUf0tVX/bgoICYmNjKSoqkh9uq7ZVvXfULaf8hYaqHNWHTE1XyA9S/n2piluhUDzwmG5ubkRHR7N7926mTZtGly5dKCkpYfbs2Vy4cAFvb29mz55NdHQ0a9asUbuaU3UBdP/25RNlVVTns/x+9++jeq2urq6V3vO1bVmoeq9V9YxIXVWd++ouqqt7/eX/Zg/LxsZGrlGCsi4yAB06dFBrf9XnwvDhw+Xqw+HDh/PTTz9x/vx5Bg8eXOP+Te5OzNXVFSMjI/kftHz1ler2V9XgolevXiiVSuB/9bLr16/Hy8sLV1fXGqu+yvvll1947733sLe35+uvv+aff/7Bzc2NjIyMCi0l1VH+n7t169byh+srr7zC+vXrefvtt2nbti3Dhg2r8GwoMzOTc+fOARATE0NYWBgKhQJHR0f5uUpsbCxt27Zl+/btatUll5eUlMTChQspKChg4MCBfPfdd/JVPpRVCejp6XHnzh3u3r1LSUkJfn5+gPotQFu3bg0gX1gUFxcTGhoKlP0j2Nra0qZNG3JycggICADg8uXLwP8uXlSNSXx9fSkpKZE/6KHsn+ZB58LIyAhdXV0yMzPlamJV44m6bAquilNVK6BKKsbGxnLDkgcJDw9n9OjRzJgxQ36/q65MVc/36qKcR+Hj4yM3NFG1+rS3t6/x7lxLS4sff/xRro5fuXIlUPZ3uHDhAmZmZnz88ceMHj261q3lVDUUwcHBFf6+qvfZg/Y7ceIEUPbhfvDgwQrbqD5L3N3dWb9+PevXr8fJyYnu3bvXqto+ISGBmJgYrK2tK9wF19bx48fl5KtqEezo6FjltqqGUocOHZLvak+fPk1mZiampqYolcoKiez+2oLq3Lt3j9GjRzNs2DAKCwspLi6W36P3V8dWp/zngiqpqp7tqfM/2eTuxHR0dPDw8JBbGZVPROV/btu2Lfb29owbN461a9fy77//MmbMGIyMjLh58yYmJiY899xzapWpUCg4deoU586dw8vLi6ysLAIDA2nVqhXdu3d/pNcza9YsPvvsM15++WU8PT0JCgqS693L09bWZv78+Xh6ehIcHExRURFjx47F3t6eo0ePytVLrVq1qtCMd9y4cfIdTk02bNggf1AWFBSwaNEied3ixYtxdHTk2Wef5bfffmPixIm0bt2a8PBwPD096datm1qv9ZlnnmHLli388ccfhIeHk5WVRWRkJPb29nLLqGnTpvHFF18wa9Ys7O3tCQwMpF27dvKd6vPPP8/WrVu5fv06Tz/9NEVFRaSmpuLt7Y2ZmZla5+KZZ55h165dPP/883Tt2lVOxrVp2PEgM2fO5ODBgxw/fpyJEyeSmppKcXExL7/8strHcHV1pV+/fly8eJFx48Zhb2/PtWvXMDU1ld8fdVHOo8jNzWXs2LEolUquXr0KIFdBV0ehUGBhYcGMGTP47bffOHfuHOfOncPFxQVdXV0yMjKYMGECurq6BAYGyuWoo1OnTgwZMoSzZ8/y7LPP4urqyo0bN9DR0anx+fWMGTM4evQo+/btIzg4uMLFkcrkyZPZunUru3btIjAwkKKiIkJCQrCzs6tVc/24uDig+oSjruvXrzNmzBhMTEy4efMmOjo6zJo1q8ptJ02axO+//46/vz8jR47E3t5e/nu9/fbb6OnpYWpqio6ODsXFxUyePJmpU6fKrZWrY2JigqWlJZcvX2bChAkoFArCwsLo0qULzzzzjFqv46mnnuKbb77h8uXLjB8/Hi0tLW7fvo2JickDy4cmeCcGFa/8yycuR0dH+c5GtY2hoSFbt25lyJAhJCYmEh4eTt++fdmyZYva1YAzZszgww8/pEOHDly9epWYmBgGDBjA5s2ba1WVWJWXXnqJZcuWYWtri5+fH0ZGRixYsKBSyyh7e3vee+89IiIiKCws5Omnn+a///0vQIWmtWFhYfz555/y1/2jXVTn9OnT8s++vr4VjqF62P/OO+8wY8YMCgsLiYmJYdiwYaxdu1bt19qpUyd+/fVXBg0aRFRUlNzHa8uWLXJrxlmzZrFo0SL09PQIDQ2lT58+/PDDD/JdoZmZGdu2bWPgwIHExMRQUFDAzJkzWb58udrn4oMPPuCNN96gdevWXLt2jY4dO/Lhhx/WaRLr2LEjW7ZswdPTk9DQUHR1dVm8eDHz5s2r1XG++eYbJk2aBJS1+urduzdbtmzBzs6uTst5WOPGjWP06NHcvHkTU1NT3njjDV544QW19tXX15cvlj7//HMsLCz4/PPP6dixI9HR0RQWFvLOO++gUCi4evWq2o2oVq5cyejRoykqKiIiIoIlS5ZUqo69X7du3fjqq6/o2LEjoaGhtGnTRm79q9qnTZs2bNmyhT59+hAREUFCQgJDhw5l69attRpQQXXn+qidm9944w3atWtHcHAwnTt3Zu3atdU++7OwsGDXrl14e3uTn5/PtWvXUCqVfPPNN/LFvKGhIa+//jpmZmaEhYU9sDGMyhdffMHQoUNJTEwkOTmZCRMmsHXr1go1OTUxMzNjx44djBo1ipSUFOLj4xkwYADbtm1T605VIWZ2btwuXbrE9OnT6dChwwP7gQhCQ1m7di3r1q3j2WefrdCqTdOys7P54YcfsLGxYdCgQbRv357CwkJGjBhBfHw8p0+flp+hl3fy5EkiIyPp2LGj3Lhjx44dfPjhh0yYMIFVq1Y19Eup1rRp07h8+TKff/45Tz/9tKbD0bgmV53YGM2fP7/G9WPGjJEbEWjC+++/X2Gom/v17dtXI6MXNEZHjhyp1Efvfo11FIq6os77WRPU/dscOnSIuLg4rK2tcXV15c6dO8THx+Ps7FxlAoOy5Ld69WqgrIGYtra23OCgqkZXVXnUz4GQkBC+/vrrGo9Rvpq/vl28eJFt27bVuM2KFSuq7PvVkEQSqwN//vlnjeu7du3aQJFU7fz583I9fFVMTU0bMJrGLSIi4oF/z+ausb6f1f3bfP/996xcuZIbN25w7tw5TE1Neeqpp6rsS6ji7e1NYmIiBw4ckJvLd+zYkSlTpsjN1x/kUc9benr6A4+h6mLREBISEh4Yz7vvvttA0VRPVCcKgiAITVaTbNghCIIgCNAMqxNrM4ipIAiC0Dg87IwjzS6JQcuYfqW8oKAgjT93a6rEuXt44tw9PHHuKnqUmw9RnSgIgiA0WSKJCYIgCE2WSGKCIAhCkyWSmCAIgtBkNcuGHYIgNC5FRUXk5OTUeubo5io7O7vWE5A2dXp6elXO+P6oRBITBKFeZWdnc+PGDQwNDR9p7rLmJCcnh+joaE2H0WAkSSI3Nxd7e3t5stK6IpKYIAj1Kioqig4dOtR6jrvmLDk5uU7nr2sKCgoKuHz5Mvb29vJku3VBXBYJglCvioqK6qUaSWha9PX10dXVrTRL/aMSSUwQBEFoskR1oiAIzcbhw4ernczR0NCQsWPHNnBEQn0TSUwQhGYjLy+Pxx57rMp1vr6+DRyN0BBEdaIgCILQZIk7MUEQNCYxMZFp06bJv2tra2Npacn06dMZMWKEBiMrk5aWxo8//sjjjz9Ov3792Lp1K9u2bWPDhg0YGxszbdo0nnnmmQfO6ny/I0eOcPnyZdavX8+tW7dYt24dMTExODg4sHDhQhwdHYGy2ZU3bdpEWloaPXv25I033sDU1JT58+czfPhwvL291SqvuuOUp3pt99u+fTva2tp8++23+Pv7Y2lpyYwZM3jiiScAiImJYfXq1YSHh9OpUycWLVokx98QxJ2YIAgaN3DgQFauXMk777yDvr4+X331FbGxsZoOC19fX06dOkVpaSkATz75JKtWrcLe3v6hj5mSksLu3buZOHEieXl5LF++nJKSEt5++23y8vJYtmwZ+fn5pKen8/HHH2Nra8uCBQu4fPkymzZtAuDZZ5/lp59+IjU19YHl1XSc8lSvbdWqVSxfvhwDAwMef/xxbGxs+Oqrr/D39+c///kPDg4OfPLJJwQHBwPw6aefkpqayptvvklOTg4fffRRg3ZqF3digiBonLW1tTyFUnp6Ot999x1hYWG0a9eOX3/9lcOHD1NQUEDPnj1ZsGAB5ubmLF68mJSUFGxsbAgODmb9+vUkJSXx2WefERsbi7GxMSNHjmTIkCEUFRVx4cIFdu3aBcCAAQOYM2cOhoaGLF68mKysLDw9PTlx4gSmpqbMmzcPBwcHvvzySwA+/PBDlixZQlJSUoU7sfKioqL49ttvCQkJwdramhdffJGhQ4dWeq2HDx9GoVAwYMAAoqOjycjIYOLEiTz++ONkZ2fLCSMrK4vCwkK8vb3p3bs3Z86c4eLFiwD079+fNWvWcODAAWbOnIm/vz9Llixh3rx5le7O/Pz8qj1OeW3btqVt27YArF69GiMjI958800UCgUBAQG4u7szdOhQXFxc+Pvvv/n7778xNzcnLCyM559/niFDhpCYmMjmzZuJjIykc+fOj/iuUI+4ExMEQeNKS0spKCggJSWFc+fOAWBra8upU6f45ZdfGD9+PHPmzCEkJIS1a9fK+8XHx9OlSxcWLVqEqakpx48fp7CwkFmzZtGhQwd27txJTEwMx48fJygoiKlTp/Lyyy/zzz//sHXrVvk4kZGR5OXl8dprr5Gens6mTZuwsLDg+eefB2D69On06tWr2vhLSkr48MMPKSoqYtGiRfTs2ZNVq1YRHh5eaduLFy/SsWNHDAwMsLa2RktLixs3bpCZmcnNmzcBuHv3LsnJyQC0bt0aADMzM7KysigoKMDAwABHR0d8fHwAcHBwYNWqVQwcOLBSeTUdpyp37tzhxIkTvPjii3KitrW1JSIigsTERK5evVopRjMzswplqJY3BHEnJgiCxh04cIADBw4AZc/FpkyZQteuXdmzZw8AmzdvlrctP+aglpYWL7/8Mnp6ely6dImCggKefPJJevbsiYeHBwC6urps3bqVkpISvvvuO3nfy5cvM2fOHAB0dHRYtGgR2traHD58mOjoaPT09OSyEhMTOXPmDIGBgQCcO3eOUaNGyceKjY2Vqz+DgoLk5X5+fpWeDyUkJNC9e3cAzM3NmT17Nps2beLZZ5+lQ4cOlc6NQqEAkKvoVL9bWVlx6dIlAExMTOjZs2eN57i649zv999/x8jIqMIzyddee43//ve/TJs2TY6xuv0ftK6uiSQmCILGDR48GG9vb3R1dbGxsZEbHZSUlKClpcXq1avR0tIiJyeHVq1ayc+oDAwM0NPTA/734axaV1xcTFxcHO3ataOkpAQjIyM+++wzoGzsQtVdA5SNJqGtrQ2UJTTVsQoLCwHo0qULnp6eJCQkcPXqVfLz8yvEX1xcDMCoUaMYOXIkRUVFSJKEnZ1dla9XFSPAhAkT6NevH6WlpQQHB7Ny5Uratm2Lvr4+AJmZmfJ3U1NT+fUqFAq1koWVlVWNx7n/dVy8eJF+/fpVWN+tWze+//57cnNz0dfXZ9q0abRp06bKY5cvsyGIJCYIgsaZm5vTtWvXSst79erF+fPnOXPmDG5ubnz33Xe4uLjw6aefAhWv+F1dXdHX1+fkyZMYGhpy9epVLl++zFtvvYW7uzvHjh3jypUrWFhYsG7dOkaNGoVSqawxLlViCw0NlZ8XVaVDhw7Y2Njg5+dHz5498fHx4ezZs6xZswYbG5sK27Zr146MjAz591deeYWSkhJmzZrF3r17sbKyolu3bmRlZaGrq8sff/xBRkYGAQEBDBkyRN4vJSVFviu6d+8eoaGhtGvXrlJ5PXv2rPY4CQkJJCQk0LVrVwwNDQkNDSU3Nxc3N7cKx/jmm284duwYb7zxBtevX0dLS4vBgwdja2tLp06d+Pvvv3FycuL06dPY2dnRqVOnGs9rXRLPxARBaLRGjx7NSy+9hK+vL2vWrJGff1XF1NSUESNGYGBgwObNmwkPD2fKlCkolUrGjRuHu7s7R48e5fvvv6dfv37MnDnzgeXb2dlhb2/Pv//+S1hYWLXb6erq8umnn2Jvb8+aNWvw9/dn3rx5uLq6Vtq2X79+3LlzR76bW7x4MXp6enz55ZcYGRmxatUq9PT0sLKy4oMPPiAxMZF169bRq1cvXn31VaDsDjEsLIw+ffoAEBERwdKlS/n3338rlVfTcU6dOsXSpUuJi4sDyhIjUCkRTp8+nW7duvHdd98RHh7Ohx9+KFeTfvDBB1hbW/Pll19iaGjI+++/36DViQqpmU3wc+XKFbmVU0sRFBRU5VWs8GDi3D08dc/d9evX6dixI+bm5vUe0+7du2scseO5556rk+M9zLFU0tPTefHFF3nnnXeqbIihjgsXLvDZZ5+xZcsWLCwsHuoYmuDj40P37t0xNDSssPxRPrdFdaIgCM1eaWkpWVlZHDhwAIVCgSRJlJSUUFJS0uBjKpqbm/Pcc8+xd+/eh05ie/bsYfr06U0qgdWXBq1OjIyMZO7cuTz22GM8/vjjrFixgtzcXKCsWefUqVPx8PBgxIgR/PXXXxX2PXv2LCNGjMDDw4OpU6dy586dhgxdEIQmRJIk8vPzSU1NJS4ujujoaBwdHWndujWmpqa0bt0aCwsLbG1t0dXVJTk5uUE76I4ZM4Y1a9Y89P5fffXVQ98JNjcNlsQKCgqYM2cOZ8+excHBAV1dXbZv387HH39McXExCxYswM/PDxcXFxITE3nttdeIiYkByoY1WbhwIYmJibi4uODn58f8+fPlFkGCIAhQ1uQ+MzOT+Ph4EhMTyc7ORkdHBzMzM6Kiomjbti12dnZyy7pWrVqhq6tLYGAgvr6+Ddq/SagbDZbErl69SmRkJEOHDuX333/nwIED6Ovrc/jwYXx9fQkPD2fUqFHs3r2bt956i6KiIvbu3QvA3r17KSwsZOnSpezevZsRI0YQEREhRqUWBAEou0gOCwvDwsKC9PR0tLW1sbKyon379tja2sodfPX19dHT08PAwABjY2MsLS1JTU3F1dUVhUJBYGAgt27dqvOJG4X602DPxDp37swXX3whjzlmbGyMgYEB9+7d4/r16wB4enoCyD3jVb3X/f39AeTOfF5eXpw4cYIbN27Qr1+/hnoJgiA8BNUzqPpQVFREVFQU8fHxSJJEQUEBjo6O6Orq1uo4NjY2WFtbEx0dTWRkJPfu3aNbt271EnNLVlpaWuctFxssibVp04bx48fLvx87dozMzEy6dOnC3bt3gf8NWaL6npSUBPDA9fcr32O+JcjPz29xr7muiHP38NQ9d5mZmaSnp9OhQwe0tOqm8keSJDIzM0lJSaG0tBQTExMsLS25ePFitR1ti4uL5Sbk5eXm5hIZGSn/bmNjQ1xcHOfPn6ewsLDKfWJjY9myZUuV5ejp6T3w4rq4uJicnJwat2lOJEkiKyuLtLQ0IiIi6jSRaaR14o0bN/i///s/AGbMmCHfiamunlQdDFX9KFRjfOno6FT4fn+veZWW1mRaNBN/eOLcPTx1z52Liwt37twhIyOjVndkBw8erHKWZmNjY6ysrMjJycHc3BwnJyf09PS4d+8egYGBtGrVqsrjXb16lfbt21daHhgYiLu7e4Vl+vr6XL9+nby8PLS0tCrd2V29epWnn366ynIuX778wE7UycnJWFlZERMTU+VQU82Rnp4ew4YNq9S8Hsqa2D+sBk9ioaGhvPrqq+Tm5vLUU0/x3HPPyVdzJSUlwP+GcDEwMACQh18pP5xM+fWCIDReCoUCBweHWu/3+eefM2/ePPn3oqIiwsPDSUpKori4mPHjx6NUKitc1X/++eeMHj26yuNdunSJWbNmVVp+8OBBoqKiKi3X09OjXbt2lJaW0rNnzwrDMFV3LCgbzf5BfZ5UFwC7d+9mwoQJDdo5uLlp0CSWlJTErFmzyMjIoF+/fqxevRqFQiHf/mdlZVX4bmtrC5T1OA8LCyMzMxNbW1t5fK42bdo0ZPiCIGiAJEncvXuX8PBwuUrw3XffrfVzr+qUlpZWSJblLVu2jNGjRxMUFES3bt3qPNl06NChRd2N1YcGS2KSJLF48WKSkpJwc3Nj/fr18pWN6lbez8+PF198Ub61VD1YdXNzw8fHBz8/P5RKpTwVgGqUakEQmqe8vDxCQkLIyMjA1NQUJycnlixZwosvvljl9gEBAXVaflpaGkqlkuDg4HqZI2vEiBGiJeQjarAkdv78+QpN4pcsWSL/vGLFCjp06MCxY8eIj48nODgYPT09eXK3iRMnsnXrVlatWsX+/fvx9/fH0dGR3r17N1T4giA0IEmSaN26tXxB6+TkRNu2bVEoFDXeOc2ePbvOY2nTpg2ZmZlER0djaWkpj7BfF+zt7dmyZUul6VoE9TVYP7HyI3AEBgby559/yl+lpaVs2rSJ3r17c+vWLdq0acO3334rP4R1dHRk3bp1tG3bllu3buHl5cV3330nNwARBKH5yM3NZdeuXdjb22NsbEyvXr2ws7PT6HMjR0dH9PX1uX37tvzsvi4YGhoSHR1dZ8driRrsTuy9997jvffeq3a9tbU127Ztq3b94MGDGTx4cD1EJghCYxEXF8euXbvIyckhKSmJQYMGNYpGDzo6Ojg7O3Pjxg15JKG6oqenR2FhYZXzewkPJgYAFgShTsydO7fCrMsq5ubmbNy48YH7X716laNHj2JiYsKsWbNYtGhRo0hgKubm5lhbWxMTE1NtM/6H8eKLL1JQUCCS2EMSSUwQhDqRnp5e5bOqDRs21LhfSUmJPGGlo6Mj3t7eGBkZ1VeYj8TR0ZHU1FR59KC6EB8fT1hYGCNHjqyzY7YkIokJgqAxRUVF7Nmzh5CQEAYMGMDQoUPrbFSP+qCvr0+HDh3kqV3qopGHubk58fHxdRBdy9R43y2CIDRr+fn5/Prrr4SEhDB69GiGDx/eqBOYSrt27cjPz6+z6aDun0VZqB1xJyYIQoPLzc1l27ZtJCQkEBcXx5dffllpm7ru81VXtLW1CQgIwMDAgPT09EeesdrKykokskcgkpggCA2qoKCAX3/9lZSUFGJiYpg2bVqV29VHn6+6EhoaSv/+/YmKinrkJKalpcWZM2cYOnRoHUXXsogkJghCvfL39+eFF14AysZRbN++Pa1atSImJgYfH59qk1hjVlpaSvv27QkPDyczM1OeWeNhNKYWmE2RSGKCINQr1QgbkiQRFBREcnIyzs7ODB48mHPnzmk6vIfWtm1boqKiiImJeaQkBjBo0KA6iqrlafxPUQVBaBbCw8NJTk7GwcGhWQzera2tjb29PampqY80N5gkSYSGhtZhZC2LSGKCINS7xMRE4uLisLe3r3JOr6bK3t4ehULxSE3ki4uLSU5OrsOoWhaRxARBqFcWFhaEhIRgZmbW7Aa61dXVxcbGhsTERHmew9oqKiqqs2llWiKRxARBqDeFhYUMGjQIPT09XF1dm2UjBnt7e0pLS0lMTHyo/XV1daudJVp4MJHEBEGoF6qGHAYGBri5uTXbuw0TExNMTU2Jj49HkqRa73/9+nXCwsLqIbKWQSQxQRDqRXR0NBkZGVy+fBkTExNNh1Ov7OzsyMvLk2edr424uDjs7OzqIaqWQSQxQRDqXFZWFlFRUVhbWxMREaHpcOqdlZUV2traJCQk1HrftLQ0OnToUA9RtQwiiQmCUKdKSkq4ffs2enp6ODk5aTqcBqGtrY2trS0pKSm1Hv/R2dm5WXQ50BSRxARBqFPh4eHk5eXh4uLSbJ+DVaVNmzaUlpbWquNzSUkJhw8frseomj+RxARBqDMpKSkkJCTQvn17zMzMNB1OgzIxMaFVq1a1SmJhYWEt5m61vogkJghCndDR0SE4OBhjY2M6deqk6XA0wsbGBiMjI9LS0tTeZ8iQIfUYUfMnkpggCI9MkiTs7OwoLS3FxcWlScwLVh9UU6qoO43M4cOHW2zCryst850mCEKdunz5MsbGxjg4ONCqVStNh6MxBgYG5ObmEhAQ8MA+Y/n5+WRkZDTLDuANSSQxQRAeyd27dzl16hT37t0T/Z2AzMxMkpOTuXv3bo3bXbx4kX79+jVQVM2XSGKCIDy04uJi9u3bh76+PvHx8eKugrI+cgqFgps3b9a4naGhISNGjGigqJovkcQEQXhoZ86cISkpifHjx1NSUqLpcBqFkpISHB0da6xSTElJ4d9//0VbW7uBo2t+RBITBOGhJCUlcfHiRby8vHB2dtZ0OI2Ku7s7mZmZxMTEVLn+0qVLPPXUUw0cVfOk9szOkiQRFxdHWloa2traWFlZYWtrW5+xCYLQSGVnZ3Pp0iWsrKzEh3EVXFxc0NHRISAgoMohpczNzfHw8NBAZM1PjUmspKSE06dP88cff3DlyhWys7MrrG/dujV9+/Zl3LhxDB48WNwaC0ILIEkS+/fvp7CwkGeffRY9PT1Nh9To6Ovro1QqCQwMZOTIkRW6HBw5cgRTU1Px/LCOVJvETpw4weeff05cXBxaWlq0a9cOT09PjI2NUSgU3Lt3j8jISE6ePMmJEyfo0KEDixYtYtSoUQ0ZvyAIDWju3LloaWlha2vLnTt3WLhwobxO3b5RLYWrqyu3bt0iJiYGGxsblixZwujRozl79iwvvfSSpsNrNqpNYosXL2bIkCEsXryYgQMHYmpqWuV22dnZ+Pj4cOrUKd59912RxAShGcvPz8fBwQFLS0u6du0qd+4FmD17tgYja3y6dOmCtrY2t2/fJjU1lejoaDZs2IClpaWmQ2tWqk1i//zzDxYWFg88gLGxMcOHD2f48OG8++67dRqcIAiNx71792jXrh36+vo4OzuTnp6u6ZAaNX19fTp37kxwcDBQdgEAEB8fz8cff4ynpydLly7VZIjNQrVJrKoEphpxOTAwECi7XR47diw6OmWHqc3Al4IgNB1FRUXs3LkTbW1t3Nzc5P95oTJ/f39eeOEFAMzMzLCzs2PTpk3yemNjY1q3bi1vIzyaWr0T33nnHQ4dOoSlpSUKhYJff/2Vc+fOsXr16vqKTxAEDZMkiQMHDhAfH09sbKwYsPYBSktLmTdvHgCFhYVcvHiRDh06EBAQgK6uLosXL8bS0lKMmVhHqu0nFhQUVGnZ33//zYYNG/j33385d+4cx48f56+//qrP+ARB0LB//vmHwMBAhg0bVqmFslAzPT09TE1NSU9Px8PDA2NjYwYOHKjpsJqVapOYt7c3c+fOxd/fX17WrVs33nrrLSZNmsSUKVOYNGkSPXr0aIg4BUHQgCtXrvDXX3/RvXt3BgwYoOlwmiRLS0ssLS156qmnRLP6elBtEvvjjz/Q09Nj8uTJzJgxg0uXLrF69WqmT5+Oubm5XKf71Vdf1arAy5cv4+zszAcffCAv+/rrr3F2dq7w9cYbb8jrz549y4gRI/Dw8GDq1KncuXPnIV6qIAi1cePGDQ4fPkyXLl0YN26c+AB+SFZWVqSnp5OamqrpUJqlap+Jubi48O233xIeHs7GjRuZNWsW7u7uzJs3j9dff/2hCouLi2PZsmWVloeEhAAwbNgweZmqN3tMTAwLFy5ES0sLFxcX/Pz8mD9/PocOHRIPlwWhnly9epVDhw7RqVMnnn/+eTGQwSMwMjLC3t6elJQUTYfSLD1w7ERHR0e++OILjh07RpcuXXjttdfw9vbm1KlTtSpo9+7deHt7ExcXV2ldSEgIVlZWrF+/Xv6aOXMmAHv37qWwsJClS5eye/duRowYQUREBL6+vrUqXxCEB5MkiXPnznHo0CG6dOnClClT0NXV1XRYTV5JSQkZGRktdrLQ+lTtGQ0NDWXu3LmMGTOGefPmkZ+fz8cff8ypU6fw9PTkrbfeYsyYMRw6dEitgjZs2ICuri6TJk2qsDw3N5fY2FgMDAxYvnw577zzToUEpXom17NnTwC8vLyAsqoOQRDqTlFREQcOHODMmTN4eHgwadIkkcDqiKoq1sTERMORND/VJrHFixeTlpaGq6sraWlpLFmyBIA2bdrw/vvv8+effzJo0CA+/PBDtQqaPXs2R48epXv37hWWh4aGIkkSsbGx7Ny5k3379jFjxgwuXrwIIE8sp+qDpvqelJRUu1cqCEK1EhMT2bRpE/7+/gwePJhnnnlGVCHWoT59+qCrq4uxsbGmQ2l2qn2oFBsby9atW3F1dSUwMJAZM2ZUWG9pacnSpUuZO3euWgXdfwemIkkSAwcOxN3dnZkzZ3Lo0CFWrFjBF198wb59+ygoKCgL9P8//1J9V/V+r0pV3QOas/z8/Bb3mutKSz93kiQRGhrKjRs30NPT44knnsDGxobbt29XuX12djbJyclA2YSYqp+r+v1Byx92XWM4Xm338fPzo23btrRq1YrAwEAKCwtb9PuuLlWbxIYMGcJzzz0n/z5mzJgqt3vUUTp69OjBTz/9JP8+depU1qxZw+3btyksLERfXx8o60AIZW8QAAMDg2qP2bVr10eKqakJCgpqca+5rrTkcxcfH8+xY8eIjY3F2dmZ8ePHY2RkVOM+xsbGWFtbA5CcnCz/DGUXmOV/f9Dyh13XGI5X233at2+PjY0NmZmZmJqakp2d3WLfd1W5cuXKQ+9bbRL7/PPPGTZsGLGxsbRv377e5gzKyMggLi6Otm3bYmFhgUKhQEdHh9LSUkpLS7GysiIsLIzMzExsbW3JzMwEyqo1BUEoG1m+unEMq0rS2tra2NjYYG5uTqtWrXj66afp3r27aEJfj0xMTDA3N5fvfNu2bavpkJqNapNYaGgoo0ePrtXBwsPDcXR0rNU+v/32G9988w0vvfQS77zzDoGBgWRkZKBUKjEwMMDNzQ0fHx/8/PxQKpVcvXoVQEwoJwj/X3p6ujzM0f1mz54trystLSUuLo6oqChKS0tJTk5m2bJlcm2HUH+ioqLo2LEjeXl5hIWFiSRWh6pt2PHMM88wceJEfv75Z8LDw6vcRpIkgoKC2Lp1K9OmTWPcuHG1DmDChAkYGxvzyy+/MGXKFF5++WUA+R9v4sSJ6OrqsmrVKp5//nmOHz+Oo6MjvXv3rnVZgtASSZJEamoqfn5+RERE0Lp1a3r16sXdu3dFAmsgLi4uQNlMAAkJCeTl5Wk4ouaj2juxHTt2sHLlSlatWsXnn3+OgYEB7dq1w9jYmNLSUtLS0khJSSE/Px9JkujZsye//vprrQOws7Pjxx9/ZNWqVdy6dQsLCwvefPNN+S7Q0dGRdevWsXLlSm7duoWXlxeffPKJaDklCGowMTHh5s2bpKenY2RkhIeHh1pTLAl1KyoqChsbG7Kzs7G1tSUxMVHTITUb1SaxHj16sHPnTq5fv87hw4fx8fEhPDxcbmChra2NUqmkd+/eTJgwQe2HlN7e3nh7e1dY5unpyc6dO6vdZ/DgwQwePFit4wuCUFZ1GB0dzZgxY8jKysLR0RE7OzvR2VZDVHdely9fpkOHDpw4cYItW7bI683Nzdm4caOmwmvSHjhuU48ePeRBfiVJkh8gm5mZiX8IQWiEMjMzCQkJITc3l5iYGCZPnoyenp6mw2rRPD09gbKLi/bt23P37l2efvpp+TN0w4YNmgyvSatVFlIoFFhYWGBhYSESmCA0MpIkcefOHa5fv05JSQnu7u6cP39eJLBG4Nq1a/LPlpaWlJaWkpWVpcGImg8xgq4gNAMFBQUEBQXJXVG6dOkiBshuRGxsbOSfzczMAEhNTZV/Fh6eeJcLQhPXqlUr/Pz8KC0txcXFBVtbW02HJNyn/BiUOjo6GBkZVdu3T6gdkcQEoYmoqlOzubk57du3R19fH1dX1weOuFGev78/L7zwQqXlopFB3YuLi6vQh9bY2Ji7d+9SWFgoqnsfkVpJbOjQoYwaNYpRo0bh7u5e3zEJglCF8p2aJUkiPDycuLg4YmNjeeGFF2pdfVhaWlplJ+m5c+dWmdwAAgICah+4gJubW4XfW7VqBZT9TcWd86NR612fkJDATz/9xObNm2nXrh2jR49m1KhRcgc+QRAaTklJCbdu3SItLY127drx22+/MXXq1Do7fnXJDcpGABFqLzQ0FEtLS/l3AwMDdHV1RRKrA2olsfPnz3PmzBnOnDnDxYsX+f7779m0aROdOnVizJgxjBw5ki5dutR3rILQ4hUVFREQEEBWVhZOTk7Y2dkhSZKmwxIeoKSkpMLvCoUCc3Nz0tLSxN/vEanVTt7CwoJnn32W9evX4+Pjw6pVq7CysiIyMpLvvvuOcePGMXXqVGJiYuo7XkFosXR0dPD39+fevXu4urpiZ2en6ZAENd1fnQhlzx6LiorIycnRQETNh9qdvZKSkvjtt9+YP38+7733njxfTvfu3bG0tOTKlSu8++679RaoILRkqampdOrUifz8fDw8PKqdBkRonKqaid7c3BxAtFJ8RGpVJz733HMEBgYiSRKSJOHk5MS4ceMYO3YsdnZ2FBQU8Nxzz3Hz5s36jlcQWpyEhAR+/fVXtLS06N69u5jivgmqauoofX190dS+DqiVxG7evIm9vT1jxoxh7NixKJXKCuv19fXx8PCQrywEQagbkZGR7NixA0NDQyIjIxk2bJimQxLqkLm5OfHx8WIut0egVhL77bff6NmzZ4VlkiRVOPGffPJJ3UYmCE1cdZNVqtsP6/bt2+zZswdzc3OmTZvGxYsX6yNMoQEkJiZWuviHsvYGcXFxterfJ1SkVhLr1q0bq1atQldXlzfffBOA8ePH069fP956660KvdEFQShT3WSVNQ32qkp85ubmtGnThry8PG7dusU///wj+mg1Yd26datyeevWrVEoFBgbGzdwRM2HWknsiy++YMuWLfTq1QsoG6ctLi6Obdu2oa2tzdKlS+s1SEFoKdLT0xk5ciTR0dFYWFjg6uoqz50n+mg1XYGBgQwYMKDScm1tbVq3bi0myXwEarVOPHLkCPb29qxfvx4oewb2119/YWdnx9GjR+s1QEFoKUpKSrCzsyM6Opq2bdvi7u4uJn9tJmr6O5qbm2NgYMC9e/caMKLmQ60klpWVhZ2dHaampvIyU1NT2rRpI1rWCEIdKCwsZOfOnZiZmdGxY0ecnJzEw/5mxMnJqdp1qpm2IyIiGiqcZkWtJObq6oqfnx/ffPMNly5d4sKFC6xatYqrV6+qPaOzIAhVS09P56effiI8PJz4+Hg6deokElgzExgYWO26Vq1aUVxcTHh4eANG1Hyo9Uxs6dKlzJo1i40bN8qtqiRJwtDQkLfeeqteAxSE5iwiIoI9e/YgSRJTp04VAwY0U/b29tWuUygUZGdnExERUanVt/BgaiUxT09PTp48ybZt2+QT7ejoyJQpU8TglYLwECRJ4tKlS5w8eRIrKysmTZokVysJzU9RUVGN63NycsjJySEpKanKjtFC9dSeu8HKyoo33nijPmMRhBZBoVBw8OBBrl+/jouLCxMmTEBfX1/TYQn16O7duzXO+qEaPzEsLEwksVpSK4kVFRWxf/9+AgMDKSwsrDDqskKh4NNPP623AAWhOcnLy6NTp05cv36dJ554gieeeEJUH7UAnp6eNa4vLi7G1taWiIgIBg4c2EBRNQ9qJbEPPviA/fv3VzllgEhigqCe5ORkgoOD0dPTY9KkSTg7O2s6JKGBXLt2jUGDBtW4jYODA5cvX6aoqEgMIFELaiWxM2fOoKOjw8yZM3F0dKz1DLKC0JKVlpbKLQ9NTEy4ffu2SGAtjKGh4QO3cXR05OLFi0RFRYn5GWtBrWzUqlUrXFxcxDMxQagl1bBR2dnZtGvXjs6dO3Pp0iVNhyU0sI4dOz5wmw4dOqCtrU14eLhIYrWgVj+xJUuWyOO3lZaW1ndMgtAsmJqacuXKFfLz83Fzc8PR0REtLbWn8BOakdu3b9e43t/fnxdffJHMzEz++usvXnjhBflr7ty5DRRl06TWndiGDRsoLS1lzpw5AOjq6soPoxUKBdevX6+3AAWhqSkuLubEiRO0a9cOIyMjXF1dMTAw0HRYggY96E6stLSUefPmERMTQ0REBDNnzpRbrNY0YLSgZhILDQ2t8HthYWG9BCMITV1qaip79uwhMTGRlJQUHn/8cXH3Jag9LmL52Z5FU3v1qJXEHnQrLAgtVfk5w0xNTWnbti2SJBEfH4+Pjw8TJ07UcIRCY5CWlqbWdq1atUJXV1cksVqoVTPDkJAQAgICMDMzk6dJ19PTq6/YBKHRS09PZ86cOYSFhZGQkICpqSldu3bFwMCAc+fOaTo8oZF4UD8xFYVCgbm5Oenp6WIIKjWplcSysrL4z3/+g4+PDwDDhg0jNDSU33//nc2bN9OpU6f6jFEQGi09PT2uXbtGdnY27du3p1OnTqL6UKhEnX5iKubm5ty9e5ecnBwxWaYa1Epin3zyCT4+PowePZojR44AZVcM8fHxfPLJJ/zwww/1GqQg1JXy1X8A2dnZ8geFubm5PMD1g0iSxPXr13FwcCA/Px93d3csLS3rJWah6atNMir/XEwksQdTu7Nz9+7dWb16tZzEZs+ezalTp7hy5Uq9BigIdSk9PZ158+bJvycnJ2NtbQ2o3wosLy+Pw4cPc+vWLfLy8ujXr59ofSjUqG3btmpvq6+vj5GREWlpabRv374eo2oe1Kr3kCSp0vTZpaWlZGVlieFRhBblzp07bNiwgdu3bzN8+HCioqJEAhMe6P4W3g9ibm5OZmYmJSUl9RRR86FWEhs+fDghISFMmTIFgFu3bjFx4kSio6MZMmRIvQYoCI1BUVERJ0+eZOvWrejp6TFr1iwGDBig6bCEJsLBwaFW21tYWCBJEpmZmfUUUfOhVhJ77733ePLJJ7l69SoA8fHxBAUF0b9/f955551aFXj58mWcnZ354IMP5GV37txh6tSpeHh4MGLECP76668K+5w9e5YRI0bg4eHB1KlTuXPnTq3KFIRHERkZycaNG7l48SJeXl7Mnj0bOzs7TYclNCGpqam12r5169YoFIoKz2+Fqqn1TMzY2Jhvv/2WmJgYwsLCKC4uxsHBAUdHx1oVFhcXx7JlyyosKy4uZsGCBYSHh9OtWzdCQkJ47bXXOHbsGO3btycmJoaFCxeipaWFi4sLfn5+zJ8/n0OHDomBiIV6lZ+fz+nTp7ly5QrFxcXExsZy69Yttm3bJm8TEBCgwQiFpqK2d1Ta2tq0bt1aJDE1qJUF4uPjgbITW370bdVyda5Kd+/ezZdffklGRkaF5b6+voSHhzNq1Ci+/vprtm/fzooVK9i7dy+LFi1i7969FBYWsnz5cqZMmcLChQs5ceIEvr6+9OvXT93XKQi1EhwczJEjR8jOzqZfv35s3ry5yjHsZs+eXetj+/v788ILL1S5TiTF5kndfmLlmZubc+fOHbS1teshouZDrSQ2dOjQajvdKRQKbt269cBjbNiwAV1dXSZNmsTOnTvl5apxF1V/5F69egFw8+ZNoOwfHqBnz54AeHl5ceLECW7cuCGSmFDncnJyOHbsGIGBgdjY2PDCCy9gb2/PTz/9VGdlqMbJq8rDJEWh8atNPzEVVRITzexrplYS69Spk5zEJEmisLCQ5ORkdHV16d27t1oFzZ49m9GjR3P69OkKSezu3btAWR1w+e9JSUlqra9KUFCQWjE1F/n5+S3uNT+s7OxskpOT5d+Li4tJTk5GkiT09fX59ttvKS4uxt3dHWdnZ7KyssjKyqq03/37V6W6dQ+zT2M83v3bNbb46vN4td1HS0uL5ORkeZ06506SJLS1tdHX1xf/3zVQK4kdP3680rLExERmzJhB37591Spo0qRJVS4vKCgAkJvqq26d8/PzK6xXPf9SfVetr0rXrl3Viqm5CAoKanGv+WEZGxvL/cKgrJ+YqakpISEhODo6Ymtry7hx4ypsU9V+Kjo6OlUur2ndw+zTGI9Xvo9dY4yvPo9X230KCgqwtraW16l77lJSUsjPz8fFxaVZD0H1KP2NH3p8nDZt2uDh4cHmzZsfunBAnm5A1R+iuLgYQO57o1qvmsfs/vWC8LBUTZj9/PzIyMggMTGRl19+udoPJ0F4WBEREQ+1n4WFBbq6unKNlFCZWndi9w8rJUkSd+/e5eTJk3KSeVhWVlZA2fiM5b/b2trK68PCwsjMzMTW1lZu5SNGeBYeRXFxMSEhISQnJ2NiYoKLiwsBAQHN+mpX0BwnJ6eH2k81BFV4eLj8mShUpFYSW716daV/bkmSAJg+ffojBeDu7g6An58fL774onxb2a1bNwDc3Nzw8fHBz88PpVIp91Xz8PB4pHKFlis7O1seMsra2pquXbuK5CXUq4SEhFoNPaWir69PQUEBERER9O/fvx4ia/rUSmILFiyo9E+ur69P165dGThw4CMF0K9fPzp06MCxY8eIj48nODgYPT09vL29AZg4cSJbt25l1apV7N+/H39/fxwdHdVuUCII5bVu3Zpr166ho6ND9+7dKSoqEglMqHfZ2dmPtG9UVBTFxcWib2wV1Dojr7/+er0FoKenx6ZNm/jggw+4du0a9vb2LFu2TB740tHRkXXr1rFy5Upu3bqFl5cXn3zyieg7IdSKJEn8/fff2NvbY2JigqurK3p6etW2MBOEuvQw/cRUcnJyKC4uJjo6utbDV7UEaiWxDz/8UK2DKRQKli9fXuM23t7e8l2WSufOnSuMgnC/wYMHM3jwYLViEASoPOVK27Zt5X4306dPF3N+CQ3qYfqJqeTk5KClpUV4eLhIYlVQK4nt3LmzQj8xoNLvqmUPSmKC0BBUU66UlJRw69Yt0tLS6NChA7/++isvvfSSpsMTWhgLC4uH3leSJDp06PDQLRybO7WS2KpVq1ixYgVPPPEETzzxBEVFRRw9epRLly7xxhtvPNIfSBDqS0lJCQEBAWRkZODk5PTA4dHEcFBCfTExMXmk/R0cHDhz5kyFSVyFMmolse3bt9OpUydWr14tL3vmmWd4+umnuXDhQp0OySMIdUGhUBAYGEhGRgbOzs5qdckQw0EJ9SUqKoqOHTs+9P6Ojo6cOXOGiIgIueW2UEatBwPBwcHcu3evwgRtCoWC0tJSucm7IDQWJSUltGvXjvT0dJRKpehTKGici4vLI+3fpk0bDA0NRZViFdS6E3N3d+fatWs8++yzDBo0CIVCwYULF4iIiBBN3YVGRZIk/vjjD0xMTHBycnqovjmCUNeioqKwsbF56P21tLRwcHAgPDwcSZJEt5By1EpiK1asYP78+QQFBVUYiNLJyYlPPvmk3oIThNr6888/CQwMJCkpiSeeeELT4QgCAHl5eY98DEdHR/m9LWoX/ketJObo6MjRo0c5d+4ckZGR6Ojo4ODgQL9+/cQVgdBo+Pn5cf78eby8vGrssiEIDe1R+ompGhzp6OigVCr56KOP5Jmizc3N2bhxY12F2SSp3f1bW1ubnj17YmhoiIGBAUqlUiQwodEIDQ3l6NGjODk5MXr0aJHEhEblUfqJlW9wdOXKFUxNTXn++eeBsnkaWzq1klhhYSEfffQR+/fvp6SkhGHDhuHl5cWxY8fYsGEDlpaW9R2nIFQrOTmZPXv2YGtry7PPPis6MguNzqM8DyvPwsKC6OhoioqK5OmrWjq1/ts///xz9u7di4eHh9y5OTU1lRs3brBixYp6DVAQapKfn8/OnTvR1dVl8uTJ6OnpaTokQaikrhKOqk9u+dFoWjq1ktiRI0dQKpXs2LFDXrZkyRKcnJy4cOFCvQUnCDWRJIl9+/aRkZHBc889h6mpqaZDEoQqxcXF1clxTE1N0dHRIS0trU6O1xyolcTy8/MxNDSsvLOWVoW+Y4LQkM6ePUtoaCgjR458pI6kglDf3Nzc6uQ4CoUCCwsL0tLSKgz515Kp9UysX79+nD17liVLlgBw584d5s2bR0hICMOGDavXAAWhKsHBwZw7d4709HS+/PLLSuvFMFFCYxIaGlpnbQcsLCy4e/fuI03v0pyoPYp9cnIyhw8fBspmGVWNqPzuu+/Wa4CCcL+MjAz2799PXl4e48ePr7IhhxgmSmhM6rLGSvVcTNXMvqVTK4lZWFiwe/dufHx8CAsLo7i4GEdHRwYOHCia2QsNqqSkhD179iBJErGxsaIlotAk1FV1IpQ1EjExMRHPxf4/tZLYmDFj6NGjB6tWraJv3771HZMgyO6fF8zW1hZLS0tiYmK4du2aBiMTBPXduHHjofuJVcXS0pLIyEgxOTBqJrGcnByio6PrOxZBqEQ1LxhASkoKgYGB2Nvb88QTT/DPP/9oODpBUE9dDxNlYWFBZGSkmJYFNZPYpEmT2LBhA++88w7du3fH2Ni4QjXO6NGj6y1AQYCysedu376NiYmJmN1WaPGMjY3R09N75HnKmgO1kti6desA+OOPP9i/f3+l9SKJCfWptLRUHni6a9eu4jmY0OQkJiaiVCrr7HgKhQJLS0vy8/MpLi5GR0ftEQSbHbVe+YQJE0QDDkFjIiIiuHfvHm5ublX2VxSExq4+JrK0srIiISGBiIiIOk2QTY1aSWzlypX1HYcgVMnExIS4uDjs7e2xsrLSdDiC8FACAwMZMGBAnR7TzMyMkpISgoODW3QSq7ZeZtiwYSxfvrzCstu3b9fZ8CmC8CBpaWnY2dmJ52BCk1cfrQi1tLTIzs4mODi4RY/eUW0Si4uLq9SZbsKECeKuTGgQxcXF7N69GwBXV1fxHExo0pycnOrluPfu3SMnJ4fY2Nh6OX5TUOtPhpac8YWGc/z4cRITE4mLi8PAwEDT4QjCIwkMDKyX42ZnZ6OlpUVwcHC9HL8pEJe3QqNz8+ZNrly5Qv/+/cX4cEKzYG9vXy/HLS0tpWPHji06ibXcdplCo6IamUNPTw8HBwfy8/P58ccfxUC+QrNQVFRUb8d2dnbm+PHjpKamtsgJimtMYmfPnqV79+7y7wqFospl169fr7cAhZYhPT2d2bNnc+3aNQoLC+nfvz/6+vpiIF+hWbh79y4uLi71cmwXFxeOHz/O7du367wFZFNQY3ViSUkJBQUF8pckSZWW5efnN1SsQjMXGhpKTk4OLi4u6OvrazocQagznp6e9Xbs1q1b07ZtW3lAgJam2jux27dvN2QcQgtnbm5OUlISHTp0kKeaEITm4tq1a3U6APD9XF1d+fPPP8nIyMDMzKzeymmMRMMOQeOioqJo06YNFhYWdOrUSdPhCEKdq++RZlRTvdy6datey2mMRBITNCozM5Pdu3dTWFhI165dxfBmQrPUsWPHej2+ubk5dnZ29daUvzETSUzQmKKiInbt2kVRURExMTEtehBToXlriMczrq6uxMfHV5h/ryUQSUzQCEmS2L9/P/Hx8Xh7e1NYWKjpkASh3tT3nRi03CpFkcQEjTh58iS3bt3iqaeewtnZWdPhCEK9unfvXr2XYWZmhr29fYurUmxUSezixYs4OztX+FL1e7hz5w5Tp07Fw8ODESNG8Ndff2k2WOGhXbp0CR8fH3r37k3fvn01HY4g1Lu0tLQGKcfNzY2EhIQGK68xaFRJTDV0Ss+ePRk2bBjDhg1j0KBBFBcXs2DBAvz8/HBxcSExMZHXXnuNmJgYDUcs1FZQUBDHjx/H2dmZESNGiIYcQotQn/3EynN1dQXqb6zGxqhRJbGQkBAAPv74Y9avX8/69ev57LPP8PX1JTw8nFGjRrF7927eeustioqK2Lt3r4YjFmojJCSEPXv20K5dOyZOnChGphdajGvXrjVIOa1bt6Zdu3YiiWmKKont2bOHN998k3379gHIw1qprmZ69eoFlA0UKzQNYWFh7Nq1C1tbW6ZOnYqurq6mQxKEBmNsbNxgZbm7u5OUlMTdu3cbrExNajRtmktLSwkLCwNg8+bNABw5coS4uDi5frd169YVviclJWkgUqG2IiIi+P3337G2tmbatGliahWhxWnbtm2DleXu7s7Jkye5fv06Tz31VIOVqymNJollZ2czYMAA9PT0WLZsGQkJCUyfPp0ffviBsWPHAshX76pZUqsbt7GljSGWn5/faF9zXFwcPj4+GBsb06dPHyIjI6vcLjs7m+Tk5ErLi4uLq1z+sOvuX17+97o4Xn3t0xiPV9O5bAzx1efxarvP9evX0dHRkdepe+4etM7Pz48xY8ZUWt61a1euXbuGvb19s6+2bzRJzNTUlO+++07+3dbWlv79+3P27Fm5PrmkpAQo+6MC1V7Rd+3atZ6jbVyCgoIa5Wv29fXlwoUL2NnZMWXKFIyMjKrd1tjYGGtr60rLdXR0qlz+sOvuX56cnCz/XhfHq699GuPxyp+7xhhffR6vtvt4eHhgbW0tr1P33D1onba2Nm+99Val5du2bcPExAQ9Pb16m1W6Ll25cuWh9200KTo/P5/Q0FCioqLkZXp6egDylUZWVlaF77a2tg0cpaAOSZL4888/OXr0KE5OTkyfPr3GBCYIzV1qamqDlpednY2RkVGLmCar0SSxgIAAxo4dy5tvvklJSQm5ublcvXoVXV1dube7n58f8L+s3a1bN43FK1StoKCA3bt38++//+Lp6ckLL7wgX4wIQkuVmZnZ4GV6eHgQHBxMXl5eg5fdkBpNdaKnpydubm4EBAQwYcIE8vLySE5OZtKkSYwYMYJvv/2WY8eOER8fT3BwMHp6enh7e2s6bKGc5ORkfv/9d9LS0hg+fDj9+/ev0A9MNXtzVcQMzkJz1lD9xMrr0aMHly5dIiAggMcee6zBy28ojSaJaWtrs2HDBj755BN8fHxQKBRMnz6dt956Cz09PTZt2sQHH3wgP6xctmwZ7du313TYwv938+ZNDh06hJ6eHtOmTaNz586VtklPT2fevHlV7i9mcBaas/qeT6wqbdq0wdbWFn9/f5HEGoqtrS3ffvttles6d+7Mtm3bGjiilq2mOydzc3M2btxIXl4eR48eJSAggPbt2+Pn58eyZcuq3EfcbQktlapbUEPr0aMHJ06cqNSQpDlpVElMaFxqunPasGED4eHhHDhwgJycHIYMGcLAgQM5ceKEuNsShPtYWlpqpFwPDw9Onz6Nn58fo0aN0kgM9a3RNOwQmo6ioiLs7OzYvn07+vr6zJo1i0GDBjX7/iiC8LAiIiI0Um6rVq1wc3Pj+vXrFBQUaCSG+iY+dQS1SZJEUlISvr6+tG7dmgEDBjB79mzs7Ow0HZogNGqa7KvVu3dvCgsLuXHjhsZiqE+iOlFQS15eHqGhoaSnp2NiYsLBgwcJCgrihx9+qLCdeO4lCJUlJCQ06NBT5dnb22NnZ8fly5fp1atXs5s5QiQxoUalpaXExMQQHR2NQqGgS5cu2NnZsXHjRlauXFlpe/HcSxAqy87O1mj5vXv3Zv/+/dy5cwcHBweNxlLXRHWiUK1WrVrh5+dHZGQklpaWPPbYY9jb2ze7KzlBqG+a6CdWnpubG0ZGRly+fFmjcdQHkcSESjIzM9m1a5c8UoqHhweurq7o6+trODJBaJoaaj6x6ujo6NCzZ09CQkLIyMjQaCx1TVQnCrKSkhJ8fHz4+++/kSSJu3fviskrBaEOWFhYNGh5/v7+vPDCCxWW6ejo4OTkxCeffMIXX3zRoPHUJ5HEBAAiIyM5cuQIKSkpODs7M3LkSObMmSMSmCDUARMTkwYtr7S0tMr+mrdu3SIxMZG8vDwMDQ0bNKb6IpJYC1Hd6BuWlpYMHz6cmzdvYmZmxuTJk1EqlRqIUBCar6ioKLl6XpM6dOhAcnIyly5dYvDgwZoOp06IJNZC3D/6hiRJxMXFERISwq1btxg0aBADBw6UJx4VBKHuuLi4aDoEoGzevqysLC5dukS/fv2axXNuUVfUAmVmZnLlyhXCw8PJy8tj/vz5DBkyRCQwQagn5edJ1LSUlBTy8/ObTUtFcSfWghQWFnLnzh0SExPR19fH1dWV999/n+jo6Cq3Fx2XBaFuNKY5vfLz83FycuLixYv06dOnyc/3J5JYC1BaWoq5uTm+vr6UlJTQvn17OnbsiLa2drUPgEF0XBaEuqLpfmL3GzRoED/99BN+fn70799f0+E8ElGd2MzFxcXx008/0bZtW4yNjfHy8sLBwQFtbW1NhyYILYam+4ndr127djg4OHDhwgUKCws1Hc4jEUmsmcrLy+Pw4cP8+OOPZGVlERsbS7du3WjVqpWmQxOEFsfGxkbTIVQyePBgcnJyuHDhgqZDeSQiiTUzpaWl+Pn5sW7dOq5evUqfPn147bXXyMrKEsNFCYKGNMZGU+3bt8fV1ZULFy5ofGzHRyGeiTUjCxcupFWrVhgYGJCTk0NiYiKBgYH8/PPPopGGIGhQXFwcjo6Omg6jkmHDhnH79m3OnDnD+PHjNR3OQxFJrBnIzs5m165dWFpaoq+vj6OjI1ZWVhXuvEQjDUHQHDc3N02HUCULCwt69+6Nj48PXl5e2NvbazqkWhPViU1YdnY2x44d4/jx44SFhXH37l0ee+wxrK2tRdWhIDQioaGhmg6hWoMHD8bY2JijR49SWlqq6XBqTSSxJig3N5dTp07xzTff4OvrS6dOnXjttddISUkRrQ4FoREqKSnRdAjV0tfX56mnniI+Ph4/Pz9Nh1NrojqxCcnNzeXy5cv4+PhQUFCAh4cHgwcPJikpCVNTU02HJwhCNRprdaKKu7s7/v7+nD59GqVSiZmZmaZDUptIYk1AWloaPj4+XLt2jeLiYlxcXBgyZIjcbDcpKUnDEQqCUJMbN24waNAgTYcBVD1NC5RN1dKlSxcOHjzItGnTmswjCZHEGqnS0lJCQ0O5cuUKYWFhKBQKunXrRr9+/RplnxNBEKrXpk0bTYcgq2mUnh07dqClpYWPjw/9+vVr4MgejkhiDaC6aVDMzc3ZuHGj/LskSSQlJREQEMA///yDtrY2RUVFZGRkkJ6eTkBAAO+//z5du3atcJzs7GyMjY1FM3pBEB5JRkYGQ4cO5fTp03Ts2BE7OztNh/RAIok1gPunQVHZsGEDkiSRmJhIcHAwgYGBpKSkoFAoyM3NpW/fvlhaWlZqKn//sZKTk7G2thbN6AWhkUpMTGwy8/SNHz+ejRs3snv3bl599VWMjIw0HVKNROtEDSgpKSElJYW2bdvy1VdfsWnTJv7++29atWrFmDFjWLx4MTExMZX6egmC0DR169ZN0yGozdDQkOeff5579+6xe/fuRt2yEsSdWIPJy8sjLS2N1NRUMjIykCQJU1NTOnTogJOTE05OTmJcQ0FopgIDAxkwYICmw1Cbvb0948aNY//+/Rw+fJjx48c32gtqkcTqSWlpKTExMYSEhODo6ChPQGdoaIi9vT0WFhbs3LmTjz76SMORCoJQ35pi/83u3buTlpbGP//8Q6tWrRg+fLimQ6qSSGJ1ZO7cuWRkZGBsbIypqSnGxsZoa2sjSRLp6ekMGDAACwuLRl+/LAhC3XNyctJ0CA9FNdL9+fPn0dLSYsiQIY3ujkwksUdUUlJCeHg4hoaGtGvXjpKSEnR1dbG0tMTCwgJzc3Pmz59fZb8MQRBahsDAwEbTT6w2FAoFY8aMobS0lHPnzlFQUMCIESPQ0mo8zSlEEnsIpaWlREVFERAQQFBQEHl5eZiYmGBjY4O1tTVmZmZqXa1U1+kQEM3lBaEZaYoD66ooFArGjRuHnp4ely5dIiMjA29vb/T19TUdGiCSmNokSSIuLo6AgAACAwPJzs5GV1cXFxcX3N3def/99xk6dGitjllTp0PRXF4Qmo+ioiJNh/BIFAoFI0eOxMLCguPHj7Np0yaee+65RtGJWySxGqj6cAUGBhIYGEhGRgba2to4OTnh7u6OUqlslJPdCYLQuNy9excXFxdNh/FA1dUOqQZm6N27NzY2Nuzbt48ffviBxx9/nIEDB6Kjo7lUIpLYfSRJIj4+nlu3bnHr1i0yMjJQKBQ4ODgQGRlJYmIiN2/eZN++fRX2E9V/giBUx9PTU9MhqKW62qENGzbIP3fq1Im5c+dy/Phx/v77b/Ly8hg1alRDhllBk0liubm5LF++nNOnT2NoaMj06dOZO3dunZZRUFDAjz/+SEpKCpIkkZ2dzb1797h37x6BgYEEBATw3XffVbmvqP4TBKE6165da5INO6pjZGSEt7c3jz32GIaGhhqNpckksU8//ZSDBw/i6OhIZmYma9aswc7Ork6n1NbV1aVr167s3LmT5557rlJVoUhUgiA8DE1/0NeX9u3bazqEpjHsVG5uLgcOHMDW1pYDBw7w888/A7Bz5846LUdLS4uhQ4eSmZkpnnUJglBnOnbsqOkQmq0mcScWFBREYWEhHh4e6OrqolQqMTU1JSAggNLS0kbVZ0EQBOF+t2/fbtJTKNXUHej+2TgamkKSJEljpavp2LFjLFq0iIkTJ/Lpp58CMHz4cGJiYrh48SIWFhbytleuXNFUmIIgCMJD8vLyeqj9msSdWEFBAUCFZpyqschU61Qe9kQIgiAITU+TqIdT9QwvLS2VlxUXF1dYJwiCILQ8TSKJWVtbA5CVlSUvy8rKwsDAAHNzc02FJQiCIGhYk0hiLi4u6Ojo4O/vT1FREWFhYWRlZeHu7t7oRlQWBEEQGk6TSGLGxsaMGTOGxMREnn76aWbMmAHApEmTNBxZw8jNzeWtt97C09OT/v3719gS6NChQ4wbN44ePXowbtw4jh8/3oCRNj61OXcqiYmJeHp61noszOamNucuNTWVxYsX07NnTwYOHMjatWsbMNLGpzbn7uTJk4wdO1b+nz1z5kwDRtr0NYkkBrB8+XImTJhAQkICpaWlvPHGG4wbN07TYTUIVUfvtm3bolAoWLNmDQcPHqy03YULF3jrrbeIjY3F09OTqKgoFi1ahK+vrwaibhzUPXflffTRR+Tm5jZQhI2XuueupKSEV199lcOHD9OlSxckSWLdunX88ccfGoi6cVD33AUHB/PGG29w584devToQWxsLAsXLiQ8PFwDUTdRktCo5eTkSO7u7tLjjz8uFRYWSsHBwZJSqZQmT55cadslS5ZISqVSOnnypCRJkrRz505JqVRK//d//9fQYTcKtTl3KqdOnZKUSqWkVCqlIUOGNGC0jUttzp3qnC1dulSSJEkKCAiQvLy8pOXLlzdw1I1Dbc7dzz//LCmVSmnt2rWSJEnSvn37JKVSKf3yyy8NHXaT1SSa2LdktenoPWnSJHr16kXv3r0BsLS0BCAvL08jsWtabTvJ5+TksGLFCpydnQkODtZQ1I1Dbc6dj48PAMOGDQPAzc0NPz8/jcTdGNTm3JmZmQFUei8aGxs3ZMhNWpOpTmyp7t69C0Dr1q3lZa1bt6agoICMjIwK23p5efHCCy/QunVrJEni999/B6Br164NFm9jUptzB7BmzRqSkpL48MMPGyjCxqs25y42NhaA69evy1NzrF27lpKSkgaLtzGpzbkbPXo0gwYNYv369bz88st89NFHeHh4MHr06IYMuUkTSayRq01H7/JWr17NP//8g6mpKd7e3vUbZCNVm3MXEBDAb7/9xrPPPkvPnj0bLshGqjbnTnWn/+OPP9KxY0dKS0tZt24dW7ZsaaBoG5fanLvS0lJKS0spKiriwoUL5ObmYmtri9T4B1JqNEQSa+QepqP3pk2b+OGHH9DS0uKTTz6pMCxXS6LuuSspKeGDDz7A1NSUJUuWNGyQjVRt3neq32fOnMn27dvZtWsX2track1AS1Obc7d582b+/fdfvL29uXLlCnPnzuX06dN88cUXDRdwEyeSWCNX247e+/btY/Xq1QD897//5amnnmqYQBshdc9dQkICgYGBpKen06dPH5ydnQGIi4vD2dlZri5rSWrzvlNNUa86b+3atcPc3JykpKQGirZxqc25u3r1KgBPP/00xsbGPPvsswBcvny5gaJt+kQSa+Rq09E7LCyM5cuXA7B48WKef/55TYTcaKh77gwNDRk2bFiFLwADAwOGDRvWbOeCqklt3neq8UpVDTxSUlLIyMigXbt2DR53Y1Cbc2dqagqUjXIPEBoaCoCVlVXDBt2ENYlR7Fu6t99+mwMHDsgTgqakpPDll1/i7OzM119/jaurK6+99hqLFy/m8OHDaGlpMXjwYPkfRrW+JVL33N3P2dkZe3v7Ft3xVN1zV1BQwLhx44iKiqJ79+4kJSWRmJjI8uXLmTJliqZfhkaoe+4uXLjAzJkz0dbWxsvLi5s3b5Kbm8vq1asZO3aspl9GkyCa2DcBy5cvR6FQcPLkSQwMDOSO3pcuXeLPP/+koKAASZL4+++/gbK6+PIfvjU1AGnu1Dl3QtXUPXf6+vr89NNP/Pe//8XX1xdra2uWLVvG5MmTNfwKNEfdc9e/f3/WrVvH+vXruXHjBra2trz88ssigdWCuBMTBEEQmizxTEwQBEFoskQSEwRBEJoskcQEQRCEJkskMUEQBKHJEklMEARBaLJEEhMEQRCaLJHEhEbL2dlZ/oqJiZGXf/311/LyZcuWVdjnzz//ZPLkyXh6euLp6cmMGTOqnRbkq6++wtnZGS8vL/Lz8yusi42NrVC+s7Mz7u7uDBw4kCVLlpCWllYhTg8PD/n3GzduMG3aNHr27MnQoUNZu3atPHZeVfLz8/n4448ZOHAgjz32GAsWLKgwZNODZgm+c+cOU6dOxcPDgxEjRvDXX39Vf1L/v0OHDjFy5Ei6d+/OlClT5JEi1q5dW+l1q77Kj1Y/YcIE3N3dmTBhAv7+/g8s75dffmHo0KF4enoye/ZsEhMTAVi2bFm15amcPXuWESNG4OHhwdSpU7lz584DyxNaDpHEhCahfCK6cuVKldts2bKF+fPnc+PGDZydnWnXrh0+Pj5Mnz6dixcvVthWkiQOHz4MQHZ2drUjcxgZGclDUQ0cOJCioiIOHTrEe++9V+X2qampvPrqq/j6+uLm5kZBQQHr1q3j+++/r/a1rV27lm3btqGlpYWDgwOnT5/mjTfekNfXNEtwcXExCxYswM/PDxcXFxITE3nttdcqJP37nT59miVLlpCeno6rqytXrlxh/vz5lJSU4ODgUGH4rb59+wJl4wGam5tz79495s6dS2hoKG5uboSGhjJnzhzu3btXbXm//PILn332GcXFxXTu3Jm///6bt956CygbTaZ8eT169ABAqVQCEBMTw8KFC0lMTMTFxQU/Pz/mz59f40WB0MJobj5OQaiZUqmUevToISmVSundd9+VJEmSCgoKpG7dusnLVbMJx8TESG5ubpK7u7vk6+srH+PLL7+UlEql5O3tXeHYfn5+klKplNzd3SWlUim9+uqrFdbHxMRISqVSGjFiRIXlAQEBklKplFxcXKTc3Fw5Tnd3d0mSJGnXrl2SUqmUVqxYIUmSJEVEREhKpVJ68sknq32d48aNk5RKpRQbGytJkiS9+OKLklKplDIzMx84S/CFCxckpVIp/ec//5EkSZK2bdsmKZVKac2aNdWWN378eMnV1VWKjIyUJEmSFixYIA0ePFgKCwurtO3HH38sKZVK6Z9//qnw+j7//HNJkiRp5cqVklKplHbt2lVlWUVFRVKfPn2k3r17S+np6VJpaank7e0tDR8+XMrMzKy0/bx58yRXV1cpJCREkiRJWrNmjaRUKqVff/1VkiRJev311yWlUilduHCh2tcntCziTkxo1MzNzWnfvr18J3bz5k3y8/Pp3r17he0OHTpEUVERo0ePplevXvLy2bNns3z5cr788stK2wO88sor6Orqcv78eVJTUx8YT4cOHYCyob3ur4IE6NWrFytXrpRHI1cN5Jqbm1vtMaua3VdfXx89Pb0HzhJ8/fp1ADw9PeXyoew8VSUjI4Pbt2/j6OhIx44dAVi3bh1nz57F0dGxwrahoaH89ttvPPHEEzz++OMActWhqjzV4L/VlRccHEx6ejo9e/bEzMwMhULB3r17OXXqlDz4rcq5c+f4888/ef7553FycqpQnmqON1V5N27cqPpkCi2OSGJCo+fp6UlkZCTJyclyVaLqQ1QlKCgIKKueKs/ExIQpU6bQuXNneVlRURHHjh0DwNvbmz59+lBcXCwnturk5eWxfft2AOzt7aucCqdz584888wzuLi4ALBjx44q4ypvyZIlWFlZMXnyZCZNmoSvry8LFy7EwMDggbME379e9b26aVBUz7WMjIx4/fXX6dGjB1OmTCEkJKTStps3b6a4uJg5c+bIy1TlqRKv6vuDypMkiWnTpuHp6cmrr75KQkJCpW03bdqEtrY2r7zySqXy1H19QssjkpjQ6KkS1pUrV/D19UVbW7vS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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "folder_name = 'band_math_mcari2-800-670-550' # folder name can be modified to be more descriptive in what type of band math is being performed\n", "method = 'mcari2' # must be one of \"ndi\", \"ratio\", \"derivative\", or \"mcari2\"\n", "wl1 = 800\n", "wl2 = 670\n", "wl3 = 550\n", "hsbatch.segment_band_math(base_dir=base_dir, folder_name=folder_name,\n", " name_append='band-math', write_geotiff=True,\n", " method=method, wl1=wl1, wl2=wl2, wl3=wl3,\n", " plot_out=True, out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`batch.segment_band_math` creates a new folder in `base_dir` (in this case the new directory is `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf\\band_math_mcari2-800-670-550`), which contains several data products.\n", "\n", "The **first** is `band-math-stats.csv`: a spreadsheet containing summary statistics for each of the image cubes that were processed via `batch.segment_band_math`; stats include *pixel count*, *mean*, *standard deviation*, *median*, and *percentiles* across all image pixels." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fnameplot_idcountmeanstd_devmedianpctl_10thpctl_25thpctl_50thpctl_75thpctl_90thpctl_95th
0F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...101133910.6229990.1544410.6479320.4009570.5268550.6479320.7439040.8026630.825942
1F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...101249020.6274080.1372260.6516050.4324110.5453380.6516050.7329810.7834730.806512
2F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...101349020.4834550.1703850.4915200.2446300.3499480.4915200.6266700.6988920.737506
3F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...101449020.5829900.1756430.6184710.3154830.4739330.6184710.7272240.7798350.804277
4F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...101549020.5823030.1610180.5979120.3511040.4617470.5979120.7163670.7820690.809144
\n", "
" ], "text/plain": [ " fname plot_id count \\\n", "0 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1011 3391 \n", "1 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1012 4902 \n", "2 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1013 4902 \n", "3 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1014 4902 \n", "4 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1015 4902 \n", "\n", " mean std_dev median pctl_10th pctl_25th pctl_50th pctl_75th \\\n", "0 0.622999 0.154441 0.647932 0.400957 0.526855 0.647932 0.743904 \n", "1 0.627408 0.137226 0.651605 0.432411 0.545338 0.651605 0.732981 \n", "2 0.483455 0.170385 0.491520 0.244630 0.349948 0.491520 0.626670 \n", "3 0.582990 0.175643 0.618471 0.315483 0.473933 0.618471 0.727224 \n", "4 0.582303 0.161018 0.597912 0.351104 0.461747 0.597912 0.716367 \n", "\n", " pctl_90th pctl_95th \n", "0 0.802663 0.825942 \n", "1 0.783473 0.806512 \n", "2 0.698892 0.737506 \n", "3 0.779835 0.804277 \n", "4 0.782069 0.809144 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "pd.read_csv(os.path.join(data_dir, 'spatial_mod', 'crop_many_gdf',\n", " 'band_math_mcari2-800-670-550', 'band-math-stats.csv')).head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Second** is a `geotiff` file for each of the image cubes after the band math processing. This can be opened in *QGIS* to visualize in a spatial reference system, or can be opened using any software that supports floating point *.tif* files.\n", "\n", "![band-math-mcari2-tif](../../docs/source/img/batch/segment_band_math_plot_611-band-math-mcari2-800-670-550_tif.png)\n", "\n", "**Third** is the band math raster saved in the *.hdr* file format. Note that the data conained here should be the same as in the *.tif* file, so it's a matter of preference as to what may be more useful. This single band *.hdr* can also be opend in *QGIS*.\n", "\n", "**Fourth** is a histogram of the band math data contained in the image. The histogram illustrates the 90th percentile value, which may be useful in the segmentation step (e.g., see [`batch.segment_create_mask`](tutorial_batch.html#batch.segment_create_mask))." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.segment_create_mask`\n", "Batch processing tool to create a masked array on many datacubes. `batch.segment_create_mask` is typically used after `batch.segment_band_math` to mask all the datacubes in a directory based on the result of the band math process. [[API]](api/hs_process.batch.html#hs_process.batch.segment_create_mask)\n", "\n", "**Note:** The following `batch` example builds on the results of the [`spatial_mod.crop_many_gdf` tutorial](tutorial_spatial_mod.html#spatial_mod.crop_many_gdf) and and [`batch.segment_band_math`](tutorial_batch.html#batch.segment_band_math). Please complete both the `spatial_mod.crop_many_gdf` and `batch.segment_band_math` tutorial examples to be sure your directories (i.e., `base_dir`, and `mask_dir`) are populated with image files. The following example will be using datacubes located in: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf`\n", "based on MCARI2 images located in: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf\\band_math_mcari2-800-670-550`\n", "\n", "Load and initialize the `batch` module, ensuring `base_dir` is a valid directory" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_mod', 'crop_many_gdf')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.bip',\n", " progress_bar=True) # searches for all files in ``base_dir`` with a \".bip\" file extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There must be a single-band image that will be used to determine which datacube pixels are to be masked (determined via the `mask_dir` parameter). Point to the directory that contains the MCARI2 images." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "mask_dir = os.path.join(base_dir, 'band_math_mcari2-800-670-550')\n", "print(os.path.isdir(mask_dir))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Indicate how the MCARI2 images should be used to determine which hyperspectal pixels are to be masked. The available parameters for controlling this are `mask_thresh`, `mask_percentile`, and `mask_side`. We will mask out all pixels that fall below the MCARI2 90th percentile." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "mask_percentile = 90\n", "mask_side = 'lower'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, indicate the folder to save the masked datacubes and perform the batch masking via `batch.segment_create_mask`" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 0/40: 0%| | 0/40 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fnameplot_idmask-lower-pctl-90-countmask-lower-pctl-90-meanmask-lower-pctl-90-stdevmask-lower-pctl-90-median
0F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...10113390.8322220.0237520.826148
1F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...10124910.8111190.0215600.806518
2F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...10134910.7439420.0329750.737507
3F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...10144910.8094950.0226800.804289
4F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial...10154910.8137140.0240300.809144
\n", "" ], "text/plain": [ " fname plot_id \\\n", "0 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1011 \n", "1 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1012 \n", "2 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1013 \n", "3 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1014 \n", "4 F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial... 1015 \n", "\n", " mask-lower-pctl-90-count mask-lower-pctl-90-mean \\\n", "0 339 0.832222 \n", "1 491 0.811119 \n", "2 491 0.743942 \n", "3 491 0.809495 \n", "4 491 0.813714 \n", "\n", " mask-lower-pctl-90-stdev mask-lower-pctl-90-median \n", "0 0.023752 0.826148 \n", "1 0.021560 0.806518 \n", "2 0.032975 0.737507 \n", "3 0.022680 0.804289 \n", "4 0.024030 0.809144 " ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats_fname = 'mask-{0}-pctl-{1}.csv'.format(mask_side, mask_percentile)\n", "pd.read_csv(os.path.join(base_dir, 'mask_mcari2_90th', stats_fname)).head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Second** is a `geotiff` file for each of the image cubes after the masking procedure. This can be opened in *QGIS* to visualize in a spatial reference system, or can be opened using any software that supports floating point *.tif* files. The masked pixels are saved as `null` values and should render transparently.\n", "\n", "\n", "![segment-create-mask-geotiff](../.././docs/source/img/batch/segment_create_mask_geotiff.png)\n", "\n", "**Third** is the full hyperspectral datacube, also with the masked pixels saved as ``null`` values. Note that the only pixels remaining are the 10% with the highest MCARI2 values.\n", "\n", "![segment-create-mask-datacube](../.././docs/source/img/batch/segment_create_mask_datacube.png)\n", "\n", "**Fourth** is the mean spectra across the unmasked datacube pixels. This is illustrated above by the green line plot (the light green shadow represents the standard deviation for each band)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.spatial_crop`\n", "Iterates through a spreadsheet that provides necessary information about how each image should be cropped and how it should be saved. [[API]](api/hs_process.batch.html#hs_process.batch.spatial_crop)\n", "\n", "If `gdf` is passed (a `geopandas.GoeDataFrame` polygon file), the cropped images will be shifted to the center of appropriate \"plot\" polygon.\n", "\n", "**Tips and Tricks for** `fname_sheet` **when** `gdf` **is not passed**\n", "\n", "If `gdf` is not passed, `fname_sheet` may have the following required column headings that correspond to the relevant parameters in [`spatial_mod.crop_single`](tutorial_spatial_mod.html#spatial_mod.crop_single) and [`spatial_mod.crop_many_gdf`](tutorial_spatial_mod.html#spatial_mod.crop_many_gdf):\n", "\n", "1. \"directory\"\n", "2. \"name_short\"\n", "3. \"name_long\"\n", "4. \"ext\"\n", "5. \"pix_e_ul\"\n", "6. \"pix_n_ul\".\n", "\n", "With this minimum input, `batch.spatial_crop` will read in each image, crop from the upper left pixel (determined as `pix_e_ul`/`pix_n_ul`) to the lower right pixel calculated based on `crop_e_pix`/`crop_n_pix` (which is the width of the cropped area in units of pixels).\n", "\n", "**Note:** `crop_e_pix` and `crop_n_pix` have default values (see [`defaults.crop_defaults`](api/hs_process.defaults.html#hs_process.defaults)), but they can also be passed specifically for each datacube by including appropriate columns in `fname_sheet` (which takes precedence over `defaults.crop_defaults`).\n", "\n", "`fname_sheet` may also have the following optional column headings:\n", "\n", "1. \"crop_e_pix\"\n", "2. \"crop_n_pix\"\n", "3. \"crop_e_m\"\n", "4. \"crop_n_m\"\n", "5. \"buf_e_pix\"\n", "6. \"buf_n_pix\"\n", "7. \"buf_e_m\"\n", "8. \"buf_n_m\"\n", "9. \"plot_id\"\n", "\n", "**More** ``fname_sheet`` **Tips and Tricks**\n", "\n", "1. These optional inputs passed via `fname_sheet` allow more control over exactly how the images are to be cropped. For a more detailed explanation of the information that many of these columns are intended to contain, see the documentation for [`spatial_mod.crop_single`](tutorial_spatial_mod.html#spatial_mod.crop_single) and [`spatial_mod.crop_many_gdf`](tutorial_spatial_mod.html#spatial_mod.crop_many_gdf). Those parameters not referenced should be apparent in the API examples and tutorials.\n", "2. If the column names are different in `fname_sheet` than described here, [`defaults.spat_crop_cols`](api/hs_process.defaults.html#hs_process.defaults) can be modified to indicate which columns correspond to the relevant information.\n", "3. Any other columns can be added to `fname_sheet`, but `batch.spatial_crop` does not use them in any way.\n", "\n", "**Note:** The following `batch` example only actually processes *a single* hyperspectral image. If more datacubes were present in `base_dir`, however, `batch.spatial_crop` would process all datacubes that were available.\n", "\n", "**Note:** This example uses `spatial_mod.crop_many_gdf` to crop many plots from a datacube using a polygon geometry file describing the spatial extent of each plot.\n", " \n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "import geopandas as gpd\n", "import pandas as pd\n", "from hs_process import batch\n", "\n", "base_dir = data_dir\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.bip', dir_level=0,\n", " progress_bar=True) # searches for all files in ``base_dir`` with a \".bip\" file extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load the plot geometry as a `geopandas.GeoDataFrame`" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "fname_gdf = os.path.join(data_dir, 'plot_bounds.geojson')\n", "gdf = gpd.read_file(fname_gdf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Perform the spatial cropping using the *\"many_gdf\"* `method`. Note that nothing is being passed to `fname_sheet` here, so `batch.spatial_crop` is simply going to attempt to crop all plots contained within `gdf` that overlap with any datacubes in `base_dir`.\n", "\n", "Passing `fname_sheet` directly is definitely more flexible for customization. However, some customization is possible while not passing `fname_sheet`. In the example below, we set an easting and northing buffer, as well as limit the number of plots to crop to 40. These defaults trickle through to `spatial_mod.crop_many_gdf()`, so by setting them on the `batch` object, they will be recognized when calculating crop boundaries from `gdf`." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Because ``fname_list`` was passed instead of ``fname_sheet``, there is not a way to infer the study name and date. Therefore, \"study\" and \"date\" will be omitted from the output file name. If you would like output file names to include \"study\" and \"date\", please pass ``fname_sheet`` with \"study\" and \"date\" columns.\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Processing file 39/40: 100%|████████████████████████████████████████████████████████████████████| 40/40 [00:03<00:00, 10.67it/s]\n", "Processing file 39/40: 100%|████████████████████████████████████████████████████████████████████| 40/40 [00:03<00:00, 10.88it/s]\n" ] } ], "source": [ "import warnings\n", "\n", "hsbatch.io.defaults.crop_defaults.buf_e_m = 2 # Sets buffer in the easting direction (units of meters)\n", "hsbatch.io.defaults.crop_defaults.buf_n_m = 0.5\n", "hsbatch.io.defaults.crop_defaults.n_plots = 40 # We can limit the number of plots to process from gdf\n", "\n", "with warnings.catch_warnings(): # Suppresses the UserWarning that is issued\n", " warnings.simplefilter('ignore')\n", " hsbatch.spatial_crop(base_dir=base_dir, method='many_gdf',\n", " gdf=gdf, out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A new folder was created in `base_dir` - `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_crop` - that contains the cropped datacubes and the cropped `geotiff` images. The Plot ID from the `gdf` is used to name each datacube according to its plot ID. The `geotiff` images can be opened in *QGIS* to visualize the images after cropping them.\n", "\n", "![spatial-crop-tifs](../.././docs/source/img/batch/spatial_crop_tifs.png)\n", "\n", "The cropped images were brightened in *QGIS* to emphasize the cropped boundaries. The plot boundaries are overlaid for reference (notice the 2.0 m buffer on the East/West ends and the 0.5 m buffer on the North/South sides)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## `batch.spectra_derivative`\n", "Calculates the numeric spectral derivative for each spectra in `fname_list` and writes the result as a \".spec\" file. [[API]](api/hs_process.batch.html#hs_process.batch.spectra_derivative)\n", "\n", "**Note:** The following `batch` example builds on the results of the [`spatial_mod.cube_to_spectra` tutorial](tutorial_batch.html#batch.cube_to_spectra). Please complete both the [`spatial_mod.crop_many_gdf`](tutorial_spatial_mod.html#spatial_mod.crop_many_gdf) and [`spatial_mod.cube_to_spectra` tutorial](tutorial_batch.html#batch.cube_to_spectra) examples to be sure your directory (i.e., `base_dir`) is populated with multiple hyperspectral spectra. The following example will be using spectra located in the following directory: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf\\cube_to_spec`\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_mod', 'crop_many_gdf', 'cube_to_spec')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.spec', progress_bar=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use ``batch.spectra_derivative`` to calculate the numeric spectral derivative for each of the .spec files in ``base_dir``." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 39/40: 100%|████████████████████████████████████████████████████████████████████| 40/40 [00:01<00:00, 30.87it/s]\n" ] } ], "source": [ "hsbatch.spectra_derivative(base_dir=base_dir, out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use seaborn to visualize the derivative spectra of plots 1011, 1012, and 1013." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":12: DeprecationWarning: Flags not at the start of the expression '] ->', hist).group(1)\n" ] }, { "data": { "image/png": "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+ivg7WB1Oh3gHVxOSUmhf//+eDwennnmGVauXMndd9/NAw88UKIzLK+t69evJysri2XLltG3b1+2bNlC3759adGiBdnZ2dhsNt/17733HqtWreK5554DoHfv3lx55ZXIssyqVas4deoU//d//8fkyZPRarXntUun02G32/n+++99AlVceCvzTFu0aEGTJk346quvWLFiBS+++GKJ59C3b19SU1PZtWsXmzZt4q677mLt2rW+8+cKf3ESExNJSEhg2bJlhIeHM2jQoArtLHpOP/74IxaLpVSZ48eP5+jRo2zatImxY8cC0LJlS6Kjo/n99985ceIES5Ys4fbbb+f06dPnbXtDQ3gIdYDPPvsMvV7PvffeS0hIiO/4uHHjePXVV/n2228vuY4jR45w++23lzg2atQo+vfvz5dffsktt9zCQw89hN1u58MPP+Sjjz7izjvv5ODBg8yfP5/WrVvTsWNHDh48WOLN+0KJjY3lxIkTLF68mNatW/Pss8+W6lj79u3LvHnz+PDDD1m7di1xcXHMmzcPSZLYs2cPt99+OzNnziwxaHg+JkyYwPvvv096ejq33HILt956K4qicM0117B27Vq2bdtG165dSUtLY+/evfTt25fExER++eUXYmNjeeCBBzh16hSLFy/m22+/pX379syZM6dCQfjjjz+YOXMmb775JjfddBOHDx9m+fLlLFu2jCZNmrBgwYISse+ePXvy4osvYrVaue+++3whpYULF/Laa6/x6KOP0qxZM15++WVfnLw8u2666SZ27tzJCy+8UGaI7XzPtKijPRedTscbb7zB7NmzmTt3Ln369KFXr14cPXoUgKeeegqtVstbb72F0+nk5ptv5rbbbrugZwTe7/njjz/OqFGjfDacz84hQ4awevVqXn31VTp37lyqvKuvvpomTZqQlZXFsGHDANDr9bz//vvMnTuXJ554ArPZzKxZs8r1mhsqkkh/LahuBgwYQEBAQJUI2+XEsmXLfMIxcODAWrXF6XSWK/TFQ2OCyxvhIQgEAp588knfdM5z+eSTT+jZs2cNWySoDYSHIBAIOHLkCFlZWWWea926dYnZVYLLl1oRhE8++YRnn32Wv//+u8S0sQ0bNpSID0+fPp277767ps0TCASCBkmNhozsdjuvvfZauatNk5OTad++vS+niNForEHrBAKBoGFTo9NOMzIy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CFKxUQSX6kSjqpiNxlq1SVB9jB49Go/Hg9vtZujQocTElNz34tFHH0Wr1bJq1SpWrVrF9OnT+f7777nrrrtYtmwZK1asKHF9UlJSqbCQxVK4nqXwe2Q0GrFYLGg0Gj777DNf2KaIt99+m2PHjpVr89atW2nZsmWJYyaTiUWLFjF69Gi+//577r777lKLQw0GAwsWLCA6Oppx48b5BCEgIAB/f39fmCorK4u8vDzMZjMmk8lXPnjFLSrKu3Pg/Pnz2bFjh88biomJITs7m0OHDlXdJlkaHUhyYSpsQV2gwQmCIgGqikt1YlTBqBVfxupkZLemF/Q2Xx28+eabxMbGEhQURFpaWqnzu3fvZvr06TRp0oRRo0bx4osvkpKSgsFgQJIkzOaKFy0WXeNweD1Ou91OQEDl17bk5OQQERFR4tj1119PmzZtCAoKwuFw8PHHH/Puu++WuObuu+/m008/xc/Pjz///BOAe++9l9dee43Zs2cze/Zs374mQUFBmM1m7HZv2NRms/naoqoq8+bN44svvmD27Nn06tULwOdlFV+XdMnIWuEd1DEaliBIMgoUCoILvQKyXI/XVQjOS2RkJI0bNy73fLt27fjll18YNGgQq1atQqfT0b59e/bv34/T6eTUqVM0atTovHUEBATQokUL1q1bh8lkwmq1kpiYWGmbQ0JCfF5HEUUhmqI1QGPGjGHIkCElrgkMDPQdS09PZ/z48TzzzDOEhoZy+vRpnn76aeLi4nzZi81mMwUFBaxfv561a9fStm1bzGazb0Osf/3rX9x4440UFBTg7+9Pfr53IWd4eBWGWDU6IQh1jBofVD53hkZxVq9ezdVXX03v3r1ZsmRJldctFY0hqApu3Ojr86JrwSXzwgsvIMsy119/PV999RUvvfQSMTEx9OzZE1mWLzhn1/PPP8+WLVuYNm0akydPpkOHDpW2qXv37uzfv/+81wQGBtK0adMSP8WPFYV9wsPD0Wg0vrbecccd3HXXXfTp04cuXbowefJkpk6dytatW3n66adRFIV33nkHgBdffJEePXpw++23A97xk4iICJo1a1bptpVC1okZRnUNtYbIyspSH3vsMbVt27Zq7969S513Op1qUlKS+vrrr6tLlixR27dvr54+fbrUdX/99VelbXj4w5vUrh8mqKrLof7z313V69/tWOmy6iu7d++ubRNq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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import re\n", "fname_list = [os.path.join(base_dir, 'spec_derivative', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-spec-derivative-order-1.spec'),\n", " os.path.join(base_dir, 'spec_derivative', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1012-spec-derivative-order-1.spec'),\n", " os.path.join(base_dir, 'spec_derivative', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1013-spec-derivative-order-1.spec')]\n", "ax = None\n", "for fname in fname_list:\n", " hsbatch.io.read_spec(fname)\n", " meta_bands = list(hsbatch.io.tools.meta_bands.values())\n", " data = hsbatch.io.spyfile_spec.open_memmap().flatten() * 100\n", " hist = hsbatch.io.spyfile_spec.metadata['history']\n", " pix_n = re.search('] ->', hist).group(1)\n", " if ax is None:\n", " ax = sns.lineplot(x=meta_bands, y=data, label='Plot '+hsbatch.io.name_plot+' (n='+pix_n+')')\n", " else:\n", " ax = sns.lineplot(x=meta_bands, y=data, label='Plot '+hsbatch.io.name_plot+' (n='+pix_n+')', ax=ax)\n", " ax.set(ylim=(-1.5, 1.5))\n", " ax.set_xlabel('Wavelength (nm)', weight='bold')\n", " ax.set_ylabel('Derivative reflectance (%)', weight='bold')\n", " ax.set_title(r'API Example: `batch.spectra_derivative`', weight='bold')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.spectra_combine`\n", "Batch processing tool to gather all pixels from every image in a directory, compute the mean and standard deviation, and save as a single spectra (i.e., a spectra file is equivalent to a single spectral pixel with no spatial information). [[API]](api/hs_process.batch.html#hs_process.batch.spectra_combine)\n", "\n", "Visualize the individual spectra by opening in *Spectronon*.\n", "\n", "![spectra-combine-initial](../.././docs/source/img/batch/spectra_combine_initial.png)\n", "\n", "Notice that there is a range in radiance values across the various reference panels (e.g., the radiance in the green region ranges from ~26k to ~28k μW sr-1 cm-2 μm-1).\n", "\n", "**Note:** The following example will load in several small hyperspectral radiance datacubes *(not reflectance)* that were previously cropped manually (via Spectronon software). These datacubes represent the radiance values of grey reference panels that were placed in the field to provide data necessary for converting radiance imagery to reflectance. These particular datacubes were extracted from several different images captured within ~10 minutes of each other.\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'cube_ref_panels')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Combine all the *radiance* datacubes in the directory via `batch.spectra_combine`." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Combining datacubes/spectra into a single mean spectra.\n", "Number of input datacubes/spectra: 7\n", "Total number of pixels: 1516\n" ] } ], "source": [ "hsbatch.spectra_combine(base_dir=base_dir, search_ext='bip', dir_level=0, out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize the combined spectra by opening in *Spectronon*. The solid line represents the mean radiance spectra across all pixels and images in `base_dir`, and the lighter, slightly transparent line represents the standard deviation of the radiance across all pixels and images in `base_dir`.\n", "\n", "![spectra-combine](../../docs/source/img/batch/spectra_combine.png)\n", "\n", "Notice the lower signal at the oxygen absorption region (near 770 nm). After converting datacubes to reflectance, it may be desireable to spectrally clip this region (see [`spec_mod.spectral_clip`](tutorial_spec_mod.html#spec_mod.spectral_clip))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.spectra_to_csv`\n", "Reads all the `.spec` files in a direcory and saves their reflectance information to a `.csv`. `batch.spectra_to_csv` is identical to `batch.spectra_to_df` except a `.csv` file is saved rather than returning a `pandas.DataFrame`. [[API]](api/hs_process.batch.html#hs_process.batch.spectra_to_csv)\n", "\n", "**Note:** The following example builds on the results of the [`batch.segment_band_math` tutorial](tutorial_batch.html#batch.segment_band_math) and [`batch.segment_create_mask`](tutorial_batch.html#batch.segment_create_mask). Please complete each of those tutorial examples to be sure your directory (i.e., `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf\\mask_mcari2_90th`) is populated with image files.\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_mod', 'crop_many_gdf', 'mask_mcari2_90th')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read all the `.spec` files in `base_dir` and save them to a `.csv` file." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing mean spectra to a .csv file.\n", "Number of input datacubes/spectra: 40\n", "Output file location: F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf\\mask_mcari2_90th\\stats-spectra.csv\n" ] } ], "source": [ "hsbatch.spectra_to_csv(base_dir=base_dir, search_ext='spec', dir_level=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When `stats-spectra.csv` is opened, we can see that each row is a `.spec` file from a different plot, and each column is a particular spectral band/wavelength." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0wavelength394.6396.6528398.7056400.7584402.8112404.864406.9168408.9696...866.744868.7968870.8496872.9024874.9552877.008879.0608881.1136883.1664885.2192
0fnameplot_id1.0000002.0000003.0000004.0000005.0000006.0000007.0000008.000000...231.000000232.000000233.000000234.000000235.000000236.000000237.000000238.000000239.000000240.000000
1Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101113.52356319.2135709.5854027.0491624.9711033.6694402.5476651.944489...45.95273645.17795644.17822345.59573044.23705345.19288344.70706944.31767344.97725744.885410
2Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101214.32822617.6731079.5572886.8619925.4707184.2974562.7473302.122929...44.90727644.54410643.38492644.67561043.88015444.39432543.72879443.44451544.27753844.192337
3Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101313.28020918.9910589.8068627.0415595.0840804.0545952.6073782.187212...40.59013040.23465739.19443540.26024639.64820140.09607739.31885539.21759839.90432739.873375
4Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101412.91680318.9326619.8797226.7125764.8150423.8654112.7574642.130761...46.26297845.80239544.40079545.82487545.43609645.66488344.69139144.59133545.32108745.260036
\n", "

5 rows × 242 columns

\n", "
" ], "text/plain": [ " Unnamed: 0 wavelength 394.6 \\\n", "0 fname plot_id 1.000000 \n", "1 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1011 13.523563 \n", "2 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1012 14.328226 \n", "3 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1013 13.280209 \n", "4 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1014 12.916803 \n", "\n", " 396.6528 398.7056 400.7584 402.8112 404.864 406.9168 408.9696 ... \\\n", "0 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 ... \n", "1 19.213570 9.585402 7.049162 4.971103 3.669440 2.547665 1.944489 ... \n", "2 17.673107 9.557288 6.861992 5.470718 4.297456 2.747330 2.122929 ... \n", "3 18.991058 9.806862 7.041559 5.084080 4.054595 2.607378 2.187212 ... \n", "4 18.932661 9.879722 6.712576 4.815042 3.865411 2.757464 2.130761 ... \n", "\n", " 866.744 868.7968 870.8496 872.9024 874.9552 877.008 \\\n", "0 231.000000 232.000000 233.000000 234.000000 235.000000 236.000000 \n", "1 45.952736 45.177956 44.178223 45.595730 44.237053 45.192883 \n", "2 44.907276 44.544106 43.384926 44.675610 43.880154 44.394325 \n", "3 40.590130 40.234657 39.194435 40.260246 39.648201 40.096077 \n", "4 46.262978 45.802395 44.400795 45.824875 45.436096 45.664883 \n", "\n", " 879.0608 881.1136 883.1664 885.2192 \n", "0 237.000000 238.000000 239.000000 240.000000 \n", "1 44.707069 44.317673 44.977257 44.885410 \n", "2 43.728794 43.444515 44.277538 44.192337 \n", "3 39.318855 39.217598 39.904327 39.873375 \n", "4 44.691391 44.591335 45.321087 45.260036 \n", "\n", "[5 rows x 242 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "pd.read_csv(os.path.join(base_dir, 'stats-spectra.csv')).head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.spectra_to_df`\n", "Reads all the .spec files in a direcory and returns their data as a `pandas.DataFrame` object. `batch.spectra_to_df` is identical to `batch.spectra_to_csv` except a `pandas.DataFrame` is returned rather than saving a `.csv` file. [[API]](api/hs_process.batch.html#hs_process.batch.spectra_to_df)\n", "\n", "**Note:** The following example builds on the results of the [`batch.segment_band_math` tutorial](tutorial_batch.html#batch.segment_band_math) and [`batch.segment_create_mask`](tutorial_batch.html#batch.segment_create_mask). Please complete each of those tutorial examples to be sure your directory (i.e., `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_mod\\crop_many_gdf\\mask_mcari2_90th`) is populated with image files.\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_mod', 'crop_many_gdf', 'mask_mcari2_90th')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read all the `.spec` files in `base_dir` and load them to `df_spec`, a `pandas.DataFrame`." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Writing mean spectra to a ``pandas.DataFrame``.\n", "Number of input datacubes/spectra: 40\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fnameplot_id12345678...231232233234235236237238239240
0Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101113.52356319.2135709.5854027.0491624.9711033.6694402.5476651.944489...45.95273645.17795644.17822345.59573044.23705345.19288344.70706944.31767344.97725744.885410
1Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101214.32822617.6731079.5572886.8619925.4707184.2974562.7473302.122929...44.90727644.54410643.38492644.67561043.88015444.39432543.72879443.44451544.27753844.192337
2Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101313.28020918.9910589.8068627.0415595.0840804.0545952.6073782.187212...40.59013040.23465739.19443540.26024639.64820140.09607739.31885539.21759839.90432739.873375
3Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101412.91680318.9326619.8797226.7125764.8150423.8654112.7574642.130761...46.26297845.80239544.40079545.82487545.43609645.66488344.69139144.59133545.32108745.260036
4Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...101512.62972820.1372249.5653816.6102825.2386154.0952922.6720052.190024...46.75395246.38557844.93614246.20002045.93883146.11929745.29057345.13016545.81279845.785793
\n", "

5 rows × 242 columns

\n", "
" ], "text/plain": [ " fname plot_id 1 \\\n", "0 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1011 13.523563 \n", "1 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1012 14.328226 \n", "2 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1013 13.280209 \n", "3 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1014 12.916803 \n", "4 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1015 12.629728 \n", "\n", " 2 3 4 5 6 7 8 ... \\\n", "0 19.213570 9.585402 7.049162 4.971103 3.669440 2.547665 1.944489 ... \n", "1 17.673107 9.557288 6.861992 5.470718 4.297456 2.747330 2.122929 ... \n", "2 18.991058 9.806862 7.041559 5.084080 4.054595 2.607378 2.187212 ... \n", "3 18.932661 9.879722 6.712576 4.815042 3.865411 2.757464 2.130761 ... \n", "4 20.137224 9.565381 6.610282 5.238615 4.095292 2.672005 2.190024 ... \n", "\n", " 231 232 233 234 235 236 \\\n", "0 45.952736 45.177956 44.178223 45.595730 44.237053 45.192883 \n", "1 44.907276 44.544106 43.384926 44.675610 43.880154 44.394325 \n", "2 40.590130 40.234657 39.194435 40.260246 39.648201 40.096077 \n", "3 46.262978 45.802395 44.400795 45.824875 45.436096 45.664883 \n", "4 46.753952 46.385578 44.936142 46.200020 45.938831 46.119297 \n", "\n", " 237 238 239 240 \n", "0 44.707069 44.317673 44.977257 44.885410 \n", "1 43.728794 43.444515 44.277538 44.192337 \n", "2 39.318855 39.217598 39.904327 39.873375 \n", "3 44.691391 44.591335 45.321087 45.260036 \n", "4 45.290573 45.130165 45.812798 45.785793 \n", "\n", "[5 rows x 242 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_spec = hsbatch.spectra_to_df(base_dir=base_dir, search_ext='spec', dir_level=0)\n", "df_spec.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each row is a `.spec` file from a different plot, and each column is a particular spectral band.\n", "\n", "It is somewhat confusing to conceptualize spectral data by band number (as opposed to the wavelenth it represents). `hs_process.hs_tools.get_band` can be used to retrieve spectral data for all plots via indexing by wavelength. Say we need to access reflectance at 710 nm for each plot (in this case, the 710 nm band is band number 155)." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fnameplot_id155
0Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...10115.769057
1Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...10126.112481
2Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...10136.855353
3Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...10146.578203
4Wells_rep2_20180628_16h56m_pika_gige_7_plot_10...10156.886356
\n", "
" ], "text/plain": [ " fname plot_id 155\n", "0 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1011 5.769057\n", "1 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1012 6.112481\n", "2 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1013 6.855353\n", "3 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1014 6.578203\n", "4 Wells_rep2_20180628_16h56m_pika_gige_7_plot_10... 1015 6.886356" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_710nm = df_spec[['fname', 'plot_id', hsbatch.io.tools.get_band(710)]]\n", "df_710nm.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.spectral_clip`\n", "Batch processing tool to spectrally clip multiple datacubes in the same way. [[API]](api/hs_process.batch.html#hs_process.batch.spectral_clip)\n", "\n", "**Note:** The following example builds on the results of the [`batch.spatial_crop` tutorial](tutorial_batch.html#batch.spatial_crop). Please complete the `batch.spatial_crop` tutorial example to be sure your directory (i.e., `base_dir`) is populated with multiple hyperspectral datacubes. The following example will be using datacubes located in teh following directory: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_crop`\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_crop')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.bip',\n", " progress_bar=True) # searches for all files in ``base_dir`` with a \".bip\" file extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `batch.spectral_clip` to clip all spectral bands below *420 nm* and above *880 nm*, as well as the bands near the oxygen absorption (i.e., *760-776 nm*) and water absorption (i.e., *813-827 nm*) regions." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 79/80: 100%|████████████████████████████████████████████████████████████████████| 80/80 [00:03<00:00, 20.77it/s]\n" ] } ], "source": [ "hsbatch.spectral_clip(base_dir=base_dir, folder_name='spec_clip',\n", " wl_bands=[[0, 420], [760, 776], [813, 827], [880, 1000]],\n", " out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use [Seaborn](https://seaborn.pydata.org/index.html) to visualize the spectra of a single pixel in one of the processed images." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'API Example: `batch.spectral_clip`')" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "\n", "fname = os.path.join(base_dir, 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-spatial-crop.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem = hsbatch.io.spyfile.open_memmap() # datacube before clipping\n", "meta_bands = list(hsbatch.io.tools.meta_bands.values())\n", "fname = os.path.join(base_dir, 'spec_clip', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-spec-clip.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem_clip = hsbatch.io.spyfile.open_memmap() # datacube after clipping\n", "meta_bands_clip = list(hsbatch.io.tools.meta_bands.values())\n", "ax = sns.lineplot(x=meta_bands, y=spy_mem[26][29], label='Before spectral clipping', linewidth=3)\n", "ax = sns.lineplot(x=meta_bands_clip, y=spy_mem_clip[26][29], label='After spectral clipping', ax=ax)\n", "ax.set_xlabel('Wavelength (nm)', weight='bold')\n", "ax.set_ylabel('Reflectance (%)', weight='bold')\n", "ax.set_title(r'API Example: `batch.spectral_clip`', weight='bold')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.spectral_mimic`\n", "Batch processing tool to spectrally mimic a multispectral sensor for multiple datacubes in the same way. [[API]](api/hs_process.batch.html#hs_process.batch.spectral_mimic)\n", "\n", "**Note:** The following example builds on the results of the [batch.spatial_crop tutorial](tutorial_batch.html#batch.spatial_crop). Please complete the `batch.spatial_crop` tutorial example to be sure your directory (i.e., `base_dir`) is populated with multiple hyperspectral datacubes. The following example will be using datacubes located in the following directory: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_crop`\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_crop')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.bip', progress_bar=True) # searches for all files in ``base_dir`` with a \".bip\" file extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `batch.spectral_mimic` to spectrally mimic the Sentinel-2A multispectral satellite sensor." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 79/80: 100%|████████████████████████████████████████████████████████████████████| 80/80 [00:08<00:00, 9.42it/s]\n" ] } ], "source": [ "hsbatch.spectral_mimic(base_dir=base_dir, folder_name='spec_mimic',\n", " name_append='sentinel-2a',\n", " sensor='sentinel-2a', center_wl='weighted',\n", " out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `seaborn` to visualize the spectra of a single pixel in one of the processed images." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'API Example: `batch.spectral_mimic`')" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEPCAYAAABFpK+YAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAABbkUlEQVR4nO3deXiM19vA8e9ksu+LJEI2sUQISYQg9qCU1lYURatVutKq19qWqBZtdUN/bWlRtdauSktVLbEmsZSIJUhICJFlskyWmef9Y5pJRhIJkcXM+VxXLplnnuU+M3HPmXPOc45MkiQJQRAEwWAY1XQAgiAIQvUSiV8QBMHAiMQvCIJgYETiFwRBMDAi8QuCIBgYkfgFvZKbm0tWVhZisJphUavVZGVlkZeXV9OhPBFE4q+lJEmiZ8+e+Pr6sn79ep3nFi1ahK+vr/YnICCAESNGcP36dQCmTZuGr68vGRkZJc4bFhamc2zhz48//lgt5XqQwnLFxMQ88jni4uLo168fK1euBODYsWP4+vqyYsWKhzpPZmYm8+bNY+3ateXuO2rUKFq3bv0o4VapiIgIRo4c+UjHPuhv6FE96utUkVgkSWLx4sU89dRTZGZmViZMg2Bc0wEIpTtw4ADx8fEA/PLLLzz//PMl9gkPD6d+/frExsaycOFCpk+fzpo1a8o9t6enJ+Hh4TrbvL29H0vcNc3Pz4+tW7dy8+bNSp3n3LlzrFixgunTpz+myKrf//73Py5cuFDTYWhNnTqV7Ozshz5u7Nix9OvXD0tLyzL3kcvlTJ06lUGDBlFQUFCZMA2CqPHXUmvWrMHCwoIXXniBixcvcuTIkRL7BAQE0KlTJ8aOHYufnx///vtvhc5tYWFBcHCwzo+bmxtRUVE0b96cUaNGIUkS77zzDn5+fhw5coScnBwmT55MmzZt8Pf3p3///pw+fRrQ1OT69u3L3Llzadu2LQMGDOCPP/5gxIgRBAQE8Oqrr2r/w4eFhTF69GgmTZpEQEAAQ4YMITY2ttQ4f/31V3r06EFwcDCvvPKK9oOwvFq8jY0NTZs21dl2/vx5+vXrR5s2bZgxYwZKpVJ7jbCwMPz9/enYsSPffvstAKNHjwZg3rx5LFq0CIDvv/+esLAwAgICGDZsGBcvXtSeX5IkvvnmG9q1a0fPnj05cOBAibjy8/P54IMPaNeuHS1btmTAgAGcOHECgM2bN+Pr68u3335L165dadeuHV9++aX22L/++os+ffoQFBTE8OHDdd7r0uJatGgRx48fR6FQ4OvrC4Cvry8vvfQSPXv2pHfv3g98Tytq2rRpBAcHs2TJEkJDQ+nVqxc7d+7k1VdfJSgoiGHDhpGcnAzAggULeOONN4Cib3fLli2jS5cudOvWjV9//ZVJkybRqlUrnnnmGS5fvgzAsmXLGDNmjPZvaOPGjfTq1YuWLVvSv39/jh8/ro2ncePG2NvbP1QZDJFI/LVQQkICBw4coFevXrz00kvIZDJWrVpVYr/8/Hyys7M5fvw4ly9fpn79+hU6f2xsLC1bttT5uXnzJq1atWLChAkcP36c1157jV27djF+/Hjat2/PgQMHiIyM5M033+TTTz/lypUrLFu2THvOy5cvo1KpeP3114mJiWHSpEn06dOHPn36cODAAf7880/tvseOHaN+/fqEh4dz9epV3nnnnRJt8idOnOD999+nR48efPjhh6SmpvLOO+8A0LRpU5YvX06vXr0q/JoeOXKE8ePHM3DgQDZt2sSyZcvIyspizZo1+Pv7s2jRIry8vPjmm29QKBRMnToVgOHDhzNgwAA2b97MF198Qbdu3fj4449JSEjQ+TaQmZnJ3bt3mTZtGnfv3mXBggUlYjhw4AAbNmxg5MiRfPrpp1hbW7N582adfbZt28b06dNp164d3333Hb/99hvXr19n4sSJtGjRgjlz5mBhYcGbb76JUqksM64BAwbg6+uLpaUly5cv13ldx40bx/vvv1/ue1pRmZmZXLx4kcmTJ5OQkKD9UB85ciTR0dH8+uuvZR574MABpkyZgkKh4P3338fOzo4JEyZw6dIlfvrppxL7Hzt2jJkzZ+Ln58eCBQvIy8tj8uTJom3/IYmmnlpo7dq1qNVqevbsibW1NYGBgfz9998kJCTg4eGh3W/IkCHa352dnZk/f36Fzu/t7V0iMbm4uAAwbtw4jhw5wv79+wkKCuLtt98GoFevXri5uXH06FF2796NTCYjLS1Ne7yJiQkffPABkiQxb948WrduzciRIzly5AibN28mPT1du2/9+vV57733ADh79iy//PILt27d0onn77//BtBJWgApKSk4OTkRGhpaobIWev755+nbty99+vRh8+bNHDt2jLfeeotly5axb98+/v77b5KSkpAkiYyM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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "fname = os.path.join(base_dir, 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-spatial-crop.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem = hsbatch.io.spyfile.open_memmap() # datacube before mimicking\n", "meta_bands = list(hsbatch.io.tools.meta_bands.values())\n", "fname = os.path.join(base_dir, 'spec_mimic', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-sentinel-2a.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem_sen2a = hsbatch.io.spyfile.open_memmap() # datacube after mimicking\n", "meta_bands_sen2a = list(hsbatch.io.tools.meta_bands.values())\n", "ax = sns.lineplot(x=meta_bands, y=spy_mem[26][29], label='Hyperspectral (Pika II)', linewidth=3)\n", "ax = sns.lineplot(x=meta_bands_sen2a, y=spy_mem_sen2a[26][29], label='Sentinel-2A \"mimic\"', marker='o', ms=6, ax=ax)\n", "ax.set_xlabel('Wavelength (nm)', weight='bold')\n", "ax.set_ylabel('Reflectance (%)', weight='bold')\n", "ax.set_title(r'API Example: `batch.spectral_mimic`', weight='bold')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `spec_mod.spectral_mimic` to mimic the [Sentera 6x spectral configuration](https://sentera.com/6x/) and compare to both hyperspectral and Sentinel-2A." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 79/80: 100%|████████████████████████████████████████████████████████████████████| 80/80 [00:05<00:00, 14.79it/s]\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'API Example: `batch.spectral_mimic`')" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "hsbatch.spectral_mimic(base_dir=base_dir, folder_name='spec_mimic',\n", " name_append='sentera-6x',\n", " sensor='sentera_6x', center_wl='weighted',\n", " out_force=True)\n", "\n", "fname = os.path.join(base_dir, 'spec_mimic', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-sentera-6x.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem_6x = hsbatch.io.spyfile.open_memmap() # datacube after mimicking\n", "meta_bands_6x = list(hsbatch.io.tools.meta_bands.values())\n", "ax = sns.lineplot(x=meta_bands, y=spy_mem[26][29], label='Hyperspectral (Pika II)', linewidth=3)\n", "ax = sns.lineplot(x=meta_bands_sen2a, y=spy_mem_sen2a[26][29], label='Sentinel-2A \"mimic\"', marker='o', ms=6, ax=ax)\n", "ax = sns.lineplot(x=meta_bands_6x, y=spy_mem_6x[26][29], label='Sentera 6X \"mimic\"', color='green', marker='o', ms=8, ax=ax)\n", "ax.set_xlabel('Wavelength (nm)', weight='bold')\n", "ax.set_ylabel('Reflectance (%)', weight='bold')\n", "ax.set_title(r'API Example: `batch.spectral_mimic`', weight='bold')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And finally, mimic the [Micasense RedEdge-MX](https://micasense.com/rededge-mx/) and compare to hyperspectral, Sentinel-2A, and Sentera 6X." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 79/80: 100%|████████████████████████████████████████████████████████████████████| 80/80 [00:05<00:00, 15.25it/s]\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'API Example: `batch.spectral_mimic`')" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "hsbatch.spectral_mimic(base_dir=base_dir, folder_name='spec_mimic',\n", " name_append='micasense-rededge-3',\n", " sensor='micasense_rededge_3', center_wl='weighted',\n", " out_force=True)\n", "\n", "fname = os.path.join(base_dir, 'spec_mimic', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-micasense-rededge-3.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem_re3 = hsbatch.io.spyfile.open_memmap() # datacube after mimicking\n", "meta_bands_re3 = list(hsbatch.io.tools.meta_bands.values())\n", "ax = sns.lineplot(x=meta_bands, y=spy_mem[26][29], label='Hyperspectral (Pika II)', linewidth=3)\n", "ax = sns.lineplot(x=meta_bands_sen2a, y=spy_mem_sen2a[26][29], label='Sentinel-2A \"mimic\"', marker='o', ms=6, ax=ax)\n", "ax = sns.lineplot(x=meta_bands_6x, y=spy_mem_6x[26][29], label='Sentera 6X \"mimic\"', color='green', marker='o', ms=8, ax=ax)\n", "ax = sns.lineplot(x=meta_bands_re3, y=spy_mem_re3[26][29], label='Micasense RedEdge 3 \"mimic\"', color='red', marker='o', ms=8, ax=ax)\n", "ax.set_xlabel('Wavelength (nm)', weight='bold')\n", "ax.set_ylabel('Reflectance (%)', weight='bold')\n", "ax.set_title(r'API Example: `batch.spectral_mimic`', weight='bold')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.spectral_resample`\n", "Batch processing tool to spectrally resample (a.k.a. \"bin\") multiple datacubes in the same way. [[API]](api/hs_process.batch.html#hs_process.batch.spectral_resample)\n", "\n", "**Note:** The following example builds on the results of the [batch.spatial_crop tutorial](tutorial_batch.html#batch.spatial_crop). Please complete the `batch.spatial_crop` tutorial example to be sure your directory (i.e., `base_dir`) is populated with multiple hyperspectral datacubes. The following example will be using datacubes located in the following directory: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_crop`\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_crop')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.bip', progress_bar=True) # searches for all files in ``base_dir`` with a \".bip\" file extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `batch.spectral_resample` to bin (a.k.a., \"group\") all spectral bands into 20 nm bandwidth bands (from ~2.3 nm bandwidth originally) on a per-pixel basis." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 79/80: 100%|████████████████████████████████████████████████████████████████████| 80/80 [00:01<00:00, 55.82it/s]\n" ] } ], "source": [ "hsbatch.spectral_resample(base_dir=base_dir, folder_name='spec_bin',\n", " name_append='spec-bin-20',\n", " bandwidth=20, out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `seaborn` to visualize the spectra of a single pixel in one of the processed images." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'API Example: `batch.spectral_resample`')" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "fname = os.path.join(base_dir, 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-spatial-crop.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem = hsbatch.io.spyfile.open_memmap() # datacube before resampling\n", "meta_bands = list(hsbatch.io.tools.meta_bands.values())\n", "fname = os.path.join(base_dir, 'spec_bin', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-spec-bin-20.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem_bin = hsbatch.io.spyfile.open_memmap() # datacube after resampling\n", "meta_bands_bin = list(hsbatch.io.tools.meta_bands.values())\n", "ax = sns.lineplot(x=meta_bands, y=spy_mem[26][29], label='Hyperspectral (Pika II)', linewidth=3)\n", "ax = sns.lineplot(x=meta_bands_bin, y=spy_mem_bin[26][29], label='Spectral resample (20 nm)', marker='o', ms=6, ax=ax)\n", "ax.set_xlabel('Wavelength (nm)', weight='bold')\n", "ax.set_ylabel('Reflectance (%)', weight='bold')\n", "ax.set_title(r'API Example: `batch.spectral_resample`', weight='bold')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "***\n", "\n", "## `batch.spectral_smooth`\n", "Batch processing tool to spectrally smooth multiple datacubes in the same way. [[API]](api/hs_process.batch.html#hs_process.batch.spectral_smooth)\n", "\n", "**Note:** The following example builds on the results of the [batch.spatial_crop tutorial](tutorial_batch.html#batch.spatial_crop). Please complete the `batch.spatial_crop` tutorial example to be sure your directory (i.e., `base_dir`) is populated with multiple hyperspectral datacubes. The following example will be using datacubes located in the following directory: `F:\\\\nigo0024\\Documents\\hs_process_demo\\spatial_crop`\n", "\n", "Load and initialize the `batch` module, checking to be sure the directory exists." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True\n" ] } ], "source": [ "import os\n", "from hs_process import batch\n", "\n", "base_dir = os.path.join(data_dir, 'spatial_crop')\n", "print(os.path.isdir(base_dir))\n", "hsbatch = batch(base_dir, search_ext='.bip', progress_bar=True) # searches for all files in ``base_dir`` with a \".bip\" file extension" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `batch.spectral_smooth` to perform a *Savitzky-Golay* smoothing operation on each image/pixel in `base_dir`. The `window_size` and `order` can be adjusted to achieve desired smoothing results." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Processing file 79/80: 100%|████████████████████████████████████████████████████████████████████| 80/80 [02:01<00:00, 1.52s/it]\n" ] } ], "source": [ "hsbatch.spectral_smooth(base_dir=base_dir, folder_name='spec_smooth',\n", " window_size=11, order=2, out_force=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use [Seaborn](https://seaborn.pydata.org/index.html) to visualize the spectra of a single pixel in one of the processed images." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'API Example: `batch.spectral_smooth`')" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "\n", "fname = os.path.join(base_dir, 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-spatial-crop.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem = hsbatch.io.spyfile.open_memmap() # datacube before smoothing\n", "meta_bands = list(hsbatch.io.tools.meta_bands.values())\n", "fname = os.path.join(base_dir, 'spec_smooth', 'Wells_rep2_20180628_16h56m_pika_gige_7_plot_1011-spec-smooth.bip')\n", "hsbatch.io.read_cube(fname)\n", "spy_mem_clip = hsbatch.io.spyfile.open_memmap() # datacube after smoothing\n", "meta_bands_clip = list(hsbatch.io.tools.meta_bands.values())\n", "ax = sns.lineplot(x=meta_bands, y=spy_mem[26][29], label='Before spectral smoothing', linewidth=3)\n", "ax = sns.lineplot(x=meta_bands_clip, y=spy_mem_clip[26][29], label='After spectral smoothing', ax=ax)\n", "ax.set_xlabel('Wavelength (nm)', weight='bold')\n", "ax.set_ylabel('Reflectance (%)', weight='bold')\n", "ax.set_title(r'API Example: `batch.spectral_smooth`', weight='bold')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 4 }