{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "black-funeral", "metadata": {}, "outputs": [], "source": [ "import json\n", "import sys\n", "import glob\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from IPython.display import display, Markdown" ] }, { "cell_type": "code", "execution_count": 2, "id": "68c2f54a-f838-4d41-af1e-d63f13f3d894", "metadata": {}, "outputs": [], "source": [ "DIR = \"/home/claudio/hdd/git/bachelorThesis/table_iii/\"" ] }, { "cell_type": "code", "execution_count": 3, "id": "d162510b-bf0d-46a8-9954-05f6475f52ae", "metadata": {}, "outputs": [], "source": [ "NAMES = {-1: \"No termination\", 0: \"SUBMIT\", 1: \"QUEUE\", 2: \"ENABLE\", \n", " 3: \"SCHEDULE\", 4: \"EVICT\", 5: \"FAIL\", 6: \"FINISH\",\n", " 7: \"KILL\", 8: \"LOST\", 9: \"UPDATE_PENDING\", 10: \"UPDATE_RUNNING\"}\n", "\n", "def rename(df, new, old):\n", " df.rename(columns={old: new}, inplace=True)" ] }, { "cell_type": "code", "execution_count": 4, "id": "2eee4cb8-19c4-4d0f-a6c4-148145dedfa4", "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "# Table III" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster A" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL58.027.3959252.3495790.2138590.0034123.3959960.089576
1FINISH9.012.4053700.0193210.0037792.1534320.0081500.008989
2FAIL108.050.0395560.28777811.0618640.0020980.4676560.053144
3LOST7.08.8471450.0833480.0018210.3841901.3299101.007933
4EVICT2924.0428.55068973.6935950.7685530.00017928.7661640.845501
5No termination84.014.8185230.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", "0 KILL 58.0 27.395925 2.349579 \n", "1 FINISH 9.0 12.405370 0.019321 \n", "2 FAIL 108.0 50.039556 0.287778 \n", "3 LOST 7.0 8.847145 0.083348 \n", "4 EVICT 2924.0 428.550689 73.693595 \n", "5 No termination 84.0 14.818523 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.213859 0.003412 3.395996 \n", "1 0.003779 2.153432 0.008150 \n", "2 11.061864 0.002098 0.467656 \n", "3 0.001821 0.384190 1.329910 \n", "4 0.768553 0.000179 28.766164 \n", "5 0.000000 0.000000 0.000000 \n", "\n", " # LOST Evts. mean \n", "0 0.089576 \n", "1 0.008989 \n", "2 0.053144 \n", "3 1.007933 \n", "4 0.845501 \n", "5 0.000000 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster B" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL60.040.9010413.3514960.2763050.0036565.5410790.033457
1FINISH20.017.2775960.0204440.0206282.9425790.0116400.016278
2FAIL260.086.7724190.51806119.6567980.0005600.6753920.088523
3LOST14.025.6904550.2572310.0074201.9283513.5154362.015153
4EVICT1578.0345.70555964.8165180.2402140.00000017.9615391.028401
5No termination32.013.0181300.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", "0 KILL 60.0 40.901041 3.351496 \n", "1 FINISH 20.0 17.277596 0.020444 \n", "2 FAIL 260.0 86.772419 0.518061 \n", "3 LOST 14.0 25.690455 0.257231 \n", "4 EVICT 1578.0 345.705559 64.816518 \n", "5 No termination 32.0 13.018130 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.276305 0.003656 5.541079 \n", "1 0.020628 2.942579 0.011640 \n", "2 19.656798 0.000560 0.675392 \n", "3 0.007420 1.928351 3.515436 \n", "4 0.240214 0.000000 17.961539 \n", "5 0.000000 0.000000 0.000000 \n", "\n", " # LOST Evts. mean \n", "0 0.033457 \n", "1 0.016278 \n", "2 0.088523 \n", "3 2.015153 \n", "4 1.028401 \n", "5 0.000000 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster C" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL32.024.2308871.5332370.1160820.0039943.7991110.013670
1FINISH18.015.2426280.0179290.0127012.4706540.0060200.006414
2FAIL156.0187.0308940.77282348.4457732.0353780.7560150.133687
3LOST28.022.3854460.4113650.0075691.4122012.7513531.998665
4EVICT1748.0404.10866973.7155271.8128160.00016622.9080220.546198
5No termination96.021.3151660.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", "0 KILL 32.0 24.230887 1.533237 \n", "1 FINISH 18.0 15.242628 0.017929 \n", "2 FAIL 156.0 187.030894 0.772823 \n", "3 LOST 28.0 22.385446 0.411365 \n", "4 EVICT 1748.0 404.108669 73.715527 \n", "5 No termination 96.0 21.315166 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.116082 0.003994 3.799111 \n", "1 0.012701 2.470654 0.006020 \n", "2 48.445773 2.035378 0.756015 \n", "3 0.007569 1.412201 2.751353 \n", "4 1.812816 0.000166 22.908022 \n", "5 0.000000 0.000000 0.000000 \n", "\n", " # LOST Evts. mean \n", "0 0.013670 \n", "1 0.006414 \n", "2 0.133687 \n", "3 1.998665 \n", "4 0.546198 \n", "5 0.000000 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster D" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL32.029.9538731.9601340.1505210.0023854.6824110.016156
1FINISH18.023.1056150.0586510.0190513.7890500.0097850.018699
2FAIL269.0228.0049750.49631658.9682100.8095202.0403960.324754
3LOST20.017.0657210.0147600.0035770.0792894.6362831.999794
4EVICT1478.0323.36613062.0005100.7002680.00037314.0575140.627592
5No termination103.027.8674030.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", "0 KILL 32.0 29.953873 1.960134 \n", "1 FINISH 18.0 23.105615 0.058651 \n", "2 FAIL 269.0 228.004975 0.496316 \n", "3 LOST 20.0 17.065721 0.014760 \n", "4 EVICT 1478.0 323.366130 62.000510 \n", "5 No termination 103.0 27.867403 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.150521 0.002385 4.682411 \n", "1 0.019051 3.789050 0.009785 \n", "2 58.968210 0.809520 2.040396 \n", "3 0.003577 0.079289 4.636283 \n", "4 0.700268 0.000373 14.057514 \n", "5 0.000000 0.000000 0.000000 \n", "\n", " # LOST Evts. mean \n", "0 0.016156 \n", "1 0.018699 \n", "2 0.324754 \n", "3 1.999794 \n", "4 0.627592 \n", "5 0.000000 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster E" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL258.055.8774751.2879170.0569090.00018512.1598800.054997
1FINISH14.011.9768060.0138790.0084351.9986770.0082410.026641
2FAIL138.0450.5269370.457703111.4710470.0000000.4557050.187991
3LOST14.011.8999080.0000000.0000000.0339763.1310071.792164
4EVICT310.084.64518911.7807540.1061190.0000905.7909600.654955
5No termination34.07.3491650.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", "0 KILL 258.0 55.877475 1.287917 \n", "1 FINISH 14.0 11.976806 0.013879 \n", "2 FAIL 138.0 450.526937 0.457703 \n", "3 LOST 14.0 11.899908 0.000000 \n", "4 EVICT 310.0 84.645189 11.780754 \n", "5 No termination 34.0 7.349165 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.056909 0.000185 12.159880 \n", "1 0.008435 1.998677 0.008241 \n", "2 111.471047 0.000000 0.455705 \n", "3 0.000000 0.033976 3.131007 \n", "4 0.106119 0.000090 5.790960 \n", "5 0.000000 0.000000 0.000000 \n", "\n", " # LOST Evts. mean \n", "0 0.054997 \n", "1 0.026641 \n", "2 0.187991 \n", "3 1.792164 \n", "4 0.654955 \n", "5 0.000000 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster F" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL162.045.0395570.3840650.0984300.0011789.8042870.037783
1FINISH20.019.8997090.0193810.0035103.0078390.0979340.023707
2FAIL220.0164.0430730.27935239.2574070.0000231.5497950.203997
3LOST36.025.0022190.0118150.0009090.1495867.2835342.000428
4EVICT510.0302.26234723.9736210.1923940.00009445.9799970.374789
5No termination24.07.7849050.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", "0 KILL 162.0 45.039557 0.384065 \n", "1 FINISH 20.0 19.899709 0.019381 \n", "2 FAIL 220.0 164.043073 0.279352 \n", "3 LOST 36.0 25.002219 0.011815 \n", "4 EVICT 510.0 302.262347 23.973621 \n", "5 No termination 24.0 7.784905 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.098430 0.001178 9.804287 \n", "1 0.003510 3.007839 0.097934 \n", "2 39.257407 0.000023 1.549795 \n", "3 0.000909 0.149586 7.283534 \n", "4 0.192394 0.000094 45.979997 \n", "5 0.000000 0.000000 0.000000 \n", "\n", " # LOST Evts. mean \n", "0 0.037783 \n", "1 0.023707 \n", "2 0.203997 \n", "3 2.000428 \n", "4 0.374789 \n", "5 0.000000 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster G" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL641.00130.0541436.9092040.1350730.00003325.2757690.131106
1FINISH18.00105.2404180.0152280.00165514.1537750.0048790.158300
2FAIL40.0040.1215530.0161118.5927280.0000000.3388830.011310
3LOST4602.25576.3841201.9313300.36051548.09442135.5965673.534335
4EVICT2015.00555.57474377.4290540.3031270.00000058.2993300.653819
5No termination30.009.5035530.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", "0 KILL 641.00 130.054143 6.909204 \n", "1 FINISH 18.00 105.240418 0.015228 \n", "2 FAIL 40.00 40.121553 0.016111 \n", "3 LOST 4602.25 576.384120 1.931330 \n", "4 EVICT 2015.00 555.574743 77.429054 \n", "5 No termination 30.00 9.503553 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.135073 0.000033 25.275769 \n", "1 0.001655 14.153775 0.004879 \n", "2 8.592728 0.000000 0.338883 \n", "3 0.360515 48.094421 35.596567 \n", "4 0.303127 0.000000 58.299330 \n", "5 0.000000 0.000000 0.000000 \n", "\n", " # LOST Evts. mean \n", "0 0.131106 \n", "1 0.158300 \n", "2 0.011310 \n", "3 3.534335 \n", "4 0.653819 \n", "5 0.000000 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster H" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Task termination# Evts. 95% p.tile# Evts. mean# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0KILL388.074.4255420.6333380.1696660.00023117.1726240.062799
1FINISH22.023.9782940.0237000.0141293.6325290.0111110.028482
2FAIL487.0170.1537010.60048337.5999420.0000002.8666470.343806
3LOST386.494.6666671.4933332.4000000.57333314.0400003.480000
4EVICT206.075.6580646.7325440.8371540.0000007.1647220.421745
5No termination18.08.1235060.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " Task termination # Evts. 95% p.tile # Evts. mean # EVICT Evts. mean \\\n", "0 KILL 388.0 74.425542 0.633338 \n", "1 FINISH 22.0 23.978294 0.023700 \n", "2 FAIL 487.0 170.153701 0.600483 \n", "3 LOST 386.4 94.666667 1.493333 \n", "4 EVICT 206.0 75.658064 6.732544 \n", "5 No termination 18.0 8.123506 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.169666 0.000231 17.172624 \n", "1 0.014129 3.632529 0.011111 \n", "2 37.599942 0.000000 2.866647 \n", "3 2.400000 0.573333 14.040000 \n", "4 0.837154 0.000000 7.164722 \n", "5 0.000000 0.000000 0.000000 \n", "\n", " # LOST Evts. mean \n", "0 0.062799 \n", "1 0.028482 \n", "2 0.343806 \n", "3 3.480000 \n", "4 0.421745 \n", "5 0.000000 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Markdown(\"# Table III\"))\n", "for cluster in \"abcdefgh\":\n", " df = pd.read_csv(glob.glob(DIR + \"/table-iii-\" + cluster + \".csv/part-00000-*\")[0])\n", " rename(df, \"# Evts. mean\", \"mean\")\n", " rename(df, \"# Evts. 95% p.tile\", \"%95\")\n", " \n", " for i in [-1,4,5,6,7,8]:\n", " df.loc[df.task_term == i, \"task_term\"] = NAMES[i]\n", " rename(df, \"# \" + NAMES[i] + \" Evts. mean\", \"avg_count_\" + str(i))\n", " for i in [0,1,2,3,9,10]:\n", " del df[\"avg_count_\" + str(i)]\n", " rename(df, \"Task termination\", \"task_term\")\n", " display(Markdown(\"### Cluster \" + cluster.upper()))\n", " display(df)" ] }, { "cell_type": "code", "execution_count": 5, "id": "d31634a7-9d6b-4e95-abc7-e724fea232ed", "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "# Table IV" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster A" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination92.359436174.323.2639513.45447423.04759734.5656080.707709
1EVICT-1.000000-1.0NaNNaNNaNNaNNaN
2FAIL90.792728499.00.6949420.6835560.0859571.8495870.009730
3FINISH1.1870921.00.0046960.0013411.0726230.0243960.000952
4KILL16.53317110.01.0454190.0738670.4613871.1887200.044610
5LOST223.2065931689.60.0000000.0000000.0000001.0340820.974598
\n", "
" ], "text/plain": [ " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", "0 No termination 92.359436 174.3 23.263951 \n", "1 EVICT -1.000000 -1.0 NaN \n", "2 FAIL 90.792728 499.0 0.694942 \n", "3 FINISH 1.187092 1.0 0.004696 \n", "4 KILL 16.533171 10.0 1.045419 \n", "5 LOST 223.206593 1689.6 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 3.454474 23.047597 34.565608 \n", "1 NaN NaN NaN \n", "2 0.683556 0.085957 1.849587 \n", "3 0.001341 1.072623 0.024396 \n", "4 0.073867 0.461387 1.188720 \n", "5 0.000000 0.000000 1.034082 \n", "\n", " # LOST Evts. mean \n", "0 0.707709 \n", "1 NaN \n", "2 0.009730 \n", "3 0.000952 \n", "4 0.044610 \n", "5 0.974598 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster B" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination112.422759169.834.6811610.71124213.37953338.7941880.780483
1EVICT1.0000001.01.0000000.0000000.0000000.0000000.000000
2FAIL74.367804374.02.0033551.9937650.2665844.9441450.034526
3FINISH6.30429910.00.0223800.0084762.3493040.0127290.006484
4KILL69.853370234.01.6964490.1578330.6137483.0086780.012092
5LOST320.020202459.80.0000000.0000000.0000002.9599461.996875
\n", "
" ], "text/plain": [ " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", "0 No termination 112.422759 169.8 34.681161 \n", "1 EVICT 1.000000 1.0 1.000000 \n", "2 FAIL 74.367804 374.0 2.003355 \n", "3 FINISH 6.304299 10.0 0.022380 \n", "4 KILL 69.853370 234.0 1.696449 \n", "5 LOST 320.020202 459.8 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.711242 13.379533 38.794188 \n", "1 0.000000 0.000000 0.000000 \n", "2 1.993765 0.266584 4.944145 \n", "3 0.008476 2.349304 0.012729 \n", "4 0.157833 0.613748 3.008678 \n", "5 0.000000 0.000000 2.959946 \n", "\n", " # LOST Evts. mean \n", "0 0.780483 \n", "1 0.000000 \n", "2 0.034526 \n", "3 0.006484 \n", "4 0.012092 \n", "5 1.996875 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster C" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination96.399561100.055.2769737.55290623.84886741.5786690.664107
1EVICT1.0000001.01.0008290.0000000.0000000.0004150.000000
2FAIL41.982301200.03.4836060.9975920.3764383.9983690.046439
3FINISH1.9914851.00.0218060.0169141.5650340.0174010.001803
4KILL110.680808652.00.6273340.0590760.6564262.2667940.006258
5LOST38.87009148.60.0000310.0003110.0000002.6207211.833872
\n", "
" ], "text/plain": [ " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", "0 No termination 96.399561 100.0 55.276973 \n", "1 EVICT 1.000000 1.0 1.000829 \n", "2 FAIL 41.982301 200.0 3.483606 \n", "3 FINISH 1.991485 1.0 0.021806 \n", "4 KILL 110.680808 652.0 0.627334 \n", "5 LOST 38.870091 48.6 0.000031 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 7.552906 23.848867 41.578669 \n", "1 0.000000 0.000000 0.000415 \n", "2 0.997592 0.376438 3.998369 \n", "3 0.016914 1.565034 0.017401 \n", "4 0.059076 0.656426 2.266794 \n", "5 0.000311 0.000000 2.620721 \n", "\n", " # LOST Evts. mean \n", "0 0.664107 \n", "1 0.000000 \n", "2 0.046439 \n", "3 0.001803 \n", "4 0.006258 \n", "5 1.833872 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster D" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination103.889987120.0041.4215327.60480818.17947647.6035020.661826
1EVICT1.0000001.001.0000000.0000000.0000000.0000000.000000
2FAIL43.355682250.006.1119930.9486020.5313906.4977840.041077
3FINISH2.1092602.000.2683750.0126141.7233920.0185670.005052
4KILL89.647948283.001.0131140.0543740.2833133.2556750.006664
5LOST271.4417482620.750.0000000.0000000.0000005.9380691.647084
\n", "
" ], "text/plain": [ " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", "0 No termination 103.889987 120.00 41.421532 \n", "1 EVICT 1.000000 1.00 1.000000 \n", "2 FAIL 43.355682 250.00 6.111993 \n", "3 FINISH 2.109260 2.00 0.268375 \n", "4 KILL 89.647948 283.00 1.013114 \n", "5 LOST 271.441748 2620.75 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 7.604808 18.179476 47.603502 \n", "1 0.000000 0.000000 0.000000 \n", "2 0.948602 0.531390 6.497784 \n", "3 0.012614 1.723392 0.018567 \n", "4 0.054374 0.283313 3.255675 \n", "5 0.000000 0.000000 5.938069 \n", "\n", " # LOST Evts. mean \n", "0 0.661826 \n", "1 0.000000 \n", "2 0.041077 \n", "3 0.005052 \n", "4 0.006664 \n", "5 1.647084 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster E" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination350.929407596.07.2043912.0744230.12629046.6460650.378274
1EVICT1.0000001.01.0000000.0000000.0000000.0000000.000000
2FAIL23.08112525.00.2465290.6655460.7167201.5881190.066467
3FINISH7.7760852.00.0186770.0290731.9344880.0209290.064920
4KILL88.790215309.00.7062930.0286180.4610847.5723010.029122
5LOST5.3741505.00.0000000.0000000.0000003.2344941.813924
\n", "
" ], "text/plain": [ " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", "0 No termination 350.929407 596.0 7.204391 \n", "1 EVICT 1.000000 1.0 1.000000 \n", "2 FAIL 23.081125 25.0 0.246529 \n", "3 FINISH 7.776085 2.0 0.018677 \n", "4 KILL 88.790215 309.0 0.706293 \n", "5 LOST 5.374150 5.0 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 2.074423 0.126290 46.646065 \n", "1 0.000000 0.000000 0.000000 \n", "2 0.665546 0.716720 1.588119 \n", "3 0.029073 1.934488 0.020929 \n", "4 0.028618 0.461084 7.572301 \n", "5 0.000000 0.000000 3.234494 \n", "\n", " # LOST Evts. mean \n", "0 0.378274 \n", "1 0.000000 \n", "2 0.066467 \n", "3 0.064920 \n", "4 0.029122 \n", "5 1.813924 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster F" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination217.718640379.44.3046761.3150214.97112248.1184650.464429
1EVICT1.0000001.01.0000000.0000000.0000000.0000000.000000
2FAIL17.1612518.00.6213270.5463560.4262657.5592440.034773
3FINISH2.9408432.00.0147040.0510141.6698600.1620420.002623
4KILL103.888843361.00.1826300.0639140.4166845.8243110.014161
5LOST3736.50000018823.40.0014910.0000380.0000006.2981401.429604
\n", "
" ], "text/plain": [ " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", "0 No termination 217.718640 379.4 4.304676 \n", "1 EVICT 1.000000 1.0 1.000000 \n", "2 FAIL 17.161251 8.0 0.621327 \n", "3 FINISH 2.940843 2.0 0.014704 \n", "4 KILL 103.888843 361.0 0.182630 \n", "5 LOST 3736.500000 18823.4 0.001491 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 1.315021 4.971122 48.118465 \n", "1 0.000000 0.000000 0.000000 \n", "2 0.546356 0.426265 7.559244 \n", "3 0.051014 1.669860 0.162042 \n", "4 0.063914 0.416684 5.824311 \n", "5 0.000038 0.000000 6.298140 \n", "\n", " # LOST Evts. mean \n", "0 0.464429 \n", "1 0.000000 \n", "2 0.034773 \n", "3 0.002623 \n", "4 0.014161 \n", "5 1.429604 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster G" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination342.090034599.1014.1844050.62618623.83601746.0029170.735801
1EVICT1.0000001.001.0000000.0000000.0000000.0000000.000000
2FAIL51.834803250.000.5555323.3348480.60756020.3519920.176242
3FINISH8.51916636.000.0017330.6298091.7596770.0054520.004575
4KILL37.054914100.005.6871720.0646400.08037019.1662600.059132
5LOST190.500000358.350.0000000.0000000.0000001.9947511.994751
\n", "
" ], "text/plain": [ " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", "0 No termination 342.090034 599.10 14.184405 \n", "1 EVICT 1.000000 1.00 1.000000 \n", "2 FAIL 51.834803 250.00 0.555532 \n", "3 FINISH 8.519166 36.00 0.001733 \n", "4 KILL 37.054914 100.00 5.687172 \n", "5 LOST 190.500000 358.35 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.626186 23.836017 46.002917 \n", "1 0.000000 0.000000 0.000000 \n", "2 3.334848 0.607560 20.351992 \n", "3 0.629809 1.759677 0.005452 \n", "4 0.064640 0.080370 19.166260 \n", "5 0.000000 0.000000 1.994751 \n", "\n", " # LOST Evts. mean \n", "0 0.735801 \n", "1 0.000000 \n", "2 0.176242 \n", "3 0.004575 \n", "4 0.059132 \n", "5 1.994751 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "### Cluster H" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Job termination# Tasks mean# Tasks 95% p.tile# EVICT Evts. mean# FAIL Evts. mean# FINISH Evts. mean# KILL Evts. mean# LOST Evts. mean
0No termination321.133053546.93.4700780.9078013.31690244.5358240.315120
1EVICT1.0000001.01.0000000.0000000.0000000.0000000.000000
2FAIL20.5042931.00.1140902.3000360.98063512.8334660.046833
3FINISH4.27819314.00.0054060.1528141.7780380.0135670.012663
4KILL11.0227053.00.2355000.1028990.28770111.3369560.031148
5LOST3.40000010.60.0000000.0000000.0000000.2352941.705882
\n", "
" ], "text/plain": [ " Job termination # Tasks mean # Tasks 95% p.tile # EVICT Evts. mean \\\n", "0 No termination 321.133053 546.9 3.470078 \n", "1 EVICT 1.000000 1.0 1.000000 \n", "2 FAIL 20.504293 1.0 0.114090 \n", "3 FINISH 4.278193 14.0 0.005406 \n", "4 KILL 11.022705 3.0 0.235500 \n", "5 LOST 3.400000 10.6 0.000000 \n", "\n", " # FAIL Evts. mean # FINISH Evts. mean # KILL Evts. mean \\\n", "0 0.907801 3.316902 44.535824 \n", "1 0.000000 0.000000 0.000000 \n", "2 2.300036 0.980635 12.833466 \n", "3 0.152814 1.778038 0.013567 \n", "4 0.102899 0.287701 11.336956 \n", "5 0.000000 0.000000 0.235294 \n", "\n", " # LOST Evts. mean \n", "0 0.315120 \n", "1 0.000000 \n", "2 0.046833 \n", "3 0.012663 \n", "4 0.031148 \n", "5 1.705882 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(Markdown(\"# Table IV\"))\n", "for cluster in \"abcdefgh\":\n", " df = pd.read_csv(glob.glob(DIR + \"/table-iv-evts-\" + cluster + \".csv/part-00000-*\")[0], header=None,\n", " names=[\"term\"] + [str(i) for i in range(0,11)])\n", " df2 = pd.read_csv(glob.glob(DIR + \"/table-iv-tasks-\" + cluster + \".csv/part-00000-*\")[0], header=None,\n", " names=[\"term\", \"# Tasks mean\", \"# Tasks 95% p.tile\"])\n", " df[\"term\"] = df[\"term\"].astype(int)\n", " df2[\"term\"] = df2[\"term\"].astype(int)\n", " df.sort_values(by=\"term\", inplace=True)\n", " df2.sort_values(by=\"term\", inplace=True)\n", " \n", " df = df2.merge(df, on=\"term\", how=\"outer\")\n", "\n", " rename(df, \"# Evts. mean\", \"mean\")\n", " rename(df, \"# Evts. 95% p.tile\", \"%95\")\n", " \n", " for i in [-1,4,5,6,7,8]:\n", " df.loc[df.term == i, \"term\"] = NAMES[i]\n", " rename(df, \"# \" + NAMES[i] + \" Evts. mean\", str(i))\n", " for i in [0,1,2,3,9,10]:\n", " del df[str(i)]\n", " rename(df, \"Job termination\", \"term\")\n", " display(Markdown(\"### Cluster \" + cluster.upper()))\n", " display(df)" ] }, { "cell_type": "code", "execution_count": null, "id": "a81da964-f539-49df-8fa3-7b358ea642e1", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "venv", "language": "python", "name": "venv" }, "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.9.4" } }, "nbformat": 4, "nbformat_minor": 5 }