From a96f7ff4d8094b3e6612ac7e61905f3aaff01848 Mon Sep 17 00:00:00 2001 From: Hussein Mozannar Date: Sun, 10 Mar 2024 19:38:49 -0400 Subject: [PATCH] barplots task completed time and duration --- analysis/benchmark_pass1_figure.ipynb | 580 ++++++ analysis/fig2_barplot.ipynb | 128 -- analysis/figures/benchmark.pdf | Bin 0 -> 17017 bytes analysis/figures/task_completion_times.pdf | Bin 0 -> 14017 bytes analysis/figures/task_duration_barplot.pdf | Bin 0 -> 13816 bytes analysis/figures/tasks_completed_barplot.pdf | Bin 0 -> 13012 bytes analysis/high_level_stats.ipynb | 461 +++++ analysis/main_analysis.ipynb | 1814 ++++++++++++++++++ analysis/mean_task_duration_indiv.pdf | Bin 0 -> 15831 bytes analysis/n_tasks_completed_indiv.pdf | Bin 0 -> 13535 bytes {analysis => temp}/analysis_final_vc.ipynb | 0 11 files changed, 2855 insertions(+), 128 deletions(-) create mode 100644 analysis/benchmark_pass1_figure.ipynb delete mode 100644 analysis/fig2_barplot.ipynb create mode 100644 analysis/figures/benchmark.pdf create mode 100644 analysis/figures/task_completion_times.pdf create mode 100644 analysis/figures/task_duration_barplot.pdf create mode 100644 analysis/figures/tasks_completed_barplot.pdf create mode 100644 analysis/high_level_stats.ipynb create mode 100644 analysis/main_analysis.ipynb create mode 100644 analysis/mean_task_duration_indiv.pdf create mode 100644 analysis/n_tasks_completed_indiv.pdf rename {analysis => temp}/analysis_final_vc.ipynb (100%) diff --git a/analysis/benchmark_pass1_figure.ipynb b/analysis/benchmark_pass1_figure.ipynb new file mode 100644 index 0000000..23b1143 --- /dev/null +++ b/analysis/benchmark_pass1_figure.ipynb @@ -0,0 +1,580 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "a2d91c06", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0kAAAG/CAYAAACNLZxtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAABuPUlEQVR4nO3debzN1f7H8dcyzw4hMg+V6haiiUimq8Fwi7hKSUXdBnV1G6Qc0qXBvU2/koRGlMrQRcZIpVJJbiGZiih0dDIf1u+Pvfe5+5yzz7z3Xvv7Pe/n4+Gxnf397rXXOZzPd733d33X11hrERERERERkYBirjsgIiIiIiKSSBSSREREREREwigkiYiIiIiIhFFIEhERERERCaOQJCIiIiIiEkYhSUREREREJEwJ1x3wq2rVqtkGDRq47oaIiIiI+NwXX3yx21pb3XU//EQhKUYaNGjAqlWrXHdDRERERHzOGLPVdR/8RtPtREREREREwigkiYiIiIiIhFFIEhERERERCaOQJCIiIiIiEkYhSUREREREJIxCkoiIiIiISBiFJBERERERkTAKSSIiIiIiImEUkkRERERERMKUcN0BEREREZEqJSsyttEgWlU8Neptr0pdz32bJsS0/cHrx0W9XXFHZ5JERERExDkvB6T7Nk2IervilkKSiIiIiDjn5YA0ttGgqLctbikkiYiIiIjvxDMgxaJ9cUshSURERER8RQFJCkshSURERER8QwFJokEhSURERER8QQFJokUhSUREREQ8TwFJoqlIhCRjzGXGmAXGmJ+MMQeNMZuMMW8ZYy7IZv/Wxpi5xpi9xpgDxpg1xpg7jTHF4913EREREcmZApJEm+9vJmuMeRS4B9gDzAR2A02AHsCVxphrrbWvhe3fA3gbOARMB/YC3YB/A22A3vHsv4iIiEhevNP/HdddKJT6BXydApLEgq9DkjGmJnA3sAs4y1r7S9i2i4ElwCjgteBzlYAXgWNAe2vtquDzDwb37WWM6WutnRbXb0REREREslBAkljx+3S7+gS+x0/DAxKAtXYpkApUD3u6V/DraaGAFNz3EDA8+OUtMe2xiIiIiORKAUliyddnkoDvgSPAucaYatba3aENxph2QEUCU/BCOgQf50doazlwAGhtjCltrT0cmy6LSGF4fbrJFa9e4boLIiIJTwFJYs3XZ5KstXuBe4ET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REREwigkiYiIiIiIhFFIEhERERERCaOQJCIiIiIiEkYhSUREREREJIxCkoiIiIiISBiFJBERERERkTAKSSIiIiIiImEUkkRERERERMIoJImIiIiIiIRRSBIREREREQmjkCQiIiIiIhJGIUlERERERCSMQpKIiIiIiEgYhSQREREREZEwJXLb4YsvvmharFixB621l1trK8WjUyIiIiIiIrFgjPndGPPe8ePHH27ZsuW6iPtYa7NtIBiQVtasWbNS1apVTalSpTDGxKzDIiIiIiIisWKt5ciRI+zZs8f+/PPP+/fs2dOmS5cuazLvl+N0u2LFij1Ys2bNSrVq1TKlS5dWQBIREREREc8yxlC6dGlOOukkU6tWrfKHDx9+vXv37kmZ98sxJFlrL69ataqSkYiIiIiI+MoJJ5xgTjzxxFOBvpm35RaSKpUqVSpmHRMREREREXGhVKlSFC9evCTQsnv37mXCt+W6up2m2ImIiIiIiN+E5RwDVA7fpiXARURERESkqCse/oVCkoiIiIiISBiFJA8YMGAAxhi2bNni6/dMFMYY2rdv77obIp6kepXYPvjgA4wxJCcnu+6KiEhCy/Vmsjnp/0j/aPUjJl594NWotrdu3Tr+7//+j6VLl/Ljjz9y8OBBqlWrRosWLbjiiiu4+uqrKVOmTO4NOTJgwABefvllJk+ezIABA1x3Jy7yck3dK6+8Qv/+if1/WQqv/yMfuu5Cjl59oG1U21O98p6ZM2cydepUvv76a3bt2sWhQ4eoU6cOrVq1YujQobRq1SrXNpYvX87FF1/M8ePHeeCBBxg9enQcei6J4J3+77juQo6uePWKqLa3YcMGxo8fzwcffMCWLVtITU2lYsWKnHzyybRt25a//vWvtGzZMsNrkpOTGTlyZIbnypQpQ926dencuTP3338/derUibhfTurXr5/jhzSTJk1i9uzZrF27ll9++YVjx45Rr149LrzwQu6++25OPfXUPL9XqDZm57vvvqNp06Z5bk+yV6iQVJSMGjWKkSNHcvz4cc4//3yuu+46KlSowK5du/jggw+48cYbef7551m1apXrrkqYESNGRHz+jz/+YNy4cZQoUYLOnTvHuVcisaV65U2zZs3i888/55xzzuGkk06iVKlSbNy4kXfffZfp06czYcIEbrzxxmxfn5qaynXXXUe5cuX4448/4thz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vcqsa9euzJ8/n2XLlqWHpC+//JJ9+/ZRvXr1iK955JFHeOSRR+jRowczZ87MsE01TryoTZs2LF26lMWLF+c4ZT7eQuEsv0qVKkXHjh355ptvWLlyJb169SpUP6pXr8727dvZv39/odqRAF2TlIvrr7+ekiVL8vbbb/Ptt9/muG/oU8EWLVoAgTmvmW3cuJGffvqJhg0bps95D61qknmKCgQGFatXr87y/Pnnnw8Q13njoSUqr7zyyizbIvU90d4/tGDDjTfemOt0pG3btkW8e3bo3zT0byySSFSv/sfr9Sqz0Cfn4QtDXHvttdxwww1Z/rRr1w6A5s2bc8MNN0RcxXPFihURly1XjZNENmDAAEqUKMGMGTP47rvvXHcnKiL9bhfEvn37WLduHcYY3T8pShSSctGgQQOSk5M5cuQIl112Wbb3kJg/f376jcBCn26MHj06wz0tjh07xt13383x48czfMrbo0cPqlSpwhtvvJGl/eTk5IjTHm677TZKlizJXXfdxYYNG7JsP3LkSNQHJKFfusyDqffffz/Dhd2xUpj3379/P2+88UauCzaEHDt2jHvvvTfDIGLz5s08/fTTlChRgmuuuSbf/ReJNdWr//FavTp8+DAff/xxxLY+//xzxo8fT7FixejatWv6808//TQTJ07M8uf6668H4LLLLmPixIkRV7v6/vvvs0zTmzVrFsuWLaNJkyZaAlwSUuPGjRk+fHj6KpHZ/c6kpKTEt2M52LNnD998803Ebe+99x7vvvsuFSpUyHIN4A8//MC6desyTOPduXNnxHsq/fHHHwwYMIBDhw7RqVOnHK+5lrzTdLs8GDZsGGlpaYwcOZJzzjmH1q1b06pVKypUqMCuXbtYvnw533//ffrFvq1bt+aee+7hscce409/+hO9evWifPnyzJs3j7Vr13LhhRdmuM9OhQoVmDBhAn369KFt27YZ7juydu1a2rVrx/LlyzP0qWnTpkyaNImBAwdyxhln0LVrV0455RSOHj3Ktm3b+PDDD6levXrEmztOnDgx4qfGAP369ct2Ktrf/vY3Jk+eTO/evbnyyiupXbs2a9euZf78+Vx11VVMnz69gD/hvCnM+4culMxtwYaQs846i08//ZSWLVvSpUsX9u3bx/Tp00lJSeGxxx6LOC1JJBGoXgV4rV4dPHiQNm3a0LRpU84++2zq1KnDgQMH+O6771iyZAkQuKaradOmUelf165dGTp0KPPmzaNZs2bp90kqU6YML730kpb/loT10EMPYa3l4Ycfpk2bNrRs2ZJzzz2XqlWrkpKSwpYtW1i0aBFA+llVl3788UdatGjB2WefzRlnnEHt2rVJSUlh9erVrFy5kpIlSzJx4kSqVKmS4XUdO3Zk69atbN68Of1Dl3Xr1nHxxRdzwQUXcNppp1GjRg22b9/OwoUL2blzJ40aNYrLh0BFhUJSHj300EP07t2b5557jqVLlzJ58mQOHTrECSecQPPmzbn33nsznF149NFHadGiBc8++yyvvPIKR48epXHjxowePZqhQ4dSqlSpDO336tWL+fPnM3LkSN58801Kly5Nu3bt+OSTTxg7dmyWQQfANddcQ7NmzRg3bhxLly5lwYIFlC9fnpNOOolevXrRp0+fiN/LRx99lH6vgcyaN2+e7aDjrLPOYunSpQwfPpy5c+eSlpZGs2bNeOedd0hKSor5oKMw75/XBRtCqlSpwrx587jnnnuYPHkyv//+O6effjp33303/fr1i8r3IxIrqlfeq1fly5dn1KhR6atu7d69G2MMtWvX5pprruHWW2+N6v1bzjvvPB566CEefPBBnn32Way1dOjQgUceeST9mieRRGSMITk5mb/+9a+MHz+epUuX8sYbb7B//34qVqxI48aNueWWW+jfv3+BbtIabfXr12fYsGEsX76chQsXsmfPHkqWLEm9evUYPHgwQ4YM4bTTTstTW40bN2bQoEF8/vnnzJ49m5SUFMqVK8epp57Kbbfdxh133EHFihVj/B0VHSani82++OILG83lWEVERERERBLFF198wciRI18CHpo9e/aO0PM6ny4iIiIiIhJGIUlERERERCSMQpKIiIiIiEgYhSQREREREZEwCkkiIiIiIiJhFJJERERERETCKCSJiIiIiIiEUUgSEREREREJo5AkIiIiIiISRiFJREREREQkjEKSiIiIiIhIGIUkERERERGRMApJIiIiIiIiYRSSPGLAgAEYY9iyZYuv3zNRGGNo3759VNucNGkSxhg+++yzArcRi37lx/bt2ylbtiwPPvigsz5I4lO9SmwffPABxhiSk5Oj2u61115LjRo12L9/f0L1Kz/efvttjDEsXrzYWR9E4m3p0qUYY3jrrbcK3EaDBg1o0KBB9DqVTwcOHKBmzZr0798/am2WKMyLaw9uxeEdqfy2aBNVOjWi9EkVo9WvdIVpf/sLq6Lal3Xr1vF///d/LF26lB9//JGDBw9SrVo1WrRowRVXXMHVV19NmTJlovqe0TZgwABefvllJk+ezIABA1x3Jy6MMbnu88orr0T1FyuzP/74g+HDh9OtWzfOPffcmL1PNISKXKTBZu3atbn55psZN24cgwYNom7duvHtXCG0Gvxevl+TuuMbNi0aS6NO91HxpDOj3qfw9tfPuT+qbateedPMmTOZOnUqX3/9Nbt27eLQoUPUqVOHVq1aMXToUFq1apVrG8uXL+fiiy/m+PHjPPDAA4wePTrm/V61ahWvvfYaTzzxBOXLl4/5+xXUli1baNiwIddddx1TpkzJsv2KK67g7LPP5u9//ztfffUVxYp557PkL1pNyNf+q1LXc9+mCYxtNIhWFU+Nen8yt99y1aCotr9hwwbGjx/PBx98wJYtW0hNTaVixYqcfPLJtG3blr/+9a+0bNkyw2uSk5MZOXJkhufKlClD3bp16dy5M/fffz916tSJuF9O6tevn+MHNJMmTWL27NmsXbuWX375hWPHjlGvXj0uvPBC7r77bk49Ne8//1BdzM53331H06ZN89ze8ePHueuuu2jWrBm9evXK8+tcaN++PcuWLcNam2VbuXLluP/++7nrrru4/fbbozLWKlRISuSAFG2jRo1i5MiRHD9+nPPPP5/rrruOChUqsGvXLj744ANuvPFGnn/+eVatim4wk8IbMWJExOf/+OMPxo0bR4kSJejcuXNM+/D000/z888/c99998X0feLhH//4B8888wwPP/wwEybk76DsJfEMSNFuX/XKu2bNmsXnn3/OOeecw0knnUSpUqXYuHEj7777LtOnT2fChAnceOON2b4+NTWV6667jnLlyvHHH3/Erd/Dhg2jUqVK3HLLLXF7z1gwxnDvvffSp08fpk2bRr9+/Vx3KSbiHZCiyVrLqFGjGDVqFMePH+fss8+mT58+VK1aldTUVNasWcMzzzzDuHHjePbZZ7n11luztHHRRRelz8rYvXs3CxYs4LnnnuPNN99k5cqVEWdsrF69mlmzZtGsWTN69uyZYVtSUlKOfX7ttdf4+eefOe+886hZsybFihXjv//9L5MnT+aVV15h5syZXHLJJfn6OQwZMiTi+1arVi1f7UybNo2vv/6a119/PU8fKieywYMHM3LkSIYPH86CBQsK3V6hQlJRCUj//Oc/GTFiBHXr1uWtt97ivPPOy7LPe++9x7hx4xz0TnKT3dSNF154AYBu3bpRs2bNmL3/sWPHGD9+PCeffDKtW7eO2fvEy0knnUTnzp15/fXXefzxx6lcubLrLkWdlwOS6pW3Pf/88xHP8H3zzTecc8453H333Vx77bWUKlUq4uuHDBnCvn37uP/++3nggQdi3V0g8In+okWLuPHGGylbtmxc3jOWevToQVJSEs8995wvQ5KXAxIEPgRKTk6mbt26TJ06lTZt2mTZ55dffuHJJ59k3759Edto3759hrHB0aNHueSSS1i8eDGjR49m8uTJWYLSlClTmDVrFs2bN8/3lNC5c+dG/L1euHAhXbp0YejQofkOSXfeeWdUprf93//9H5UqVeIvf/lLodtyrUyZMvTp04cXXniB77//npNPPrlQ7RXqPHJRCEhbtmwhOTmZkiVLMnfu3IgDDoDLL7+c+fPnZ3n+zTffpF27dlSuXJmyZcty5plnMmbMGA4fPhyxnUWLFtG2bVvKly9P1apV6dmzJ+vWrcuxj59++im9evWiZs2alCpVirp16zJ48GB27NiR/284D6ZMmcKVV15Jo0aNKFu2LJUqVaJNmza89tprEfdv3749xhiOHj3KqFGjaNy4MWXKlKFp06a8+OKL6fuNHz+eM888k7Jly1KnTh1GjBjB8ePHC/3+2QmdBRk8eHC2++zYsYP+/ftTo0YNypYtS8uWLXnjjTfy9T4LFy7kxx9/pE+fPtnus27dOgYOHEiDBg0oXbo0NWrUoG3btjz//PMR99+9ezeDBg2iVq1alC5dmjPOOIPJkydn2e/IkSM8++yzXHrppdSvX5/SpUtTtWpVOnXqxLx58zLsG7oeYOvWrWzduhVjTPqfzFOd+vbty4EDB5g2bVq+fhZe4OWApHqVldfqVXZTIM8880xOO+009u3bx6+//hpxn1mzZjF58mSefvppTjrppNx+NAB88skndOrUicqVK1OxYkX+/Oc/5/sM46RJk7DW5ljjFixYQLdu3ahRowalS5embt269OjRg0WLFkXcf/Xq1Vx22WUkJSVRrlw5LrroIj7++OMs++3YsYNRo0bRpk2b9P9TJ510Ev369eO7777LsG9ycjINGzYE4OWXX85Q48Kn3pUuXZqePXvy0Ucf5fr/2Wu8HpA2bdrE6NGjKVWqFPPmzYsYkABq1KjBP//5T+655548tVuyZEkGDQpMByzMdcPZye73unPnziQlJbFx48aov2derFu3jo8//pju3btn+wHHTz/9xB133MHJJ59MmTJlqFq1Kueeey4PP/xwxP0PHDjAP/7xD+rVq0fp0qVp0qQJjz76aMQpcnmtj1u2bMEYw7JlywAy/O5mDrN9+/bFWsukSZMK8BPJqFBnkvwekAAmT57M0aNH6du3L3/6059y3Ld06dIZvh42bBhjxoyhWrVq9OvXjwoVKjBv3jyGDRvG+++/z8KFCylZsmT6/jNmzKBPnz6UKlWKPn36UKtWLVasWMEFF1zAWWedlW3/brrpJkqXLk337t2pW7cu33//PRMnTmTOnDmsXLmSevXqFf4HEeaWW27h9NNPp127dtSqVYs9e/Ywd+5c+vfvz/r167P9xenbty+ffvopl156KSVLlmTGjBkMGjSIkiVLsmbNGl5++WUuv/xyOnbsyOzZsxk1ahTlypXj3nvvjcr7h/vyyy/58ssvadCgQbZT7X777Tdat25NUlIS119/PSkpKbz55ptcffXVbN++nX/84x95+nmFBgEXXnhhxO3/+c9/6N27N4cPH6Zr16789a9/JSUlha+//prHHnssy/SVlJQU2rRpQ6lSpejVqxeHDh1ixowZDBw4kGLFinHdddel77t3716GDBlC69at6dy5M9WrV+fnn39mzpw5XHrppbz44ovpU3caNGjAiBEjePLJJ4HAp1QhzZs3z9CH0IFp4cKFOYZMr/FyQALVq0j8UK8gcLZm/fr1VKtWjVq1amXZ/ssvv3DTTTfRs2dPrrnmmojX22T26aefMmbMGDp16sStt97Kxo0beeedd1i+fDkLFiygbdu2eerbokWLKF68OOeff37E7SNGjGDUqFFUqFCBnj17UrduXXbs2MHHH3/Ma6+9RqdOnTLsv2rVKh577DEuuOACbrzxRrZt28bbb79Nx44dWb16dYbrN5YvX87YsWO5+OKLufLKK6lQoQLff/89M2bMYPbs2Xz00Uc0a9YMCATglJQUnnrqqSxTpiLVuClTprBo0aJ8Xd+RyLwekCBQQ9LS0ujXrx9nnHFGrvuXKJH3YW5oEB/PKWcrVqwgJSWFs88+O9+vnTdvHr//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s337dvbv35+n/cN/fzOfTQofn8RCLOtztH5/nV2TFI8b0UbD9ddfT8mSJXn77bf59ttvc37PsMTbokULIDDvNbONGzfy008/0bBhw/T/hKGVTTJPUYHAoGL16tVZng+tJJSXeePRElqm8sorr8yyLVLfE+39Qws23HjjjblOSdq2bVvEO2iH/k1D/8a5Ca30lXkuLvzv3zDzctzRsnHjRqpWrRrxxnjZ/byKFy+e5dPazPbv38/27ds566yzPHnzOT8GJFC9yszr9Sqz0GAlfGGIa6+9lhtuuCHLn3bt2gGBVdtuuOGGiKt4rlixIuKy5fmpcbVq1aJ69eoR6xsE/t2ttRGXnC+s3bt3k5KSQuvWrbMEpD/++CN9Wmi40BSk3GpcaOnvzKveeYFfAxIEprCVKFGCGTNmZFni3asi/V4XxL59+1i3bh3GmDzfPyk0Pom01H08xieQv/qY19/f9evXc8IJJxT6UgAnISkeAem3RZui0lZoxa8jR45w2WWXZXv/iPnz52eYtxn6hGP06NEZ7mlx7Ngx7r77bo4fP57hk94ePXpQpUoV3njjjSzvkZycHHHaw2233UbJkiW566672LBhQ5btR44cifqAJPSLl3kw9f7772e4sDtWCvP++/fv54033sh1wYaQY8eOce+992YYRGzevJmnn36aEiVKcM011+Spz6GAEprfG+66666jUqVKPP/88xFXisvvtKnMGjRowN69e1mzZk2G51966SXef//9iK854YQT+PXXX7PMDQ732WefcezYMS6++OJC9c8FvwYkUL3KzGv16vDhwxHvBQTw+eefM378eIoVK5bh+p6nn36aiRMnZvlz/fXXA3DZZZcxceLEiCteff/991mm6c2aNYtly5bRpEmTPC0BboyhXbt27N69O+K9Xm6//XYgsDpgpE+kC/MpdY0aNShXrhxffPFFhmmaR48eZciQIRGvR6hSpQrGmFwXZAjVa6/VOD8HJAhc6D98+PD0FdCy+30JTRVLBHv27OGbb76JuO29997j3XffpUKFClmu//vhhx9Yt25dhim8O3fujPh79scffzBgwAAOHTpEp06dcrzeOlxO45Nu3brRoEEDZs+ezdSpU7NsL+wZpoLU59ACWDn9/m7evJldu3al3/OuMOI+3S5eAalKp9yXZs6rYcOGkZaWxsiRIznnnHNo3bo1rVq1okKFCuzatYvly5fz/fffZ7jYtHXr1txzzz089thj/OlPf6JXr16UL1+eefPmsXbtWi688MIM99mpUKECEyZMoE+fPrRt2zbDfUfWrl1Lu3btsgyimzZtyqRJkxg4cCBnnHEGXbt25ZRTTuHo0aNs27aNDz/8kOrVq0f8hGDixIkRPzUG6NevX7ZT0f72t78xefJkevfuzZVXXknt2rVZu3Yt8+fP56qrrmL69OkF+AnnXWHeP3SxZG4LNoScddZZfPrpp7Rs2ZIuXbqwb98+pk+fTkpKCo899ljEaUmR9OzZkzvvvJP3338//Z5EIdWqVeONN96gV69eXHzxxVxyySWcddZZ/P7776xZs4Yff/yRzZs35+l9Igm974UXXshVV11F5cqVWbVqFStWrKBXr17MmDEjy2s6duzI559/TteuXWnXrh2lS5emWbNmdOvWLX2fBQsWAJE/AUpkfg5IIapX/+O1enXw4EHatGlD06ZNOfvss6lTpw4HDhzgu+++Y8mSJUDgmq5o3bena9euDB06lHnz5tGsWbP0+ySVKVOGl156Kdflv0OuvPJK3n77bd5///0sF2136dKFBx98kIcffpjTTjst/T5Ju3btYsWKFZx//vl5uqdTJMWKFeOOO+5g7NixnHnmmfTo0YMjR46wdOlS9u7dy8UXX8zSpUszvKZChQqcd955fPjhh1x99dWccsopFC9enO7du2e4v9eCBQtISkqK+lLTseT3gBTy0EMPYa3l4Ycfpk2bNrRs2ZJzzz2XqlWrkpKSwpYtW9Lv/xM6o+rSjz/+SIsWLTj77LM544wzqF27NikpKaxevZqVK1dSsmRJJk6cmGW6W8eOHdm6dSubN29ODxTr1q3j4osv5oILLuC0006jRo0abN++nYULF7Jz504aNWqUrw+AOnToQFJSEu+//z6jR4/OsK1UqVK89dZbdOnShX79+vHCCy9w/vnnc+jQIb777jsWL16cZZGU/ChIfe7YsSNvvfUWV1xxBZdeeilly5alfv369O/fP32faI5P4hqS4hmQot3+Qw89RO/evXnuuedYunQpkydP5tChQ5xwwgk0b96ce++9N8uZhUcffZQWLVrw7LPP8sorr3D06FEaN27M6NGjGTp0KKVKlcqwf69evZg/fz4jR47kzTffpHTp0rRr145PPvmEsWPHRjzTcM0119CsWTPGjRvH0qVLWbBgAeXLl+ekk06iV69e2d4B/aOPPkq/30BmzZs3z3bQcdZZZ7F06VKGDx/O3LlzSUtLo1mzZrzzzjskJSXFfNBRmPfP64INIVWqVGHevHncc889TJ48md9//53TTz+du+++O+JymNmpU6cO3bp1Y86cOfz2229ZCmHoE//QCi8LFiygSpUqNG3alPvvvz/P7xNJ165dmTNnDqNHj2b69OkUL16cc889l6VLl7Jp06aIIWn48OGkpKQwZ84cPvroI44dO8Z1112XHpKOHz/Oa6+9RrNmzfK1bKlrRSEghaheBXitXpUvX55Ro0alr7y1e/dujDHUrl2ba665hltvvTWq93A577zzeOihh3jwwQd59tlnsdbSoUMHHnnkkfRrnvLiyiuv5MQTT+SVV16JeMZq1KhRnH/++Tz99NO899577N+/nxo1atCqVSuuvfbaQn0PDz/8MNWrV2fixIm88MILVK5cmc6dOzN69OgsN64MefXVV7nrrruYP38+U6dOxVpLnTp10kPShg0bWLlyJUOGDKFcuXKF6l88FYWABIGzl8nJyfz1r39l/PjxLF26lDfeeIP9+/dTsWJFGjduzC233EL//v0LdJPWaKtfvz7Dhg1j+fLlLFy4kD179lCyZEnq1avH4MGDGTJkCKeddlqe2mrcuDGDBg3i888/Z/bs2aSkpFCuXDlOPfVUbrvtNu6444583ReoXLlyDBgwgCeffJLvvvsuSz9atWrF6tWrGTt2LPPmzePjjz+mYsWKNGnSJOJiFflRkPp84403snXrVqZNm8Zjjz1GWloaF110UYaQ9PLLL1O9evXofIhrrc32z6pVq6yIFN5HH31kAfuvf/3LdVcKbfbs2Rawr776quuuiEiC+Oc//2kB++WXX7ruSqH9/e9/t6VKlbI//PCD666IxNzmzZtt6dKl7R133OG6K4X29ddfW8A+/PDD+XrdqlWrbLdu3SZ269btJBuWgxLmZrIifta6dWt69+7No48+yoEDB1x3p8CstYwYMYJWrVpx9dVXu+6OiCSIu+66i3r16vHQQw+57kqh/Pzzzzz//PPcfvvtNGoUvWn7IomqQYMG3HHHHUyYMCFmK9nFy0MPPUSdOnUYOnRoVNpzfp8kkaLiiSeeYNKkSWzevJkzzjjDdXcKZOfOnXTv3p2ePXt6clU7EYmNMmXK8Oqrr7J06VL2799P+fLlXXepQLZs2cK9997LkCFDXHdFJG6GDx9O+fLl2bJlS77ui5RIDhw4QIsWLbjzzjujdrsBY3NY2/2LL76w0bzzuYiIiIiISKL44osvGDly5EvAQ7Nnz94Rel7T7URERERERMIoJImIiIiIiIRRSBIREREREQmjkCQiIiIiIhIm15CU08IOIiIiIiIiXpRTzskxJBljfj9y5EjUOyQiIiIiIuLSkSNHOH78+OFI23ILSe/t2bNHp5JERERERMRX9uzZY3fu3LkBMECGM0M5hqTjx48/vHPnzt937NhhDx8+rKl3IiIiIiLiWdZaDh8+zI4dO+xPP/10ZOHChZ8C+4C94fvleDNZgC+++KLp3r17X6xcufJ5xYsXLxnDPouIiIiIiMTU8ePHD+/cuXPDokWLPtm8eXNZ4NXZs2cvDN8n15AE0L179+LAX4DOQAlAp5RERERERMSrDHAYmA28P3v27Az5Jk8hKaR79+6lgNpAqWj2UEREREREJI4OAdtnz56dFmljvkKSiIiIiIiI3+lmsiIiIiIiImEUkkRERERERMIoJImIiIiIiIT5f2fYx+RKYNI1AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "plt.rcParams.update({'font.size': 20})\n", + "\n", + "plt.figure(figsize=(12,6))\n", + "\n", + "\n", + "color1 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.2, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "color2 = (0.1, # redness\n", + " 0.4, # greenness\n", + " 0.2, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "color3 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.7, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "\n", + "\n", + "color4 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.7, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "color5 = (0.6, # redness\n", + " 0.2, # greenness\n", + " 0.6, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "\n", + "\n", + "color6 = (0.8, # redness\n", + " 0.2, # greenness\n", + " 0.6, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "colors = [color1, color2, color3, color4, color5, color6]\n", + "\n", + "\n", + "\n", + "species = (\"HumanEval\", \"MBPP\")\n", + "penguin_means = {\n", + " 'CodeLlama7b': (33.5, 41.4),\n", + " 'CodeLlama7b (chat)': (34.8, 44.4),\n", + " 'CodeLlama34b': (48.8, 55.0),\n", + " 'CodeLlama34b (chat)': (41.5, 57.0),\n", + " 'GPT-3.5 ': (80.34, 81.03),\n", + " 'GPT-3.5 (chat)': (77.0, 82.91)\n", + "}\n", + "\n", + "\n", + "x = np.arange(len(species)) # the label locations\n", + "width = 0.15 # the width of the bars\n", + "multiplier = 0\n", + "\n", + "\n", + "for attribute, measurement in penguin_means.items():\n", + " offset = width * multiplier\n", + " hatch_pattern = '/' if 'chat' in attribute else '' # Apply hatch pattern if 'chat' is in the label\n", + " rects = plt.bar(x + offset, measurement, width, label=attribute, color=colors[multiplier], hatch=hatch_pattern)\n", + " multiplier += 1\n", + "\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "plt.ylabel('Pass@1')\n", + "plt.xticks(x + 2.5*width, species)\n", + "# plt.legend(loc='bottom', ncols=3)\n", + "plt.ylim(20, 85)\n", + "\n", + "plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.1),\n", + " fancybox=True, shadow=True, ncol=3)\n", + "\n", + "plt.savefig(\"figures/benchmark.pdf\", format=\"pdf\", bbox_inches=\"tight\", dpi = 300)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "660879de", + "metadata": {}, + "source": [ + "# Extra" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "9bdd32f2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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6dMpV64c8fHxmeMXLlzIiRMnGDZsWLYwAdeXa2hoaK51zJgxg7S0NF599dVcX6Ddu3enf//+LF68mFOnThW47oLI+WUOEBgYyMMPP0x6ejqrVq3yOt+0adMywwSgYcOGdO7cmZSUFJ5++uls2xAWFka/fv04duwYBw8edGT9n332GXFxcUydOpV58+ZRqVIlFixYwIABA3K1nTVrFgsXLuTNN9/k6quv9ro8bxo3bsxDDz2UbdyAAQOIiopi3759bNhQtk+zl4LTHor4xFoLgDGmwPN8/fXXgOuLPacmTZpQt25d9u/fT0pKCmFhYZnto6KicrUPDQ2lVatWrFu3Ltv4L774AoB169axZcuWXPMdOXKECxcusGfPHtq2bVvg2i8mOTmZ559/nlWrVpGcnMyZM2eyTc8ZAB45gxLIPC7hrT5PwBw4cID69esXef3Tpk1j2rRp/PLLL+zZs4eXXnqJ3r1788wzz2Q72J6UlMT48eO58847ueuuu7wuKy9dunTxugfSrVs31q1bx7///W+vP2O59ChQxCe1a9dm165dHDhwoMDzpKamAnjtm/eMT05OJjU1lbCwsMz2ef01nHUvx+P48eMAvPjii/nW4uSprt999x3t27fn5MmTdOnShZ49exIaGoqfnx9JSUnMmTMnzxMOvO1lebqy8puWlpbmyPo9KlasSOvWrfnnP//JiRMnePrpp+nZsyc33ngjACNHjiQ4OJg333yzYB9KFhf7+Xl+znLpU6CITzp37szq1atZtWoVo0aNKtA8ni/Iw4cPe+2i8XSjedp5hj/99JPX5R0+fDjPdaSmplK5cuUC1VVUf/vb3zh+/DgJCQlER0dnmzZ37lzmzJlzSa2/V69eLFu2jHXr1mUGytdff01qairVq1f3Os+zzz7Ls88+y4ABA/jkk0+yTbvYz89bcMqlSYEiPrnvvvuYOnUqH3/8MTt37qRZs2Z5tj137hxBQUG0bt2ar7/+mrVr1+YKlH379nHgwAEaNGiQeUyhTZs2gKv7auTIkdnap6amsm3btlzr6tixI1u3bmXDhg306dOnaBtZQPv27QNg0KBBuabl7JK7FNbv6R7LetD/3nvv5ddff83Vdu/evaxfv55WrVrRtm1bWrdunavNxo0bycjIyNXttXbtWgCv88ilSQflxScRERHExsZy/vx5+vTpk+c1BcuWLaN3794AmaEwZcqUbNc4XLhwgccff5yMjIxsezsDBgygSpUqvP/++7mWHxsb67WrZNy4cQQEBPDoo4+yZ8+eXNPPnz/v+EFgzz29PF+QHsuXL892kkFxKez6z507x6ZNm7wua8uWLbz11luUK1eOXr16ZY5/7bXXiI+Pz/W67777AOjTpw/x8fE8/PDDuZa5d+/eXF1lCxcuZN26dTRu3FinDV9GtIciPps4cSLp6enExcVx44030qlTJ9q1a5d565X169ezd+/ezAPPnTp14oknnuCFF16gRYsWDB48mIoVK7J06VJ27NhB586d+dOf/pS5/JCQEGbOnMmQIUPo0qVLtutQduzYQdeuXVm/fn22mpo2bcqsWbMYOXIkzZs3p1evXjRp0oS0tDSSk5PZsGED1atX93phZHx8fK4vZY9hw4bRs2dPr9MeeughEhISuPPOOxk0aBB16tRhx44dLFu2jLvuuosPPvjAx0+4YAq7/jNnzhAZGUnTpk1p06YNdevW5ddff+Xbb79l9erVgOsYVNOmTR2pr1evXkyYMIGlS5dyww03ZF6HUr58ed59912dMnw5sdbqVchXYmKild/s3LnTjhs3zjZv3txWqlTJBgQE2Jo1a9pevXrZ+Ph4e/bs2Wzt586dayMjI21ISIgNCgqyzZo1s1OmTLFnzpzxuvwVK1bYyMhIGxwcbMPCwmz//v3tt99+a0eMGGEBu3///lzzbN++3Y4YMcLWq1fPBgYG2ipVqtjmzZvb0aNH21WrVmVr61lOfq+XX345W9uc6/z888/tzTffbMPCwmxISIiNjIy0CxYssGvWrLGAjYmJydY+KirKuv775ZbfdsXExFjArlmzxuf1nz9/3k6ePNn26NHD1qlTxwYFBdny5cvbRo0a2eHDh9vNmzd7rcubhIQEC9hJkyblmpZ13Zs2bbI9evSwlSpVsiEhIfbWW2+1X331VYHXI8UjMTHR9uvXb1a/fv0CrAPfjca6T/+Ugtu6dat18pRTEZHSsHXrVuLi4hKAMYsWLUq76AwXoX1NERFxhAJFREQcoUARERFHKFBERMQRChQREXGEAkVERByhQBEREUcoUERExBEKFBERcYQCRUREHKFAERERRyhQRETEEQoUERFxhJ6HUgzajfm0tEvIV+LbfUu7BEdER0czZ84c9u/fn/mQqctxnZeqtWvX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JsYCds2aNT6v//z583by5Mm2R48etk6dOjYoKMiWL1/eNmrUyA4fPtxu3rzZa13eJCQkWMBOmjQp17Ss6960aZPt0aOHrVSpkg0JCbG33nqr/eqrrwq8Hmut3b9/vwVs/fr181yPN/Xr1882zw8//GD/8pe/2E6dOtmrr77aBgYG2jp16thevXrZJUuW5Jp/7969tm/fvrZq1arWGGMBm5CQUKB1eyxcuNC2bdvWBgUF2apVq9ohQ4bYpKSkfH/WmzZtsnfccYetXr26DQgIsLVq1bK33Xab/eijjwpc38UkJibafv36zerXr1+AdeC70Vj36Z9ScFu3brVOnnIqIlIatm7dSlxcXAIwZtGiRWkXneEidAxFREQcoUARERFHKFBERMQRChQREXGEAkVERByhQBEREUcoUERExBEKFBERcYQCRUREHKFAERERRyhQRETEEQoUERFxhAJFREQcoeehFIN/Df9XaZeQrzv+cUdplyAilyHtoUiR7dmzh8cee4w2bdpQtWpVAgICqFq1Kh06dODxxx9n69at2drHxsZmey65MYbg4GCaNGnCww8/nPlEOm/t8nt5nlyYl1mzZjFw4EAaN25M5cqVqVixItdddx0PPPAAu3fvLtQ2R0dH51uLtwd4iVzutIciPrPWMnnyZCZPnkxGRgZt2rTJfCLdqVOn2L59O6+//jrTp0/njTfeyPV42KioKLp16wbAsWPHWLFiBW+++SYffvghmzdvzpyW1bZt21i4cCE33HADAwcOzDbN8yz6vLz33nv8+OOPdOjQgZo1a1KuXDm++eYbEhIS+Pvf/84nn3yS+bjignrkkUe8rrdatWqFWo7I5UCBIj6bPHkysbGxhIeHM3fuXCIjI3O1OXLkCK+88orX579369aN2NjYzPdpaWn07t2bVatWMWXKFBISEnKFyuzZs1m4cCGtWrXKNm9BLFmyhPLly+cav3LlSnr27MmECRMKHSjjx4+/6J6RyJVCgSI++e6775gyZQqBgYEsXbqU5s2be21Xo0YNnnvuOdLT0y+6zICAAEaPHs2qVav46quvnC7Za5gA3HrrrYSFhbFv3z7H1ylyJVGgiE8SEhJIT09n2LBheYZJVv7+BftV8zyS2hhTpPoKY+PGjaSkpNCmTZtCz7t06VJ+/vln/Pz8aNy4Md27d6dy5crFUKVI2adAEZ98/vnnAHTv3t2xZaanpzNz5kwAOnTo4Nhyc5o/fz47duzgzJkz7NmzhyVLllC1alXeeOONQi/roYceyva+UqVKTJ06NdfxIpErgQJFfHL48GEA6tSpk2taUlISs2fPzjYuLCyM8ePHZxu3du3azOMgx48fZ/ny5ezdu5dq1aoxadKk4igbcAXKBx98kPn+mmuu4f3336ddu3YFXkbXrl25/fbb6dixIzVq1ODQoUMsWLCAuLg4xo0bl9l9J3IlUaCIT/LrmkpKSiIuLi7buPr16+cKlHXr1rFu3ToAAgMDCQ8P58EHH2TixImEh4cXuiZvB+mjo6NzHTSfN28e8+bN4+eff2bHjh3ExcURGRnJ22+/TXR0dIHWNXLkyGzvGzZsyIQJE7j22mvp168fkyZNYtSoUfj5+RV6O0QuVQoU8UmtWrXYtWsXBw8ezDWtW7dumYGTnp5OQECA12XExMQU+kyt/OQMMU8teZ2FVblyZTp16sTixYtp164dY8eO5ZZbbqFu3bo+19C3b1/q1KnDwYMH2blzJy1btvR5WSKXGl3YKD7xnCK8atWqUq7kN9baXC9v17LkFBgYSI8ePTh79iybN28uch3Vq1cH4JdffinyskQuJQoU8Ul0dDT+/v7Mnz+fb7/9trTLKTLPnlZBz0bLS2pqKrt27SrQlfsilxsFivikUaNGPPXUU5w/f57evXuzadMmr+1SUlJKtrA8HD9+nP/+979ep3366acsWLCAkJAQoqKisk373//+x65du0hLS8scd/jwYa/XrJw+fZro6GjOnj3LLbfcQs2aNZ3dCJEyTsdQxGd//etfsdbyzDPPEBkZSdu2bWnfvj1Vq1YlJSWFpKQkPvvsM8B1VlRp+uGHH2jdujVt2rShefPm1KlTh5SUFLZt28bmzZsJCAggPj6eKlWqZJuvR48efP/99+zfvz9zj2PXrl3cfPPN3HTTTVx33XXUqFGDgwcPsnLlSg4fPkzDhg2Jj48vha0UKV0KlGJwpdzN1xhDbGwsv//973nrrbdYs2YN77//Pr/88guVKlWiUaNGjB07luHDh/t00aCT6tevz8SJE1m/fj0rV67k+PHjBAQEUK9ePcaMGcMjjzzCddddV6BlNWrUiNGjR7NlyxYWLVpESkoKFSpU4Nprr2XcuHH88Y9/pFKlSsW8RSJlj/GcjSMFt3XrVtu2bdvSLkNEpEi2bt1KXFxcAjBm0aJFaRed4SJ0DEVERByhQBEREUcoUERExBEKFBERcYQCRUREHKFAERERRyhQRETEEQoUERFxhAJFREQcoUARERFHKFBERMQRChQREXGEAkVERByh29cXg63tZpZ2Cflqmzi6tEsQkcuQ9lCkyPbs2cNjjz1GmzZtqFq1KgEBAVStWpUOHTrw+OOPs3Xr1mztY2NjMcZkewUHB9OkSRMefvhhDhw4kGe7/F4Xe+TurFmzGDhwII0bN6Zy5cpUrFiR6667jgceeIDdu3cXapujo6PzrWXXrl2FWl63bt0wxrB27dpCzVcUnnWWVWW9PslNeyjiM2stkydPZvLkyWRkZNCmTRuGDBlC1apVOXXqFNu3b+f1119n+vTpvPHGGzz88MPZ5o+KiqJbt24AHDt2jBUrVvDmm2/y4Ycfsnnz5sxpWW3bto2FCxdyww03MHDgwGzTwsLC8q33vffe48cff6RDhw7UrFmTcuXK8c0335CQkMDf//53PvnkE3r37l2oz+CRRx7xut5q1aoVajkilwMFivhs8uTJxMbGEh4ezty5c4mMjMzV5siRI7zyyiukpqbmmtatWzdiY2Mz36elpdG7d29WrVrFlClTSEhIyBUqs2fPZuHChbRq1SrbvAWxZMkSypcvn2v8ypUr6dmzJxMmTCh0oIwfP/6ie0YiVwp1eYlPvvvuO6ZMmUJgYCBLly71GiYANWrU4LnnnuOJJ5646DIDAgIYPdp1fOerr75ytF7Aa5gA3HrrrYSFhbFv3z7H11lUERERRERE8Ouvv/KnP/2JevXqERQUROPGjXn++efx9sTVRYsW0aNHD2rVqkVQUBC1a9cmKiqKN998E4CkpCSMMaxbtw4gW1dd1gD3rPvnn3/mscceIyIigoCAgMwg93T7JSUl5aph7dq1mY+IzunEiRNMmjSJFi1aUKFCBUJDQ7nhhhv485//zC+//FLg+qTs0R6K+CQhIYH09HSGDRtG8+bNL9re379gv2qeL8iS7DvfuHEjKSkpPj33funSpfz888/4+fnRuHFjunfvTuXKlR2tLy0tjZ49e3Lo0CF69+6Nv78/n3zyCX/+8585e/YsMTExmW1nzpzJmDFjqFmzJv369aNatWocOXKE7du3k5CQwEMPPURYWBgxMTHMnj2b77//Ptv8Ofe2zp8/T/fu3Tlx4gQ9e/akcuXKNGjQwOdt2b9/PzfffDPff/89bdu2ZezYsWRkZLBnzx5efvllHnzwwULVJ2WLAkV88vnnnwPQvXt3x5aZnp7OzJmuM+Q6dOjg2HJzmj9/Pjt27ODMmTPs2bOHJUuWULVqVd54441CL+uhhx7K9r5SpUpMnTo11/Giojh06BA33HADK1euJDg4GICYmBiaNGnCyy+/zMSJEwkICADg7bffJjAwkP/85z/UqFEj23KOHTsGuI41xcbGsnbtWr7//vt8uw5//PFHmjVrxrp166hYsWKRt+Wee+7h+++/57nnnuMvf/lLrvpCQkIoX758geuTskWBIj45fPgwAHXq1Mk1LSkpidmzZ2cbFxYWxvjx47ONW7t2beaXxfHjx1m+fDl79+6lWrVqTJo0qTjKBlyB8sEHH2S+v+aaa3j//fdp165dgZfRtWtXbr/9djp27EiNGjU4dOgQCxYsIC4ujnHjxmXrvnPCa6+9lhkm4OpKHDBgAH//+9/ZvXs3LVq0yJzm7++fGTBZ+XqiwPTp0x0Jk61bt7Jp0yZatWrFk08+mWu6TmS49ClQxCf5dU0lJSURFxeXbVz9+vVzBcq6desy+8kDAwMJDw/nwQcfZOLEiYSHhxe6Jm9/yUZHR+fqJpk3bx7z5s3j559/ZseOHcTFxREZGcnbb79NdHR0gdY1cuTIbO8bNmzIhAkTuPbaa+nXrx+TJk1i1KhR+Pn5Fao2b0JDQ2ncuHGu8Z7P6OTJk5nj7r77biZMmEDz5s0ZMmQIUVFRREZGUr169QJtV07ly5fn+uuv92nenDZv3gzAbbfdRrlyOnx7OVKgiE9q1arFrl27OHjwYK5p3bp1ywyc9PR0r38tg6vbxsnujJwh5qklry/typUr06lTJxYvXky7du0YO3Yst9xyC3Xr1vW5hr59+1KnTh0OHjzIzp07admypU+1ZZXX6dCe41IXLlzIHPfYY49RrVo13nzzTV577TVeeeUVjDFERUXx4osvFmovDFx7Qk4dz0pJSQG879XK5UF/JohPPGd1rVq1qpQr+Y21NterIGcFBQYG0qNHD86ePZv5V3RRePYGfvnllyLX5ot7772XzZs3c/z4cf7v//6PUaNGsX79em677TaOHDlSqGXlFyaevYz09PRc0zzhkZUnGL39ESKXBwWK+CQ6Ohp/f3/mz5/Pt99+W9rlFJnnS66gZ6PlJTU1lV27dhXoyv3iFhYWxu23384777xDdHQ0J06cYMOGDZnTPd1xWfdwCqNKlSoA/PDDD7mmJSYm5hrXsWNHAJYvX05GRsZFl1/U+qTkKVDEJ40aNeKpp57i/Pnz9O7dm02bNnlt5+0v1dJw/Phx/vvf/3qd9umnn7JgwQJCQkKIiorKNu1///sfu3btIi0tLXPc4cOHvV6zcvr0aaKjozl79iy33HILNWvWdHYjCmDZsmVe9xg8eyYVKlTIHHfVVVcBkJyc7NO62rdvD8A777yTbfx///tfXn311Vzt27ZtS6dOndi2bRvPP/98runHjx/n7NmzjtUnJU/HUMRnf/3rX7HW8swzzxAZGUnbtm1p3749VatWJSUlhaSkJD777DPAdVZUafrhhx9o3bo1bdq0oXnz5tSpU4eUlBS2bdvG5s2bCQgIID4+PvOvbo8ePXrw/fffs3///sw9jl27dnHzzTdz0003cd1111GjRg0OHjzIypUrOXz4MA0bNiQ+Pr4UthKGDh1K+fLl6dy5MxEREVhr2bBhA1u2bKFt27bccsst2bbto48+4o477uD2228nODiY+vXrM3z48AKta8CAAVxzzTXMnTuXAwcO0KFDB5KTk1m4cCEDBgzgww8/zDXPe++9R7du3Zg4cSIff/xx5vG2vXv3smLFCnbt2pX5ORe1PikF3vp29cr/lZiYaOU3u3btsuPHj7c33HCDDQ0Ntf7+/rZKlSq2Xbt2dvz48Xbr1q3Z2sfExFjAxsTEFHpdCQkJFrAjRowo1HwnTpywEydOtJ07d7Y1a9a0AQEBtkKFCrZp06Z2zJgxdufOnV7nq1+/vgXs/v37M8clJyfb0aNH29atW9tq1apZf39/W7lyZXvjjTfaKVOm2J9//rnQ2xUVFWUBu2bNmlzrr1+/vtd5PJ9j1nlmzJhhBw4caBs0aGCDg4NtlSpVbKtWrezzzz+fq6709HT7l7/8xTZo0MD6+/tbwEZFRRVo3R7Jycn2rrvuslWqVLHly5e37dq1sx9//LFds2ZNnj/jY8eO2SeeeMI2adLEBgUF2dDQUHvDDTfYiRMn2l9++aXA9UnRJSYm2n79+s3q169fgHXgu9FYL7dukPxt3brVtm3btrTLEBEpkq1btxIXF5cAjFm0aFHaRWe4CB1DERERRyhQRETEEQoUERFxhAJFREQcoUARERFHKFBERMQRChQf6XRrEbmUFcd3mALFB8aYn8+fP1/aZYiI+Oz8+fNkZGScAxx7PKoCxQfGmE+PHz+uXRQRuWQdP37cHj58eC+QAeS+AZwPFCg+yMjIeObQoUNnDh06ZM+dO6fuLxG5JFhrOXfuHIcOHbIHDhw4v3z58v8AOxYtWuTIl5huDumDtm3b7nrvvfduPXDgwOzatWvX9/PzCyztmkRECiIjI+Pc4cOH96xcufKr5OTkAGCFU8vWvbyKoH///g2AUUAdQA9tEJFLRTngZ+CfixYt2uLUQhUoRdS/f38DVAdCUReiiJR9FvgVOLRo0aKLP+msEBQoIiLiCP1FLSIijlCgiIiIIxQoIiLiiP8PJ5xmistz6uEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "plt.rcParams.update({'font.size': 20})\n", + "\n", + "plt.figure(figsize=(6,6))\n", + "\n", + "\n", + "color1 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.2, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "color2 = (0.1, # redness\n", + " 0.4, # greenness\n", + " 0.2, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "color3 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.7, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "\n", + "\n", + "color4 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.7, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "color5 = (0.6, # redness\n", + " 0.2, # greenness\n", + " 0.6, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "\n", + "\n", + "color6 = (0.8, # redness\n", + " 0.2, # greenness\n", + " 0.6, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "colors = [color1, color2, color3, color4, color5, color6]\n", + "\n", + "\n", + "\n", + "species = (\"HumanEval\")\n", + "penguin_means = {\n", + " 'CodeLlama7b': (33.5),\n", + " 'CodeLlama7b-Instruct': (34.8),\n", + " 'CodeLlama34b': (48.8),\n", + " 'CodeLlama34b-Instruct': (41.5),\n", + " 'GPT-3.5': (77.0),\n", + " 'GPT-3.5-Instruct': (80.34),\n", + "}\n", + "\n", + "\n", + "x = 0 # the label locations\n", + "width = 0.15 # the width of the bars\n", + "multiplier = 0\n", + "\n", + "\n", + "for attribute, measurement in penguin_means.items():\n", + " offset = width * multiplier\n", + " rects = plt.bar(x + offset, measurement, width, label=attribute, color=colors[multiplier])\n", + " multiplier += 1\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "plt.ylabel('Pass@1')\n", + "plt.xlabel(\"HumanEval\")\n", + "# plt.legend(loc='bottom', ncols=3)\n", + "plt.ylim(20, 85)\n", + "\n", + "plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.2),\n", + " fancybox=True, shadow=True, ncol=1)\n", + "\n", + "#plt.savefig(\"figures/benchmark.pdf\", format=\"pdf\", bbox_inches=\"tight\")\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "a9ac6dc4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.8674698795180723\n" + ] + } + ], + "source": [ + "a = (41.5-77.5)/41.5\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "297e43a0", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd \n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "import numpy as np \n", + "import matplotlib.pyplot as plt \n", + "import seaborn as sns \n", + "import statsmodels.formula.api as smf \n", + "from IPython.display import display, Markdown\n", + "from sklearn.preprocessing import StandardScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8c73e184", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_pickle(\"final_df.pkl\")\n", + "ORDERED_LIST_PROG = ['0 to 2 years professional programming experience', '3 to 5 years professional programming experience', '6 to 10 years professional programming experience', '11 to 15 years professional programming experience','More than 16 years professional programming experience']\n", + "ORDERED_LIST_PYTHON = ['Beginner – I can write a correct implementation for a simple function', 'Intermediate – I can design and implement whole programs', 'Advanced – I can design and implement a complex system architecture']\n", + "ORDERED_LIST_AI = ['Never','Rarely (once a month)','Sometimes (once a week)','Often (multiple times a week)','Always (daily)']\n", + "df[\"model_size\"] = [x.split(\"_\")[1] if x != \"nomodel\" else \"nomodel\" for x in df[\"model\"]]\n", + "\n", + "df[\"prog_experience\"] = pd.Categorical(df[\"prog_experience\"], ordered=True, categories=ORDERED_LIST_PROG)\n", + "df[\"python_experience\"] = pd.Categorical(df[\"python_experience\"], ordered=True, categories=ORDERED_LIST_PYTHON)\n", + "df[\"ai_experience\"] = pd.Categorical(df[\"ai_experience\"], ordered=True, categories=ORDERED_LIST_AI)\n", + "\n", + "outcome_cols = [\"n_tasks_completed\", \"mean_task_duration\", \"TLX_frustration\", \"TLX_mental_demand\", \"TLX_effort\"]\n", + "\n", + "mean_values = df[(df[\"model\"] == \"nomodel\")][\"mean_task_duration\"].mean(skipna=True)\n", + "mean_values1 = df[(df[\"model\"] == \"nomodel\")][\"n_tasks_completed\"].mean(skipna=True)\n", + "df[\"zscore_mean_task_duration\"] = df[\"mean_task_duration\"] - mean_values\n", + "df[\"zscore_n_tasks_completed\"] = df[\"n_tasks_completed\"] - mean_values1\n", + "\n", + "\n", + "#for task_id in df[\"task_id\"].unique():\n", + "# df.loc[df[\"task_id\"] == task_id, [\"zscore_\" + x for x in outcome_cols]] = StandardScaler().fit_transform(df.loc[df[\"task_id\"] == task_id, outcome_cols])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "b4526f52", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['level_0', 'index', 'aiToolTypicalUsage', 'task_id', 'frustration',\n", + " 'performance', 'howaiimproved', 'worker_id', 'temporalDemand',\n", + " 'exp_condition', 'finalcomments', 'date_performed', 'completed_task',\n", + " 'telemetry_data', 'mentalDemand', 'completed_task_time',\n", + " 'entered_exit_survey', 'effort', 'aihelpful', 'physicalDemand',\n", + " 'howaihelpful', 'time_completed', 'task_index', 'test',\n", + " 'n_participants', 'task_duration', 'model', 'interface',\n", + " 'n_tasks_completed', 'n_tasks_attempted', 'n_tasks_skipped',\n", + " 'task_completion_durations', 'mean_task_duration', 'coding_time',\n", + " 'code_history', 'TLX_frustration', 'TLX_performance',\n", + " 'TLX_temporal_demand', 'TLX_physical_demand', 'TLX_effort',\n", + " 'TLX_mental_demand', 'TLX_total_score', 'n_sugg_accepted',\n", + " 'n_sugg_shown', 'sugg_accept_rate', 'time_spent_verifying',\n", + " 'n_sugg_requested', 'n_sugg_accepted_requested',\n", + " 'sugg_accept_rate_requested', 'sugg_accept_rate_non_requested',\n", + " 'suggestions_data', 'n_assistant_response', 'n_user_message',\n", + " 'n_copy_code_button', 'n_copy_from_chat', 'avg_copy_per_response',\n", + " 'chat_history_data', 'task_data', 'n_long_gaps', 'prog_experience',\n", + " 'python_experience', 'ai_experience', 'model_size',\n", + " 'zscore_mean_task_duration', 'zscore_n_tasks_completed'],\n", + " dtype='object')" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "8423d363", + "metadata": {}, + "outputs": [ + { + "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", + "
modelmean_task_duration
0autocomplete_gpt35328.039927
1autocomplete_llama34324.448315
2autocomplete_llama7370.673709
3chat_gpt35316.349329
4chat_llama34344.900835
5chat_llama7447.111375
6nomodel399.962763
\n", + "
" + ], + "text/plain": [ + " model mean_task_duration\n", + "0 autocomplete_gpt35 328.039927\n", + "1 autocomplete_llama34 324.448315\n", + "2 autocomplete_llama7 370.673709\n", + "3 chat_gpt35 316.349329\n", + "4 chat_llama34 344.900835\n", + "5 chat_llama7 447.111375\n", + "6 nomodel 399.962763" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean_task_duration = df.groupby([\"model\"])[\"mean_task_duration\"].mean().reset_index()\n", + "mean_task_duration" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "01d32552", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "125\n" + ] + } + ], + "source": [ + "df.groupby(\"model\").size()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "02dac417", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-0.1875\n" + ] + } + ], + "source": [ + "a = (325-400)/400\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "ad1103f7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4AAAAHfCAYAAAABc7ZcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAABmx0lEQVR4nO3dd7wU1fn48c8DXIrSAwZBFGtQNBawgQKKIhbEGvxqjNiwJtY01FA0QY3GkvysRDTNhlHUIHbArmgIEkU0UmxYQLAiIOf3x+5eb9kLF7iV/bxfr30NO+fMzDOzd4d5ds6cEyklJEmSJEnrvga1HYAkSZIkqWaYAEqSJElSgTABlCRJkqQCYQIoSZIkSQXCBFCSJEmSCkSj2g5A0rqtXbt2qUuXLrUdhiTVKy+//PInKaX2tR2HpHWPCaCkatWlSxemTp1a22FIUr0SEXNrOwZJ6yabgEqSJElSgTABlCRJkqQCYQIoSZIkSQXCBFCSJEmSCoQJoCRJkiQVCHsBlSSpnvvnsf+s7RCqzGF/Pay2Q5CkdZp3ACVJkiSpQJgASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAmgJEmSJBUIE0BJkiRJKhAmgJIkSZJUIEwAJUmSJKlAmABKkiRJUoEwAZQkSZKkAmECKEmSJEkFwgRQKiARcWBEPBIR70bE1xHxdkTcHRG7V1C/Z0RMiIiFEfFVREyPiLMjomFNxy5JkqS1ZwIoFYiIuAx4ENgJmAhcA7wCDAKeiYgfl6k/CJgC9AbuBf4f0Bi4Crij5iKXJElSVWlU2wFIqn4R0QE4H/gQ+GFK6aMSZXsBTwCjgL9l57UEbga+BfqmlKZm51+UrXtERByVUjIRlCRJqke8AygVhk3IfN9fKJn8AaSUngQ+B9qXmH1E9v0dueQvW3cJcGH27WnVGrEkSZKqnAmgVBjeBJYCu0REu5IFEdEbaAE8VmL23tnpxDzrmgJ8BfSMiCbVEKskSZKqiQmgVABSSguBXwLfB16LiJsiYnRE3AU8AjwKnFJikR9kp7PyrGs5MJtME/LN8m0vIoZGxNSImPrxxx9X4Z5IkiRpbfgMoFQgUkpXR8Qc4Bbg5BJFbwG3lmka2io7XVzB6nLzW1ewrZuAmwB69OiR1jBkSZIkVTHvAEoFIiJ+AYwDbgU2B9YHugNvA3+PiMtXZ3XZqcmdJElSPWICKBWAiOgLXAbcn1I6N6X0dkrpq5TSK8ChwHvAeRGRa9KZu8PXqtzKMlqWqSdJkqR6wARQKgwHZadPli1IKX0FvEjmfLBjdvYb2elWZetHRCNgU2A5mbuHkiRJqidMAKXCkOuts30F5bn5S7PTJ7LTAXnq9gbWA55NKX1TNeFJkiSpJpgASoXhqex0aER0KlkQEfsDvYAlwLPZ2eOAT4CjIqJHibpNgUuyb6+v1oglSZJU5ewFVCoM48iM87cP8HpE3AvMB7Ym0zw0gF+llBYApJQ+i4iTs8tNiog7gIXAwWSGiBgH3FnjeyFJkqS1YgIoFYCU0oqIOAA4AziKTMcv65FJ6iYA16aUHimzzH0R0Qe4ADgcaEpmyIhzs/XtAVSSJKmeMQGUCkRKaRlwdfZV2WWeAQ6oppAkSZJUw3wGUJIkSZIKhAmgJEmSJBUIE0BJkiRJKhAmgJIkSZJUIEwAJUmSJKlAmABKkiRJUoEwAZQkSZKkAmECKEmSJEkFwgRQkiRJkgqECaAkSZIkFQgTQEmSJEkqECaAkiRJklQgTAAlSZIkqUCYAEqSJElSgTABlCRJkqQCYQIoSZIkSQWiUW0HIEmqX4797VO1HUKV+OsFe9Z2CJIk1TjvAEqSJElSgTABlCRJkqQCYQIoSZIkSQXCBFCSJEmSCoQJoCRJkiQVCBNASZIkSSoQJoCSJEmSVCBMACVJkiSpQJgASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAmgJEmSJBUIE0BJkiRJKhCNajsASZKknJd73FTbIVSZ7lOH1nYIklSOdwAlSZIkqUCYAEqSJElSgTABlCRJkqQCYQIoFYCIGBIRaRWvb/Ms1zMiJkTEwoj4KiKmR8TZEdGwNvZDkiRJa8dOYKTCMA0YWUHZnsDewEMlZ0bEIOAeYAlwJ7AQGAhcBfQCjqymWCVJklRNTAClApBSmkYmCSwnIp7L/vOmEvNaAjcD3wJ9U0pTs/MvAp4AjoiIo1JKd1Rj2JIkSapiNgGVClhEbAvsBrwH/KtE0RFAe+COXPIHkFJaAlyYfXtaTcUpSZKkqmECKBW2U7LTP6eUSj4DuHd2OjHPMlOAr4CeEdGkOoOTJElS1TIBlApURDQDfgysAMaUKf5Bdjqr7HIppeXAbDJNyDerzhglSZJUtUwApcL1I6A18FBK6Z0yZa2y08UVLJub3zpfYUQMjYipETH1448/Xts4JUmSVEVMAKXCNTQ7vXENlo3sNOUrTCndlFLqkVLq0b59+zUKTpIkSVXPBFAqQBGxDdATeBeYkKdK7g5fqzxlAC3L1JMkSVI9YAIoFaaKOn/JeSM73apsQUQ0AjYFlgNvV094kiRJqg4mgFKBiYimwLFkOn/5cwXVnshOB+Qp6w2sBzybUvqm6iOUJElSdTEBlArPkUAbYEKezl9yxgGfAEdFRI/czGzyeEn27fXVGqUkSZKqXKPaDkBSjct1/nJTRRVSSp9FxMlkEsFJEXEHsBA4mMwQEeOAO6s7UEmSJFUt7wBKBSQitgb2oOLOX4qllO4D+pAZ+P1w4KfAMuBc4KiUUt4eQCVJklR3eQdQKiAppdf5bgiHytR/Bjig+iKSJElSTfIOoCRJkiQVCBNASZIkSSoQJoCSJEmSVCBMACVJkiSpQJgASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAPBS3VIRASwD7Av0BvYGGgHfA18BEwDngDuTym9V0thSpIkqZ4yAZTqgIhYD/gZcAqZpC+yRUvIJH7NgM2AzYHDgWsi4gHgypTSszUfsSRJkuojm4BKtSwijgfeBH5H5k7fSDJ3AFunlNZLKW2UUvoemR9stgFOAO4B9geeiog7I2Lj2olekiRJ9Yl3AKXa92fgPmB0SumliiqllBIwM/u6NSJaAscBvwKGAKOqPVJJkiTVayaAUu3rkVJ6ZXUXSil9BvwxIm4GulR5VJIkSVrnmABKtWxNkr8yyy8hc1dQkiRJWimfAZQkSZKkAmECKNUxEbFjRJweEa1KzFs/Im6LiEUR8X5EnFWbMUqSJKl+MgGU6p5fAheklBaXmDcaOJbMd/Z7wB8ion9tBCdJkqT6ywRQqnt6AJNybyKiiExvny8CGwCbAp+QGTdQkiRJqjQTQKnu2QB4p8T7HkAL4MaU0pKU0vvAeOCHtRGcJEmS6i8TQKnuSZTuoXeP7LzJJeZ9DLSvyaAkSZJU/5kASnXPPGC3Eu8HAe+mlN4uMa8j8GmNRiVJkqR6zwRQqnvuAnpGxLiI+BuwOzCuTJ1tgf/VeGSSJEmq1xwIXqp7rgIGAIdl308DRuUKI2IboDvwuxqPTJIkSfWaCaBUx6SUvgB6RcS22VmvpZRWlKjyFXAoMLXGg5MkSVK9ZgIo1VEppRkVzJ8DzKnRYCRJkrRO8BlASZIkSSoQJoBSLYuIByJihzVctklEnBMRp1VxWJIkSVoHmQBKta8r8HJEPBQRgyOi6aoWiIitI2I0MBu4DPi8uoOUJElS/eczgFLt2wY4CxgG9AeWRsQrZDp5+YDMeH9Nge+RSRZ3AzoBATwCnF/R84KSJElSSSaAUi1LKS0DroiI64BjgBOBXciM/weQyCR7OR8DNwPXpZSm12SskiRJqt9MAKU6IqX0FZnE7uaIaEkmAdyYzJ2/r4GPgOkppf/WXpSSJEmqz0wApToopfQZ8HBtxyFJkqR1i53ASJIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUCowEbFnRNwTER9ExDfZ6SMRcUCeuj0jYkJELIyIryJiekScHRENayN2SZIkrR07gZEKSERcCFwMfAI8SGacwXbAjkBfYEKJuoOAe4AlwJ3AQmAgcBXQCziyBkOXJElSFTABlApERBxJJvl7DDgspfR5mfKiEv9uSWZIim+Bvimlqdn5FwFPAEdExFEppTtqKn5JkiStPZuASgUgIhoAlwFfAUeXTf6geED6nCOA9sAdueQvW2cJcGH27WnVF7EkSZKqg3cApcLQE9gUGAd8GhEHAtuSad75YkrpuTL1985OJ+ZZ1xQyiWTPiGiSUvqmmmKWJElSFTMBlGpZRPxmDRdNKaWLK1l35+z0Q+AVYLsyMUwBjkgpfZyd9YPsdFaejS6PiNlAN2Az4PXVDVySJEm1wwRQqn0j8sxLJf4deeZH9t+VTQA3yE5PBWYD+wAvAJsAVwL7AXeT6QgGoFV2uriC9eXmt85XGBFDgaEAG2+8cSVDlCRJUnUzAZRq31555p0DHAD8HZgEzAc6ZOseDfwLuHo1tpEbtiHI3On7T/b9fyPiUDJ3+vpExO55moPmk0tKU77ClNJNwE0APXr0yFtHkiRJNc8EUKplKaXJJd9HxE+AfYHdUkqvlKl+W0T8icxzeP9cjc18mp2+XSL5y23/64h4GDgR2AV4ju/u8LUiv5bZaUV3CCVJklQH2QuoVPecA9yZJ/kDINsr513ZepX1Rna6qILyXILYrEz9rcpWjIhGZDqUWQ68vRoxSJIkqZaZAEp1zw/IDNC+Mu/zXUctlTGFTMK2ZUQ0zlO+bXY6Jzt9IjsdkKdub2A94Fl7AJUkSapfTACluuczoNcq6uwBfFHZFaaUPgHuJNOks1SvoxGxL5lOYBbz3bAP44BPgKMiokeJuk2BS7Jvr6/s9iVJklQ3mABKdc+/gD0j4oqIaFGyICJaRMSVZBLEB1ZzvecCbwEXRMSU7PrvBh4CvgVOTiktAkgpfQacTKbzmEkRMSYiLgemAbuTSRDvXNMdlCRJUu2wExip7vk1meEYzgFOiohpZMbv+z6wA5kOWN4Ghq3OSlNKH0XErsCFwKHAbsDnZBLO0Sml58vUvy8i+gAXAIcDTckkkOcC16aU7N1TkiSpnjEBlOqYbKK2M3ApmSEfepco/gq4GRiWUlqwButeSCaBO7eS9Z8hMxyFJEmS1gEmgFIdlE3UhkbE6UBXMs/uLQZmppSW12pwkiRJqrdMAKU6LJvszajtOCRJkrRuMAGU6qiIKAL6AVsDzVNKF2fnNyXzHOAnKaUVtRiiJEmS6hl7AZXqoIgYQGZMvn8BVwIjShTvQGacwME1HZckSZLqNxNAqY7Jjrt3H5DI9AT6j5Ll2d46Z5PpyVOSJEmqNBNAqe65iExvnz1SStcCb+ap8xKwfY1GJUmSpHrPBFCqe3oB96WU5q+kzjvAhjUUjyRJktYRJoBS3dMc+GQVddbD768kSZJWkxeQUt3zHtBtFXV2AN6u/lAkSZK0LjEBlOqeh4D9ImKPfIURsT/QE3iwRqOSJElSvWcCKNU9o4FFwCMRcRmwDUBEHJh9fzeZYSD+UGsRSpIkqV5yIHipjkkpvRcR/YG7gJ+XKLofCOB/wGEppVU9JyhJkiSVYgIo1UEppVci4gfAgcDuwPeAxcDzwPiU0vLajE+SJEn1kwmgVEellL4lc9fv/tqORZIkSesGnwGU6piIOC0i2tR2HJIkSVr3mABKdc//A96PiLuyHb/4PZUkSVKVsAmoVPcMA34CHAEcDnwcEX8D/pJSml6rkUnrkB6nrDsjqQyr7QAkSfWGdxakOialdGlKaRtgF+B6oCFwLvDviHglIn4WEe1rNUhJkiTVSyaAUh2VUpqaUjoT6EjmbuCDQDfgauDdiLiv9qKTJElSfWQCKNVxKaVlKaV/ppQGkUkGf5MtGliLYUmSJKke8hlAqR6IiAD2BY4DBgFFwLe1GpQkSZLqHRNAqQ6LiK3JJH0/BjYEAngT+Ev2JUmSJFWaCaBUx0REW+D/yCR+3ckkfZ8BfwZuTSk9W4vhSZIkqR4zAZTqng/IfDcT8BhwK3BvSmlJbQYlSZKk+s8EUKp7ZpNJ+v6SUnq/lmORJEnSOsQEUKpjUkpdazsGSZIkrZscBkKSJEmSCoR3AKU6KiI2BPoBnYAmeaqklNLFNRuVJEmS6jMTQKkOioiRwK8o/R0NMh3DlPy3CaAkSZIqzSagUh0TEccAFwFPAUeQSfZuA44GbgZWAHcAe9dWjJIkSaqfvAMo1T2nAe8CA1JKyyMCYE5K6Q7gjoi4F/gXcHstxihJkqR6yDuAUt2zHTAhpbS8xLyGuX+klB4GHgZ+XtOBSZIkqX4zAZTqniJgQYn3XwOtytSZAWxfYxFJkiRpnWACKNU9HwAblng/D/hhmTqdgOVIkiRJq8EEUKp7/k2mGWjOE8CeEXFsRKwfEQcCh2frSZIkSZVmAijVPQ8C3SJi0+z7S4HFwK3AZ8D9ZHoGvXB1VhoRcyIiVfCaX8EyPSNiQkQsjIivImJ6RJwdEQ3z1ZckSVLdZi+gUh2TUrqVTLKXe/9OROwMnAdsDswBrkspvboGq18MXJ1n/hdlZ0TEIOAeYAlwJ7AQGAhcBfQCjlyD7UuSJKkWmQBK9UBKaTZwZhWsalFKacSqKkVESzJjDn4L9E0pTc3Ov4hMk9QjIuKo7NAUkiRJqidsAiopnyOA9sAdueQPIKW0hO+anp5WG4FJkiRpzZkASnVMROwYEadHRKsS89aPiNsiYlFEfBARZ63h6ptExI8jYlhEnBURe1XwPN/e2enEPGVTgK+AnhHRZA3jkCRJUi2wCahU9/wS2DOldF2JeaOBY8k8q9cW+ENEvJ5SemQ1190B+GuZebMj4viU0uQS836Qnc4qu4KU0vKImA10AzYDXl/NGCRJklRLvAMo1T09gEm5NxFRBBwHvAhsAGwKfAL8bDXXOxboRyYJXJ/MUBM3Al2AhyKi5MDyubuPiytYV25+63yFETE0IqZGxNSPP/54NcOUJElSdTEBlOqeDYB3SrzvAbQAbkwpLUkpvQ+Mp/zg8CuVUhqZUnoipfRhSumrlNKMlNKpwB+AZsCI1Vhd5FZbwbZuSin1SCn1aN++/eqEKUmSpGpkAijVPYnSzbP3yM4r2UTzYzKdtFSFG7LT3iXm5e7wtSK/lmXqSZIkqR4wAZTqnnnAbiXeDwLeTSm9XWJeR+DTKtreR9np+iXmvZGdblW2ckQ0ItMMdTnwdtlySZIk1V0mgFLdcxeZHjbHRcTfgN2BcWXqbAv8r4q2t3t2WjKZeyI7HZCnfm9gPeDZlNI3VRSDJEmSaoAJoFT3XAU8BxwGHA38BxiVK4yIbYDulG4SulIR0S0i2uaZvwnwp+zbv5UoGkemo5mjIqJHifpNgUuyb6+v7PYlSZJUNzgMhFTHpJS+AHpFxLbZWa+llFaUqPIVcCgwtdzCFTsS+FVEPAnMBj4HNgcOBJoCE4ArSsTwWUScTCYRnBQRdwALgYPJDBExDrhzDXZPkiRJtcgEUKqjUkozKpg/B5izmqt7kkzitiOZJp/rA4uAp8mMC/jXlFKpHj1TSvdFRB/gAuBwMoniW8C5wLVl60uSJKnuMwGUCkB2kPdKNxktsdwzwAFVH5EkSZJqg88ASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAmgJEmSJBUIE0CpjouINhHRubbjkCRJUv1nAijVQRHRPCKujIj5wCdkBm/Ple0aERMiYqfai1CSJEn1kQmgVMdERCvgOeAc4H3gdSBKVHkV2BP4v5qPTpIkSfWZCaBU91wAdAOGpJR2Au4uWZhS+orMoO79aiE2SZIk1WMmgFLdcxjwcErpLyupMxfoVEPxSJIkaR1hAijVPRsB01dR5wugVQ3EIkmSpHWICaBU93wObLCKOpuS6RxGkiRJqjQTQKnueQk4KCJa5CuMiA2BA4CnazQqSZIk1XsmgFLdcw3wPWBCRGxdsiD7/m6gKXBtLcQmSZKkeqxRbQcgqbSU0sMRMQIYAcwAlgFExCdAGzJDQvwypfRsbcUoSZKk+sk7gFIdlFIaRWaYh/uBT4FvgQRMAPZJKf2+FsOTJElSPeUdQKmOSik9CTxZ23FIkiRp3eEdQEmSJEkqEN4BlOqwiAigA1CUrzylNK9mI5IkSVJ9ZgIo1UERcSTwK2A7oGEF1RJ+hyVJkrQavHiU6piIOIPMEA/LyYz1917235IkSdJaMQGU6p5zgI+Animl2bUdjCRJktYddgIj1T2dgLtN/iRJklTVTACluucdoEltByFJkqR1jwmgVPfcCuwfES1qOxBJkiStW0wApbrnMuAl4LGI6GMiKEmSpKpiAijVMSmlb4H/B2wBPAEsiohv87zsGVSSJEmrxV5ApTomIgYB48iM/zcbeB+HgZAkSVIVMAGU6p4RwFfAgSmlp2s5FkmSJK1DbAIq1T0/AG43+ZMkSVJVMwGU6p5PgKW1HYQkSZLWPSaAUt1zD7BvRBTVdiCSJElat5gASnXPhcCnwN0R0aWWY5EkSdI6xE5gpLrnVaAI2BUYGBGLgMV56qWU0uY1GZgkSZLqNxNAqe5pQGbYh3kl5kWeevnmSZIkSRUyAZTqmJRSl9qOQZIkSesmnwGUClREHBsRKfs6qYI6PSNiQkQsjIivImJ6RJwdEQ1rOl5JkiStPRNAqQBFRGfgj8AXK6kzCJgC9AbuBf4f0Bi4CrijBsKUJElSFbMJqFTLIuIn2X/em1L6vMT7VUop/WUNthfAWGAB8E/g/Dx1WgI3A98CfVNKU7PzLwKeAI6IiKNSSiaCkiRJ9YgJoFT7bgUS8DzweYn3KxPZOqudAAI/A/YG+man+RwBtAf+kkv+AFJKSyLiQuBx4DS8EyhJklSvmABKte8EMsncB9n3x1fXhiJia+BS4JqU0pSIqCgBzM2fmKdsCvAV0DMimqSUvqmGUCVJklQNTAClWpZSujXb7HNTYHpK6bbq2E5ENAL+SmZ4iWGrqP6D7HRW2YKU0vKImA10AzYDXs+zraHAUICNN954LaKWJElSVbITGKluGAscUs3b+A2wIzAkpfT1Kuq2yk7zDUBfcn7rfIUppZtSSj1SSj3at2+/2oFKkiSpepgASnVDtQ7qHhG7kLnrd2VK6bmqWGV2uqpnFSVJklSHmABK67gSTT9nARdVcrHcHb5WFZS3LFNPkiRJ9YAJoLTuaw5sBWwNLCkx+HsChmfr3Jydd3X2/RvZ6VZlV5ZNKDcFlgNvV2vkkiRJqlJ2AiPVHa0jYrV6TEkpzatEtW+AP1dQthOZ5wKfJpP05ZqHPgEcAwwAbi+zTG9gPWCKPYBKkiTVLyaAUt1xVvZVWYlKfIezHb6clK8sIkaQSQBvSymNKVE0DrgMOCoi/lhiIPimwCXZOtevRqySJEmqA0wApbrjM2BRbQcBkFL6LCJOJpMIToqIO4CFwMFkhogYB9xZiyFKkiRpDZgASnXHVSmlUbUdRE5K6b6I6ANcABwONAXeAs4Frk0p2QOoJElSPWMCKBWwlNIIYMRKyp8BDqipeCRJklS97AVUkiRJkgqECaAkSZIkFQgTQEmSJEkqED4DKNUBKSV/jJEkSVK186JTkiRJkgqECaAkSZIkFQgTQEmSJEkqECaAkiRJklQgTAAlSZIkqUCYAEqSJElSgTABlCRJkqQCYQIoSZIkSQXCBFCSJEmSCoQJoCRJkiQVCBNASZIkSSoQJoCSJEmSVCBMACVJkiSpQJgASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAmgJEmSJBUIE0BJkiRJKhAmgJIkSZJUIEwAJUmSJKlAmABKkiRJUoEwAZQkSZKkAmECKEmSJEkFwgRQkiRJkgqECaAkSZIkFQgTQEmSJEkqECaAkiRJklQgTAAlSZIkqUCYAEqSJElSgTABlCRJkqQCYQIoFYiIuCwiHo+IdyLi64hYGBH/jojhEfG9CpbpGRETsnW/iojpEXF2RDSs6fglSZK09kwApcJxDrA+8ChwDfB3YDkwApgeEZ1LVo6IQcAUoDdwL/D/gMbAVcAdNRa1JEmSqkyj2g5AUo1pmVJaUnZmRPwWGAb8Gjg9O68lcDPwLdA3pTQ1O/8i4AngiIg4KqVkIihJklSPeAdQKhD5kr+su7LTLUvMOwJoD9yRS/5KrOPC7NvTqjxISZIkVSsTQEkDs9PpJebtnZ1OzFN/CvAV0DMimlRnYJIkSapaNgGVCkxEnA80B1oBPYA9yCR/l5ao9oPsdFbZ5VNKyyNiNtAN2Ax4Pc82hgJDATbeeOOqDF+SJElrwQRQKjznA98v8X4iMCSl9HGJea2y08UVrCM3v3W+wpTSTcBNAD169EhrHKkkSZKqlE1ApQKTUuqQUgqgA3AYmbt4/46InVZjNZFbXVXHJ0mSpOpjAigVqJTShymle4H+wPeAv5Qozt3ha1VuwYyWZepJkiSpHrAJqFTgUkpzI+I1YIeIaJdS+gR4g8zzgVsBL5esHxGNgE3JjCH4dnXGduxvj63O1deov17w19oOQZIkyTuAkgDomJ1+m50+kZ0OyFO3N7Ae8GxK6ZvqDkySJElVxwRQKgAR0TUiOuSZ3yA7EPwGZBK6T7NF44BPgKMiokeJ+k2BS7Jvr6/msCVJklTFbAIqFYYBwO8jYgrwP2ABmZ5A+5DpBGY+cHKuckrps4g4mUwiOCki7gAWAgeTGSJiHHBnje6BJEmS1poJoFQYHiMzLEMvYHsywzd8SWacv78C16aUFpZcIKV0X0T0AS4ADgeaAm8B52br2wOoJElSPWMCKBWAlNIM4Iw1WO4Z4ICqj0iSJEm1wWcAJUmSJKlAmABKkiRJUoEwAZQkSZKkAmECKEmSJEkFwgRQkiRJkgqECaAkSZIkFQgTQEmSJEkqECaAkiRJklQgTAAlSZIkqUCYAEqSJElSgTABlCRJkqQCYQIoSZIkSQXCBFCSJEmSCoQJoCRJkiQVCBNASZIkSSoQJoCSJEmSVCBMACVJkiSpQJgASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAmgJEmSJBUIE0BJkiRJKhAmgJIkSZJUIEwAJUmSJKlAmABKkiRJUoEwAZQkSZKkAmECKEmSJEkFwgRQkiRJkgqECaAkSZIkFQgTQEmSJEkqECaAkiRJklQgTAAlSZIkqUCYAEqSJElSgTABlCRJkqQCYQIoFYCI+F5EnBQR90bEWxHxdUQsjoinI+LEiMh7LoiInhExISIWRsRXETE9Is6OiIY1vQ+SJElae41qOwBJNeJI4HrgA+BJYB7wfeAwYAywf0QcmVJKuQUiYhBwD7AEuBNYCAwErgJ6ZdcpSZKkesQEUCoMs4CDgX+llFbkZkbEMOBF4HAyyeA92fktgZuBb4G+KaWp2fkXAU8AR0TEUSmlO2p0LyRJkrRWbAIqFYCU0hMppQdKJn/Z+fOBG7Jv+5YoOgJoD9yRS/6y9ZcAF2bfnlZ9EUuSJKk6mABKWpadLi8xb+/sdGKe+lOAr4CeEdGkOgOTJElS1TIBlApYRDQCfpJ9WzLZ+0F2OqvsMiml5cBsMk3IN6vWACVJklSlokSfD5IKTERcAZwHTEgpHVhi/ixgS2DLlNJbeZZ7BugJ9EwpPZenfCgwNPv2B8Ab1RB+VWoHfFLbQdQRHovSPB7f8ViUVt3HY5OUUvtqXL+kAmUnMFKBioifkUn+ZgLHru7i2WneX5BSSjcBN615dDUrIqamlHrUdhx1gceiNI/HdzwWpXk8JNVXNgGVClBEnAFcA7wG7JVSWlimyuLstFUFq2hZpp4kSZLqARNAqcBExNnAn4AZZJK/+Xmq5ZpsbpVn+UbApmQ6jXm7msKUJElSNTABlApIRPySzEDu08gkfx9VUPWJ7HRAnrLewHrAsymlb6o8yNpRb5qr1gCPRWkej+94LErzeEiql+wERioQ2UHcRwEvA/3zNPssWbcl8D8yTT17lRgIvimZ5HB34P8cCF6SJKl+MQGUCkBEHAfcCnwL/JH8z+7NSSndWmKZQ4BxwBLgDmAhcDCZXj3HAT9KnkAkSZLqFRNAqQBExAhg+CqqTU4p9S2zXC/gAjJ3/JoCbwG3ANemlL6t+kglSZJUnXwGUCoAKaURKaVYxatvnuWeSSkdkFJqk1JqllLaLqV0VV1O/iJio4i4JSLej4hvImJORFwdEW1qYz21bW33IyK+FxEnRcS9EfFWRHwdEYsj4umIODEi6s3/I9XxmUbEsRGRsq+TqjLe6laVxyMi9oyIeyLig+y6PoiIRyLigOqIvTpU4bnjwOy+v5v9vrwdEXdHxO7VFbskrQ7vAEpaZ0TE5sCzwAbAeDJjHO4C7EWmZ9NeKaUFNbWe2lYV+xERpwLXAx8ATwLzgO8Dh5EZJuQe4Mi63hy4Oj7TiOgMvAo0BJoDJ6eUxlRl3NWlKo9HRFwIXExmUPQHyfyttAN2BJ5MKf2iynegilXhueMy4BfAAuA+MsdkCzLN5xsBP0kp/a0adkGSKi+l5MuXL1/rxAt4mMzg9D8tM/8P2fk31OR6avtVFfsB7A0MBBqUmd+BTDKYgMNre19r+jMFAniMTGdJv8+u46Ta3s+aPh7Akdn6jwIt8pQX1fa+1tTxyH4nvgXmAxuUKdsru563a3tfffny5cs7gJLWCRGxGZmL8TnA5imlFSXKWpC5KxFkLsy+rO711Laa2I+IGAb8FvhTSumnax10NamOYxERZ5EZUqUvmSR5OPXkDmAVflcakHku+PtAl5TSx9UZd3WpwuOxK/A8cH9KaVCe8s/ItLxqUbV7IEmrp948uyFJq7B3dvpIyQs4gJTS58AzZMYv3K2G1lPbamI/lmWny9diHTWhSo9FRGwNXApck1KaUpWB1pCqOh49gU2BCcCn2WfffhkRZ9Wz592q6ni8CSwFdomIdiULIqI30ILMXWNJqlUmgJLWFT/ITmdVUP5mdrpVDa2ntlXrfkREI+An2bcT12QdNajKjkV2v/9KpvnrsLUPrVZU1fHYOTv9EHiFzPN/lwJXA89GxOSIaL8WcdaUKjkeKTO26i/J3BF9LSJuiojREXEX8AiZZrKnVEG8krRWGtV2AJJURVplp/nGOCw5v3UNrae2Vfd+XApsC0xIKT28huuoKVV5LH5DpnOTPVJKX69lXLWlqo7HBtnpqcBsYB/gBWAT4EpgP+BuMs1k67Iq+/tIKV0dEXPIDJdzcomit4BbU0ofrWGMklRlvAMoqVBEdrq2Dz5X1Xpq2xrvR0T8DDiPTE+Jx1ZlULWkUsciInYhc9fvypTSc9UeVe2p7N9GwxL1j0gpPZ5S+iKl9F/gUOBdoE89aw6aT6W/KxHxC2AccCuwObA+0B14G/h7RFxeTTFKUqWZAEpaV+R+pW9VQXnLMvWqez21rVr2IyLOAK4BXgP2yjZ7q+vW+liUaPo5C7io6kKrFVX1t/Fpdvp2Suk/JQuyd0dzd4Z3We0Ia1aVHI+I6AtcRqYTmHNTSm+nlL5KKb1CJiF+Dzgv2+mMJNUaE0BJ64o3stOKntPZMjut6Dmfql5Pbavy/YiIs4E/ATPIJH/z1zi6mlUVx6J5dvmtgSUlBn9PZHoABbg5O+/qtQ24mlX1d2VRBeW5BLFZ5cKqNVV1PA7KTp8sW5BS+gp4kcx1146rG6AkVSWfAZS0rshddPWPiAZ5unLvBXxNppv2mlhPbavS/YiIX5J57m8asG9K6ZOqDbdaVcWx+Ab4cwVlO5G5qH+aTDJR15uHVtXfxhQyPcBuGRGNU0pLy5Rvm53OWfuQq1VVHY8m2WlFHd/k5pc9TpJUo7wDKGmdkFL6H5me9roAZ5QpHknmWZy/5MbxioiiiOgaEZuvzXrqqqo6Htmyi8gkfy8D/epZ8lclxyKl9HVK6aR8L+D+bLXbsvPurPadWgtV+F35BLiTTNPJ35Qsi4h9yXQCs5g63ktsFX5XnspOh0ZEp5IFEbE/mURyCfBs1e6BJK0eB4KXtM7IXpA9S6Z3wvHA68CuwF5kmm/1TCktyNbtQqbnwrkppS5rup66rCqOR0QcR6ZDi2+BP5L/Oag5KaVbq2k3qkRV/W1UsO4R1KOB4KFKvysbkBknbwsyCdCLZHoBPZRMpylHp5Turv49WjtV9F1pQOa5x32Az4F7gflkmg0fRKYzmbNTStfUyE5JUgVsAippnZFS+l9E9ABGAQOAA4APgGuBkZXtsKSq1lPbqmg/Ns1OGwJnV1BnMpkksc5aVz7TqlKF35WPImJX4EIySd9uZJKffwGjU0p1vak0UDXHI6W0IiIOIHMX8Sgyx2M9YCEwAbg2pfRINe2CJFWadwAlSZIkqUD4DKAkSZIkFQgTQEmSJEkqECaAkiRJklQgTAAlSZIkqUCYAEqSJElSgTABlCRJkqQCYQIoSZIkSQXCBFCSVC0iYkhEpIgYUtuxaO34WUrSusMEUJLWAdmL85KvbyNiYURMyl68R23HmJONKUVE35XUubVQE46I6JLn88z36lLbsUqS6p9GtR2AJKlKjcxOi4AtgEOBPkAP4MzaCkprZDFw9UrKF9VMGJKkdYkJoCStQ1JKI0q+j4hewBTg9Ii4MqU0u1YC05pYVPbzlCRpbdkEVJLWYSmlZ4CZQADdy5ZHxK4RMS4i5kfE0oh4JyJujIiOeep2j4hrIuI/2ealSyLizYi4MiLa1MDuEBFzImJOBWUj8jUtzc6bFBHfj4hbIuLDiPgyIp6NiD2zddaPiN9HxNyI+CYi/hsRR+bZRquI+HlEPBER72aP2ccRcX9E7FZBXLntt4uImyLigxLbOL4KjsnD2W1sX0H5Udny35eYV+ufpSSpdpgAStK6L/f837JSMzPJxzPA/sCTZJobTgVOAqZGxMZl1nMycBTwBjAWuAH4ADgXeCYiWlRT/FWhNZl93RG4HbiHTLPYh7OJ0+PAIOBB4DZgY+DOPEnd1sBvgRXAv4A/AI8CewNPRcSAVWx/d2Ac8BegI3BLRBy3lvt2a3b6kwrKc/NvKzGvPn+WkqS1YBNQSVqHRURv4AfAUuDFEvO3Am4E5gB9UkrvlSjbm0xScw2ZZwhzRgNnpJS+LbONE4ExwOnAZasR3pCVdASzw2qspzK2J7O/p6eUVgBExKNkErEnySRnfVNKS7JlfyXTdPaXlD4GrwMdU0qflFx5RGxE5vheBUysYPt/Bk7JHb+IuAqYnt3GbXmWaR0RIyrYn/kppRuy/76XzPOCx0TEL1NKy0vE1QHoD7ySUppRYvmq/iwlSfWECaAkrUNKJAwlO4EJ4PyU0gclqp6WrXNWyeQPIKX0RETcDwyMiBYppc+z8+dWsNlbyNwJ24/VSxrW9s7X6vgK+Hku+cv6B5nY25A5DktyBSmlp7JNTXcouZKU0uJ8K08pvRsR44CfRsTGKaV5ebZ/bsmEK6X0WkQ8A/QueZxLaAUMr2B//kPmrh0ppSURcReZu3r7kbkzmfNjoCFlEsxq+CwlSfWECaAkrVvKJgwJODGlNLbM/N2z0z4RsXOe9WxAJnHYCngZICKKgFPINB3chkyCUvJRgk6rGeteKaVJ+Qoi4laqNkGcVTbBSil9GxEfAuunlN7Os8x7wK55YusFnEXmGG4ANC5TpRNQNgF8M6X0WZ5tvJOdtgbKJoBzU0pd8iyTz61kEsDjKJ0AHkem6e8/Slauhs9SklRPmABK0jokpRSQ6dSETILyZ+CGiJibUnqiRNXvZac/X8Uqm5f4951k7ii+DYwH5gPfZMvOBpqsVfDVK++dO2D5KspK/T8ZEYeSeYZvCZlmsv8DviTzTGBfMkNu5DsOi1ayDcgk22sspfRsRMwCDo6INimlTyNiJ2Bb4L6yTVap35+lJGktmABK0joopfQl8FhEDAReAW6LiB+klL7KVsklPa0quDNVSkT0IJMwPAYckFJaVqKsAfCLKt2Biq2g/B23nNY1sP2LyTxP2SOl9HrJgoi4kUwCWFv+AlwCDCbTPDR3B7VU88869FlKkmqBvYBK0jospTQduBnYCDinRNHz2emelVzVFtnp/SUThqxdgGZrHOTq+RT4frYJY1k9amD7WwCv5Un+GgB71MD2V+YvZBLk47LH5/+ATyjdJBTqzmcpSaoFJoCStO67hEyTxfNLjPH2JzLPhl2V7RG0lIhonBsjL2tOdtq3TL0NgP9X1QGvxItkWq+UGj8vIoYAvWpg+3OALUuOkxgRQebZy21qYPsVSim9AzwB7EbmGcX2wD/yJHlzstO+JWfWwmcpSaoFNgGVpHVcSum9bPPEs8g07/t1SmlmRJxAptfH/0bERGAWmZ5BNyZzZ/BjoGt2NS+RGSrhsIh4Fnga+D6ZMQTfAN6vod35I5nk7/qI6EemE5XtgZ5kxvA7qJq3fxWZ5pX/joh7yCTRvcgkfw8AA6twWysbBgLg1pTSnDLzbgP2AX5X4n1ZdeWzlCTVAhNASSoMo8n0EvmziLg6pfRhSulvEfEf4DxgLzLjxX1JJgEYR6ajEKC4x8yDydxNPAD4GZleMsdk571WEzuRHTohl+AMJNOJylNkOrw5jGpOAFNKN0bEN2Q6SjkO+Dq7/eOBw6naBHBlw0AATOK7u3k5/yRzF68lMCOl9ErZherKZylJqh2RUqrtGCRJkiRJNcBnACVJkiSpQJgASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAmgJEmSJBUIE0BJkiRJKhAmgJIkSZJUIEwAJUmSJKlAmABKkiRJUoEwAZQkSZKkAmECKEmSJEkFwgRQkiRJkgqECaAkSZIkFQgTQEmSJEkqECaAkiRJklQgTAAlSZIkqUCYAEqSJElSgTABlCRJkqQCYQIoSZIkSQXCBFCSJEmSCoQJoCRJkiQVCBNASZIkSSoQJoCSJEmSVCBMACVJkiSpQJgASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKRKNVVXj55Ze7NmjQ4KKU0kEppZY1EZQkSZIkqfIi4rOIeHDFihUXd+/efWaF9VJKFa4km/w936FDh5Zt27aNxo0bExHVErAkSZIkafWllFi6dCkLFixI77///tfPP//84Y888sij999//7dl6660CWiDBg0u6tChQ8sNN9wwmjRpYvInSZIkSXVMRNCkSRM6duwYHTt2bNaxY8frgBMPPvjgci0+V5oAppQOatu2rVmfJEmSJNUD3/ve96Jz584dgT2B3cqWryoBbNm4cePqik2SJEmSVIUaN25MgwYNmgALySSBpayyF1CbfUqSJElS/VAif/sC6FS23GEgJEmSJGnds4I8oz6YAEqSJElSgTABlCRJkqQCscqB4Ffm2N8eW1VxVIu/XvDX2g6hSgwZMoTbbruN2bNn06VLl3V2m3VFRNCnTx8mTZpU26GoDjr2t0/Vdggr9dcLyj3rXS953qvbJk2axF577cXw4cMZMWJEbYejOuifx/6ztkNYqcP+elhthyDVGu8AroaZM2fy05/+lG233ZZWrVrRuHFjOnbsyIEHHsif//xnlixZUtshrtSQIUOICG699dbaDqXGRMQqX3/967rxQ4FUHTzv1T/33XcfgwcPpmvXrrRp04ZmzZqx5ZZb8n//939MnTq1UuuYMmUKDRs2JCK48MILqzliqf6bNWsW5557LjvttBNt27alqKiItm3bsuuuu3L++efz8ssvl6o/YsSIctcjzZo1Y6uttuKMM87g3XffrbDeyl6r+vHqlltu4ZBDDmGLLbagZcuWrL/++my99dacfPLJvPHGG6u1z7nza0WvmTNnrtb6VHPW6g5gIRk1ahQjR45kxYoV7Lbbbhx33HE0b96cDz/8kEmTJnHSSSdx/fXXV/o/V9WM4cOH553/xRdfcOWVV9KoUSP23XffGo5Kqh8879VP48eP56WXXmLnnXemY8eONG7cmLfeeot7772XO++8k5tuuomTTjqpwuU///xzjjvuONZbbz2++OKLGoxcqn9SSowaNYpRo0axYsUKdtppJwYPHkzbtm35/PPPmT59On/84x+58sor+dOf/sQZZ5xRavk+ffrQt29fAD755BMeeeQRrrvuOu666y6ef/754rKSpk2bxvjx49l+++055JBDSpW1bt16pfH+7W9/44MPPmDXXXelQ4cONGjQgP/+97+MHTuWv/zlL9x3333sv//+q3UMzjrrrLzbbdeu3WqtRzXHBLASfve73zF8+HA6d+7M3Xffza677lquzoMPPsiVV15ZC9FpZSpqmnTjjTcCMHDgQDp06FCDEUn1g+e9+uv666+nadOm5ea/+uqr7Lzzzpx//vn85Cc/oaJxfs866ywWL17Mr3/9ay644ILqDleq10aNGsWIESPo3Lkzt99+O7169SpX56OPPuLqq69m8eLF5cr69u1b6lpl2bJl7L///jz++ONccskljB07tlwSeOuttzJ+/Hh22GGH1W6CPWHChLznh0cffZT+/ftz3nnnrXYCePbZZ9tsvp6xCegqzJkzhxEjRlBUVMSECRPyXgQBHHTQQUycOLHUvLvuuovevXvTqlUrmjVrxnbbbcfo0aP55ptv8q7jscceY88992T99denbdu2HHLIIau8ff7CCy9wxBFH0KFDBxo3bkznzp055ZRTeP/999dsh1fh1ltv5fDDD2ezzTajWbNmtGzZkl69evG3v/0tb/2+ffsSESxbtoxRo0ax+eab07RpU7p27crNN99cXO+GG25gu+22o1mzZmy00UYMHz6cFStWrPX2K3LTTTcBcMopp1RY5/333+fYY49lgw02oFmzZnTv3p1//OMfq7UdqT7yvFdafTvv5bu4A9huu+3YeuutWbx4MR9//HHeOuPHj2fs2LFce+21dOzYcVWHBoDnnnuOffbZh1atWtGiRQv2228/7wqrILz99ttccsklNG7cmIceeihv8gewwQYb8Lvf/Y5f/OIXq1xnUVERQ4cOBeDFF1+s0nih4vPDvvvuS+vWrXnrrbeqfJuqe7wDuApjx45l2bJlHHXUUWy77bYrrdukSZPifw8bNozRo0fTrl07jj76aJo3b85DDz3EsGHDePjhh3n00UcpKioqrj9u3DgGDx5M48aNGTx4MBtuuCFPP/00u+++Oz/84Q8rjO3kk0+mSZMmHHzwwXTu3Jk333yTMWPG8MADD/D888+z8cYbV82ByDrttNPYZptt6N27NxtuuCELFixgwoQJHHvssbzxxhtcfPHFeZc76qijeOGFFzjggAMoKipi3LhxDB06lKKiIqZPn85tt93GQQcdRL9+/bj//vsZNWoU6623Hr/85S+rZPslvfLKK7zyyit06dKlwuafn376KT179qR169Ycf/zxLFq0iLvuuotjjjmG9957j5///Oerf/CkesLzXmnrwnkPMs8ovfHGG7Rr144NN9ywXPlHH33EySefzCGHHMKPf/zjSj03+cILLzB69Gj22WcfzjjjDN566y3++c9/MmXKFB555BH23HPd6JRIymfs2LEsX76co48+mm7duq2yfqNGlbvsTikBpQbzrnZPP/00ixYtYqeddlrtZR966CE+++wzGjZsyBZbbMHee+9Ny5YtqyFKVRUTwFV4+umnAejXr1+ll3nuuecYPXo0nTt35sUXXyxuYjh69GgOPfRQHnzwQX7/+98zbNgwIPM82imnnEKDBg146qmn6NGjR/G6zjnnHK6++upy25g1axannHIKXbp0YfLkyXTq1Km47IknnmDfffflrLPO4t57712T3a7QjBkz2HzzzUvNW7p0Kfvvvz+XXnopp556aqlYcubNm8eMGTOK24ifd955dO3alXPOOYfWrVszffr04uVGjBjBFltswRVXXMF5551X6oS5ptsvKdf88+STT6ZBg/w3wadPn86RRx7JHXfcUVznV7/6Fd27d+eCCy4o/jVeWhd53iutvp73HnvsMZ5++mmWLl3K7NmzeeCBBwAYM2ZM3nPf0KFDWbFiBTfccEOlj83EiRP54x//yJlnnlk8b/z48RxyyCGccMIJvPHGGxWeZ6X67plnngFg7733rrJ1Ll++vLiVUkWtL6rCuHHjmDFjBl9//TWzZs1iwoQJtG3blj/96U+rva7TTz+91PsWLVowevTocs87qu7wrLwKH3zwAQAbbbRRpZe55ZZbALjwwgtLPV/WqFEjrrzySho0aMCYMWOK548fP56FCxdy9NFHl7oIgsxFQatWrcpt4/rrr2fZsmVcc8015f7j33vvvTn44IN54IEH+Pzzzysdd2WUvQgBaNy4MWeccQbLly/n8ccfz7vcpZdeWuoB4c0224w99tiDRYsWcdFFF5Xah9atWzNw4EA++eQT3nvvvSrZfs4XX3zB7bffTqNGjTjhhBMqrNewYUMuu+yyUhcum266KT/72c9YtmyZPYdqneZ5r7T6et577LHHGDlyJKNHj+aOO+6gRYsW3HvvvQwaNKhc3VtuuYXx48dz3XXX8f3vfz/v+vLZYostyl38DRo0iD59+vDWW2/x1FN1e9gUaW3Mnz8fIO8PMLmm9CVf+X7YmjRpUnH5T3/6U7bZZhueeOIJ2rVrV63P4I4bN46RI0dy+eWXc99997HJJpvw8MMPs/vuu1d6Hb179+bOO+9k7ty5fP311/zvf//jiiuuAODMM88sTmRV93gHcBXW5Db8K6+8AuT/RWirrbZio402Yvbs2SxatIjWrVsX1+/Tp0+5+q1atWKHHXZg8uTJpeY/99xzAEyePJmXXnqp3HIfffQR3377LbNmzaJ79+6Vjn1V5s2bx2WXXcbjjz/OvHnz+Prrr0uVl71wySl7gQcUP1+SL77cyfTdd99lk002Wevt59x+++18/vnnHHbYYSvt/GXjjTdm0003LTe/b9++jBw5kn//+98r3Y5Un3neK62+nvcuvfRSLr30Ur788ktmzZrFFVdcwf7778/FF19c6sJyzpw5nH322Rx55JH86Ec/yruuiuy555557/D17duXyZMn8+9//zvvZyytC1Z2rpwzZw4jR44sNW+TTTbh7LPPLjVv8uTJxee63DPNp556KsOGDaNz586rHVO+TmGGDBlSrpOWO+64gzvuuIPPPvuMGTNmMHLkSHr16sWNN97IkCFDKrWtsj+kb7bZZpx33nn84Ac/YODAgVxwwQWceOKJNGzYcLX3Q9XLBHAVOnbsyMyZM4vHY6mMXC9P+Z6xyM2fN28eixcvpnXr1sX1K/rVNV+ismDBAgB+//vfrzSWquzC++2332aXXXbh008/Zc8996R///60atWKhg0bMmfOHG677bYKO3rI92t+ronTysqWLVtWJdvPyf0alXvAuiKr+izy9eQlrSs8731nXTjvrb/++uy44478/e9/Z+HChVx00UX079+fnXfeGchcxDVr1ozrrruucgelBM+VKmQbbrghM2fOzPsjTN++fYsTxOXLl5d6/rmk4cOHr3ZPnitTNunMxVJRL50tW7akZ8+ePPDAA/To0YPTTjuNffbZZ7VagJR10EEH0alTJ9577z1ee+01tttuuzVel6qHCeAq7LHHHjzxxBM8/vjjnHjiiZVaJvcf+/z58/M23ck1r8rVy00//PDDvOvLNTHIt43FixfX2IO2f/jDH1iwYAFjx44t9+vQ7bffzm233Vantz9t2jSmTp3KpptuSv/+/Vdad1WfRb6LN2ld4XnvO/X9vFfWgAEDmDhxIpMnTy5OAF955RUWL15M+/bt8y7z29/+lt/+9rcMGjSI++67r1SZ50oVsl69evHkk0/y+OOPr/SxkpqUSzpXV+PGjenXrx+vvvoqzz//PEccccRaxdG+fXvee+89vvzyy7Vaj6qHzwCuwvHHH09RURH33HMPr7322krr5n6F3XHHHYFMu+6y3nrrLd5991023XTT4mdDcj0ulW3uBJkLnWnTppWbv9tuuwHU6PMVua6BDz/88HJl+WKva9vPdf5y0kknrbJp27x585gzZ065+bnPNPcZS+siz3vfqe/nvbJydypKdjLzk5/8hBNPPLHcq3fv3gDssMMOnHjiiXl7TX766afzDl3huVKFYMiQITRq1Ihx48bx+uuv13Y4ay3f+WFNLF68mJkzZxIRjg9YR5kArkKXLl0YMWIES5cu5cADD6xwbKOJEycWD5yZ+xXokksuKTXW0rfffsv555/PihUrSv2qPmjQINq0acM//vGPcusfMWJE3iY0Z555JkVFRZxzzjnMmjWrXPnSpUur/CIp9yUue4H38MMPl+rcobqszfa//PJL/vGPf6yy85ecb7/9ll/+8pelLmxmz57NtddeS6NGjfjxj3+82vFL9YXnve/Ut/PeN998w7PPPpt3XS+99BI33HADDRo0YMCAAcXzr732WsaMGVPudfzxxwNw4IEHMmbMmLw9+r355pvlmo6OHz+eyZMns8UWWzgMhNZpm2++ORdeeGFxr7wVffcWLVpUs4FVYMGCBbz66qt5yx588EHuvfdemjdvXu653f/973/MnDmzVPP0+fPn5x0z8IsvvmDIkCEsWbKEffbZZ6X9Laj22AS0EoYNG8by5csZOXIkO++8Mz179qRHjx40b96cDz/8kClTpvDmm28WP/Dfs2dPfvGLX3D55Zez7bbbcsQRR7D++uvz0EMPMWPGDPbYY49S48g1b96cm266icGDB7PnnnuWGg9rxowZ9O7dmylTppSKqWvXrtxyyy2ccMIJdOvWjQEDBrDVVluxbNky5s2bx1NPPUX79u3zDqg8ZsyYvL/SAxx99NEVNo88/fTTGTt2LEceeSSHH344nTp1YsaMGUycOJEf/ehH3HnnnWt4hCtnbbafe9B5VZ2/5Pzwhz/khRdeoHv37vTv35/Fixdz5513smjRIi6//PK8TdykdYnnvYz6dt77+uuv6dWrF127dmWnnXZio4024quvvuL111/niSeeADLPUHbt2rVK4hswYADnnXceDz30ENtvv33xOIBNmzblz3/+s0NAaJ33m9/8hpQSF198Mb169aJ79+7ssssutG3blkWLFjFnzhwee+wxgOK76rXlnXfeYccdd2SnnXaiW7dudOrUiUWLFjFt2jSef/55ioqKGDNmDG3atCm1XL9+/Zg7dy6zZ88u/lFq5syZ7LXXXuy+++5svfXWbLDBBrz33ns8+uijzJ8/n80226xGfiTTGkopVfiaOnVq0ndee+21dOaZZ6Zu3bqlFi1apKKiotShQ4c0YMCANGbMmLRkyZJS9W+//fbUq1ev1Lx589SkSZO0zTbbpEsuuSR9/fXXedf/yCOPpF69eqVmzZql1q1bp4MPPji9/vrr6bjjjktAmj17drllpk+fno477ri08cYbp8aNG6c2bdqkbt26paFDh6bHH3+8VN3celb2uuqqq0rVLbvNZ555Ju21116pdevWqXnz5qlXr17p3nvvTU8++WQC0vDhw0vV79OnT8r8mZW3sv0aPnx4AtKTTz65VtvP2WWXXRKQJk6cmLe8JCD16dMnvffee+mYY45J7du3T02aNEk77rhj+vvf/77K5aV1iee9+nXeW7p0aRo1alTq169f6tSpU2rSpElq2rRp2nzzzdOxxx6bnn/++bxx5TN27NgEpAsuuKBcWcltP/vss6lfv36pRYsWqXnz5mnfffdNL774YqW3I60LZs6cmc4+++y0/fbbp1atWqVGjRqlNm3apB49eqSzzz47vfzyy6Xq577vFV23rEzuu3ncccet1nILFy5Mw4YNS3vssUfq0KFDKioqSuutt17q2rVrOuWUU9Jrr72Wd7lNNtmk3Hlr3rx5aejQoWnHHXdM7dq1S40aNUotW7ZMO++8c7rkkkvSZ599ttr7pao1derUNHDgwIsHDhx4QyqT40VaycOiL7/8cqrKrrQlSZIkSdXr5ZdfZuTIkZcA7e+///5TS5bZNkOSJEmSCoQJoCRJkiQVCBNASZIkSSoQJoCSJEmSVCBMACVJkiSpQJgASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAmgJEmSJBUIE0BJkiRJKhAmgJIkSZJUIEwAJUmSJKlANFqbhTud0qOq4qgW7904tbZDqBJDhgzhtttuY/bs2XTp0mWd3WZdERH06dOHSZMm1XYoqoN6nPJgbYewUlNvPKi2Q6gSnvfqtkmTJrHXXnsxfPhwRowYUdvhqA56ucdNtR3CSnWfOrS2Q5BqjXcAV8PMmTP56U9/yrbbbkurVq1o3LgxHTt25MADD+TPf/4zS5Ysqe0QV2rIkCFEBLfeemtth1JjImKVr7/+9a/VGkOXLl2ICObMmVOt2ym7zbp8AVvX49N3PO/VP/fddx+DBw+ma9eutGnThmbNmrHlllvyf//3f0ydWrkfRqdMmULDhg2JCC688MJqjhjmzJlDRNToeSG3zSFDhtTYNldHXY9Ppc2aNYtzzz2XnXbaibZt21JUVETbtm3ZddddOf/883n55ZdL1R8xYkS565FmzZqx1VZbccYZZ/Duu+9WWG9lr1V9h2655RYOOeQQtthiC1q2bMn666/P1ltvzcknn8wbb7yxWvucO79W9Jo5c+Zqra9v375ERI3+AJ/bZl1VXfGt1R3AQjJq1ChGjhzJihUr2G233TjuuONo3rw5H374IZMmTeKkk07i+uuvr/R/rqoZw4cPzzv/iy++4Morr6RRo0bsu+++NRyVVD943qufxo8fz0svvcTOO+9Mx44dady4MW+99Rb33nsvd955JzfddBMnnXRShct//vnnHHfccay33np88cUXNRi5VP+klBg1ahSjRo1ixYoV7LTTTgwePJi2bdvy+eefM336dP74xz9y5ZVX8qc//Ykzzjij1PJ9+vShb9++AHzyySc88sgjXHfdddx11108//zzxWUlTZs2jfHjx7P99ttzyCGHlCpr3br1SuP929/+xgcffMCuu+5Khw4daNCgAf/9738ZO3Ysf/nLX7jvvvvYf//9V+sYnHXWWXm3265du9Vaj2qOCWAl/O53v2P48OF07tyZu+++m1133bVcnQcffJArr7yyFqLTylTUNOnGG28EYODAgXTo0KEGI5LqB8979df1119P06ZNy81/9dVX2XnnnTn//PP5yU9+QuPGjfMuf9ZZZ7F48WJ+/etfc8EFF1R3uFK9NmrUKEaMGEHnzp25/fbb6dWrV7k6H330EVdffTWLFy8uV9a3b99S1yrLli1j//335/HHH+eSSy5h7Nix5ZLAW2+9lfHjx7PDDjusdhPsCRMm5D0/PProo/Tv35/zzjtvtRPAs88+21Y99YxNQFdhzpw5jBgxgqKiIiZMmJD3IgjgoIMOYuLEiaXm3XXXXfTu3ZtWrVrRrFkztttuO0aPHs0333yTdx2PPfYYe+65J+uvvz5t27blkEMOWeXt8xdeeIEjjjiCDh060LhxYzp37swpp5zC+++/v2Y7vAq33norhx9+OJttthnNmjWjZcuW9OrVi7/97W956+duXS9btoxRo0ax+eab07RpU7p27crNN99cXO+GG25gu+22o1mzZmy00UYMHz6cFStWrPX2K3LTTZlnE0455ZQK67z//vsce+yxbLDBBjRr1ozu3bvzj3/8Y7W2szIRQd++ffnkk08YOnQoG264IU2aNKFbt26MHTu2XP2UErfddhs9e/akffv2NG3alM6dO7Pffvtx5513ApnnciKCuXPnMnfu3FJNMUo2I8pte/78+Zx00kl06tSJhg0bFjeTW1mTg1tvvbXCJnXvvvsuP/vZz9hyyy1p2rQpbdu2ZZddduHiiy9erfhUuzzvlVbfznv5Lu4AtttuO7beemsWL17Mxx9/nLfO+PHjGTt2LNdeey0dO3Zc1aEB4LnnnmOfffahVatWtGjRgv3226/K7grnzhkjRoxg2rRpHHjggbRu3Zr11luPPn368Oyzz5Zb5vPPP+fiiy9m2223pWXLlrRo0YLNN9+cwYMHFzfDGzFiBJtuuikAt912W6lzUe7cVnLbL774IgceeCBt27Yt1aQ/dy7NJ9c8Ll/z/xdffJHBgwfTqVMnmjRpwoYbbkj//v256667Kh2fat/bb7/NJZdcQuPGjXnooYfyJn8AG2ywAb/73e/4xS9+scp1FhUVMXRo5vnEF198sUrjhYrPD/vuuy+tW7fmrbfeqvJtrq3cYyNfffUVP//5z9l4441p0qQJW2yxBZdddhkppXLL3H///fTr16/42qpjx4706dOH6667DviuifXkyZOB0o8MlfxO57b92Wefce6559KlSxeKioqKE++Vfc9LnkPKWrhwIRdccAHbbrst6623Hq1atWL77bfnV7/6FV9++WWl41tT3gFchbFjx7Js2TKOOuoott1225XWbdKkSfG/hw0bxujRo2nXrh1HH300zZs356GHHmLYsGE8/PDDPProoxQVFRXXHzduHIMHD6Zx48YMHjyYDTfckKeffprdd9+dH/7whxXGdvLJJ9OkSRMOPvhgOnfuzJtvvsmYMWN44IEHeP7559l4442r5kBknXbaaWyzzTb07t2bDTfckAULFjBhwgSOPfZY3njjjeIL/bKOOuooXnjhBQ444ACKiooYN24cQ4cOpaioiOnTp3Pbbbdx0EEH0a9fP+6//35GjRrFeuutxy9/+csq2X5Jr7zyCq+88gpdunSpsPnnp59+Ss+ePWndujXHH388ixYt4q677uKYY47hvffe4+c///nqH7w8Fi1aRK9evWjcuDFHHHEES5YsYdy4cZxwwgk0aNCA4447rrjuBRdcwOjRo9l000350Y9+RKtWrfjggw946aWXuPvuuxk8eDBdunRh+PDhXH311UDmV7mcHXbYodS2Fy5cyG677Ubz5s057LDDaNCgAd///vfXeF+mTp3Kfvvtx8KFC+nduzeHHXYYX331Fa+99hojRozgoosuWq34VHs875W2Lpz3IPOM0htvvEG7du3YcMMNy5V/9NFHnHzyyRxyyCH8+Mc/rlSi8cILLzB69Gj22WcfzjjjDN566y3++c9/MmXKFB555BH23HPPSsW2KlOnTuXyyy9n991356STTmLevHncc8899OvXj2nTpvGDH/wAyPxQNmDAAJ599tniuo0aNeKdd95h0qRJ7LnnnnTv3p2+ffuyaNEirrnmmnLN6Mqei5577jlGjx7NHnvswQknnMAnn3xS4d3Tyrj55ps57bTTaNiwIQcffDBbbrklH330EVOnTuW6667jRz/60WrFp9ozduxYli9fztFHH023bt1WWb9Ro8pdducSmpp8Nu3pp59m0aJF7LTTTqu97EMPPcRnn31Gw4YN2WKLLdh7771p2bJllca3bNky+vfvz/vvv8/+++9Po0aNuO+++/jVr37FkiVLSj3yc9NNN3HKKafQoUMHBg4cSLt27fjoo4+YPn06Y8eO5fTTT6d169YMHz6cW2+9lblz55ZavuzdzKVLl7L33nuzcOFC+vfvT8uWLYt/oFkTs2fPZq+99mLu3Ll0796d0047jRUrVjBr1iyuuuoqTj311NWKb02YAK7C008/DUC/fv0qvUzuP4vOnTvz4osvFjcxHD16NIceeigPPvggv//97xk2bBiQeR7tlFNOoUGDBjz11FP06PFd76rnnHNO8cVySbNmzeKUU06hS5cuTJ48mU6dOhWXPfHEE+y7776cddZZ3HvvvWuy2xWaMWMGm2++eal5S5cuZf/99+fSSy/l1FNPLRVLzrx585gxY0ZxG/HzzjuPrl27cs4559C6dWumT59evNyIESPYYostuOKKKzjvvPNKnTDXdPsl5Zp/nnzyyTRokP8m+PTp0znyyCO54447iuv86le/onv37lxwwQXFv8avrf/85z+ceOKJ3HjjjTRs2BDIfOY//OEPueyyy0olgDfeeCOdOnVixowZrLfeeqXW88knnwCZk8KIESOKL9xW1jTk1Vdf5dhjj+WWW26p9H9KFVm6dClHHnkkCxcu5O9//ztHH310qfJ33nlnteNT7fG8V1p9Pe899thjPP300yxdupTZs2fzwAMPADBmzJi8576hQ4eyYsUKbrjhhkofm4kTJ/LHP/6RM888s3je+PHjOeSQQzjhhBN44403KjzPro5//etfjB07tlRLgRtvvJFTTz2Va665pvhX/RkzZvDss89yyCGHlPs7WLFiRXETvL59+9KlSxeuueaaVTaje+SRR7jhhhtW2mKksl577TVOP/10WrZsyVNPPVUuach1/LE68an2PPPMMwDsvffeVbbO5cuXF7dSqqj1RVUYN24cM2bM4Ouvv2bWrFlMmDCBtm3b8qc//Wm113X66aeXet+iRQtGjx5d7nnHtfH++++z/fbb8+ijj9KsWTMg08/DVlttxVVXXcWwYcOKf2C88cYbady4Mf/5z3/YYIMNSq0nd73UunVrRowYwaRJk5g7d+5Kv2MffPAB22yzDZMnT2b99ddf63358Y9/zNy5c/nd737Hr3/963LxNW/enKZNm1Y6vjVhE9BV+OCDDwDYaKONKr3MLbfcAsCFF15Y6vmyRo0aceWVV9KgQQPGjBlTPH/8+PEsXLiQo48+utRFEGQuClq1alVuG9dffz3Lli3jmmuuKfcf/957783BBx/MAw88wOeff17puCuj7EUIQOPGjTnjjDNYvnw5jz/+eN7lLr300lIPCG+22WbsscceLFq0iIsuuqjUPrRu3ZqBAwfyySef8N5771XJ9nO++OILbr/9dho1asQJJ5xQYb2GDRty2WWXlbpw2XTTTfnZz37GsmXLqqzn0PXWW48//OEPxckfwDbbbEOvXr14/fXXy31+RUVFpermrMmD1o0bN+aKK65Y6+QP4IEHHmDOnDkcfPDB5ZI/gM6dO6/1NlRzPO+VVl/Pe4899hgjR45k9OjR3HHHHbRo0YJ7772XQYMGlat7yy23MH78eK677rrVagmwxRZblLv4GzRoEH369OGtt97iqaeeqvS6VqZXr17lmomfcMIJNGrUKG8zudwFYkkNGjSgTZs2q73tHXbYoUqSP8j8DS9fvpyLLroo7x2j1fnOqfbNnz8fIO8PMLmm9CVf+X7YmjRpUnH5T3/6U7bZZhueeOIJ2rVrV63P4I4bN46RI0dy+eWXc99997HJJpvw8MMPs/vuu1d6Hb179+bOO+9k7ty5fP311/zvf//jiiuuAODMM88sTmSryrXXXlvqu73BBhswaNAgFi9eXK4H00aNGpVqcZKzph3TXHnllVWS/L388ss8++yz7LDDDuVae0Amvoqa6VYl7wCuwprchn/llVeA/L8IbbXVVmy00UbMnj2bRYsW0bp16+L6ffr0KVe/VatW7LDDDsVtgHOee+45ACZPnsxLL71UbrmPPvqIb7/9llmzZtG9e/dKx74q8+bN47LLLuPxxx9n3rx5fP3116XKy1645JS9wAOKny/JF1/uZPruu++yySabrPX2c26//XY+//xzDjvssJV2/rLxxhvnvb3ft29fRo4cyb///W8g04Qz3wn97LPPXmVPXABbbrll3mYSuYRp0aJFtGjRAoBjjjmGP/7xj3Tr1o0jjzySPn36sPvuu+e9UK6MLl26lPtlbE09//zzAKv94LjqJs97pdXX896ll17KpZdeypdffsmsWbO44oor2H///bn44otLXVjOmTOHs88+myOPPJIf/ehHeddVkT333DPvHb6+ffsyefJk/v3vf9OnTx+mTZvGfffdV6pO69atSzUDX5l8x7KoqIjvf//7fPrpp8XzttlmG3bYYQduv/125s6dy6BBg9hjjz3o0aPHGjfb3GWXXdZouXw8V65bVnaunDNnDiNHjiw1b5NNNin3Nz958uTic13umeZTTz2VYcOGrdGPp/nuFA0ZMqRcs8E77riDO+64g88++4wZM2YwcuRIevXqxY033ljpZ/LL/pC+2Wabcd555/GDH/yAgQMHcsEFF3DiiScW/3Bd2djyadWqFVtssUW5+bljVPI8cMwxx3DeeefRrVs3Bg8eTJ8+fejVqxft27ev1H6V1bRp0wofS1hduXPAfvvtVyWtI9aUCeAqdOzYkZkzZxY3y6iMXBOTfM9Y5ObPmzePxYsX07p16+L6Ff3qmi9RWbBgAQC///3vVxpLVXbh/fbbb7PLLrvw6aefsueee9K/f39atWpFw4YNmTNnDrfddluFHT3kS1Jyd55WVrZs2bIq2X5O7teo3APWFVnVZ5H7zBYtWlTuBA+ZE1plEsCK6uT2/9tvvy2ed9VVV7H55ptzyy23FF/YNWrUiAMOOIArr7wy74lxZaqy99NFixYB+X8FVf3jee8768J5b/3112fHHXfk73//OwsXLuSiiy6if//+7LzzzkDmIq5Zs2bFzShXR2XPldOmTavUxXBFVnauLHmebNiwIU888QSjRo1i3Lhxxb+wt2jRguOOO47Ro0fTvHnzSm2z7L5UBc+V65YNN9yQmTNn5v0Rpm/fvsUJ4vLly/PejYJMM8aqbN6X75ok16Q4n5YtW9KzZ08eeOABevTowWmnncY+++yzVnejDzroIDp16sR7773Ha6+9xnbbbbdGsZW0OtdL5557Lu3ateO6667j2muv5eqrryYi6NOnD7///e/z/qC0MhtssEGVPY9ZV84BNgFdhT322ANglU0LS8r9x55rGlBWrnlVrl5u+uGHH+atn289uWUWL15MSqnCV75f19fUH/7wBxYsWMCf//xnJk2axLXXXsvFF1/MiBEj2G+//apsO9W1/WnTpjF16lQ23XRT+vfvv9K6q/oscse/S5cueY97dXSH3LBhQ8466yz+85//8OGHH3LPPfdw6KGHcv/99zNgwIBVXgSWtbKTWe5XqeXLl5cry528SsqdmFd1B1b1g+e979T3815ZAwYMIKVU6u7qK6+8wkcffUT79u1L9TR3/PHHA/Db3/6WiCg33hhU/lw5ZMiQcp9Tvl7zqkKbNm246qqreOedd4o7COratSt/+tOfOO2001Z7fSs7V0ZE3vMkeK4sBLleP1fnXFnd8p0TK9NrZOPGjenXrx9Lliwpvku1NnJ327788su1jm1N/OQnP+H5559nwYIF/Otf/+LEE09kypQp7Lfffnz00Uerta518XrJBHAVjj/+eIqKirjnnnt47bXXVlo3dwG+4447Apl23WW99dZbvPvuu2y66abFfwS5HpfKNneCzIXOtGnTys3fbbfdAKrs+YrKyHUNfPjhh5cryxd7Xdt+rvOXk046aZW/5MybN6/CLn3hu8+4tmywwQYcdthh3HXXXey9997873//Y8aMGcXlDRs2LPVr2OrKPSeT67ylpHzdu+f+Hh966KFKrX9t41P18rz3nfp+3isrd9FR8tnfn/zkJ5x44onlXr179wYyz8CdeOKJeXtNfvrpp/MOXVFXzpVbbLEFJ554IpMnT6Z58+aMHz++uCzXLG1tz5X5zpPffvvtSv+GK3OurIr4VL2GDBlCo0aNGDduHK+//npth7PW8p0f1sTixYuZOXMmEVHr4wO2bt2aAw44gJtvvpkhQ4awcOHCUv+HrO33bE2vlx5++OG8586yqus8YAK4CrleC5cuXcqBBx5Y4dhGEydOLG7Tn2sTfckll5Qaa+nbb7/l/PPPZ8WKFZx44onF8wcNGkSbNm34xz/+UW79I0aMyDtw6JlnnklRURHnnHMOs2bNKle+dOnSKr9Iyn2Jy17gPfzww6U6d6gua7P9L7/8kn/84x+r7Pwl59tvv+WXv/xlqS/n7Nmzufbaa2nUqBE//vGPVzv+tfHNN9/w+OOPlxvrZtmyZSxcuBCgVM+g3/ve9/j444/LPStUWblnXkqOWQaZXzlvv/32cvUHDhxIly5duP/++/OWl/2la23jU/XyvPed+nbe++abb/KOjQfw0ksvccMNN9CgQQMGDBhQPP/aa69lzJgx5V65O4AHHnggY8aMyduj35tvvlmu6ej48eOZPHkyW2yxRZUNA1FZs2fP5r///W+5+Z9++inffPNNqQ4k2rRpQ0Qwb968Nd7eLrvswrx583jkkUdKzb/kkkuYO3duufqnnXYajRo14uKLL87740rJZtdVEZ+q1+abb86FF15Y3CtvRd+9fHeCasOCBQt49dVX85Y9+OCD3HvvvTRv3rxcK4r//e9/zJw5s1Tz9Pnz5+cdM/CLL75gyJAhLFmyhH322adKm1BX1sSJE/Pekcvd+St7vQSs8fesouulV199lWuuuaZc/e7du9OzZ0+mTZvGZZddVq58wYIFLFmypMriq4jPAFbCsGHDWL58OSNHjmTnnXemZ8+e9OjRg+bNm/Phhx8yZcoU3nzzzeI2xT179uQXv/gFl19+Odtuuy1HHHEE66+/Pg899BAzZsxgjz32KDWOXPPmzbnpppsYPHgwe+65Z6nxsGbMmEHv3r2ZMmVKqZi6du3KLbfcwgknnEC3bt0YMGAAW221FcuWLWPevHk89dRTtG/fPu+AymPGjMn7Kz3A0UcfXWHzyNNPP52xY8dy5JFHcvjhhxcPSTBx4kR+9KMfFQ9GXl3WZvu5B51X1flLzg9/+ENeeOEFunfvTv/+/Vm8eDF33nknixYt4vLLL8/bK191+vrrr9lnn33o0qULu+66K5tssglLlizh0Ucf5fXXX+fggw9m6623Lq7fr18/XnrpJQYMGEDv3r1p0qQJ22+/PQMHDqzU9o4//nh+//vfM3r0aP7zn/+wzTbbMGvWLB566CEOPfRQ7rnnnlL1GzduzN13303//v05+uijufHGG9ltt91YsmQJr7/+Oo8//nipk/Haxqfq53kvo76d977++mt69epF165d2Wmnndhoo4346quveP3113niiSeAzDOUXbt2rZL4BgwYwHnnncdDDz3E9ttvXzwOYNOmTfnzn/9c450c/Oc//+HQQw+le/fubLvttnTs2JGPP/6Y8ePHs2zZslK97jVv3pxdd92Vp556imOOOYatttqqeGy+ynb4cP755/Pwww8zaNAgBg8eTNu2bXn22WeZPXs2ffv2Lfc3t80223Dddddx6qmnsuOOOzJo0CC23HJLFixYwNSpU2nRogVPPvlklcWn6veb3/yGlBIXX3wxvXr1onv37uyyyy60bduWRYsWMWfOHB577DGA4rvqteWdd95hxx13ZKeddqJbt2506tSJRYsWMW3aNJ5//nmKiooYM2ZMud5y+/Xrx9y5c5k9e3bxj1IzZ85kr732Yvfdd2frrbdmgw024L333uPRRx9l/vz5bLbZZjXyI1k+Rx11FE2bNmWPPfYoflTnqaee4qWXXqJ79+7ss88+pfbt7rvv5rDDDuOAAw6gWbNmbLLJJhx77LGV2lbuO3z77bfz7rvvsuuuuzJv3jzGjx/PoEGDuOuuu8ot87e//Y2+ffsybNgw7rnnnuLnRd98800eeeQRZs6cWXyc1za+Cq3sOYqpU6cmfee1115LZ555ZurWrVtq0aJFKioqSh06dEgDBgxIY8aMSUuWLClV//bbb0+9evVKzZs3T02aNEnbbLNNuuSSS9LXX3+dd/2PPPJI6tWrV2rWrFlq3bp1Ovjgg9Prr7+ejjvuuASk2bNnl1tm+vTp6bjjjksbb7xxaty4cWrTpk3q1q1bGjp0aHr88cdL1c2tZ2Wvq666qlTdstt85pln0l577ZVat26dmjdvnnr16pXuvffe9OSTTyYgDR8+vFT9Pn36pMyfWXkr26/hw4cnID355JNrtf2cXXbZJQFp4sSJectLAlKfPn3Se++9l4455pjUvn371KRJk7Tjjjumv//976tcvqxNNtkk737mtpNP2WOzdOnSdNlll6UBAwakzp07pyZNmqR27dqlXXfdNV1//fXpm2++KbX8F198kU499dTUqVOn1LBhwwSk4447rlLbzpkxY0baf//9U/PmzdP666+f+vTpkyZNmpTGjh2bgDR27Nhyy8ydOzeddtppqUuXLqmoqCi1bds27bLLLumSSy5ZrfhUd3jeq1/nvaVLl6ZRo0alfv36pU6dOqUmTZqkpk2bps033zwde+yx6fnnn88bVz657/oFF1xQrqzktp999tnUr1+/1KJFi9S8efO07777phdffLHS20kppdmzZycgbbLJJhVuJ59NNtmk1DLvvPNO+vWvf5169uyZvv/976fGjRunTp06pQEDBqQJEyaUW/7NN99MBx10UGrbtm2KiFLntlVtO2f8+PGpe/fuqUmTJqlt27Zp8ODBac6cOSv9rJ999tl02GGHpfbt26eioqK04YYbpv322y/dfffdlY5PdcvMmTPT2WefnbbffvvUqlWr1KhRo9SmTZvUo0ePdPbZZ6eXX365VP3c931Vf1/55L6bq/v/5sKFC9OwYcPSHnvskTp06JCKiorSeuutl7p27ZpOOeWU9Nprr+VdLt91zLx589LQoUPTjjvumNq1a5caNWqUWrZsmXbeeed0ySWXpM8++2y19yt37ix7Diz7PS8p33nz+uuvT4ccckjadNNNU7NmzVKbNm3SDjvskC677LJycS1fvjz9+te/Tptuumlq1KhRueujlW07Z968eelHP/pRatOmTWratGnq0aNHuueee1Z6Dvnkk0/SL37xi7TVVlulJk2apFatWqXtt98+DRs2LH355ZeVjm9lpk6dmgYOHHjxwIEDb0hlcrxIZZqUlfTyyy+nquxKW5IkSZJUvV5++WVGjhx5CdD+/vvvP7Vkmc8ASpIkSVKBMAGUJEmSpAJhAihJkiRJBcIEUJIkSZIKhAmgJEmSJBUIE0BJkiRJKhCrTABXNkyEJEmSJKnuWFX+ttIEMCI+W7p0aZUGJEmSJEmqHkuXLmXFihXfZN+WywZXlQA+uGDBAm8BSpIkSVI9sGDBgjR//vxZQCNgSdnylSaAK1asuHj+/Pmfvf/+++mbb76xOagkSZIk1TEpJb755hvef//99O677y59/PHHpwBtgf+UrdtoZSvq3r37zJdffnm3//73vze3atVq14YNGxZVV9CSJEmSpDWzYsWKb+bPnz/r8ccfn/L2229/A6wHTC5bLypzV+/ggw9uCBwK7EsmafRWoCRJkiTVPQ2ABcCt999//3/LFlYqAcw5+OCDGwOdgMZVFp4kSZIkqSok4Avgg/vvvz9vordaCaAkSZIkqf5yIHhJkiRJKhAmgJIkSZJUIEwAJUmSJKlA/H9hKC2d+Ey9+gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "plt.rcParams.update({'font.size': 20})\n", + "\n", + "plt.figure(figsize=(6,6))\n", + "\n", + "\n", + "color1 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.2, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "color2 = (0.1, # redness\n", + " 0.4, # greenness\n", + " 0.2, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "color3 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.7, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "\n", + "\n", + "color4 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.7, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "color5 = (0.6, # redness\n", + " 0.2, # greenness\n", + " 0.6, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "\n", + "\n", + "color6 = (0.8, # redness\n", + " 0.2, # greenness\n", + " 0.6, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "colors = [color1, color2, color3, color4, color5, color6]\n", + "\n", + "\n", + "\n", + "species = (\"RealHumanEval\")\n", + "penguin_means = {\n", + " 'CodeLlama7b': (29.3),\n", + " 'CodeLlama7b-Instruct': (-47.1),\n", + " 'CodeLlama34b': (75),\n", + " 'CodeLlama34b-Instruct': (55),\n", + " 'GPT-3.5': (83.6),\n", + " 'GPT-3.5-Instruct': (71.9),\n", + "}\n", + "\n", + "\n", + "x = 0 # the label locations\n", + "width = 0.15 # the width of the bars\n", + "multiplier = 0\n", + "\n", + "\n", + "for attribute, measurement in penguin_means.items():\n", + " offset = width * multiplier\n", + " rects = plt.bar(x + offset, measurement, width, label=attribute, color=colors[multiplier])\n", + " multiplier += 1\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "plt.ylabel('Time saved (s)')\n", + "plt.xlabel(\"RealHumanEval\")\n", + "# plt.legend(loc='bottom', ncols=3)\n", + "plt.ylim(20, 85)\n", + "\n", + "plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.2),\n", + " fancybox=True, shadow=True, ncol=3)\n", + "\n", + "#plt.savefig(\"figures/benchmark.pdf\", format=\"pdf\", bbox_inches=\"tight\")\n", + "plt.show()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/analysis/fig2_barplot.ipynb b/analysis/fig2_barplot.ipynb deleted file mode 100644 index 44463bd..0000000 --- a/analysis/fig2_barplot.ipynb +++ /dev/null @@ -1,128 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "a2d91c06", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs0AAAGbCAYAAAA/cK32AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAvJUlEQVR4nO3deXiU1f338c83YRUUoQZEbAV5ACEJmZCIyL4otEpRRBAoNtQqYgGr/kDpD9sClUtFK+Je0D4gIETRQIQ+KFtY3DCBIOBGqahohCAFFGVJcp4/MowEAichmSSE9+u6uObe729mbiafnDlzH3POCQAAAMDJRZR3AQAAAEBFR2gGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAo0p5F1AUF1xwgWvcuHF5lwEAAIBKLiMjY7dzLur45WdEaG7cuLHS09PLuwwAAABUcmb2eWHL6Z4BAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4nBEjAgIAAJSl125+rbxLKJEbZt1Q3iVUOrQ0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwYHATAACASiYjcVp5l1AiCenDyruEE4S1pdnM7jazLWa22czmmlkNM6tnZkvNbGvwsW44awAAAABKKmyh2cwaSbpTUqJzLkZSpKSBksZKWu6cayZpeXAeAAAAqLDC3T2jiqSaZnZE0jmSvpb0J0ldg+tnSkqTdF+Y6wBwFuLjSQBAaQlbS7Nz7itJj0r6QlKWpH3OuTclNXDOZQW3yZJUP1w1AAAAAKUhnN0z6kq6TlITSRdJqmVmQ4qx/zAzSzez9Ozs7HCVCQAAAHiF84uAV0n6zDmX7Zw7Iuk1Se0l7TSzhpIUfNxV2M7OuWnOuUTnXGJUVFQYywQAAABOLZyh+QtJ7czsHDMzST0kfSQpVVJScJskSQvDWAMAAABQYmH7IqBz7j0zmy9pvaQcSRskTZNUW9LLZvZ75Qfr/uGqAQAAACgNYb17hnPur5L+etziQ8pvdQYAAADOCAyjDQAAAHgQmgEAAAAPQjMAAADgQWgGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAI+wDqMN4Mz22s2vlXcJJXJJeRcAAKg0aGkGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwIDQDAAAAHoRmAAAAwIPQDAAAAHgQmgEAAAAPQjMAAADgQWgGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeIQtNJtZCzPLPObffjO7y8zqmdlSM9safKwbrhoAAACA0hC20Oyc+8Q5F3DOBSQlSPpBUoqksZKWO+eaSVoenAcAAAAqrLLqntFD0jbn3OeSrpM0M7h8pqTry6gGAAAA4LSUVWgeKGlucLqBcy5LkoKP9cuoBgAAAOC0hD00m1k1SX0kvVLM/YaZWbqZpWdnZ4enOAAAAKAIyqKl+VeS1jvndgbnd5pZQ0kKPu4qbCfn3DTnXKJzLjEqKqoMygQAAAAKVxaheZB+6pohSamSkoLTSZIWlkENAAAAwGkLa2g2s3MkXS3ptWMWPyTpajPbGlz3UDhrAAAAAEqqSjgP7pz7QdLPjlv2rfLvpgEAAACcERgREAAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwIDQDAAAAHoRmAAAAwIPQDAAAAHgQmgEAAAAPQjMAAADgQWgGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwIDQDAAAAHmENzWZ2vpnNN7OPzewjM7vSzOqZ2VIz2xp8rBvOGgAAAICSCndL81RJS5xzl0mKk/SRpLGSljvnmklaHpwHAAAAKqywhWYzO09SZ0kvSJJz7rBzbq+k6yTNDG42U9L14aoBAAAAKA3hbGm+VFK2pP9rZhvM7HkzqyWpgXMuS5KCj/UL29nMhplZupmlZ2dnh7FMAAAA4NTCGZqrSGoj6VnnXLykAypGVwzn3DTnXKJzLjEqKipcNQIAAABe4QzNOyTtcM69F5yfr/wQvdPMGkpS8HFXGGsAAAAASixsodk5942kL82sRXBRD0kfSkqVlBRcliRpYbhqAAAAAEpDlTAff5SkOWZWTdJ/JP1O+UH9ZTP7vaQvJPUPcw0AAABAiYQ1NDvnMiUlFrKqRzjPCwAAAJQmRgQEAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAR1iH0QYAAGenxNsXlXcJJfK/5V0AKhxamgEAAAAPQjMAAADgQWgGAAAAPAjNAAAAgAehGQAAAPAoUWg2s7+UViEAAABARVXSluZbS6UKAAAAoALz3qfZzPafbJWkmqVbDgAAAFDxFGVwk72SLnfO7Tx+hZl9WeoVAQAAABVMUULzi5IukXRCaJb0UumWAwAAJOnmSWvKuwQAx/CGZufc/adYd1/plgMAAABUPEVpaQ4xs4CkppJ2SXrHOZcTjqIAAACAiqRId88ws7ZmtkrSbyVFSeom6U0zuzScxQEAAAAVQVHuntFK0hRJ10mqoZ+C9nJJD5vZK5Led859FrYqAQAAgHJUlJbm+yWNdM7tljRBUpqkhyXNVn43jY2S/hquAgEAAIDyVpQ+zS2ccxuC0xdKSnDO/dfMzpc0xzn3SbA1GgAAAKiUitLSbGZWPTgdJemc4PQ5kqLMLKKIxwEAAADOSEVpaV4kKUnSNEmjJM0xszzlB+U7Jd0gaUXYKgQAAADKWVFC8yOSlpnZdufcm5K6Hl1hZn0k3SupZ3jKAwAAAMpfUQY3+c7Mfinp72Y2VlKGpFxJbSV9Lam3c25vWKsEAAAAylGRBjdxzv1X0i1mVktSS0kmaZJz7rtwFgcAAABUBEX+Ap+ZdZAk51y6pBaSJpjZJeEqDAAAAKgoinPXi2cl/WBmccrvx/y5pBfDUhUAAABQgRQnNOc455zyRwac6pybKunc8JQFAAAAVBxF6tMc9J2Z/UnSEEmdzSxSUtXwlAUAAABUHMVpab5J0iFJv3fOfSOpkfJvRwcAAABUasVqaVZ+t4xcM2su6TJJc8NTFgAAAFBxFKelebWk6mbWSNJySb+TNCMcRQEAAAAVSXFCsznnflD+sNlPOuf6SooOT1kAAABAxVGs0GxmV0r6jaTFwWWRpV8SAAAAULEUp0/zHyX9SVKKc26LmV0qaeWpdjCz7crvC52r/FvWJZpZPUnJkhpL2i5pQHDEQQAAAKBCKnJLs3NutXOuj3Pu4eD8f5xzdxZh127OuYBzLjE4P1bScudcM+X3jR5b7KoBAACAMlTklmYzi1L+SIDRkmocXe6c617Mc14nqWtweqakNEn3FfMYAAAAQJkpTp/mOZI+ltRE0gTld61437OPk/SmmWWY2bDgsgbOuSxJCj7WL1bFAAAAQBkrTp/mnznnXjCzPzrnVklaZWarPPt0cM59bWb1JS01s4+LerJgyB4mSb/4xS+KUSYAAABQuorT0nwk+JhlZteaWbyki0+1g3Pu6+DjLkkpktpK2mlmDSUp+LjrJPtOc84lOucSo6KiilEmAAAAULqKE5ofMLM6kv5H0mhJz0u6+2Qbm1ktMzv36LSknpI2S0qVlBTcLEnSwtOoGwAAACgz3u4ZZlZD0nBJ/0dSI0kvOOe6FeHYDSSlmNnR87zknFtiZu9LetnMfi/pC0n9T7d4AAAAoCwUpU/zTOV3zVgj6VeSWin/ns2n5Jz7j6S4QpZ/K6lH8coEAAAAyk9RQnMr51ysJJnZC5LWhbckAAAAoGIpSmg++gVAOedygt0tgDJx86Q15V1Cicwa16m8SwAAAKWgKKE5zsz2B6dNUs3gvElyzrnzwlYdAAAAUAF4Q7NzLrIsCgEAAAAqquLccg4AAAA4KxGaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwIDQDAAAAHoRmAAAAwIPQDAAAAHgQmgEAAAAPQjMAAADgUaW8CwAAIBwa3Z5Y3iWUSPdfTCnvEgAcg5ZmAAAAwIPQDAAAAHgQmgEAAAAPQjMAAADgQWgGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8qpR3AUBllnj7ovIuoUT+t7wLAACggiA0AwAKdfOkm8u7BACoMOieAQAAAHgQmgEAAACPsIdmM4s0sw1mtig4X8/MlprZ1uBj3XDXAAAAAJREWbQ0/1HSR8fMj5W03DnXTNLy4DwAAABQYYU1NJvZxZKulfT8MYuvkzQzOD1T0vXhrAEAAAAoqXC3ND8u6V5Jeccsa+Ccy5Kk4GP9MNcAAAAAlEjYQrOZ9Za0yzmXcZr7DzOzdDNLz87OLuXqAAAAgKILZ0tzB0l9zGy7pHmSupvZbEk7zayhJAUfdxW2s3NumnMu0TmXGBUVFcYyAQAAgFMLW2h2zv3JOXexc66xpIGSVjjnhkhKlZQU3CxJ0sJw1QAAAACUhvK4T/NDkq42s62Srg7OAwAAABVWmQyj7ZxLk5QWnP5WUo+yOC8AAABQGhgREAAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwIDQDAAAAHoRmAAAAwIPQDAAAAHgQmgEAAACPKuVdAMKn0e2J5V1CiXX/xZTyLgEAAICWZgAAAMCH0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADy4e8Yp3Dzp5vIuAQAAABUALc0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwIDQDAAAAHoRmAAAAwIPQDAAAAHiELTSbWQ0zW2dmG81si5lNCC6vZ2ZLzWxr8LFuuGoAAAAASkM4W5oPSerunIuTFJD0SzNrJ2mspOXOuWaSlgfnAQAAgAorbKHZ5fs+OFs1+M9Juk7SzODymZKuD1cNAAAAQGkIa59mM4s0s0xJuyQtdc69J6mBcy5LkoKP9cNZAwAAAFBSYQ3Nzrlc51xA0sWS2ppZTFH3NbNhZpZuZunZ2dlhqxEAAADwKZO7Zzjn9kpKk/RLSTvNrKEkBR93nWSfac65ROdcYlRUVFmUCQAAABQqnHfPiDKz84PTNSVdJeljSamSkoKbJUlaGK4aAAAAgNJQJYzHbihppplFKj+cv+ycW2Rm70h62cx+L+kLSf3DWAMAAABQYmELzc65DyTFF7L8W0k9wnVeAAAAoLQxIiAAAADgQWgGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwIDQDAAAAHoRmAAAAwIPQDAAAAHgQmgEAAAAPQjMAAADgQWgGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAB6EZAAAA8CA0AwAAAB6EZgAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4BG20GxmPzezlWb2kZltMbM/BpfXM7OlZrY1+Fg3XDUAAAAApSGcLc05kv7HOddSUjtJI8yslaSxkpY755pJWh6cBwAAACqssIVm51yWc259cPo7SR9JaiTpOkkzg5vNlHR9uGoAAAAASkOZ9Gk2s8aS4iW9J6mBcy5Lyg/WkuqXRQ0AAADA6TLnXHhPYFZb0ipJk5xzr5nZXufc+ces/69z7oR+zWY2TNKw4GwLSZ+EtVAgPC6QtLu8iwCAcsD7H85Ulzjnoo5fGNbQbGZVJS2S9IZz7rHgsk8kdXXOZZlZQ0lpzrkWYSsCKEdmlu6cSyzvOgCgrPH+h8omnHfPMEkvSProaGAOSpWUFJxOkrQwXDUAAAAApaFKGI/dQdLNkjaZWWZw2f9KekjSy2b2e0lfSOofxhoAAACAEgtbaHbOrZVkJ1ndI1znBSqYaeVdAACUE97/UKmE/YuAAAAAwJmOYbQBAAAAD0Izzipm9v1x80PN7KlyrCfXzDKP+XdaI2SaWZqZ8S11AGFhZs7MZh0zX8XMss1sUXB+aHA+08y2mNl8MzsnuG68mX0VXLfZzPqcajlQURGagfL1o3MucMy/h8q7IAAoxAFJMWZWMzh/taSvjtsmOfg+Fi3psKSbjlk3xTkXUP6X//9pZhGe5UCFw8UJBJnZDDO78Zj574OPXc1slZm9bGafmtlDZvYbM1tnZpvMrGlwu1+b2XtmtsHMlplZg+Dy8Wb2z2Br8H/M7E5PHb8ys5ePme9qZq8Hp581s/RgS86EcDwPAHAS/0/StcHpQZLmFraRmVWRVEvSf49f55z7SFKO8gc+8S4HKhJCM842NY/tDiFpYhH3i5P0R0mxyr+VYnPnXFtJz0saFdxmraR2zrl4SfMk3XvM/pdJ6iWpraS/Bgf+OaEeM7tJ0lJJ7cysVnCbmyQlB6fHBQcLaC2pi5m1LtZPDwCnb56kgWZWQ/nvQe8dt/6m4PvqV5LqSXr9+AOY2RWS8iRlF2U5UJGE8z7NQEX0Y/CjQEn5/fAkFaUv8PvOuazgPtskvRlcvklSt+D0xZKSgyNdVpP02TH7L3bOHZJ0yMx2SWogacfx9RxT1xJJvzaz+cpv2TkawAcEh5ivIqmhpFaSPihC/QBQIs65D8yssfJbmf9VyCbJzrmRwcHNnpY0RvljM0jS3WY2RNJ3km5yzrn8zU5cHu6fAzhdtDQDP8lR8P9E8E2/2jHrDh0znXfMfJ5++uPzSUlPOediJd0uqcZJ9s+V/w/WZEkDJHVXfmD/zsyaSBotqYdzrrWkxcedAwDCLVXSozpJ1wxJCgbf1yV1PmbxlGB/507OuTVFWA5UOIRm4CfbJSUEp6+TVPXkmxaqjn76YkzSqTYsgjRJbSTdpp+6Zpyn/C/j7Av2l/5VCc8BAMX1T0kTnXObPNt1lLStDOoBygzdM4CfTJe00MzWSVqu/IBaHOMlvWJmX0l6V1KTIuxT85hh5iVpiXNurHMuN3grp6EKBnDn3EYz2yBpi6T/SHqrmPUBQIk453ZImnqS1TeZWUflN8jtUP77F1BpMCIgAAAA4EH3DAAAAMCD0AwAAAB4EJoBAAAAD0IzAAAA4EFoBgAAADwIzQAAAIAHoRkAAADwIDQDAAAAHoRmAAAAwIPQDAAAAHgQmgEAAAAPQjMAAADgQWgGAAAAPAjNAAAAgAehGQAAAPAgNAMAAAAehGYAAADAg9AMAAAAeBCaAQAAAA9CMwAAAOBBaAYAAAA8CM0AAACAR5XyLgBnl4yMjIsjIiLezMvLu0ySlXc9AACUgIuIiPg4Ly+vZ0JCwo7yLgbhRWhGmYqIiHjzwgsvbNagQQOLiOCDDgDAmSsvL8+ysrJafP755+v69Onzy9TU1A/KuyaED6kFZSovL++yBg0aVCEwAwDOdBEREWrYsGFEtWrVGkq6p0+fPoHyrgnhQ3JBWaOFGQBQaURERMjMJOl7SR3KuRyEEekFZ6VvvvlGAwcOVNOmTdWqVStdc801+vTTT4u079ChQzV//vxib7N9+3bFxMScds1F8cgjjygQCCgQCCgmJkaRkZHas2dPmZwbfpX1ulu4cKFat26tQCCgxMRErV27tsD63NxcxcfHq3fv3qFlXbt2VXp6eljrwqnt3LlTgwcP1qWXXqqEhARdeeWVSklJUVpamurUqaP4+Hi1bNlSEyZM0BtvvBF6b6ldu7ZatGihQCCg3/72twWO+dxzzyk2NlaBQEAdO3bUhx9+WOi5u3btGjpGIBDQrl27yuJHDrccSTXLuwiED32aUa5unnRzqR5v1rhZ3m2cc+rbt6+SkpI0b948SVJmZqZ27typ5s2bl2o9ZW3MmDEaM2aMJOn111/XlClTVK9ePe3fv7+cK6tYbp60plSPN2tcJ+82lfm669Gjh/r06SMz0wcffKABAwbo448/Dq2fOnWqWrZsyXV4Cq/d/FqpHu+GWTeccr1zTtdff72SkpL00ksvSZI+//xzpaamqm7duurUqZMWLVqkAwcOKBAIqHfv3srMzJSUH3gfffRRJSYmnnDcwYMHa/jw4ZKk1NRU3XPPPVqyZEmhNcyZM6fQYwAVFS3NOOusXLlSVatWDb2xSwq1iowZM0YxMTGKjY1VcnKypPxfLiNHjlSrVq107bXXFmgRycjIUJcuXZSQkKBevXopKyurSDVs375dnTp1Ups2bdSmTRu9/fbbkqS0tDR16dJFAwYMUPPmzTV27FjNmTNHbdu2VWxsrLZt2yYpPxBfccUVio+P11VXXaWdO3eecI65c+dq0KBBofmcnBwlJSWpdevWuvHGG/XDDz8U/8nDaavM113t2rWPfjytAwcOhKYlaceOHVq8eLFuvfXWE+qZPXu22rdvr5iYGK1bt644TydKaMWKFapWrVqB6/GSSy7RqFGjCmxXq1YtJSQkhK4Bn/POOy80ffy1AJzpCM0462zevFkJCQknLH/ttdeUmZmpjRs3atmyZRozZoyysrKUkpKiTz75RJs2bdL06dNDQePIkSMaNWqU5s+fr4yMDN1yyy0aN25ckWqoX7++li5dqvXr1ys5OVl33nlnaN3GjRs1depUbdq0SbNmzdKnn36qdevW6dZbb9WTTz4pSerYsaPeffddbdiwQQMHDtTkyZMLHP+HH37QkiVL1K9fv9CyTz75RMOGDdMHH3yg8847T88880yxnzucvsp+3aWkpOiyyy7Ttddeq3/+85+h5XfddZcmT56swr7LcODAAb399tt65plndMsttxTtiUSp2LJli9q0aePd7ttvv9W7776r6OjoIh/76aefVtOmTXXvvffqiSeeOOl2v/vd7xQIBPS3v/1NzrkiHx8oL3TPAILWrl2rQYMGKTIyUg0aNFCXLl30/vvva/Xq1aHlF110kbp37y4pP4Ru3rxZV199taT8fpsNGzYs0rmOHDmikSNHKjMzU5GRkQX6tV5++eWh4zRt2lQ9e/aUJMXGxmrlypWS8lvvbrrpJmVlZenw4cNq0qRJgeO//vrr6tChg+rVqxda9vOf/1wdOuR/R2XIkCF64oknNHr06NN5qlCKKst117dvX/Xt21erV6/Wn//8Zy1btkyLFi1S/fr1lZCQoLS0tBPqOfpJSOfOnbV//37t3btX559/fvGeQJSKESNGaO3atapWrZoeeeQRrVmzRvHx8YqIiNDYsWOLFZpHjBihESNG6KWXXtIDDzygmTNnnrDNnDlz1KhRI3333Xfq16+fZs2adUL/aKCiITTjrBMdHV3oF6pO1dJR2EeMzjlFR0frnXfeKXYNU6ZMUYMGDbRx40bl5eWpRo0aoXXVq1cPTUdERITmIyIilJOTI0kaNWqU7rnnHvXp00dpaWkaP358gePPmzevQNeMwn4GPjYtW2fDdSflB+Bt27Zp9+7deuutt5Samqp//etfOnjwoPbv368hQ4Zo9uzZhf58XJNlJzo6Wq+++mpo/umnn9bu3btDfYyP9mn2GTdunBYvXixJoT7PRw0cOFB33HFHofs1atRIknTuuedq8ODBWrduHaEZFR7dM3DW6d69uw4dOqTp06eHlr3//vuqW7eukpOTlZubq+zsbK1evVpt27ZV586dNW/ePOXm5iorKyvU6taiRQtlZ2eHwsuRI0e0ZcuWItWwb98+NWzYUBEREZo1a5Zyc3OL9TPs27cv9Evn+Facffv2adWqVbruuusKLP/iiy9Ctc6dO1cdO3Ys1jlRMpX5uvv3v/8dCv/r16/X4cOH9bOf/UwPPvigduzYoe3bt2vevHnq3r17KDBLCvXfXrt2rerUqaM6deoUqx6cvu7du+vgwYN69tlnQ8tO53sOkyZNUmZmZigwb926NbRu8eLFatas2Qn75OTkaPfu3ZLyr99FixZxdx+cEWhpxlnHzJSSkqK77rpLDz30kGrUqKHGjRvr8ccf1/fff6+4uDiZmSZPnqwLL7xQffv21YoVKxQbG6vmzZurS5cukqRq1app/vz5uvPOO7Vv3z7l5OTorrvuCn2Mefvtt+uuu+6SlN81Yu7cuaEa/vCHP6hfv3565ZVX1K1bN9WqVatYP8P48ePVv39/NWrUSO3atdNnn30WWpeSkqKePXuecMyWLVtq5syZuv3229WsWbOTtgAhPCrzdffqq6/qxRdfVNWqVVWzZk0lJycXqdW4bt26at++vfbv31+gHzTCz8y0YMEC3X333Zo8ebKioqJUq1YtPfzwwyU67lNPPaVly5apatWqqlu3boE/rgKBgDIzM3Xo0CH16tVLR44cUW5urq666irddtttJf2RgLAzOt+jLGVkZLjCvgwFAMCZKiMjQxMmTJgqaUdqauqj5V0PwoPuGQAAAIAHoRkAAADwIDQDAAAAHoRmAAAAwIPQDAAAAHgQmgEAAAAPQjPOSt98840GDhyopk2bqlWrVrrmmmsKDCl8KkOHDi10ZDffNtu3bw/7DfwfeeQRBQIBBQIBxcTEKDIyUnv27CnyuUtS44wZM/T111+f1r6Fefzxx09rsIWKrLJedwsXLlTr1q0VCASUmJiotWvXFlifm5ur+Ph49e7dO7Ssa9euSk9P9x67qNsdLzMzU//617+Kvd/JpKWl6e233y6141UEO3fu1ODBg3XppZcqISFBV155pVJSUpSWlqY6deooPj5eLVu21IQJE/TGG2+E3ltq166tFi1aKBAInDCK33PPPafY2FgFAgF17NhRH374YaHn7tq1a+gYgUBAu3btKnS7xo0bhwZCKY7Sfr0WLFhw0p8FZw8GN0G5anR7Yqke76t/+H+5OufUt29fJSUlad68eZLyf8Hu3LlTzZs3L9V6ytqYMWM0ZswYSdLrr7+uKVOmqF69etq/f3/Yzz1jxgzFxMTooosuOmFdbm6uIiMji3W8xx9/XEOGDNE555xTWiWGJN7uHx64ONL/0du7TWW+7nr06KE+ffrIzPTBBx9owIAB+vjjj0Prp06dqpYtW5bJdXhUZmam0tPTdc0115ywLicnR1WqFO/XX1pammrXrq327duXVokFZCROK9XjJaQPO+V655yuv/56JSUl6aWXXpIkff7550pNTVXdunVDw2gfOHBAgUBAvXv3Do3617VrVz366KOhIbePNXjwYA0fPlySlJqaqnvuuUdLliwptIY5c+YUeozScKrX63Re/wULFqh3795q1apVaZWIMxAtzTjrrFy5UlWrVg29sUsKtYqMGTNGMTExio2NDQ3x65zTyJEj1apVK1177bUFWkQyMjLUpUsXJSQkqFevXsrKyipSDdu3b1enTp3Upk0btWnTJtQikpaWpi5dumjAgAFq3ry5xo4dqzlz5qht27aKjY3Vtm3bJOUH4iuuuELx8fG66qqrtHPnzhPOMXfuXA0aNCg0n5OTo6SkJLVu3Vo33nijtxV3xowZuuGGG/TLX/5SzZo107333ispPwAPHTo09DxNmTJF8+fPV3p6un7zm98oEAjoxx9/VOPGjTVx4kR17NhRr7zySoEWw927d6tx48ah440ePVqxsbFq3bq1nnzyST3xxBP6+uuv1a1bN3Xr1q1Iz2lFV5mvu9q1a4dGADxw4ECB0QB37NihxYsX69Zbbz2hntmzZ6t9+/aKiYnRunXrvPXXrl1b48aNU1xcnNq1axc6/yuvvKKYmBjFxcWpc+fOOnz4sP7yl78oOTlZgUBAycnJGj9+vIYNG6aePXvqt7/9rWbMmKGRI0eGjt27d2+lpaVJkpYsWaI2bdooLi5OPXr00Pbt2/Xcc89pypQpCgQCWrNmTZGe74psxYoVqlatWoHr8ZJLLtGoUaMKbFerVi0lJCSErgGf8847LzR9/LVQEtu3b1fLli112223KTo6Wj179tSPP/4oSXriiSfUqlUrtW7dWgMHDiz09Ro6dKjuuecedevWTffdd5/Gjx+vRx/9aQySmJgYbd++XZL04osvqnXr1oqLi9PNN9+st99+W6mpqRozZowCgUCRnwtUPrQ046yzefNmFTYq4WuvvabMzExt3LhRu3fv1uWXX67OnTvrnXfe0SeffKJNmzZp586datWqlW655RYdOXJEo0aN0sKFCxUVFaXk5GSNGzeuSMMB169fX0uXLlWNGjW0detWDRo0KBQoN27cqI8++kj16tXTpZdeqltvvVXr1q3T1KlT9eSTT+rxxx9Xx44d9e6778rM9Pzzz2vy5Mn6+9//Hjr+Dz/8oCVLluipp54KLfvkk0/0wgsvqEOHDrrlllv0zDPPaPTo0aesMzMzUxs2bFD16tXVokULjRo1Srt27dJXX32lzZs3S5L27t2r888/X0899dQJrU81atQIfVT/3HPPFXqOadOm6bPPPtOGDRtUpUoV7dmzR/Xq1dNjjz2mlStX6oILLvA+n2eCyn7dpaSk6E9/+pN27dqlxYsXh8551113afLkyfruu+9OqOfAgQN6++23tXr1at1yyy2ha+pkDhw4oHbt2mnSpEm69957NX36dN1///2aOHGi3njjDTVq1Eh79+5VtWrVNHHiRKWnp4f+D4wfP14ZGRlau3atatasqRkzZhR6juzsbN12221avXq1mjRpEroehw8frtq1a3v/z5wptmzZojZt2ni3+/bbb/Xuu+/qz3/+c5GP/fTTT+uxxx7T4cOHtWLFipNu97vf/U6RkZHq16+f7r//fm/A3rp1q+bOnavp06drwIABevXVVzVkyBA99NBD+uyzz1S9evXQ+9Hxr9cLL7ygTz/9VMuWLVNkZKTGjx9f6Dm2bNmiSZMm6a233tIFF1wQev379Omj3r1768Ybbyzy84DKh5ZmIGjt2rUaNGiQIiMj1aBBA3Xp0kXvv/++Vq9eHVp+0UUXqXv37pLyQ+jmzZt19dVXKxAI6IEHHtCOHTuKdK4jR47otttuU2xsrPr371+gr9zll1+uhg0bqnr16mratKl69uwpSYqNjQ21hOzYsUO9evVSbGysHnnkEW3ZsqXA8V9//XV16NBB9erVCy37+c9/rg4dOkiShgwZckK/08L06NFDderUUY0aNdSqVSt9/vnnuvTSS/Wf//xHo0aN0pIlSwq0LB3vpptu8p5j2bJlGj58eOjj0mNrPhtUluuub9+++vjjj7VgwYJQwFq0aJHq169f6B8LkkKfhHTu3Fn79+/X3r17T1l/tWrVQv2iExISQnV16NBBQ4cO1fTp05Wbm3vS/fv06aOaNWue8hzvvvuuOnfurCZNmkg6e67HESNGKC4uTpdffrkkac2aNYqPj1fPnj01duxYRUdHF+tY27Zt08MPP6wHHnig0G3mzJmjTZs2ac2aNVqzZo1mzZrlPW6TJk0UCAQkFXz9W7durd/85jeaPXv2Kbtd9O/f39tNbMWKFbrxxhtDf6yfLa8/iobQjLNOdHS0MjIyTljunDvpPoW1gDjnFB0drczMTGVmZmrTpk168803i1TDlClT1KBBA23cuFHp6ek6fPhwaF316tVD0xEREaH5iIgI5eTkSJJGjRqlkSNHatOmTfrHP/6hgwcPFjj+vHnzCnTNKOxnMDO99957oS/ipKamnlDnsbVERkYqJydHdevW1caNG9W1a1c9/fTThX7sflStWrVC01WqVFFeXp4kFajXOVdqH+FWZGfDdSflB+Bt27Zp9+7deuutt5SamqrGjRtr4MCBWrFihYYMGXLSn8/M1KtXLwUCgUKvq6pVq4b2OXo9SvmfYjzwwAP68ssvFQgE9O233xb685/sepR+uibPputx/fr1ofmnn35ay5cvV3Z2tiSpU6dO2rBhgzIyMgp04TjeuHHjQu8hxxs4cKAWLFhQ6H6NGjWSJJ177rkaPHiw1q1bp9zc3NCx/vKXv5ywT2HvR5K0ePFijRgxQhkZGUpISAgtPx6vP0qK0IyzTvfu3XXo0CFNnz49tOz9999X3bp1lZycrNzcXGVnZ2v16tVq27atOnfurHnz5ik3N1dZWVlauXKlJKlFixbKzs7WO++8Iym/Fe/4Ft+T2bdvnxo2bKiIiAjNmjXrlK1jJ9v/6C+dmTNnnrBu1apVuu666wos/+KLL0K1zp07Vx07dtQVV1wRCl99+vQp0rl3796tvLw89evXT3/7299Cv3jPPffcQj+CP6px48ah0HjsHR569uyp5557LvSLbs+ePUU63pmmMl93//73v0Phf/369Tp8+LB+9rOf6cEHH9SOHTu0fft2zZs3T927d9fs2bND+x3tv7127VrVqVNHderU0RtvvKHMzEw9//zzRa5r27ZtuuKKKzRx4kRdcMEF+vLLL4t0PWZmZiovL09ffvllqE/1lVdeqVWrVumzzz6TVLmvx4MHD+rZZ58NLTudu9VMmjQp9B4i5XehOGrx4sVq1qzZCfvk5OSE7ohx5MgRLVq0KHS3n6PHmjhxYpHOf/T169atmyZPnqy9e/fq+++/L9Lrf/S9a/369aHXu0ePHnr55ZdDf3hV1tcfp4fQjLOOmSklJUVLly5V06ZNFR0drfHjx2vw4MGhL390795dkydP1oUXXqi+ffuqWbNmio2N1R133KEuXbpIyv+oeP78+brvvvsUFxenQCBQ4BZHt99+uy6++GJdfPHFuvLKKwvU8Ic//EEzZ85Uu3bt9OmnnxZoASmK8ePHq3///urUqdMJfX5TUlLUs2fPE47ZsmVLzZw5U61bt9aePXt0xx13FOucR3311Vfq2rWrAoGAhg4dqgcffFBS/u3Ohg8fHvoi4PFGjx6tZ599Vu3bty9wC6lbb71Vv/jFL0LP/dFv8g8bNky/+tWvKs0XASvzdffqq68qJiZGgUBAI0aMUHJycpFa6+rWrav27dtr+PDheuGFF4pVy7HGjBmj2NhYxcTEqHPnzoqLi1O3bt304Ycfhr4IeLwOHTqoSZMmio2N1ejRo0P9e6OiojRt2jTdcMMNiouLC3Ux+vWvf62UlJRK80VAM9OCBQu0atUqNWnSRG3btlVSUpIefvjhEh33qaeeUnR0tAKBgB577LECf1wdbY0+dOiQevXqFbpNYaNGjXTbbbed1vlyc3M1ZMgQxcbGKj4+XnfffbfOP/987+vVr18/7dmzR4FAQM8++2zoDjbR0dEaN26cunTpori4ON1zzz2S8lvNH3nkEcXHx/NFwLOYneqjQaC0ZWRkuJP1bwQA4EyUkZGhCRMmTJW0IzU19VHvDjgj0dIMAAAAeBCaAQAAAA9CMwAAAOBBaEZZc8fe5gcAgDNZXl7eKW8dicqD0IwyFRER8fE333yTS3AGAJzp8vLylJWVlXfw4MHd/q1xpmMYbZSpvLy8nllZWcu//vrr5txAHgBwJnPO6eDBg3tm5Q9pWEfSzvKuCeFDaEaZSkhI2CGpRZ8+fa6WNEgSTc4AgDPdecoPzIvKuxCED6EZ5WWZpE3K/8scAIAz2RFJWampqSeO7IRKg8FNAAAAAA++CAgAAAB4EJoBAAAAD0IzAAAA4PH/AetNy7q2dVWoAAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "plt.rcParams.update({'font.size': 20})\n", - "\n", - "plt.figure(figsize=(12,6))\n", - "\n", - "\n", - "color1 = (0.2, # redness\n", - " 0.4, # greenness\n", - " 0.2, # blueness\n", - " 0.8 # transparency\n", - " ) \n", - "color2 = (0.1, # redness\n", - " 0.4, # greenness\n", - " 0.2, # blueness\n", - " 1 # transparency\n", - " ) \n", - "\n", - "color3 = (0.2, # redness\n", - " 0.4, # greenness\n", - " 0.7, # blueness\n", - " 0.8 # transparency\n", - " ) \n", - "\n", - "\n", - "color4 = (0.2, # redness\n", - " 0.4, # greenness\n", - " 0.7, # blueness\n", - " 1 # transparency\n", - " ) \n", - "\n", - "color5 = (0.6, # redness\n", - " 0.2, # greenness\n", - " 0.6, # blueness\n", - " 0.8 # transparency\n", - " ) \n", - "\n", - "\n", - "color6 = (0.8, # redness\n", - " 0.2, # greenness\n", - " 0.6, # blueness\n", - " 1 # transparency\n", - " ) \n", - "\n", - "colors = [color1, color2, color3, color4, color5, color6]\n", - "\n", - "\n", - "\n", - "species = (\"HumanEval\", \"MBPP\")\n", - "penguin_means = {\n", - " 'CodeLlama7b': (33.5, 41.4),\n", - " 'CodeLlama7b-Instruct': (34.8, 44.4),\n", - " 'CodeLlama34b': (48.8, 55.0),\n", - " 'CodeLlama34b-Instruct': (41.5, 57.0),\n", - " 'GPT-3.5': (77.0, 82.91),\n", - " 'GPT-3.5-Instruct': (80.34, 81.03),\n", - "}\n", - "\n", - "\n", - "x = np.arange(len(species)) # the label locations\n", - "width = 0.15 # the width of the bars\n", - "multiplier = 0\n", - "\n", - "\n", - "for attribute, measurement in penguin_means.items():\n", - " offset = width * multiplier\n", - " rects = plt.bar(x + offset, measurement, width, label=attribute, color=colors[multiplier])\n", - " multiplier += 1\n", - "\n", - "# Add some text for labels, title and custom x-axis tick labels, etc.\n", - "plt.ylabel('Pass@1')\n", - "plt.xticks(x + 2.5*width, species)\n", - "# plt.legend(loc='bottom', ncols=3)\n", - "plt.ylim(20, 85)\n", - "\n", - "plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.1),\n", - " fancybox=True, shadow=True, ncol=3)\n", - "\n", - "#plt.savefig(\"figures/benchmark.pdf\", format=\"pdf\", bbox_inches=\"tight\")\n", - "plt.show()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/analysis/figures/benchmark.pdf b/analysis/figures/benchmark.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1f37f7fac4940dd41eb51379cbc8d1765dde6af3 GIT binary patch literal 17017 zcmeIac{r6_^fz9HVgiIT#?go<9m3oBtL zI1=vVa2O^p4@Vf7omkV4`5k~ZMf-1`V)j&Ofq-jF3 zClTS;)kYd#o+LPCHE(E7A`yK&;W+3g3}NWwFGuCg`<$G6sQ7fh@PN; zu=-n%=;UUv;uQdBfNIEK2vRaQ3<`~dW3kdwG6bwN4sHV|wf6z7e)GYY=!o7tkmpMqZ@*+6Gn|_JmR#HM(sWtd>zL8Z(^XR$ zbscVOWo4RN+zpn88dAAEgPg@8io!}+Q>dqZ=q^biKD<9yFmrlp?DO*2%*nl#*^G?= zl#c0P5jYmdoSlz_&Dpf9G-++6y#>^}qg`n_ioC0Rmf#^WM_e8}>Cp7x?2{to-NOmv zia2zgO!55lrc>Sf!}ndeXBO3Cb4kL>tFsuPb6WB>N8sH`)}AC!3XZEPXS+wDFwrK) zsO!C=?Si#a{qN*OM>PU;_EXUf(z)zNrV~?r&h0-tGSAQ)|J+%#XaFTDn)2O3eT>ds zdVhjAmPDV*opy6n^P3ubt2FV&rp+ z3p-92$o=pQep@Y5Y9r|vuQHN@t|}xloO2ejBN~u%<&_f?WK`NoBE?e&TgmB;=V}M~ zI0=gJCZ(s`yViX7Ma)%`iupX<#OsHS4EX&}U*w;A{j18t_TjIG)|0LKK72a<^}A^> zV=7xn69-3p$I-96);ZlwUVi!p@23a5TUt(V_T|FvGFX`VXH7xb!r9Bxzg}y6%yIV0zzOJr) zW~Z$it3X*CbvWP9b_HuK#T@-9"tAMA|?$vV80Oe2rpY6hfuDBQmxsULLFIUpjC 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 literal 0 HcmV?d00001 diff --git a/analysis/figures/tasks_completed_barplot.pdf b/analysis/figures/tasks_completed_barplot.pdf new file mode 100644 index 0000000000000000000000000000000000000000..92d8c0cb1a10cd0accc343126da7f7562dfe043a GIT binary patch literal 13012 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 w6K$$3fQ(=<7$}pRonbe`Xp 0 -> make it a 1, else 0\n", + "df['copied_per_response'] = np.where(df['avg_copy_per_response'] > 0, 1, 0)\n", + "\n", + "percentages = np.nanmean(df['copied_per_response'])\n", + "\n", + "# Print the result\n", + "print(f'average copy rate from chat response {percentages}')" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean time to complete task 334.1795045751634\n", + "std time to complete task 238.927337160666\n", + "min time to complete task 0.885\n", + "max time to complete task 1708.24\n", + "median time to complete task 264.358\n" + ] + } + ], + "source": [ + "# df['task_completion_durations']\n", + "# flatten the list of lists\n", + "task_times = [item for sublist in df['task_completion_durations'] for item in sublist]\n", + "print(f'mean time to complete task {np.nanmean(task_times)}')\n", + "print(f'std time to complete task {np.nanstd(task_times)}')\n", + "print(f'min time to complete task {np.nanmin(task_times)}')\n", + "print(f'max time to complete task {np.nanmax(task_times)}')\n", + "print(f'median time to complete task {np.nanmedian(task_times)}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mean time to complete task: 334.1795045751634\n", + "std time to complete task: 238.927337160666\n", + "min time to complete task: 0.885\n", + "max time to complete task: 1708.24\n", + "median time to complete task: 264.358\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "# Calculating statistics\n", + "mean_time = np.nanmean(task_times)\n", + "std_time = np.nanstd(task_times)\n", + "min_time = np.nanmin(task_times)\n", + "max_time = np.nanmax(task_times)\n", + "median_time = np.nanmedian(task_times)\n", + "\n", + "# Outputting statistics for clarity\n", + "print(f'mean time to complete task: {mean_time}')\n", + "print(f'std time to complete task: {std_time}')\n", + "print(f'min time to complete task: {min_time}')\n", + "print(f'max time to complete task: {max_time}')\n", + "print(f'median time to complete task: {median_time}')\n", + "\n", + "# Plotting\n", + "fig, ax = plt.subplots(figsize=(10, 6))\n", + "n, bins, patches = ax.hist(task_times, bins='auto', color='#007acc', alpha=0.7, rwidth=0.85)\n", + "ax.grid(axis='y', alpha=0.75)\n", + "ax.set_xlabel('Time to Complete a Task (seconds)')\n", + "ax.set_ylabel('Frequency')\n", + "#ax.set_title('Histogram of Task Completion Times')\n", + "\n", + "# Overlaying summary statistics\n", + "ax.axvline(mean_time, color='r', linestyle='dashed', linewidth=1)\n", + "ax.text(mean_time, max(n)*0.97, 'Mean', rotation=0, color='r')\n", + "\n", + "ax.axvline(median_time, color='g', linestyle='dashed', linewidth=1)\n", + "ax.text(median_time, max(n)*0.9, 'Median', rotation=0, color='g')\n", + "\n", + "\n", + "\n", + "plt.tight_layout()\n", + "plt.savefig(\"figures/task_completion_times.pdf\", format=\"pdf\", bbox_inches=\"tight\", dpi = 300)\n", + "#plt.show()\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "hussein2", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/analysis/main_analysis.ipynb b/analysis/main_analysis.ipynb new file mode 100644 index 0000000..e6d38ce --- /dev/null +++ b/analysis/main_analysis.ipynb @@ -0,0 +1,1814 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 41, + "id": "3be286c4", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd \n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "import numpy as np \n", + "import matplotlib.pyplot as plt \n", + "import seaborn as sns \n", + "import statsmodels.formula.api as smf \n", + "from IPython.display import display, Markdown\n", + "from sklearn.preprocessing import StandardScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f1216e8a", + "metadata": {}, + "outputs": [], + "source": [ + "ORDERED_LIST_PROG = ['0 to 2 years professional programming experience', '3 to 5 years professional programming experience', '6 to 10 years professional programming experience', '11 to 15 years professional programming experience','More than 16 years professional programming experience']\n", + "ORDERED_LIST_PYTHON = ['Beginner – I can write a correct implementation for a simple function', 'Intermediate – I can design and implement whole programs', 'Advanced – I can design and implement a complex system architecture']\n", + "ORDERED_LIST_AI = ['Never','Rarely (once a month)','Sometimes (once a week)','Often (multiple times a week)','Always (daily)']" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "06ceef6d", + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.read_pickle(\"final_df.pkl\")\n", + "df[\"model_size\"] = [x.split(\"_\")[1] if x != \"nomodel\" else \"nomodel\" for x in df[\"model\"]]\n", + "\n", + "df[\"prog_experience\"] = pd.Categorical(df[\"prog_experience\"], ordered=True, categories=ORDERED_LIST_PROG)\n", + "df[\"python_experience\"] = pd.Categorical(df[\"python_experience\"], ordered=True, categories=ORDERED_LIST_PYTHON)\n", + "df[\"ai_experience\"] = pd.Categorical(df[\"ai_experience\"], ordered=True, categories=ORDERED_LIST_AI)\n", + "\n", + "outcome_cols = [\"n_tasks_completed\", \"mean_task_duration\", \"TLX_frustration\", \"TLX_mental_demand\", \"TLX_effort\"]\n", + "\n", + "mean_values = df[(df[\"model\"] == \"nomodel\")][\"mean_task_duration\"].mean(skipna=True)\n", + "mean_values1 = df[(df[\"model\"] == \"nomodel\")][\"n_tasks_completed\"].mean(skipna=True)\n", + "df[\"zscore_mean_task_duration\"] = df[\"mean_task_duration\"] - mean_values\n", + "df[\"zscore_n_tasks_completed\"] = df[\"n_tasks_completed\"] - mean_values1\n", + "\n", + "model_name_mapping = {\n", + " 'nomodel': 'No LLM', # Assuming an empty string or some default value might be appropriate\n", + " 'chat_gpt35': 'GPT-3.5 (chat)',\n", + " 'autocomplete_gpt35': 'GPT-3.5 ',\n", + " 'autocomplete_llama34': 'CodeLlama34b',\n", + " 'chat_llama7': 'CodeLlama7b (chat)',\n", + " 'autocomplete_llama7': 'CodeLlama7b',\n", + " 'chat_llama34': 'CodeLlama34b (chat)'\n", + "}\n", + "\n", + "df['model_clean_name'] = df['model'].map(model_name_mapping)\n", + "\n", + "#for task_id in df[\"task_id\"].unique():\n", + "# df.loc[df[\"task_id\"] == task_id, [\"zscore_\" + x for x in outcome_cols]] = StandardScaler().fit_transform(df.loc[df[\"task_id\"] == task_id, outcome_cols])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "593f5ef6", + "metadata": {}, + "outputs": [], + "source": [ + "plt.rcParams.update({'font.size': 20})" + ] + }, + { + "cell_type": "markdown", + "id": "2d9d31d5", + "metadata": {}, + "source": [ + "# Task duration and tasks completed bar plot" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "aba88bd6", + "metadata": {}, + "outputs": [], + "source": [ + "# ignore nans\n", + "mean_duration_by_model = df.groupby('model_clean_name')['mean_task_duration'].mean()\n", + "stderr_duration_by_model = df.groupby('model_clean_name')['mean_task_duration'].sem()\n", + "task_duration_values_by_model = df.groupby('model_clean_name')['mean_task_duration'].apply(list)\n", + "\n", + "\n", + "task_completion_time_df = pd.DataFrame({\n", + " 'mean': mean_duration_by_model,\n", + " 'se': stderr_duration_by_model,\n", + " 'values': task_duration_values_by_model\n", + "})\n", + "\n", + "\n", + "mean_duration_by_model = df.groupby('model_clean_name')['n_tasks_completed'].mean()\n", + "stderr_duration_by_model = df.groupby('model_clean_name')['n_tasks_completed'].sem()\n", + "tasks_completed_values_by_model = df.groupby('model_clean_name')['n_tasks_completed'].apply(list)\n", + "\n", + "tasks_completed_df = pd.DataFrame({\n", + " 'mean': mean_duration_by_model,\n", + " 'se': stderr_duration_by_model,\n", + " 'values': tasks_completed_values_by_model\n", + "})\n", + "# reorder both df with No LLM, Codellama7b, CodeLlama7b (chat), CodeLlama34b, CodeLlama34b (chat), GPT-3.5, GPT-3.5 (chat)\n", + "task_completion_time_df = task_completion_time_df.reindex(['No LLM', 'CodeLlama7b', 'CodeLlama7b (chat)', 'CodeLlama34b', 'CodeLlama34b (chat)', 'GPT-3.5 ', 'GPT-3.5 (chat)'])\n", + "tasks_completed_df = tasks_completed_df.reindex(['No LLM', 'CodeLlama7b', 'CodeLlama7b (chat)', 'CodeLlama34b', 'CodeLlama34b (chat)', 'GPT-3.5 ', 'GPT-3.5 (chat)'])" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "id": "3f5541da", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import scipy.stats as stats\n", + "plt.rcParams.update({'font.size': 20})\n", + "\n", + "plt.figure(figsize=(7,7))\n", + "# color 0 is grey\n", + "color0 = (0,0,0,0.8)\n", + "color1 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.2, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "color2 = (0.1, # redness\n", + " 0.4, # greenness\n", + " 0.2, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "color3 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.7, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "\n", + "\n", + "color4 = (0.2, # redness\n", + " 0.4, # greenness\n", + " 0.7, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "color5 = (0.6, # redness\n", + " 0.2, # greenness\n", + " 0.6, # blueness\n", + " 0.8 # transparency\n", + " ) \n", + "\n", + "\n", + "color6 = (0.8, # redness\n", + " 0.2, # greenness\n", + " 0.6, # blueness\n", + " 1 # transparency\n", + " ) \n", + "\n", + "colors = [color0, color1, color2, color3, color4, color5, color6]\n", + "\n", + "\n", + "\n", + "x = 0 # the label locations\n", + "width = 0.17 # the width of the bars\n", + "multiplier = 0\n", + "\n", + "\n", + "for i in range(len(task_completion_time_df)):\n", + " offset = width * multiplier \n", + " name = task_completion_time_df.iloc[i].name\n", + " hatch_pattern = '/' if 'chat' in name else '' # Apply hatch pattern if 'chat' is in the label\n", + " measurement = task_completion_time_df.iloc[i]['mean']\n", + " stderr = task_completion_time_df.iloc[i]['se']\n", + " rects = plt.bar(x + offset , measurement, width - 0.02, label=name, color=colors[multiplier],hatch=hatch_pattern)\n", + " # add stderr\n", + " plt.errorbar(x + offset , measurement, stderr, fmt='none', ecolor='black', capsize=5, capthick=2)\n", + " # get percentage improvement in measurement over No LLM\n", + " improvement = (measurement - task_completion_time_df.loc['No LLM']['mean']) / task_completion_time_df.loc['No LLM']['mean'] * 100\n", + " # add text\n", + " null_values = tasks_completed_dict.loc['No LLM']['values']\n", + " alt_values = tasks_completed_dict.loc[name]['values']\n", + " t, p = stats.ttest_ind(null_values, alt_values)\n", + " sign = \"+\" if improvement >= 0 else \"-\"\n", + " if name != \"No LLM\":\n", + " if p < 0.05:\n", + " plt.text(x + offset, measurement + 45, f\"{sign}{abs(improvement):.0f}%*\", ha='center', va='bottom', fontsize=14)\n", + " else:\n", + " plt.text(x + offset, measurement + 45, f\"{sign}{abs(improvement):.0f}%\", ha='center', va='bottom', fontsize=14)\n", + " multiplier += 1\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "plt.ylabel('Task Duration (s)')\n", + "plt.xlabel(\"Condition\")\n", + "# plt.legend(loc='bottom', ncols=3)\n", + "plt.ylim(100, 520)\n", + "plt.xticks([0], [''])\n", + "\n", + "plt.legend(loc='upper left', bbox_to_anchor=(1, 1),\n", + " fancybox=True, shadow=True, ncol=1)\n", + "\n", + "plt.savefig(\"figures/task_duration_barplot.pdf\", format=\"pdf\", bbox_inches=\"tight\")\n", + "#plt.savefig(\"figures/benchmark.pdf\", format=\"pdf\", bbox_inches=\"tight\")\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "id": "02b5f57c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb8AAAGoCAYAAADWwOtRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4EElEQVR4nO3de5xVZb3H8c9PLqmAEoGCJBASmqRIYGaiwqnEIi2xixEYmkKlmRoZeAzBWxfRFMuUkyESXjDvnTjiFfAWziiKimAq3hATERyRUOF3/lh7xrnsuexh7/3s/azv+/Wa1zhrr73mmXOqj2uvZz3L3B0REZE02S70AERERIpN8RMRkdRR/EREJHUUPxERSR3FT0REUqdt6AHkS9euXb1Pnz6hhyEiIiWksrJyrbt3q789mvj16dOHioqK0MMQEZESYmYvZduujz1FRCR1FD8REUkdxU9ERFJH8RMRkdRR/EREJHUUPxERSR3FT0REUqck4mdmq8zMG/laE3p8IiISl1K6yX0DcEmW7e8WeRwiIhK5UorfenefGnoQIiISv5L42FNERKSYSunM72NmNgboBWwEngQWufuWsMMSEZHYlFL8ugNz6m170cyOc/eFIQYkIiJxKpWPPWcBXyIJYAdgH+BKoA8w38wGZnuTmY03swozq3jzzTeLNVYRESlz5u6hx9AoM5sO/By41d2PamrfIUOGuB5pJCIitZlZpbsPqb+9VM78GnNF5vshQUchIiJRKfX4/TvzvUPQUYiISFRKPX4HZr6/EHQUIiISleDxM7MBZtYly/bewB8yP/61uKMSEZGYlcKtDt8GJpnZfcCLQBWwBzAS2B74BzA93PBERCQ2pRC/+4A9gUEkH3N2ANYDD5Dc9zfHS3lKqoiIlJ3g8cvcwK6b2EVEpGiCX/MTEREpNsVPREQamDlzJsOHD6dz586YGatWrWqwz/nnn89BBx1Ehw4dMLMGr69bt44jjjiCjh07MmjQIB5//PE6r59++umceeaZhfoTmqT4iYik1Lhx45g6dWrW19577z0OO+ywRl8H2Lx5M6NGjeLUU0/N+vr5559PVVUVjz32GMOGDePEE0+sea2yspL58+czZcqUbfgLWi/4NT8RESk91UFratnIc845B4C//e1vWV9fvnw5xxxzDP3792f8+PHMnDkTgA8//JATTzyRyy+/nO23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85sCDALGufumlr7J3We6+xB3H9KtW7fCjU5ESsrAgQN54IEH2LRpE3feeSc9evSga9euzJs3j40bNzJu3LjQQyx5aQ4flMCZn5l9nuRs7yJ3fzj0eESk9B1//PE8+eST7L333jXR27BhA5MmTWLBggVMmzaNuXPn0r17d2bOnMlee+2V0/FvHntz3se8dvnagh0bYNScUS3eN+3hg8BnfrU+7lwJ/CrkWEQk/+bOnUvHjh1rvhYvXpyX47Zr144//vGPvPjiizz66KMMHTqUiRMnMn78eJ599lluuOEGKisrGTNmTM3HrJJQ+BKhP/bsCPQHPgP8x8y8+gs4O7PP/2S2XRJqkCLSOkceeSRLly6t+RoyZEhBfs/ChQuprKxk4sSJ3HvvvYwcOZJOnTrx/e9/n4qKCqqqqgrye8uNwveR0B97bgauauS1z5FcB3wAWAHoI9ECuvnmm7nyyit57LHHWLt2Lffdd1/NyjT1uTtf/epXufPOO7nxxhv51re+BSTTz0844QRuu+02unfvzuWXX86Xv/zlmvfNmDGDRx55hGuvvbYYf5KUgPor1BTC5s2b+fGPf8zs2bNp27YtW7durVnt5v333wfQKjZse5iGVE5o0fYr+p9e8uGDwPHLTG45IdtrZjaVJH6zy215s3JUPf18zJgxHHvssU3ue9FFFzVYXgvqTj+fP38+o0eP5o033sDMaqafL1mypFB/gpSJdevW8fLLL7N+/XoA/vWvf9G5c2e6d+9O9+7dAVizZg1r1qxh5cqVADzzzDOsX7+eXr160aVLlzrHO/fccxkxYgT7778/kKxic9pppzFu3DjmzZvHgAED6Ny5c9H+vlJUzDOycggfhD/zkxLRkunnkEw9v/TSS6msrGTXXXet85qmn0tL3H777Rx33HE1P5944okAnH322TX39V1xxRVMmzatZp+RI0cCMGvWrDozOZ966iluuOEGli5dWrNt1KhRLF68mOHDh9OzZ09mz55duD+mDOQrfBWDryzo8Yst9DU/KSNVVVV873vf48orr8waMU0/l5YYN24c7t7gq/YN7VOnTs26T/3/DH32s5/lueeeo0OHDjXbtttuOy699FLefvttnnrqKQYPHlykv6w06RpfdiV75ufuU4GpgYchtfzoRz/i8MMP52tf+1rW1ws9/VxEcqfwZVey8ZPCyfaA1IMPPrjJ98yZM4cnnnii0RU34KPp57WdcMIJDaafX3fddYwdO5ZHH3102/4QEWlWOYavomoFhT5f18eeKdSa6ef33HMPzzzzDB07dqRt27a0bZv8e9N3v/tdhg4dmvU9mn4uEp9i3S5RaDrzS6HWTD8///zzmTix7hOm9tlnH6ZPn843vvGNBvtr+rlIfIp5n2ChKX4CND/9vGfPng0ejQOw++6707dv3wbbNf1cJC6x3SCv+AnQsunnLaXp5yJxiS18oPg1UIjll1asWFGwY0Pjj33Jxbhx43K+FaH6+Wn1VU8/r616+vmll17a2iGKSAAxhg804UUi1JInha9Zs4axY8fSvXt3OnTowMCBA5k7d27N63pSuEi84QOd+UmEWrJU27HHHsu6deu47bbb6NatG7fccgtjx45l991355BDDimbpdrMrEX7NXaWLtKYmMMHip9EqCVLtT300ENcdtllHHDAAQD8/Oc/Z8aMGSxZsoRDDjlES7VJqsUePtDHnpJSQ4cOZd68ebz11lts3bqV2267jTfffLPmKRTlslRb/eW/Dj30UA499NAG20VaKg3hA535SUrNmzePY445hq5du9K2bVs+9rGPcd1117HffvsBWqpN0ikt4YMm4mdmL7TymO7ue7TyvSI5ac1SbQBnnXUWa9eu5e6776Zr167ceuutHHvssSxatIiBAwdqqTZJnTSFD5o+89sOqP95SXugR+afPwTeAj5R6zivA+/nc4AiTTnyyCNrrtsBWW/Er+/555/nsssuY+nSpQwcOBBIPuZcvHgxl112GX/+c8PHR1Yv1XbFFVdwxhln1FmqbcKECVRVVRX8oa0ihZK28EET8XP3PrV/NrOdgLuBl4DJwGJ332pm2wGHAL8mCeaXESmS1izV9t577wE0eCBvmzZtapZgq01LtUnM0hg+yG3Cy/lAZ2CYuy90960A7r7V3e8HhgNdMvuJBLNu3TqWLl3KU089BSRLtS1dupQ1a9YAsNdee9GvXz9+8pOfsGTJEp5//nkuuugi7rrrLo466qgGx8u2VNtNN93E0qVLufDCC7VUm5SttIYPcpvwchRwnbtn/VjT3f9jZrcBxwCn5GNwIq3R3FJt7dq14x//+AeTJk3iiCOO4N1336Vfv37MmjWLI444os6xtFSbxCrN4YPc4vcJoF0z+7TL7CcSTEuWavv0pz/N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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "plt.rcParams.update({'font.size': 20})\n", + "\n", + "plt.figure(figsize=(7,7))\n", + "x = 0 # the label locations\n", + "width = 0.17 # the width of the bars\n", + "multiplier = 0\n", + "\n", + "\n", + "for i in range(len(tasks_completed_df)):\n", + " offset = width * multiplier \n", + " name = tasks_completed_df.iloc[i].name\n", + " hatch_pattern = '/' if 'chat' in name else '' # Apply hatch pattern if 'chat' is in the label\n", + " measurement = tasks_completed_df.iloc[i]['mean']\n", + " stderr = tasks_completed_df.iloc[i]['se']\n", + " rects = plt.bar(x + offset , measurement, width - 0.02, label=name, color=colors[multiplier],hatch=hatch_pattern)\n", + " # add stderr\n", + " plt.errorbar(x + offset , measurement, stderr, fmt='none', ecolor='black', capsize=5, capthick=2)\n", + " # get percentage improvement in measurement over No LLM\n", + " improvement = (measurement - tasks_completed_df.loc['No LLM']['mean']) / tasks_completed_df.loc['No LLM']['mean'] * 100\n", + " # add text\n", + " # perform statistcal test\n", + "\n", + " sign = \"+\" if improvement >= 0 else \"-\"\n", + " if name != \"No LLM\":\n", + " plt.text(x + offset, measurement +0.5, f\"{sign}{abs(improvement):.0f}%\", ha='center', va='bottom', fontsize=14)\n", + " multiplier += 1\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "plt.ylabel('Tasks Completed')\n", + "plt.xlabel(\"Condition\")\n", + "# plt.legend(loc='bottom', ncols=3)\n", + "plt.ylim(0, 5.2)\n", + "plt.xticks([0], [''])\n", + "plt.yticks([0, 1, 2, 3, 4, 5])\n", + "\n", + "#plt.legend(loc='upper right', bbox_to_anchor=(0.5, -0.2),\n", + "# fancybox=True, shadow=True, ncol=1)\n", + "\n", + "plt.savefig(\"figures/tasks_completed_barplot.pdf\", format=\"pdf\", bbox_inches=\"tight\")\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "f25c3e59", + "metadata": {}, + "source": [ + "### 5.1" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "54614818", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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XpwyZsyYEzk5OSkN9X3mmWd6nThxos3lyvLly5M3bdrk9ULhbW4QAACfW/DXPanv7TycXFvbezsPJ+e8vye1ufsuKysLrFu37sL58+fvXrZsWTdJWrVqVdcbbrjhsuo+M2bMuGTevHmpP//5z3sePHjwvAkTJgwZN27cEEl65plnUoYMGTJi8ODB6bNnz+5X/ZilS5deNGLEiOFDhw4dMX78+CGS9OmnnyZMnDhx0JAhQ0ZkZGQMy8vLS5LCR54333zzgGuuuWZwv379Rr7wwgvJd999d9qQIUNGXHvttYMrKipMkvr16zdy9uzZ/UaOHDl85MiRwzdv3tz53NezZcuWztdee+3g9PT04ZmZmUPz8/PPf/3117u88cYbyQ8++GDasGHDRmzZsqVzbf2aOnaEKwC0Ybkb9veor/3l9fu7N3ffv//975Ovv/76slGjRlUkJydXrV69+oK6+j744IMHe/bsWfnuu+/uyMvL27F79+7zHnrooX7vvPPOjq1bt27Jz8/vkpOTk1xUVJQ4Z86cAbm5uQUff/zx1uXLlxdI0v333983IyPj1I4dO7Y+8sgjhTNnzhxYve89e/Z0fuuttz5ZunTpJ3fffffAr3zlK8d27Nix9fzzzw8tWbLk4up+F110UdVHH3207V/+5V8Ofv/73//C5eK++93vXvqrX/1q75YtW7Y99thj+2fPnn3J3//935+cOHFi6c9//vP927dv35qenl5RW7+mjh2fcwWANuzg8YrzGmjv1Nx9L1myJOWHP/zhQUmaMmXKkZycnJSsrKyyxjx29erVXa666qrjffv2DUrSbbfdduTdd9+9MCEhwV155ZXHhw0b9pkk9erVq0qSPvjgg64vv/zyJ5KUnZ19/K677kosKSlJkKSJEyeWde7c2V155ZXlVVVVdssttxyTpPT09PJdu3adeX0zZ848IkmzZs068uCDD54VrmVlZYH8/PwLb7311kHV2z777LMvXPi8sf0aQrgCQBvWs2vnykP1BGjPrp0/a85+i4uLE95///2LduzYkTRnzhxVVVWZmbnJkyeXhmqcKFU9LXsu52r/FJFzTmZffEht/c3MSVLnzp2dJCUkJCgxMdEFAuFJ10AgoGAweGZn1dtrPrZaVVWVunbtGty+ffvWul914/s1hGlhAGjDbh6Tdqi+9imZaYebs9+cnJxuN998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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def relabel(value):\n", + " \n", + " if value == 'autocomplete':\n", + " return \"Autocomplete\"\n", + " elif value == 'chat':\n", + " return \"Chat\"\n", + " else:\n", + " return \"No LLM\"\n", + "\n", + "df['interface_clean'] = df['interface'].apply(relabel)\n", + "\n", + "\n", + "sns.pointplot(x=\"zscore_n_tasks_completed\", y=\"model\", data=df, linestyles=\"\", hue=\"interface_clean\")\n", + "plt.ylabel(\"\")\n", + "plt.xlabel(r'$\\Delta$ in Num Tasks Completed')\n", + "plt.xlim(-2,2)\n", + "plt.tick_params(left = False , labelleft = False ) \n", + "plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "plt.savefig(\"n_tasks_completed_indiv.pdf\", format=\"pdf\", bbox_inches=\"tight\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a118dc35", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.pointplot(x=\"zscore_mean_task_duration\", y=\"model\", data=df, linestyles=\"\", hue=\"interface\", errorbar=\"se\")\n", + "plt.ylabel(\"\")\n", + "plt.xlabel(r'$\\Delta$ in Avg Task Duration')\n", + "#plt.xlim(-1, 1)\n", + "plt.xlim(-120,100)\n", + "plt.yticks([0, 1, 2,3,4,5,6], ['GPT-3.5-Turbo-Instruct', 'CodeLlama-34b', 'CodeLlama-7b', 'GPT-3.5-Turbo', 'CodeLlama-34b-Instruct', 'CodeLlama-7b-Instruct', 'No LLM'])\n", + "#plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "plt.legend([],[], frameon=False)\n", + "plt.savefig(\"mean_task_duration_indiv.pdf\", format=\"pdf\", bbox_inches=\"tight\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "2544fad1", + "metadata": {}, + "outputs": [ + { + "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", + "
zscore_mean_task_durationzscore_n_tasks_completed
model_size
gpt35-77.930.40
llama34-64.38-0.27
llama79.65-0.57
nomodel-0.00-0.00
\n", + "
" + ], + "text/plain": [ + " zscore_mean_task_duration zscore_n_tasks_completed\n", + "model_size \n", + "gpt35 -77.93 0.40\n", + "llama34 -64.38 -0.27\n", + "llama7 9.65 -0.57\n", + "nomodel -0.00 -0.00" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_temp = df[['model_size', 'zscore_mean_task_duration', 'zscore_n_tasks_completed']]\n", + "\n", + "df_temp.groupby(by=\"model_size\").mean().round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "f3bc0d0d", + "metadata": {}, + "outputs": [ + { + "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", + "
zscore_mean_task_durationzscore_n_tasks_completed
interface
autocomplete-59.35-0.11
chat-35.24-0.10
nomodel-0.00-0.00
\n", + "
" + ], + "text/plain": [ + " zscore_mean_task_duration zscore_n_tasks_completed\n", + "interface \n", + "autocomplete -59.35 -0.11\n", + "chat -35.24 -0.10\n", + "nomodel -0.00 -0.00" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_temp = df[['interface', 'zscore_mean_task_duration', 'zscore_n_tasks_completed']]\n", + "\n", + "df_temp.groupby(by=\"interface\").mean().round(2)" + ] + }, + { + "cell_type": "markdown", + "id": "22bef33d", + "metadata": {}, + "source": [ + "### 5.2" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "bf6f5f29", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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hF555ZUqIlqrVi09c+aMw/UMHjzYWs+CBQtKTF+wYIE1fciQIeWq6+WuOrW3bSc5ePDgctUDFdPe33//vU6dOlV37Nihubm5qlq0r7p7UKR/e646tTf923O+bu/58+fryJEj9cCBA07n+ec//2mVcdNNNzmdz9f9u1whaOvWrVahI0eOdDhPfn6+tmrVyjpgXbp0qczl3H777SoiGhAQoIcOHXI4zxdffGHVJTExscT0Y8eOaUBAgIqI9unTx2lZffr0sco6duxYmet6OatO7a3KTtJTFdXejpT1oEj/9lx1am9V+renKrO9i+vUqZN1xujkyZMlpldE/y7XjdGLFy+2fh4yZIjDefz9/eWRRx4REZEzZ87ImjVrylTGuXPnZOXKlSIi0rt3b2nUqJHD+e677z7racT//ve/S0xfsmSJ5Ofnu6yriMhf/vIXERHJz8+XJUuWlKmul7vq1N7wXEW0t7fQvz1XndobnqtK7d2rVy8RESkoKJDU1NQS0yuif5crBK1fv15ERCIiIqRjx45O5+vZs6f184YNG8pUxtatW+XixYsl1lNccHCw3HDDDdYyubm5Duta2no8qevlrjq1NzxXEe3tLfRvz1Wn9obnqlJ72/b5IoXBq7iK6N/lCkE///yziIg0a9ZMAgMDnc7XsmXLEsuUtYzi63FVTl5envz2228O1xMVFSUNGjRwuo6YmBjrDENZ63q5q07tbW/dunXStm1biYiIkPDwcElISJAHHnhAFi9eLMoj85yqiPb2Fvq356pTe9ujf5dPVWrvtWvXiohIYGCgNGvWrMT0iujfZQ5BOTk5cvLkSRERp5csbGrVqiUREREiInLo0KEylWM/f2nlxMXFOVzO/vfS1mG/nrLW9XJW3drbXmpqqqSkpMiFCxckOztb0tLSZMGCBXLvvfdK9+7d5ciRI2Wqowkqqr29hf7tmerW3vbo32VXldp72bJlsmfPHhER6dOnjxVi7FVE/3YeA53Iysqyfq5Ro0ap80dERMj58+fl3LlzPivH1lAiUqIc23rcraujdZisurW3SOEls7vvvltuvfVWadOmjURFRUlGRoYkJSXJRx99JIcOHZKNGzdK7969JSkpSaKiospU18tZRbW3t9C/PVPd2luE/u2JqtLep0+flieffFJERAICAuStt95yOF9F9O8yh6CcnBzr5+Dg4FLnDwkJERGR7Oxsn5VjK8NRObb1+LKul7Pq1t4ihfcKRUdHl/h7r169ZNSoUXL//ffL8uXL5eeff5Zx48bJ+++/X6a6Xs4qqr29hf7tmerW3iL0b09UhfbOz8+XQYMGyYEDB0RE5LXXXpMOHTo4nLci+neZL4eFhoZaP1+6dKnU+W03PoWFhfmsHPubq4qXY1uPL+t6Oatu7S0iDneQNjVr1pQFCxZInTp1RETk448/duv/MkVFtbe30L89U93aW4T+7Ymq0N5PPPGEfP/99yIicscdd8jf/vY3p/NWRP8ucwiqWbOm9bM7p53Onz8vIu6dzipvObYyHJVjW48v63o5q27t7Y6oqCgZOHCgta7t27eXeR2Xq4pqb2+hf3umurW3O+jfzlV2e48ZM0Y+/vhjERHp1q2bfPnllxIQEOB0/oro3+U6E3TFFVeIiMjhw4ddznvmzBmrYvY3s7rD/kao0sqxvxGqeDm29ZS2Dvv1lLWul7Pq1t7uat26tfUzN1D+V0W1t7fQvz1T3drbXfRvxyqzvf/+97/L22+/LSIi1157rSxdurTUszYV0b/L9RX5Vq1aiYjI77//Lnl5eU7n++WXX0os4y77jdh+Pa7KcfQ1O9t6zp49K8eOHXO6jvT0dMnMzCxXXS931am93cVXaJ2riPb2Fvq356pTe7uL/u1cZbT3lClT5OWXX7bW9cMPP7h1w3pF9O9yhaBu3bqJSOHppx07djidzzYGgIjIjTfeWKYyrrvuOutmKPv1FHfp0iXZvHlziWWK17W09XhS18tddWpvd+3du9f6OTY2tlzruFxVRHt7C/3bc9Wpvd1F/3auott7zpw5MmrUKBERadKkiaxYscI6G+VuXYvXpziP6lqmh2z8ny1btpTp2SPR0dHlevZI3759rYe8ufMsqXfeeafE9PT0dPX393f72SP+/v6anp5e5rpezqpTe7sjIyND69SpYz3BOCcnp1zruVxVVHs7UtZnSdG/PVed2tsd9G/XKrK9Fy5caD37q1GjRmVu44ro3+V+inz37t3dfgrt2LFjS0yfOXOmy+mqqitXrrTmufvuu10+VTw6OlpPnz7tcD0PP/ywtZ4vv/yyxHT7p9DyUD7Hqkt7f/fdd3rhwgWn/0dmZqbeeuutVjlPPfWU63/cUBXR3o6U56BI//ZcdWlv+rd3VER7//DDDxocHKwiovXq1dNffvmlXHX1df8udwjauXOnhoWFqYhojRo1dOLEiZqUlKSrVq3SESNGWJVq0aKFZmZmllje3U4zcOBAa74//elP+vXXX+u2bdv0008/1aZNm1rTpk6d6nQdBw8e1Lp161qN/tJLL+n69et1/fr1+tJLL2lgYKCKiNatW9fpGQjTVZf27tmzp9auXVuHDRums2bN0vXr12tycrKuXr1aJ06cqHFxcdY6rrrqKj116pS33qLLSkW0d1ZWls6cObPI68Ybb7SWe/fdd4tMS05Odrge+rfnqkt707+9w9ftnZSUpOHh4SoiGhQUpJ9//rmmpKS4fJ05c8ZhXX3dv8sdglRVlyxZopGRkdabUfzVokUL/e233xwu6+5B8cKFC3r77bc7LcPf39+tTx6bN2/WBg0aOF1PgwYNdPPmzeV8J8xQHdq7Z8+eTpe1f/Xo0UMPHz7s4TtyefN1e6emprrVVu5sN/Rvz1WH9qZ/e48v23vs2LFlamsR0ZkzZzqtqy/7d5lHjLZ31113yZ49e+Qf//iHLFu2TA4fPizBwcHSrFkz6d+/v4waNUrCw8M9KULCwsJk2bJlMm/ePJk1a5bs3r1bMjIypH79+tK9e3cZNWqUdOnSpdT1dO7cWVJSUuQf//iHLF68WNLS0kREJCEhQe655x559tlnrQG24Fh1aO/ExERZuXKlJCUlya+//ionT56UjIwMCQ8Pl9jYWOncubM8+OCDcuutt4qfn59Hdb3cVUR7ewv923PVob3p395THdrbxpf920+V7xICAADzlOsr8gAAANUdIQgAABiJEAQAAIxECAIAAEYiBAEAACMRggAAgJEIQQAAwEiEIAAAYCRCEAAAMBIhCAAAGIkQBAAAjEQIQqVLS0sTPz8/8fPzk1mzZlV2dYDLWnx8vPj5+clf/vKXyq4K4Bbb8eGNN97w+rorJARt2LDB+if8/Pxk3bp1FVEscFk4d+6cjBkzRhISEiQkJEQaNWokTz75pJw8ebLUZUePHi1+fn7yyCOPeLVOycnJMmrUKGnfvr1ER0dLcHCw1K9fX6655hq544475O2335akpCTJzc31arlAaYYNG2Yda5o2bVrZ1UFVpxVg+PDhKiLWa+jQoRVRrKVnz54qItqzZ88KLRfuSU1NtbaNmTNn+qSM1atXW2WsXr3aJ2X4Qk5Ojnbu3LlI/7G9mjVrpidPnnS67N69ezUoKEgjIyM1PT3dK/XJy8vTJ598Uv38/BzWqfjro48+8kq5cK0s+7jGjRuriOjgwYN9Xq+Klp2drVFRUUW2wfXr11d2taoN23s2duzYyq5KEb6sl8/PBF28eFG+/PJLERGpUaOGiIh8+eWXkp2d7euigWovMTFRtmzZIkFBQTJx4kTZtGmTTJkyRWrWrCm///67jBkzxumyo0aNktzcXHnzzTelQYMGXqnP008/LZMnTxZVlZiYGHnjjTdk+fLlkpycLJs2bZJ58+bJU089JVdeeaVXyoP3paWliapelpeeFy9eLGfPnhURkYiICBER+eyzzyqzSqjifB6Cvv76a8nIyBARkX/84x8iIpKZmSlff/21r4sGqr2ZM2eKiMi4ceNkzJgx0qVLF3n88cdl2rRpIiIyd+5ch5ec5s+fL6tWrZJrrrlGnnzySa/U5T//+Y989NFHIiLSvn172bt3r4wdO1Z69+4t7du3ly5dusiDDz4o//znP+XAgQOyfPlyueaaa7xSNuAOW+Bp166dDB06VEREFixYIDk5OZVZLVRhPg9Bs2fPFhGR1q1by6OPPiqtW7cWEdI5UJqsrCzZt2+fiIg8+OCDRab1799fAgMDJTs7W3799dci086dOycvvPCCiIhMnjxZAgMDvVKfJUuWSOGZaZHx48dLdHS0y/l79+4tN954o1fKBkpz7NgxWb58uYiIDBo0SAYNGiQiImfPnpUlS5ZUZtVQlXn9ApudP/74QwMDA1VEdOLEiaqqOmHCBBURDQgI0GPHjrlcfvDgwSoi2rhxY5fzzZw507pmmJqaWmJ5Vy9n696zZ48OHz5cmzVrpmFhYVqjRg1t3bq1Pvvss0XKcOX48eM6btw47dq1q9atW1eDg4O1UaNG2rVrVx03bpz+8ssvTpdNTU3VZ599Vlu3bq01atTQsLAwbdasmY4YMUL37Nnjslwpdv101apVes8992hMTIyGhoZqy5Yt9c0339Rz584VWW7ZsmXat29fa75WrVrpxIkT9eLFi07LKn5/wdatW3XgwIHaqFEjDQkJ0UaNGungwYN17969Lv9XW51Luydoy5YtOmzYMG3evLlGRERoeHi4XnXVVfrEE0/o//7v/7pct6uXs3LLWp43HTp0yKpfTk5Oien169dXEdENGzYU+fvzzz+vIqIPPfSQV+szcuRIqz6utt3SjB071lqPK+7ex7V792596KGHNDY2VkNCQjQuLk4HDRqkO3bsUFX39iMFBQU6a9Ys7d69u0ZHR2tERIS2adNGx40bp2fPnlVV9+9L8GSbOXPmjI4fP15vuOEGjY6O1sDAQL3iiiu0VatW+uc//1mnTJmif/zxhzV/efZx7t4TtGTJEu3Xr582bNhQg4ODtXbt2nrDDTfopEmTNCsry+lyxffH+fn5Om3aNO3SpYtGR0dreHi4XnPNNTp+/Hg9f/68yzqURWJiooqI+vv76+HDh1VVtUWLFioiescdd7i9npSUFB01apS2adNGo6OjNSwsTJs2bap9+vTRKVOm6PHjx50u68k+Pzc3Vz/55BNrHxwcHKx16tTR7t276wcffKDZ2dlOly1+T9gvv/yiw4cP1/j4eA0JCdEGDRro/fffr5s2bXK4vG2bcPVytr0cOnRIX375Ze3QoYNGR0dbfXDAgAG6atUqp3W2N3fuXO3Zs6fV966++mp9/fXX9cyZM6rq23uCfBqC3n//fRUR9fPz0wMHDqiqalpamnVT5Xvvvedy+coKQRMnTlR/f3+ny4SEhOjs2bNd1mnu3LkaERFRrgA2e/ZsDQkJcbpcQECAFSodsd9gJk2a5PQm1q5du2pWVpYWFBToM88847S82267TfPy8hyWZb9DnTFjhhV6Hb1n8+fPd7gOd0JQbm6uPv744y7fz6CgIP3444+drrssIai85dmz3/7KczN2ZmamtXxaWlqJ+tne65SUFOvv//nPf7x+M7TNU089ZdVn0aJF5V6PN0PQrFmzNCgoyGn7zJo1q9T9yMWLF/XOO+902s7NmzfXtLS0UnfEnm4ze/fu1djY2FK31Q8//NBaxhchKDs7W++9916X64yNjdXk5GSHy9vvj3/66Se96aabnK7n+uuvL/FhrLzatm2rIqI33XST9bdx48apiGhgYGCR8OhIXl6ePvfccy73/a7eN0/2+b///ru2bt3a5bLNmzd3GqLtQ9C3337rtB7+/v4Oj7vlDUGffPKJhoWFuVxu6NChmpub67Deubm52q9fP6fLNm3aVPfv319q3/OET0NQu3btVES0R48eRf7evXt3FRFt166dy+U9DUGHDx/WlJQU7dSpk4qIdurUSVNSUoq8fv311yLrmjx5srWuunXramJioiYlJemGDRv0jTfesDYuPz8/XbZsmcP6zJ4921pHaGioPvXUU/rtt9/qzp07dd26dfqvf/1L+/Tpo02aNCmx7NKlS63QUqNGDR07dqyuX79ek5KS9L333tMrrrjCWveUKVMclm+/gxER7dKli86bN0+3b9+u33//vfbt29ea59VXX9X33ntPRUT79u2rCxcu1B07dujXX3+tN9xwgzWfs2/52DpPu3btNCgoSGNjY/XDDz/ULVu26Nq1a/Wll16yAl1gYKBu2bKlxDrcCUGPPPKINU/fvn117ty5unXrVt22bZtOnz5dr776amv6kiVLrOUuXbqkKSkp+umnn1rTP/300xLbge0Th6fl2fM0BKmqJiQkqIjou+++W+TvX3zxhbV92Z+p69Wrl4qIfvDBB+UqzxX797BFixZunxEtzlshaP369dYBKywsTF955RVdt26dbtmyRSdPnqyNGjXS4OBg7dChg8v9yIgRI6xyWrdurZ9++qlu27ZNV65cqaNGjdKAgIAifcHZjtjTbaZjx44qUhiUnnjiCf3mm29027ZtumXLFl20aJGOGTNGW7RoUSQElWcfV1oIGjBggFXPdu3a6Weffabbtm3TH374QYcMGWLtn2rXrm2dcbFnvz/u2rWr+vv76+DBg3XZsmW6Y8cOXbRokXbp0sWa5+WXX3ZYj7LYtWtXkf5ts2/fPuvvpfWJRx991Jo3JiZGJ0yYoKtXr9adO3fqDz/8oG+99Za2a9fO4fvmyT7/6NGj1lndmjVr6vPPP6/fffed7ty5U1evXq1jxozR8PBwFRFt0qSJZmRklFiHLQQ1b95co6OjNSoqSidOnKibNm3STZs26YQJEzQyMtKq48KFC4ss/+uvv2pKSoo1/fHHHy+xHRVv6xkzZljzt2nTRj/88EPdsGGD7ty5UxcuXKi33367Nf2vf/2rw/d81KhR1jxXXXWVzpgxQ7dt26YrVqzQkSNHqr+/v1533XXVMwTt2bPHqnjxTz7Tpk2zprm6tONpCLJx9+ujx48ftza22NhYPXjwYIl5du7caQWhhg0b6qVLl4pMP3LkiLWOevXqFfmUXtyhQ4eK/H7p0iVt2LChFYAcfdJKS0vTmJgYFRENDw/XEydOlJjHPkn369evxFmcvLw8a6des2ZNDQ0N1WeffbbEes6fP2/tMNu2bevwf7D/BNG4cWOHZx9WrVplnbXo1KlTiemlhaCvvvrKmj59+nSH9cjOzrY+ccbHx5f45FGWr8h7ozxV74SgN954Q0UKz6S98847mpSUpFOnTrW+BjxkyBBr3s8//1xFRK+55hqnn7w8kZWVpQ0aNLD+p8DAQO3bt6/+/e9/1zVr1rj9id5bIcj2ISs4OFg3btxYYvoff/yhTZo0KbJ9Frdjxw7roH799dc7vDzz5ZdfFulTjnbEnm4z9gdr+5BTXEFBgZ4+fbrE3731FfmlS5da9bj55psdXgr/+OOPrXkGDBhQYrr9/lhEdM6cOSXmycnJ0TZt2qiIaJ06dTzeXp977jkrgNguX9rYAleHDh2cLr948WKrvl26dCnxoche8f22J/t8VbXOQsbFxem+ffscLmd/3HnttddKTLe1v4hoVFSUw9sPfvrpJysIxcbGOmxbd8PGwYMHrf958ODBTtvvlVdeUZHCM1DFw/ju3butDzHXXnutw0us9uGy2oUg230JISEhJTaoM2fOWGcHnn/+eafrqOgQ9Pe//91azxdffOF0vvHjx1vzLViwoMi0l19+2ZpW1ksG//M//2MtO2nSJKfzzZ0715rvnXfeKTHdNi08PFxPnTrlcB3271lcXFyJMGfz+uuvW/M5+gRiH4K++uorp3W2v0ywdevWItNKC0G2T8j33nuv0/WrFl5OsK3nxx9/LDKtLCHIG+WpeicEXbhwwTqTUfwVHx9vneLPzMy0wvHatWvLVZY7tmzZovXq1XNYn8DAQL3uuuv0zTffdHiGwMYbISgpKcma9txzzzldx9dff+0yBNnf57R7926n67G/PORoR+zpNrNx40a36uGMt0KQ7SxxUFCQww+BNrfccovV5kePHi0yzX7fct999zldx9SpUz36n23y8vKscO4olNmf3XcWUGwfCsPDw11uu454ss+3P/vy9ddfu5x39OjRVoApzj4EJSYmOl2H/TGu+LFL1f0QZDu+x8bGurxXKTc31/pg/+qrrxaZZn9M2L59u9N12F+5qDbjBOXn58u8efNEROSOO+4o8S2S6Ohouf3220VEZN68eZKfn++LapTZihUrRKSwfv369XM637Bhw0osY7Ns2TIREUlISJB77rmnXOX7+fnJo48+6nS+/v37S1RUlMPy7fXu3Vtq167tcFrbtm2tn++77z4JCgpyOF+7du2sn1NTU52WVatWLZf/r/3/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "\n", + "sns.pointplot(x=\"sugg_accept_rate\", y=\"model_size\", data=df.query(\"interface == 'autocomplete'\"), linestyles=\"\", errorbar=\"se\")\n", + "plt.ylabel(\"\")\n", + "#plt.xlabel(\"Mean Task Duration\")\n", + "plt.xlabel(r'Autocomplete: % Suggestion Accepted')\n", + "plt.xlim(0,0.2)\n", + "#plt.yticks([0,1,2], ['GPT-3.5', 'CodeLlama-34b', 'CodeLlama-7b'])\n", + "plt.tick_params(left = False , labelleft = False ) \n", + "plt.savefig(\"num_sugg_accepted.pdf\", format=\"pdf\", bbox_inches=\"tight\")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "88a90b58", + "metadata": {}, + "outputs": [ + { + "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", + "
sugg_accept_rate
model
autocomplete_gpt350.15
autocomplete_llama340.05
autocomplete_llama70.09
chat_gpt35NaN
chat_llama34NaN
chat_llama7NaN
nomodelNaN
\n", + "
" + ], + "text/plain": [ + " sugg_accept_rate\n", + "model \n", + "autocomplete_gpt35 0.15\n", + "autocomplete_llama34 0.05\n", + "autocomplete_llama7 0.09\n", + "chat_gpt35 NaN\n", + "chat_llama34 NaN\n", + "chat_llama7 NaN\n", + "nomodel NaN" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_temp = df[['model', 'sugg_accept_rate']]\n", + "\n", + "df_temp.groupby(by=\"model\").mean().round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "4de7be27", + "metadata": {}, + "outputs": [ + { + "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", + "
sugg_accept_rate_requestedsugg_accept_rate_non_requested
model
autocomplete_gpt350.360.13
autocomplete_llama340.340.03
autocomplete_llama70.250.08
chat_gpt35NaNNaN
chat_llama34NaNNaN
chat_llama7NaNNaN
nomodelNaNNaN
\n", + "
" + ], + "text/plain": [ + " sugg_accept_rate_requested \\\n", + "model \n", + "autocomplete_gpt35 0.36 \n", + "autocomplete_llama34 0.34 \n", + "autocomplete_llama7 0.25 \n", + "chat_gpt35 NaN \n", + "chat_llama34 NaN \n", + "chat_llama7 NaN \n", + "nomodel NaN \n", + "\n", + " sugg_accept_rate_non_requested \n", + "model \n", + "autocomplete_gpt35 0.13 \n", + "autocomplete_llama34 0.03 \n", + "autocomplete_llama7 0.08 \n", + "chat_gpt35 NaN \n", + "chat_llama34 NaN \n", + "chat_llama7 NaN \n", + "nomodel NaN " + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_temp = df[['model', 'sugg_accept_rate_requested', 'sugg_accept_rate_non_requested']]\n", + "\n", + "df_temp.groupby(by=\"model\").mean().round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "f9e794c7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAv4AAAHMCAYAAACtP6yCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgBklEQVR4nO3dd3gU1eL/8U9COiEJhN5RihARErp0RFAUuYgKCtIUaV7FhqIIihexoCgCgkgTRPCilyKKtASQDqEjRQWR3pNQ087vD76ZX0J2N73AvF/Ps8+z2Tlzzpk9u9nPzp6ZcTPGGAEAAAC4rbnndQcAAAAA5DyCPwAAAGADBH8AAADABgj+AAAAgA0Q/AEAAAAbIPgDAAAANkDwBwAAAGzAI687ACBjEhMTdfz4cRUqVEhubm553R0AAJAOxhjFxMSodOnScnfPm33vBH/gFnP8+HGVK1cur7sBAAAy4Z9//lHZsmXzpG2CP3CLKVSokKQb/zgCAgLyuDcAACA9oqOjVa5cOetzPC8Q/IFbTNL0noCAAII/AAC3mLycpsvBvQAAAIANEPwBAAAAGyD4AwAAADZA8AcAAABsgOAPAAAA2ADBHwAAALABgj8AAABgAwR/AAAAwAYI/gAAAIANEPwBAAAAGyD4AwAAADZA8AcAAABsgOAPAAAA2ADBHwAAALABgj8AAABgAwR/AAAAwAYI/gAAAIANEPwBAAAAGyD4AwAAADZA8AcAAABsgOAPAAAA2ADBHwAAALABgj8AAABgAwR/AAAAwAYI/gAAAIANEPwBAAAAGyD4AwAAADZA8AcAAABsgOAPAAAA2ADBHwAAALABgj8AAABgAwR/AAAAwAYI/gAAAIANEPwBAAAAGyD4AwAAADZA8AcAAABsgOAPAAAA2ADBHwAAALABgj8AAABgAwR/AAAAwAYI/gAAAIANEPwBAAAAGyD4AwAAADZA8AcAAABsgOAPAAAA2ADBHwAAALABgj8AAABgAwR/AAAAwAYI/gAAAIANEPwBAAAAGyD421xiYqLmz5+v/v37q1atWipRooS8vLwUEBCgO+64Qx06dNAHH3ygAwcOOK2jRYsWcnNzS3UrUKCAChcurNDQUP373//Wrl270rVeRm7Tp09P13b+/fffmjx5svr06aP69eurQoUK8vPzk6+vr8qVK6dHHnlEM2fOVFxcXFaezgxvFwAAQG7xyOsOIO/8/PPPeuWVV7Rv375Uy+Li4hQTE6NDhw5p4cKFGjJkiJo3b673339f9957b7rqT0xM1MWLF7V9+3Zt375dEyZM0NChQ/Xuu+9m96akafLkyRo5cqTDZUePHtXRo0e1aNEiffzxx1qwYIEqVaqUyz0EAADIWQR/m/rwww81ZMgQGWMkSY0bN1b79u0VGhqq4OBgXbt2TadOndLatWu1ePFi7d+/X6tWrdKIESO0ZMkSp/Um36ufmJioEydOaOHChZo0aZISEhI0YsQIlSpVSv369dO0adN0+fJlh/VMmDBBX375pSRp6tSpqlevnsNyZcuWTdf2uru7q1atWmrSpIlq166tUqVKqUSJEoqJidGff/6padOmad26ddq1a5fuv/9+7dy5U35+fumq25m6detq2rRpWaoDAPKrC5djtfHQOV26nqBgfy81uiNYPp4F8rpbAFxwM0nJD7bxzTffqEePHpKkokWL6ttvv1WbNm2cljfGaNGiRRoyZIjKlSuXKvi3aNFCq1atsso68uOPP6pTp06SpOLFi+v48eMqUMD5B8Q777xj/TIQHh6uFi1apHv7HImPj5eHh+vvuYMGDdLnn38uSRo7dqz+/e9/Z6qtpOejefPmioiIyFQdrkRHRyswMFBRUVEKCAjI9voBwJXTMdf08ZL9WrjjuK7HJ1qPF/bz1FMNyuvfrarwBQBwID98fjPH32aOHTumfv36SZIKFiyo1atXuwz9kuTm5qZHHnlEW7du1TPPPJOpdh999FE1btxYknT69GlFRkZmqp7MSiv0S9KQIUOs+6tXr87J7gDALen4xat6dMI6/Xfr0RShX5IuXInT+PA/1WPqJl2LS8ijHgJwheBvM59++qmuXr0qSfrPf/6j6tWrp3tdHx8fPf7445luu2HDhtb9v//+O9P15JSCBQta969du5aHPQGA/McYo4GzI3X0wlWX5TYeOq9RP/+eS70CkBEEfxsxxuibb76RJPn7+2d6731mJd/rnpCQ//YGfffdd9b9u+66Kw97AgD5T+SRC9p25GK6ys7d8o+irmT9LGkAshcH99rInj17dPbsWUlS06ZNVahQoVxtf+fOndb90qVL52rbzly4cEGHDx/WzJkzNW7cOEmSl5eXNR0qK/bt26d69epp3759iouLU9GiRVWnTh116tRJTz75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ar2lS5dac8Xr16+f6mwr/fv3l3TjLEF9+/ZNMV8/yahRo7Rr1y6nffPx8dGrr74q6ca0oy5durg8Y1FMTIy1/bmhWLFi1hl05syZk+J0mEk2b96soUOH5lqf0pL0a86iRYscTuf5888/NWDAgBxpe8mSJdZUnCeffFKenhn/IFi4cKG+//77VI9funRJzz33nKQbBzendUVoAACA7JAnc/yT9OrVS0ePHtWwYcN0+vRp6yq7HTp0UPXq1RUUFKTz58/rwIEDWrx4sZYsWaKEhIQUBwfXrFlTr7zyij7++GPt2rVLYWFhev311xUaGqorV65o0aJFGjt2rBISEuTl5aVJkyal6kf79u3Vvn176wq+jRs31ksvvaQqVaro9OnTmj59uubOnat69eq5nL4xePBgrVixQitWrNAvv/yiGjVqqF+/fmrUqJGCgoIUExOj/fv3KyIiQvPnz5ePj4+ef/55p/Vt375d06dPT/N5bNKkSZrXAnB3d1fXrl01fvx4bd++XU2bNtVLL72kypUrKyoqSj///LMmTJggf39/lS5dWgcOHEiz3ZzWvXt3vfbaazp27JjuvfdeDR48WCEhIbp27ZpWrlypzz77TNevX1dYWFi2T/dJPs2nR48emaqjbt26euqpp7Rq1So99thjCggI0M6dO/Xhhx9a06kGDhyY4poHAAAAOcbkAz/88IOpWLGikZTmLSQkxPz6668p1k9ISDADBgxwuV5gYGCq9ZKLjo42jRs3drp+WFiYiYyMtP6eNm2aw3quXLliunfvnq5tqVSpUqr1w8PD07Vu8lvyvlSoUMFIMj169EhV98WLF03t2rWd1lOkSBGzatUq07x5cyPJNG/e3GX/wsPDnT6f06ZNs8odOnTIabnhw4db5W4WGxtr2rRp47S/vr6+5vvvvzc9evQwkkyFChWctpMRFy9eND4+PkaSqVGjRobWTb49f/31l6lUqZLT/nfq1MnExcVluH9RUVFGkomKisrwugAAIG/kh8/vPJvqk9yjjz6q/fv369tvv1W3bt1UrVo1FS5cWB4eHipSpIjCwsI0YMAArVixQrt27VKbNm1SrO/u7q7x48dr9erV6tq1q8qXLy9vb28FBASodu3aevPNN3Xw4MFU6yVXqFAhRURE6IsvvlC9evXk7++vQoUKqXbt2ho1apTWrl2brjOv+Pr6asaM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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#n_user_message\n", + "#n_copy_code_button\n", + "#n_copy_from_chat\n", + "\n", + "sns.pointplot(x=\"avg_copy_per_response\", y=\"model_size\", data=df.query(\"interface == 'chat'\"), linestyles=\"\", errorbar=\"se\")\n", + "plt.ylabel(\"\")\n", + "#plt.xlabel(\"Mean Task Duration\")\n", + "plt.xlabel(r'Chat: % Code Copied')\n", + "plt.xlim(0,0.5)\n", + "plt.yticks([0,1,2], ['GPT-3.5', 'CodeLlama-34b', 'CodeLlama-7b'])\n", + "plt.savefig(\"num_code_copied.pdf\", format=\"pdf\", bbox_inches=\"tight\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "a980a733", + "metadata": {}, + "outputs": [ + { + "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", + "
avg_copy_per_response
model
autocomplete_gpt35NaN
autocomplete_llama34NaN
autocomplete_llama7NaN
chat_gpt350.29
chat_llama340.27
chat_llama70.35
nomodelNaN
\n", + "
" + ], + "text/plain": [ + " avg_copy_per_response\n", + "model \n", + "autocomplete_gpt35 NaN\n", + "autocomplete_llama34 NaN\n", + "autocomplete_llama7 NaN\n", + "chat_gpt35 0.29\n", + "chat_llama34 0.27\n", + "chat_llama7 0.35\n", + "nomodel NaN" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_temp = df[['model', 'avg_copy_per_response']]\n", + "\n", + "df_temp.groupby(by=\"model\").mean().round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "6fd5aa6f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7t1b6enpWrp0qebOnatDhw5pwIAB2rZtm/z9/Z1ZN6rIyZMnJUmhoaEaPny4evTooSZNmig3N1dbtmzR9OnTdfLkSS1evFg5OTlasmSJiyuGs+Xl5Wns2LHKyclRSEiIkpKSXF0SnGzRokW6//77lZeXp5CQEMXExKh79+4KDg7WH3/8oaNHj2rVqlXy9PR0damooJycnELhp3379nryySfVsmVLpaWladOmTZo+fbouXryoGTNmqGHDhvrb3/7m4qoBwMmMcurVq5chyfDw8DA2b95cZP9rr71mSDIkGZMnTy7vNHCxAQMGGJ9++qmRk5NT7P7Tp08b4eHh9vf6+++/r+IKUdlmzJhhSDJatWplTJgwwf5er1+/3tWlwQn2799veHt7G5KMHj16GMnJySW2zczMrMLKUBmWL19u/z/ctWvXYn+2b9++3fD09DQkGXXr1jWys7NdUCkAVJ5yXQO0bds2+/n/DzzwgLp27VqkzVNPPaWIiAhJ0ltvvaXs7OzyTAUX+/LLLzVixAi5u7sXu79evXqaPn26/d/Lly+vqtJQBY4fP66///3vkqRZs2ZximMt9OijjyozM1P16tXTv//9b1mt1hLb8v7XfD/88IN9e8KECcX+bO/UqZMGDhwoSTp//rwOHjxYZfUBQFUoVwAqeA74/fffX/zAbm667777JOX/AOWC6dqr4HUgR48edV0hcLqHH35YFy5cUHR0NNf71EIHDx7Ud999J0n661//qnr16rm4IlS2rKws+7aj63OvvfZa+3ZmZmal1gQAVa1cAci26pefn586depUYruePXvatzdt2lSeqVADFPxAdXNjZfXa4rPPPtOXX36p4OBgvf76664uB5Vg2bJl9u3hw4fbt8+fP69ff/3V4YIIqJnCw8Pt27/99luJ7Wx/zLJYLGrRokWl1wUAValcv60eOHBAknTdddfJw6PkdRRatWpVpA9qn9jYWPt2wfccNVdycrLGjx8vSZo2bZrq16/v4opQGWxLHVutVkVEROjjjz9Whw4dFBwcrPDwcNWrV0/XXHONJk+erAsXLri4WjjDyJEjFRgYKCn//3Zubm6RNrt27dLq1aslSXfffbe9PQDUFmUOQBkZGTpz5owkqXHjxg7b1q1bV35+fpLyryVA7ZOXl6dXX33V/u8RI0a4sBo4yzPPPKM//vhD3bp10wMP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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def relabel(value):\n", + " \n", + " if value == 'autocomplete':\n", + " return \"Autocomplete\"\n", + " elif value == 'chat':\n", + " return \"Chat\"\n", + " else:\n", + " return \"No AI\"\n", + "\n", + "df['interface_clean'] = df['interface'].apply(relabel)\n", + "\n", + "\n", + "sns.pointplot(x=\"aihelpful\", y=\"model_size\", data=df.query(\"interface != 'nomodel'\"), linestyles=\"\", hue=\"interface_clean\", errorbar=\"se\")\n", + "plt.ylabel(\"\")\n", + "plt.xlim(0,8)\n", + "plt.xlabel(r'AI Helpfulness($\\uparrow$)')\n", + "#plt.yticks([0, 1, 2], ['GPT-3.5', 'CodeLlama-34b', 'CodeLlama-7b'])\n", + "plt.tick_params(left = False , labelleft = False ) \n", + "plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "plt.savefig(\"ai_helpful.pdf\", format=\"pdf\", bbox_inches=\"tight\")" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "df73cb1c", + "metadata": {}, + "outputs": [ + { + "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", + "
aihelpful
model_size
gpt355.09
llama343.30
llama74.19
nomodel1.00
\n", + "
" + ], + "text/plain": [ + " aihelpful\n", + "model_size \n", + "gpt35 5.09\n", + "llama34 3.30\n", + "llama7 4.19\n", + "nomodel 1.00" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_temp = df[['model_size', 'aihelpful']]\n", + "\n", + "df_temp.groupby(by=\"model_size\").mean().round(2)" + ] + }, + { + "cell_type": "markdown", + "id": "dc9b65e2", + "metadata": {}, + "source": [ + "### Stat tests" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "d020f94f", + "metadata": {}, + "outputs": [ + { + "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", + "
OLS Regression Results
Dep. Variable: zscore_n_tasks_completed R-squared: 0.051
Model: OLS Adj. R-squared: 0.037
Method: Least Squares F-statistic: 3.749
Date: Fri, 16 Feb 2024 Prob (F-statistic): 0.0118
Time: 02:52:20 Log-Likelihood: -411.59
No. Observations: 215 AIC: 831.2
Df Residuals: 211 BIC: 844.7
Df Model: 3
Covariance Type: nonrobust
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
coef std err t P>|t| [0.025 0.975]
Intercept -7.633e-17 0.265 -2.88e-16 1.000 -0.523 0.523
C(model_size, Treatment(reference='nomodel'))[T.gpt35] 0.3997 0.333 1.201 0.231 -0.256 1.056
C(model_size, Treatment(reference='nomodel'))[T.llama34] -0.2735 0.348 -0.786 0.433 -0.960 0.413
C(model_size, Treatment(reference='nomodel'))[T.llama7] -0.5698 0.348 -1.637 0.103 -1.256 0.116
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
Omnibus: 9.925 Durbin-Watson: 1.991
Prob(Omnibus): 0.007 Jarque-Bera (JB): 10.577
Skew: 0.534 Prob(JB): 0.00505
Kurtosis: 2.799 Cond. No. 5.55


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/latex": [ + "\\begin{center}\n", + "\\begin{tabular}{lclc}\n", + "\\toprule\n", + "\\textbf{Dep. Variable:} & zscore\\_n\\_tasks\\_completed & \\textbf{ R-squared: } & 0.051 \\\\\n", + "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.037 \\\\\n", + "\\textbf{Method:} & Least Squares & \\textbf{ F-statistic: } & 3.749 \\\\\n", + "\\textbf{Date:} & Fri, 16 Feb 2024 & \\textbf{ Prob (F-statistic):} & 0.0118 \\\\\n", + "\\textbf{Time:} & 02:52:20 & \\textbf{ Log-Likelihood: } & -411.59 \\\\\n", + "\\textbf{No. Observations:} & 215 & \\textbf{ AIC: } & 831.2 \\\\\n", + "\\textbf{Df Residuals:} & 211 & \\textbf{ BIC: } & 844.7 \\\\\n", + "\\textbf{Df Model:} & 3 & \\textbf{ } & \\\\\n", + "\\textbf{Covariance Type:} & nonrobust & \\textbf{ } & \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lcccccc}\n", + " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", + "\\midrule\n", + "\\textbf{Intercept} & -7.633e-17 & 0.265 & -2.88e-16 & 1.000 & -0.523 & 0.523 \\\\\n", + "\\textbf{C(model\\_size, Treatment(reference='nomodel'))[T.gpt35]} & 0.3997 & 0.333 & 1.201 & 0.231 & -0.256 & 1.056 \\\\\n", + "\\textbf{C(model\\_size, Treatment(reference='nomodel'))[T.llama34]} & -0.2735 & 0.348 & -0.786 & 0.433 & -0.960 & 0.413 \\\\\n", + "\\textbf{C(model\\_size, Treatment(reference='nomodel'))[T.llama7]} & -0.5698 & 0.348 & -1.637 & 0.103 & -1.256 & 0.116 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lclc}\n", + "\\textbf{Omnibus:} & 9.925 & \\textbf{ Durbin-Watson: } & 1.991 \\\\\n", + "\\textbf{Prob(Omnibus):} & 0.007 & \\textbf{ Jarque-Bera (JB): } & 10.577 \\\\\n", + "\\textbf{Skew:} & 0.534 & \\textbf{ Prob(JB): } & 0.00505 \\\\\n", + "\\textbf{Kurtosis:} & 2.799 & \\textbf{ Cond. No. } & 5.55 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "%\\caption{OLS Regression Results}\n", + "\\end{center}\n", + "\n", + "Notes: \\newline\n", + " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " OLS Regression Results \n", + "====================================================================================\n", + "Dep. Variable: zscore_n_tasks_completed R-squared: 0.051\n", + "Model: OLS Adj. R-squared: 0.037\n", + "Method: Least Squares F-statistic: 3.749\n", + "Date: Fri, 16 Feb 2024 Prob (F-statistic): 0.0118\n", + "Time: 02:52:20 Log-Likelihood: -411.59\n", + "No. Observations: 215 AIC: 831.2\n", + "Df Residuals: 211 BIC: 844.7\n", + "Df Model: 3 \n", + "Covariance Type: nonrobust \n", + "============================================================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "----------------------------------------------------------------------------------------------------------------------------\n", + "Intercept -7.633e-17 0.265 -2.88e-16 1.000 -0.523 0.523\n", + "C(model_size, Treatment(reference='nomodel'))[T.gpt35] 0.3997 0.333 1.201 0.231 -0.256 1.056\n", + "C(model_size, Treatment(reference='nomodel'))[T.llama34] -0.2735 0.348 -0.786 0.433 -0.960 0.413\n", + "C(model_size, Treatment(reference='nomodel'))[T.llama7] -0.5698 0.348 -1.637 0.103 -1.256 0.116\n", + "==============================================================================\n", + "Omnibus: 9.925 Durbin-Watson: 1.991\n", + "Prob(Omnibus): 0.007 Jarque-Bera (JB): 10.577\n", + "Skew: 0.534 Prob(JB): 0.00505\n", + "Kurtosis: 2.799 Cond. No. 5.55\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(smf.ols(f\"zscore_n_tasks_completed ~ C(model_size, Treatment(reference='nomodel'))\", data=df).fit().summary())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "04427d19", + "metadata": {}, + "outputs": [ + { + "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", + "
OLS Regression Results
Dep. Variable: zscore_mean_task_duration R-squared: 0.064
Model: OLS Adj. R-squared: 0.051
Method: Least Squares F-statistic: 4.790
Date: Fri, 16 Feb 2024 Prob (F-statistic): 0.00300
Time: 01:09:21 Log-Likelihood: -1366.7
No. Observations: 213 AIC: 2741.
Df Residuals: 209 BIC: 2755.
Df Model: 3
Covariance Type: nonrobust
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
coef std err t P>|t| [0.025 0.975]
Intercept -1.11e-14 24.248 -4.58e-16 1.000 -47.802 47.802
C(model_size, Treatment(reference='nomodel'))[T.gpt35] -77.9254 30.275 -2.574 0.011 -137.608 -18.243
C(model_size, Treatment(reference='nomodel'))[T.llama34] -64.3828 31.650 -2.034 0.043 -126.777 -1.988
C(model_size, Treatment(reference='nomodel'))[T.llama7] 9.6509 31.773 0.304 0.762 -52.986 72.288
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
Omnibus: 50.673 Durbin-Watson: 1.819
Prob(Omnibus): 0.000 Jarque-Bera (JB): 98.483
Skew: 1.168 Prob(JB): 4.12e-22
Kurtosis: 5.374 Cond. No. 5.60


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/latex": [ + "\\begin{center}\n", + "\\begin{tabular}{lclc}\n", + "\\toprule\n", + "\\textbf{Dep. Variable:} & zscore\\_mean\\_task\\_duration & \\textbf{ R-squared: } & 0.064 \\\\\n", + "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.051 \\\\\n", + "\\textbf{Method:} & Least Squares & \\textbf{ F-statistic: } & 4.790 \\\\\n", + "\\textbf{Date:} & Fri, 16 Feb 2024 & \\textbf{ Prob (F-statistic):} & 0.00300 \\\\\n", + "\\textbf{Time:} & 01:09:21 & \\textbf{ Log-Likelihood: } & -1366.7 \\\\\n", + "\\textbf{No. Observations:} & 213 & \\textbf{ AIC: } & 2741. \\\\\n", + "\\textbf{Df Residuals:} & 209 & \\textbf{ BIC: } & 2755. \\\\\n", + "\\textbf{Df Model:} & 3 & \\textbf{ } & \\\\\n", + "\\textbf{Covariance Type:} & nonrobust & \\textbf{ } & \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lcccccc}\n", + " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", + "\\midrule\n", + "\\textbf{Intercept} & -1.11e-14 & 24.248 & -4.58e-16 & 1.000 & -47.802 & 47.802 \\\\\n", + "\\textbf{C(model\\_size, Treatment(reference='nomodel'))[T.gpt35]} & -77.9254 & 30.275 & -2.574 & 0.011 & -137.608 & -18.243 \\\\\n", + "\\textbf{C(model\\_size, Treatment(reference='nomodel'))[T.llama34]} & -64.3828 & 31.650 & -2.034 & 0.043 & -126.777 & -1.988 \\\\\n", + "\\textbf{C(model\\_size, Treatment(reference='nomodel'))[T.llama7]} & 9.6509 & 31.773 & 0.304 & 0.762 & -52.986 & 72.288 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lclc}\n", + "\\textbf{Omnibus:} & 50.673 & \\textbf{ Durbin-Watson: } & 1.819 \\\\\n", + "\\textbf{Prob(Omnibus):} & 0.000 & \\textbf{ Jarque-Bera (JB): } & 98.483 \\\\\n", + "\\textbf{Skew:} & 1.168 & \\textbf{ Prob(JB): } & 4.12e-22 \\\\\n", + "\\textbf{Kurtosis:} & 5.374 & \\textbf{ Cond. No. } & 5.60 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "%\\caption{OLS Regression Results}\n", + "\\end{center}\n", + "\n", + "Notes: \\newline\n", + " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " OLS Regression Results \n", + "=====================================================================================\n", + "Dep. Variable: zscore_mean_task_duration R-squared: 0.064\n", + "Model: OLS Adj. R-squared: 0.051\n", + "Method: Least Squares F-statistic: 4.790\n", + "Date: Fri, 16 Feb 2024 Prob (F-statistic): 0.00300\n", + "Time: 01:09:21 Log-Likelihood: -1366.7\n", + "No. Observations: 213 AIC: 2741.\n", + "Df Residuals: 209 BIC: 2755.\n", + "Df Model: 3 \n", + "Covariance Type: nonrobust \n", + "============================================================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "----------------------------------------------------------------------------------------------------------------------------\n", + "Intercept -1.11e-14 24.248 -4.58e-16 1.000 -47.802 47.802\n", + "C(model_size, Treatment(reference='nomodel'))[T.gpt35] -77.9254 30.275 -2.574 0.011 -137.608 -18.243\n", + "C(model_size, Treatment(reference='nomodel'))[T.llama34] -64.3828 31.650 -2.034 0.043 -126.777 -1.988\n", + "C(model_size, Treatment(reference='nomodel'))[T.llama7] 9.6509 31.773 0.304 0.762 -52.986 72.288\n", + "==============================================================================\n", + "Omnibus: 50.673 Durbin-Watson: 1.819\n", + "Prob(Omnibus): 0.000 Jarque-Bera (JB): 98.483\n", + "Skew: 1.168 Prob(JB): 4.12e-22\n", + "Kurtosis: 5.374 Cond. No. 5.60\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(smf.ols(f\"zscore_mean_task_duration ~ C(model_size, Treatment(reference='nomodel'))\", data=df).fit().summary())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "516cc3a4", + "metadata": {}, + "outputs": [ + { + "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", + "
OLS Regression Results
Dep. Variable: sugg_accept_rate R-squared: 0.207
Model: OLS Adj. R-squared: 0.187
Method: Least Squares F-statistic: 10.55
Date: Fri, 16 Feb 2024 Prob (F-statistic): 8.46e-05
Time: 02:25:27 Log-Likelihood: 91.054
No. Observations: 84 AIC: -176.1
Df Residuals: 81 BIC: -168.8
Df Model: 2
Covariance Type: nonrobust
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
coef std err t P>|t| [0.025 0.975]
Intercept 0.0501 0.016 3.179 0.002 0.019 0.081
C(model, Treatment(reference='autocomplete_llama34'))[T.autocomplete_gpt35] 0.0982 0.022 4.555 0.000 0.055 0.141
C(model, Treatment(reference='autocomplete_llama34'))[T.autocomplete_llama7] 0.0404 0.023 1.740 0.086 -0.006 0.086
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
Omnibus: 15.009 Durbin-Watson: 1.855
Prob(Omnibus): 0.001 Jarque-Bera (JB): 17.157
Skew: 0.934 Prob(JB): 0.000188
Kurtosis: 4.188 Cond. No. 3.75


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/latex": [ + "\\begin{center}\n", + "\\begin{tabular}{lclc}\n", + "\\toprule\n", + "\\textbf{Dep. Variable:} & sugg\\_accept\\_rate & \\textbf{ R-squared: } & 0.207 \\\\\n", + "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.187 \\\\\n", + "\\textbf{Method:} & Least Squares & \\textbf{ F-statistic: } & 10.55 \\\\\n", + "\\textbf{Date:} & Fri, 16 Feb 2024 & \\textbf{ Prob (F-statistic):} & 8.46e-05 \\\\\n", + "\\textbf{Time:} & 02:25:27 & \\textbf{ Log-Likelihood: } & 91.054 \\\\\n", + "\\textbf{No. Observations:} & 84 & \\textbf{ AIC: } & -176.1 \\\\\n", + "\\textbf{Df Residuals:} & 81 & \\textbf{ BIC: } & -168.8 \\\\\n", + "\\textbf{Df Model:} & 2 & \\textbf{ } & \\\\\n", + "\\textbf{Covariance Type:} & nonrobust & \\textbf{ } & \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lcccccc}\n", + " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", + "\\midrule\n", + "\\textbf{Intercept} & 0.0501 & 0.016 & 3.179 & 0.002 & 0.019 & 0.081 \\\\\n", + "\\textbf{C(model, Treatment(reference='autocomplete\\_llama34'))[T.autocomplete\\_gpt35]} & 0.0982 & 0.022 & 4.555 & 0.000 & 0.055 & 0.141 \\\\\n", + "\\textbf{C(model, Treatment(reference='autocomplete\\_llama34'))[T.autocomplete\\_llama7]} & 0.0404 & 0.023 & 1.740 & 0.086 & -0.006 & 0.086 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lclc}\n", + "\\textbf{Omnibus:} & 15.009 & \\textbf{ Durbin-Watson: } & 1.855 \\\\\n", + "\\textbf{Prob(Omnibus):} & 0.001 & \\textbf{ Jarque-Bera (JB): } & 17.157 \\\\\n", + "\\textbf{Skew:} & 0.934 & \\textbf{ Prob(JB): } & 0.000188 \\\\\n", + "\\textbf{Kurtosis:} & 4.188 & \\textbf{ Cond. No. } & 3.75 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "%\\caption{OLS Regression Results}\n", + "\\end{center}\n", + "\n", + "Notes: \\newline\n", + " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: sugg_accept_rate R-squared: 0.207\n", + "Model: OLS Adj. R-squared: 0.187\n", + "Method: Least Squares F-statistic: 10.55\n", + "Date: Fri, 16 Feb 2024 Prob (F-statistic): 8.46e-05\n", + "Time: 02:25:27 Log-Likelihood: 91.054\n", + "No. Observations: 84 AIC: -176.1\n", + "Df Residuals: 81 BIC: -168.8\n", + "Df Model: 2 \n", + "Covariance Type: nonrobust \n", + "================================================================================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------------------------------------------------------------------------\n", + "Intercept 0.0501 0.016 3.179 0.002 0.019 0.081\n", + "C(model, Treatment(reference='autocomplete_llama34'))[T.autocomplete_gpt35] 0.0982 0.022 4.555 0.000 0.055 0.141\n", + "C(model, Treatment(reference='autocomplete_llama34'))[T.autocomplete_llama7] 0.0404 0.023 1.740 0.086 -0.006 0.086\n", + "==============================================================================\n", + "Omnibus: 15.009 Durbin-Watson: 1.855\n", + "Prob(Omnibus): 0.001 Jarque-Bera (JB): 17.157\n", + "Skew: 0.934 Prob(JB): 0.000188\n", + "Kurtosis: 4.188 Cond. No. 3.75\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(smf.ols(f\"sugg_accept_rate ~ C(model, Treatment(reference='autocomplete_llama34'))\", data=df.query(\"interface=='autocomplete'\")).fit().summary())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "4573d36c", + "metadata": {}, + "outputs": [ + { + "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", + "
OLS Regression Results
Dep. Variable: avg_copy_per_response R-squared: 0.013
Model: OLS Adj. R-squared: -0.013
Method: Least Squares F-statistic: 0.5092
Date: Fri, 16 Feb 2024 Prob (F-statistic): 0.603
Time: 01:49:16 Log-Likelihood: -5.2659
No. Observations: 79 AIC: 16.53
Df Residuals: 76 BIC: 23.64
Df Model: 2
Covariance Type: nonrobust
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
coef std err t P>|t| [0.025 0.975]
Intercept 0.3458 0.054 6.424 0.000 0.239 0.453
C(model, Treatment(reference='chat_llama7'))[T.chat_gpt35] -0.0510 0.071 -0.716 0.476 -0.193 0.091
C(model, Treatment(reference='chat_llama7'))[T.chat_llama34] -0.0756 0.077 -0.982 0.329 -0.229 0.078
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
Omnibus: 9.095 Durbin-Watson: 1.443
Prob(Omnibus): 0.011 Jarque-Bera (JB): 9.497
Skew: 0.849 Prob(JB): 0.00866
Kurtosis: 3.059 Cond. No. 3.92


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/latex": [ + "\\begin{center}\n", + "\\begin{tabular}{lclc}\n", + "\\toprule\n", + "\\textbf{Dep. Variable:} & avg\\_copy\\_per\\_response & \\textbf{ R-squared: } & 0.013 \\\\\n", + "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & -0.013 \\\\\n", + "\\textbf{Method:} & Least Squares & \\textbf{ F-statistic: } & 0.5092 \\\\\n", + "\\textbf{Date:} & Fri, 16 Feb 2024 & \\textbf{ Prob (F-statistic):} & 0.603 \\\\\n", + "\\textbf{Time:} & 01:49:16 & \\textbf{ Log-Likelihood: } & -5.2659 \\\\\n", + "\\textbf{No. Observations:} & 79 & \\textbf{ AIC: } & 16.53 \\\\\n", + "\\textbf{Df Residuals:} & 76 & \\textbf{ BIC: } & 23.64 \\\\\n", + "\\textbf{Df Model:} & 2 & \\textbf{ } & \\\\\n", + "\\textbf{Covariance Type:} & nonrobust & \\textbf{ } & \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lcccccc}\n", + " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", + "\\midrule\n", + "\\textbf{Intercept} & 0.3458 & 0.054 & 6.424 & 0.000 & 0.239 & 0.453 \\\\\n", + "\\textbf{C(model, Treatment(reference='chat\\_llama7'))[T.chat\\_gpt35]} & -0.0510 & 0.071 & -0.716 & 0.476 & -0.193 & 0.091 \\\\\n", + "\\textbf{C(model, Treatment(reference='chat\\_llama7'))[T.chat\\_llama34]} & -0.0756 & 0.077 & -0.982 & 0.329 & -0.229 & 0.078 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lclc}\n", + "\\textbf{Omnibus:} & 9.095 & \\textbf{ Durbin-Watson: } & 1.443 \\\\\n", + "\\textbf{Prob(Omnibus):} & 0.011 & \\textbf{ Jarque-Bera (JB): } & 9.497 \\\\\n", + "\\textbf{Skew:} & 0.849 & \\textbf{ Prob(JB): } & 0.00866 \\\\\n", + "\\textbf{Kurtosis:} & 3.059 & \\textbf{ Cond. No. } & 3.92 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "%\\caption{OLS Regression Results}\n", + "\\end{center}\n", + "\n", + "Notes: \\newline\n", + " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " OLS Regression Results \n", + "=================================================================================\n", + "Dep. Variable: avg_copy_per_response R-squared: 0.013\n", + "Model: OLS Adj. R-squared: -0.013\n", + "Method: Least Squares F-statistic: 0.5092\n", + "Date: Fri, 16 Feb 2024 Prob (F-statistic): 0.603\n", + "Time: 01:49:16 Log-Likelihood: -5.2659\n", + "No. Observations: 79 AIC: 16.53\n", + "Df Residuals: 76 BIC: 23.64\n", + "Df Model: 2 \n", + "Covariance Type: nonrobust \n", + "================================================================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "--------------------------------------------------------------------------------------------------------------------------------\n", + "Intercept 0.3458 0.054 6.424 0.000 0.239 0.453\n", + "C(model, Treatment(reference='chat_llama7'))[T.chat_gpt35] -0.0510 0.071 -0.716 0.476 -0.193 0.091\n", + "C(model, Treatment(reference='chat_llama7'))[T.chat_llama34] -0.0756 0.077 -0.982 0.329 -0.229 0.078\n", + "==============================================================================\n", + "Omnibus: 9.095 Durbin-Watson: 1.443\n", + "Prob(Omnibus): 0.011 Jarque-Bera (JB): 9.497\n", + "Skew: 0.849 Prob(JB): 0.00866\n", + "Kurtosis: 3.059 Cond. No. 3.92\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(smf.ols(f\"avg_copy_per_response ~ C(model, Treatment(reference='chat_llama7'))\", data=df.query(\"interface=='chat'\")).fit().summary())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "1b0003f7", + "metadata": {}, + "outputs": [ + { + "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", + "
OLS Regression Results
Dep. Variable: aihelpful R-squared: 0.206
Model: OLS Adj. R-squared: 0.201
Method: Least Squares F-statistic: 45.07
Date: Fri, 16 Feb 2024 Prob (F-statistic): 2.58e-10
Time: 03:44:41 Log-Likelihood: -399.26
No. Observations: 176 AIC: 802.5
Df Residuals: 174 BIC: 808.9
Df Model: 1
Covariance Type: nonrobust
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
coef std err t P>|t| [0.025 0.975]
Intercept 3.0575 0.252 12.125 0.000 2.560 3.555
C(interface, Treatment(reference='autocomplete'))[T.chat] 2.3807 0.355 6.714 0.000 1.681 3.081
\n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "\n", + " \n", + "\n", + "
Omnibus: 11.311 Durbin-Watson: 1.690
Prob(Omnibus): 0.003 Jarque-Bera (JB): 12.166
Skew: 0.644 Prob(JB): 0.00228
Kurtosis: 3.000 Cond. No. 2.63


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/latex": [ + "\\begin{center}\n", + "\\begin{tabular}{lclc}\n", + "\\toprule\n", + "\\textbf{Dep. Variable:} & aihelpful & \\textbf{ R-squared: } & 0.206 \\\\\n", + "\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.201 \\\\\n", + "\\textbf{Method:} & Least Squares & \\textbf{ F-statistic: } & 45.07 \\\\\n", + "\\textbf{Date:} & Fri, 16 Feb 2024 & \\textbf{ Prob (F-statistic):} & 2.58e-10 \\\\\n", + "\\textbf{Time:} & 03:44:41 & \\textbf{ Log-Likelihood: } & -399.26 \\\\\n", + "\\textbf{No. Observations:} & 176 & \\textbf{ AIC: } & 802.5 \\\\\n", + "\\textbf{Df Residuals:} & 174 & \\textbf{ BIC: } & 808.9 \\\\\n", + "\\textbf{Df Model:} & 1 & \\textbf{ } & \\\\\n", + "\\textbf{Covariance Type:} & nonrobust & \\textbf{ } & \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lcccccc}\n", + " & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\\n", + "\\midrule\n", + "\\textbf{Intercept} & 3.0575 & 0.252 & 12.125 & 0.000 & 2.560 & 3.555 \\\\\n", + "\\textbf{C(interface, Treatment(reference='autocomplete'))[T.chat]} & 2.3807 & 0.355 & 6.714 & 0.000 & 1.681 & 3.081 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "\\begin{tabular}{lclc}\n", + "\\textbf{Omnibus:} & 11.311 & \\textbf{ Durbin-Watson: } & 1.690 \\\\\n", + "\\textbf{Prob(Omnibus):} & 0.003 & \\textbf{ Jarque-Bera (JB): } & 12.166 \\\\\n", + "\\textbf{Skew:} & 0.644 & \\textbf{ Prob(JB): } & 0.00228 \\\\\n", + "\\textbf{Kurtosis:} & 3.000 & \\textbf{ Cond. No. } & 2.63 \\\\\n", + "\\bottomrule\n", + "\\end{tabular}\n", + "%\\caption{OLS Regression Results}\n", + "\\end{center}\n", + "\n", + "Notes: \\newline\n", + " [1] Standard Errors assume that the covariance matrix of the errors is correctly specified." + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: aihelpful R-squared: 0.206\n", + "Model: OLS Adj. R-squared: 0.201\n", + "Method: Least Squares F-statistic: 45.07\n", + "Date: Fri, 16 Feb 2024 Prob (F-statistic): 2.58e-10\n", + "Time: 03:44:41 Log-Likelihood: -399.26\n", + "No. Observations: 176 AIC: 802.5\n", + "Df Residuals: 174 BIC: 808.9\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "=============================================================================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "-----------------------------------------------------------------------------------------------------------------------------\n", + "Intercept 3.0575 0.252 12.125 0.000 2.560 3.555\n", + "C(interface, Treatment(reference='autocomplete'))[T.chat] 2.3807 0.355 6.714 0.000 1.681 3.081\n", + "==============================================================================\n", + "Omnibus: 11.311 Durbin-Watson: 1.690\n", + "Prob(Omnibus): 0.003 Jarque-Bera (JB): 12.166\n", + "Skew: 0.644 Prob(JB): 0.00228\n", + "Kurtosis: 3.000 Cond. No. 2.63\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(smf.ols(f\"aihelpful ~ C(interface, Treatment(reference='autocomplete'))\", data=df.query(\"interface!='nomodel'\")).fit().summary())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "a8e910a0", + "metadata": {}, + "outputs": [], + "source": [ + "pvals = []\n", + "fit = smf.ols(f\"zscore_n_tasks_completed ~ C(model_size, Treatment(reference='nomodel'))\", data=df).fit()\n", + "pvals.append(fit.pvalues[1])\n", + "pvals.append(fit.pvalues[2])\n", + "pvals.append(fit.pvalues[3])\n", + "fit = smf.ols(f\"zscore_mean_task_duration ~ C(model_size, Treatment(reference='nomodel'))\", data=df).fit()\n", + "pvals.append(fit.pvalues[1]) # significant\n", + "pvals.append(fit.pvalues[2])\n", + "pvals.append(fit.pvalues[3])\n", + "fit = smf.ols(f\"sugg_accept_rate ~ C(model, Treatment(reference='autocomplete_llama34'))\", data=df.query(\"interface=='autocomplete'\")).fit()\n", + "pvals.append(fit.pvalues[1])#significant\n", + "pvals.append(fit.pvalues[2]) \n", + "fit = smf.ols(f\"avg_copy_per_response ~ C(model, Treatment(reference='chat_llama7'))\", data=df.query(\"interface=='chat'\")).fit()\n", + "pvals.append(fit.pvalues[1])\n", + "pvals.append(fit.pvalues[2])\n", + "fit = smf.ols(f\"aihelpful ~ C(interface, Treatment(reference='autocomplete'))\", data=df.query(\"interface!='nomodel'\")).fit()\n", + "pvals.append(fit.pvalues[1]) # significant\n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "7e23fd34", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([False, False, False, True, False, False, True, False, False,\n", + " False, True]),\n", + " array([3.63074390e-01, 5.23794111e-01, 1.89164069e-01, 3.94011608e-02,\n", + " 1.18784996e-01, 7.61626079e-01, 1.00599443e-04, 1.88267677e-01,\n", + " 5.23794111e-01, 4.52565764e-01, 2.84039024e-09]),\n", + " 0.004652171732197341,\n", + " 0.004545454545454546)" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import statsmodels\n", + "\n", + "statsmodels.stats.multitest.multipletests(pvals, method=\"fdr_bh\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/analysis/mean_task_duration_indiv.pdf b/analysis/mean_task_duration_indiv.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2d4995f57d25dc13ee0127bd636a871187ed9266 GIT binary patch literal 15831 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 literal 0 HcmV?d00001 diff --git a/analysis/n_tasks_completed_indiv.pdf b/analysis/n_tasks_completed_indiv.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ccf8bcf8575816dee309c6d0c1fd5fe1de35c38c GIT binary patch literal 13535 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 E2XBpS-T(jq literal 0 HcmV?d00001 diff --git a/analysis/analysis_final_vc.ipynb b/temp/analysis_final_vc.ipynb similarity index 100% rename from analysis/analysis_final_vc.ipynb rename to temp/analysis_final_vc.ipynb