diff --git a/expe_replay_feedback_metacentrum.ipynb b/expe_replay_feedback_metacentrum.ipynb index 8d54652b536969909704939a48d1d84b82d74198..bdbe50b271b5f10a6726b92e9fa69744179c808c 100644 --- a/expe_replay_feedback_metacentrum.ipynb +++ b/expe_replay_feedback_metacentrum.ipynb @@ -12,7 +12,356 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Metacentrum\n", + "# Metacentrum\n", + "\n", + "## Initializing" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "# For easily changing the workload\n", + "EXPE_DIR = \"out/expe_replay_MC\"\n", + "PF_folder = \"platform/average_metacentrum\"\n", + "WL_folder = \"workload/MC\"\n", + "WL_full_swf_path = \"/home/mael/git/middleware_generators/workload/input/METACENTRUM-2013-3.swf\"\n", + "begin_data_in_swf = 109 # line number (counting from 1)\n", + "\n", + "WL_filtered2013_swf_path = \"/home/mael/git/middleware_generators/workload/output/METACENTRUM-2013_filtered.swf\"\n", + "WL_filtered2014_swf_path = \"/home/mael/git/middleware_generators/workload/output/METACENTRUM-2014_filtered.swf\"\n", + "\n", + "# Original log params\n", + "# WL_URL = \"http://www.cs.huji.ac.il/labs/parallel/workload/l_sdsc_sp2/SDSC-SP2-1998-4.swf.gz\"\n", + "# WL_start_time = '1998-04-24 18:11:04'\n", + "# timezone=\"US/Pacific\"\n", + "\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "header=[\n", + " \"JOB_ID\",\"SUBMIT_TIME\",\"WAIT_TIME\",\"RUN_TIME\",\"ALLOCATED_PROCESSOR_COUNT\",\"AVERAGE_CPU_TIME_USED\",\"USED_MEMORY\",\n", + " \"REQUESTED_NUMBER_OF_PROCESSORS\",\"REQUESTED_TIME\",\"REQUESTED_MEMORY\",\"STATUS\",\"USER_ID\",\"GROUP_ID\",\"APPLICATION_ID\", \n", + " \"QUEUD_ID\",\"PARTITION_ID\",\"PRECEDING_JOB_ID\",\"THINK_TIME_FROM_PRECEDING_JOB\"]\n", + "\n", + "# WL_full = pd.read_csv(WL_full_swf_path, header=begin_data_in_swf-2, delim_whitespace=True, names=header)\n", + "WL_filtered2013 = pd.read_csv(WL_filtered2013_swf_path, delim_whitespace=True, names=header)\n", + "WL_filtered2014 = pd.read_csv(WL_filtered2014_swf_path, delim_whitespace=True, names=header)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1 765986\n", + "Name: STATUS, dtype: int64\n" + ] + } + ], + "source": [ + "WL_filtered[\"finish_time\"] = WL_filtered.SUBMIT_TIME + WL_filtered.WAIT_TIME + WL_filtered.RUN_TIME\n", + "WL_filtered[\"turnaround_time\"] = WL_filtered.WAIT_TIME + WL_filtered.RUN_TIME\n", + "\n", + "print(WL_filtered.STATUS.value_counts())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation results:\n" + ] + }, + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th></th>\n", + " <th>makespan</th>\n", + " <th>length</th>\n", + " <th>nb_jobs</th>\n", + " <th>mean_waiting_time</th>\n", + " <th>median_waiting_time</th>\n", + " <th>max_waiting_time</th>\n", + " <th>mean_slowdown</th>\n", + " <th>max_slowdown</th>\n", + " <th>mean_turnaround_time</th>\n", + " <th>max_turnaround_time</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>2013_filtered</th>\n", + " <th>0</th>\n", + " <td>39968099</td>\n", + " <td>31535248</td>\n", + " <td>765986</td>\n", + " <td>20205.083068</td>\n", + " <td>1259.0</td>\n", + " <td>18163266</td>\n", + " <td>801.890002</td>\n", + " <td>4879140.5</td>\n", + " <td>23984.826289</td>\n", + " <td>18163288</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2014_filtered</th>\n", + " <th>0</th>\n", + " <td>39127717</td>\n", + " <td>31449352</td>\n", + " <td>1212560</td>\n", + " <td>19429.814337</td>\n", + " <td>229.0</td>\n", + " <td>7829272</td>\n", + " <td>1521.444489</td>\n", + " <td>2636706.0</td>\n", + " <td>22160.752967</td>\n", + " <td>7856812</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " makespan length nb_jobs mean_waiting_time \\\n", + "2013_filtered 0 39968099 31535248 765986 20205.083068 \n", + "2014_filtered 0 39127717 31449352 1212560 19429.814337 \n", + "\n", + " median_waiting_time max_waiting_time mean_slowdown \\\n", + "2013_filtered 0 1259.0 18163266 801.890002 \n", + "2014_filtered 0 229.0 7829272 1521.444489 \n", + "\n", + " max_slowdown mean_turnaround_time max_turnaround_time \n", + "2013_filtered 0 4879140.5 23984.826289 18163288 \n", + "2014_filtered 0 2636706.0 22160.752967 7856812 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Simulation results (with readable durations):\n" + ] + }, + { + "data": { + "text/html": [ + "<div>\n", + "<style scoped>\n", + " .dataframe tbody tr th:only-of-type {\n", + " vertical-align: middle;\n", + " }\n", + "\n", + " .dataframe tbody tr th {\n", + " vertical-align: top;\n", + " }\n", + "\n", + " .dataframe thead th {\n", + " text-align: right;\n", + " }\n", + "</style>\n", + "<table border=\"1\" class=\"dataframe\">\n", + " <thead>\n", + " <tr style=\"text-align: right;\">\n", + " <th></th>\n", + " <th></th>\n", + " <th>makespan</th>\n", + " <th>length</th>\n", + " <th>nb_jobs</th>\n", + " <th>mean_waiting_time</th>\n", + " <th>median_waiting_time</th>\n", + " <th>max_waiting_time</th>\n", + " <th>mean_slowdown</th>\n", + " <th>max_slowdown</th>\n", + " <th>mean_turnaround_time</th>\n", + " <th>max_turnaround_time</th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " <tr>\n", + " <th>2013_filtered</th>\n", + " <th>0</th>\n", + " <td>462 days 14:14:59</td>\n", + " <td>364 days 23:47:28</td>\n", + " <td>765986</td>\n", + " <td>0 days 05:36:45</td>\n", + " <td>0 days 00:20:59</td>\n", + " <td>210 days 05:21:06</td>\n", + " <td>801.890002</td>\n", + " <td>4879140.5</td>\n", + " <td>0 days 06:39:44</td>\n", + " <td>210 days 05:21:28</td>\n", + " </tr>\n", + " <tr>\n", + " <th>2014_filtered</th>\n", + " <th>0</th>\n", + " <td>452 days 20:48:37</td>\n", + " <td>363 days 23:55:52</td>\n", + " <td>1212560</td>\n", + " <td>0 days 05:23:49</td>\n", + " <td>0 days 00:03:49</td>\n", + " <td>90 days 14:47:52</td>\n", + " <td>1521.444489</td>\n", + " <td>2636706.0</td>\n", + " <td>0 days 06:09:20</td>\n", + " <td>90 days 22:26:52</td>\n", + " </tr>\n", + " </tbody>\n", + "</table>\n", + "</div>" + ], + "text/plain": [ + " makespan length nb_jobs \\\n", + "2013_filtered 0 462 days 14:14:59 364 days 23:47:28 765986 \n", + "2014_filtered 0 452 days 20:48:37 363 days 23:55:52 1212560 \n", + "\n", + " mean_waiting_time median_waiting_time max_waiting_time \\\n", + "2013_filtered 0 0 days 05:36:45 0 days 00:20:59 210 days 05:21:06 \n", + "2014_filtered 0 0 days 05:23:49 0 days 00:03:49 90 days 14:47:52 \n", + "\n", + " mean_slowdown max_slowdown mean_turnaround_time \\\n", + "2013_filtered 0 801.890002 4879140.5 0 days 06:39:44 \n", + "2014_filtered 0 1521.444489 2636706.0 0 days 06:09:20 \n", + "\n", + " max_turnaround_time \n", + "2013_filtered 0 210 days 05:21:28 \n", + "2014_filtered 0 90 days 22:26:52 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "header=[\n", + " \"JOB_ID\",\"SUBMIT_TIME\",\"WAIT_TIME\",\"RUN_TIME\",\"ALLOCATED_PROCESSOR_COUNT\",\"AVERAGE_CPU_TIME_USED\",\"USED_MEMORY\",\n", + " \"REQUESTED_NUMBER_OF_PROCESSORS\",\"REQUESTED_TIME\",\"REQUESTED_MEMORY\",\"STATUS\",\"USER_ID\",\"GROUP_ID\",\"APPLICATION_ID\", \n", + " \"QUEUD_ID\",\"PARTITION_ID\",\"PRECEDING_JOB_ID\",\"THINK_TIME_FROM_PRECEDING_JOB\"]\n", + "\n", + "# WL_full = pd.read_csv(WL_full_swf_path, header=begin_data_in_swf-2, delim_whitespace=True, names=header)\n", + "WL_filtered2013 = pd.read_csv(WL_filtered2013_swf_path, delim_whitespace=True, names=header)\n", + "WL_filtered2014 = pd.read_csv(WL_filtered2014_swf_path, delim_whitespace=True, names=header)\n", + "\n", + "dfs = []\n", + "\n", + "for WL_swf in [WL_filtered2013, WL_filtered2014]:\n", + " WL_swf[\"finish_time\"] = WL_swf.SUBMIT_TIME + WL_swf.WAIT_TIME + WL_swf.RUN_TIME\n", + " WL_swf[\"turnaround_time\"] = WL_swf.WAIT_TIME + WL_swf.RUN_TIME\n", + " WL_swf[\"slowdown\"] = WL_swf.turnaround_time / WL_swf.RUN_TIME.replace(0, 1)\n", + "\n", + " original_metrics = pd.DataFrame.from_dict({\n", + " \"nb_jobs\": [WL_swf.shape[0]],\n", + " # \"nb_jobs_success\": WL_swf.STATUS.value_counts()[1],\n", + " \"mean_waiting_time\": WL_swf.WAIT_TIME.mean(),\n", + " \"median_waiting_time\": WL_swf.WAIT_TIME.median(),\n", + " \"max_waiting_time\": WL_swf.WAIT_TIME.max(),\n", + " \"makespan\": WL_swf.finish_time.max() - WL_swf.SUBMIT_TIME.min(),\n", + " \"length\": WL_swf.SUBMIT_TIME.max() - WL_swf.SUBMIT_TIME.min(),\n", + " \"mean_slowdown\": WL_swf.slowdown.mean(),\n", + " \"max_slowdown\": WL_swf.slowdown.max(),\n", + " \"mean_turnaround_time\": WL_swf.turnaround_time.mean(),\n", + " \"max_turnaround_time\": WL_swf.turnaround_time.max()\n", + " })\n", + " dfs.append(original_metrics)\n", + "\n", + "all = pd.concat(dfs, keys=[\"2013_filtered\", \"2014_filtered\"])\n", + "\n", + "print(\"Simulation results:\")\n", + "display(all[[\"makespan\",\"length\",\"nb_jobs\",\"mean_waiting_time\",\"median_waiting_time\",\"max_waiting_time\",\"mean_slowdown\",\"max_slowdown\",\"mean_turnaround_time\",\"max_turnaround_time\"]])\n", + "\n", + "print(\"Simulation results (with readable durations):\")\n", + "all = all.astype({\"makespan\":'timedelta64[s]',\"length\":'timedelta64[s]',\n", + " \"mean_waiting_time\":'timedelta64[s]',\"max_waiting_time\":'timedelta64[s]',\"median_waiting_time\":'timedelta64[s]',\n", + " \"mean_turnaround_time\":'timedelta64[s]',\"max_turnaround_time\":'timedelta64[s]'})\n", + "display(all[[\"makespan\",\"length\",\"nb_jobs\",\"mean_waiting_time\",\"median_waiting_time\",\"max_waiting_time\",\"mean_slowdown\",\"max_slowdown\",\"mean_turnaround_time\",\"max_turnaround_time\"]])" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[<matplotlib.axis.YTick at 0x7fb62f453700>,\n", + " <matplotlib.axis.YTick at 0x7fb62f452f80>,\n", + " <matplotlib.axis.YTick at 0x7fb62f51a620>,\n", + " <matplotlib.axis.YTick at 0x7fb62f2a8100>,\n", + " <matplotlib.axis.YTick at 0x7fb62f2a8580>,\n", + " <matplotlib.axis.YTick at 0x7fb62f2a8cd0>,\n", + " <matplotlib.axis.YTick at 0x7fb62f2a9420>,\n", + " <matplotlib.axis.YTick at 0x7fb62f2a9b70>,\n", + " <matplotlib.axis.YTick at 0x7fb62f2aa2c0>]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGdCAYAAABO2DpVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAacklEQVR4nO3de4xU9d348c+yyICwu/W24soICBUVvDTiY73CWrVSNTZRo0YNFU2qRdQardKLt8ZnbdIaGk3x0QBirEJvWmOrRg2rKGIXFWttHxRvrCKl+tCd3VVGYef3R+v8usKis/vdXQZer+TEzOGcOR9MdN985zCnolAoFAIAIIEB/T0AALDtEBYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJDMwL6+YEdHR6xevTqqqqqioqKiry8PAHRDoVCI1tbWqKuriwEDul6X6POwWL16dWSz2b6+LACQQHNzc4wYMaLLX+/zsKiqqoqIfw1WXV3d15cHALohl8tFNpst/hzvSp+Hxacff1RXVwsLACgzn3cbg5s3AYBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAyff4QMmDr8tHHG+P1f7Qlea/1n2yMd9Z9FCN2GhKDd6js8fuN2W1YDBnU8/cB+o6wgO3c6/9oi5Nvfbq/x9ish2YcFRP2rOnvMYASCAvYzo3ZbVg8NOOoJO+1cm1bXL5wecw68+AYWzusx+83ZreevwfQt4QFbOeGDKpMviowtnaYlQbYTrl5EwBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkikpLDZs2BA//OEPY/To0TFkyJDYe++948Ybb4yOjo7emg8AKCMlfUHWT37yk7j99ttj/vz5MX78+Fi2bFmcf/75UVNTE5dddllvzQgAlImSwuLZZ5+NU089NU466aSIiBg1alTcd999sWzZsl4ZDgAoLyV9FHLUUUfFE088Ea+++mpERLz00kvx9NNPxze+8Y0uz8nn85HL5TptAMC2qaQVi6uvvjpaWlpi3333jcrKyti4cWPcdNNNcfbZZ3d5TkNDQ9xwww09HhQA2PqVtGKxcOHCuOeee+Lee++NF154IebPnx8//elPY/78+V2eM3PmzGhpaSluzc3NPR4aANg6lbRicdVVV8U111wTZ511VkREHHDAAfH2229HQ0NDTJ06dbPnZDKZyGQyPZ8UANjqlbRi8eGHH8aAAZ1Pqays9NdNAYCIKHHF4pRTTombbrop9tprrxg/fny8+OKLccstt8S0adN6az4AoIyUFBa33npr/OhHP4rvfOc7sXbt2qirq4tvf/vbce211/bWfABAGSkpLKqqqmLWrFkxa9asXhoHAChnnhUCACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAyJYXFqFGjoqKiYpNt+vTpvTUfAFBGBpZycFNTU2zcuLH4+i9/+Uscf/zxccYZZyQfDAAoPyWFxW677dbp9c033xxjxoyJSZMmJR0KAChP3b7H4uOPP4577rknpk2bFhUVFSlnAgDKVEkrFv/pgQceiH/+85/xrW99a4vH5fP5yOfzxde5XK67lwQAtnLdXrGYM2dOTJkyJerq6rZ4XENDQ9TU1BS3bDbb3UsCAFu5boXF22+/HY8//nhceOGFn3vszJkzo6Wlpbg1Nzd355IAQBno1kch8+bNi9ra2jjppJM+99hMJhOZTKY7lwEAykzJKxYdHR0xb968mDp1agwc2O1bNACAbVDJYfH444/HqlWrYtq0ab0xDwBQxkpecjjhhBOiUCj0xiwAQJnzrBAAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMiWHxbvvvhvnnntu7LLLLrHjjjvGwQcfHM8//3xvzAYAlJmBpRy8bt26OPLII6O+vj4efvjhqK2tjddffz2+9KUv9dJ4AEA5KSksfvKTn0Q2m4158+YV940aNSr1TABAmSrpo5AHH3wwJk6cGGeccUbU1tbGV77ylbjzzju3eE4+n49cLtdpAwC2TSWFxRtvvBGzZ8+OL3/5y/Hoo4/GRRddFJdeemncfffdXZ7T0NAQNTU1xS2bzfZ4aABg61RRKBQKX/TgQYMGxcSJE2PJkiXFfZdeemk0NTXFs88+u9lz8vl85PP54utcLhfZbDZaWlqiurq6B6MDW5u/vNsSJ9/6dDw046iYsGdNf48DJJTL5aKmpuZzf36XtGKxxx57xP77799p33777RerVq3q8pxMJhPV1dWdNgBg21RSWBx55JGxYsWKTvteffXVGDlyZNKhAIDyVFJYfPe7342lS5fGf//3f8fKlSvj3nvvjTvuuCOmT5/eW/MBAGWkpLA49NBD4/7774/77rsvJkyYED/+8Y9j1qxZcc455/TWfABAGSnpeywiIk4++eQ4+eSTe2MWAKDMeVYIAJCMsAAAkhEWAEAywgIASEZYAMm8/EFT7Lj3LfHyB039PQrQT4QFkEShUIgFK/8nKjNrY8HK/4kSnhYAbEOEBZDEktVL4o3W/42IiDda/zeWrF7yOWcA2yJhAfRYoVCIW1+8NQb8+38pA2JA3PrirVYtYDskLIAeW7J6SbzywSvRER0REdERHfHKB69YtYDtkLAAeqS4WlHR+X8nAyqsWsD2SFgAPVJcrSh0dNrfUbBqAdsjYQF026erFRVRsdlfr4gKqxawnREWQLd90vFJrGlfE4XYfDgUohBr2tfEJx2f9PFkQH8p+emmAJ8aVDkoFpy8IP5v/f9FRMTra9visoXL4+dnHhxjaodFRMTOg3eOQZWD+nNMoA8JC6BHhg8dHsOHDo+IiI71LdGx/h8xunpc7L9LTT9PBvQHH4UAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIpKSyuv/76qKio6LQNHz68t2YDAMrMwFJPGD9+fDz++OPF15WVlUkHAgDKV8lhMXDgQKsUAMBmlXyPxWuvvRZ1dXUxevToOOuss+KNN97Y4vH5fD5yuVynDQDYNpUUFocddljcfffd8eijj8add94Za9asiSOOOCI++OCDLs9paGiImpqa4pbNZns8NACwdSopLKZMmRKnnXZaHHDAAXHcccfFH/7wh4iImD9/fpfnzJw5M1paWopbc3NzzyYGALZaJd9j8Z+GDh0aBxxwQLz22mtdHpPJZCKTyfTkMgBAmejR91jk8/n429/+FnvssUeqeQCAMlZSWFx55ZXx5JNPxptvvhnPPfdcnH766ZHL5WLq1Km9NR8AUEZK+ijknXfeibPPPjvef//92G233eKrX/1qLF26NEaOHNlb8wEAZaSksFiwYEFvzQEAbAM8KwQASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGR6FBYNDQ1RUVERl19+eaJxAIBy1u2waGpqijvuuCMOPPDAlPMAAGWsW2HR1tYW55xzTtx5552x0047pZ4JAChT3QqL6dOnx0knnRTHHXfc5x6bz+cjl8t12gCAbdPAUk9YsGBBvPDCC9HU1PSFjm9oaIgbbrih5MEAgPJT0opFc3NzXHbZZXHPPffE4MGDv9A5M2fOjJaWluLW3NzcrUEBgK1fSSsWzz//fKxduzYOOeSQ4r6NGzfGU089Fbfddlvk8/morKzsdE4mk4lMJpNmWgBgq1ZSWHzta1+Ll19+udO+888/P/bdd9+4+uqrN4kKAGD7UlJYVFVVxYQJEzrtGzp0aOyyyy6b7AcAtj++eRMASKbkvxXyWY2NjQnGAAC2BVYsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIZ2N8DAN3z5vvt0Z7f0N9jdLJybVunf24thmYGxuhdh/b3GLBdEBZQht58vz3qf9rY32N06fKFy/t7hE0sunKyuIA+ICygDH26UjHrzINjbO2wfp7m/1v/ycZ4Z91HMWKnITF4h8r+Hici/rV6cvnC5Vvd6g5sq4QFlLGxtcNiwp41/T1GJxNH9fcEQH9y8yYAkIywAACSERYAQDLCAgBIRlgAAMkICwAgmZLCYvbs2XHggQdGdXV1VFdXx+GHHx4PP/xwb80GAJSZksJixIgRcfPNN8eyZcti2bJlceyxx8app54ar7zySm/NBwCUkZK+IOuUU07p9Pqmm26K2bNnx9KlS2P8+PFJBwMAyk+3v3lz48aN8etf/zra29vj8MMPTzkTAFCmSg6Ll19+OQ4//PBYv359DBs2LO6///7Yf//9uzw+n89HPp8vvs7lct2bFADY6pX8t0LGjRsXy5cvj6VLl8bFF18cU6dOjb/+9a9dHt/Q0BA1NTXFLZvN9mhgAGDrVXJYDBo0KMaOHRsTJ06MhoaGOOigg+LnP/95l8fPnDkzWlpailtzc3OPBgYAtl49frppoVDo9FHHZ2UymchkMj29DABQBkoKi+9///sxZcqUyGaz0draGgsWLIjGxsZ45JFHems+AKCMlBQWf//73+O8886L9957L2pqauLAAw+MRx55JI4//vjemg8AKCMlhcWcOXN6aw4AYBvgWSEAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZEoKi4aGhjj00EOjqqoqamtr45vf/GasWLGit2YDAMpMSWHx5JNPxvTp02Pp0qXx2GOPxYYNG+KEE06I9vb23poPACgjA0s5+JFHHun0et68eVFbWxvPP/98HHPMMUkHAwDKT0lh8VktLS0REbHzzjt3eUw+n498Pl98ncvlenJJAGAr1u2bNwuFQlxxxRVx1FFHxYQJE7o8rqGhIWpqaopbNpvt7iUBgK1ct8PikksuiT//+c9x3333bfG4mTNnRktLS3Frbm7u7iUBgK1ctz4KmTFjRjz44IPx1FNPxYgRI7Z4bCaTiUwm063hAIDyUlJYFAqFmDFjRtx///3R2NgYo0eP7q25AIAyVFJYTJ8+Pe699974/e9/H1VVVbFmzZqIiKipqYkhQ4b0yoAAQPko6R6L2bNnR0tLS0yePDn22GOP4rZw4cLemg8AKCMlfxQCANAVzwoBAJIRFgBAMsICAEhGWAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIBlhAQAkIywAgGSEBQCQjLAAAJIRFgBAMsICAEhGWAAAyQgLACCZksPiqaeeilNOOSXq6uqioqIiHnjggV4YCwAoRyWHRXt7exx00EFx22239cY8AEAZG1jqCVOmTIkpU6b0xiwAQJkrOSxKlc/nI5/PF1/ncrneviQA0E96/ebNhoaGqKmpKW7ZbLa3LwkA9JNeD4uZM2dGS0tLcWtubu7tSwIA/aTXPwrJZDKRyWR6+zIAwFbA91gAAMmUvGLR1tYWK1euLL5+8803Y/ny5bHzzjvHXnvtlXQ4AKC8lBwWy5Yti/r6+uLrK664IiIipk6dGnfddVeywQCA8lNyWEyePDkKhUJvzAIAlDn3WAAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZIQFAJCMsAAAkhEWAEAywgIASEZYAADJCAsAIJmB/T0AULr8xvUxYPC78WZuRQwYPKy/x9mqvZlriwGD3438xvURUdPf48A2T1hAGVrd/nYMHX1rfP9P/T1JeRg6OmJ1+8FxSOze36PANk9YQBmqGzoy2t+cET8/8+AYU2vFYkteX9sWly1cHnX1I/t7FNguCAsoQ5nKwdGxfs8YXT0u9t/F8v6WdKxviY71/4hM5eD+HgW2C27eBACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZLoVFr/4xS9i9OjRMXjw4DjkkENi8eLFqecCAMpQyWGxcOHCuPzyy+MHP/hBvPjii3H00UfHlClTYtWqVb0xHwBQRkoOi1tuuSUuuOCCuPDCC2O//faLWbNmRTabjdmzZ/fGfABAGSnpK70//vjjeP755+Oaa67ptP+EE06IJUuWbPacfD4f+Xy++DqXy3VjTOA/ffTJxoiI+Mu7LT1+r/WfbIx31n3U4/fpDSN2GhKDd6js0XusXNuWaBrgiygpLN5///3YuHFj7L575ycE7r777rFmzZrNntPQ0BA33HBD9ycENvH6v39YXvO7l/t5kvIxNOPRSNAXuvVfWkVFRafXhUJhk32fmjlzZlxxxRXF17lcLrLZbHcuC/zbCeOHR0TEmNphMaSHf6Lf1lcsIv4VFaN3HZpgIuDzlBQWu+66a1RWVm6yOrF27dpNVjE+lclkIpPJdH9CYBM7Dx0UZ/3XXsneb+KoZG8FbOdKunlz0KBBccghh8Rjjz3Waf9jjz0WRxxxRNLBAIDyU/JHIVdccUWcd955MXHixDj88MPjjjvuiFWrVsVFF13UG/MBAGWk5LA488wz44MPPogbb7wx3nvvvZgwYUL88Y9/jJEjR/bGfABAGakoFAqFvrxgLpeLmpqaaGlpierq6r68NADQTV/057dnhQAAyQgLACAZYQEAJCMsAIBkhAUAkIywAACSERYAQDLCAgBIRlgAAMl067HpPfHpF33mcrm+vjQA0E2f/tz+vC/s7vOwaG1tjYiIbDbb15cGAHqotbU1ampquvz1Pn9WSEdHR6xevTqqqqqioqKiLy8N9LJcLhfZbDaam5s9Cwi2MYVCIVpbW6Ouri4GDOj6Too+Dwtg2+Uhg4CbNwGAZIQFAJCMsACSyWQycd1110Umk+nvUYB+4h4LACAZKxYAQDLCAgBIRlgAAMkICwAgGWEBZer222+Pqqqq2LBhQ3FfW1tb7LDDDnH00Ud3Onbx4sVRUVERr776akRELFmyJCorK+PEE0/c5H3feuutqKioiOXLl8f1118fFRUVW9zeeuutLmccNWrUFs+dPHly8bhZs2Ztct6CBQs2ec/x48dHRUVF3HXXXZ97nZtvvvkL/JsEUhIWUKbq6+ujra0tli1bVty3ePHiGD58eDQ1NcWHH35Y3N/Y2Bh1dXWxzz77RETE3LlzY8aMGfH000/HqlWrurzGlVdeGe+9915xGzFiRNx4442d9m3puT9NTU3F4377299GRMSKFSuK+373u991eW42m4158+Z12rd06dJYs2ZNDB06dJPjPzvXe++9FzNmzOjy/YHeISygTI0bNy7q6uqisbGxuK+xsTFOPfXUGDNmTCxZsqTT/vr6+oiIaG9vj1/96ldx8cUXx8knn9zpT/6fNWzYsBg+fHhxq6ysjKqqqk32dWW33XYrHrfzzjtHRERtbe0m+zbnnHPOiSeffDKam5uL++bOnRvnnHNODBy46fMTPzvX8OHDNxsgQO8SFlDGJk+eHIsWLSq+XrRoUUyePDkmTZpU3P/xxx/Hs88+WwyLhQsXxrhx42LcuHFx7rnnxrx58z73Mcj9Yffdd4+vf/3rMX/+/IiI+PDDD2PhwoUxbdq0fp4M2BJhAWVs8uTJ8cwzz8SGDRuitbU1XnzxxTjmmGNi0qRJxZWMpUuXxkcffVQMizlz5sS5554bEREnnnhitLW1xRNPPNFfv4UtmjZtWtx1111RKBTiN7/5TYwZMyYOPvjgzR579dVXx7Bhwzpt/7maA/QNYQFlrL6+Ptrb26OpqSkWL14c++yzT9TW1sakSZOiqakp2tvbo7GxMfbaa6/Ye++9Y8WKFfGnP/0pzjrrrIiIGDhwYJx55pkxd+7cfv6dbN5JJ50UbW1t8dRTT8XcuXO3uFpx1VVXxfLlyztthx12WB9OC0REbPpBJVA2xo4dGyNGjIhFixbFunXrYtKkSRERMXz48Bg9enQ888wzsWjRojj22GMj4l+rFRs2bIg999yz+B6FQiF22GGHWLduXey000798vvoysCBA+O8886L6667Lp577rm4//77uzx21113jbFjx/bhdMDmWLGAMldfXx+NjY3R2NhY/OubERGTJk2KRx99NJYuXRr19fWxYcOGuPvuu+NnP/tZpz/Vv/TSSzFy5Mj45S9/2X+/iS2YNm1aPPnkk3HqqadudeEDbMqKBZS5+vr6mD59enzyySfFFYuIf4XFxRdfHOvXr4/6+vp46KGHYt26dXHBBRdETU1Np/c4/fTTY86cOXHJJZf09fifa7/99ov3338/dtxxxy0e19raGmvWrOm0b8cdd4zq6ureHA/4DCsWUObq6+vjo48+irFjx8buu+9e3D9p0qRobW2NMWPGRDabjTlz5sRxxx23SVRERJx22mmxfPnyeOGFF/py9C9sl112iSFDhmzxmGuvvTb22GOPTtv3vve9PpoQ+JTHpgMAyVixAACSERZAj3z2uyP+c1u8eHF/jwf0MR+FAD2ycuXKLn9tzz33/Nx7I4Bti7AAAJLxUQgAkIywAACSERYAQDLCAgBIRlgAAMkICwAgGWEBACQjLACAZP4fhlh3vGyxGzkAAAAASUVORK5CYII=", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig,ax=plt.subplots()\n", + "WL_filtered2013.WAIT_TIME.plot(kind=\"box\", showmeans=True, showfliers=False, ax=ax)\n", + "y_l, y_r = ax.get_ylim(); y_l, y_r = int(y_l / (3600)), int(y_r / (3600))\n", + "ax.set_yticks(np.arange(y_l * 3600, (y_r+1) * 3600, step=3600), labels=np.arange(y_l, y_r+1, step=1)) " + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ "Simulation launched in grid5000." ] }, @@ -314,8 +663,22 @@ } ], "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, "language_info": { - "name": "python" + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" }, "orig_nbformat": 4 },