{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Add stratigraphy from GeoTOP to CPT data\n", "\n", "This example shows how stratigraphic layer boundaries from GeoTOP can easily be added to CPT data. This way, CPT parameters can easily be aggregated to get averages for geological units. For this example we are going to use a selection of CPTs in the area of the Utrecht Science Park (USP).\n", "\n", "We will first import the relevant modules and plot the locations of the CPTs in the [`CptCollection`](../api_reference/cpt_collection.rst)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import seaborn as sns\n", "from matplotlib import pyplot as plt\n", "\n", "import geost\n", "from geost.bro import GeoTop\n", "from geost.bro.bro_geotop import StratGeotop\n", "from geost.analysis.combine import add_voxelmodel_variable\n", "\n", "\n", "cpts = geost.data.cpts_usp()\n", "cpts.header.gdf.explore(style_kwds=dict(color=\"red\", weight=6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding information from a voxelmodel\n", "Any information from voxelmodels can be added. For this example we show how to add the stratigraphy from GeoTOP to the CPTs. First we read GeoTOP directly from the OpenDaP server for the USP area." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "GeoTop\n", "Data variables:\n", " strat (y, x, z) float32 240kB ...\n", "Dimensions: {'y': 12, 'x': 16, 'z': 313}\n", "Resolution (y, x, z): (100.0, 100.0, 0.5)\n" ] } ], "source": [ "geotop = GeoTop.from_opendap(data_vars=['strat'], bbox=cpts.header.gdf.total_bounds)\n", "print(geotop)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, this prints a [`GeoTop`](../api_reference/bro_geotop.rst) instance along with the dimensions and resolution of GeoTOP. We can use this GeoTop instance to add the variable \"strat\" to the CPT data. This adds a column \"strat\" to the data object of the [`CptCollection`](../api_reference/cpt_collection.rst). First, we must create a \"depth\" column in the CPT data because this is expected to be present in the data. We can use the column \"penetration_length\" for this. Below we add the variable and print the resulting column:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 1000.0\n", "1 2010.0\n", "2 3030.0\n", "3 3100.0\n", "4 5000.0\n", " ... \n", "73422 5000.0\n", "73423 5060.0\n", "73424 5070.0\n", "73425 5120.0\n", "73426 NaN\n", "Name: strat, Length: 53994, dtype: float32\n" ] } ], "source": [ "cpts.data[\"depth\"] = cpts.data[\"depth\"] \n", "cpts = add_voxelmodel_variable(cpts, geotop, \"strat\")\n", "print(cpts.data['strat'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that some of the resulting values are \"NaN\" which occurs when a CPT falls outside of the 3D model extent. In this case, some CPTs are deeper than the maximum depth of GeoTOP. Now we could easily aggregate any CPT parameter according to the new \"strat\" variable. For example, make a boxplot of the average cone resistance (\"qc\"):" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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sXvuucexDeWDDz6wvn372qeffmpLliyxmjVrnvNDy+z0ynf48GE7fPhwgJP+ZPfu3da0aVMbO3asd9qaNWusZ8+etn//fktLS/NOD5blbMa6EShuW85mZikpKda6dWv74YcfLC8vz3r37m1t2rSxSy65xAYPHuw9IDJYMn/xxRcWGhpq48ePN7PTx/YkJSVZnz59Cr0uJyfHduzYYffee6/jmdPS0qxly5Y2ZswY77SdO3faNddcY/PmzfNOC6bMBW699VYbMmSImf10rZv09HQbOHCg3Xjjjfaf//zH+9rdu3cHxXYY7JkpMxfwzDPPWJMmTSwzM7PQHT3//e9/W7NmzWzYsGGFjpQ3c/ZCTIcPH7aPPvrI+7jgQ+vMA+Hy8vKC5o6qZmafffaZ3X///YXuTjthwgSrXLmyNWrUyKKjo23s2LHeb7UFnL7gFetGYLhtOZudvmBbbGysbdu2zXr37m1du3a1Dz/80F5++WXr1KmT3Xrrrfbll18W+hknM48bN84eeeSRQjnmzp1r9evXt08//dTMzn5xMyczL1u2zG688UZbv359oelt27a1iRMnmpmddV12MnN+fr7l5uZa7969C213ubm5ZnZ6JKl169bWrVu3Qj/jJLdkpsxcwPz58y0iIsK++OILM/vpKG0zszlz5ljFihW9zxVweuU7U35+vi1durTIh9af//xnW7FihXPBfub777/3/vmvf/2rVahQwWbNmmXbtm2zWbNmWUREhH3wwQeFfsbp5fz222+zbgSA27bBvLw8S01NtcaNG9urr75qd955p23ZssX7/LJlyywpKcn+8pe/mNlPWZ3MfLYP+G+++cZiY2Nt8uTJZnb2nE5mPnz4sC1YsMD7uODDtUePHvbEE08UeX0wLOeC371q1SrzeDz23HPPeZ8rWK/XrVtn4eHhRcqu01auXBnUmSkzxdCjRw+rV6+eHThwwMwKn+KXlJRkTz/9tFPRLCUlxf7973/b66+/bvv27fN+Qz3zG0leXp73Q6tXr142dOhQ83g8ha6zECxycnLs7bffLnJdguuuu67Q8QdOOvPNsFevXqwbARDM2+C5jBgxwjwej4WFhXmvwVGgZ8+edueddzqU7Nx+PpIxdepUq1GjhuMXZruQM3P37dvXO8pkZjZ9+nTv6JITsrKyCj0uyDp9+nSrWLFikdOWv/zyS7vyyivtu+++C1jGn0tLS7M1a9bYhx9+6J2Wl5cX1JkpM2f4+uuv7ZFHHrFf//rXNm3aNO8b0I4dO6xly5ZWv359S01N9b4+KyvLWrRoYX/9618dybthwwaLiYmxpk2bWtWqVa1evXo2evRo7yjHz9+YFi9ebB6Px6Kjo4t8kw2kny/nn7f5n3/Ypqen280332yzZ88OdFSvAwcOFNr/W5Bx8+bN1qZNG9YNP3HbNmhWNPOZ96O57777zOPx2PTp0wvdE+iuu+7y7gpxwvm2wTPXjdWrV9vVV19tr7/+upk5u4vm59vgudx55502YsQIMzN74oknzOPxFNkVFSibN2+2G2+80ZYtW1bkuQMHDtiTTz5poaGhNm7cOPv222/twIEDNn78eLviiiu8xT3QNm7caNdcc401atTIKlWqZM2bN7cTJ06Y2emTCIIxsxllxmvLli0WFRVlt912m/Xv399q1aplbdu2teeff97MTq+U7dq1s6ioKHv11Vdt7ty59uijj1p0dLQjbfTw4cPWrFkzGzNmjP34449mZjZp0iRr166d9ejRw7799lsz+2kUIS8vzx544AG79NJLCw15B9rZlnO7du3s2Wef9b7m5weiPvHEE5aQkGA7d+4McNrTtm7damFhYdanT59CN0grsGbNGuvUqRPrRgm5bRs8V+Z27drZM888Y2anz2r6zW9+Y6GhoTZs2DB7+umn7ZFHHrHo6Ogil9p3OvOZ2+CZpaV///52+eWXOxHV60LboNlP7xs9e/a0yZMn24svvujoro9du3bZVVddZWFhYVanTh373//+V+Q1R44csTlz5ljVqlWtbt26lpiYaHXq1HEs8zfffGMxMTH2+OOP27Zt2+zrr7+2q666yvr37x+0mQtQZuz0vtaBAwcWOu0sJSXFBg8ebNddd51Nnz7dzE5fEnvEiBF21VVX2ZVXXmmtWrVy7FS5lJQUi4+Pt48//rjQ9Dlz5lj79u2tX79+3tMTzU7vp7/mmmuKDHcH0vmW8/XXX+/dN19g0aJFNnz4cKtatapjyzktLc3atGljN998s1122WX2q1/96qxvpj/++KONHDmSdcNHbtwGz5e5adOmNmXKFO/0GTNmWNeuXe26666z2267zbGRgovZBgvKwdKlS61x48aF1plAKu42WODuu+82j8djlStXPutdmwMhNzfXnn32Wbvj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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "sns.boxplot(ax=ax, data=cpts.data.df, x=\"strat\", y=\"cone_resistance\", showfliers=False)\n", "ax.tick_params(axis='x', rotation=45)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each number on the x-axis represents a geological unit. However, these numbers are off course not really intuitive and knowing the corresponding geological unit is hard. GeoST provides the [`StratGeotop`](../api_reference/geotop_selection.rst) class which makes it easy to select desired stratigraphic units with or relabel the unit numbers in the plot above into more meaningfull names.\n", "\n", "First, we select all the units that have been merged with the CPT data:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "units = StratGeotop.select_values(cpts.data[\"strat\"].unique())\n", "units" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This returns a list of enum types for each unit. An enum contains a \"name\" with corresponding \"value\". Now, we can make a dictionary with both and replace the numbers with the names in the \"strat\" column. Let's print the result and plot the figure again:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 AAOP\n", "1 EC\n", "2 BXWISIKO\n", "3 BX\n", "4 DR\n", " ... \n", "73422 DR\n", "73423 UR\n", "73424 ST\n", "73425 PZWA\n", "73426 NaN\n", "Name: strat, Length: 53994, dtype: object\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAHdCAYAAADo9PitAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRw0lEQVR4nO3dd1yV5f8/8NdBZIiAC1BkuEBFkMwdDlwYttQ+ZpmaozQHSrjDgQNQy9KyVKzclqY5Gprm3mkqbhQHuEBTBAQZct6/P/xxvp5w4OHAfW54PR+PHnmuc3OfN3A453Wu+xoaEREQERERqZSZ0gUQERERFQTDDBEREakawwwRERGpGsMMERERqRrDDBEREakawwwRERGpGsMMERERqRrDDBEREamaudIFFDatVosbN27A1tYWGo1G6XKIiIgoH0QEqampcHZ2hpnZs/tein2YuXHjBlxdXZUug4iIiAxw9epVuLi4PPOYYh9mbG1tATz6YdjZ2SlcDREREeVHSkoKXF1dde/jz1Lsw0zupSU7OzuGGSIiIpXJzxARDgAmIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVK/YbTZYkGRkZiI+PN9r53NzcYGVlZbTzERERFQaGmWIkPj4eAwYMMNr5oqKi4OnpabTzERERFQaGmWLEzc0NUVFRzzwmLi4O4eHhCA0Nhbu7+3PPR0REZOoYZooRKyurfPekuLu7s9eFiIiKBQ4AJiIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVWOYISIiIlVjmCEiIiJVY5ghIiIiVTOZMBMZGQmNRoPg4GBdm4ggLCwMzs7OsLa2hr+/P06fPq1ckURERGRyTCLMHD58GFFRUahfv75e+8yZM/HFF19g7ty5OHz4MCpXrowOHTogNTVVoUqJiIjI1CgeZu7fv4/3338fCxcuRPny5XXtIoLZs2cjNDQUXbt2hbe3N5YsWYL09HSsXLlSwYqJiIjIlCgeZoYMGYLXXnsN7du312u/fPkyEhISEBAQoGuztLRE69atsX///qeeLzMzEykpKXr/ERERUfFlruSD//TTTzh69CgOHz6c576EhAQAgJOTk167k5MT4uLinnrOyMhITJ482biFEhERkclSrGfm6tWrGD58OJYvXw4rK6unHqfRaPRui0ietseNGzcOycnJuv+uXr1qtJqJiIjI9CjWM/PPP//g1q1baNiwoa4tJycHu3fvxty5cxETEwPgUQ9NlSpVdMfcunUrT2/N4ywtLWFpaVl4hRMREZFJUaxnpl27djh58iSOHz+u+69Ro0Z4//33cfz4cdSoUQOVK1fG1q1bdV+TlZWFXbt24ZVXXlGqbCIiIjIxivXM2NrawtvbW6/NxsYGFStW1LUHBwcjIiICHh4e8PDwQEREBMqUKYMePXooUTIRERGZIEUHAD/P6NGj8eDBAwwePBhJSUlo2rQptmzZAltbW6VLIyIiIhNhUmFm586derc1Gg3CwsIQFhamSD1ERERk+hRfZ4aIiIioIBhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIiISNXMlS6ASraMjAzEx8cb7Xxubm6wsrIy2vmIiMj0Mcw8Bd9ki0Z8fDwGDBhgtPNFRUXB09PTaOcjIiLTxzDzFHyTLRpubm6Iiop65jFxcXEIDw9HaGgo3N3dn3s+IiIqWRhmnoJvskXDysoq3yHP3d2dgZCIiPJgmHkKvskSERGpA2czERERkaoxzBAREZGqMcwQERGRqjHMEBERkaoxzBAREZGqMcwQERGRqjHMEBERkaoxzBAREZGqMcwQERGRqjHMEBERkaoxzBAREZGqMcwQERGRqjHMEBERkaoxzBAREZGqMcwQERGRqjHMEBERkaoxzBAREZGqMcwQERGRqjHMEBERkaoxzBAREZGqMcwQERGRqjHMEBERkaoxzBAREZGqmStdABERUUmQkZGB+Ph4o53Pzc0NVlZWRjufmjHMEBERFYH4+HgMGDDAaOeLioqCp6en0c6nZgwzRERERcDNzQ1RUVHPPCYuLg7h4eEIDQ2Fu7v7c89HjzDMEBERFQErK6t896S4u7uz1+UFcAAwERERqRrDDBEREakaLzMRERkJZ6sQKYNhhojISDhbhUgZioaZefPmYd68ebhy5QoAoF69epg4cSICAwMBACKCyZMnIyoqCklJSWjatCm++eYb1KtXT8GqiYiejLNViJShaJhxcXHB9OnTUatWLQDAkiVL8NZbb+HYsWOoV68eZs6ciS+++AKLFy+Gp6cnpk2bhg4dOiAmJga2trZKlk5ElAdnqxApQ9EBwG+88QY6deoET09PeHp6Ijw8HGXLlsXBgwchIpg9ezZCQ0PRtWtXeHt7Y8mSJUhPT8fKlSuVLJuIiIhMiMnMZsrJycFPP/2EtLQ0NG/eHJcvX0ZCQgICAgJ0x1haWqJ169bYv3//U8+TmZmJlJQUvf+IiIio+FJ8APDJkyfRvHlzZGRkoGzZsli3bh28vLx0gcXJyUnveCcnJ8TFxT31fJGRkZg8eXKh1kykNpxlQ0TFmeJhpnbt2jh+/Dju3buHtWvX4oMPPsCuXbt092s0Gr3jRSRP2+PGjRuHkJAQ3e2UlBS4uroav3AiFeEsGyIqzhQPMxYWFroBwI0aNcLhw4cxZ84cjBkzBgCQkJCAKlWq6I6/detWnt6ax1laWsLS0rJwi6YSTY29HJxlQ0TFmeJh5r9EBJmZmahevToqV66MrVu3okGDBgCArKws7Nq1CzNmzFC4SirJ1NjLwVk2RFScKRpmPv30UwQGBsLV1RWpqan46aefsHPnTmzevBkajQbBwcGIiIiAh4cHPDw8EBERgTJlyqBHjx5Klk0lHHs5iIhMi6JhJjExEb169cLNmzdhb2+P+vXrY/PmzejQoQMAYPTo0Xjw4AEGDx6sWzRvy5YtXGOGFMVeDiIi02JwmNmzZw8WLFiAixcvYs2aNahatSqWLVuG6tWro0WLFvk6x/fff//M+zUaDcLCwhAWFmZomURERFTMGbTOzNq1a9GxY0dYW1vj2LFjyMzMBACkpqYiIiLCqAUSERERPYtBYWbatGmYP38+Fi5ciNKlS+vaX3nlFRw9etRoxRERERE9j0FhJiYmBq1atcrTbmdnh3v37hW0JiIiIqJ8MyjMVKlSBbGxsXna9+7dixo1ahS4KCIiIqL8MijMDBw4EMOHD8ehQ4eg0Whw48YNrFixAiNHjsTgwYONXSMRERHRUxk0m2n06NFITk5GmzZtkJGRgVatWsHS0hIjR47E0KFDjV0jERER0VMZPDU7d0GwM2fOQKvVwsvLC2XLljVmbURERETPZVCYSU5ORk5ODipUqIBGjRrp2u/evQtzc3PY2dkZrUAiIiKiZzFozMy7776Ln376KU/76tWr8e677xa4KCIiIqL8MijMHDp0CG3atMnT7u/vj0OHDhW4KCIiIqL8MijMZGZm4uHDh3nas7Oz8eDBgwIXRURERJRfBoWZxo0bP3HX4Pnz56Nhw4YFLoqIiIgovwwaABweHo727dsjOjoa7dq1AwBs27YNhw8fxpYtW4xaIBEREdGzGNQz4+fnhwMHDsDV1RWrV6/Gr7/+ilq1auHEiRNo2bKlsWskIiIieiqD15l56aWXsGLFCmPWQkRERPTCDA4zWq0WsbGxuHXrFrRard59T9qEkoiIiNQlIyMD8fHxRjufm5sbrKysjHa+XAaFmYMHD6JHjx6Ii4uDiOjdp9FokJOTY5TiiIiISDnx8fEYMGCA0c4XFRUFT09Po50vl0Fh5uOPP0ajRo3w+++/o0qVKtBoNMaui4iIiBTm5ub2xNnLj4uLi9NtceTu7v7c8xUGg8LMhQsXsGbNGtSqVcvY9RAREZGJsLKyyndPiru7e6H0uuSHQbOZmjZtitjYWGPXQkRERPTCDOqZCQoKwogRI5CQkAAfHx+ULl1a7/769esbpTgiIiKi5zEozLz99tsAgH79+unaNBoNRIQDgImIiKhIGRRmLl++bOw6iIiIiAxiUJh53mhlIiIioqJi8KJ5AHDmzBnEx8cjKytLr/3NN98sUFFERERE+WVQmLl06RK6dOmCkydP6sbKANCtN8MxM0RERFRUDAozw4cPR/Xq1fHXX3+hRo0a+Pvvv3Hnzh2MGDECn3/+ubFrJKISSC3LqBOR8gwKMwcOHMD27dvh4OAAMzMzmJmZoUWLFoiMjMSwYcNw7NgxY9dJRCWMWpZRJyLlGRRmcnJyULZsWQBApUqVcOPGDdSuXRvu7u6IiYkxaoFEVDKpZRl1IlKeQWHG29sbJ06cQI0aNdC0aVPMnDkTFhYWiIqKQo0aNYxdIxGVQGpZRp2IlGdQmBk/fjzS0tIAANOmTcPrr7+Oli1bomLFivjpp5+MWiARERHRsxgUZjp27Kj7d40aNXDmzBncvXsX5cuX5w7aREREVKQM2miyX79+SE1N1WurUKEC0tPT9bY4ICIiIipsBoWZJUuW4MGDB3naHzx4gKVLlxa4KCIiIqL8eqHLTCkpKRARiAhSU1P11mzIycnBH3/8AUdHR6MXSURERPQ0LxRmypUrB41GA41G88SZAxqNBpMnTzZacURERETP80JhZseOHRARtG3bFmvXrkWFChV091lYWMDd3R3Ozs5GL5KIiIjoaV4ozLRu3RoAcPnyZbi5uXHmEhERESnOoAHAZ8+exb59+3S3v/nmG7z00kvo0aMHkpKSjFYcERER0fMYFGZGjRqFlJQUAMDJkycREhKCTp064dKlSwgJCTFqgURERETPYtCieZcvX4aXlxcAYO3atXjjjTcQERGBo0ePolOnTkYtkIiIiOhZDOqZsbCwQHp6OgDgr7/+QkBAAIBHC+fl9tgQERERFQWDemZatGiBkJAQ+Pn54e+//8aqVasAAOfPn4eLi4tRCyQiIiJ6FoN6ZubOnQtzc3OsWbMG8+bNQ9WqVQEAmzZtwquvvmrUAomIiIiexaCeGTc3N/z222952r/88ssCF0RERET0IvIdZlJSUmBnZ6f797PkHkdERERU2PIdZsqXL4+bN2/C0dFRt63Bf4kINBoNcnJyjFokERER0dPkO8xs375dt33Bjh07Cq0gIiIioheR7zCTu5XBf/9NREREpCSDZjNt3rwZe/fu1d3mdgZERESkFG5nQERERKrG7QyIiIhI1bidAREREakatzMgIiIiVeN2BkRERKRq3M6AiIiIVM2gnhkAuHjxIsaPH4/33nsPt27dAvBoyvbp06eNVhwRERHR8xgUZnbt2gUfHx8cOnQIv/zyC+7fvw8AOHHiBCZNmmTUAomIiIiexaAwM3bsWEybNg1bt26FhYWFrr1NmzY4cOCA0YojIiIieh6DwszJkyfRpUuXPO0ODg64c+dOgYsiIiIiyi+Dwky5cuVw8+bNPO3Hjh3TzWwiIiIiKgoGhZkePXpgzJgxSEhIgEajgVarxb59+zBy5Ej07t3b2DUSERERPZVBYSY8PBxubm6oWrUq7t+/Dy8vL7Rq1QqvvPIKxo8fb+waiYiIiJ7qhdeZERHcuHEDCxcuxNSpU3H06FFotVo0aNAAHh4ehVEjERER0VO9cM+MiMDDwwPXr19HjRo18L///Q/vvPOOQUEmMjISjRs3hq2tLRwdHdG5c2fExMTkebywsDA4OzvD2toa/v7+XMuGiIiIdF44zJiZmcHDw8Mos5Z27dqFIUOG4ODBg9i6dSsePnyIgIAApKWl6Y6ZOXMmvvjiC8ydOxeHDx9G5cqV0aFDB6Smphb48YmIiEj9DBozM3PmTIwaNQqnTp0q0INv3rwZffr0Qb169eDr64tFixYhPj4e//zzD4BHvTKzZ89GaGgounbtCm9vbyxZsgTp6elYuXJlgR6biIiIigeD9mbq2bMn0tPT4evrCwsLC1hbW+vdf/fuXYOKSU5OBgBUqFABAHD58mUkJCQgICBAd4ylpSVat26N/fv3Y+DAgXnOkZmZiczMTN3tlJQUg2ohIiIidTAozMyePdvIZTzqhQkJCUGLFi3g7e0NAEhISAAAODk56R3r5OSEuLi4J54nMjISkydPNnp9REREZJoMCjMffPBBvo6bPn06Pv74Y5QrV+65xw4dOhQnTpzA3r1789yn0Wj0botInrZc48aNQ0hIiO52SkoKXF1d81UvERERqY/Bu2bnR0RERL4uOQUFBWHjxo3YsWMHXFxcdO2VK1cG8H89NLlu3bqVp7cml6WlJezs7PT+IyIiouLLoJ6Z/BKR594fFBSEdevWYefOnahevbre/dWrV0flypWxdetWNGjQAACQlZWFXbt2YcaMGYVWNxlPYmKibiyUoXIvKT7t0uKLsLe3f2oQJiIidSrUMPM8Q4YMwcqVK7FhwwbY2trqemDs7e1hbW0NjUaD4OBgREREwMPDAx4eHoiIiECZMmXQo0cPJUunfEhMTETPXr2RnZX5/IPzITw8vMDnKG1hieXLljLQkEEYzolMk6JhZt68eQAAf39/vfZFixahT58+AIDRo0fjwYMHGDx4MJKSktC0aVNs2bIFtra2RVwtvajk5GRkZ2XiQY3W0FrZK10OzDKSgUu7kJyczDcAemEM50SmS9Ew87zLUMCjwb9hYWEICwsr/IKoUGit7KG1qaR0GUQFwnBOZLoUDTP0YtjFTaQ8hnMi01OoYaZly5Z5FtQjw7CLm4iI6MkMDjMXL17EokWLcPHiRcyZMweOjo7YvHkzXF1dUa9ePQDAH3/8YbRCSzp2cRMRET2ZQWFm165dCAwMhJ+fH3bv3o3w8HA4OjrixIkT+O6777BmzRpj10n/H7u4iYiI9BkUZsaOHYtp06YhJCREb1ZRmzZtMGfOHKMVR0REpAbGGNMIcFyjoQwKMydPnnzirtUODg64c+dOgYsiIiJSC2OPaQQ4rvFFGRRmypUrh5s3b+ZZsffYsWOoWrWqUQojIiJSA1Mb0wiUvHGNBoWZHj16YMyYMfj555+h0Wig1Wqxb98+jBw5Er179zZ2jURERCaPYxqVY9BGk+Hh4XBzc0PVqlVx//59eHl5oVWrVnjllVcwfvx4Y9dIRERE9FQG9cyULl0aK1aswJQpU3Ds2DFotVo0aNAAHh4exq6PiIiI6JkKtGhezZo1UbNmTWPVQkRERPTCDAozOTk5WLx4MbZt24Zbt25Bq9Xq3b99+3ajFEdERET0PAaFmeHDh2Px4sV47bXX4O3tDY1GY+y6iIiIiPLFoDDz008/YfXq1ejUqZOx6yEiIiJ6IQbNZrKwsECtWrWMXQsRERHRCzMozIwYMQJz5syBiBi7HiIiIqIXYtBlpr1792LHjh3YtGkT6tWrh9KlS+vd/8svvxilOCIiIqLnMXg7gy5duhi7FiIiIipCxtgg0xQ2xzQozCxatMiQLyMiIiITYewNMpXcHLNAi+bdvn0bMTEx0Gg08PT0hIODQ0FOR0QGKi6froio6JjaBpkF2RzToDCTlpaGoKAgLF26VLdgXqlSpdC7d298/fXXKFOmjCGnJSIDqPXTFQMYkWkoDhtkGhRmQkJCsGvXLvz666/w8/MD8GhQ8LBhwzBixAjMmzfPqEUS0dOp8dOVWgMYEZkmg8LM2rVrsWbNGvj7++vaOnXqBGtra7zzzjsMM0QKUNOnKzUGMN2xD+4VTVHPYSp1EJkCg8JMenr6E//gHR0dkZ6eXuCiiKhkUFMAy2V9ebfSJRDRfxgUZpo3b45JkyZh6dKlsLKyAgA8ePAAkydPRvPmzY1aIBGRKXlQvRW01uWULgNmD+4xWBH9fwaFmdmzZyMwMBAuLi7w9fWFRqPB8ePHYWlpiS1bthi7RiIik6G1Lqe63iSi4s6gMOPj44MLFy5g+fLlOHfuHEQE7777Lt5//31YW1sbu8ZCwZkURERExYNBYSYyMhJOTk746KOP9Np/+OEH3L59G2PGjDFKcYWFMymIiIiKD4PCzIIFC7By5co87fXq1cO7775r8mFGzTMpqPCx146ISF0MCjMJCQmoUqVKnnYHBwfcvHmzwEUVFTXOpKDCxV47IiL1MSjMuLq6Yt++fahevbpe+759++Ds7GyUwoiUwF47IiL1MSjMfPjhhwgODkZ2djbatm0LANi2bRtGjx6NESNGGLVAIiWw146ISD0MCjOjR4/G3bt3MXjwYGRlZQEArKysMGbMGIwbN86oBRIRERE9i0FhRqPRYMaMGZgwYQLOnj0La2treHh4wNLS0tj1ERERET2TQWEmV9myZdG4cWNj1UJERET0wgoUZojyw1Q2xDOVOoiIyLgYZqjQcf8YIiIqTAwzVOi4MR8RERUmhhkqdNyYj4iICpOZ0gUQERERFQTDDBEREakawwwRERGpGsfMEBERGYEpLf9gSrUUBYYZIiIiI+BsSeUwzBARERmBqSxDAbzYUhSm0otTkDoYZoiIiIxArctQFIceJYYZIiKiEsxUepQKsrApwwwREVEJptYepcdxajYRERGpGsMMERERqRrDDBEREakawwwRERGpGsMMERERqRrDDBEREakawwwRERGpGteZISLFFIdl1IlIeQwzRKQYNS6jbpaRrHQJAEynDiJTwDBDRIpR0zLq9vb2KG1hCVzaVURVPV9pC0vY29srXQaR4hhmiEgxalpG3cnJCcuXLUVycsF6ROLi4hAeHo7Q0FC4u7sX6Fz29vZwcnIq0DmIigOGGaJiwlTGfZhKHYXBycnJaOHB3d0dnp6eRjkXUUnHMENUTKhx/AkRkTEwzBAVE2oaf0JEZEwMM0TFhJrGnxARGRMXzSMiIiJVY5ghIiIiVVM0zOzevRtvvPEGnJ2dodFosH79er37RQRhYWFwdnaGtbU1/P39cfr0aWWKJSIiIpOk6JiZtLQ0+Pr6om/fvnj77bfz3D9z5kx88cUXWLx4MTw9PTFt2jR06NABMTExsLW1VaBiKilMZXqxqdRBRGTKFA0zgYGBCAwMfOJ9IoLZs2cjNDQUXbt2BQAsWbIETk5OWLlyJQYOHFiUpZoMU3lzM5U6Cgtn4xARqYfJzma6fPkyEhISEBAQoGuztLRE69atsX///qeGmczMTGRmZupup6SkPPUxTOUN+UXq4Jts0eA0ZyIi9TDZMJOQkAAAeVbbdHJyQlxc3FO/LjIyEpMnT87XY6jxTYJvskWD05yJ6EWZ0uafplRLUTDZMJNLo9Ho3RaRPG2PGzduHEJCQnS3U1JS4Orq+sRj1RgM+CZLRGRaTHETUqBkbURqsmGmcuXKAB710FSpUkXXfuvWrWfujWJpaQlLS8t8PQaDARERFZSxNiEFuBGpoUw2zFSvXh2VK1fG1q1b0aBBAwBAVlYWdu3ahRkzZihcHRER0f8x5iakADcifVGKhpn79+8jNjZWd/vy5cs4fvw4KlSoADc3NwQHByMiIgIeHh7w8PBAREQEypQpgx49eihYNREREZkSRcPMkSNH0KZNG93t3LEuH3zwARYvXozRo0fjwYMHGDx4MJKSktC0aVNs2bKFa8wQERGRjqJhxt/fHyLy1Ps1Gg3CwsIQFhZWdEWR0ZnKqHpTqYOIiIzLZMfMkPqZ4gj/kjS6n4iopGCYoUJjrBH+HN1PRETPwjBDhcqYI/w5up+IiJ5E0V2ziYiIiAqKPTNEREQlmKlMjihIHQwzREREJVBxmqTBMENERFQCFadJGgwzREREJVRxmaTBMENEiikO1+qJSHkMM0RU5IrTtXoiUh7DDFExYSq9C/mpozhdqyci5THMEKmcWns5isu1eiJSHsMMkcqxl4OISjqGGaJigL0cRFSScTsDIiIiUjWGGSIiIlI1hhkiIiJSNYYZIiIiUjWGGSIiIlI1hhkiIiJSNYYZIiIiUjWGGSIiIlI1hhkiIiJSNYYZIiIiUjWGGSIiIlI17s1E9ARmGQXbtNFYTKUOIiJTxjBD9Bh7e3uUtrAELu1SuhSd0haWsLe3V7oMIiKTxTBD9BgnJycsX7YUyckF6xGJi4tDeHg4QkND4e7uXqBz2dvbG21HbCKi4ohhhug/nJycjBYe3N3d4enpaZRzERHRk3EAMBEREakawwwRERGpGsMMERERqRrDDBEREakawwwRERGpGsMMERERqRrDDBEREakawwwRERGpGsMMERERqRrDDBEREakawwwRERGpGsMMERERqRrDDBEREakawwwRERGpmrnSBRARkXIyMjIQHx9vtPO5ubnBysrKaOd7EjXWTIWLYYaIqASLj4/HgAEDjHa+qKgoeHp6Gu18T6LGmqlwMcwQEZVgbm5uiIqKeuYxcXFxCA8PR2hoKNzd3Z97vsKmxpqpcDHMEBGVYFZWVvnulXB3dzeJHgw11kyFiwOAiYiISNUYZoiIiEjVGGaIiIhI1ThmhoiITEpiYiKSk5MLdI64uDi9/xeEvb09nJycCnweKjwMM0REZDISExPRs1dvZGdlGuV84eHhBT5HaQtLLF+2lIHGhDHMEBEVY2rr5UhOTkZ2ViYe1GgNrZV9gR+voMwykoFLu5CcnMwwY8IYZoiIiik193JoreyhtalU4MejkqFEhxmzjIJ9WjGWF6lDjTUTkTLYy0ElRYkMM/b29ihtYQlc2qV0KTqlLSxhb//0Fxs11kxEpoG9HFTclcgw4+TkhOXLlhrlOnJ+l8t+nuddR1ZjzUREREWhRIYZ4FE4MNYbcVEtl63GmomIiAobF80jIiIiVWOYISIiIlUrsZeZiIhKCrMH95QuAcCL1aHGmkk5DDNERMWc9eXdSpfwwtRYMymHl5mIiIope3t7mJe2ULoMPealLZ67DIXaaiblsWeGqATIyMhAfHz8M495kSXr3dzcYGVlZZTaqPA4OTlhxfJlqlrSQY01k/JUEWa+/fZbfPbZZ7h58ybq1auH2bNno2XLlkqXRaQa8fHxGDBgQL6Ozc+S9VFRUZzarxJqXNLheTXnJ5y/CIbzp1PLByGTDzOrVq1CcHAwvv32W/j5+WHBggUIDAzEmTNn4ObmpnR5VAKp5Y/7v48RFRVl1PMVNjX+nFlz0dSs1nDOn3Xh/aw1IiJGP6sRNW3aFC+//DLmzZuna6tbty46d+6MyMjI5359SkoK7O3tkZycDDs7O6PWdv78eQwYMEBVn1JNreb8/nHnt7u4KP64c3+GxmIqvwtTo8afM2sumprV2jPDn/WL/axf5P3bpHtmsrKy8M8//2Ds2LF67QEBAdi/f/8TvyYzMxOZmf+3Q2xKSopBj63GBK3GmtWS+h+nxl4ONVLjz5k1F03NVlZWqvwAwJ914THpnpkbN26gatWq2LdvH1555RVde0REBJYsWYKYmJg8XxMWFobJkyfnaX/Rnhk1Jmg11qzWT1hERFS4ik3PTC6NRqN3W0TytOUaN24cQkJCdLdTUlLg6ur6wo+pxgStxprVkvqJiMh0mXSYqVSpEkqVKoWEhAS99lu3bj11pLulpSUsLS0L/NhqfJNVY81EREQFZdKL5llYWKBhw4bYunWrXvvWrVv1LjsRERFRyWXSPTMAEBISgl69eqFRo0Zo3rw5oqKiEB8fj48//ljp0oiIiMgEmHyY6d69O+7cuYMpU6bg5s2b8Pb2xh9//FHgFR2JiIioeDDp2UzGUJjrzBAREVHheJH3b5MeM0NERET0PAwzREREpGoMM0RERKRqDDNERESkagwzREREpGoMM0RERKRqDDNERESkagwzREREpGoMM0RERKRqJr+dQUHlLnCckpKicCVERESUX7nv2/nZqKDYh5nU1FQAgKurq8KVEBER0YtKTU2Fvb39M48p9nszabVa3LhxA7a2ttBoNEY9d0pKClxdXXH16lXV7PvEmosGay4arLlosOaio8a6C6tmEUFqaiqcnZ1hZvbsUTHFvmfGzMwMLi4uhfoYdnZ2qnnS5WLNRYM1Fw3WXDRYc9FRY92FUfPzemRycQAwERERqRrDDBEREakaw0wBWFpaYtKkSbC0tFS6lHxjzUWDNRcN1lw0WHPRUWPdplBzsR8ATERERMUbe2aIiIhI1RhmiIiISNUYZoiIiEjVGGaIiIhI1RhmiIgUcPPmTVy5ckXpMoiKBYaZQqLVap952xRwIhuRMo4dO4Y6deogJiZG6VJKFL7mFV/FfjsDJVy8eBELFixAYmIiXF1dMWXKFJiZmUGr1T53f4nClpqaioyMDOTk5KBy5cqK1qIkETH6Xl3/lZSUhPLlyxfqY9D/KYrfqTFER0ejZcuWGDhwIDp27Kh0OSXGlStXsHbtWty/fx+BgYFo0qSJ0iUZVWJiInJycuDs7Kx0KcjKyoJGo4FWqy2ytWfYM2Nk0dHReOWVV3D27FkcPXoUCxYsQPv27SEiigeZmJgY9O3bFwMHDsTXX39tkr1FRSX3Ta+wfgb//vsvvLy8cOjQoUI5f1Ex9U+yycnJSEhIwI0bN1QRZM6dO4fWrVtjyJAhmDVrVrH6GzTl7+XkyZNo27YtTp06BXNzc/j4+ChdklEdPXoUTZo0wblz55QuBRcuXMCoUaPQu3dv7NixAw8fPiySx2WYMaJTp06hefPmGDx4MDZs2IADBw5g6tSpOHz4ML7//ntFazt58iRatGiBmjVrYvjw4breopIiLi4Oc+fORd++fREUFIQFCxboAmZhvGHn5OSgTJkyunObeigAgGvXrmH58uVYunQpDh8+DOBR6DPV2s+cOYM33ngD7dq1Q926dfHDDz8oXdIzRUdHo1mzZsjOzoalpSWysrJgZmaGnJwcpUsrkDt37iA1NVXv9cSUnjMXLlxA+/bt0b17d3z33XcIDQ2FtbW10mUZTXR0NFq1aoV33nkHbdu2VbSWkydPok2bNihVqhRatmyJjh07wty8iC4ACRnFrVu3pHbt2tKwYUO99oSEBKlatarMnz9focpErl+/LnXr1pURI0botWu1WoUqKlrR0dHi4uIi7dq1k/bt20uNGjWkbNmy0rBhQ7l69aqIiOTk5Bj9cevXry8TJ040+nkLQ3R0tFSrVk2aNGkilpaW8vLLL8uqVauULuupjh07JmXLlpWQkBBZvny59OvXT8zMzGTbtm1Kl/ZER48eFRsbGxkxYoSEh4dL06ZNZeTIkZKRkSEihfP8KwqxsbFSrlw5qVu3rqxfv16OHz+ud7/S31d2drYMHjxYunXrJvfv39e1F5fXvuPHj4u1tbV8+umneu2xsbGSmZlZpLVcvnxZXFxcZOTIkXrtRfUcKDkfzQuZRqOBn58fypQpg8jISF2X6507d3D37l1UqVJFsdqOHDkCGxsbDBw4UK8r+End8mJCn6iM4dKlSwgICEDPnj2xceNGbN26FSdOnMDs2bNx+/ZtdOzYUfepsqDfu1ar1TuHt7c3bt68WdBvodCdOHECzZs3x3vvvYe//voLmzZtwtWrV7F27Vq9XgNTeW6cPXsWTZs2xYQJEzBr1iy8//776N27NywsLLBp0ybdcbnPdaUvf9y8eRMtWrTAkCFD8Pnnn2P48OHo0KED9uzZg/Hjx+t6aJSu0xB3797FSy+9hObNm2PRokXo06cPxo0bh7NnzwKA4r2/IoL9+/fDw8MDNjY2uvb/XmZ+8OCBIvUVRExMDFq1aoWBAwciPDxc1x4WFobu3bsjNTW1SOrIfV1YtWoVXnrpJYwePVrv/qJ6DjDMGIGIoFKlSggPD8dLL72E9evXY968ebh27RpeffVV9O/fH2+++aZi9e3Zswd37tyBh4dHnidW7hMxLS0N169fV8W4gxexbNkyNG3aFOHh4brLPjY2NujVqxdmzZqFf//9F/369Svw4NHY2Fi0bdsWffv2xeLFi3Hw4EG4u7vj1KlTuH37tt6xImIyb1yxsbHw8/PD+++/j4iICNja2qJNmzaoVq0ajh49inv37umOzf35KBlqHj58iM8++wzZ2dno3r27rn3nzp3IzMxEbGwsli9fjr179+pqV/INNS4uDsuWLUNkZCRmzJgBrVYLGxsbjB07VhdoQkNDVRtonJ2dodFo8Nprr2H16tWYMmUK/vrrL4wZMwY9evRAbGws7t69q1h9t2/fRkpKClxdXQE8Gpj6uNznxty5c3Hq1Kkir68g1q9fj9TUVNSpUwdJSUkAgOnTp+Obb77BlClTULFixSKpI/d1Ye/evTAzM4ODg0OeY3Kf1/fv3y+8kFUk/T/F1ONdlVlZWSLy6JJOUFCQvPzyy2JtbS2DBg3SHVuUXa7nz5+Xv/76S0REpk6dKjVq1JDExER5+PDhE4+fNm2aTJgwocjqKyqvvfaa9OnTR0T+r7sz9/eWnp4ugwcPlqpVq8qdO3cK9DinT5+WDz/8UHr16iXe3t5Srlw5cXd3FysrK+nWrZt8/vnn8uuvv0pqaqruuWIKfvvtNylVqpSMGjVKLly4ICIikZGRotFoxNfXV1577TUZNGiQfPnll5KcnCxpaWmK1RoXFyciIhcvXpTAwEBxdXWVpKQk+eabb8TOzk7CwsIkNDRUevbsKba2ttKiRQt5++235eDBg4rUe+LECfH09JSuXbvK5s2bde25f4NpaWkyfvx43SWn3MsCSl+aeZ7r16/rPQ8WLVokNWvWlHPnzuna6tevLxqNRry8vKRLly7yww8/FNnzPj4+Xu9yV4sWLaRRo0a62/99DTxy5IgEBgZKbGxskdRnTCEhIVKtWjVZvHixTJgwQSpWrCh//vlnnuP+/fffQq1Dq9VK27ZtpUePHrrbTzJ27NhCuxTMMGOg8+fPS1BQkLRq1Up8fX2lW7ducuDAARERSUxMlODgYKlZs6aEh4frvuZpQcLYcscTfPPNNyIismXLFtFoNLJgwQLdMY8/2dLS0qRv377y/fffF0l9he3y5cty6dIlEXkUZtq2bZvnmNw3jOPHj4tGo5EjR44Y9FharTbPH25aWpokJCTIwoULRaPRyKBBg6R27dri4uIiLi4u4uTkJKNHjy7ya9pPs2zZMnF2dpZx48bJiBEjpEKFCvLzzz/LyZMnZd26dRISEiLOzs5SpUoVeeutt+Thw4dFPuYgIyNDmjRpIrVq1RKRR8Gmffv2UrZsWSlTpowcO3ZM7/iDBw/KggUL5OWXX9aFtKJ09uxZKV++vIwZM0auX7/+1OPS0tJkwoQJ4ufnJ4MGDTKZ58TTpKenS/Xq1aVfv366tps3b8qbb74pa9euFRGRvn37iqurq8TGxsqqVaukX79+Ur58eUlMTCz0+o4ePSq2tra6WkREFi5cKHZ2djJkyJAnfs3EiRPl1Vdflbt37xZ6fYVh6NChUqFCBSlTpoysWbNGRPQDcXh4uHz44Ye68VnGEhMTI7/99pvuOTt16lSxs7PTfYgW0X/Pu337tgQGBurdb0wMMwaIjo6WihUryrvvvitjx46VPn36iKenp5ibm8u3334rIo8G/gYFBUnTpk1lxowZRVbb8ePHpUyZMjJ27FhdW1ZWlvTr1080Go2sXLlS73itVisTJkyQunXryuXLl4uszsLy77//StWqVXUvZsHBwVKpUiXZs2eP7pjH34g3btwonp6eBn1yiYmJkSFDhkjnzp31fse5n0Dv3bsnTk5Osn37dklNTZXk5GTZsmWLzJ8/X06fPm3ot1hgaWlpcvv2bfnrr7/k2rVrIvLo51CpUiUpVaqU/PDDD3m+JiUlRRYuXKjYp1etVit79uwRLy8vady4sYiIXLlyRbp27SoVK1bUhdfs7Gy9F3IlejnS09Plf//7X543z6ysLLl69apeD4bIo99HSEiItG/fvkje8Atq5syZUqtWLfn99991bcHBwdK8eXPp1auXODs7y6FDh/S+JikpqdDrOn78uJQtW1ZGjx6t137nzh3p2bOnODo6Ss+ePeXu3buSmpoqp06dkuHDh0v58uXlxIkThV5fQd27d09Onz4tP/zwg2zdulViYmJ0940bN04qV64s33zzjdy+fVvXPnHiRNFoNHnCfkHlfgj8+uuvdW179uyRGjVqiL+/v97rba5JkybJyy+/LDdv3jRqLbkYZl7Q1atXpWbNmnphQUTk1KlT0rNnT7GwsJDVq1eLyKPu2ODgYPH09JQvvvii0GuLjo6WMmXK5BnZvm3bNlmxYoW89dZbYmZmJoMGDZIVK1bIt99+K7169ZLy5csb/cmulNu3b4ujo6McPXpURB71klWpUkVatmwp0dHRkp2dLSL/9yY3cuRIadeunSQnJ7/Q4xw/flwcHBykc+fO8u6770rp0qXls88+092fnZ0tqamp0rBhQ4mKijLSd1dwMTEx0rt3b6lTp45YWVmJra2t9OjRQ+Lj42Xv3r3i6OgowcHBcv78ed3XKH1ZLDd8arVaOXDggHh6euoFmg4dOoirq6suJOT+jpWSlZUlLVq00Huh37x5swQHB4udnZ1Ur15d2rVrl6d39NatW0qU+8JOnz4tzZs3l/79+0tKSoqIPAq7NWvWlCpVqijyWhIdHS3W1tYSGhqq154bqhISEnQ9GPb29lK5cmVp1KiReHt755mBZYrOnj0rr7/+uvj4+Ii9vb1oNBpp3LixzJkzR3dMUFCQVKtWTWbPni0ZGRkydepUsbKyMrjX+WmOHTv2xPcZEZGoqChxdHSU+vXry3fffSdxcXHy559/ysCBA6VcuXKF+rNmmHlBP/74ozRv3lyXfh//5Hf58mV54403xMHBQa5cuSIiIjdu3JAxY8YUeq9HfHy8VKpUSd555x299smTJ0u1atXk4sWLEhMTI1OmTJFKlSqJvb291K1bV7p166ZoL4ExabVaOX/+vFSuXFk35Vrk0RuJo6Oj+Pr6yldffSW3bt2SgwcPyrhx48TW1laio6Nf6HFyXzhz/5gfPnwoQ4cOleDgYHnw4IHesR988IF069ZNd5ySoqOjpUqVKvLxxx/L4sWL5ezZszJmzBipXr261K5dWy5evCibN2+WKlWqyLBhwxS5PPO4x0PU4+OdnhRoAgICpEaNGibxXE5OTpY6derIRx99JGfPnpWIiAipXbu2vP322zJnzhz5/vvvpVatWhISEiIiyj8vnufKlSuydetWvbbly5eLRqOR3377TUQehbGBAwfKq6++qjumqC5FXrhwQWxsbGTAgAF67ZMnT5bKlSvrXnvT0tIkJiZGvvrqK5k+fbr8+eefhdZLYEzHjx+XSpUqSVBQkPz111+SlJQkv/76q7Ru3VqcnJwkIiJCd+zw4cPF09NTWrVqJdbW1kYPMidOnBAbGxsZP368XvuKFSt0YXzlypXSrl07MTc3F1tbW6lVq5b4+/sXeu8Xw8wLGjFihPj6+j71/jVr1oilpaXs2rVL11YUL1aXL1+Wxo0by5tvvil79+4VkUcDOStVqqTXHSzy6FPKlStX5O7du3nefNUoMTFR94eUu+7Ff8Pj0aNHxdfXV8qUKSMajUbq1KkjTZs2feFPCrmhMTeg5Orevbv4+vpKnTp1JDAwUBYtWiQiItOnT5cGDRoY/L0ZS26v3bhx4/L0XKxatUp8fX2lSZMmcv/+fVm9erW4u7tL//795eLFi4rUe+XKFQkODtYLmo8HmoMHD0qdOnV0b55nzpwRPz8/8fb2lqysLMXXEdm2bZuYm5uLu7u72Nrayvz583XhMCsrSwICAuSDDz5QtMb8uHfvntjY2IhGo5GpU6fK2bNndb+Hnj17So0aNXR/a9HR0WJpaSlLly4t0ho3bdokGo1GRo4cqfsZT58+XRwcHOSPP/4QEdMfVP00J06cEGtr6yeuV3XixAnp2rWruLm5ybp163TtQ4YMkfLlyxu9F+TatWui0Wh0g3xzTZ8+XTQajfz999+6tlu3bsmxY8dk3bp1cvbs2SIZj8Qw84JmzZol9vb2umv0uR5/8bS2tlZkMO358+fl1VdflTfffFM++ugjcXBw0I1sf7w+U/j0agxarVbu378vDg4O0rt3b0lKSpIrV66Ig4ODxMXF5XkBe/DggZw9e1Z+//13iYmJMWiczNNCY5kyZWTKlCny3XffSd26daVWrVpy8eJF2bhxo3h5ecndu3cVe4N9UgDTarV6oSYqKkpsbGx0l8Tmz58vXl5ekpCQUOT1ijx6oa5evbp8/PHHcurUKV177u80KytLNmzYIHXq1NH1DkRHR0t8fLwi9T5JfHy8HDlyRG8Mg8ij76Fbt24yfvz4Jw4gNzVjxoyROnXqiLe3t/Tr10/CwsIkOztbTp48KY0aNZJJkyZJamqqiIi89dZb0rlz5yL5kHTr1i05fPiw3LhxQ/7880+pWrWqfPrppzJy5EipWLGibNmyJc/XKN3b+CISEhKkRo0a4ufnp2t7+PCh3uvakSNHpHLlyrpZs7n++5wzFh8fH/Hy8tK99s2YMUMqVaqk+1krGRoZZvLh8RebDRs2SJkyZWTatGly7949vfsfPnwoZ86cEW9vb72UWpRiYmKkQ4cOYm1tLZ9//rmuvtwax48fLy4uLpKUlGTyL6L5ldsbNmjQIPnll1+kZs2acuXKFbl3757cuXNHbt26JTdv3tQN+nvR8TH/9Xho/PDDD8XR0VFvOmRcXJxoNBr5/vvv5fr167pLjkp5PID9d2De48+BVq1aSefOnXW3C/pzKqhjx47Jyy+/LB9++OETA01qaqq4ubkV6QD7gsrMzJTx48eLs7Oz3rgkU5R7mW/Pnj0SFBQk3333nSxcuFA6deokvr6+curUKd1SBLk9eKtXry6SQeKnT58WPz8/6dChg3Tp0kVERJYsWSKOjo5SunRpXc+oyP89xydNmiSdOnXSjfMxdVeuXJF33nlHWrVqJXPnztW15z7/c3v8R40aJXXr1pX09PRCGd+m1Wr1Ztk1adJE6tatK4MGDZKKFSs+car1wYMHde+PRYVh5hnS09N1/378Rb979+5iY2Mjc+fOzTNoLzQ0VHx8fBS9FhsbGysBAQESGBgou3fv1rVPmDChUAaEKeHKlSty7NgxXe/Cxo0bxczMTJo0aSLm5uZiZWUlLi4u4urqKnZ2dlKhQgVxdnaWatWqGWXGyNNCY1ZWlly7dk3q169vUtsB5Aawjh07PnVml7+/v14XsimE3aNHj+oCzeM9itnZ2ZKeni6vvfaa/PjjjyJiGvU+y7Jly2TYsGHi5OSkG6Buii5fvpzndS131l6uXr16Sfv27WXs2LGi0Wike/fuRVbfqVOnpFy5cvLpp59KXFycXg/jmjVrpHLlyhISEqI322fixIliZmYm//zzT5HVaaiYmBhdnbGxsdK/f39p1qzZEwONyKNxef7+/oVWy9ChQ6VLly56Y3NatmwpGo1GvvzyyzxfM3bsWPHy8iryAe0MM09x5swZadWqlQwdOlTu3Lmjt69HZmamdOrUSSwsLKRz586ybt06WbRokQQFBYmtra1JvFA9/uZ19OhRmTFjRrEJMiIizZo1E3d3dzly5IjuxeyPP/4QMzMz8fLykq+//lr++OMP2bZtm6xbt05+//132bVrl1E/NT4rNFavXt2kLnmI6D8ncruJRR69MF69elUCAwNl8eLFImJawSA30PTt21f3t5WZmSkTJ04Ud3d3xXu+8uPcuXPi7+8vXbp0kTNnzihdzlOlpqZKQECAlCpVSr7//nvdZRmtViu1atXSm26+YsUKGT16tGg0GrGwsCi0SxuPu3PnjrRo0UKCgoL02h8PNMuWLZOqVavKsGHD5MaNGzJ16lSxtLRURZDJzs6WTp06ydChQ3VtFy9efGKgefjwody9e1e6d+8u06dPFxHj/t0+acbm44HGz89PatasKbt379aFq9wPzEpcmWCYeQKtVivTp08XX19fadGihbRo0UL69Okje/bs0XuyjBw5Unx8fKRUqVLi5eUlnTt3lpMnTypYub7z58/L66+/rut6LS5BRuTRzARvb2956aWX5PDhw7oXs02bNomZ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qlUr2bRpk4g8unwUEREhkydPllOnTuXZqdzX11c2b96sVMlEqhAdHS3VqlWT+vXri62trdjZ2ck333yjd0yzZs1kypQputsTJ04Ua2tr3VhBU/P467GpvzbnDrb+9NNP5cqVK7Jjxw5xc3N74nYAu3fvFk9PzyJZiDC/TH3CQIkPMyKPFr97//33dYNJu3fvLnXq1JG+fftKu3btpFSpUmJubq6qTcrUKHdBsV27dkmbNm3k9ddf1wUakScPevv000/F29tbN+OMiPLK3TV9zJgxcvfuXTl48KD06tUrzxiTNm3ayIABA0REFF8ErTg5d+6c2NjYSGhoqF57o0aNJDIyUoYPHy5//fWXLrykpqZK2bJldWu5mApTnjDAMCMiP//8szRv3lwePnwo/fv3FycnJ136PHfunCxevLjY7DRtqhITE6Vq1aq6QWa7d++Wli1byhtvvCF//PFHnuNPnz4tI0eOLJSt7omKk6ctgrZ+/XopW7asHDx4UNfWr18/GTJkiERGRjLIGElOTo707dtXKlasKD/99JOuPSIiQszNzaVTp07i4+Mj5ubmMnPmTMnMzJSEhATx9/fXrTVDz8cw8/+1atVKzMzMxNnZmW+OCmnevLk0btxYt9DV3r17dYHm8ctICxculKZNm0rTpk1Vs7onkVKetmv6vn37pFy5cnr76EyfPl00Go2ULVtWd+mdCu7q1avy9ttvS6tWrWTDhg0SGRkplSpVkk2bNulmXvbu3VsqVqyo26AxNTVVyZJVp8SHmdzrrL///rt4enrKunXr9Nqp8OV2XW7YsEF8fHzk888/102N379/f55Ak5CQIOvXr5fr168rVjORmuQughYQECBnzpyRlJQUcXR0lJEjR+odt3jxYilfvrxJb4apVteuXZO33npLPDw8xNraWreKcmZmpoiILF26VDw8PHRrl/E96MWYKT2bSmkajQYA0LBhQ2i1Wvzzzz967VR4EhISoNVqUbp0aQBAQEAAateujR9//BG3bt0CADRv3hwzZszAvXv3MH/+fPz+++9wcnLCW2+9BWdnZyXLJ1INDw8PfPXVVyhVqhQGDRoEd3d39OjRA5999hkAICcnBwDwwQcf4OzZs6hbt66S5apeYmIiDhw4gN9++03XVrVqVXz77bfw9fVF7dq1cfv2bQCAhYUFAODw4cNwdnZGuXLlAPA9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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "replace_dict = {unit.value: unit.name for unit in units}\n", "cpts.data[\"strat\"].replace(replace_dict, inplace=True)\n", "print(cpts.data[\"strat\"])\n", "\n", "fig, ax = plt.subplots()\n", "sns.boxplot(ax=ax, data=cpts.data.df, x=\"strat\", y=\"cone_resistance\", showfliers=False)\n", "ax.tick_params(axis='x', rotation=45)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The x-axis in the plot now has some more meaningful abbreviations for geological units which can be found in the [stratigraphic nomenclature](https://www.dinoloket.nl/stratigrafische-nomenclator/boven-noordzee-groep). Most units belong to the \"Boven-Noordzee Groep\" (prefix \"NU\"). For example, the unit \"EC\" in the plot with the corresponding code can be found [here](https://www.dinoloket.nl/stratigrafische-nomenclator/formatie-van-echteld).\n", "\n", "The [`StratGeotop`](../api_reference/geotop_selection.rst) class can be used for all sorts of selections and groupings a user would like for further analyses." ] } ], "metadata": { "kernelspec": { "display_name": "default", "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.12.7" } }, "nbformat": 4, "nbformat_minor": 2 }