{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import pandas as pd\n",
"from pandas import DataFrame, Series\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.patches as mpatches\n",
"from matplotlib.legend_handler import HandlerLine2D, HandlerTuple\n",
"from scipy import stats\n",
"import sys"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"matrixMalEX=\"data_GG.csv\"\n",
"matrixMal=\"data_GM.csv\"\n",
"matrixIt=\"data_L.csv\"\n",
"n_qty=2 #CAMBIAR SEGUN LA CANTIDAD DE NODOS USADOS\n",
"n_groups= 2\n",
"repet = 3 #CAMBIAR EL PRIMER NUMERO SEGUN NUMERO DE EJECUCIONES POR CONFIG\n",
"\n",
"p_value = 0.05\n",
"values = [2, 10, 20, 40]\n",
"# WORST BEST\n",
"dist_names = ['null', 'BalancedFit', 'CompactFit']\n",
"\n",
"labelsP = [['(2,2)', '(2,10)', '(2,20)', '(2,40)'],['(10,2)', '(10,10)', '(10,20)', '(10,40)'],\n",
" ['(20,2)', '(20,10)', '(20,20)', '(20,40)'],['(40,2)', '(40,10)', '(40,20)', '(40,40)']]\n",
"labelsP_J = ['(2,2)', '(2,10)', '(2,20)', '(2,40)','(10,2)', '(10,10)', '(10,20)', '(10,40)',\n",
" '(20,2)', '(20,10)', '(20,20)', '(20,40)','(40,2)', '(40,10)', '(40,20)', '(40,40)']\n",
"positions = [321, 322, 323, 324, 325]\n",
"positions_small = [221, 222, 223, 224]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"dfG = pd.read_csv( matrixMalEX )\n",
"\n",
"dfG = dfG.drop(columns=dfG.columns[0])\n",
"dfG['S'] = dfG['N']\n",
"dfG['N'] = dfG['S'] + dfG['%Async']\n",
"dfG['%Async'] = (dfG['%Async'] / dfG['N']) * 100\n",
"dfG['%Async'] = dfG['%Async'].fillna(0)\n",
"\n",
"if(n_qty == 1):\n",
" group = dfG.groupby(['%Async', 'Groups'])['TE']\n",
"else: \n",
" group = dfG.groupby(['Dist', '%Async', 'Groups'])['TE']\n",
"\n",
"#group\n",
"grouped_aggG = group.agg(['mean'])\n",
"grouped_aggG.rename(columns={'mean':'TE',}, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"dfM = pd.read_csv( matrixMal )\n",
"dfM = dfM.drop(columns=dfM.columns[0])\n",
"\n",
"dfM['S'] = dfM['N']\n",
"dfM['N'] = dfM['S'] + dfM['%Async']\n",
"dfM[\"TR\"] = dfM[\"TC\"] + dfM[\"TH\"] + dfM[\"TS\"] + dfM[\"TA\"]\n",
"dfM['%Async'] = (dfM['%Async'] / dfM['N']) * 100\n",
"\n",
"dfM['%Async'] = dfM['%Async'].fillna(0)\n",
"\n",
"\n",
"if(n_qty == 1):\n",
" groupM = dfM.groupby(['%Async','NP', 'NS'])['TC', 'TH', 'TS', 'TA', 'TR']\n",
"else:\n",
" groupM = dfM.groupby(['Dist', '%Async','NP', 'NS'])['TC', 'TH', 'TS', 'TA', 'TR']\n",
"\n",
"#group\n",
"grouped_aggM = groupM.agg(['mean'])\n",
"grouped_aggM.columns = grouped_aggM.columns.get_level_values(0)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:14: FutureWarning: set_axis currently defaults to operating inplace.\n",
"This will change in a future version of pandas, use inplace=True to avoid this warning.\n",
" \n"
]
}
],
"source": [
"dfL = pd.read_csv( matrixIt )\n",
"dfL = dfL.drop(columns=dfL.columns[0])\n",
"\n",
"dfL['%Async'] = dfL['%Async'].fillna(0)\n",
"\n",
"if(n_qty == 1):\n",
" groupL = dfL[dfL['NS'] != 0].groupby(['Tt', '%Async', 'NP', 'NS'])['Ti', 'To']\n",
"else:\n",
" groupL = dfL[dfL['NS'] != 0].groupby(['Tt', 'Dist', '%Async', 'NP', 'NS'])['Ti', 'To']\n",
"\n",
"#group\n",
"grouped_aggL = groupL.agg(['mean', 'count'])\n",
"grouped_aggL.columns = grouped_aggL.columns.get_level_values(0)\n",
"grouped_aggL.set_axis(['Ti', 'Iters', 'To', 'Iters2'], axis='columns')\n",
"\n",
"grouped_aggL['Iters'] = np.round(grouped_aggL['Iters']/repet)\n",
"grouped_aggL['Iters2'] = np.round(grouped_aggL['Iters2']/repet)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"grouped_aggL.to_excel(\"resultL.xlsx\") \n",
"grouped_aggM.to_excel(\"resultM.xlsx\") \n",
"grouped_aggG.to_excel(\"resultG.xlsx\") "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" %Async | \n",
" Groups | \n",
" Dist | \n",
" Matrix | \n",
" CommTam | \n",
" Time | \n",
" Iters | \n",
" TE | \n",
" S | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" 20,10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.387869 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
" 0.0 | \n",
" 20,10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.423120 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 0 | \n",
" 0.0 | \n",
" 20,10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.472982 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" 0 | \n",
" 0.0 | \n",
" 40,10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 1.144715 | \n",
" 0 | \n",
"
\n",
" \n",
" 4 | \n",
" 0 | \n",
" 0.0 | \n",
" 40,10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 1.152502 | \n",
" 0 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 91 | \n",
" 0 | \n",
" 0.0 | \n",
" 2,10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.953515 | \n",
" 0 | \n",
"
\n",
" \n",
" 92 | \n",
" 0 | \n",
" 0.0 | \n",
" 2,10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.952264 | \n",
" 0 | \n",
"
\n",
" \n",
" 93 | \n",
" 0 | \n",
" 0.0 | \n",
" 40,2 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.561208 | \n",
" 0 | \n",
"
\n",
" \n",
" 94 | \n",
" 0 | \n",
" 0.0 | \n",
" 40,2 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.498228 | \n",
" 0 | \n",
"
\n",
" \n",
" 95 | \n",
" 0 | \n",
" 0.0 | \n",
" 40,2 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.564727 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
96 rows × 10 columns
\n",
"
"
],
"text/plain": [
" N %Async Groups Dist Matrix CommTam Time Iters TE S\n",
"0 0 0.0 20,10 1,1 100000 0 0.4 1,10 0.387869 0\n",
"1 0 0.0 20,10 1,1 100000 0 0.4 1,10 0.423120 0\n",
"2 0 0.0 20,10 1,1 100000 0 0.4 1,10 0.472982 0\n",
"3 0 0.0 40,10 1,1 100000 0 0.4 1,10 1.144715 0\n",
"4 0 0.0 40,10 1,1 100000 0 0.4 1,10 1.152502 0\n",
".. .. ... ... ... ... ... ... ... ... ..\n",
"91 0 0.0 2,10 1,1 100000 0 0.4 1,10 0.953515 0\n",
"92 0 0.0 2,10 1,1 100000 0 0.4 1,10 0.952264 0\n",
"93 0 0.0 40,2 1,1 100000 0 0.4 1,10 0.561208 0\n",
"94 0 0.0 40,2 1,1 100000 0 0.4 1,10 0.498228 0\n",
"95 0 0.0 40,2 1,1 100000 0 0.4 1,10 0.564727 0\n",
"\n",
"[96 rows x 10 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfG"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" | \n",
" TE | \n",
"
\n",
" \n",
" Dist | \n",
" %Async | \n",
" Groups | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 1,1 | \n",
" 0.0 | \n",
" 10,10 | \n",
" 0.508879 | \n",
"
\n",
" \n",
" 10,2 | \n",
" 0.995088 | \n",
"
\n",
" \n",
" 10,20 | \n",
" 0.669420 | \n",
"
\n",
" \n",
" 10,40 | \n",
" 1.458222 | \n",
"
\n",
" \n",
" 2,10 | \n",
" 0.951549 | \n",
"
\n",
" \n",
" 2,2 | \n",
" 2.219202 | \n",
"
\n",
" \n",
" 2,20 | \n",
" 0.909392 | \n",
"
\n",
" \n",
" 2,40 | \n",
" 1.355253 | \n",
"
\n",
" \n",
" 20,10 | \n",
" 0.427990 | \n",
"
\n",
" \n",
" 20,2 | \n",
" 0.421782 | \n",
"
\n",
" \n",
" 20,20 | \n",
" 0.763020 | \n",
"
\n",
" \n",
" 20,40 | \n",
" 1.546889 | \n",
"
\n",
" \n",
" 40,10 | \n",
" 1.101985 | \n",
"
\n",
" \n",
" 40,2 | \n",
" 0.541388 | \n",
"
\n",
" \n",
" 40,20 | \n",
" 1.294718 | \n",
"
\n",
" \n",
" 40,40 | \n",
" 1.755568 | \n",
"
\n",
" \n",
" 2,2 | \n",
" 0.0 | \n",
" 10,10 | \n",
" 0.745033 | \n",
"
\n",
" \n",
" 10,2 | \n",
" 0.662288 | \n",
"
\n",
" \n",
" 10,20 | \n",
" 1.523874 | \n",
"
\n",
" \n",
" 10,40 | \n",
" 1.443683 | \n",
"
\n",
" \n",
" 2,10 | \n",
" 1.109833 | \n",
"
\n",
" \n",
" 2,2 | \n",
" 2.217484 | \n",
"
\n",
" \n",
" 2,20 | \n",
" 1.599292 | \n",
"
\n",
" \n",
" 2,40 | \n",
" 1.529876 | \n",
"
\n",
" \n",
" 20,10 | \n",
" 1.279719 | \n",
"
\n",
" \n",
" 20,2 | \n",
" 0.897674 | \n",
"
\n",
" \n",
" 20,20 | \n",
" 1.671315 | \n",
"
\n",
" \n",
" 20,40 | \n",
" 1.728683 | \n",
"
\n",
" \n",
" 40,10 | \n",
" 1.308367 | \n",
"
\n",
" \n",
" 40,2 | \n",
" 0.771345 | \n",
"
\n",
" \n",
" 40,20 | \n",
" 1.640378 | \n",
"
\n",
" \n",
" 40,40 | \n",
" 1.744211 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" TE\n",
"Dist %Async Groups \n",
"1,1 0.0 10,10 0.508879\n",
" 10,2 0.995088\n",
" 10,20 0.669420\n",
" 10,40 1.458222\n",
" 2,10 0.951549\n",
" 2,2 2.219202\n",
" 2,20 0.909392\n",
" 2,40 1.355253\n",
" 20,10 0.427990\n",
" 20,2 0.421782\n",
" 20,20 0.763020\n",
" 20,40 1.546889\n",
" 40,10 1.101985\n",
" 40,2 0.541388\n",
" 40,20 1.294718\n",
" 40,40 1.755568\n",
"2,2 0.0 10,10 0.745033\n",
" 10,2 0.662288\n",
" 10,20 1.523874\n",
" 10,40 1.443683\n",
" 2,10 1.109833\n",
" 2,2 2.217484\n",
" 2,20 1.599292\n",
" 2,40 1.529876\n",
" 20,10 1.279719\n",
" 20,2 0.897674\n",
" 20,20 1.671315\n",
" 20,40 1.728683\n",
" 40,10 1.308367\n",
" 40,2 0.771345\n",
" 40,20 1.640378\n",
" 40,40 1.744211"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_aggG"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" %Async | \n",
" NP | \n",
" NS | \n",
" Dist | \n",
" Matrix | \n",
" CommTam | \n",
" Time | \n",
" Iters | \n",
" TC | \n",
" TH | \n",
" TS | \n",
" TA | \n",
" S | \n",
" TR | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" 20 | \n",
" 10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.367837 | \n",
" 0.000067 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 0.367904 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
" 0.0 | \n",
" 20 | \n",
" 10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.403131 | \n",
" 0.000061 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 0.403192 | \n",
"
\n",
" \n",
" 2 | \n",
" 0 | \n",
" 0.0 | \n",
" 20 | \n",
" 10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.452980 | \n",
" 0.000059 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 0.453039 | \n",
"
\n",
" \n",
" 3 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 1.099791 | \n",
" 0.000076 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 1.099867 | \n",
"
\n",
" \n",
" 4 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 1.125973 | \n",
" 0.000063 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 1.126036 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 91 | \n",
" 0 | \n",
" 0.0 | \n",
" 2 | \n",
" 10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.423576 | \n",
" 0.000046 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 0.423622 | \n",
"
\n",
" \n",
" 92 | \n",
" 0 | \n",
" 0.0 | \n",
" 2 | \n",
" 10 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.423226 | \n",
" 0.000075 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 0.423301 | \n",
"
\n",
" \n",
" 93 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 2 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.549139 | \n",
" 0.000062 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 0.549201 | \n",
"
\n",
" \n",
" 94 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 2 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.488046 | \n",
" 0.000063 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 0.488109 | \n",
"
\n",
" \n",
" 95 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 2 | \n",
" 1,1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1,10 | \n",
" 0.542324 | \n",
" 0.000068 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0 | \n",
" 0.542392 | \n",
"
\n",
" \n",
"
\n",
"
96 rows × 15 columns
\n",
"
"
],
"text/plain": [
" N %Async NP NS Dist Matrix CommTam Time Iters TC TH \\\n",
"0 0 0.0 20 10 1,1 100000 0 0.4 1,10 0.367837 0.000067 \n",
"1 0 0.0 20 10 1,1 100000 0 0.4 1,10 0.403131 0.000061 \n",
"2 0 0.0 20 10 1,1 100000 0 0.4 1,10 0.452980 0.000059 \n",
"3 0 0.0 40 10 1,1 100000 0 0.4 1,10 1.099791 0.000076 \n",
"4 0 0.0 40 10 1,1 100000 0 0.4 1,10 1.125973 0.000063 \n",
".. .. ... .. .. ... ... ... ... ... ... ... \n",
"91 0 0.0 2 10 1,1 100000 0 0.4 1,10 0.423576 0.000046 \n",
"92 0 0.0 2 10 1,1 100000 0 0.4 1,10 0.423226 0.000075 \n",
"93 0 0.0 40 2 1,1 100000 0 0.4 1,10 0.549139 0.000062 \n",
"94 0 0.0 40 2 1,1 100000 0 0.4 1,10 0.488046 0.000063 \n",
"95 0 0.0 40 2 1,1 100000 0 0.4 1,10 0.542324 0.000068 \n",
"\n",
" TS TA S TR \n",
"0 0.0 0.0 0 0.367904 \n",
"1 0.0 0.0 0 0.403192 \n",
"2 0.0 0.0 0 0.453039 \n",
"3 0.0 0.0 0 1.099867 \n",
"4 0.0 0.0 0 1.126036 \n",
".. ... ... .. ... \n",
"91 0.0 0.0 0 0.423622 \n",
"92 0.0 0.0 0 0.423301 \n",
"93 0.0 0.0 0 0.549201 \n",
"94 0.0 0.0 0 0.488109 \n",
"95 0.0 0.0 0 0.542392 \n",
"\n",
"[96 rows x 15 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfM"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" | \n",
" | \n",
" TC | \n",
" TH | \n",
" TS | \n",
" TA | \n",
" TR | \n",
"
\n",
" \n",
" Dist | \n",
" %Async | \n",
" NP | \n",
" NS | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 1,1 | \n",
" 0.0 | \n",
" 2 | \n",
" 2 | \n",
" 0.354418 | \n",
" 0.000053 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.354472 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.421456 | \n",
" 0.000058 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.421514 | \n",
"
\n",
" \n",
" 20 | \n",
" 0.549015 | \n",
" 0.000050 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.549065 | \n",
"
\n",
" \n",
" 40 | \n",
" 1.095739 | \n",
" 0.000045 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.095784 | \n",
"
\n",
" \n",
" 10 | \n",
" 2 | \n",
" 0.356249 | \n",
" 0.000062 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.356311 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.438358 | \n",
" 0.000052 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.438410 | \n",
"
\n",
" \n",
" 20 | \n",
" 0.629802 | \n",
" 0.000051 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.629853 | \n",
"
\n",
" \n",
" 40 | \n",
" 1.395133 | \n",
" 0.000058 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.395191 | \n",
"
\n",
" \n",
" 20 | \n",
" 2 | \n",
" 0.401695 | \n",
" 0.000059 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.401754 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.407983 | \n",
" 0.000062 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.408045 | \n",
"
\n",
" \n",
" 20 | \n",
" 0.742614 | \n",
" 0.000058 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.742671 | \n",
"
\n",
" \n",
" 40 | \n",
" 1.474785 | \n",
" 0.000065 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.474850 | \n",
"
\n",
" \n",
" 40 | \n",
" 2 | \n",
" 0.526503 | \n",
" 0.000064 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.526567 | \n",
"
\n",
" \n",
" 10 | \n",
" 1.066937 | \n",
" 0.000066 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.067003 | \n",
"
\n",
" \n",
" 20 | \n",
" 1.262803 | \n",
" 0.000063 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.262866 | \n",
"
\n",
" \n",
" 40 | \n",
" 1.707607 | \n",
" 0.000065 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.707672 | \n",
"
\n",
" \n",
" 2,2 | \n",
" 0.0 | \n",
" 2 | \n",
" 2 | \n",
" 0.421873 | \n",
" 0.000057 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.421931 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.619649 | \n",
" 0.000064 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.619712 | \n",
"
\n",
" \n",
" 20 | \n",
" 1.308732 | \n",
" 0.000055 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.308786 | \n",
"
\n",
" \n",
" 40 | \n",
" 1.268303 | \n",
" 0.000051 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.268354 | \n",
"
\n",
" \n",
" 10 | \n",
" 2 | \n",
" 0.413054 | \n",
" 0.000062 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.413116 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.705488 | \n",
" 0.000056 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.705544 | \n",
"
\n",
" \n",
" 20 | \n",
" 1.457638 | \n",
" 0.000053 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.457691 | \n",
"
\n",
" \n",
" 40 | \n",
" 1.369427 | \n",
" 0.000080 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.369507 | \n",
"
\n",
" \n",
" 20 | \n",
" 2 | \n",
" 0.876231 | \n",
" 0.000080 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.876311 | \n",
"
\n",
" \n",
" 10 | \n",
" 1.243403 | \n",
" 0.000073 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.243476 | \n",
"
\n",
" \n",
" 20 | \n",
" 1.614983 | \n",
" 0.000070 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.615053 | \n",
"
\n",
" \n",
" 40 | \n",
" 1.666040 | \n",
" 0.000087 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.666127 | \n",
"
\n",
" \n",
" 40 | \n",
" 2 | \n",
" 0.755518 | \n",
" 0.000064 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 0.755582 | \n",
"
\n",
" \n",
" 10 | \n",
" 1.236325 | \n",
" 0.000075 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.236400 | \n",
"
\n",
" \n",
" 20 | \n",
" 1.575315 | \n",
" 0.000062 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.575377 | \n",
"
\n",
" \n",
" 40 | \n",
" 1.682241 | \n",
" 0.000072 | \n",
" 0.0 | \n",
" 0.0 | \n",
" 1.682313 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" TC TH TS TA TR\n",
"Dist %Async NP NS \n",
"1,1 0.0 2 2 0.354418 0.000053 0.0 0.0 0.354472\n",
" 10 0.421456 0.000058 0.0 0.0 0.421514\n",
" 20 0.549015 0.000050 0.0 0.0 0.549065\n",
" 40 1.095739 0.000045 0.0 0.0 1.095784\n",
" 10 2 0.356249 0.000062 0.0 0.0 0.356311\n",
" 10 0.438358 0.000052 0.0 0.0 0.438410\n",
" 20 0.629802 0.000051 0.0 0.0 0.629853\n",
" 40 1.395133 0.000058 0.0 0.0 1.395191\n",
" 20 2 0.401695 0.000059 0.0 0.0 0.401754\n",
" 10 0.407983 0.000062 0.0 0.0 0.408045\n",
" 20 0.742614 0.000058 0.0 0.0 0.742671\n",
" 40 1.474785 0.000065 0.0 0.0 1.474850\n",
" 40 2 0.526503 0.000064 0.0 0.0 0.526567\n",
" 10 1.066937 0.000066 0.0 0.0 1.067003\n",
" 20 1.262803 0.000063 0.0 0.0 1.262866\n",
" 40 1.707607 0.000065 0.0 0.0 1.707672\n",
"2,2 0.0 2 2 0.421873 0.000057 0.0 0.0 0.421931\n",
" 10 0.619649 0.000064 0.0 0.0 0.619712\n",
" 20 1.308732 0.000055 0.0 0.0 1.308786\n",
" 40 1.268303 0.000051 0.0 0.0 1.268354\n",
" 10 2 0.413054 0.000062 0.0 0.0 0.413116\n",
" 10 0.705488 0.000056 0.0 0.0 0.705544\n",
" 20 1.457638 0.000053 0.0 0.0 1.457691\n",
" 40 1.369427 0.000080 0.0 0.0 1.369507\n",
" 20 2 0.876231 0.000080 0.0 0.0 0.876311\n",
" 10 1.243403 0.000073 0.0 0.0 1.243476\n",
" 20 1.614983 0.000070 0.0 0.0 1.615053\n",
" 40 1.666040 0.000087 0.0 0.0 1.666127\n",
" 40 2 0.755518 0.000064 0.0 0.0 0.755582\n",
" 10 1.236325 0.000075 0.0 0.0 1.236400\n",
" 20 1.575315 0.000062 0.0 0.0 1.575377\n",
" 40 1.682241 0.000072 0.0 0.0 1.682313"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_aggM"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" N | \n",
" %Async | \n",
" NP | \n",
" N_par | \n",
" NS | \n",
" Dist | \n",
" Compute_tam | \n",
" Comm_tam | \n",
" Time | \n",
" Iters | \n",
" Ti | \n",
" Tt | \n",
" To | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 0 | \n",
" 0.0 | \n",
" 20 | \n",
" 0 | \n",
" 10 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.019619 | \n",
" 0.0 | \n",
" 22.0 | \n",
"
\n",
" \n",
" 1 | \n",
" 0 | \n",
" 0.0 | \n",
" 20 | \n",
" 0 | \n",
" 10 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.019645 | \n",
" 1.0 | \n",
" 22.0 | \n",
"
\n",
" \n",
" 2 | \n",
" 0 | \n",
" 0.0 | \n",
" 20 | \n",
" 0 | \n",
" 10 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.019623 | \n",
" 1.0 | \n",
" 22.0 | \n",
"
\n",
" \n",
" 3 | \n",
" 0 | \n",
" 0.0 | \n",
" 20 | \n",
" 0 | \n",
" 10 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.019624 | \n",
" 1.0 | \n",
" 22.0 | \n",
"
\n",
" \n",
" 4 | \n",
" 0 | \n",
" 0.0 | \n",
" 20 | \n",
" 0 | \n",
" 10 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.019644 | \n",
" 1.0 | \n",
" 22.0 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 1812 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 0 | \n",
" 2 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.009814 | \n",
" 1.0 | \n",
" 11.0 | \n",
"
\n",
" \n",
" 1813 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 0 | \n",
" 2 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.009810 | \n",
" 1.0 | \n",
" 11.0 | \n",
"
\n",
" \n",
" 1814 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 0 | \n",
" 2 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.009828 | \n",
" 1.0 | \n",
" 11.0 | \n",
"
\n",
" \n",
" 1815 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 0 | \n",
" 2 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.009808 | \n",
" 1.0 | \n",
" 11.0 | \n",
"
\n",
" \n",
" 1816 | \n",
" 0 | \n",
" 0.0 | \n",
" 40 | \n",
" 0 | \n",
" 2 | \n",
" 1 | \n",
" 100000 | \n",
" 0 | \n",
" 0.4 | \n",
" 1 | \n",
" 0.009819 | \n",
" 1.0 | \n",
" 11.0 | \n",
"
\n",
" \n",
"
\n",
"
1817 rows × 13 columns
\n",
"
"
],
"text/plain": [
" N %Async NP N_par NS Dist Compute_tam Comm_tam Time Iters \\\n",
"0 0 0.0 20 0 10 1 100000 0 0.4 1 \n",
"1 0 0.0 20 0 10 1 100000 0 0.4 1 \n",
"2 0 0.0 20 0 10 1 100000 0 0.4 1 \n",
"3 0 0.0 20 0 10 1 100000 0 0.4 1 \n",
"4 0 0.0 20 0 10 1 100000 0 0.4 1 \n",
"... .. ... .. ... .. ... ... ... ... ... \n",
"1812 0 0.0 40 0 2 1 100000 0 0.4 1 \n",
"1813 0 0.0 40 0 2 1 100000 0 0.4 1 \n",
"1814 0 0.0 40 0 2 1 100000 0 0.4 1 \n",
"1815 0 0.0 40 0 2 1 100000 0 0.4 1 \n",
"1816 0 0.0 40 0 2 1 100000 0 0.4 1 \n",
"\n",
" Ti Tt To \n",
"0 0.019619 0.0 22.0 \n",
"1 0.019645 1.0 22.0 \n",
"2 0.019623 1.0 22.0 \n",
"3 0.019624 1.0 22.0 \n",
"4 0.019644 1.0 22.0 \n",
"... ... ... ... \n",
"1812 0.009814 1.0 11.0 \n",
"1813 0.009810 1.0 11.0 \n",
"1814 0.009828 1.0 11.0 \n",
"1815 0.009808 1.0 11.0 \n",
"1816 0.009819 1.0 11.0 \n",
"\n",
"[1817 rows x 13 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfL"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" Ti | \n",
" Iters | \n",
" To | \n",
" Iters2 | \n",
"
\n",
" \n",
" Tt | \n",
" Dist | \n",
" %Async | \n",
" NP | \n",
" NS | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 0.0 | \n",
" 1 | \n",
" 0.0 | \n",
" 2 | \n",
" 2 | \n",
" 0.199694 | \n",
" 1.0 | \n",
" 224.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.199705 | \n",
" 1.0 | \n",
" 224.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" 20 | \n",
" 0.199701 | \n",
" 1.0 | \n",
" 224.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" 40 | \n",
" 0.199761 | \n",
" 1.0 | \n",
" 224.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" 10 | \n",
" 2 | \n",
" 0.039242 | \n",
" 1.0 | \n",
" 44.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 1.0 | \n",
" 2 | \n",
" 0.0 | \n",
" 20 | \n",
" 40 | \n",
" 0.031814 | \n",
" 22.0 | \n",
" 22.0 | \n",
" 22.0 | \n",
"
\n",
" \n",
" 40 | \n",
" 2 | \n",
" 0.010084 | \n",
" 23.0 | \n",
" 11.0 | \n",
" 23.0 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.010247 | \n",
" 30.0 | \n",
" 11.0 | \n",
" 30.0 | \n",
"
\n",
" \n",
" 20 | \n",
" 0.010257 | \n",
" 34.0 | \n",
" 11.0 | \n",
" 34.0 | \n",
"
\n",
" \n",
" 40 | \n",
" 0.011543 | \n",
" 35.0 | \n",
" 11.0 | \n",
" 35.0 | \n",
"
\n",
" \n",
"
\n",
"
64 rows × 4 columns
\n",
"
"
],
"text/plain": [
" Ti Iters To Iters2\n",
"Tt Dist %Async NP NS \n",
"0.0 1 0.0 2 2 0.199694 1.0 224.0 1.0\n",
" 10 0.199705 1.0 224.0 1.0\n",
" 20 0.199701 1.0 224.0 1.0\n",
" 40 0.199761 1.0 224.0 1.0\n",
" 10 2 0.039242 1.0 44.0 1.0\n",
"... ... ... ... ...\n",
"1.0 2 0.0 20 40 0.031814 22.0 22.0 22.0\n",
" 40 2 0.010084 23.0 11.0 23.0\n",
" 10 0.010247 30.0 11.0 30.0\n",
" 20 0.010257 34.0 11.0 34.0\n",
" 40 0.011543 35.0 11.0 35.0\n",
"\n",
"[64 rows x 4 columns]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_aggL"
]
},
{
"cell_type": "code",
"execution_count": 263,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TIEMPO EJECUCCION\n",
"Distribución BalancedFit -------------------------\n",
"Para 2 padres\n",
"EX numC= 2 p = 0.0 Diff = 0.312 Asíncrono\n",
"EX numC= 10 p = 0.0 Diff = 1.188 Síncrono\n",
"EX numC= 20 p = 0.0 Diff = 1.289 Síncrono\n",
"EX numC= 40 p = 0.0 Diff = 1.478 Síncrono\n",
"Para 10 padres\n",
"EX numC= 2 p = 0.0 Diff = 3.621 Asíncrono\n",
"EX numC= 10 p = 0.023 Diff = 0.055 Asíncrono\n",
"EX numC= 20 p = 0.021 Diff = 0.13 Síncrono\n",
"EX numC= 40 p = 0.046 Diff = 0.708 Síncrono\n",
"Para 20 padres\n",
"EX numC= 2 p = 0.0 Diff = 5.84 Asíncrono\n",
"EX numC= 10 p = 0.0 Diff = 0.481 Asíncrono\n",
"EX numC= 20 p = 0.001 Diff = 0.159 Síncrono\n",
"EX numC= 40 p = 0.004 Diff = 0.278 Síncrono\n",
"Para 40 padres\n",
"EX numC= 2 p = 0.0 Diff = 7.587 Asíncrono\n",
"EX numC= 10 p = 0.004 Diff = 0.829 Asíncrono\n",
"EX numC= 40 p = 0.016 Diff = 0.18 Síncrono\n",
"Distribución CompactFit -------------------------\n",
"Para 2 padres\n",
"EX numC= 2 p = 0.0 Diff = 0.25 Asíncrono\n",
"EX numC= 10 p = 0.0 Diff = 1.177 Síncrono\n",
"EX numC= 20 p = 0.002 Diff = 2.108 Síncrono\n",
"EX numC= 40 p = 0.001 Diff = 1.252 Síncrono\n",
"Para 10 padres\n",
"EX numC= 2 p = 0.0 Diff = 3.563 Asíncrono\n",
"EX numC= 10 p = 0.025 Diff = 0.104 Síncrono\n",
"EX numC= 40 p = 0.042 Diff = 0.716 Síncrono\n",
"Para 20 padres\n",
"EX numC= 2 p = 0.0 Diff = 5.352"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:12: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" if sys.path[0] == '':\n",
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:13: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" del sys.path[0]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Asíncrono\n",
"EX numC= 10 p = 0.0 Diff = 0.666 Asíncrono\n",
"EX numC= 20 p = 0.017 Diff = 0.655 Síncrono\n",
"EX numC= 40 p = 0.008 Diff = 0.549 Síncrono\n",
"Para 40 padres\n",
"EX numC= 2 p = 0.0 Diff = 10.203 Asíncrono\n",
"EX numC= 10 p = 0.0 Diff = 0.977 Asíncrono\n",
"EX numC= 40 p = 0.002 Diff = 0.371 Síncrono\n",
"SINC: 18 || ASINC: 14\n"
]
}
],
"source": [
"print(\"TIEMPO EJECUCCION\")\n",
"sinc = 0\n",
"asinc = 0\n",
"for dist in [1,2]:\n",
" print(\"Distribución \" + dist_names[dist] + \" -------------------------\")\n",
" dist_v = str(dist)+\",\"+str(dist)\n",
" for numP in values:\n",
" print(\"Para \", numP, \" padres\")\n",
" for numC in values:\n",
" #if numP != numC:\n",
" group = str(numP) + \",\" + str(numC)\n",
" v1 = dfG[(dfG[\"%Async\"] == 0.0)][(dfG.Groups == group)][(dfG[\"Dist\"] == dist_v)]['TE']\n",
" v2 = dfG[(dfG[\"%Async\"] == 100.0)][(dfG.Groups == group)][(dfG[\"Dist\"] == dist_v)]['TE']\n",
" res = stats.ttest_ind(v1, v2)\n",
" diff = grouped_aggG['TE'].loc[(dist_v, 0.0, group)] - grouped_aggG['TE'].loc[(dist_v, 100.0, group)]\n",
" if diff > 0:\n",
" mejor = \"Asíncrono\"\n",
" asinc+=1\n",
" else:\n",
" mejor = \"Síncrono\"\n",
" sinc+=1\n",
" \n",
" if res[1] < p_value:\n",
" print(\"EX numC=\", numC, \"p =\", round(res[1],3), \"Diff =\", abs(round(diff,3)), mejor)\n",
"print(\"SINC: \" + str(sinc) + \" || ASINC: \" + str(asinc))"
]
},
{
"cell_type": "code",
"execution_count": 264,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TIEMPO MALLEABILITY\n",
"Distribución BalancedFit -------------------------\n",
"Para 2 padres\n",
"TR numC= 2 p = 0.0 Diff = 1.671 Síncrono\n",
"TR numC= 10 p = 0.0 Diff = 1.577 Síncrono\n",
"TR numC= 20 p = 0.0 Diff = 1.51 Síncrono\n",
"TR numC= 40 p = 0.0 Diff = 1.534 Síncrono\n",
"Para 10 padres\n",
"TR numC= 2 p = 0.0 Diff = 0.393 Síncrono\n",
"TR numC= 10 p = 0.0 Diff = 0.343 Síncrono\n",
"TR numC= 20 p = 0.0 Diff = 0.302 Síncrono\n",
"TR numC= 40 p = 0.044 Diff = 0.893 Síncrono\n",
"Para 20 padres\n",
"TR numC= 2 p = 0.0 Diff = 0.172 Síncrono\n",
"TR numC= 10 p = 0.0 Diff = 0.378 Síncrono\n",
"TR numC= 20 p = 0.004 Diff = 0.386 Síncrono\n",
"TR numC= 40 p = 0.0 Diff = 0.479 Síncrono\n",
"Para 40 padres\n",
"TR numC= 2 p = 0.0 Diff = 0.444 Síncrono\n",
"TR numC= 10 p = 0.036 Diff = 0.361 Síncrono\n",
"TR numC= 20 p = 0.02 Diff = 0.578 Síncrono\n",
"TR numC= 40 p = 0.001 Diff = 0.543 Síncrono\n",
"Distribución CompactFit -------------------------\n",
"Para 2 padres\n",
"TR numC= 2 p = 0.0 Diff = 1.699 Síncrono\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:9: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" if __name__ == '__main__':\n",
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:10: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" # Remove the CWD from sys.path while we load stuff.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"TR numC= 10 p = 0.0 Diff = 1.559 Síncrono\n",
"TR numC= 20 p = 0.002 Diff = 2.282 Síncrono\n",
"TR numC= 40 p = 0.001 Diff = 1.363 Síncrono\n",
"Para 10 padres\n",
"TR numC= 2 p = 0.0 Diff = 0.43 Síncrono\n",
"TR numC= 10 p = 0.0 Diff = 0.533 Síncrono\n",
"Para 20 padres\n",
"TR numC= 2 p = 0.001 Diff = 0.586 Síncrono\n",
"TR numC= 10 p = 0.009 Diff = 0.442 Síncrono\n",
"TR numC= 20 p = 0.001 Diff = 1.036 Síncrono\n",
"TR numC= 40 p = 0.0 Diff = 0.803 Síncrono\n",
"Para 40 padres\n",
"TR numC= 2 p = 0.04 Diff = 0.443 Síncrono\n",
"TR numC= 10 p = 0.016 Diff = 0.38 Síncrono\n",
"TR numC= 20 p = 0.016 Diff = 0.534 Síncrono\n",
"TR numC= 40 p = 0.0 Diff = 0.633 Síncrono\n"
]
}
],
"source": [
"print(\"TIEMPO MALLEABILITY\")\n",
"for dist in [1,2]:\n",
" print(\"Distribución \" + dist_names[dist] + \" -------------------------\")\n",
" dist_v = str(dist)+\",\"+str(dist)\n",
" for numP in values:\n",
" print(\"Para \", numP, \" padres\")\n",
" for numC in values:\n",
" #if numP != numC:\n",
" v1 = dfM[(dfM[\"%Async\"] == 0.0)][(dfM.NP == numP)][(dfM.NS == numC)][(dfM[\"Dist\"] == dist_v)]['TS']\n",
" v2 = dfM[(dfM[\"%Async\"] == 100.0)][(dfM.NP == numP)][(dfM.NS == numC)][(dfM[\"Dist\"] == dist_v)]['TA']\n",
" res = stats.ttest_ind(v1, v2)\n",
" diff = grouped_aggM['TS'].loc[(dist_v, 0.0, numP, numC)] - grouped_aggM['TA'].loc[(dist_v, 100.0, numP, numC)]\n",
" if diff > 0:\n",
" mejor = \"Asíncrono\"\n",
" else:\n",
" mejor = \"Síncrono\"\n",
" if res[1] < p_value:\n",
" print(\"TR numC=\", numC, \"p =\", round(res[1],3), \"Diff =\", abs(round(diff,3)), mejor)"
]
},
{
"cell_type": "code",
"execution_count": 265,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TIEMPO Iters\n",
"Distribución BalancedFit -------------------------\n",
"Para 2 padres\n",
"Ti numC= 10 p = 0.007 Diff = 0.0142 Síncrono\n",
"Para 10 padres\n",
"Ti numC= 2 p = 0.022 Diff = 0.0083 Síncrono\n",
"Ti numC= 40 p = 0.0 Diff = 0.4113 Síncrono\n",
"Para 20 padres\n",
"Ti numC= 2 p = 0.001 Diff = 0.0288 Síncrono\n",
"Ti numC= 10 p = 0.024 Diff = 0.0497 Síncrono\n",
"Ti numC= 20 p = 0.021 Diff = 0.1218 Síncrono\n",
"Ti numC= 40 p = 0.0 Diff = 0.3469 Síncrono\n",
"Para 40 padres\n",
"Ti numC= 2 p = 0.0 Diff = 0.1678 Síncrono\n",
"Ti numC= 10 p = 0.0 Diff = 0.2696 Síncrono\n",
"Ti numC= 20 p = 0.0 Diff = 0.3707 Síncrono\n",
"Ti numC= 40 p = 0.0 Diff = 0.5085 Síncrono\n",
"Distribución CompactFit -------------------------\n",
"Para 2 padres\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:12: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" if sys.path[0] == '':\n",
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:13: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" del sys.path[0]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Ti numC= 40 p = 0.021 Diff = 0.399 Síncrono\n",
"Para 10 padres\n",
"Ti numC= 2 p = 0.012 Diff = 0.0321 Síncrono\n",
"Ti numC= 10 p = 0.001 Diff = 0.2175 Síncrono\n",
"Ti numC= 20 p = 0.003 Diff = 0.5792 Síncrono\n",
"Ti numC= 40 p = 0.0 Diff = 0.5931 Síncrono\n",
"Para 20 padres\n",
"Ti numC= 2 p = 0.0 Diff = 0.2775 Síncrono\n",
"Ti numC= 10 p = 0.0 Diff = 0.3815 Síncrono\n",
"Ti numC= 20 p = 0.0 Diff = 0.561 Síncrono\n",
"Ti numC= 40 p = 0.0 Diff = 0.6162 Síncrono\n",
"Para 40 padres\n",
"Ti numC= 2 p = 0.0 Diff = 0.1849 Síncrono\n",
"Ti numC= 10 p = 0.0 Diff = 0.2827 Síncrono\n",
"Ti numC= 20 p = 0.0 Diff = 0.3832 Síncrono\n",
"Ti numC= 40 p = 0.0 Diff = 0.5335 Síncrono\n"
]
}
],
"source": [
"print(\"TIEMPO Iters\")\n",
"for dist in [1,2]:\n",
" print(\"Distribución \" + dist_names[dist] + \" -------------------------\")\n",
" dist_v = str(dist)+\",\"+str(dist)\n",
" for numP in values:\n",
" print(\"Para \", numP, \" padres\")\n",
" for numC in values:\n",
" #if numP != numC:\n",
" #exp = dfL[(dfL[\"Tt\"] == 0)][(dfL[\"Dist\"] == 1)][(dfL[\"%Async\"] == 0.0)][(dfL.NP == numP)][(dfL.NS == numC)]\n",
" #TimeOp = exp['Ti'] \n",
" #print(TimeOp)\n",
" v1 = dfL[(dfL[\"Tt\"] == 0)][(dfL[\"Dist\"] == dist)][(dfL[\"%Async\"] == 100.0)][(dfL.NP == numP)][(dfL.NS == numC)]['Ti']\n",
" v2 = dfL[(dfL[\"Tt\"] == 1)][(dfL[\"Dist\"] == dist)][(dfL[\"%Async\"] == 100.0)][(dfL.NP == numP)][(dfL.NS == numC)]['Ti']\n",
" res = stats.ttest_ind(v1, v2, equal_var = False)\n",
" diff = grouped_aggL['Ti'].loc[(0, dist, 100.0, numP, numC)] - grouped_aggL['Ti'].loc[(1, dist, 100.0, numP, numC)]\n",
" if diff > 0:\n",
" mejor = \"Asíncrono\"\n",
" else:\n",
" mejor = \"Síncrono\"\n",
" if res[1] < p_value:\n",
" #and abs(diff) > grouped_aggL['Ti'].loc[(0, dist, 0.0, numP, numC)]\n",
" print(\"Ti numC=\", numC, \"p =\", round(res[1],3), \"Diff =\", abs(round(diff,4)), mejor)"
]
},
{
"cell_type": "code",
"execution_count": 266,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10.0\n"
]
}
],
"source": [
"auxIter = pd.DataFrame(dfM['Iters'].str.split(',',1).tolist(),columns = ['Iters0','Iters1'])\n",
"auxIter['Iters1'] = pd.to_numeric(auxIter['Iters1'], errors='coerce')\n",
"iters = auxIter['Iters1'].mean()\n",
"print(iters)\n"
]
},
{
"cell_type": "code",
"execution_count": 267,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Distribución BalancedFit -------------------------\n",
"Para 2 padres\n",
"NC=2 Es mejor Asíncrono con una diff de 0.334\n",
"NC=10 Es mejor Síncrono con una diff de 1.174\n",
"NC=20 Es mejor Síncrono con una diff de 1.306\n",
"NC=40 Es mejor Síncrono con una diff de 1.429\n",
"Para 10 padres\n",
"NC=2 Es mejor Asíncrono con una diff de 3.619\n",
"NC=10 Es mejor Asíncrono con una diff de 0.059\n",
"NC=20 Es mejor Síncrono con una diff de 0.098\n",
"NC=40 Es mejor Síncrono con una diff de 0.716\n",
"Para 20 padres\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:10: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" # Remove the CWD from sys.path while we load stuff.\n",
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:14: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" \n",
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:16: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n",
" app.launch_new_instance()\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"NC=2 Es mejor Asíncrono con una diff de 5.845\n",
"NC=10 Es mejor Asíncrono con una diff de 0.427\n",
"NC=20 Es mejor Síncrono con una diff de 0.114\n",
"NC=40 Es mejor Síncrono con una diff de 0.268\n",
"Para 40 padres\n",
"NC=2 Es mejor Asíncrono con una diff de 7.579\n",
"NC=10 Es mejor Asíncrono con una diff de 0.847\n",
"NC=20 Es mejor Síncrono con una diff de 0.103\n",
"NC=40 Es mejor Síncrono con una diff de 0.331\n",
"Distribución CompactFit -------------------------\n",
"Para 2 padres\n",
"NC=2 Es mejor Asíncrono con una diff de 0.307\n",
"NC=10 Es mejor Síncrono con una diff de 1.156\n",
"NC=20 Es mejor Síncrono con una diff de 2.077\n",
"NC=40 Es mejor Síncrono con una diff de 1.257\n",
"Para 10 padres\n",
"NC=2 Es mejor Asíncrono con una diff de 3.581\n",
"NC=10 Es mejor Síncrono con una diff de 0.131\n",
"NC=20 Es mejor Síncrono con una diff de 0.358\n",
"NC=40 Es mejor Síncrono con una diff de 0.694\n",
"Para 20 padres\n",
"NC=2 Es mejor Asíncrono con una diff de 5.43\n",
"NC=10 Es mejor Asíncrono con una diff de 0.363\n",
"NC=20 Es mejor Síncrono con una diff de 0.626\n",
"NC=40 Es mejor Síncrono con una diff de 0.591\n",
"Para 40 padres\n",
"NC=2 Es mejor Asíncrono con una diff de 10.253\n",
"NC=10 Es mejor Asíncrono con una diff de 0.961\n",
"NC=20 Es mejor Asíncrono con una diff de 0.082\n",
"NC=40 Es mejor Síncrono con una diff de 0.422\n"
]
}
],
"source": [
"#iters = dfM['Iters'].mean()\n",
"resultados = [0,0]\n",
"for dist in [1,2]:\n",
" print(\"Distribución \" + dist_names[dist] + \" -------------------------\")\n",
" dist_v = str(dist)+\",\"+str(dist)\n",
" for numP in values:\n",
" print(\"Para \", numP, \" padres\")\n",
" for numC in values:\n",
" #if numP != numC:\n",
" Titer = dfL[(dfL[\"Tt\"] == 0)][(dfL[\"Dist\"] == dist)][(dfL.NP == numC)]['Ti'].mean() #Tiempo por iteracion\n",
" i=0\n",
" for adr in [0.0, 100.0]:\n",
" \n",
" auxExp = dfM[(dfM[\"Dist\"] == dist_v)][(dfM[\"%Async\"] == adr)][(dfM.NP == numP)][(dfM.NS == numC)]\n",
" Tr = auxExp['TS'].mean() + auxExp['TA'].mean() #Tiempo de redistribucion\n",
" M_it = dfL[(dfL[\"Tt\"] == 1)][(dfL[\"Dist\"] == dist)][(dfL[\"%Async\"] == adr)][(dfL.NP == numP)][(dfL.NS == numC)]['Ti'].count()/3 #Iteraciones asincronas\n",
" #No se presupone una diferencia temporal entre iteraciones normales y asincronas\n",
" if(M_it > iters):\n",
" M_it = iters\n",
" resultados[i] = (iters - M_it) * Titer + Tr\n",
" i+=1\n",
"\n",
" if resultados[0] > resultados[1]:\n",
" mejor = \"Asíncrono\"\n",
" else:\n",
" mejor = \"Síncrono\"\n",
" diff = abs(round(resultados[0] - resultados[1], 3))\n",
" print(\"NC=\"+ str(numC) + \" Es mejor \" + mejor + \" con una diff de \"+ str(diff))\n",
" #TODO Comprobar"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A partir de aquí se muestran gráficos"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.1997398478260869, 0.1997398478260869, 0.1997398478260869, 0.1997398478260869, 0.03965863157894737, 0.03965863157894737, 0.03965863157894737, 0.03965863157894737, 0.02013464705882353, 0.02013464705882353, 0.02013464705882353, 0.02013464705882353, 0.00981611111111111, 0.00981611111111111, 0.00981611111111111, 0.00981611111111111], [0.1994873076923077, 0.1994873076923077, 0.1994873076923077, 0.1994873076923077, 0.03969724242424243, 0.03969724242424243, 0.03969724242424243, 0.03969724242424243, 0.0196615, 0.0196615, 0.0196615, 0.0196615, 0.009970239999999998, 0.009970239999999998, 0.009970239999999998, 0.009970239999999998]]\n",
"[[1.5979187826086951, 0.31726905263157895, 0.14094252941176472, 0.04908055555555555, 0.5992195434782607, 0.03965863157894737, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.5958984615384617, 0.27788069696969697, 0.078646, 0.03988095999999999, 0.1994873076923077, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]\n",
"[[0.3544183333333333, 0.4214563333333334, 0.5490153333333333, 1.0957393333333332, 0.35624900000000004, 0.43835799999999997, 0.6298016666666667, 1.3951330000000002, 0.4016946666666667, 0.40798266666666666, 0.7426136666666666, 1.474785, 0.526503, 1.066937, 1.2628026666666667, 1.7076066666666667], [0.4218733333333334, 0.6196486666666666, 1.3087316666666666, 1.2683030000000002, 0.41305433333333336, 0.705488, 1.4576376666666666, 1.3694266666666668, 0.8762309999999999, 1.2434033333333334, 1.6149826666666665, 1.6660403333333331, 0.7555176666666666, 1.2363253333333333, 1.5753153333333334, 1.682241]]\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:36: FutureWarning: set_axis currently defaults to operating inplace.\n",
"This will change in a future version of pandas, use inplace=True to avoid this warning.\n",
"/home/usuario/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:53: UserWarning: Boolean Series key will be reindexed to match DataFrame index.\n"
]
}
],
"source": [
"#Reserva de memoria para las estructuras\n",
"TP_data=[0]*2\n",
"TH_data=[0]*2\n",
"TM_data=[0]*2\n",
"\n",
"TP_A_data=[0]*2\n",
"TH_A_data=[0]*2\n",
"TM_A_data=[0]*2\n",
"\n",
"for dist in [1,2]:\n",
" dist_index=dist-1\n",
" \n",
" TP_data[dist_index]=[0]*len(values)*(len(values))\n",
" TH_data[dist_index]=[0]*len(values)*(len(values))\n",
" TM_data[dist_index]=[0]*len(values)*(len(values))\n",
"\n",
" TP_A_data[dist_index]=[0]*len(values)*(len(values))\n",
" TH_A_data[dist_index]=[0]*len(values)*(len(values))\n",
" TM_A_data[dist_index]=[0]*len(values)*(len(values))\n",
"\n",
"# Obtencion de los grupos del dataframe necesarios\n",
"\n",
"#ACTUALMENTE NO SE DIFERENCIAN LOS TIEMPOS DE ITERACIONES DE PADRES E HIJOS CUANDO COINCIDE EL NUMERO DE PROCESOS\n",
"if(n_qty == 1):\n",
" groupM_aux = dfM.groupby(['NP', 'NS'])['TC']\n",
" groupL_aux = dfL[dfL['Tt'] == 0].groupby(['NP'])['Ti']\n",
"else:\n",
" groupM_aux = dfM.groupby(['NP', 'NS', 'Dist'])['TC']\n",
" groupL_aux = dfL[dfL['Tt'] == 0].groupby(['Dist', 'NP'])['Ti']\n",
"\n",
"grouped_aggM_aux = groupM_aux.agg(['mean'])\n",
"grouped_aggM_aux.columns = grouped_aggM_aux.columns.get_level_values(0)\n",
"\n",
"grouped_aggL_aux = groupL_aux.agg(['mean'])\n",
"grouped_aggL_aux.columns = grouped_aggL_aux.columns.get_level_values(0)\n",
"grouped_aggL_aux.set_axis(['Ti'], axis='columns')\n",
"\n",
"#Calculo de los valores para las figuras\n",
"#1=Best Fit\n",
"#2=Worst Fit\n",
"dist=1\n",
"for dist in [1,2]:\n",
" dist_index=dist-1\n",
" dist_v = str(dist)+\",\"+str(dist)\n",
" i=0\n",
" r=0\n",
" for numP in values:\n",
" j=0\n",
" for numC in values:\n",
" \n",
" tc_real = grouped_aggM_aux.loc[(numP,numC,dist_v)]['mean']\n",
" for tipo in [0]: #TODO Poner a 0,100\n",
" iters_aux=dfM[(dfM[\"NP\"] == numP)][(dfM[\"NS\"] == numC)][(dfM[\"Dist\"] == dist_v)][(dfM[\"%Async\"] == tipo)]['Iters'].head(1).tolist()[0].split(',')\n",
" itersP_aux = int(iters_aux[0])\n",
" itersS_aux = int(iters_aux[1])\n",
" iters_mal_aux = 0\n",
" #if tipo != 0:\n",
" iters_mal_aux = grouped_aggL['Iters'].loc[(1,dist,tipo,numP,numC)]\n",
" \n",
" t_iterP_aux = grouped_aggL_aux['Ti'].loc[(dist,numP)]\n",
" t_iterS_aux = grouped_aggL_aux['Ti'].loc[(dist,numC)]\n",
" \n",
" \n",
" p1 = t_iterP_aux * itersP_aux\n",
" p2 = t_iterS_aux * max((itersS_aux - iters_mal_aux),0)\n",
" \n",
" array_aux = grouped_aggM[['TS', 'TA']].loc[(dist_v,tipo,numP,numC)].tolist()\n",
" p3 = tc_real + array_aux[0] + array_aux[1]\n",
" \n",
" #Guardar datos\n",
" if tipo == 0:\n",
" TP_data[dist_index][i*len(values) + j] = p1\n",
" TH_data[dist_index][i*len(values) + j] = p2\n",
" TM_data[dist_index][i*len(values) + j] = p3\n",
" else:\n",
" TP_A_data[dist_index][i*len(values) + j] = p1\n",
" TH_A_data[dist_index][i*len(values) + j] = p2\n",
" TM_A_data[dist_index][i*len(values) + j] = p3\n",
" j+=1\n",
" i+=1\n",
"print(TP_data)\n",
"print(TH_data)\n",
"print(TM_data)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABZgAAANYCAYAAABJlYhKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXRUVdb38d8hgRAggMgUhgCCQqSbZhRkkERAJh9GEQE1ijY2uh7ldUBaZObRVkBRum0VusEZQUVBBVEggAxiQGgZZLCZRFQQUOYAOe8fVRUyVJKqm0qqUvl+1qqVuvees++paney2H1ql7HWCgAAAAAAAAAAf5UI9gIAAAAAAAAAAEUTBWYAAAAAAAAAgCMUmAEAAAAAAAAAjlBgBgAAAAAAAAA4QoEZAAAAAAAAAOAIBWYAAAAAAAAAgCMUmAEAAAAAAAAAjoREgdkY09IYM8kYs8QYs8cY85sx5rwx5pAx5iNjTB+Hce8yxtg8HqcC/XoAAAAAAAAAoDiIDPYC3O6VdF+G41OS0iTVkNRLUi9jzPuSBllrLziIf0HSsRyunXYQDwAAAAAAAACKvZDYwSxpnaT/J6mFpBhrbYy1NlpSnKQp7jH9JY1yGH+ttbZ6Do/6+V8+AAAAAAAAABQ/xlob7DXkyRjzhqTbJf3Xn4KwMeYuSbMlrbTWJhTM6gAAAAAAAACgeAqVHcx5+dr9s0ZQVwEAAAAAAAAASFdUCsxt3T/3BnUVAAAAAAAAAIB0IVtgNsaUM8Y0Mcb8Q9JA9+m/OwzX2BizzRhz1hhz0hiz1RjzvDGmXoCWCwAAAAAAAADFTmSwF5CRMaaWpINeLp2T9JS19iWHoStLulLScUnlJTV2P+4zxtxrrX3bYVwAAAAAAAAAKLZC6kv+jDGxkr5xH14hqZSki5ImSZphrT3uZ7ybJLWR9L6k3dbaVGNMlKROkqZIulbSJUk3WmtX5RJnmKRhklS2bNkWjRo18ut1AQAKx86dOyVJDRs2DPJKACDw+B0HIFzx+w0AioaNGzcetdZWyXo+pArMGRljSkhqIOlxSUMlHZDUw1q7LUDxK0hKcd9jnbW2bR5TJEktW7a0KSkpgVgCACDAEhISJEnJyclBXQcAFAR+xwEIV/x+A4CiwRiz0VrbMuv5kO3BbK1Ns9bustbeI+k5SXGS3nQXngMR/zdJT7kP2xhjslXfAQAAAAAAAAA5C9kCcxYz3D+bSmoWwLhfuX8aSXUDGBcAAAAAAAAAwl5RKTAfyvC8fgDjmgzPQ7NXCAAAAAAAAACEqKJSYK6X4fmpAMa9LsPz/QGMCwAAAAAAAABhL+gFZmNMhDHG5DHsMffPi5LW+Rg315jGmPKSRrkPN1hrj/gSFwAAAAAAAADgEvQCs6TaklKMMUONMbU8J40xJYwxTY0xb0m61316hrX2eIYxdY0x1v24K0vcOsaY9caYe4wxcRnmlDLGdJO0RtI1ktIk/bWAXhsAAAAAAAAAhK3IYC/Arbmkf0mSMeacXG0wYiRFZRgzR9JIP+O2dj88cU9LKi+ppPv6GUl/sdYud7pwAAAAAAAAACiuQqHA/KOkgZI6ydUTOVbSlZLOSfperpYYs621a/yM+7OkByW1l/QnSVUkVZCryLxb0jJJ/7TW0nsZAAAAAAAAABwIeoHZWpsqaZ774e/cfZK89lq21p6VNMP9CIqLFy/q2LFj+u2333Tx4sVgLQMAio1x48ZJknbs2BHklYSGyMhIVahQQZUqVVJkZND/5AMAAAAAwhD/2iwgaWlpOnjwoKKiohQXF6dSpUop7+8yBADkR4kSrq8WaNiwYZBXEnzWWqWmpurXX3/VwYMHVadOnfT3BwAAAACAQOFfmgXk+PHjioyMVGxsrKKioiguAwAKlTFGUVFRio2NVWRkpI4fP573JAAAAAAA/ESBuYCcOnVKFStWpLAMAAgqY4wqVqyo06dPB3spAAAAAIAwRIG5gJw7d05lypQJ9jIAAFCZMmV09uzZYC8DAAAAABCGKDAXkLS0NHpdAgBCQokSJZSWlhbsZQAAAAAAwhAV0AJEewwAQCjg7xEAAAAAoKBQYAYAAAAAAAAAOEKBGQAAAAAAAADgCAVmAAAAAAAAAIAjFJiDqHp1yZjQf1SvHpjXa4zJ9qhQoYJat26t6dOn68KFC4G5UTFTq1atbO9rTEyMmjVrpkmTJun06dOZxn/xxRfZxkdERKhy5crq1KmT3nrrrSC9ksJhTB/3w/PfeB8ZUz3D+1Hdy/X8HvsfP7CvmdwrCJ7ci4yM1Hfffed1jCffunXr5vV8cc1DAAAAAED4iAz2Aoqzn38O9gp8E+h19u/fX+XKlZO1Vvv27dO6deu0YcMGLVy4UEuWLFGpUqUCe8Mgad++vdasWaODBw+qVq1aBX6/7t27q2rVqpKkH374QevWrdPYsWM1f/58ffnllypfvnym8TExMerXr58k6cKFC9q1a5eWL1+u5cuXa9WqVXrllVcKfM3B8WGW4xGSBkha4T4e4D6X03h/j/MbP3CKS+4NHjxYmzZtKrTcu3TpkiZMmKB33nnH77nFNw8BAAAAAOGCAjMK3dSpU1W3bt30482bNyshIUErVqzQzJkz9cADDwRvcUXYE088ofbt26cff//997rxxhv17bff6umnn9bTTz+daXzVqlU1Z86cTOfee+89DRgwQK+++qqGDh2q1q1bF8bSgyhZroLvfEkJ7nPzvZwL1fj+IfcKRnR0tN59912NHj1af/jDH/yaSx4CAAAAAIo6WmQg6Jo2baqHH35YkvThhwW3e7O4qV+/vsaNGyfJ9/f1lltuUefOnSVJS5YsKbC1hYbqkhJ1udDbx/1IcJ9LdI/x8Fz39Ti/8QseuRcYDzzwgKy16fmWX8UrDwEAAAAARR0FZoSEZs2aSZIOHDiQfu7YsWOaMWOGunXrprp166p06dKqVKmSOnXqpAULFniNc/vtt8sYoy+//FKffvqpEhISVLFiRRljdOrUqfRxR48e1eOPP674+HhFR0erYsWK6tSpkxYvXpwt5p49e2SMUefOnXX27FmNGjVKdevWVVRUlOrVq6cxY8Zk6mHrGb9mzRpJUu3atdN7rEZGXv7QQGpqqv75z3/quuuuU+XKlRUdHa06deqoa9euevXVV/P3hrp5e1/z0rhxY0nSL7/8EpA1hKZkST9Lqibvu4gT3Nd+do8NtfiBE26516hRI23atElS4eXe/fffr9jYWC1YsEDffPON3/O9KR55CAAAAAAIB7TIQEg4efKkJCkqKir93KpVq/Tggw+qTp06uvrqq3X99dfr0KFDWrlypZYvX66nn35ao0aN8hrvjTfe0MyZM9WqVSv16NFDu3fvljFGkvTdd9+pS5cu+uGHH1S3bl1169ZNv//+u9atW6cePXro+eef14gRI7LFPH/+vDp37qwdO3aoY8eOaty4sVatWqXJkyfr8OHDmjVrliSpfPnySkpK0uLFi/XLL79owIABKlOmjCQpIiIiPd6gQYP0wQcfqFy5curQoYMqVKigw4cPKyUlRfv379ewYcMK5H31dY6nn3P4SdblnsgJGc5n3cH7kzK3uPC193Kg4heOcMu9Pn36aPXq1fr1118LLfeio6P117/+VQ8++KDGjh2rRYsW+TXfm/DPQwAAAABA2LDW8vDj0aJFC+uL7du35zlGKjqPQJBkJdm9e/dmu3bbbbdZSXbIkCHp53bv3m3Xr1+fbeyuXbtsrVq1bGRkpD148GCma0OGDLGSrDHGzp8/P9vcixcv2muvvdZKslOmTLGXLl1Kv7Zz505bp04dGxkZmel/v927d6evvX379vbEiROZ1hITE2ONMXb//v2Z7tWuXTsrKdsaM8asV6+e/fXXXzNdS01NtatWrco2Jyc1a9a0kuzq1auzXXv00UetJNuxY8f0c59//rmVZOvXr59t/Pnz5229evWsJK/vfTiQKltphR///a/wY44/Y3OfE9jXXHxy77vvvrPNmzcv1Nw7fPiwPXfunK1du7aVZL/66qv0MZ5869q1a6a5wchDX/4uAQhtHTt2zPQ3HQDCBb/fAKBokJRivdRLaZGBoLHWav/+/Ro1apTmzp0rY4zuu+++9OsNGjTw+uVWV199tZ544gldvHgxx52CvXr10i233JLt/IIFC7R9+3YNGDBAjz76qEqUuJwC11xzjaZMmaKLFy+m74jMKCIiQrNmzVKFChUyrWXw4MGy1mr16tU+v/YjR45Iklq0aKFKlSplulayZEl16NDB51jeHDp0SM8++6xeeOEFSdLw4cNzHX/hwgVt3bpVt956q/bu3asRI0aE8ReLRUianuE4r17K091zBsi14zin8cnuMYGOH3jkXuBzLyoqSqNHj5YkjR071lGM4pWHAAAAAIBwQYsMFLp69eplO1eqVClNnz49W3Hn0qVLWrFihdasWaPDhw/r/Pnzstbqxx9/lCTt3r3b6z169erl9fzSpUslSf379/d63XP/DRs2eF13w4YNs533nPOsyRfx8fEqU6aMPvroIz3//PMaNGiQqlevnvfEXHgrjJUoUUJjxozRwIEDs137/vvv01sXZPTss8/qsccey9daQlsbh3NG6HIBOWuM9brc6mK6/JdX/MAg9wom9zyGDh2qZ555Rp999pnWrFmjdu3a5Tmn+OYhAAAAACBcUGBGoevfv7/KlSsnY4zKlSunRo0aqW/fvqpRo0amcQcPHlSvXr20efPmHGN5+pRmFRcX5/X8vn37JEm33Xabbrvt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JQ8BAAAAAMUJBeZgKgrFZSng65w6darq1q2bfrx79261b99eW7Zs0QsvvKDRo0cH9H55mTJlip588knVqVOnUO+bl6pVq2rOnDmZzs2aNUt//vOfNXnyZN12222Kj4/PdL1fv3568skn04/PnTunO+64Q++9957uv/9+7dixozCWHtLaNHA2J2sBOaP1e1zXMhaIAxk/UMg930RHR+vs2bMaM2aMowIzeQgAAAAAKE5okYGgu/rqq/Xww67tnEuWOKjO5VNsbKwaNWqk6OjoQr+3v+6991516NBBaWlpWrhwYZ7jS5curenTp0uSvvvuO+3fv7+glxjyPnz48u5hf44TrnUVkC+luYrBHiO6Xd59nHBt4OMXJHLPuw4dOqhJkyb6+uuvvbak8Rd5CAAAAAAIZxSYERIaN24sSfrll1+8XrfW6q233lJiYqKuuOIKlS5dWvHx8Zo4caLOnj2bbfypU6f0t7/9TU2bNlXFihVVtmxZXXXVVerdu7fee++9TGO99YH11ks16+PNN9/MFOf06dN66qmn1LRpU5UtW1YxMTG6/vrr9cYbb+T37cmkWbNmkqQDBw74NL5mzZqqUKGCpJzfX/jGUwQe8KKUvN318OxcTrg2sPELS7jlXrNmzdS8efN85Z4xJr0FzdixY2Vt/tuVkIcAAAAAgHBFiwyEhJMnT0pytYXIKi0tTYMGDdK8efNUrlw5tWrVShUrVlRKSorGjRunxYsXa8WKFSpdurQk6eLFi+rUqZM2bNigK6+8UjfccIPKlCmjH374QStWrND58+d1yy235LqeG264QZGR3tPj3Xff1blz5xQREZF+7qefflKXLl20detWxcbGKjExUZcuXdK6det05513atOmTXr++eedvj2ZeN6rqKgon8ZfunQp/UvcvL2/xZUvvZFzOp7/oJT4f67jFaNdheH8xPMWv7CEW+5dd911SktL03/+85985V6fPn3UokULbdy4UR988IH69+/vd4yMyEMAAAAAQLiiwIyQ4Pl4frdu2XsDPPPMM5o3b54SExP19ttvq3r16pKk8+fP6y9/+YvmzJmjyZMna/LkyZKk5ORkbdiwQa1bt1ZycnJ68UuSzpw5o//85z95rmfYsGEaNmxYtvMTJkzQuXPn1KZNG/Xt2zf9fFJSkrZu3aoRI0bob3/7W3rx9/Dhw7r55ps1ffp0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6DIWlz21vwFezgUifoCRe8E1duxYrwVmX5CHAAAAAIBQRoEZhebbb79VYmKizpw5o4cffljjx49XTExM+nVrrZYtW6ZHH31Ue/fuzde9atasqR07dqhMmTL5XXbYuPfeezPtQj1y5Ih69OihlJQUPfroo5o/f362OVl3mn711VdKSEjQ0qVLNXfuXA0ZMqSAV10A3nH/HOTncRu5ir9G0npdLiavd5/zFIbXByh+AJF7wRUdHa2vv/5aCxcuVK9evfyeH5Z5CAAAAAAIG/RgRqGw1ur222/XmTNn9OSTT2ratGmZClyS6+PfnTt31ldffaWbb745X/crWbKkGjVqpLi4uHzFCWdVqlTRtGnTJEmffPKJLly4kOec1q1bpxeplyxZUpDLKzg/OJzjKSDX8nK9li7vZC6I+PlA7gXfAw88IMm1izkQrT7CIg8BAAAAAGGDAjMKxWeffab//Oc/qlmzpsaOHZvr2KioKLVs2dLrta1bt6pPnz6qVKmSypQpozZt2mjx4sXZxu3bt0/GGCUkJPi8xrNnz2r06NGqV6+eSpcurfr162vcuHFKTU31Oj45OVnGGN1111366aefdO+996pWrVqKjIzU9OnT08dZa/XOO+/oxhtv1BVXXKHSpUsrPj5e48eP15kzZ7LFTUhIkDFG+/bt00cffaS2bduqbNmyqlixovr06aOdO3f6/Jry0qxZs/TXfvToUZ/mNG7cWJKrzUaRZOXaLewxSJd3E3s7buOe42mBkdP4eu4xgY6fT8Ut91577bX0caGSe71791bLli21ZcsWvf/++45iZFXk8xAAAAAAEDYoMKNQfPLJJ5KkAQMGqGTJko5ibNy4Ua1bt9auXbt000036Y9//GP6jstly5bla32pqanq2rWrnnrqKf3222/q2bOn4uPjNWXKFN1yyy257jo8cuSIWrVqpU8++UTXX3+9unfvnt4eIC0tTbfffrsGDx6sr7/+Wk2bNlWPHj10+vRpTZgwIb1tgTf//Oc/1a9fP0VERKhnz56qXLmyPvroI3Xo0CFgRaWTJ0+mP4+KivJrTsYvBixSPDuNfekE4a3ncm48ReaCiu9Accu90qVLSwq93Js4caIk1xcnpqWlOYqRUZHPQwAAAABA2KDAjEKxefNmSVKLFi0cx/j73/+ucePGafv27Zo7d66++uorTZkyRWlpaZo0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\n",
"text/plain": [
"