{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "inl5d-ASWTdu"
},
"source": [
"# Big Data seaborn Solution\n",
"## Big Data definition\n",
"\n",
"**Big Data** - files that are complicated to process using conventional computer or software.\n",
"\n",
"## Example\n",
"Table with more than 1,048,576 rows would be impossible to process in MS Excel. Python, R and MatLab are limited by RAM and memory.\n",
"\n",
"## Solution\n",
"Use specialized environment as Metacentrum computers, specialized servers (Mazlík) or Google Collab!"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "n-TTp50DX_h7"
},
"source": [
"# Practical example\n",
"\n",
"## MICROSTRUCTURE OF INFANT FORMULA RELATED TO ITS FUNCTION in 2D\n",
"\n",
"* Infant formula \n",
" * pH 7\n",
" * drag5 (Far-Red)\n",
" * processed using starDist \n",
" * 660 000 rows. 35 columns of data (350+ MB csv file)\n",
" * Dataset/Results_aptamil.csv\n",
"\n",
"* Human milk (pH 7)\n",
" * pH 7\n",
" * drag5 (Far-Red)\n",
" * processed using starDist\n",
" * 1 650 000 rows. 35 columns of data (150+ MB csv file)\n",
" * Dataset/Results_MM.csv\n",
"\n",
"## Goal\n",
"\n",
"\n",
"1. Load both data sets\n",
"2. Clear NaN values\n",
"3. Visualize Area distribution\n",
"4. Decide statistical distribution (parametric/nonparametric)\n",
"5. Define statistic hypothesis\n",
"6. Compare Area distributions\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ay3rZRl1nEqx"
},
"source": [
"## Expected results from 3D measurements\n",
"\n",
""
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"!pip install -q -r requirements.txt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"executionInfo": {
"elapsed": 1591,
"status": "ok",
"timestamp": 1669202735385,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "LjIAEuPbG-Js"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"executionInfo": {
"elapsed": 23080,
"status": "ok",
"timestamp": 1669202820272,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "F1aOBUj0HIwA"
},
"outputs": [],
"source": [
"data1Path = \"Dataset/Results_MM.csv\" #@param {type:\"string\"}\n",
"\n",
"data1=pd.read_csv(data1Path) "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 236
},
"executionInfo": {
"elapsed": 16,
"status": "ok",
"timestamp": 1669202820277,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "jkJuJNFQJMr3",
"outputId": "54228aaf-8dc1-451f-af86-0807f911a03f"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" Label | \n",
" Area | \n",
" Mean | \n",
" StdDev | \n",
" Mode | \n",
" Min | \n",
" Max | \n",
" X | \n",
" Y | \n",
" ... | \n",
" %Area | \n",
" RawIntDen | \n",
" Slice | \n",
" FeretX | \n",
" FeretY | \n",
" FeretAngle | \n",
" MinFeret | \n",
" AR | \n",
" Round | \n",
" Solidity | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" Data1 | \n",
" 2541 | \n",
" 56.0 | \n",
" 0.0 | \n",
" 56 | \n",
" 56 | \n",
" 56 | \n",
" 598.54486 | \n",
" 170.83176 | \n",
" ... | \n",
" 100 | \n",
" 142296.0 | \n",
" 1 | \n",
" 593 | \n",
" 142 | \n",
" 98.53077 | \n",
" 55.75403 | \n",
" 1.06228 | \n",
" 0.94137 | \n",
" 0.97319 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" Data1 | \n",
" 2419 | \n",
" 96.0 | \n",
" 0.0 | \n",
" 96 | \n",
" 96 | \n",
" 96 | \n",
" 2718.95432 | \n",
" 624.50827 | \n",
" ... | \n",
" 100 | \n",
" 232224.0 | \n",
" 1 | \n",
" 2711 | \n",
" 653 | \n",
" 72.47443 | \n",
" 52.97387 | \n",
" 1.10986 | \n",
" 0.90102 | \n",
" 0.97032 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" Data1 | \n",
" 1855 | \n",
" 4.0 | \n",
" 0.0 | \n",
" 4 | \n",
" 4 | \n",
" 4 | \n",
" 237.42237 | \n",
" 661.82938 | \n",
" ... | \n",
" 100 | \n",
" 7420.0 | \n",
" 1 | \n",
" 224 | \n",
" 683 | \n",
" 56.30993 | \n",
" 48.00000 | \n",
" 1.03663 | \n",
" 0.96466 | \n",
" 0.96867 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" Data1 | \n",
" 2596 | \n",
" 65.0 | \n",
" 0.0 | \n",
" 65 | \n",
" 65 | \n",
" 65 | \n",
" 293.91371 | \n",
" 820.11710 | \n",
" ... | \n",
" 100 | \n",
" 168740.0 | \n",
" 1 | \n",
" 266 | \n",
" 807 | \n",
" 163.66396 | \n",
" 56.02472 | \n",
" 1.05496 | \n",
" 0.94790 | \n",
" 0.97320 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" Data1 | \n",
" 1409 | \n",
" 31.0 | \n",
" 0.0 | \n",
" 31 | \n",
" 31 | \n",
" 31 | \n",
" 2998.58375 | \n",
" 1046.93364 | \n",
" ... | \n",
" 100 | \n",
" 43679.0 | \n",
" 1 | \n",
" 2989 | \n",
" 1068 | \n",
" 68.42869 | \n",
" 39.00000 | \n",
" 1.15185 | \n",
" 0.86817 | \n",
" 0.96739 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 36 columns
\n",
"
"
],
"text/plain": [
" Label Area Mean StdDev Mode Min Max X Y ... \\\n",
"0 1 Data1 2541 56.0 0.0 56 56 56 598.54486 170.83176 ... \n",
"1 2 Data1 2419 96.0 0.0 96 96 96 2718.95432 624.50827 ... \n",
"2 3 Data1 1855 4.0 0.0 4 4 4 237.42237 661.82938 ... \n",
"3 4 Data1 2596 65.0 0.0 65 65 65 293.91371 820.11710 ... \n",
"4 5 Data1 1409 31.0 0.0 31 31 31 2998.58375 1046.93364 ... \n",
"\n",
" %Area RawIntDen Slice FeretX FeretY FeretAngle MinFeret AR \\\n",
"0 100 142296.0 1 593 142 98.53077 55.75403 1.06228 \n",
"1 100 232224.0 1 2711 653 72.47443 52.97387 1.10986 \n",
"2 100 7420.0 1 224 683 56.30993 48.00000 1.03663 \n",
"3 100 168740.0 1 266 807 163.66396 56.02472 1.05496 \n",
"4 100 43679.0 1 2989 1068 68.42869 39.00000 1.15185 \n",
"\n",
" Round Solidity \n",
"0 0.94137 0.97319 \n",
"1 0.90102 0.97032 \n",
"2 0.96466 0.96867 \n",
"3 0.94790 0.97320 \n",
"4 0.86817 0.96739 \n",
"\n",
"[5 rows x 36 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data1.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 364
},
"executionInfo": {
"elapsed": 2465,
"status": "ok",
"timestamp": 1669202822729,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "3_dyCfMCmHpw",
"outputId": "37dd2d1c-1df4-4879-c8c4-7efd4b5a1914"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\schatzm\\Anaconda3\\envs\\julab\\lib\\site-packages\\numpy\\lib\\function_base.py:4527: RuntimeWarning: invalid value encountered in subtract\n",
" diff_b_a = subtract(b, a)\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" Area | \n",
" Mean | \n",
" StdDev | \n",
" Mode | \n",
" Min | \n",
" Max | \n",
" X | \n",
" Y | \n",
" XM | \n",
" ... | \n",
" %Area | \n",
" RawIntDen | \n",
" Slice | \n",
" FeretX | \n",
" FeretY | \n",
" FeretAngle | \n",
" MinFeret | \n",
" AR | \n",
" Round | \n",
" Solidity | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" ... | \n",
" 1615323.0 | \n",
" 1.615323e+06 | \n",
" 1615323.0 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
" 1.615323e+06 | \n",
"
\n",
" \n",
" mean | \n",
" 8.076620e+05 | \n",
" 1.331084e+02 | \n",
" 6.671007e+03 | \n",
" 2.810688e+02 | \n",
" 6.488793e+03 | \n",
" 6.444779e+03 | \n",
" 7.109614e+03 | \n",
" 1.440901e+03 | \n",
" 1.394038e+03 | \n",
" 1.440899e+03 | \n",
" ... | \n",
" 100.0 | \n",
" 4.633171e+05 | \n",
" 1.0 | \n",
" 1.436129e+03 | \n",
" 1.392875e+03 | \n",
" 1.049987e+02 | \n",
" 1.030235e+01 | \n",
" 1.249056e+00 | \n",
" 8.442305e-01 | \n",
" 8.899525e-01 | \n",
"
\n",
" \n",
" std | \n",
" 4.663037e+05 | \n",
" 2.516350e+02 | \n",
" 6.086050e+03 | \n",
" 1.091096e+03 | \n",
" 6.101919e+03 | \n",
" 6.101029e+03 | \n",
" 6.399855e+03 | \n",
" 8.383394e+02 | \n",
" 8.243418e+02 | \n",
" 8.383402e+02 | \n",
" ... | \n",
" 0.0 | \n",
" 7.302585e+05 | \n",
" 0.0 | \n",
" 8.382947e+02 | \n",
" 8.243501e+02 | \n",
" 4.822601e+01 | \n",
" 6.097962e+00 | \n",
" 3.688458e-01 | \n",
" 1.536807e-01 | \n",
" 5.326279e-02 | \n",
"
\n",
" \n",
" min | \n",
" 1.000000e+00 | \n",
" 1.200000e+01 | \n",
" 1.000000e+00 | \n",
" 0.000000e+00 | \n",
" 1.000000e+00 | \n",
" 1.000000e+00 | \n",
" 1.000000e+00 | \n",
" 3.409090e+00 | \n",
" 3.166670e+00 | \n",
" 3.409090e+00 | \n",
" ... | \n",
" 100.0 | \n",
" 7.000000e+01 | \n",
" 1.0 | \n",
" 1.000000e+00 | \n",
" 1.000000e+00 | \n",
" 1.507440e+00 | \n",
" 3.000000e+00 | \n",
" 1.000000e+00 | \n",
" 1.111700e-01 | \n",
" 3.585100e-01 | \n",
"
\n",
" \n",
" 25% | \n",
" 4.038315e+05 | \n",
" 3.700000e+01 | \n",
" 1.956000e+03 | \n",
" 0.000000e+00 | \n",
" 1.768000e+03 | \n",
" 1.723000e+03 | \n",
" 2.069000e+03 | \n",
" 7.161416e+02 | \n",
" 6.896124e+02 | \n",
" 7.161596e+02 | \n",
" ... | \n",
" 100.0 | \n",
" 1.616980e+05 | \n",
" 1.0 | \n",
" 7.120000e+02 | \n",
" 6.880000e+02 | \n",
" 5.446232e+01 | \n",
" 7.000000e+00 | \n",
" 1.061510e+00 | \n",
" 8.218400e-01 | \n",
" 8.709700e-01 | \n",
"
\n",
" \n",
" 50% | \n",
" 8.076620e+05 | \n",
" 5.800000e+01 | \n",
" 4.868000e+03 | \n",
" 0.000000e+00 | \n",
" 4.595000e+03 | \n",
" 4.534000e+03 | \n",
" 5.249000e+03 | \n",
" 1.434662e+03 | \n",
" 1.368470e+03 | \n",
" 1.434676e+03 | \n",
" ... | \n",
" 100.0 | \n",
" 3.169700e+05 | \n",
" 1.0 | \n",
" 1.430000e+03 | \n",
" 1.367000e+03 | \n",
" 1.255377e+02 | \n",
" 8.000000e+00 | \n",
" 1.109590e+00 | \n",
" 9.012400e-01 | \n",
" 9.014100e-01 | \n",
"
\n",
" \n",
" 75% | \n",
" 1.211492e+06 | \n",
" 1.160000e+02 | \n",
" 9.709000e+03 | \n",
" 0.000000e+00 | \n",
" 9.492000e+03 | \n",
" 9.442000e+03 | \n",
" 1.045600e+04 | \n",
" 2.148138e+03 | \n",
" 2.046322e+03 | \n",
" 2.148138e+03 | \n",
" ... | \n",
" 100.0 | \n",
" 5.530990e+05 | \n",
" 1.0 | \n",
" 2.143000e+03 | \n",
" 2.045000e+03 | \n",
" 1.444623e+02 | \n",
" 1.100000e+01 | \n",
" 1.216780e+00 | \n",
" 9.420500e-01 | \n",
" 9.230800e-01 | \n",
"
\n",
" \n",
" max | \n",
" 1.615323e+06 | \n",
" 2.469600e+04 | \n",
" 3.233200e+04 | \n",
" 1.428012e+04 | \n",
" 3.233200e+04 | \n",
" 3.233200e+04 | \n",
" 3.233200e+04 | \n",
" 3.189167e+03 | \n",
" 3.226500e+03 | \n",
" 3.189167e+03 | \n",
" ... | \n",
" 100.0 | \n",
" 1.135496e+08 | \n",
" 1.0 | \n",
" 3.187000e+03 | \n",
" 3.228000e+03 | \n",
" 1.791449e+02 | \n",
" 1.612912e+02 | \n",
" 8.994840e+00 | \n",
" 1.000000e+00 | \n",
" 1.000000e+00 | \n",
"
\n",
" \n",
"
\n",
"
8 rows × 35 columns
\n",
"
"
],
"text/plain": [
" Area Mean StdDev Mode \\\n",
"count 1.615323e+06 1.615323e+06 1.615323e+06 1.615323e+06 1.615323e+06 \n",
"mean 8.076620e+05 1.331084e+02 6.671007e+03 2.810688e+02 6.488793e+03 \n",
"std 4.663037e+05 2.516350e+02 6.086050e+03 1.091096e+03 6.101919e+03 \n",
"min 1.000000e+00 1.200000e+01 1.000000e+00 0.000000e+00 1.000000e+00 \n",
"25% 4.038315e+05 3.700000e+01 1.956000e+03 0.000000e+00 1.768000e+03 \n",
"50% 8.076620e+05 5.800000e+01 4.868000e+03 0.000000e+00 4.595000e+03 \n",
"75% 1.211492e+06 1.160000e+02 9.709000e+03 0.000000e+00 9.492000e+03 \n",
"max 1.615323e+06 2.469600e+04 3.233200e+04 1.428012e+04 3.233200e+04 \n",
"\n",
" Min Max X Y XM \\\n",
"count 1.615323e+06 1.615323e+06 1.615323e+06 1.615323e+06 1.615323e+06 \n",
"mean 6.444779e+03 7.109614e+03 1.440901e+03 1.394038e+03 1.440899e+03 \n",
"std 6.101029e+03 6.399855e+03 8.383394e+02 8.243418e+02 8.383402e+02 \n",
"min 1.000000e+00 1.000000e+00 3.409090e+00 3.166670e+00 3.409090e+00 \n",
"25% 1.723000e+03 2.069000e+03 7.161416e+02 6.896124e+02 7.161596e+02 \n",
"50% 4.534000e+03 5.249000e+03 1.434662e+03 1.368470e+03 1.434676e+03 \n",
"75% 9.442000e+03 1.045600e+04 2.148138e+03 2.046322e+03 2.148138e+03 \n",
"max 3.233200e+04 3.233200e+04 3.189167e+03 3.226500e+03 3.189167e+03 \n",
"\n",
" ... %Area RawIntDen Slice FeretX FeretY \\\n",
"count ... 1615323.0 1.615323e+06 1615323.0 1.615323e+06 1.615323e+06 \n",
"mean ... 100.0 4.633171e+05 1.0 1.436129e+03 1.392875e+03 \n",
"std ... 0.0 7.302585e+05 0.0 8.382947e+02 8.243501e+02 \n",
"min ... 100.0 7.000000e+01 1.0 1.000000e+00 1.000000e+00 \n",
"25% ... 100.0 1.616980e+05 1.0 7.120000e+02 6.880000e+02 \n",
"50% ... 100.0 3.169700e+05 1.0 1.430000e+03 1.367000e+03 \n",
"75% ... 100.0 5.530990e+05 1.0 2.143000e+03 2.045000e+03 \n",
"max ... 100.0 1.135496e+08 1.0 3.187000e+03 3.228000e+03 \n",
"\n",
" FeretAngle MinFeret AR Round Solidity \n",
"count 1.615323e+06 1.615323e+06 1.615323e+06 1.615323e+06 1.615323e+06 \n",
"mean 1.049987e+02 1.030235e+01 1.249056e+00 8.442305e-01 8.899525e-01 \n",
"std 4.822601e+01 6.097962e+00 3.688458e-01 1.536807e-01 5.326279e-02 \n",
"min 1.507440e+00 3.000000e+00 1.000000e+00 1.111700e-01 3.585100e-01 \n",
"25% 5.446232e+01 7.000000e+00 1.061510e+00 8.218400e-01 8.709700e-01 \n",
"50% 1.255377e+02 8.000000e+00 1.109590e+00 9.012400e-01 9.014100e-01 \n",
"75% 1.444623e+02 1.100000e+01 1.216780e+00 9.420500e-01 9.230800e-01 \n",
"max 1.791449e+02 1.612912e+02 8.994840e+00 1.000000e+00 1.000000e+00 \n",
"\n",
"[8 rows x 35 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data1.describe()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"executionInfo": {
"elapsed": 4899,
"status": "ok",
"timestamp": 1669202827618,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "XTzOCJ84Ib98"
},
"outputs": [],
"source": [
"data2Path = \"Dataset/Results_aptamil.csv\" #@param {type:\"string\"}\n",
"\n",
"data2=pd.read_csv(data2Path) "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 236
},
"executionInfo": {
"elapsed": 13,
"status": "ok",
"timestamp": 1669202827618,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "14vh_AgwJNUH",
"outputId": "ab098b45-d535-447b-ba59-03d21714a83e"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" Label | \n",
" Area | \n",
" Mean | \n",
" StdDev | \n",
" Mode | \n",
" Min | \n",
" Max | \n",
" X | \n",
" Y | \n",
" ... | \n",
" %Area | \n",
" RawIntDen | \n",
" Slice | \n",
" FeretX | \n",
" FeretY | \n",
" FeretAngle | \n",
" MinFeret | \n",
" AR | \n",
" Round | \n",
" Solidity | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" Data2 | \n",
" 2776 | \n",
" 15.0 | \n",
" 0.0 | \n",
" 15 | \n",
" 15 | \n",
" 15 | \n",
" 2574.66967 | \n",
" 80.45245 | \n",
" ... | \n",
" 100 | \n",
" 41640.0 | \n",
" 1 | \n",
" 2510 | \n",
" 79 | \n",
" 0.84876 | \n",
" 29.09975 | \n",
" 4.99331 | \n",
" 0.20027 | \n",
" 0.94857 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" Data2 | \n",
" 2628 | \n",
" 14.0 | \n",
" 0.0 | \n",
" 14 | \n",
" 14 | \n",
" 14 | \n",
" 1015.16629 | \n",
" 128.37938 | \n",
" ... | \n",
" 100 | \n",
" 36792.0 | \n",
" 1 | \n",
" 1013 | \n",
" 92 | \n",
" 95.04245 | \n",
" 53.00000 | \n",
" 1.28544 | \n",
" 0.77795 | \n",
" 0.97010 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" Data2 | \n",
" 337 | \n",
" 13.0 | \n",
" 0.0 | \n",
" 13 | \n",
" 13 | \n",
" 13 | \n",
" 2602.27448 | \n",
" 103.22404 | \n",
" ... | \n",
" 100 | \n",
" 4381.0 | \n",
" 1 | \n",
" 2598 | \n",
" 93 | \n",
" 105.25512 | \n",
" 20.78831 | \n",
" 1.07470 | \n",
" 0.93050 | \n",
" 0.92837 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" Data2 | \n",
" 491 | \n",
" 16.0 | \n",
" 0.0 | \n",
" 16 | \n",
" 16 | \n",
" 16 | \n",
" 2038.76069 | \n",
" 290.29837 | \n",
" ... | \n",
" 100 | \n",
" 7856.0 | \n",
" 1 | \n",
" 2030 | \n",
" 280 | \n",
" 127.69424 | \n",
" 24.00000 | \n",
" 1.05842 | \n",
" 0.94480 | \n",
" 0.96464 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" Data2 | \n",
" 509 | \n",
" 5.0 | \n",
" 0.0 | \n",
" 5 | \n",
" 5 | \n",
" 5 | \n",
" 2717.95972 | \n",
" 401.13654 | \n",
" ... | \n",
" 100 | \n",
" 2545.0 | \n",
" 1 | \n",
" 2706 | \n",
" 408 | \n",
" 33.11134 | \n",
" 24.00000 | \n",
" 1.09402 | \n",
" 0.91406 | \n",
" 0.95140 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 36 columns
\n",
"
"
],
"text/plain": [
" Label Area Mean StdDev Mode Min Max X Y ... \\\n",
"0 1 Data2 2776 15.0 0.0 15 15 15 2574.66967 80.45245 ... \n",
"1 2 Data2 2628 14.0 0.0 14 14 14 1015.16629 128.37938 ... \n",
"2 3 Data2 337 13.0 0.0 13 13 13 2602.27448 103.22404 ... \n",
"3 4 Data2 491 16.0 0.0 16 16 16 2038.76069 290.29837 ... \n",
"4 5 Data2 509 5.0 0.0 5 5 5 2717.95972 401.13654 ... \n",
"\n",
" %Area RawIntDen Slice FeretX FeretY FeretAngle MinFeret AR \\\n",
"0 100 41640.0 1 2510 79 0.84876 29.09975 4.99331 \n",
"1 100 36792.0 1 1013 92 95.04245 53.00000 1.28544 \n",
"2 100 4381.0 1 2598 93 105.25512 20.78831 1.07470 \n",
"3 100 7856.0 1 2030 280 127.69424 24.00000 1.05842 \n",
"4 100 2545.0 1 2706 408 33.11134 24.00000 1.09402 \n",
"\n",
" Round Solidity \n",
"0 0.20027 0.94857 \n",
"1 0.77795 0.97010 \n",
"2 0.93050 0.92837 \n",
"3 0.94480 0.96464 \n",
"4 0.91406 0.95140 \n",
"\n",
"[5 rows x 36 columns]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data2.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 364
},
"executionInfo": {
"elapsed": 1849,
"status": "ok",
"timestamp": 1669202829457,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "lkRe2DKvmwsS",
"outputId": "7c5922bf-047b-4c08-bc93-9cbdc9f57a6f"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\schatzm\\Anaconda3\\envs\\julab\\lib\\site-packages\\numpy\\lib\\function_base.py:4527: RuntimeWarning: invalid value encountered in subtract\n",
" diff_b_a = subtract(b, a)\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" Area | \n",
" Mean | \n",
" StdDev | \n",
" Mode | \n",
" Min | \n",
" Max | \n",
" X | \n",
" Y | \n",
" XM | \n",
" ... | \n",
" %Area | \n",
" RawIntDen | \n",
" Slice | \n",
" FeretX | \n",
" FeretY | \n",
" FeretAngle | \n",
" MinFeret | \n",
" AR | \n",
" Round | \n",
" Solidity | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" ... | \n",
" 666214.0 | \n",
" 6.662140e+05 | \n",
" 666214.0 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
" 666214.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 333107.500000 | \n",
" 107.186941 | \n",
" 4778.728803 | \n",
" 107.668110 | \n",
" 4758.339600 | \n",
" 4671.752471 | \n",
" 4898.814561 | \n",
" 1462.707549 | \n",
" 1378.698306 | \n",
" 1462.708680 | \n",
" ... | \n",
" 100.0 | \n",
" 2.964580e+05 | \n",
" 1.0 | \n",
" 1458.731747 | \n",
" 1377.911724 | \n",
" 97.782395 | \n",
" 8.929439 | \n",
" 1.235981 | \n",
" 0.834769 | \n",
" 0.890030 | \n",
"
\n",
" \n",
" std | \n",
" 192319.560456 | \n",
" 303.942842 | \n",
" 4594.148721 | \n",
" 620.511333 | \n",
" 4627.082933 | \n",
" 4580.314488 | \n",
" 4698.678348 | \n",
" 820.313937 | \n",
" 786.322358 | \n",
" 820.315810 | \n",
" ... | \n",
" 0.0 | \n",
" 6.119494e+05 | \n",
" 0.0 | \n",
" 820.405865 | \n",
" 786.316653 | \n",
" 47.704262 | \n",
" 5.969685 | \n",
" 0.278721 | \n",
" 0.120508 | \n",
" 0.043218 | \n",
"
\n",
" \n",
" min | \n",
" 1.000000 | \n",
" 11.000000 | \n",
" 1.000000 | \n",
" 0.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 3.425930 | \n",
" 3.029410 | \n",
" 3.425930 | \n",
" ... | \n",
" 100.0 | \n",
" 2.900000e+01 | \n",
" 1.0 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 0.848760 | \n",
" 3.000000 | \n",
" 1.000000 | \n",
" 0.078880 | \n",
" 0.371820 | \n",
"
\n",
" \n",
" 25% | \n",
" 166554.250000 | \n",
" 31.000000 | \n",
" 873.000000 | \n",
" 0.000000 | \n",
" 848.000000 | \n",
" 830.000000 | \n",
" 882.000000 | \n",
" 765.134703 | \n",
" 708.711415 | \n",
" 765.137985 | \n",
" ... | \n",
" 100.0 | \n",
" 4.565525e+04 | \n",
" 1.0 | \n",
" 761.000000 | \n",
" 708.000000 | \n",
" 45.000000 | \n",
" 6.000000 | \n",
" 1.091640 | \n",
" 0.791510 | \n",
" 0.869570 | \n",
"
\n",
" \n",
" 50% | \n",
" 333107.500000 | \n",
" 46.000000 | \n",
" 3257.365065 | \n",
" 0.000000 | \n",
" 3173.000000 | \n",
" 3072.000000 | \n",
" 3337.000000 | \n",
" 1470.000000 | \n",
" 1378.719670 | \n",
" 1470.022270 | \n",
" ... | \n",
" 100.0 | \n",
" 1.744200e+05 | \n",
" 1.0 | \n",
" 1466.000000 | \n",
" 1378.000000 | \n",
" 116.565050 | \n",
" 7.000000 | \n",
" 1.158650 | \n",
" 0.863080 | \n",
" 0.894740 | \n",
"
\n",
" \n",
" 75% | \n",
" 499660.750000 | \n",
" 75.000000 | \n",
" 7718.000000 | \n",
" 0.000000 | \n",
" 7704.000000 | \n",
" 7545.000000 | \n",
" 7952.000000 | \n",
" 2163.673910 | \n",
" 2044.148023 | \n",
" 2163.689600 | \n",
" ... | \n",
" 100.0 | \n",
" 3.975745e+05 | \n",
" 1.0 | \n",
" 2160.000000 | \n",
" 2044.000000 | \n",
" 135.000000 | \n",
" 9.000000 | \n",
" 1.263408 | \n",
" 0.916050 | \n",
" 0.918600 | \n",
"
\n",
" \n",
" max | \n",
" 666214.000000 | \n",
" 58667.000000 | \n",
" 21305.000000 | \n",
" 10052.812470 | \n",
" 21305.000000 | \n",
" 21305.000000 | \n",
" 21305.000000 | \n",
" 3139.107140 | \n",
" 3086.326090 | \n",
" 3139.107140 | \n",
" ... | \n",
" 100.0 | \n",
" 2.731261e+08 | \n",
" 1.0 | \n",
" 3136.000000 | \n",
" 3089.000000 | \n",
" 179.292680 | \n",
" 359.467960 | \n",
" 12.677090 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
"
\n",
" \n",
"
\n",
"
8 rows × 35 columns
\n",
"
"
],
"text/plain": [
" Area Mean StdDev \\\n",
"count 666214.000000 666214.000000 666214.000000 666214.000000 \n",
"mean 333107.500000 107.186941 4778.728803 107.668110 \n",
"std 192319.560456 303.942842 4594.148721 620.511333 \n",
"min 1.000000 11.000000 1.000000 0.000000 \n",
"25% 166554.250000 31.000000 873.000000 0.000000 \n",
"50% 333107.500000 46.000000 3257.365065 0.000000 \n",
"75% 499660.750000 75.000000 7718.000000 0.000000 \n",
"max 666214.000000 58667.000000 21305.000000 10052.812470 \n",
"\n",
" Mode Min Max X \\\n",
"count 666214.000000 666214.000000 666214.000000 666214.000000 \n",
"mean 4758.339600 4671.752471 4898.814561 1462.707549 \n",
"std 4627.082933 4580.314488 4698.678348 820.313937 \n",
"min 1.000000 1.000000 1.000000 3.425930 \n",
"25% 848.000000 830.000000 882.000000 765.134703 \n",
"50% 3173.000000 3072.000000 3337.000000 1470.000000 \n",
"75% 7704.000000 7545.000000 7952.000000 2163.673910 \n",
"max 21305.000000 21305.000000 21305.000000 3139.107140 \n",
"\n",
" Y XM ... %Area RawIntDen Slice \\\n",
"count 666214.000000 666214.000000 ... 666214.0 6.662140e+05 666214.0 \n",
"mean 1378.698306 1462.708680 ... 100.0 2.964580e+05 1.0 \n",
"std 786.322358 820.315810 ... 0.0 6.119494e+05 0.0 \n",
"min 3.029410 3.425930 ... 100.0 2.900000e+01 1.0 \n",
"25% 708.711415 765.137985 ... 100.0 4.565525e+04 1.0 \n",
"50% 1378.719670 1470.022270 ... 100.0 1.744200e+05 1.0 \n",
"75% 2044.148023 2163.689600 ... 100.0 3.975745e+05 1.0 \n",
"max 3086.326090 3139.107140 ... 100.0 2.731261e+08 1.0 \n",
"\n",
" FeretX FeretY FeretAngle MinFeret \\\n",
"count 666214.000000 666214.000000 666214.000000 666214.000000 \n",
"mean 1458.731747 1377.911724 97.782395 8.929439 \n",
"std 820.405865 786.316653 47.704262 5.969685 \n",
"min 1.000000 1.000000 0.848760 3.000000 \n",
"25% 761.000000 708.000000 45.000000 6.000000 \n",
"50% 1466.000000 1378.000000 116.565050 7.000000 \n",
"75% 2160.000000 2044.000000 135.000000 9.000000 \n",
"max 3136.000000 3089.000000 179.292680 359.467960 \n",
"\n",
" AR Round Solidity \n",
"count 666214.000000 666214.000000 666214.000000 \n",
"mean 1.235981 0.834769 0.890030 \n",
"std 0.278721 0.120508 0.043218 \n",
"min 1.000000 0.078880 0.371820 \n",
"25% 1.091640 0.791510 0.869570 \n",
"50% 1.158650 0.863080 0.894740 \n",
"75% 1.263408 0.916050 0.918600 \n",
"max 12.677090 1.000000 1.000000 \n",
"\n",
"[8 rows x 35 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data2.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "uVAKRsN3I-JH"
},
"source": [
"use"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pIaMXH7tsD6y"
},
"source": [
"Select columns of interest"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"executionInfo": {
"elapsed": 852,
"status": "ok",
"timestamp": 1669202830300,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "BL2PoishI9pP",
"outputId": "19c8fc37-daa0-4a2f-e662-0b3a99c8e13b"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Label | \n",
" Area | \n",
" Feret | \n",
" AR | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" Data2 | \n",
" 2776 | \n",
" 135.01481 | \n",
" 4.99331 | \n",
"
\n",
" \n",
" 1 | \n",
" Data2 | \n",
" 2628 | \n",
" 68.26419 | \n",
" 1.28544 | \n",
"
\n",
" \n",
" 2 | \n",
" Data2 | \n",
" 337 | \n",
" 22.80351 | \n",
" 1.07470 | \n",
"
\n",
" \n",
" 3 | \n",
" Data2 | \n",
" 491 | \n",
" 27.80288 | \n",
" 1.05842 | \n",
"
\n",
" \n",
" 4 | \n",
" Data2 | \n",
" 509 | \n",
" 27.45906 | \n",
" 1.09402 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 666209 | \n",
" Data2 | \n",
" 1787 | \n",
" 62.64982 | \n",
" 1.59116 | \n",
"
\n",
" \n",
" 666210 | \n",
" Data2 | \n",
" 180 | \n",
" 18.78829 | \n",
" 1.38055 | \n",
"
\n",
" \n",
" 666211 | \n",
" Data2 | \n",
" 45 | \n",
" 8.94427 | \n",
" 1.16188 | \n",
"
\n",
" \n",
" 666212 | \n",
" Data2 | \n",
" 75 | \n",
" 12.36932 | \n",
" 1.28449 | \n",
"
\n",
" \n",
" 666213 | \n",
" Data2 | \n",
" 62 | \n",
" 15.52417 | \n",
" 2.93601 | \n",
"
\n",
" \n",
"
\n",
"
666214 rows × 4 columns
\n",
"
"
],
"text/plain": [
" Label Area Feret AR\n",
"0 Data2 2776 135.01481 4.99331\n",
"1 Data2 2628 68.26419 1.28544\n",
"2 Data2 337 22.80351 1.07470\n",
"3 Data2 491 27.80288 1.05842\n",
"4 Data2 509 27.45906 1.09402\n",
"... ... ... ... ...\n",
"666209 Data2 1787 62.64982 1.59116\n",
"666210 Data2 180 18.78829 1.38055\n",
"666211 Data2 45 8.94427 1.16188\n",
"666212 Data2 75 12.36932 1.28449\n",
"666213 Data2 62 15.52417 2.93601\n",
"\n",
"[666214 rows x 4 columns]"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d1Area = data1[['Label', 'Area','Feret','AR']]\n",
"d2Area = data2[['Label', 'Area','Feret','AR']]\n",
"\n",
"d1Area.dropna(how='all')\n",
"d2Area.dropna(how='all')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ZHONz0vKsAAw"
},
"source": [
"Rename Labels entry"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"executionInfo": {
"elapsed": 2,
"status": "ok",
"timestamp": 1669202832905,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "SIreZBeWsAe7"
},
"outputs": [],
"source": [
"d1Area = d1Area.replace({'Data1':'MM'})\n",
"d2Area = d2Area.replace({'Data2':'Aptamil'})"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 6,
"status": "ok",
"timestamp": 1669202834252,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "pH06ItUzRcy2",
"outputId": "17436b84-3af4-471c-c5a3-b56ea9fa59b4"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Label | \n",
" Area | \n",
" Feret | \n",
" AR | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" MM | \n",
" 2541 | \n",
" 60.67125 | \n",
" 1.06228 | \n",
"
\n",
" \n",
" 1 | \n",
" MM | \n",
" 2419 | \n",
" 59.77458 | \n",
" 1.10986 | \n",
"
\n",
" \n",
" 2 | \n",
" MM | \n",
" 1855 | \n",
" 50.47772 | \n",
" 1.03663 | \n",
"
\n",
" \n",
" 3 | \n",
" MM | \n",
" 2596 | \n",
" 60.44005 | \n",
" 1.05496 | \n",
"
\n",
" \n",
" 4 | \n",
" MM | \n",
" 1409 | \n",
" 46.23851 | \n",
" 1.15185 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Label Area Feret AR\n",
"0 MM 2541 60.67125 1.06228\n",
"1 MM 2419 59.77458 1.10986\n",
"2 MM 1855 50.47772 1.03663\n",
"3 MM 2596 60.44005 1.05496\n",
"4 MM 1409 46.23851 1.15185"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d1Area.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 3,
"status": "ok",
"timestamp": 1669202835402,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "EzzVvwvdf26p",
"outputId": "2df4712f-4067-41d1-a95b-270c08f1bfff"
},
"outputs": [
{
"data": {
"text/plain": [
"count 1.615323e+06\n",
"mean 1.331084e+02\n",
"std 2.516350e+02\n",
"min 1.200000e+01\n",
"25% 3.700000e+01\n",
"50% 5.800000e+01\n",
"75% 1.160000e+02\n",
"max 2.469600e+04\n",
"Name: Area, dtype: float64"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d1Area['Area'].describe() "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 3,
"status": "ok",
"timestamp": 1669202837501,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "S-UDEkvCN4ii",
"outputId": "09e0fbad-8ed2-4ac6-d4c4-7fd8e89b29f4"
},
"outputs": [
{
"data": {
"text/plain": [
"58.0"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_median = d1Area['Area'].median()\n",
"\n",
"# Take a look\n",
"df_median"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 5,
"status": "ok",
"timestamp": 1669202839022,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "TbU_0QMogDlD",
"outputId": "82308db4-46ed-4fd6-8e23-7ec9baba0c94"
},
"outputs": [
{
"data": {
"text/plain": [
"count 666214.000000\n",
"mean 107.186941\n",
"std 303.942842\n",
"min 11.000000\n",
"25% 31.000000\n",
"50% 46.000000\n",
"75% 75.000000\n",
"max 58667.000000\n",
"Name: Area, dtype: float64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d2Area['Area'].describe() "
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 4,
"status": "ok",
"timestamp": 1669202841776,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "8BXqQ4fqO6tD",
"outputId": "abbd5013-935b-46f0-88f5-deee7b98d2fa"
},
"outputs": [
{
"data": {
"text/plain": [
"46.0"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_median = d2Area['Area'].median()\n",
"\n",
"# Take a look\n",
"df_median"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"executionInfo": {
"elapsed": 2,
"status": "ok",
"timestamp": 1669202843961,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "_EERDAeZWcK4"
},
"outputs": [],
"source": [
"result = pd.concat([d1Area, d2Area])\n",
"\n",
"#del d1Area, d2Area"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 1346,
"status": "ok",
"timestamp": 1669202845786,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "KIRm1WzEXRTp",
"outputId": "265f1567-ffee-40ca-f54e-214f614ac3fc"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Label | \n",
" Area | \n",
" Feret | \n",
" AR | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" MM | \n",
" 2541 | \n",
" 60.67125 | \n",
" 1.06228 | \n",
"
\n",
" \n",
" 1 | \n",
" MM | \n",
" 2419 | \n",
" 59.77458 | \n",
" 1.10986 | \n",
"
\n",
" \n",
" 2 | \n",
" MM | \n",
" 1855 | \n",
" 50.47772 | \n",
" 1.03663 | \n",
"
\n",
" \n",
" 3 | \n",
" MM | \n",
" 2596 | \n",
" 60.44005 | \n",
" 1.05496 | \n",
"
\n",
" \n",
" 4 | \n",
" MM | \n",
" 1409 | \n",
" 46.23851 | \n",
" 1.15185 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Label Area Feret AR\n",
"0 MM 2541 60.67125 1.06228\n",
"1 MM 2419 59.77458 1.10986\n",
"2 MM 1855 50.47772 1.03663\n",
"3 MM 2596 60.44005 1.05496\n",
"4 MM 1409 46.23851 1.15185"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result.head()\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 382
},
"executionInfo": {
"elapsed": 155310,
"status": "ok",
"timestamp": 1669203452247,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "9bbf4oBiQSZy",
"outputId": "decdfcfe-b3e5-4f14-cad8-21d240a97d72"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\schatzm\\Anaconda3\\envs\\julab\\lib\\site-packages\\seaborn\\distributions.py:254: FutureWarning: In a future version, `df.iloc[:, i] = newvals` will attempt to set the values inplace instead of always setting a new array. To retain the old behavior, use either `df[df.columns[i]] = newvals` or, if columns are non-unique, `df.isetitem(i, newvals)`\n",
" baselines.iloc[:, cols] = (curves\n"
]
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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v369qZMEAAC/v6ioKEVFRd1Sjfj4eDVt2lQnTpy45fk0bdq00nxazE0FrDNnzsjX17fEPl9fX2VmZt7SpAAAACqzmwpYXl5eSklJKbEvKSlJnp6etzQpAACAyuymAtbf//53zZ8/XwsXLlR6erquXLmi9PR0vffee3rvvfd4DhYAAHeI1atXq2fPngoMDJS/v7/++te/6tNPPy02bvfu3erevbtatGihbt266ZNPPrHpz8vL09SpU9W+fXu1aNFCjzzySLExlclNvYvwiSeeUGpqqqKjo/XWW29Z2w3DUI8ePfT000+bNkEAAFAxxcTE6F//+peGDRumVq1a6fz583rvvfc0atQoBQUFycPDwzr2tdde07PPPqtmzZpp7dq1euGFF+To6KiIiAgZhqGhQ4dq9+7dGj58uBo3bqxNmzbphRdekMViUffu3ctvkTfpph/TMGnSJPXv31+7du3S+fPnZWdnp4iICDVu3NjsOSo/P19z5sxRQkKCzp07J19fX7344osKDAyUJO3bt0+TJk3S999/Lzc3Nz311FM2H+dTWFiod955R6tXr9Yvv/yi4OBgvfbaa7rnnnusY25UAwAA2Dp+/LgGDBigIUOGWNvuvvtu9ezZUykpKeratau1fdiwYRowYIAk6cEHH9TRo0c1d+5cRURE6L///a+2b9+uGTNmqEuXLpKksLAw5eTkKDo6Wt26dZO9/S09uvN3V6ZbhPv371evXr20ZMkSSVLjxo31xBNPqE+fPpo1a5ZGjBihI0eOmD7Jd999V6tXr9bEiROVkJCgRo0aaeDAgcrKytLZs2fVr18/eXl5KS4uTkOHDlV0dLTi4uKs18+dO1crV67UxIkTFRsbq8LCQg0cOFAWi0WSSlUDAADYGjt2rEaNGqULFy7o22+/1UcffaSYmBhJsv4bW6QoOBWJiIhQamqqLl26pB07dsjOzk7t27dXfn6+9Ss8PFynTp3SwYMHf7c1maXUcfDEiRN68skn5ezsrEaNGtn0OTg4aPTo0VqyZIn69OmjhIQEubu7mzbJzZs3q1u3bmrXrp2kq7/Q1atX69tvv9WRI0fk4OCgN954Q/b29mrcuLGOHTumBQsWqFevXrJYLFq8eLFGjRqlDh06SJJmzJihsLAwff755+rWrZtWrVp13RoAAKC4n376Sa+99pp27NghBwcH3X///fLx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t95667asmYAFAABum/z8fK1bt07h4eFydnbWH/7wB7Vr104JCQnWzzSWpHbt2um5557T/fffr6eeekqdO3fW+++/r+rVq1s/OaZOnTqqUaOGqlevrldffVVPPfWU7rnnHjVr1kxPPvmkzpw5Y3NOq1mzZhowYIDuueceRUZGKj8/X1FRUWrTpo38/Pz0l7/8RQcOHLgt6+YMFgAAuG3+85//6PTp0+ratau1rWvXrvryyy/16aefqnv37pKkNm3a2FwXFBSkrVu3llizWbNmqlOnjhYsWKDDhw/r2LFjSktLkyQVFBRYx3l5eVm/d3FxkSTdc8891jZnZ+ebekdjaRCwAADAbRMfHy9Jeu6554r1xcbGWgOWvb1tJCksLFS1aiXfaNu1a5cGDBigDh06qFWrVnrkkUeUk5OjoUOH2oxzcHAodu21apqNgAUAAG6L7Oxs/ec//1HPnj3Vr18/m76lS5cqLi7Oeovuu+++s+nfvXu3fH19JV199+SvLV68WG3atLEeeJeunreSyu9RFr9FwAIAALfFunXrlJ+fr0GDBun++++36XvmmWe0du1a62H3DRs2KCAgQA888IA2b96sTZs2ad68eZIkV1dXSdKBAwfk6+srT09Pbd68WcnJyfLw8FBiYqJmzZolSTaH3MsTAQsAgEqkpmM1Sb/vc7BuVnx8vP785z8XC1fS1fNRERERWrdunezt7dWjRw9t2rRJU6ZM0X333aeZM2eqffv2kqS6deuqV69emjp1qo4dO6bhw4fr9OnTeuaZZyRJTZo00eTJk/Xiiy/qu+++U+PGjW96zmaxMyrKXloVUvS8ji1btpTzTAAAVYlhGMVul1WF1w0PD1ePHj00bNiw2/Yavzce0wAAQCVRHuGqPF+3MiNgAQAAmIwzWAAAoFx98cUX5T0F07GDBQAAYDICFgAAgMkIWAAAACYjYAEAAJiMgAUAAGAyAhYAAIDJCFgAAAAmI2ABAACYjIAFAABgMgIWAACAyQhYAAAAJiNgAQAAmIyABQAAYDICFgAAgMkIWAAAACYjYAEAAJis0gSshIQEdenSRX5+furatas+/fRTa9+JEyc0ePBgtWzZUu3atdPMmTNVUFBgc31MTIw6duwof39/9enTR6mpqTb9pakBAABQGpUiYH300Ud65ZVX1LdvX23YsEHdunXTiBEj9M033+jK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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.set_theme(style=\"ticks\", palette=\"pastel\") \n",
"sns.displot(result[result.index.duplicated()], x=\"Area\", hue=\"Label\" , multiple=\"stack\")"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 528
},
"executionInfo": {
"elapsed": 2720,
"status": "ok",
"timestamp": 1669204627122,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "_DUixvzaPjmN",
"outputId": "78b48092-8a17-4c98-8536-c75bb1f97044"
},
"outputs": [],
"source": [
"sns.set_theme(style=\"ticks\", palette=\"pastel\")\n",
"fig = matplotlib.pyplot.gcf()\n",
"fig.set_size_inches(12, 8)\n",
"\n",
"# Load the example tips dataset\n",
"tips = sns.load_dataset(\"tips\")\n",
"\n",
"# Draw a nested boxplot to show bills by day and time\n",
"ax = sns.boxplot(x=\"Area\", y=\"Label\",\n",
" hue=\"Label\", palette=[\"m\", \"g\"],\n",
" data=result, \n",
" showfliers = False) #get rid of outliers\n",
" # data=result[np.mod(np.arange(result.index.size),3)!=0])\n",
"ax.set(xlabel='Area', ylabel='Label', title=\"Milk Area\")\n",
"\n",
"# Improve the legend\n",
"sns.move_legend(\n",
" ax, loc=\"lower right\", ncol=3, frameon=True, columnspacing=1, handletextpad=0\n",
")\n",
"\n",
"sns.despine(offset=10, trim=True)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 543,
"status": "ok",
"timestamp": 1669204789432,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "B6CBSzEPs0dC",
"outputId": "873039ea-0634-46e0-9742-4cf4b38d9ca9"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"p = 0\n",
"null hypothesis: Data1 (MM) comes from a normal distribution\n",
"The null hypothesis can be rejected\n",
"p = 0\n",
"null hypothesis: Data2 (Aptamil) from a normal distribution\n",
"The null hypothesis can be rejected\n"
]
}
],
"source": [
"from scipy.stats import normaltest\n",
"\n",
"k2, p = normaltest(d1Area['Area'])\n",
"alpha = 1e-3\n",
"print(\"p = {:g}\".format(p))\n",
"print('null hypothesis: Data1 (MM) comes from a normal distribution')\n",
"if p < alpha: # null hypothesis: Data1 (MM) comes from a normal distribution\n",
" print(\"The null hypothesis can be rejected\")\n",
"else:\n",
" print(\"The null hypothesis cannot be rejected\")\n",
"\n",
"k2, p = normaltest(d2Area['Area'])\n",
"alpha = 1e-3\n",
"print(\"p = {:g}\".format(p))\n",
"print('null hypothesis: Data2 (Aptamil) from a normal distribution')\n",
"if p < alpha: # null hypothesis: Data2 (Aptamil) from a normal distribution\n",
" print(\"The null hypothesis can be rejected\")\n",
"else:\n",
" print(\"The null hypothesis cannot be rejected\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "e43whHStuq_M"
},
"source": [
"Selecting non parametric test, and testing:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 9,
"status": "ok",
"timestamp": 1669204793360,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "YZwHKnkHgGXb",
"outputId": "6ac7fc9d-2755-436e-eec8-5702fa55db17"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"null hypothesis: data sets are from the same distribution\n",
"Statistics=6272.500, p=0.0018810635846991\n",
"Different distribution (reject H0)\n"
]
}
],
"source": [
"# Mann-Whitney U test\n",
"from numpy.random import seed\n",
"from numpy.random import randn\n",
"from scipy.stats import mannwhitneyu\n",
"# import random \n",
"from random import sample \n",
"data1=d1Area['Area'].sample(n=100, random_state=1)\n",
"data2=d2Area['Area'].sample(n=100, random_state=1)\n",
"print('null hypothesis: data sets are from the same distribution')\n",
"# compare samples\n",
"stat, p = mannwhitneyu(data1, data2)\n",
"print('Statistics=%.3f, p=%.16f' % (stat, p))\n",
"# interpret\n",
"alpha = 0.05\n",
"if p > alpha:\n",
"\tprint('Same distribution (fail to reject H0)')\n",
"else:\n",
"\tprint('Different distribution (reject H0)')"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 5,
"status": "ok",
"timestamp": 1669204842639,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "L_Djt50nXEA6",
"outputId": "bef1b030-7b13-40fc-d673-729de4eac569"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.0018810635846990642]\n"
]
}
],
"source": [
"# pvalues with scipy:\n",
"stat_results = [\n",
" mannwhitneyu(data1, data2, alternative=\"two-sided\"),\n",
" # mannwhitneyu(flight, sound, alternative=\"two-sided\"),\n",
" # mannwhitneyu(robots, sound, alternative=\"two-sided\")\n",
"]\n",
"\n",
"pvalues = [result.pvalue for result in stat_results]\n",
"print(pvalues)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 443
},
"executionInfo": {
"elapsed": 2054,
"status": "ok",
"timestamp": 1669204996810,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "mJGj5nvZXKpc",
"outputId": "000ce20a-fd2f-4050-95e0-9365835c4604"
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"with sns.plotting_context(\"notebook\", font_scale=1.4):\n",
" # Create new plot\n",
" fig, ax = plt.subplots(1, 1, figsize=(12, 6))\n",
"\n",
" sns.boxplot(ax=ax, data=result, x='Label', y='Area', \n",
" showfliers = False,\n",
" # palette=subcat_palette,\n",
" # order=subcat_order\n",
" )\n",
" plt.title(\"Aptamil vs MM\", y=1.06)\n",
" # ax.set_ylabel(\"Goal ($)\")\n",
" # ax.set_xlabel(\"Project State\", labelpad=20)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"executionInfo": {
"elapsed": 4,
"status": "ok",
"timestamp": 1669205066379,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "dvu-ustiX1as"
},
"outputs": [],
"source": [
"from statannotations.Annotator import Annotator\n",
"\n",
"subcat_palette = sns.dark_palette(\"#8BF\", reverse=True, n_colors=5)\n",
"states_palette = sns.color_palette(\"YlGnBu\", n_colors=5)\n",
"\n",
"states_order = [\"Successful\", \"Failed\", \"Live\", \"Suspended\", \"Canceled\"]\n",
"subcat_order = ['MM', 'Aptamil']"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 563
},
"executionInfo": {
"elapsed": 3614,
"status": "ok",
"timestamp": 1669205215720,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "d9PHpDQaYAeP",
"outputId": "25342e3c-7501-43c2-e237-099b2d2ceaa1"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"p-value annotation legend:\n",
" ns: p <= 1.00e+00\n",
" *: 1.00e-02 < p <= 5.00e-02\n",
" **: 1.00e-03 < p <= 1.00e-02\n",
" ***: 1.00e-04 < p <= 1.00e-03\n",
" ****: p <= 1.00e-04\n",
"\n",
"MM vs. Aptamil: p=1.88e-03\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABBgAAALNCAYAAACFwtLPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+mUlEQVR4nO3de5iVdb3//9dwGBC2R1RgF5pgIqQCnvCE+EVKAd2p5c5KvFTKSMSyzCwPSR7SkkopUio1D0UlaLgVDPAA+lUK3ZXutkdQs0RERUSQAWb9/vDHfJvAE59hDvB4XBfXNd73vdZ6r8U9s5in932vqkqlUgkAAABAgVZNPQAAAADQ8gkMAAAAQDGBAQAAACgmMAAAAADFBAYAAACgmMAAAAAAFBMYAAAAgGICAwAAAFBMYAAAAACKCQwAwAY3fPjw9OzZM8cdd9zbbnPGGWekZ8+eOfvss+uW9ezZM+PGjUuSTJ48OT179szzzz+fJDn77LMzaNCg9Zrn/vvvT8+ePXPkkUeu1+0BgLUJDABAo2jVqlX+9Kc/ZcGCBWutW7ZsWe6+++61lv/617/Oscce2+CzTJo0KbvsskueeOKJPPTQQw1+/wCwKRIYAIBG0bt377Rr1y7Tpk1ba93dd9+dzTbbLJ07d663vG/fvunSpUuDzrFkyZLMmDEjJ598cnbaaadMnDixQe8fADZVAgMA0Cg6dOiQgQMHrjMw3HHHHTnssMPSpk2besv/+RSJd/PXv/41e++9dz7/+c+npqbmbbe77bbbsmrVqgwYMCD/8R//kTvvvDOLFy+ut83kyZPTu3fv/Pa3v82BBx6YfffdN0899VSSZMaMGTnmmGOy++6758ADD8xFF12UZcuW1bv9jBkz8pnPfCb9+vXLbrvtlsMPPzw33XTTe3oeANBSCQwAQKMZOnToWqdJLF26NLNmzcoRRxyx3vf79NNPZ8SIEenTp09+/OMfp7q6+m23nTRpUgYMGJBtt902Rx11VFauXJlbbrllre1Wr16da665JhdffHG+8Y1vpEePHrntttsyatSodO/ePT/+8Y9z2mmnZcqUKTn11FNTqVSSJPfcc09GjRqVj3zkIxk/fnzGjRuXbt265dvf/nb+/Oc/r/dzBIDmrs27bwIA0DAOOeSQbLbZZpk2bVpOPPHEJMn06dPTqVOn7LXXXut1n3/7299y4oknZtddd8348ePfMS48/vjj+Z//+Z9ceeWVSZJ///d/z3777Zdf//rXOemkk9bafuTIkTnkkEOSJJVKJZdffnkGDBiQyy+/vG6bD33oQznxxBNz77335pBDDslTTz2Vo48+Ouecc07dNv369Uv//v0zZ86c9OnTZ72eJwA0d45gAAAaTfv27TNo0KB6p0ncfvvtGTJkSKqqqt73/b3xxhs58cQT89JLL2XMmDFp167dO24/adKkbLHFFtl7772zZMmSLFmyJIcddljmz5+fBx98cK3te/XqVff1vHnzsmDBggwaNCirVq2q+7PPPvvk3/7t33L//fcnST73uc/l0ksvzRtvvJFHH300d9xxR66++uokecdTNwCgpXMEAwDQqIYMGZLTTjstCxYsSLt27fLAAw/ky1/+8nrd1+LFi9O9e/csWbIk3/ve997xeg0rV67MlClTsmTJkhxwwAFrrZ84cWL222+/ess6dOhQ77GSZMyYMRkzZsxat1+4cGGS5JVXXsm3vvWtzJgxI1VVVdlxxx2z9957J0ndaRQAsDESGACARnXwwQenY8eOmTZtWjp06JAPfvCD2W233dbrvrbaaqv87Gc/y5QpU3LBBRdkxowZGTx48Dq3vfvuu/Pqq6/mwgsvzI477lhv3a9+9avMmDEjL7/8cjp16rTO22+xxRZJkrPOOiv77rvvWuu33HLLJMmZZ56ZefPm5brrrku/fv1SXV2d5cuX5ze/+c16PUcAaCkEBgCgUVVXV2fw4MG588470759+wwbNmy976tjx47p2LFjPvWpT+XWW2/NmDFj0r9//2y++eZrbTtp0qR06dIlxx577FqnY7Rp0yZTp07NpEmTcsopp6zzsbp3755OnTrl+eefz4gRI+qWL1y4MGeddVaOO+647LDDDnnooYfyqU99Kv3796/bZtasWUmS2tra9X6uANDcuQYDANDohg4dmv/+7//OnDlzigLDGq1atcqYMWPyyiuv5Hvf+95a6xcuXJjZs2dn6NCh67zWw1577ZUddtghv/71r9/2NIbWrVvnjDPOyMSJE3PRRRfl/vvvz9SpUzNixIj89a9/zUc+8pEkyR577JHbbrstv/vd7zJnzpz85Cc/ydlnn52qqqosX768+LkCQHPlCAYAoNEdcMAB2WKLLdK1a9f06NGjQe5z1113zQknnJBrr702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nXZKkgwaNCif/OQn89BDD+WPf/xjOnfunFNOOSXHHntsnn/++Rx66KFJkhNOOCGnnXZaRo8enRkzZuTqq6/Ok08+mdWrV+fDH/5wzjjjjAwYMCDJW6c47LbbbnnppZcyc+bMdOzYMaNGjcouu+ySb3/723nmmWfSq1evXHrppfnQhz5U9zjXX399+vfv/67Pac1M6/LCCy+ka9euDfDKAQAAQNNrNoHh5ptvTocOHXLwwQfnzTffzJgxYzJx4sR84xvfqNtm/PjxGTlyZM4555zMmjUr559/fjp27JjDDjssv/3tb3Psscdm3LhxOfDAA/Poo49m9OjR+frXv55DDz00S5cuzdixY3PWWWfl3nvvrTsK4YYbbsgZZ5yRL33pS/nZz36Wiy66KN27d8+5556bDh065Etf+lLGjh2bcePGNejzbd26tcBAKpVKampqmnqMDW7NEUZVVVVNPAnro7q62t8dAADvqlkEhlWrVmXKlCkZNGhQ2rdvn/bt2+eggw7Krbfemq985Stp165dkuSggw7KaaedliTp3r17/vznP+cXv/hFhg4dmm222SZJsuWWW6Zjx45p3bp1zjvvvHzmM5+pe5wTTjghn//85/Pyyy/X/XLfq1evjBgxIkly/PHHZ+LEiRk+fHjdEQpDhgzJjBkz1ut5zZw5c/1eEDYZNTU1+frXv97UY8A7uuyyy+p+DgMAwNtpFoHh3nvvzaJFizJs2LC6ZcOGDcvdd9+dqVOn5qijjkqStU5L6NevX+6555513mevXr2y5ZZbZsKECZk3b16effbZPPbYY0mS1atX1223ww471H292WabJUm6detWt6x9+/br9YkWAAAAsClpFoFh8uTJSVJ3dMI/mzhxYl1gaNOm/ri1tbVp1Wrd16n8wx/+kBEjRuSQQw7JXnvtlSOPPDLLly/PqFGj6m3Xtm3btW77dvcJG9KHT9orrdpufPte7crVefLah5MkHz5pz7Rq27qJJ+K9qF1ZmyevfaipxwAAoAVp8sDw8ssv5957780xxxyTk046qd666667LpMmTcoTTzyRJHnkkUfqrX/44YfTu3fvJGuf233NNdekf//+9a6dcMMNNyRpnE+cgPerVdtWG/0v363att7onyMAAGyqmjwwTJkyJatWrcrnP//5dO/evd66kSNH5pZbbqn7yMrbb789ffr0yYEHHpgZM2Zk+vTpueqqq5IkHTp0SJI88cQT6d27d7p27ZoZM2Zk7ty56dKlS+bMmZMrrrgiSTaJi+oBAABAY2rywDB58uQccMABa8WF5K3rIwwePDhTpkxJmzZtcvTRR2f69Ol1Hxv5wx/+MAMHDkySbL311vnEJz6R7373u3n22Wdz+umnZ9GiRRk5cmSSZOedd84ll1ySr33ta3nkkUfSo0ePRn2eAAAAsDGrqrSQ8wUGDRqUo48+OqNHj27qUaDBrFixou5TJHqess9GefpA7crVeXzCH5NsvM9xY/TPf28+RQIAgPdi47uiHAAAANDoBAYAAACgWJNfg+G9uuuuu5p6BAAAAOBtOIIBAAAAKCYwAAAAAMUEBgAAAKCYwAAAAAAUExgAAACAYgIDAAAAUExgAAAAAIoJDAAAAEAxgQEAAAAoJjAAAAAAxQQGAAAAoJjAAAAAABQTGAAAAIBiAgMAAABQTGAAAAAAigkMAAAAQDGBAQAAACgmMAAAAADFBAYAAACgmMDABlGpVFKpVJp6DADgXXjPBqChCAw0uEqlkiuvvDJXXnmlf7AAQDPmPRuAhtSmqQdg41NTU5P58+fXfd2uXbsmnggAWBfv2QA0JEcwAAAAAMUEBgAAAKCYwAAAAAAUExgAAACAYgIDAAAAUExgAAAAAIoJDAAAAEAxgQEAAAAoJjAAAAAAxQQGAAAAoJjAAAAAABQTGAAAAIBiAgMAAABQTGAAAAAAigkMAAAAQDGBAQAAACgmMAAAAADFBAYAAACgmMAAAAAAFBMYAAAAgGICAwAAAFBMYAAAAACKCQwAAABAMYEBAAAAKCYwAAAAAMUEBgAAAKCYwAAAAAAUa9PUA7Bxq6mpaeoRmjWvDy2B/RQ2Xr6/AWhIAgMNrlKp1H193nnnNeEkLcs/v27Q1Hwfw6bH+xAApZwiAQAAABRzBAMNrqqqqu7rCy+8MNXV1U04TfNWU1NT93+H//l1g6bm+xg2Dd6HAGhIAgMbVHV1ddq1a9fUYwAFfB8DAPBeOEUCAAAAKCYwAAAAAMUEBgAAAKCYwAAAAAAUExgAAACAYgIDAAAAUExgAAAAAIoJDAAAAEAxgQEAAAAoJjAAAAAAxQQGAAAAoJjAAAAAABQTGAAAAIBiAgMAAABQTGAAAAAAigkMAAAAQDGBAQAAACgmMAAAAADFBAYAAACgmMAAAAAAFBMYAAAAgGICAwAAAFBMYAAAAACKCQwAAABAMYEBAAAAKCYwAAAAAMUEBgAAAKBYm6YegI1PdXV1dtppp7qvAYDmyXs2AA1JYKDBVVVV5fTTT6/7GgBonrxnA9CQBAY2CP9IAYCWwXs2AA3FNRgAAACAYgIDAAAAUMwpEgAAAE1k9erVWblyZVOPwSasbdu2ad26dYPcl8AAAADQyCqVShYsWJDFixc39SiQrbbaKl26dCm+Lo/AAAAA0MjWxIXtt98+HTp0cMFVmkSlUsmyZcuycOHCJEnXrl2L7k9gAAAAaESrV6+uiwudOnVq6nHYxG222WZJkoULF2b77bcvOl3CRR4BAAAa0ZprLnTo0KGJJ4G3rNkXS68HIjAAAAA0AadF0Fw01L4oMAAAAADFBAYAAACgmMAAAABAoxk+fHiGDx9edB+TJ09Oz5498/zzzxfP07Nnz4wbN674fhAYAAAAgAYgMAAAAADFBAYAAACald/+9rc55phj0rdv3+yxxx75+Mc/nqlTp6613cMPP5yjjjoqu+22W4444ojccccd9davWLEi3/3udzNw4MDstttuOfLII9fahobTpqkHAAAAgDVuuummXHTRRRk9enT22muvvPbaa/npT3+aM888M/369UuXLl3qtj3//PPzxS9+Mb169cott9ySM844I9XV1Rk8eHAqlUpGjRqVhx9+OKeffnp69OiR6dOn54wzzkhNTU2OOuqopnuSGymBAQAAgGbjb3/7W0aMGJFTTz21btkHPvCBHHPMMXnooYcybNiwuuWjR4/OiBEjkiQHH3xwnnnmmYwfPz6DBw/O//2//zezZ8/OD37wgwwdOjRJMmDAgCxfvjyXX355jjjiiLRp41fihuTVBAAAoNk4++yzkyRLlizJvHnz8uyzz2bOnDlJkpqamnrbrgkHawwePDjjxo3LG2+8kQceeCBVVVUZOHBgVq1aVbfNoEGDMmXKlDz55JPp1avXBn42mxaBAQAAgGbjueeey/nnn58HHnggbdu2Tffu3bPrrrsmSSqVSr1tt91223r/3alTp1QqlSxdujSLFy9OpVLJnnvuuc7HWbhwocDQwAQGAAAAmoXa2tqccsopadu2bW6++eb06tUrbdq0yVNPPZXf/e53a23/2muv1YsMixYtSuvWrbPllltm8803T4cOHXL99dev87F23HHHDfY8NlU+RQIAAIBm4dVXX838+fPzyU9+MrvvvnvdNRJmzZqV5K0A8c/uueeeuq9ra2szbdq09OnTJ+3bt8++++6bZcuWpVKpZPfdd6/788QTT+THP/5xvdMmaBiOYAAAAKBRLViwINddd91ay3fZZZd84AMfyE033ZQuXbpkiy22yOzZs+uOQli+fHm97X/4wx9m9erV6dq1a371q19l/vz5ufbaa5MkAwcOzD777JNTTz01p556anr06JG//OUvufLKKzNgwIBss802G/x5bmoEBgAAABrVc889l+985ztrLf/kJz+Z8ePH5+KLL87ZZ5+d6urq7LzzzvnJT36SSy65JHPnzs3w4cPrtv/Od76TSy+9NM8++2x22WWX/PSnP82+++6bJGnVqlUmTJiQK664IldffXVefvnldO7cOSeddFJGjRrVaM91U1JV+derZACNZsWKFfn617+eJOl5yj5p1bZ1E0/U8GpXrs7jE/6YZON9jhujf/57u+yyy9KuXbsmnggANh5vvvlm5s+fn5122int27dv6nGgwfZJ12AAAAAAigkMAAAAQDHXYIBmonZl7btv1ALVrly9zq9p3jbW/REAgA1HYIBm4slrH2rqETa4J699uKlHAAAANhCnSAAAAADFHMEATai6ujqXXXZZU4+xwa35sJqqqqomnoT1UV1d3dQjAADQAggM0ISqqqp8/B8AALBRcIoEAAAAUMwRDAAAAM1EbW1t3emlja2qqiqtWjXf/wfttWn+BAYAAIBmoLa2NhdcMCZLlrzWJI+/xRZb5oILvtUsf5Gura3Nt8Z8K6+/9nqTPP7mW26eMd8a0yxfm+ZEYAAAAGgGKpVKlix5LSce/e20atW6UR+7tnZ1rrvl/Bx66KH5xz/+kbPPPjsnnXTSWtudf/75+fWvf53TTjst++67b0444YS0bt069913X7bZZpt629bU1OSAAw7I66+/npkzZ+aDH/zges9XqVTy+muvp+cp+6SqVeNeOLxSW8njE/5Y7+iJpUuX5sADD0zHjh1z7733pm3btu/rPu++++5069YtO++8c0OPmyR5/vnnc+ihh+b6669P//79M3z48HzgAx/IpZdeukEebw35BQAAoBlp1ap1k/xZo23btrnzzjvXmmvVqlX5/e9/v9Yng7Vq1SrTp09fa/tZs2Zl6dKlDfraVLWqSlXrVo37Zx1B4/bbb0+nTp3y+uuvr/O5v5O///3vGTlyZF5++eWGelnW0rVr19x3333p16/fBnuMdREYAAAAqLP//vvnT3/6UxYsWFBv+YMPPpgOHTqka9eua20/bdq0te5n6tSp2XvvvTforE1l0qRJGTBgQPbbb79MnDjxfd22Ma4j0bp162y33XaN/nHjAgMAAAB19thjj/z7v//7WtHgjjvuyJAhQ9Y6gmHIkCH5wx/+kFdeeaVu2Ztvvpm77rorQ4cObZSZG9PTTz+dP//5zznwwAPzsY99LHPmzMn8+fPr1g8aNCjjx4/PiBEjsscee+SjH/1ofvvb3yb5f6cuJMkJJ5yQcePGJUlmzJiRY489Nn379s3uu++eY445JrNnz667z+HDh+eyyy7LmWeemX79+uWggw7Kr371qzz00EP5+Mc/nj59+uS4447LM888U/c4PXv2zJw5cxrpVXmLwAAAAEA9Q4YMqRcYampqMmPGjAwbNmytbffZZ59svfXWmTFjRt2yNdcY6NGjR6PM25huvvnmdOjQIQcffHA++tGPpm3btmsdxTB+/Pj069cvt956az772c/m/PPPzx133JGuXbvWxYZx48bl5JNPzqOPPprRo0dn2LBhue222/Kb3/wm22yzTc4666zU1NTU3ecNN9yQXr16ZcqUKTn00ENz0UUX5YILLsg3v/nN3HjjjVm4cGHGjh3bqK/FvxIYAAAAqGfIkCH505/+lBdffDFJcv/992ebbbZJ796919q2qqoqhx12WL0gMXXq1HXGiJZu1apVmTJlSgYNGpT27dtnq622ykEHHZRbb701K1asqNvuoIMOymmnnZbu3bvnxBNPzOGHH55f/OIXad26dd3FMLfccst07NgxrVu3znnnnZcTTzwx3bp1S69evXLCCSfklVdeqXedhl69emXEiBHp1q1bjj/++KxatSrDhw9P//79s/vuu2fIkCF54oknGv01+WcCAwAAAPXstttu6datW93FHu+44453DAZDhgzJnDlz8uqrr+aNN97IrFmzNsrTI+69994sWrSo3msxbNiwLF68OFOnTq1b1r9//3q369ev39v+8t+rV68ccsghmTBhQs4+++x8+tOfzpe+9KUkyerVq+u222GHHeq+3myzzZIk3bp1q1vWvn37rFy5suDZlfMxlQAAAKxlzWkSn/rUpzJz5sy6Q/vXZa+99kqnTp0yY8aMtG/fPrvssku6deuWf/zjH4048YY3efLkJMlpp5221rqJEyfmqKOOSpK0aVP/V+3a2tq0arXu/7//hz/8ISNGjMghhxySvfbaK0ceeWSWL1+eUaNG1dtuXR+F+Xb32VQEBgAAANYyZMiQTJgwIZMmTXrX6ymsOU3izjvvTHV19UZ59MLLL7+ce++9N8ccc0xOOumkeuuuu+66TJo0qe4ohUceeaTe+ocffrju9JJ/vUjmNddck/79+9dd8DF563oLSeN84kRDEhgAAACakdra1e++USM8Zq9evbLjjjtm7Nix+cIXvvCu9zFkyJCccMIJadu2bb71rW9tiDFTqa0kqd0g9/3Oj5ncdtttWbVqVT7/+c+ne/fu9bYZOXJkbrnllrqLPd5+++3p06dPDjzwwMyYMSPTp0/PVVddlSTp0KFDkuSJJ55I796907Vr18yYMSNz585Nly5dMmfOnFxxxRVJUu8ijy2BwAAAANAMVFVVZYsttsx1t5zfJI+/xRZbrrVsyJAh+clPfvKejkjo169ftt1223Tr1i2dO3du0Nmqqqqy+Zab5/EJf2zQ+32vNt9y89xyyy054IAD1ooLyVvXRxg8eHCmTJmSNm3a5Oijj8706dNz6aWX5kMf+lB++MMfZuDAgUmSrbfeOp/4xCfy3e9+N88++2xOP/30LFq0KCNHjkyS7Lzzzrnkkkvyta99LY888kiL+iSOqkpLO+YCAACgBXvzzTczf/787LTTTmnfvn29dbW1tU12WHxVVVWzO6f/n7WU12bQoEE5+uijM3r06A08VcN5p33y/XAEAwAAQDPRnH/Bb2pem+bP3xAAAABQzBEMAAAA0EDuuuuuph6hyTiCAQAAACgmMAAAADQB19unuWiofVFgAAAAaERt27ZNkixbtqyJJ4G3rNkX1+yb68s1GAAAABpR69ats9VWW2XhwoVJkg4dOqSqqqqJp2JTVKlUsmzZsixcuDBbbbVVWrduXXR/VRXH5QAAADSqSqWSBQsWZPHixU09CmSrrbZKly5dikOXwAAAANBEVq9enZUrVzb1GGzC2rZtW3zkwhoCAwAAAFDMRR4BAACAYgIDAAAAUExgAAAAAIoJDAAAAEAxgQEAAAAoJjAAAAAAxQQGAAAAoJjAAAAAABQTGAAAAIBiAgMAAABQTGAAAAAAigkMAAAAQDGBAQAAACgmMAAAAADFBAYAAACgmMAAAAAAFBMYAAAAgGJtmnoA3p/jjz8+L7zwQlOPAQAAFOratWtuvPHGph4DGozA0ML8+c9/zurVq9O1a9emHgUazZqoZr9nU2GfZ1Nkv2dT88ILL2ThwoVNPQY0KIGhhdl+++2TJDNnzmziSaDxHHrooUns92w67PNsiuz3bGrW7POwMXENBgAAAKCYwAAAAAAUExgAAACAYgIDAAAAUExgAAAAAIoJDAAAAECxqkqlUmnqIQAAAICWzREMAAAAQDGBAQAAACgmMAAAAADFBAYAAACgmMAAAAAAFBMYWoja2tpceeWVGTBgQPr27ZvPf/7z+dvf/tbUY0GDevHFF9OzZ8+1/kyePDlJ8r//+785/vjj07dv3wwaNCjXX399E08M6+/qq6/O8OHD6y17t33cewEt3br2+3PPPXetn/uDBg2qW2+/p6VZvHhxzj///Bx88MHZc8898+lPfzpz586tW//AAw/kmGOOSZ8+fXL44Yfn9ttvr3f7FStWZMyYMdl///3Tr1+/fPWrX80rr7zS2E8D1ovA0EKMHz8+v/zlL3PhhRdm4sSJqa2tzec+97nU1NQ09WjQYB577LG0a9cus2fPzn333Vf3Z+jQoXn11Vdz0kknZYcddsikSZMyatSoXH755Zk0aVJTjw3v20033ZQf/vCH9Za9l33cewEt2br2+yR5/PHHM3LkyHo/92+++ea69fZ7WpqvfOUr+e///u98//vfz6RJk9KrV6+MGDEi8+bNy9NPP50vfOELGTBgQCZPnpxjjz02Z511Vh544IG6219wwQW57777Mm7cuPziF7/IvHnzcvrppzfhM4L3oUKzt2LFikq/fv0qN910U92y1157rbLHHntUbrvttiacDBrWhAkTKkceeeQ611111VWVgw46qLJy5cq6ZWPHjq187GMfa6zxoNiCBQsqX/jCFyp9+/atHH744ZXjjz++bt277ePeC2ip3mm/r62trfTt27fy+9//fp23td/T0jzzzDOVXXbZpTJ37ty6ZbW1tZXBgwdXfvjDH1bOO++8yic/+cl6t/nKV75SOfnkkyuVylvfL7vuumvlnnvuqVs/b968yi677FJ5+OGHG+dJQAFHMLQAjz32WN54443sv//+dcu22GKL9O7dO3/84x+bcDJoWI8//nh69OixznVz587NvvvumzZt2tQt22+//fLMM89k0aJFjTUiFPmf//mftG3bNlOmTEmfPn3qrXu3fdx7AS3VO+33zz33XJYtW5bu3buv87b2e1qarbfeOhMmTMjuu+9et6yqqipVVVVZsmRJ5s6dW29/Tt76Wf/QQw+lUqnkoYceqlu2xk477ZTOnTvb52kRBIYWYMGCBUmSrl271lu+/fbb162DjcETTzyRV155JZ/97GdzwAEH5NOf/nRmzZqV5K3vgy5dutTbfvvtt0+SvPDCC40+K6yPQYMGZdy4cenWrdta695tH/deQEv1Tvv9E088kSS54YYbMmjQoAwePDjf/va38/rrryfxbyBani222CIDBw5MdXV13bI777wzzz77bAYMGPC2P+uXL1+eV199NS+++GK23nrrtGvXbq1t7PO0BAJDC7B8+fIkqfeDKknatWuXFStWNMVI0OBWrVqVefPm5bXXXsvo0aMzYcKE9O3bN6ecckoeeOCBvPnmm+v8Hkji+4CNwrvt494L2Bg98cQTadWqVbbffvtcddVVOfvss3Pffffl1FNPTW1trf2eFu/hhx/ON77xjXzsYx/LIYccss6f9Wv+u6amJsuXL19rfWKfp+Vo8+6b0NTat2+f5K0fOmu+Tt76B+dmm23WVGNBg2rTpk3mzJmT1q1b1+3nu+22W5588sn8/Oc/T/v27de6oNeaN9oOHTo0+rzQ0N5tH/dewMboi1/8Yj7zmc9k6623TpLssssu2W677fKf//mfeeSRR+z3tGgzZszImWeemT333DOXX355krdCwb/+rF/z35ttttk63wsS+zwthyMYWoA1hwUuXLiw3vKFCxemc+fOTTESbBAdO3as9w/IJPnwhz+cF198MV26dFnn90AS3wdsFN5tH/dewMaoVatWdXFhjQ9/+MNJ3jo9wn5PS3XjjTdm9OjR+T//5//kqquuqjsirWvXruvcnzt06JDNN988Xbp0yeLFi9eKDPZ5WgqBoQXYdddd82//9m+ZM2dO3bIlS5bkr3/9a/bZZ58mnAwazpNPPpk999yz3n6eJI8++mh23nnn7LPPPnnooYeyevXqunUPPvhgdtppp3Tq1Kmxx4UG9277uPcCNkZnnXVWTjzxxHrLHnnkkSTJzjvvbL+nRVrzsaqf/exn8/3vf7/eKQ977713/vCHP9Tb/sEHH8yee+6ZVq1aZa+99kptbW3dxR6TZP78+XnxxRft87QIAkMLUF1dneOPPz6XX355Zs6cmcceeyxnnHFGunTpko997GNNPR40iB49eqR79+759re/nblz5+bpp5/Od77znfzpT3/KF7/4xXziE5/I0qVLc8455+Spp57K5MmTc9111+ULX/hCU48ODeLd9nHvBWyMDjvssDzwwAP50Y9+lOeeey733ntvvvnNb+aII45Ijx497Pe0OPPnz88ll1ySj370o/nCF76QRYsW5aWXXspLL72U119/PcOHD89f/vKXXH755Xn66adzzTXXZNq0afnc5z6X5K0j1oYNG5Zzzz03c+bMyV/+8pd85Stfyb777pu+ffs27ZOD96CqUqlUmnoI3t3q1avz/e9/P5MnT86bb76ZffbZJ+eff34++MEPNvVo0GAWLVqUsWPHZvbs2VmyZEl69+6dM888M3vvvXeS5C9/+Usuvvji/PWvf812222Xk08+Occff3wTTw3r5+yzz87f//733HDDDXXL3m0f915AS7eu/X7q1KmZMGFC5s2bl8033zxHHnlkvvzlL9cdUm6/pyW56qqr8oMf/GCd644++uhceumlmTVrVr73ve/lmWeeyQc/+MGMHj06Q4cOrdtu2bJlueSSS3LnnXcmSQ4++OCce+65a51OBM2RwAAAAAAUc4oEAAAAUExgAAAAAIoJDAAAAEAxgQEAAAAoJjAAAAAAxQQGAAAAoJjAAAAAABQTGAAAAIBiAgMA0CJ99atfTc+ePXPNNdc09SgAQJKqSqVSaeohAADej9dffz0HHXRQdthhh9TU1GTatGmpqqpq6rEAYJPmCAYAoMX5r//6ryTJOeeck2eeeSYPPvhgE08EALRp6gEAAN6vSZMmZf/9989+++2XHXfcMRMnTsz+++9ft3748OHp3LlzampqMmvWrPTr1y/XXnttVqxYkSuuuCK33357Xn755ey000754he/mKFDh9bd9s0338yPf/zj3HnnnfnHP/6R6urq9OnTJ2eddVZ69erVFE8XAFoEgQEAaFGefPLJPPLII7niiiuSJEcddVTGjx+fRYsWZdttt63bburUqfmP//iP/OQnP0ltbW0qlUpGjRqVhx9+OKeffnp69OiR6dOn54wzzkhNTU2OOuqoJMlZZ52VuXPn5itf+Up22GGHPPvss7niiivy1a9+NbfffrtTMQDgbQgMAECLMmnSpGy11VYZNGhQkuToo4/OuHHjcvPNN2fkyJF127Vt2zZjxoxJdXV1kuT+++/P7Nmz84Mf/KDuiIUBAwZk+fLlufzyy3PEEUektrY2b7zxRs4999y6bfbdd98sXbo0l156aRYtWpTtttuukZ8xALQMrsEAALQYK1euzJQpUzJ48OC8+eabWbJkSTp27Ji99torv/nNb1JbW1u3bffu3eviQpI88MADqaqqysCBA7Nq1aq6P4MGDcpLL72UJ598MtXV1fn5z3+eoUOH5sUXX8yDDz6YiRMn5u67706S1NTUNPpzBoCWwhEMAECLcc899+Tll1/OzTffnJtvvnmt9bNnz87AgQOTJB07dqy3bvHixalUKtlzzz3Xed8LFy5Mr169Mnv27FxyySWZN29eOnbsmF133TUdOnRIkvjwLQB4ewIDANBiTJo0Kd26dcvFF19cb3mlUslpp52WiRMn1gWGf7X55punQ4cOuf7669e5fscdd8xzzz2XUaNGZfDgwbn66qvTrVu3VFVV5aabbsrs2bMb/PkAwMZEYAAAWoSXXnops2fPzuc+97n0799/rfWHH354Jk+enBdffHGdt993331zzTXXpFKpZI899qhbPmnSpEyfPj2XXHJJHn300axYsSKnnHJKdthhh7pt1sQFRzAAwNtzDQYAoEW49dZbs2rVqgwbNmyd64866qisXr06v/nNb9a5fuDAgdlnn31y6qmn5pe//GXmzJmTn/70p7ngggvSqlWrbLPNNvnIRz6SNm3a5Hvf+17uv//+3H333Rk9enTuueeeJMmyZcs21NMDgBavqiLFAwAtwJAhQ9K6dev813/91zrXVyqVDB48OCtXrswHP/jBtG7dOjfccEO9bZYtW5Yrrrgi06ZNy8svv5zOnTtn2LBhGTVqVNq1a5ckmTZtWn70ox/lueeey5Zbbpm+ffvmhBNOyPDhw3Peeefls5/97AZ/rgDQEgkMAAAAQDGnSAAAAADFBAYAAACgmMAAAAAAFBMYAAAAgGICAwAAAFBMYAAAAACKCQwAAABAMYEBAAAAKCYwAAAAAMUEBgAAAKCYwAAAAAAU+/8ACQzJNCsb770AAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABAAAAAJPCAYAAADiw6YAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHiUlEQVR4nO3de5iWVb0//vdwmCEUOYQI+pU8MmobFMFT5CHAQJFCEfKI2s50p2bp9itKZrQD2112ULKD7e3Gc4IhKIoipCLmCdNteUYhQYlEQ8ADMzDP7w9/zFfkII4zDHC/XtfFFXOvda/ncz+NM9zvZ611l5VKpVIAAACALVqTxi4AAAAAaHgCAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAACwhaqpqWnsEgCATYgAAAAawaBBg1JZWZkePXrknXfeqdexly1blssvvzz/8z//U6/j1ofKyspUVlbm73//e+2xk08+OZWVlZk0aVIjVvbxevfuXVv/xRdf/LH9ly5dmm7duq31midMmFB7fI899sjrr7/+seP97Gc/qz1nxIgRn+paACgmAQAAbGRPP/10nnvuuVRUVGTZsmW57bbb6nX80aNH53e/+12WL19er+Py/9x7772pqqpab5+77757g/4/KJVKmTx58sf2ueOOOz5RjQDwUQIAANjIfv/73ydJTj/99CTJDTfckFKpVG/jb8pT/++6667cddddad++fWOXUmetW7fOkiVL8sADD6y33+23357y8vKPHSvJxwYAjz32WF5//fWPHQ8A1kcAAAAb0bJly3LXXXeloqIip512Wrp06ZI5c+Zk5syZjV3aRrHrrrtm1113TbNmzRq7lDrr379/kqz3E/nXX389jz/+eL70pS+td6y99tornTt3zgsvvJDZs2evs9/tt9+eJB87HgCsjwAAADaiSZMm5b333suhhx6arbfeOoMHD07ywSyAtVm17nzp0qW5+uqrc/jhh6dr167p3bt3/uM//iMLFy6s7Tt//vxUVlbWLim44oorUllZmTFjxtT2WbFiRf7whz/kX//1X/OFL3wh//Iv/5J99903gwYNyi9/+cu8++67q73+mDFjUllZmfHjx+fJJ5/MN77xjfTs2TP77rtvTj755MyaNStJ8re//S3nnXdeDjzwwHTv3j2DBw/OXXfdtcb1rG09/IZatmxZ9tlnn1RWVmbOnDlr7TN+/PhUVlbmtNNOW+19+d73vpcjjzwye++9d3r06JFjjz02V199dd57771PXEffvn3zmc98Jvfff3+WLVu21j533HFHSqVSvvrVr37seEcddVTtOWuzfPny3HPPPdlrr72y++67f+J6AWAVAQAAbES33HJLkuTYY49NknzlK19JeXl5ZsyYkVdffXWd51100UX56U9/mlatWuVLX/pSVqxYkRtuuCFDhgzJK6+8kiRp2bJlBg4cmB133DFJsscee2TgwIGprKxMkqxcuTJnnHFGLr744syaNSt77LFHevfunV133TXPPfdcxowZk9NPP32tyxGmT5+eE088MX/7299y4IEH5rOf/Wwee+yxnHrqqZk4cWKOPvroPP744+nevXt23nnn/PWvf813v/vdTJgwod7eu6233jr9+vVL8v8+Ef+oVRsJrgpWXn311QwePDjjx49PqVTKIYccku7du+fll1/OT3/605x22mlZuXLlJ6qjZcuW6dOnT5YvX5577713rX1uv/32tG3bNocccsjHjveVr3wlybqXAUyfPj1Lly7doDABANZHAAAAG8lTTz2VF154Idtvv30OPvjgJEm7du3y5S9/OTU1NeucBZB8cBN42WWXZcKECbnyyiszbdq0DBgwIAsXLsz3vve92rEuv/zy9OzZM0nSr1+/XH755fnyl7+cJPnDH/6QmTNnZocddsi0adNyzTXX5Morr8z48eNz4403plmzZpk1a1b+8pe/rPH69913X4YNG5Z77rknv/zlL3PnnXema9euqa6uzoUXXpgvfelLmTZtWn79619nwoQJ+frXv55k3TMb6mpVcLK2T8vnz5+fWbNmpXXr1jn88MOTJP/1X/+VxYsX5xvf+EamTJmSMWPG5L/+679yzz33ZPvtt8+TTz6Z++677xPXsb6b9meeeSazZ8/OgAED0rx5848da+edd07Xrl0zf/78PPnkk2u033777WnatGntTAEAqCsBAABsJKs+/R88eHCaNPl/v4KPO+64JB88Gm5djwQcMmRIjjnmmNqvy8vLM2rUqLRt2zZPPPFE/vrXv25QDX379s15552XbbfddrXjPXv2rJ0pMG/evDXOa9euXc4///zausvLy3PkkUcmSSoqKvL9738/FRUVtf1X3ayua6p+Xe2333753Oc+l3nz5uWJJ55YrW3SpEkplUoZMGBAbS2rlhrstNNOq/Xt0KFDfvSjH2X06NF1mlbfq1evtGvXLg8//HDefPPNNepI8ok+sR84cGCSNQOFt956KzNnzkyvXr02640TAdg0CAAAYCNYunRppkyZkqZNm9Z+ir3Kfvvtl1122SVLly7NxIkT13r+2m4mP/OZz+TQQw9Nkjz00EMfW8PQoUNz1VVXrfZJcnV1dV5++eVMmjQpixcvTpK1Pt6uW7dua3ya3a5duyTJjjvuWLub/SrbbLNNkjTIowhXBSEfXQaw6utV0/+T5KCDDkqSjBw5MhdccEEmT55ce8Peq1evDB48OJ/73Oc+cQ3NmjXLkUcemZUrV66218HKlStz5513Zuedd063bt02eLwBAwakadOmmTJlympLEu66665UV1dn0KBBn7hGAPiozXcLXgDYjKza/O8zn/lMhg8fvkb7qs33brzxxpx44olrtO+8885rHbdTp05JssGb6r399tu59dZbM3PmzMyZMycLFy6sfWxgWVlZkqx1D4A2bdqscWxV/1VBwNraGsLRRx+dK6+8MnfffXdGjBiR8vLyPPnkk5k7d24qKyvzL//yL7V9hw0bljlz5mTcuHG5/fbbc/vtt6esrCyVlZXp3bt3hg4dWvseflIDBw7MDTfckMmTJ+fkk09O8kEQs2jRopx00kmfaKz27dvnoIMOysyZM/OnP/2pdonI7bffnq233jp9+vSpU40A8GFmAADARrBq+v97772Xhx9+eI0/q27gX3755bV+mt+0adO1jrvqZn1DHqv31FNPpW/fvvnJT36S//3f/03nzp1z/PHH59JLL82kSZNywAEHrPPcTemxfdttt12++MUvZvHixZkxY0aS1M6c+PCn/8kH79sPf/jDTJ8+PSNGjMiXvvSlbLPNNnn++efzq1/9Kv3798/DDz9cpzr22WeffO5zn8tTTz1Vu2xi0qRJKSsrq90j4JP46L4Cc+fOzf/+7/+mX79+adGiRZ1qBIAPEwAAQAP785//nBdffDGtWrXK008/nRdeeGGtf1ZNzb/++uvXGGPBggVrHXv+/PlJku233/5j6xg+fHiWLFmSgQMH5uGHH851112X73//+znhhBOyxx57ZMmSJZ/iKjeuVTf6kydPTnV1de6+++40b958nTfeO+yw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AABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACaNbYBazLsmXL8rvf/S5Tp07N/Pnz06xZs+y+++4ZMmRIhgwZslrf5cuX59prr83EiRPz2muvpVWrVjnssMPy7W9/Ox06dFhj7CVLluTqq6/O1KlT8/e//z2f/exn069fv5x11llp1arVxrpEAAAA2Gg2yRkAS5YsyXHHHZff/OY3KS8vz3HHHZejjjoq8+fPz/e+971cdNFFtX1XrFiRs88+Oz/96U/TunXrDBs2LN26dcv48eMzePDg/P3vf19t7GXLluXUU0/N7373u3Tu3DmnnHJKOnfunP/5n//J8ccfn2XLlm3sywUAAIAGt0nOALjqqqvy0ksvZejQoRk5cmSaNPkgp7jgggty/PHHZ8KECenfv38OPfTQjB8/PjNmzMjgwYMzevTo2jHGjRuXSy65JKNGjcqYMWNqj//mN7/JM888k3POOSdnn3127fGf//zn+c1vfpNf/vKXGT58+Ma7WAAAANgINskZAHfeeWfKyspywQUX1N78J8k222yT008/PUkybdq0JMnYsWPTpEmTnHfeeauNMXTo0HTp0iXTpk3LwoULkyRVVVW56aab0rp163zzm99crf9ZZ52Vtm3b5tZbb01VVVVDXh4AAABsdJtcALBy5cp885vfzLnnnpttttlmjfby8vIkyTvvvJMFCxZk7ty56dKlS9q3b79G3169eqWmpiaPPPJIkuTpp5/OO++8k549e9aO8+Fx99tvvyxdujRPP/10A1wZAAAANJ5NbglA06ZNM2zYsHW233333UmSysrKzJkzJ0my0047rbXvjjvumCR55ZVXkmSD+8+ZMyc9e/ZcZw19+vRZZ9uCBQvSqVOndbYDAABAY9jkZgCsz7Rp03LPPfekZcuWOfroo/PPf/4zSdK6deu19l91fOnSpUlS279Nmzbr7b9kyZL6LBsAAAAa3SY3A2BdHnrooZx//vlJkksvvTQdOnRIdXV1kqwxnX+VVceXL1+eJLX9mzdvvkH912X69OnrbFvf7AAAAABoLJvFDIBJkybljDPOyPvvv59///d/z6BBg5IkLVq0SJJ1btq36njLli1X678qCPi4/gAAALCl2KRnAJRKpfzsZz/L1VdfnaZNm2bkyJE57rjjats/OsX/o95+++0kqd1M8OOm+H+0PwAAAGwpNtkAoKqqKueff36mTp2ali1b5he/+EUOPfTQ1frsuuuuSZJXX311rWPMmzcvSbLbbrvVqT8AAABsKTbJJQArVqzIWWedlalTp6Zjx465+eab17j5T5IOHTpk5513zvPPP5+33nprjfaHHnooTZo0SY8ePZIkn//859OqVavMmjVrjWUAVVVVeeyxx7LVVltlr732apgLAwAAgEaySQYAY8aMyYwZM9KxY8f8/ve/zx577LHOvkOHDs2KFSvyk5/8JKVSqfb4uHHj8uKLL6Zfv37p0KFDkg82+fvqV7+aN998M7/+9a9XG+eqq67K4sWLc/zxx6dZs012YgQAAADUySZ3p/uPf/wj11xzTZJkzz33zK233rrWfrvssksGDBiQk08+OVOnTs1tt92W2bNn58ADD8ycOXMybdq0dOrUKcOHD1/tvG9/+9uZOXNmrrrqqvz5z39O165d8/TTT+eRRx7JnnvumX/7t39r8GsEAACAjW2TCwAefvjh2t3477vvvtx3331r7denT58MGDAgzZs3zzXXXJPf/va3ufPOOzN27Nhsu+22GTJkSM4555xst912q53XunXr3HzzzfnlL3+Z6dOnZ9asWenYsWO+/vWv58wzz8zWW2/d4NcIAAAAG1tZ6cPz5vnU+vTpkySZPn16I1cCfNjy5cszYsSIJMmoUaNSUVHRyBUBAED92ND70E1yDwAAAACgfgkAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApgswkAfv7zn6eysjJLlixZo+36669PZWXlOv/MmjVrtf7Lly/P1VdfnSOPPDJ77713vvjFL+Z73/te/vGPf2ysywEAAICNqlljF7AhJk6cmKuvvnqd7c8++2yS5JRTTkmrVq3WaN9+++1r/75ixYqcffbZmTFjRvbdd9/06dMnL7/8csaPH58HHngg48ePT8eOHev/IgAAAKARbdIBwIoVK3LllVfm6quvTqlUWme/5557LhUVFbnwwgvTtGnT9Y45fvz4zJgxI4MHD87o0aNrj48bNy6XXHJJRo0alTFjxtTbNQAAAMCmYJNdAvDwww9n4MCB+e1vf5uuXbumbdu2a+1XVVWV2bNnp0uXLh97858kY8eOTZMmTXLeeeetdnzo0KHp0qVLpk2bloULF9bLNQAAAMCmYpMNACZNmpR//OMfOf/883PTTTelZcuWa+330ksvpbq6OnvuuefHjrlgwYLMnTs3Xbp0Sfv27ddo79WrV2pqavLII4986voBAABgU7LJLgE49thjM3z48LRp02a9/Vat/y8rK8t5552XWbNmZfHixdlpp53yta99Lccff3yaNPkg55gzZ06SZKeddlrrWDvuuGOS5JVXXlnva/bp02edbQsWLEinTp3Wez4AAABsbJvsDICePXt+7M1/8sH6/yS55ZZb8sYbb+Soo45K//79s3Dhwvzwhz/MeeedV7t/wD//+c8kSevWrdc61qrjS5curYcrAAAAgE3HJjsDYEOVlZVl++23z7nnnptBgwbVHl+0aFFOPfXUTJkyJV/4whcydOjQVFdXJ0nKy8vXOtaq48uXL1/va06fPn2dbeubHQAAAACNZZOdAbChLrnkktx3332r3fwnSfv27TN8+PAkyW233ZYkadGiRZIPNg5cm1XH17XfAAAAAGyuNvsAYH323nvvJMmrr76a5OOn+L/99ttJkm222WYjVAcAAAAbz2YdAFRXV+fpp5/O448/vtb2d999N0lSUVGRJNl1112T/L9A4KPmzZuXJNltt93qu1QAAABoVJv1HgDV1dU57rjjUiqV8tBDD6Vdu3artT/22GNJkn322SdJ0qFDh+y88855/vnn89Zbb63R/6GHHkqTJk3So0ePjVI/AAAAbCyb9QyAli1bpm/fvqmpqcmPf/zj1NTU1La9+uqrufzyy9OkSZOceuqptceHDh2aFStW5Cc/+Unt0wGSZNy4cXnxxRfTr1+/dOjQYWNeBgAAADS4zXoGQJJcfPHF+etf/5pJkyblhRdeyEEHHZRFixZl+vTpeffdd3PRRRelW7dutf1PPvnkTJ06Nbfddltmz56dAw88MHPmzMm0adPSqVOn2o0DAQAAYEuyWc8ASJKOHTtmwoQJOe200/LOO+/khhtuyIwZM9KjR4+MHTt2tU//k6R58+a55pprcuaZZ2bx4sUZO3Zsnn322QwZMiS33HJLOnbs2DgXAgAAAA2orPThefB8an369EmSTJ8+vZErAT5s+fLlGTFiRJJk1KhRtZuDAgDA5m5D70M3+xkAAAAAwMcTAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACiAZo1dAAAAfBKlUilVVVWNXQY0uPLy8pSVlTV2GWxBBAAAAGw2SqVSrrrqqsydO7exS4EGt9NOO+Wss84SAlBvLAEAAACAAjADAACAzUZZWVnOOussSwA2oqqqqowcOTJJcumll6a8vLyRKyoOSwCobwIAAAA2K2VlZamoqGjsMgqpvLzcew+bMUsAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAA0aAKxcuTL3339/Q74EAAAAsAGa1fXEhx56KNddd13mzZuXqqqqlEql2rZSqZTly5fn7bffTk1NTZ599tl6KRYAAAComzoFAH/+85/zzW9+MzU1Navd+K/N7rvvXqfCAAAAgPpTpwBg7NixWblyZfr27Ztjjz02DzzwQG655Zb8+te/zsqVK/PAAw9k/Pjx2XXXXTNhwoT6rhkAAAD4hOq0B8CTTz6Z9u3b52c/+1kOO+ywHHHEEampqUlNTU169+6dkSNHZsSIEZk9e3Zuuumm+q4ZAAAA+ITqFAAsXrw4e+21V8rLy5Mku+22W5LkmWeeqe1zwgknZLvttstdd91VD2UCAAAAn0adAoDmzZunRYsWtV+3a9cuLVu2zJw5c2qPlZWVZa+99lrtGAAAANA46hQAdOrUKa+88spqxzp37pznnntutWM1NTV577336l4dAAAAUC/qFAAccMABefnll/Pf//3fqampSZLsueeemTNnTv785z8nSd56663MmjUr2223Xf1VCwAAANRJnQKAYcOGpaKiIpdffnm+/e1vJ0mOOeaYlEqlnHnmmfnOd76To48+Ou+8807222+/ei0YAAAA+OTqFADstNNOueqqq9KxY8e0atUqSbLffvvlyCOPzJIlS3L33Xdn4cKFad26dc4+++x6LRgAAAD45JrV9cRevXpl+vTpefPNN2uP/exnP0ufPn3y+OOPp127dhk6dGg6duxYL4UCAAAAdVfnACBJmjRpkm233Xa1YwMGDMiAAQM+VVEAAABA/fpUAUCSzJs3L4888khef/317LLLLhk4cGBmzZqVrl27pqKioj5qBAAAAD6lOgcAy5Yty6WXXpopU6akVColSQYOHJiBAwfm8ssvz7x58/KrX/0qe++9d70VCwAAANRNnTYBrKqqymmnnZY777wzLVu2zBe/+MXaECBJampq8uabb+Zf//Vf8/rrr9dbsQAAAEDd1CkAuP766/OXv/wlhx12WP74xz/md7/73WrtN910U4YOHZply5Zl7Nix9VEnAAAA8CnUKQCYPHlyWrdunZ/+9KfZZptt1mhv1qxZvv/976d9+/b505/+9KmLBAAAAD6dOgUAc+fOTY8ePbLVVluts0+zZs2y9957WwIAAAAAm4A6BQBlZWVZvnz5x/Z755136jI8AAAAUM/qFADsvPPO+etf/5qlS5eus8+SJUvyzDPPZOedd65zcQAAAED9qFMAMGDAgLz99tsZMWJE3n///TXaa2pq8oMf/CDLli1Lv379PnWRAAAAwKfTrC4nnXTSSZk8eXLuvffeHH744enevXuS5MUXX8zo0aNz//3359VXX80uu+ySk046qV4LBgAAAD65Os0AKC8vz3//93/n4IMPzhtvvJGpU6cmSZ5//vlcd911efXVV7Pvvvvmf/7nf9KyZct6LRgAAAD45Oo0AyBJ2rZtm6uvvjrPPfdcHnroobz++utZuXJltttuuxxwwAHp0aNHfdYJAAAAfAp1CgB+85vfZM8998yhhx6aPffcM3vuuWd91wUAAADUozoFAGPHjk3btm1z6KGH1nc9AAAAQAOo0x4A7777bnbffff6rgUAAABoIHUKAHr27Jknnngib7/9dn3XAwAAADSAOi0B+MEPfpAzzzwzgwYNyjHHHJM999wzbdq0SZMma88T9t13309VJAAAAPDp1CkA6NevX5KkVCrlV7/61Xr7lpWV5dlnn63LywAAAAD1pE4BQKdOnTa4b1lZWV1eAgAAAKhHdQoA/vjHP25Qv/feey+TJk2qy0uwEZVKpVRVVTV2GdCgPvw97vudIigvLxfCAwCrqVMA8HHmz5+fG2+8MRMmTMjSpUtz3HHHNcTLUE+qqqoyYsSIxi4DNpqRI0c2dgnQ4EaNGpWKiorGLgMA2ITUawDw8MMP57rrrsuMGTNSU1OTUqmUpk2b1udLAAAAAHXwqQOA9957LxMnTsyNN96Yl19+OaVSKUnSuXPnDB48OEcfffSnLpKNp8dXzk6TZs0buwxoEKt+PpkWzZaqZkV1nrj9l41dBgCwiapzADBv3rzVpvmXSqWUlZVlwIABGTJkSA488MD6rJONpEmz5mnarLyxywAAAKCefeIA4KGHHsr111+fBx98sHaa/y677JJ33303CxcuzE9/+tOGqBMAAAD4FDYoAHjvvfcyYcKE3HjjjZkzZ05KpVLKy8tzxBFH5LjjjkvPnj1z2mmnZeHChQ1dLwAAAFAHGxQAHHLIIVm2bFlKpVJ23333DB48OF/96lfTtm3bhq4PAAAAqAcbFAAsXbo0LVq0yDe+8Y2cdtpp2WqrrRq6LgAAAKAeNdmQTnvssUfef//9XHXVVenVq1fOPffcPPjggw1dGwAAAFBPNigAmDhxYsaNG5ejjz46ZWVlueeee/LNb34zvXv3zq9+9Str/wEAAGATt0EBQJJ069Yto0ePzoMPPphLLrkku+++e15//fWMGTMmffr0yVNPPZUkqa6ubqhaAQAAgDra4ABgla233jonnnhibr/99txyyy0ZNGhQmjdvnvfeey+lUim9evXKpZdemieffLIh6gUAAADq4BMHAB+2995757LLLsuDDz6Y733ve9l9992zZMmSjBs3LieccEL69euXX/3qV/VVKwAAAFBHnyoAWGXrrbfOSSedlDvuuCM333xzvvrVr6aioiJ/+9vfMmbMmPp4CQAAAOBT2KDHAH4S3bt3T/fu3TNixIjcdtttGT9+fH2/BAAAAPAJ1csMgLVp1apVhg0bljvuuKOhXgIAAADYQA0WAAAAAACbDgEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKIDNJgD4+c9/nsrKyixZsmSt7VOmTMnXvva19OjRI/vvv3/OOOOMPP3002vtW1NTk9///vcZNGhQunfvngMPPDDf+c53MmfOnIa8BAAAAGg0m0UAMHHixFx99dXrbP/1r3+d73znO1m0aFGGDh2aww8/PI8++miOP/74PPjgg2v0//73v59LL700K1euzAknnJBevXrl3nvvzeDBg/P888835KUAAABAo2jW2AWsz4oVK3LllVfm6quvTqlUWmuf2bNn58orr0yXLl1yyy23pGXLlkmSk046Kccff3xGjBiRqVOnpkWLFkmSGTNmZPz48fniF7+Y3/72t2nW7IO3YNCgQTn99NNz8cUXZ8KECRvnAgEAAGAj2WRnADz88MMZOHBgfvvb36Zr165p27btWvtde+21qampybe+9a3am/8k2XPPPXPsscdm4cKFmT59eu3xsWPHJknOPffc2pv/JDn44INz2GGH5ZlnnslTTz3VINcEAAAAjWWTDQAmTZqUf/zjHzn//PNz0003rXZz/2EPP/xwkqRXr15rtH3hC19IkvzpT39K8sGMgscffzytW7dO165d1+i/aoxV/QEAAGBLsckuATj22GMzfPjwtGnTZp19qqurM3/+/LRr1y7bbLPNGu2dO3dOkrzyyitJktdeey1VVVWprKxMWVnZx/YHAACALcUmGwD07NnzY/ssXrw4pVIprVu3Xmv7qlBg6dKlSZJ//vOfSbLB/delT58+62xbsGBBOnXqtP7CAQAAYCPbZJcAbIgVK1YkSZo3b77W9vLy8iTJ8uXL69QfAAAAthSb7AyADVFRUZHkg6UAa1NVVZUktfsHfNL+6/LhTQU/an2zAwAAAKCxbNYzAFq1apWmTZuuc8r+kiVLkvy/qf2r9hPY0P4AAACwpdisA4DmzZtnxx13zJtvvpl33nlnjfZXX301SbLbbrslSXbYYYe0aNGi9vjH9QcAAIAtxWYdACTJAQcckFKpVPs4wA976KGHkiT77bdfkqRJkybp2bNn/vnPf+b555//2P4AAACwpdjsA4AhQ4akrKwsV1xxxWpT+59//vn84Q9/SMeOHdO3b9/a40OHDk2S/Od//mftmv8kefDBB3P//fenW7du2XvvvTfeBQAAAMBGsFlvApgkXbt2zWmnnZZrrrkmAwcOTP/+/bNs2bJMnjw5K1asyOjRo2t390+Sfv36pV+/frnnnnvy1a9+Nb17987ChQszZcqUbL311vmP//iPRrwaAAAAaBibfQCQJBdeeGF22WWX3HTTTbnpppuy1VZbZf/998/ZZ5+dbt26rdH/Zz/7WcaOHZsJEybkuuuuS+vWrXP44YfnnHPOya677toIVwAAAAANa7MJAP74xz+ut33IkCEZMmTIBo3VrFmzfOMb38g3vvGN+igNAAAANnmb/R4AAAAAwMcTAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAzRq7AACAzVWpVEpVVVVjlwEN6sPf477fKYLy8vKUlZU1dhkNQgAAAFBHVVVVGTFiRGOXARvNyJEjG7sEaHCjRo1KRUVFY5fRICwBAAAAgAIwAwAAoB5895D/k+ZNt8wpo1AqlZJki50WDdUrS/n5jPmNXUaDEwAAANSD5k3LUt7U5EqAzVNNYxewUfgtBQAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAATRr7ALYtKxcUd3YJQBQR36GAwDrIwAgpVKp9u9/vv2XjVgJAPXlwz/bAQASSwAAAACgEMwAIGVlZbV/3/crZ6dps+aNWA0AdbVyRXXtTK4P/2wHAEgEAHxE02bN07RZeWOXAQAAQD2zBAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgALaopwBcf/31+dGPfrTO9htvvDE9e/ZMkixfvjzXXnttJk6cmNdeey2tWrXKYYcdlm9/+9vp0KHDxioZAAAANootKgB49tlnkySnnHJKWrVqtUb79ttvnyRZsWJFzj777MyYMSP77rtv+vTpk5dffjnjx4/PAw88kPHjx6djx44btXYAAABoSFtUAPDcc8+loqIiF154YZo2bbrOfuPHj8+MGTMyePDgjB49uvb4uHHjcskll2TUqFEZM2bMxigZAAAANootZg+AqqqqzJ49O126dFnvzX+SjB07Nk2aNMl555232vGhQ4emS5cumTZtWhYuXNiQ5QIAAMBGtcUEAC+99FKqq6uz5557rrffggULMnfu3HTp0iXt27dfo71Xr16pqanJI4880lClAgAAwEa3xSwBWLX+v6ysLOedd15mzZqVxYsXZ6eddsrXvva1HH/88WnSpEnmzJmTJNlpp53WOs6OO+6YJHnllVc2St0AAACwMWwxAcBzzz2XJLnllluy//7756ijjsqiRYvywAMP5Ic//GEef/zx/PznP88///nPJEnr1q3XOs6q40uXLl3na/Xp02edbQsWLEinTp3qehkAAADQILaYAKCsrCzbb799zj333AwaNKj2+KJFi3LqqadmypQp+cIXvpDy8vIkqf3fj1p1fPny5Q1eMwAAAGwsW0wAcMkll+SSSy5Z43j79u0zfPjw/Ou//mtuu+22nHLKKUk+2DRwbVYdb9my5Tpfa/r06etsW9/sAAAAAGgsW8wmgOuz9957J0leffXVj53i//bbbydJttlmm41THAAAAGwEW0QAUF1dnaeffjqPP/74WtvffffdJElFRUV23XXXJB+EAWszb968JMluu+3WAJUCAABA49gilgBUV1fnuOOOS6lUykMPPZR27dqt1v7YY48lSfbZZ5906NAhO++8c55//vm89dZba/R96KGH0qRJk/To0WOj1Q8AAAANbYsIAFq2bJm+ffvmnnvuyY9//OP8+Mc/TpMmH0xuePXVV3P55ZenSZMmOfXUU5MkQ4cOzX/+53/mJz/5SS677LKUlZUlScaNG5cXX3wxRxxxRDp06NBYlwMAbIaqVtY0dgkA1FFRfoZvEQFAklx88cX561//mkmTJuWFF17IQQcdlEWLFmX69Ol59913c9FFF6Vbt25JkpNPPjlTp07NbbfdltmzZ+fAAw/MnDlzMm3atHTq1CnDhw9v5KsBADYHpVKp9u+/mPFaI1YCQH358M/2Lc0WsQdAknTs2DETJkzIaaedlnfeeSc33HBDZsyYkR49emTs2LG1n/4nSfPmzXPNNdfkzDPPzOLFizN27Ng8++yzGTJkSG655ZZ07Nix8S4EAAAAGsAWMwMgSdq0aZPhw4dv0Cf4LVu2zHe/+91897vf3QiVAQBbolXLCJPkO4fskPKmW8xnKwCFUrWypnYm14d/tm9ptqgAAACgsZQ3bSIAAGCT5rcUAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAJo1tgFsGmpWVHd2CVAgymVSkmSsrKyRq4EGoaf4QDA+ggAWM0Tt/+ysUsAAACgAVgCAAAAAAVgBgApLy/PqFGjGrsMaFBVVVUZOXJkkuTSSy9NeXl5I1cEDcv3OADwUQIAUlZWloqKisYuAzaa8vJy3/MAABSOJQAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABNGvsAgAAtgTVK0tJahq7DGgQpVIpSVJWVtbIlUDD+OBn+JZPAAAAUA9+PmN+Y5cAAOtlCQAAAAAUgBkAAAB1VF5enlGjRjV2GdCgqqqqMnLkyCTJpZdemvLy8kauCBrWlvw9LgAAAKijsrKyVFRUNHYZsNGUl5f7nofNmCUAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACaNbYBUBRlUqlVFVVNXYZhfHh99r7vnGVl5enrKysscsAACg8AQA0glKplKuuuipz585t7FIKaeTIkY1dQqHstNNOOeuss4QAAACNTAAAAMBmxSy6jcssusZjFh31TQAAjaCsrCxnnXWWX6IUgn+8APXJLLrGZRbdxmUWHfVNAACNpKysLBUVFY1dBgAAUBACAAAANhtm0VEkZtFR3wQAAABsVsyiA6ibJo1dAAAAANDwBAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACiAZo1dQGOaMmVKxo4dm9mzZ6dp06bp3r17zjrrrHTr1q2xSwMAAIB6VdgZAL/+9a/zne98J4sWLcrQoUNz+OGH59FHH83xxx+fBx98sLHLAwAAgHpVyBkAs2fPzpVXXpkuXbrklltuScuWLZMkJ510Uo4//viMGDEiU6dOTYsWLRq5UgAAAKgfhZwBcO2116ampibf+ta3am/+k2TPPffMsccem4ULF2b69OmNWCEAAADUr0IGAA8//HCSpFevXmu0feELX0iS/OlPf9qoNQEAAEBDKlwAUF1dnfnz56ddu3bZZptt1mjv3LlzkuSVV17Z2KUBAABAgyncHgCLFy9OqVRK69at19q+KhRYunTpOsfo06fPOtvmz5+fpk2brrcPAAAA1JcFCxakadOmH9uvcAHAihUrkiTNmzdfa3t5eXmSZPny5XUav6ysLM2aFe5thc3CggULkiSdOnVq5EoAYPPidyhs2po1a1Z7L7vefhuhlk1KRUVFkg+WAqxNVVVVkqy2OeBH2SAQNk+rZub4bxgAPhm/Q2HLULg9AFq1apWmTZuuc4r/kiVLkmSt+wMAAADA5qpwAUDz5s2z44475s0338w777yzRvurr76aJNltt902dmkAAADQYAoXACTJAQcckFKpVPs4wA976KGHkiT77bffxi4LAAAAGkwhA4AhQ4akrKwsV1xxxWpLAZ5//vn84Q9/SMeOHdO3b99GrBAAAADqV+E2AUySrl275rTTTss111yTgQMHpn///lm2bFkmT56cFStWZPTo0Ru0gyIAAABsLgoZACTJhRdemF122SU33XRTbrrppmy11VbZf//9c/bZZ6dbt26NXR4AAADUq7JSqVRq7CIAAACAhlXIPQAAAACgaAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAGxWJkyYkMrKylRWVmbgwIEf2//CCy+s7f/oo48mScaMGVN77Mwzz/zYMU466aTa/vPnz//U1wAAn8Ydd9xR+3tp1qxZ9TbuW2+9lWuvvbbexvs0Kisr07Nnz9qvH3300VRWVuZb3/pWI1YFmz8BALDZevHFFzN79ux1tr///vu599571zvGzJkz8/bbb6+zfcGCBfX6jysA+LTGjRuXli1bJkluuummehnzzTffzOGHH54JEybUy3if1tlnn51vfvObjV0GbHEEAMBmqUOHDkmSyZMnr7PPH//4x7zzzjvZaqut1jlGdXV1pk6dus4xJk+enFKptM4xAGBj+tvf/pbHH388hx9+eHbfffdMnTo1b7zxxqce97333suyZcvqocL6cc455wgAoAEIAIDN0mGHHZaWLVtmypQp6+xzxx13pG3bttlvv/3W2t6/f/8k+dgx9thjj+y4446frmAAqAe33nprSqVSDjnkkBxxxBGprq7OuHHjGrssYDMhAAA2Sy1atEjv3r0zd+7cPPPMM2u0v/3223nwwQdz5JFHpmnTpmsdY4cddkj37t3zyCOP5K233lqj/aWXXsoLL7yQr3zlK/VePwB8UitWrMhtt92WZs2apVevXrW/n2655ZasWLFitb6r9swZP358JkyYkAEDBqRbt27p3bt3Ro8enX/+85+1fceMGZM+ffokSZ5//vlUVlZm+PDhte3z58/Pf/zHf6R///7ZZ5990rVr1/Tu3Tvf//73s3DhwtVe9+STT85ee+2VpUuXZtSoUTn44IPTrVu3DBw4MLfffnuS5IknnsiwYcPSvXv3fPGLX8z555+/xjgf3QMAqB8CAGCzNWDAgCTJnXfeuUbb3Xffnerq6o/dKHDAgAFZuXLlWmcB3HHHHWnSpEmOOuqo+ikYAD6F+++/P2+88UYOOeSQtG3bNjvuuGN69uyZhQsXZvr06Ws9Z9y4cbnooovSuXPnnHDCCWnTpk2uvfbaHHfccbUhwP77759hw4YlSdq3b5+zzz47ffv2TZLMnj07xxxzTG655ZZ06dIlJ510Uo455pgkHwQPJ510UqqqqlZ7zVKplJNPPjnTp0/PkUcemQEDBuSVV17JBRdckMsvvzynnHJKWrZsmRNOOCHbbrttJk+enHPPPTelUqmh3jrg/9essQsAqKuDDz44bdq0yd13350LLrggZWVltW2TJ0/OjjvumO7du693jCOOOCKXXXZZ7rrrrpx44om1x0ulUiZPnpz99tsv2223XYNdAwBsqPHjxydJjj766NpjgwcPzqxZs3LjjTemX79+a5zz9NNPZ9SoUTn22GOTJDU1NRkxYkQmTJiQX/ziFxk5cmQOOOCA7LDDDrnuuuvSvn37nHPOObXn/+xnP8vbb7+dq666qjYUSJKqqqocc8wxeemll/LYY4/li1/8Ym1bTU1Nampqcscdd9TuodO5c+f84he/yO9+97tceumlOeGEE2rH6d+/f5588snMmTMnu+yySz2+Y8BHmQEAbLaaN2+eL3/5y3nttdfy1FNP1R7/+9//nscff3yDPrlv3759DjzwwDzxxBOrTT/885//nNdee22DHjUIAA1t4cKFefDBB9OmTZscdthhtcf79++fli1b5tFHH13rk3H22Wef2pv/JGnSpEkuvPDCfOYzn8mdd965xqf3H3XiiSfmRz/60Wo3/0lSXl6eHj16JPngCQIfdfLJJ6+2ge6q/XjatWuX448/frVxunbtmiQetQsbgQAA2KytbRnAqp37N/TmfcCAASmVSqstA5g8eXLKy8vX+mkKAGxst956a1auXJmjjjoq5eXltcdbtmyZI444IsnaHwl40EEHrXGsTZs22XnnnbN06dLMmzdvva/bq1evDBkyJEuXLs2sWbNy22235corr8y3vvWt2ifx1NTUrHHezjvvvNrXq8KAHXfccbUZe0nymc98Jkk+NowAPj0BALBZ23///dOhQ4fcfffdtf8AmTx5cj7/+c9n11133aAxvvzlL6e8vLw2RFixYkXuvvvuHHbYYdlmm20arHYA2BClUil/+MMfkiQ33HBDKisrV/uzqm3ixIlrPMqvU6dOax1z2223TZIsWbJkva+9aNGi/N//+39z0EEH5cQTT8zw4cNz4403prq6una6/trW7q/r8bkVFRXrfT2gYdkDANisNWnSJEceeWTGjh2bxx9/PO3bt89zzz2Xiy66aIPHaNWqVQ499NDce++9mTdvXl555ZW89dZbdv8HYJPwpz/9Ka+99lo6deqUQw45ZK19ZsyYkQULFmTSpEmr7Wnz3nvvrbX/qhv/du3arfN1S6VSTj/99Dz77LM55phjcvTRR2fXXXfNZz/72STJ97///Tz99NN1vSygEQgAgM3egAEDMnbs2Nx1111p27ZtbSjwSce49957M2XKlLz00kvZZpttcuihhzZQxQCw4VZt/jds2LB8/etfX2uf6667LqNGjcrNN9+8WgDw5JNP5tRTT12t77Jly/Lcc89l2223zY477pgka0zLT5IXXnghzz77bLp3757LLrtsjfZVew7YvR82H5YAAJu9bt265XOf+1zuvffe3HXXXTnwwAPToUOHTzTGl770pWy11Va54447Mn369PTr12+1NZYA0BjeeuutTJs2Lc2aNVvvzLRBgwalRYsWeemll/Loo4/WHp82bVpmzJhR+/WKFSsyatSovP/++xkyZEiaNPngdqBZsw8+F/zwOvwWLVok+WAZwEfX519//fV54oknascENg9mAABbhAEDBuRXv/pV3nzzzZx55pmf+PwWLVqkb9++mTRpUpLY/R+ATcKkSZNSXV2d3r17p3379uvst8022+TII4/MhAkTcuONN9Y+KaBly5Y544wz0rdv33Tq1CmPPPJIXnjhhfTo0SP/9m//Vnt+u3btUlFRkTlz5uSSSy7Jvvvum0GDBmX//ffPY489lkGDBuWQQw5JqVTK448/nmeeeSbt27fPokWLsnjx4gZ+F4D6YgYAsEVY9ci/ioqKfPnLX67TGKueKNCxY8faxxUBQGO69dZbkySDBw/+2L5f+9rXkiTTp0/PP/7xjyQfzAy4+OKL88ILL+Tmm29OdXV1zjvvvIwdO3a1mW7NmzfPj370o2y//fa57bbbMnHixJSVleWXv/xlhg0bluXLl+fGG2/MlClT0rJly4wePTrXXXdd7esBm4eykkU7AACwRZkwYUIuuuiiDBs2LCNGjGjscoBNhBkAAAAAUAACAAAAACgAAQAAAAAUgD0AAAAAoADMAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAALBejz76aCorK1NZWdlgrzFmzJhUVlZmxIgRDfYaG/N1AGBTJAAAAACAAhAAAAAAQAEIAAAAAKAAmjV2AQDAlmfFihWZNGlS7rrrrjz33HNZsmRJysvL07lz5/Tt2zdf//rX07Jly7WeO2vWrFx55ZX5y1/+kqZNm2bvvffOqaeemoMPPnit/Z955pn893//dx577LEsXrw4rVu3zn777ZfTTz89n//85xvyMgFgsyIAAADq1cqVK3PGGWdk5syZadGiRXr06JGtt946CxYsyNNPP53nnnsuDz/8cG644YaUlZWtdu6sWbMyceLEtG3bNgcffHD+8Y9/ZObMmZk5c2bOP//8fPOb31yt/7hx4/KDH/wgK1euTGVlZfbdd9/Mnz8/U6ZMyb333psf/ehHOfroozfm5QPAJksAAADUqz/84Q+ZOXNmdthhh9xyyy3Zdttta9tmzZqVU045JbNmzcpf/vKXdOvWbbVz586dm/79++cnP/lJKioqkiTTpk3Lueeem5///Ofp1atX7af6Tz31VH7wgx+kvLw8V1xxRQ499NDace6///58+9vfziWXXJI999wze+yxx0a4cgDYtNkDAACod3379s1555232s1/kvTs2bP2cYLz5s1b47zWrVvnhz/8Ye3N/6qxjjvuuNTU1OTGG2+sPf7b3/42K1euzDnnnLPazX+SHHbYYfn617+e6urqXHPNNfV5aQCw2RIAAAD1aujQobnqqqty1FFH1R6rrq7Oyy+/nEmTJmXx4sVJkqqqqjXO7d27d1q3br3G8b59+yZJHn300SRJTU1NHnnkkSRJr1691lrHl770pSTJn/70p7pfDABsQSwBAADq3dtvv51bb701M2fOzJw5c7Jw4cLU1NQkSe26/1KptMZ5/+f//J+1jrfDDjskSRYuXJgkWbx4cd59990kyVe/+tX11vLGG2+kuro6zZs3r9vFAMAWQgAAANSrp556KqeffnqWLFmSrbbaKv/yL/+S3r17Z7fddsu+++6byy67rPbT+49q0aLFWo+vCgtW3cSvXLmytm3gwIEfW9OKFSsEAAAUngAAAKhXw4cPz5IlSzJw4MCMGjVqtfX8SbJkyZJ1nrvqE/6Pmj9/fpJk++23T5K0bds25eXlqaqqyiWXXLLWZQMAwOrsAQAA1JtFixZlzpw5SZIzzjhjjZv/hQsX5sUXX0yS2iUBHzZz5sy1Hr/zzjuTJAcddFCSpFmzZunRo0eSD54SsDYTJ07MEUcckYsvvriOVwMAWxYBAABQb7beeuuUl5cnSe69997V2ubPn5+zzjorK1asSJIsX758jfNfeeWVXHbZZauFABMnTsyECRPSokWLDBs2rPb46aefniT58Y9/nPvvv3+1cf7617/mxz/+cV555ZXssssu9XJtALC5swQAANhg69pxf5WxY8fmpJNOyjXXXJMrrrgiU6dOTefOnbNo0aI89dRTSZKddtopc+fOzVtvvbXG+d27d8/111+f++67L3vttVfmz5+fZ555Js2bN89ll12Wzp07r1bLv//7v+enP/1pzjjjjOy+++7Zeeed88Ybb+Spp55KqVTKEUcckdNOO61e3wMA2FwJAACADbZo0aL1tq9YsSIXXHBBdtttt9x8883529/+ltmzZ2fbbbetvRl/7bXX8u1vfzv33XdfzjnnnNXOP/zww/Nv//Zvueqqq3L//fenRYsWtcc+//nPr/F6p59+enr06JFrr702TzzxRO677760adMm+++/f772ta+lf//+adq0ab2+BwCwuSorre0ZPAAAAMAWxR4AAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAArg/wPsZxAYAlspJQAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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DR48WHv37lWnTp3UuHFjJScn69ChQ7p27Zo8PT01a9asvL7NAADcNwIAAACKkDZt2qhz58767LPPtHXrVpUqVUrdu3fX8OHDVbduXXuXl4mTk5NmzZplnaFw9OhRHT58WGXKlFH37t31/PPPZ7qRz+s5kjRlyhS1a9dOy5cv13//+1+dOHFCZcuWVbt27TRgwAC1a9funusfN26cGjRooKVLl+qnn36So6OjateurX79+qlnz55Z9huoUqWKVq9erS+//FJbtmzR7t275ejoqJo1a6p79+4aMGCAXFxc7rkOAABsxWTJ2G0HNpGxA3FERISdKwEAPEjmzJmjuXPnqk+fPpo2bZq9ywEAAIVIbu9D2QMAAAAAAAADYAkAAMOwWCy6efOmvcsA8iQlJUWSlJaWphs3bti5GgBG5OrqmqtHbQIovAgAABiCxWLRCy+8oEOHDtm7FCBPkpKSJEnr1q1TeHi4nasBYESNGjXSl19+SQgAFGGFNgC4evWqvvjiC4WFhSk2NlZOTk6qU6eOAgICFBAQkKnv6NGjs31OryQ5OjrqyJEjmY798ccfmjt3riIjI/Xnn3+qcuXKeuqppzRs2DCZzeZ8uyYA9nPz5k1u/lGkubi4sIEcALv673//q5s3b6pYsWL2LgVAHhXKACAhIUHPPvusTp48qXr16qlfv366efOmIiIi9Oabb+qnn37SjBkzrP2PHDmiUqVKZXomcIa/J5RxcXHq37+/Lly4oCeeeEJVq1bV7t27NXv2bO3du1dffvmlnJ2d8/0aAdhPWFgY/3gBACCXbty4oSeeeMLeZQCwgUIZAMybN08nT55U3759NXXqVDk43NqrcOzYserfv79CQkLUtWtXtWvXTgkJCYqNjVXr1q01evTou479/vvv6/z58/rggw/Uo0cPSVJ6errGjRunNWvWaPny5Ro0aFB+Xh4AOytWrBgBAAAAAAynUD4FYP369TKZTBo7dqz15l+SSpUqpWHDhkmSdf3j0aNHJUn169e/67i///67Nm3apDp16lhv/iXJwcFB48ePl6Ojo5YuXWrDKwEAAAAAoHAodDMA0tLS9NJLL+natWsqVapUlvaMNfrXrl2TJOv6/twEAHv27FF6erpatWqVpe2hhx5SvXr1dPjwYf3++++qWLHi/VwGAAAAAACFSqELABwdHbNdy59h06ZNkiRP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qyTddYx69eqpatWq91cwAAA28N1338lisaht27bq1q2bUlJSFBQUZO+yABQRBAAAiiRXV1f5+vrqzJkzOnz4cJb2K1euaOfOnXryySfl6OiY7RhVqlRR48aNtWfPHl2+fDlL+8mTJ3X8+HE99dRTNq8fAIB7lZqaqlWrVsnJyUk+Pj7W308rVqxQampqpr4Ze+YEBwcrJCREfn5+8vLykq+vr6ZPn66//vrL2nfOnDnq2LGjJOnYsWPy9PTU+PHjre2xsbF699131bVrVz322GNq2LChfH199dZbbykuLi7T6w4aNEiPPPKIEhMTNW3aND3++OPy8vKSv7+/1qxZI0nav3+/Bg8erMaNG6tNmzZ64403sozz9z0AANgGAQCAIsvPz0+StH79+ixtmzZtUkpKyl03CvTz81NaWlq2swDWrl0rBwcHde/e3TYFAwBwH7Zt26Y///xTbdu2VZkyZVS1alV5e3srLi5OERER2Z4TFBSkCRMmqFq1anr22WdVunRpLV68WP369bOGAM2bN9fgwYMlSWXLltWoUaPUqVMnSVJ0dLR69eqlFStWqG7duho4cKB69eol6VbwMHDgQCUnJ2d6TYvFokGDBikiIkJPPvmk/Pz8dPr0aY0dO1YzZ87Uc889Jzc3Nz377LMqV66c1q1bp1dffVUWiyW/3joA/5+TvQsAgLx6/PHHVbp0aW3atEljx46VyWSytq1bt05Vq1ZV48aN7zhGt27dNGPGDG3YsEEDBgywHrdYLFq3bp2aNWumChUq5Ns1AACQW8HBwZKknj17Wo/17t1bUVFRWrp0qbp06ZLlnEOHDmnatGnq06ePJCk9PV2TJk1SSEiIPv30U02dOlUtWrRQlSpV9PXXX6ts2bIaPXq09fyPP/5YV65c0bx586yhgCQlJyerV69eOnnypPbu3as2bdpY29LT05Wenq61a9da99CpVq2aPv30U33xxReaMmWKnn32Wes4Xbt21YEDBxQTE6OaNWva8B0D8HfMAABQZDk7O+uJJ57Q+fPndfDgQevx33//Xfv27cvVJ/dly5ZVy5YttX///kzTD3/66SedP38+V48aBAAgv8XFxWnnzp0qXbq02rdvbz3etWtXubm56ccff8z2yTiPPfaY9eZfkhwcHDRu3DgVK1ZM69evz/Lp/d8NGDBA7733Xqabf0kym81q2rSp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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Putting the parameters in a dictionary avoids code duplication\n",
"# since we use the same for `sns.boxplot` and `Annotator` calls\n",
"plotting_parameters = {\n",
" 'data':result, \n",
" 'x':'Label', \n",
" 'y':'Area', \n",
" 'showfliers': False,\n",
"}\n",
"\n",
"pairs = [('MM', 'Aptamil'), # 'Robots' vs 'Flight'\n",
" # ('Flight', 'Sound'), # 'Flight' vs 'Sound'\n",
" # ('Robots', 'Sound') # 'Robots' vs 'Sound'\n",
" ]\n",
"\n",
"formatted_pvalues = [f\"p={p:.2e}\" for p in pvalues]\n",
"\n",
"with sns.plotting_context('notebook', font_scale=1.4):\n",
" # Create new plot\n",
" fig, ax = plt.subplots(1, 1, figsize=(12, 6))\n",
"\n",
" # Plot with seaborn\n",
" sns.boxplot(**plotting_parameters)\n",
"\n",
" # Add annotations\n",
" annotator = Annotator(ax, pairs, **plotting_parameters)\n",
" annotator.set_custom_annotations(formatted_pvalues)\n",
" annotator.annotate()\n",
"\n",
" # Label and show\n",
" plt.title(\"Aptamil vs MM\", y=1.06)\n",
" \n",
" plt.savefig(\"./plot1A.png\", bbox_inches='tight')\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 563
},
"executionInfo": {
"elapsed": 4407,
"status": "ok",
"timestamp": 1669205268773,
"user": {
"displayName": "Martin Schätz",
"userId": "10828352848441153145"
},
"user_tz": -60
},
"id": "c8NTEfbdYorS",
"outputId": "65ee2730-80de-4f6c-c694-2fdb3382c79d"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"p-value annotation legend:\n",
" ns: p <= 1.00e+00\n",
" *: 1.00e-02 < p <= 5.00e-02\n",
" **: 1.00e-03 < p <= 1.00e-02\n",
" ***: 1.00e-04 < p <= 1.00e-03\n",
" ****: p <= 1.00e-04\n",
"\n",
"MM vs. Aptamil: Custom statistical test, P_val:1.881e-03\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABAAAAAJPCAYAAADiw6YAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABODklEQVR4nO3deZyXZb0//tewDIjKFqLoV3IfrQOm4Ba5BJgLUhpCaopauZzU7OjxSJIZncDqYYtbqXU8ZK6gCIqiCKmI4YLpodxRTFBCUdlcmBnm8/vDH5PIsDjOMMD9fD4ePIL7uu7r874/jTNzvz7Xdd1lpVKpFAAAAGCj1qypCwAAAAAanwAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAGykampqmroEAGA9IgAAgCZw5JFHpqKiIj169Mi7777boGMvWbIkl1xySf73f/+3QcdtCBUVFamoqMg///nP2mMnnHBCKioqMm7cuCasbM169+5dW/8FF1ywxv6LFy9O9+7d67zmMWPG1B7fdddd8/rrr69xvF/96le15wwdOvRTXQsAxSQAAIB1bMaMGXn22WfTqlWrLFmyJLfffnuDjj9ixIj8/ve/z9KlSxt0XP7lvvvuS2Vl5Wr73HPPPWv1/0GpVMr48ePX2OfOO+/8RDUCwMcJAABgHbv55puTJKecckqS5Prrr0+pVGqw8dfnqf9333137r777nTq1KmpS6m3du3aZdGiRXnwwQdX2++OO+5IeXn5GsdKssYA4LHHHsvrr7++xvEAYHUEAACwDi1ZsiR33313WrVqlZNPPjm77LJLZs2alalTpzZ1aevEjjvumB133DEtWrRo6lLq7dBDD02S1X4i//rrr+fxxx/Pl7/85dWO9bnPfS5du3bN888/n5kzZ66y3x133JEkaxwPAFZHAAAA69C4cePy/vvv58ADD8xmm22WAQMGJPlwFkBdlq87X7x4ca655pocfPDB6datW3r37p3//u//zrx582r7zpkzJxUVFbVLCi699NJUVFTk8ssvr+1TXV2d2267Ld/+9rfzxS9+Mf/2b/+WPffcM0ceeWSuuOKKvPfeeyu8/uWXX56KioqMHj06Tz75ZL7zne+kZ8+e2XPPPXPCCSdk+vTpSZJ//OMfOeecc7Lvvvtmjz32yIABA3L33XevdD11rYdfW0uWLMkXvvCFVFRUZNasWXX2GT16dCoqKnLyySev8L788Ic/zOGHH57dd989PXr0yNFHH51rrrkm77///ieuo2/fvtlkk03ywAMPZMmSJXX2ufPOO1MqlfK1r31tjeMdccQRtefUZenSpbn33nvzuc99LjvvvPMnrhcAlhMAAMA6dMsttyRJjj766CTJV7/61ZSXl2fKlCl59dVXV3neD37wg/zyl7/M5ptvni9/+cuprq7O9ddfn4EDB+bll19OkrRp0yb9+/fPtttumyTZdddd079//1RUVCRJli1bltNOOy0XXHBBpk+fnl133TW9e/fOjjvumGeffTaXX355TjnllDqXI0yePDnf/OY3849//CP77rtvPvOZz+Sxxx7LSSedlLFjx+aoo47K448/nj322CPbb799/v73v+c//uM/MmbMmAZ77zbbbLMccsghSf71ifjHLd9IcHmw8uqrr2bAgAEZPXp0SqVSDjjggOyxxx556aWX8stf/jInn3xyli1b9onqaNOmTfr06ZOlS5fmvvvuq7PPHXfckQ4dOuSAAw5Y43hf/epXk6x6GcDkyZOzePHitQoTAGB1BAAAsI489dRTef7557P11ltn//33T5J07NgxX/nKV1JTU7PKWQDJhzeBF198ccaMGZPLLrsskyZNSr9+/TJv3rz88Ic/rB3rkksuSc+ePZMkhxxySC655JJ85StfSZLcdtttmTp1arbZZptMmjQp1157bS677LKMHj06N9xwQ1q0aJHp06fnb3/720qvf//992fw4MG59957c8UVV+Suu+5Kt27dUlVVlfPPPz9f/vKXM2nSpPzud7/LmDFj8q1vfSvJqmc21Nfy4KSuT8vnzJmT6dOnp127djn44IOTJH/4wx+yYMGCfOc738mECRNy+eWX5w9/+EPuvffebL311nnyySdz//33f+I6VnfT/vTTT2fmzJnp169fWrZsucaxtt9++3Tr1i1z5szJk08+uVL7HXfckebNm9fOFACA+hIAAMA6svzT/wEDBqRZs3/9CD7mmGOSfPhouFU9EnDgwIH5+te/Xvvv8vLyDB8+PB06dMgTTzyRv//972tVQ9++fXPOOedkiy22WOF4z549a2cKzJ49e6XzOnbsmHPPPbe27vLy8hx++OFJklatWuVHP/pRWrVqVdt/+c3qqqbq19dee+2Vz372s5k9e3aeeOKJFdrGjRuXUqmUfv361dayfKnBdtttt0Lfzp0756c//WlGjBhRr2n1vXr1SseOHTNt2rS89dZbK9WR5BN9Yt+/f/8kKwcKb7/9dqZOnZpevXpt0BsnArB+EAAAwDqwePHiTJgwIc2bN6/9FHu5vfbaKzvssEMWL16csWPH1nl+XTeTm2yySQ488MAkycMPP7zGGgYNGpQrr7xyhU+Sq6qq8tJLL2XcuHFZsGBBktT5eLvu3buv9Gl2x44dkyTbbrtt7W72y7Vt2zZJGuVRhMuDkI8vA1j+7+XT/5Nkv/32S5IMGzYs5513XsaPH197w96rV68MGDAgn/3sZz9xDS1atMjhhx+eZcuWrbDXwbJly3LXXXdl++23T/fu3dd6vH79+qV58+aZMGHCCksS7r777lRVVeXII4/8xDUCwMdtuFvwAsAGZPnmf5tsskmGDBmyUvvyzfduuOGGfPOb31ypffvtt69z3C5duiTJWm+qt3Dhwtx6662ZOnVqZs2alXnz5tU+NrCsrCxJ6twDoH379isdW95/eRBQV1tjOOqoo3LZZZflnnvuydChQ1NeXp4nn3wyr7zySioqKvJv//ZvtX0HDx6cWbNmZdSoUbnjjjtyxx13pKysLBUVFendu3cGDRpU+x5+Uv3798/111+f8ePH54QTTkjyYRAzf/78HH/88Z9orE6dOmW//fbL1KlT85e//KV2icgdd9yRzTbbLH369KlXjQDwUWYAAMA6sHz6//vvv59p06at9Gf5DfxLL71U56f5zZs3r3Pc5Tfra/NYvaeeeip9+/bNL37xi/zf//1funbtmmOPPTYXXXRRxo0bl3322WeV565Pj+3bcsst86UvfSkLFizIlClTkqR25sRHP/1PPnzffvKTn2Ty5MkZOnRovvzlL6dt27Z57rnn8tvf/jaHHnpopk2bVq86vvCFL+Szn/1snnrqqdplE+PGjUtZWVntHgGfxMf3FXjllVfyf//3fznkkEPSunXretUIAB8lAACARvbXv/41L7zwQjbffPPMmDEjzz//fJ1/lk/N/9Of/rTSGHPnzq1z7Dlz5iRJtt566zXWMWTIkCxatCj9+/fPtGnTct111+VHP/pRjjvuuOy6665ZtGjRp7jKdWv5jf748eNTVVWVe+65Jy1btlzljfc222yTwYMH56qrrsojjzySUaNGZb/99ssHH3yQESNG1LuO5Wv377rrrrz33nv585//nL322ivbbLPNJx7r4IMPTps2bXLfffdl6dKltUsa7P4PQEMRAABAIxs1alSS5LDDDltho7yPW743wIMPPrjSRnyTJ09eqf+7776bhx56KEly0EEH1R6va/r9/PnzazfkO+2001aqY968eXnhhReSpHZJwPqsd+/e6dixYx588MFMnjw5CxYsSO/evdOhQ4faPjU1NTnppJOyzz77rBCgNGvWLLvvvnvOP//8JMnrr79e7zo+GgBMmjQp7733Xr1v2Nu0aZPevXvn3XffzYMPPpjx48dnm222yd57713v+gDgowQAANCIFi1alAkTJiTJGjdy23fffdO1a9c6Hwn4hz/8IY899ljtv99///0MGTIkCxcuTN++fVfYI2D5zf1HP9HfbLPNUl5eniQrPbt+zpw5OeOMM1JdXZ2kcTbua2jLP+1/77338vOf/zzJytP/mzVrlo4dO2bBggUZMWJEPvjgg9q2mpqa2mUDX/jCF+pdx3bbbZfu3bvnhRdeyNVXX53WrVvn0EMPrfd4y2cwXHrppfnHP/6R/v37N+p+CgAUy/qzoA8ANkJjx47NBx98kK5du6ZHjx6r7VtWVpYBAwbk17/+dcaMGZOzzz67tq19+/YZPHhwevbsmY4dO+aJJ57I/PnzU1FRkWHDhq0wzg477JAkuemmmzJ79uwceOCBGTRoUI4//vhce+21ufTSSzNx4sR07do18+fPz1NPPZXkw5vZV155JW+//XbDvgmNZMCAARk5cmRef/31bLnllrUb533U+eefnyeeeCITJ07M448/Xvs0g+effz6zZ89O+/bt69yU8ZPo379/ZsyYkZkzZ6Zfv37ZbLPN6j1Wr1698pnPfCYzZ85MYvo/AA3LDAAAaETLp/+v7Y3cUUcdlebNm2fRokUrPBJw+PDhOf300/Paa6/lgQceSLt27XL22Wfn5ptvXun58N/4xjcyYMCAtGrVKlOmTMn06dOTJOedd15GjBiRbt265bXXXsuf//znzJ07N4cddlhGjRqVc845J0ly//33N8CVN75ddtml9lF7Rx11VJo1W/nXmi233DKjRo3KN7/5zbRr1y7Tpk3LQw89lObNm+fEE0/MnXfemZ133vlT1dGvX7/aTRI/7Q378scLJkm3bt1qwxwAaAhlpbqe9QMArBd69+6d1157LTfccEN69uzZ1OUAABswMwAAAACgAAQAAAAAUAACAAAAACgAewAAAABAAZgBAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAALZq6gI1Nz549U1lZmS222KKpSwEAAKAA3nzzzZSXl2f69Omr7ScAaGBLly7NsmXLmroMAAAACqK6ujqlUmmN/QQADaxz585JksmTJzdxJQAAABRBnz591qqfPQAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAADr3J133pmKioo8+eST9WoHAD45AQAAsM688sorSZIOHTokSdq1a5dSqVR7fE3tAED9tWjqAgCAYnjnnXfSr1+/dO3aNQcccECS5I477si4ceOycOHCTJgwYbXt06ZNS6tWrZryEgBggyYAAADWiVKplP/6r//KU089lbFjxyZJbr311nTv3j09e/bMsmXLVtteVVUlAACAT0EAAACsEx07dsyJJ56YvffeOw899FA++9nPprKyMkOGDEnXrl2TZI3tAED92QMAAFhn5s6dm1NOOSVbbrllbr755lRXV+c73/lO3n777bVqBwDqzwwAAGCdad++fQ4++OB87WtfS8eOHTN8+PA89thj2WyzzdaqHQCov7JSqVRq6iI2Jn369EmSTJ48uYkrAQAAoAjW9j7UEgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABRAi6YuAGBdKZVK+eCDD5q6DADYILVu3TplZWVNXQbwKQgAgEIolUr59re/nRkzZjR1KQCwQdp9993zhz/8QQgAG7D1NgBYsmRJfv/732fixImZM2dOWrRokZ133jkDBw7MwIEDV+h71llnZeLEiXWO07x58zzzzDMrHHvjjTdyxRVXZOrUqXnzzTez9dZb56tf/WpOOeWUlJeXN9o1AU3ngw8+cPMPAJ/C//3f/+WDDz7IJpts0tSlAPW0XgYAixYtynHHHZcXX3wxu+66a4455ph88MEHmTx5cn74wx/mr3/9ay6++OLa/s8880zatm2bwYMHrzTWxxPKefPm5dhjj83cuXPzla98Jdtuu22mTZuWyy67LI899lj+8Ic/pGXLlo1+jUDTmThxol9eAGAtvf/++/nKV77S1GUADWC9DACuvPLKvPjiixk0aFCGDRuWZs0+3KvwvPPOy7HHHpsxY8bk0EMPzYEHHphFixZlzpw5+eIXv5izzjprjWP/7Gc/y2uvvZaf//znOfLII5MkNTU1Of/883PHHXfk5ptvzgknnNCYlwc0sU022UQAAABA4ayXTwG46667UlZWlvPOO6/25j9J2rZtm1NOOSVJMmnSpCTJs88+myTZbbfd1jjuP//5z9xzzz3Zeeeda2/+k6RZs2YZMmRImjdvnhtuuKEBrwQAAADWD+vdDIBly5bl1FNPzbvvvpu2bduu1L58jf67776bJLXr+9cmAHjkkUdSU1OT/fbbb6W2z3zmM9l1113z9NNP55///Ge22mqrT3MZAAAAsF5Z7wKA5s2b17mWf7l77rknSVJRUZHkXwHA3LlzM3jw4Dz33HOpqqpKt27dctppp6VXr161586aNStJst1229U59rbbbpunn346L7/88moDgD59+qyybe7cuenSpcsq2wEAAKAprJdLAFZl0qRJuffee9OmTZscddRRSf61BOCyyy5L+/btM3DgwHzxi1/M9OnT8+1vfzvXX3997fnvvPNOkqR9+/Z1jt+uXbskH25CCAAAABuT9W4GwKo8/PDDOffcc5MkF110UTp37pyamppsttlm+exnP5vLLrssu+66a23/GTNm5IQTTsiIESOy3377Zccdd0x1dXWSrHKX/+XLC5YuXbraWiZPnrzKttXNDgAAAICmskHMABg3blxOO+20fPDBB/nP//zP2g38mjVrlptvvjkTJ05c4eY/Sbp3754TTzwxy5Ytyx133JEkad26dZKkqqqqzteprKxMkmy66aaNdCVAU2ndunV233337L777rXfCwCANfMzFDYe6/UMgFKplF/96le55ppr0rx58wwbNizHHHPMWp/fvXv3JMmrr76aZM1T/BcuXJgk2XzzzT9N2cB6qKysLH/4wx9q/w4ArB0/Q2Hjsd4GAJWVlTn33HMzceLEtGnTJr/5zW9y4IEHrtBn4cKFeemll9KmTZuVZgAkyfvvv5/kX5/877jjjkn+FQh83OzZs5MkO+20U4NdB7D+8EsLANSPn6GwcVgvA4Dq6uqcccYZmTJlSrbaaqtcffXVdd7gz5gxI9/5zndSUVFRO83/ox577LEkye67754k2WuvvdKsWbNMmzZtpb5vvfVWnnvuueywww75zGc+08BXBAAAAE1rvdwD4PLLL6+9+b/55pvrvPlPkn322SdbbLFFnn/++YwePXqFtgcffDC33XZbtthiixxxxBFJki233DIHHnhgnn322dx22221fWtqavKzn/0sy5YtywknnNB4FwYAAABNpKxUKpWauoiPeuONN9KnT59UVlbmy1/+cj7/+c/X2W+HHXZIv3798pe//CWnn356li5dmv333z8777xzXn755Tz44IPZZJNN8vvf/z49e/asPW/27Nn5xje+kbfffjt9+vTJ9ttvn2nTpuXvf/97vvSlL+Wqq65a5VMC1sbypwCs7kkBAAAA0FDW9j50vQsAxo0bl//6r/9aY78+ffrkt7/9bZLkxRdfzFVXXZVHHnkkCxYsSIcOHfKlL30p3/3ud9O1a9eVzp0zZ04uu+yyTJ06NUuWLMk222yTr371qzn55JM/9c6mAgAAAADWpQ02ANjQCQAAAABYl9b2PnS93AMAAAAAaFgCAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAG0aOoCoKhKpVIqKyubugxodOXl5SkrK2vqMgAACk8AAE2gVCrlyiuvzCuvvNLUpUCj22677XLGGWcIAQAAmpglAAAAAFAAZgBAEygrK8sZZ5xhCcA6VFlZmWHDhiVJLrroopSXlzdxRcVhCQAAwPpBAABNpKysLK1atWrqMgqpvLzcew8AQOFYAgAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFECLpi5gVZYsWZLf//73mThxYubMmZMWLVpk5513zsCBAzNw4MAV+i5dujR//OMfM3bs2Lz22mvZfPPNc9BBB+V73/teOnfuvNLYixYtyjXXXJOJEyfmn//8Zz7zmc/kkEMOyRlnnJHNN998XV0iAAAArDPr5QyARYsW5ZhjjslVV12V8vLyHHPMMTniiCMyZ86c/PCHP8wPfvCD2r7V1dU588wz88tf/jLt2rXL4MGD071794wePToDBgzIP//5zxXGXrJkSU466aT8/ve/T9euXXPiiSema9eu+d///d8ce+yxWbJkybq+XAAAAGh06+UMgCuvvDIvvvhiBg0alGHDhqVZsw9zivPOOy/HHntsxowZk0MPPTQHHnhgRo8enSlTpmTAgAEZMWJE7RijRo3KhRdemOHDh+fyyy+vPX7VVVfl6aefzllnnZUzzzyz9vivf/3rXHXVVbniiisyZMiQdXexAAAAsA6slzMA7rrrrpSVleW8886rvflPkrZt2+aUU05JkkyaNClJMnLkyDRr1iznnHPOCmMMGjQou+yySyZNmpR58+YlSSorK3PjjTemXbt2OfXUU1fof8YZZ6RDhw659dZbU1lZ2ZiXBwAAAOvcehcALFu2LKeeemrOPvvstG3bdqX28vLyJMm7776buXPn5pVXXskuu+ySTp06rdS3V69eqampySOPPJIkmTFjRt5999307NmzdpyPjrvXXntl8eLFmTFjRiNcGQAAADSd9W4JQPPmzTN48OBVtt9zzz1JkoqKisyaNStJst1229XZd9ttt02SvPzyy0my1v1nzZqVnj17fuLaAQAAYH213gUAqzNp0qTce++9adOmTY466qg8/vjjSZJ27drV2X/58cWLFydJ3nnnnSRJ+/btV9t/0aJFq62jT58+q2ybO3duunTpstrzAQAAYF1b75YArMrDDz+cc889N0ly0UUXpXPnzqmqqkqSlabzL7f8+NKlS5Oktn/Lli3Xqj8AAABsLDaIGQDjxo3L0KFDU1VVlf/8z//MkUcemSRp3bp1kqxy077lx9u0abNC/+VBwJr6r8rkyZNX2ba62QEAAADQVNbrAKBUKuVXv/pVrrnmmjRv3jzDhg3LMcccU9v+8Sn+H7dw4cIkqd1McE1T/D/eHwAAADYW620AUFlZmXPPPTcTJ05MmzZt8pvf/CYHHnjgCn123HHHJMmrr75a5xizZ89Okuy000716g8AAAAbi/VyD4Dq6uqcccYZmThxYrbaaqvcdNNNK938J0nnzp2z/fbb57nnnsvbb7+9UvvDDz+cZs2apUePHkmSz3/+89l8880zffr0lZYBVFZW5rHHHsumm26az33uc41zYQAAANBE1ssA4PLLL8+UKVOy1VZb5eabb86uu+66yr6DBg1KdXV1fvGLX6RUKtUeHzVqVF544YUccsgh6dy5c5IPN/n72te+lrfeeiu/+93vVhjnyiuvzIIFC3LsscemRYv1dmIEAAAA1Mt6d6f7xhtv5Nprr02S7Lbbbrn11lvr7LfDDjukX79+OeGEEzJx4sTcfvvtmTlzZvbdd9/MmjUrkyZNSpcuXTJkyJAVzvve976XqVOn5sorr8xf//rXdOvWLTNmzMgjjzyS3XbbLf/+7//e6NcIAAAA69p6FwBMmzatdjf++++/P/fff3+d/fr06ZN+/fqlZcuWufbaa3P11VfnrrvuysiRI7PFFltk4MCBOeuss7LllluucF67du1y00035YorrsjkyZMzffr0bLXVVvnWt76V008/PZtttlmjXyMAAACsa2Wlj86b51Nb/hjA1T0qEFj3li5dmqFDhyZJhg8fnlatWjVxRQAA0DDW9j50vdwDAAAAAGhYAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACmCDCQB+/etfp6KiIosWLVqp7U9/+lMqKipW+Wf69Okr9F+6dGmuueaaHH744dl9993zpS99KT/84Q/zxhtvrKvLAQAAgHWqRVMXsDbGjh2ba665ZpXtzzzzTJLkxBNPzOabb75S+9Zbb1379+rq6px55pmZMmVK9txzz/Tp0ycvvfRSRo8enQcffDCjR4/OVltt1fAXAQAAAE1ovQ4Aqqurc9lll+Waa65JqVRaZb9nn302rVq1yvnnn5/mzZuvdszRo0dnypQpGTBgQEaMGFF7fNSoUbnwwgszfPjwXH755Q12DQAAALA+WG+XAEybNi39+/fP1VdfnW7duqVDhw519qusrMzMmTOzyy67rPHmP0lGjhyZZs2a5Zxzzlnh+KBBg7LLLrtk0qRJmTdvXoNcAwAAAKwv1tsAYNy4cXnjjTdy7rnn5sYbb0ybNm3q7Pfiiy+mqqoqu+222xrHnDt3bl555ZXssssu6dSp00rtvXr1Sk1NTR555JFPXT8AAACsTxo1AFi2bFkeeOCBep179NFHZ/LkyTn11FPTsmXLVfZbvv6/rKws55xzTg444IB07949X/3qV3PDDTekpqamtu+sWbOSJNttt12dY2277bZJkpdffrleNQMAAMD6qt57ADz88MO57rrrMnv27FRWVq6wRr9UKmXp0qVZuHBhampqam/SP4mePXuuVb9nn302SXLLLbdk7733zhFHHJH58+fnwQcfzE9+8pM8/vjj+fWvf52ysrK88847SZJ27drVOdby44sXL17ta/bp02eVbXPnzk2XLl3WqnYAAABYV+oVAPz1r3/NqaeempqamtVuzpckO++8c70KW1tlZWXZeuutc/bZZ+fII4+sPT5//vycdNJJmTBhQr74xS9m0KBBqaqqSpKUl5fXOdby40uXLm3UmgEAAGBdq1cAMHLkyCxbtix9+/bN0UcfnQcffDC33HJLfve732XZsmW1j9PbcccdM2bMmIaueQUXXnhhLrzwwpWOd+rUKUOGDMm3v/3t3H777Rk0aFBat26d5MONA+uy/Piq9htYbvLkyatsW93sAAAAAGgq9doD4Mknn0ynTp3yq1/9KgcddFAOO+yw1NTUpKamJr17986wYcMydOjQzJw5MzfeeGND17zWdt999yTJq6++mmTNU/wXLlyYJGnbtu06qA4AAADWnXoFAAsWLMjnPve52inzO+20U5Lk6aefru1z3HHHZcstt8zdd9/dAGXWraqqKjNmzMjjjz9eZ/t7772XJGnVqlWSZMcdd0zyr0Dg42bPnp3kX9cDAAAAG4t6BQAtW7asnU6fJB07dkybNm1qd9lPPlyb/7nPfW6FYw2tqqoqxxxzTAYPHpy33357pfbHHnssSfKFL3whSdK5c+dsv/32ee655+rs//DDD6dZs2bp0aNHo9UMAAAATaFeAUCXLl1WelRe165da3fkX66mpibvv/9+/atbgzZt2qRv376pqanJz372sxUe+ffqq6/mkksuSbNmzXLSSSfVHh80aFCqq6vzi1/8YoUNDEeNGpUXXnghhxxySDp37txoNQMAAEBTqNcmgPvss09uuumm/M///E9OPvnkNGvWLLvttlvGjh2bv/71r9lzzz3z9ttvZ/r06dlyyy0buuYVXHDBBfn73/+ecePG5fnnn89+++2X+fPnZ/LkyXnvvffygx/8IN27d6/tf8IJJ2TixIm5/fbbM3PmzOy7776ZNWtWJk2alC5dumTIkCGNWi8AAAA0hXrNABg8eHBatWqVSy65JN/73veSJF//+tdTKpVy+umn5/vf/36OOuqovPvuu9lrr70atOCP22qrrTJmzJicfPLJeffdd3P99ddnypQp6dGjR0aOHLnCp//Jh8sXrr322px++ulZsGBBRo4cmWeeeSYDBw7MLbfckq222qpR6wUAAICmUFb66Dz4T+Dhhx/OD3/4w+y77765+OKLkyTnnHPOCpv+tW/fPrfddlu22Wabhql2A7D8MYCre1QgsO4tXbo0Q4cOTZIMHz68dnNQAADY0K3tfWi9lgAkSa9evTJ58uS89dZbtcd+9atfpU+fPnn88cfTsWPHDBo0yCfqAAAAsB6odwCQJM2aNcsWW2yxwrF+/fqlX79+n6ooAAAAoGF9qgAgSWbPnp1HHnkkr7/+enbYYYf0798/06dPT7du3UyxBQAAgPVEvQOAJUuW5KKLLsqECRNqH6fXv3//9O/fP5dccklmz56d3/72t9l9990brFgAAACgfuoVAFRWVubkk0/O3/72t2y22WbZY4898tBDD9W219TU5K233sq3v/3t3HHHHdl6660brGAAAIqtVCqlsrKyqcuARldeXp6ysrKmLoONSL0CgD/96U/529/+loMOOii/+MUv0rZt2+y666617TfeeGN+8pOfZNSoURk5cmQuuOCCBisYAIDiKpVKufLKK/PKK680dSnQ6LbbbrucccYZQgAaTLP6nDR+/Pi0a9cuv/zlL9O2bduV2lu0aJEf/ehH6dSpU/7yl7986iIBAACAT6deMwBeeeWV7Lffftl0001XPXCLFtl9990zbdq0ehcHAAAfVVZWljPOOMMSgHWosrIyw4YNS5JcdNFFKS8vb+KKisMSABpavQKAsrKyLF26dI393n333foMDwAAq1RWVuZpU02kvLzcew8bsHotAdh+++3z97//PYsXL15ln0WLFuXpp5/O9ttvX+/iAAAAgIZRrwCgX79+WbhwYYYOHZoPPvhgpfaampr8+Mc/zpIlS3LIIYd86iIBAACAT6deSwCOP/74jB8/Pvfdd18OPvjg7LHHHkmSF154ISNGjMgDDzyQV199NTvssEOOP/74Bi0YAAAA+OTqNQOgvLw8//M//5P9998/b775ZiZOnJgkee6553Ldddfl1VdfzZ577pn//d//TZs2bRq0YAAAAOCTq9cMgCTp0KFDrrnmmjz77LN5+OGH8/rrr2fZsmXZcssts88++6RHjx4NWScAAADwKdQrALjqqquy22675cADD8xuu+2W3XbbraHrAgAAABpQvQKAkSNHpkOHDjnwwAMbuh4AAACgEdRrD4D33nsvO++8c0PXAgAAADSSegUAPXv2zBNPPJGFCxc2dD0AAABAI6jXEoAf//jHOf3003PkkUfm61//enbbbbe0b98+zZrVnSfsueeen6pIAAAA4NOpVwBwyCGHJElKpVJ++9vfrrZvWVlZnnnmmfq8DAAAANBA6hUAdOnSZa37lpWV1eclAAAAgAZUrwDgz3/+81r1e//99zNu3Lj6vAQAAADQgOoVAKzJnDlzcsMNN2TMmDFZvHhxjjnmmMZ4GQAAAGAtNWgAMG3atFx33XWZMmVKampqUiqV0rx584Z8CQAAAKAePnUA8P7772fs2LG54YYb8tJLL6VUKiVJunbtmgEDBuSoo4761EUCAAAAn069A4DZs2evMM2/VCqlrKws/fr1y8CBA7Pvvvs2ZJ0AAADAp/CJA4CHH344f/rTn/LQQw/VTvPfYYcd8t5772XevHn55S9/2Rh1AgAAAJ/CWgUA77//fsaMGZMbbrghs2bNSqlUSnl5eQ477LAcc8wx6dmzZ04++eTMmzevsesFAAAA6mGtAoADDjggS5YsSalUys4775wBAwbka1/7Wjp06NDY9QEAAAANYK0CgMWLF6d169b5zne+k5NPPjmbbrppY9cFAAAANKBma9Np1113zQcffJArr7wyvXr1ytlnn52HHnqosWsDAAAAGshaBQBjx47NqFGjctRRR6WsrCz33ntvTj311PTu3Tu//e1vrf0HAACA9dxaBQBJ0r1794wYMSIPPfRQLrzwwuy88855/fXXc/nll6dPnz556qmnkiRVVVWNVSsAAABQT2sdACy32Wab5Zvf/GbuuOOO3HLLLTnyyCPTsmXLvP/++ymVSunVq1cuuuiiPPnkk41RLwAAAFAPnzgA+Kjdd989F198cR566KH88Ic/zM4775xFixZl1KhROe6443LIIYfkt7/9bUPVCgAAANTTpwoAlttss81y/PHH584778xNN92Ur33ta2nVqlX+8Y9/5PLLL2+IlwAAAAA+hbV6DOAnsccee2SPPfbI0KFDc/vtt2f06NEN/RIAAADAJ9QgMwDqsvnmm2fw4MG58847G+slAAAAgLXUaAEAAAAAsP4QAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAXQoqkLoOmVSqVUVlY2dRnQqD76Ne7rnSIoLy9PWVlZU5cBAKxHBACksrIyQ4cObeoyYJ0ZNmxYU5cAjW748OFp1apVU5cBAKxHLAEAAACAAjADgBX0+OqZadaiZVOXAY2iVColiWnRbLRqqqvyxB1XNHUZAMB6SgDACpq1aJnmLcqbugwAAAAamCUAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQABtMAPDrX/86FRUVWbRoUZ3tEyZMyDe+8Y306NEje++9d0477bTMmDGjzr41NTW5+eabc+SRR2aPPfbIvvvum+9///uZNWtWY14CAAAANJkNIgAYO3ZsrrnmmlW2/+53v8v3v//9zJ8/P4MGDcrBBx+cRx99NMcee2weeuihlfr/6Ec/ykUXXZRly5bluOOOS69evXLfffdlwIABee655xrzUgAAAKBJtGjqAlanuro6l112Wa655pqUSqU6+8ycOTOXXXZZdtlll9xyyy1p06ZNkuT444/Psccem6FDh2bixIlp3bp1kmTKlCkZPXp0vvSlL+Xqq69OixYfvgVHHnlkTjnllFxwwQUZM2bMurlAAAAAWEfW2xkA06ZNS//+/XP11VenW7du6dChQ539/vjHP6ampibf/e53a2/+k2S33XbL0UcfnXnz5mXy5Mm1x0eOHJkkOfvss2tv/pNk//33z0EHHZSnn346Tz31VKNcEwAAADSV9TYAGDduXN54442ce+65ufHGG1e4uf+oadOmJUl69eq1UtsXv/jFJMlf/vKXJB/OKHj88cfTrl27dOvWbaX+y8dY3h8AAAA2FuvtEoCjjz46Q4YMSfv27VfZp6qqKnPmzEnHjh3Ttm3bldq7du2aJHn55ZeTJK+99loqKytTUVGRsrKyNfZflT59+qyybe7cuenSpctqzwcAAIB1bb0NAHr27LnGPgsWLEipVEq7du3qbF8eCixevDhJ8s477yTJWvcHAACAjcV6GwCsjerq6iRJy5Yt62wvLy9PkixdurRe/Vflo3sKfNzqZgcAAABAU1lv9wBYG61atUry4VKAulRWViZJ7f4Bn7Q/AAAAbCw26ABg8803T/PmzVc5ZX/RokVJ/jW1f/l+AmvbHwAAADYWG3QA0LJly2y77bZ566238u67767U/uqrryZJdtpppyTJNttsk9atW9ceX1N/AAAA2Fhs0AFAkuyzzz4plUq1jwP8qIcffjhJstdeeyVJmjVrlp49e+add97Jc889t8b+AAAAsLHY4AOAgQMHpqysLJdeeukKU/ufe+653Hbbbdlqq63St2/f2uODBg1Kkvz85z+vXfOfJA899FAeeOCBdO/ePbvvvvu6uwAAAABYBzbopwAkSbdu3XLyySfn2muvTf/+/XPooYdmyZIlGT9+fKqrqzNixIja3f2T5JBDDskhhxySe++9N1/72tfSu3fvzJs3LxMmTMhmm22W//7v/27CqwEAAIDGscEHAEly/vnnZ4cddsiNN96YG2+8MZtuumn23nvvnHnmmenevftK/X/1q19l5MiRGTNmTK677rq0a9cuBx98cM4666zsuOOOTXAFAAAA0Lg2mADgz3/+82rbBw4cmIEDB67VWC1atMh3vvOdfOc732mI0gAAAGC9t8HvAQAAAACsmQAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoABaNHUBAAAbqlKplMrKyqYuAxrVR7/Gfb1TBOXl5SkrK2vqMhqFAAAAoJ4qKyszdOjQpi4D1plhw4Y1dQnQ6IYPH55WrVo1dRmNwhIAAAAAKAAzAAAAGsB/HPD/0rL5xjllFEqlUpJstNOioWpZKb+eMqepy2h0AgAAgAbQsnlZypubXAmwYapp6gLWCT+lAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAbRo6gJYvyyrrmrqEgCoJ9/DAYDVEQCQUqlU+/e/3nFFE1YCQEP56Pd2AIDEEgAAAAAoBDMASFlZWe3f9/zqmWneomUTVgNAfS2rrqqdyfXR7+0AAIkAgI9p3qJlmrcob+oyAAAAaGCWAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACiAjWoTwD/96U/56U9/usr2G264IT179kySLF26NH/84x8zduzYvPbaa9l8881z0EEH5Xvf+146d+68rkoGAACAdWKjCgCeeeaZJMmJJ56YzTfffKX2rbfeOklSXV2dM888M1OmTMmee+6ZPn365KWXXsro0aPz4IMPZvTo0dlqq63Wae0AAADQmDaqAODZZ59Nq1atcv7556d58+ar7Dd69OhMmTIlAwYMyIgRI2qPjxo1KhdeeGGGDx+eyy+/fF2UDAAAAOvERrMHQGVlZWbOnJlddtlltTf/STJy5Mg0a9Ys55xzzgrHBw0alF122SWTJk3KvHnzGrNcAAAAWKc2mgDgxRdfTFVVVXbbbbfV9ps7d25eeeWV7LLLLunUqdNK7b169UpNTU0eeeSRxioVAAAA1rmNZgnA8vX/ZWVlOeecczJ9+vQsWLAg2223Xb7xjW/k2GOPTbNmzTJr1qwkyXbbbVfnONtuu22S5OWXX17la/Xp02eVbXPnzk2XLl3qeRUAAADQODaaGQDPPvtskuSWW27Jm2++mSOOOCKHHnpo5s2bl5/85Cc555xzUiqV8s477yRJ2rVrV+c4y48vXrx43RQOAAAA68BGMwOgrKwsW2+9dc4+++wceeSRtcfnz5+fk046KRMmTMgXv/jFlJeXJ0nt/37c8uNLly5d5WtNnjx5lW2rmx0AAAAATWWjmQFw4YUX5v7771/h5j9JOnXqlCFDhiRJbr/99rRu3TrJh5sG1mX58TZt2jResQAAALCObTQBwOrsvvvuSZJXX311jVP8Fy5cmCRp27btuikOAAAA1oGNIgCoqqrKjBkz8vjjj9fZ/t577yVJWrVqlR133DHJh2FAXWbPnp0k2WmnnRqhUgAAAGgaG8UeAFVVVTnmmGNSKpXy8MMPp2PHjiu0P/bYY0mSL3zhC+ncuXO23377PPfcc3n77bdX6vvwww+nWbNm6dGjxzqrHwDY8FUuq2nqEgCop6J8D98oAoA2bdqkb9++uffee/Ozn/0sP/vZz9Ks2YeTG1599dVccskladasWU466aQkyaBBg/Lzn/88v/jFL3LxxRenrKwsSTJq1Ki88MILOeyww9K5c+emuhwAYANRKpVq//6bKa81YSUANJSPfm/f2GwUAUCSXHDBBfn73/+ecePG5fnnn89+++2X+fPnZ/LkyXnvvffygx/8IN27d0+SnHDCCZk4cWJuv/32zJw5M/vuu29mzZqVSZMmpUuXLrWbBgIAAMDGYqMJALbaaquMGTMmV111VSZNmpTrr78+bdq0SY8ePfLtb387++23X23fli1b5tprr83VV1+du+66KyNHjswWW2yRgQMH5qyzzsqWW27ZhFcCAGwols8iTJLvH7BNyptvFNsrARRO5bKa2plcH/3evrHZaAKAJGnfvn2GDBmyVp/gt2nTJv/xH/+R//iP/1gHlQEAG7vy5s0EAACs1/yUAgAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAbRo6gJYv9RUVzV1CdBoSqVSkqSsrKyJK4HG4Xs4ALA6AgBW8MQdVzR1CQAAADQCSwAAAACgAMwAIOXl5Rk+fHhTlwGNqrKyMsOGDUuSXHTRRSkvL2/iiqBx+RoHAD5OAEDKysrSqlWrpi4D1pny8nJf8wAAFI4lAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAF4CkAAAANoGpZKUlNU5cBjaJUKiX58OlRsDH68Hv4xk8AAADQAH49ZU5TlwAAq2UJAAAAABSAGQAAAPVUXl6e4cOHN3UZ0KgqKyszbNiwJMlFF12U8vLyJq4IGtfG/DUuAAAAqKeysrK0atWqqcuAdaa8vNzXPGzALAEAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIACEAAAAABAAQgAAAAAoAAEAAAAAFAAAgAAAAAoAAEAAAAAFIAAAAAAAApAAAAAAAAFIAAAAACAAhAAAAAAQAEIAAAAAKAAWjR1AVBUpVIplZWVTV1GYXz0vfa+r1vl5eUpKytr6jIAAApPAABNoFQq5corr8wrr7zS1KUU0rBhw5q6hELZbrvtcsYZZwgBAACamAAAAIANill065ZZdE3HLDoamgAAmkBZWVnOOOMMP0QpBL+8AA3JLLqmZRbdumUWHQ1NAABNpKysLK1atWrqMgAAgIIQAAAAsMEwi44iMYuOhiYAAABgg2IWHUD9NGvqAgAAAIDGJwAAAACAAhAAAAAAQAEIAAAAAKAABAAAAABQAAIAAAAAKAABAAAAABSAAAAAAAAKoEVTF9CUJkyYkJEjR2bmzJlp3rx59thjj5xxxhnp3r17U5cGAAAADaqwMwB+97vf5fvf/37mz5+fQYMG5eCDD86jjz6aY489Ng899FBTlwcAAAANqpAzAGbOnJnLLrssu+yyS2655Za0adMmSXL88cfn2GOPzdChQzNx4sS0bt26iSsFAACAhlHIGQB//OMfU1NTk+9+97u1N/9Jsttuu+Xoo4/OvHnzMnny5CasEAAAABpWIQOAadOmJUl69eq1UtsXv/jFJMlf/vKXdVoTAAAANKbCBQBVVVWZM2dOOnbsmLZt267U3rVr1yTJyy+/vK5LAwAAgEZTuD0AFixYkFKplHbt2tXZvjwUWLx48SrH6NOnzyrb5syZk+bNm6+2DwAAADSUuXPnpnnz5mvsV7gAoLq6OknSsmXLOtvLy8uTJEuXLq3X+GVlZWnRonBvK2wQ5s6dmyTp0qVLE1cCABsWP0Nh/daiRYvae9nV9lsHtaxXWrVqleTDpQB1qaysTJIVNgf8OBsEwoZp+cwc/w0DwCfjZyhsHAq3B8Dmm2+e5s2br3KK/6JFi5Kkzv0BAAAAYENVuACgZcuW2XbbbfPWW2/l3XffXan91VdfTZLstNNO67o0AAAAaDSFCwCSZJ999kmpVKp9HOBHPfzww0mSvfbaa12XBQAAAI2mkAHAwIEDU1ZWlksvvXSFpQDPPfdcbrvttmy11Vbp27dvE1YIAAAADatwmwAmSbdu3XLyySfn2muvTf/+/XPooYdmyZIlGT9+fKqrqzNixIi12kERAAAANhSFDACS5Pzzz88OO+yQG2+8MTfeeGM23XTT7L333jnzzDPTvXv3pi4PAAAAGlRZqVQqNXURAAAAQOMq5B4AAAAAUDQCAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAA2KGPGjElFRUUqKirSv3//NfY///zza/s/+uijSZLLL7+89tjpp5++xjGOP/742v5z5sz51NcAAJ/GnXfeWftzafr06Q027ttvv50//vGPDTbep1FRUZGePXvW/vvRRx9NRUVFvvvd7zZhVbDhEwAAG6wXXnghM2fOXGX7Bx98kPvuu2+1Y0ydOjULFy5cZfvcuXMb9JcrAPi0Ro0alTZt2iRJbrzxxgYZ86233srBBx+cMWPGNMh4n9aZZ56ZU089tanLgI2OAADYIHXu3DlJMn78+FX2+fOf/5x33303m2666SrHqKqqysSJE1c5xvjx41MqlVY5BgCsS//4xz/y+OOP5+CDD87OO++ciRMn5s033/zU477//vtZsmRJA1TYMM466ywBADQCAQCwQTrooIPSpk2bTJgwYZV97rzzznTo0CF77bVXne2HHnpokqxxjF133TXbbrvtpysYABrArbfemlKplAMOOCCHHXZYqqqqMmrUqKYuC9hACACADVLr1q3Tu3fvvPLKK3n66adXal+4cGEeeuihHH744WnevHmdY2yzzTbZY4898sgjj+Ttt99eqf3FF1/M888/n69+9asNXj8AfFLV1dW5/fbb06JFi/Tq1av259Mtt9yS6urqFfou3zNn9OjRGTNmTPr165fu3bund+/eGTFiRN55553avpdffnn69OmTJHnuuedSUVGRIUOG1LbPmTMn//3f/51DDz00X/jCF9KtW7f07t07P/rRjzJv3rwVXveEE07I5z73uSxevDjDhw/P/vvvn+7du6d///654447kiRPPPFEBg8enD322CNf+tKXcu655640zsf3AAAahgAA2GD169cvSXLXXXet1HbPPfekqqpqjRsF9uvXL8uWLatzFsCdd96ZZs2a5YgjjmiYggHgU3jggQfy5ptv5oADDkiHDh2y7bbbpmfPnpk3b14mT55c5zmjRo3KD37wg3Tt2jXHHXdc2rdvnz/+8Y855phjakOAvffeO4MHD06SdOrUKWeeeWb69u2bJJk5c2a+/vWv55Zbbskuu+yS448/Pl//+teTfBg8HH/88amsrFzhNUulUk444YRMnjw5hx9+ePr165eXX3455513Xi655JKceOKJadOmTY477rhsscUWGT9+fM4+++yUSqXGeuuA/1+Lpi4AoL7233//tG/fPvfcc0/OO++8lJWV1baNHz8+2267bfbYY4/VjnHYYYfl4osvzt13351vfvObtcdLpVLGjx+fvfbaK1tuuWWjXQMArK3Ro0cnSY466qjaYwMGDMj06dNzww035JBDDlnpnBkzZmT48OE5+uijkyQ1NTUZOnRoxowZk9/85jcZNmxY9tlnn2yzzTa57rrr0qlTp5x11lm15//qV7/KwoULc+WVV9aGAklSWVmZr3/963nxxRfz2GOP5Utf+lJtW01NTWpqanLnnXfW7qHTtWvX/OY3v8nvf//7XHTRRTnuuONqxzn00EPz5JNPZtasWdlhhx0a8B0DPs4MAGCD1bJly3zlK1/Ja6+9lqeeeqr2+D//+c88/vjja/XJfadOnbLvvvvmiSeeWGH64V//+te89tpra/WoQQBobPPmzctDDz2U9u3b56CDDqo9fuihh6ZNmzZ59NFH63wyzhe+8IXam/8kadasWc4///xssskmueuuu1b69P7jvvnNb+anP/3pCjf/SVJeXp4ePXok+fAJAh93wgknrLCB7vL9eDp27Jhjjz12hXG6deuWJB61C+uAAADYoNW1DGD5zv1re/Per1+/lEqlFZYBjB8/PuXl5XV+mgIA69qtt96aZcuW5Ygjjkh5eXnt8TZt2uSwww5LUvcjAffbb7+VjrVv3z7bb799Fi9enNmzZ6/2dXv16pWBAwdm8eLFmT59em6//fZcdtll+e53v1v7JJ6ampqVztt+++1X+PfyMGDbbbddYcZekmyyySZJssYwAvj0BADABm3vvfdO586dc88999T+AjJ+/Ph8/vOfz4477rhWY3zlK19JeXl5bYhQXV2de+65JwcddFDatm3baLUDwNoolUq57bbbkiTXX399KioqVvizvG3s2LErPcqvS5cudY65xRZbJEkWLVq02teeP39+/uu//iv77bdfvvnNb2bIkCG54YYbUlVVVTtdv661+6t6fG6rVq1W+3pA47IHALBBa9asWQ4//PCMHDkyjz/+eDp16pRnn302P/jBD9Z6jM033zwHHnhg7rvvvsyePTsvv/xy3n77bbv/A7Be+Mtf/pLXXnstXbp0yQEHHFBnnylTpmTu3LkZN27cCnvavP/++3X2X37j37Fjx1W+bqlUyimnnJJnnnkmX//613PUUUdlxx13zGc+85kkyY9+9KPMmDGjvpcFNAEBALDB69evX0aOHJm77747HTp0qA0FPukY9913XyZMmJAXX3wxbdu2zYEHHthIFQPA2lu++d/gwYPzrW99q84+1113XYYPH56bbrpphQDgySefzEknnbRC3yVLluTZZ5/NFltskW233TZJVpqWnyTPP/98nnnmmeyxxx65+OKLV2pfvueA3fthw2EJALDB6969ez772c/mvvvuy91335199903nTt3/kRjfPnLX86mm26aO++8M5MnT84hhxyywhpLAGgKb7/9diZNmpQWLVqsdmbakUcemdatW+fFF1/Mo48+Wnt80qRJmTJlSu2/q6urM3z48HzwwQcZOHBgmjX78HagRYsPPxf86Dr81q1bJ/lwGcDH1+f/6U9/yhNPPFE7JrBhMAMA2Cj069cvv/3tb/PWW2/l9NNP/8Tnt27dOn379s24ceOSxO7/AKwXxo0bl6qqqvTu3TudOnVaZb+2bdvm8MMPz5gxY3LDDTfUPimgTZs2Oe2009K3b9906dIljzzySJ5//vn06NEj//7v/157fseOHdOqVavMmjUrF154Yfbcc88ceeSR2XvvvfPYY4/lyCOPzAEHHJBSqZTHH388Tz/9dDp16pT58+dnwYIFjfwuAA3FDABgo7D8kX+tWrXKV77ylXqNsfyJAltttVXt44oAoCndeuutSZIBAwasse83vvGNJMnkyZPzxhtvJPlwZsAFF1yQ559/PjfddFOqqqpyzjnnZOTIkSvMdGvZsmV++tOfZuutt87tt9+esWPHpqysLFdccUUGDx6cpUuX5oYbbsiECRPSpk2bjBgxItddd13t6wEbhrKSRTsAALBRGTNmTH7wgx9k8ODBGTp0aFOXA6wnzAAAAACAAhAAAAAAQAEIAAAAAKAA7AEAAAAABWAGAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAgNV69NFHU1FRkYqKikZ7jcsvvzwVFRUZOnRoo73GunwdAFgfCQAAAACgAAQAAAAAUAACAAAAACiAFk1dAACw8amurs64ceNy991359lnn82iRYtSXl6erl27pm/fvvnWt76VNm3a1Hnu9OnTc9lll+Vvf/tbmjdvnt133z0nnXRS9t9//zr7P/300/mf//mfPPbYY1mwYEHatWuXvfbaK6eccko+//nPN+ZlAsAGRQAAADSoZcuW5bTTTsvUqVPTunXr9OjRI5tttlnmzp2bGTNm5Nlnn820adNy/fXXp6ysbIVzp0+fnrFjx6ZDhw7Zf//988Ybb2Tq1KmZOnVqzj333Jx66qkr9B81alR+/OMfZ9myZamoqMiee+6ZOXPmZMKECbnvvvvy05/+NEcdddS6vHwAWG8JAACABnXbbbdl6tSp2WabbXLLLbdkiy22qG2bPn16TjzxxEyfPj1/+9vf0r179xXOfeWVV3LooYfmF7/4RVq1apUkmTRpUs4+++z8+te/Tq9evWo/1X/qqafy4x//OOXl5bn00ktz4IEH1o7zwAMP5Hvf+14uvPDC7Lbbbtl1113XwZUDwPrNHgAAQIPr27dvzjnnnBVu/pOkZ8+etY8TnD179krntWvXLj/5yU9qb/6Xj3XMMcekpqYmN9xwQ+3xq6++OsuWLctZZ521ws1/khx00EH51re+laqqqlx77bUNeWkAsMESAAAADWrQoEG58sorc8QRR9Qeq6qqyksvvZRx48ZlwYIFSZLKysqVzu3du3fatWu30vG+ffsmSR599NEkSU1NTR555JEkSa9eveqs48tf/nKS5C9/+Uv9LwYANiKWAAAADW7hwoW59dZbM3Xq1MyaNSvz5s1LTU1NktSu+y+VSiud9//+3/+rc7xtttkmSTJv3rwkyYIFC/Lee+8lSb72ta+ttpY333wzVVVVadmyZf0uBgA2EgIAAKBBPfXUUznllFOyaNGibLrppvm3f/u39O7dOzvttFP23HPPXHzxxbWf3n9c69at6zy+PCxYfhO/bNmy2rb+/fuvsabq6moBAACFJwAAABrUkCFDsmjRovTv3z/Dhw9fYT1/kixatGiV5y7/hP/j5syZkyTZeuutkyQdOnRIeXl5Kisrc+GFF9a5bAAAWJE9AACABjN//vzMmjUrSXLaaaetdPM/b968vPDCC0lSuyTgo6ZOnVrn8bvuuitJst9++yVJWrRokR49eiT58CkBdRk7dmwOO+ywXHDBBfW8GgDYuAgAAIAGs9lmm6W8vDxJct99963QNmfOnJxxxhmprq5OkixdunSl819++eVcfPHFK4QAY8eOzZgxY9K6desMHjy49vgpp5ySJPnZz36WBx54YIVx/v73v+dnP/tZXn755eywww4Ncm0AsKGzBAAAWGur2nF/uZEjR+b444/Ptddem0svvTQTJ05M165dM3/+/Dz11FNJku222y6vvPJK3n777ZXO32OPPfKnP/0p999/fz73uc9lzpw5efrpp9OyZctcfPHF6dq16wq1/Od//md++ctf5rTTTsvOO++c7bffPm+++WaeeuqplEqlHHbYYTn55JMb9D0AgA2VAAAAWGvz589fbXt1dXXOO++87LTTTrnpppvyj3/8IzNnzswWW2xRezP+2muv5Xvf+17uv//+nHXWWSucf/DBB+ff//3fc+WVV+aBBx5I69ata499/vOfX+n1TjnllPTo0SN//OMf88QTT+T+++9P+/bts/fee+cb3/hGDj300DRv3rxB3wMA2FCVlep6Bg8AAACwUbEHAAAAABSAAAAAAAAKQAAAAAAABSAAAAAAgAIQAAAAAEABCAAAAACgAAQAAAAAUAACAAAAACgAAQAAAAAUgAAAAAAACkAAAAAAAAUgAAAAAIAC+P8AedyD+/eD/P4AAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"with sns.plotting_context(\"notebook\", font_scale=1.4):\n",
" # Create new plot\n",
" fig, ax = plt.subplots(1, 1, figsize=(12, 6))\n",
"\n",
" # Plot with seaborn\n",
" sns.boxplot(ax=ax, **plotting_parameters)\n",
"\n",
" # Add annotations\n",
" annotator = Annotator(ax, pairs, **plotting_parameters)\n",
" annotator.set_pvalues(pvalues)\n",
" annotator.annotate()\n",
"\n",
" # Label and show\n",
" plt.title(\"Aptamil vs MM\", y=1.06)\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Last updated: 2023-01-05T13:50:32.141879+01:00\n",
"\n",
"Python implementation: CPython\n",
"Python version : 3.9.15\n",
"IPython version : 8.8.0\n",
"\n",
"Compiler : MSC v.1929 64 bit (AMD64)\n",
"OS : Windows\n",
"Release : 10\n",
"Machine : AMD64\n",
"Processor : Intel64 Family 6 Model 85 Stepping 7, GenuineIntel\n",
"CPU cores : 40\n",
"Architecture: 64bit\n",
"\n",
"watermark : 2.3.1\n",
"numpy : 1.23.5\n",
"scipy : 1.10.0\n",
"pandas : 1.5.2\n",
"matplotlib : 3.6.2\n",
"bokeh : 3.0.3\n",
"statannotations: 0.5.0\n",
"\n"
]
}
],
"source": [
"from watermark import watermark\n",
"watermark(iversions=True, globals_=globals())\n",
"print(watermark())\n",
"print(watermark(packages=\"watermark,numpy,scipy,pandas,matplotlib,bokeh,statannotations\"))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.15"
}
},
"nbformat": 4,
"nbformat_minor": 4
}