{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e1aee1f6",
   "metadata": {},
   "source": [
    "# Python package\n",
    "\n",
    "[![Python](https://img.shields.io/pypi/pyversions/treat_sim)](https://pypi.org/project/treat_sim/)\n",
    "[![PyPI version fury.io](https://badge.fury.io/py/treat-sim.svg)](https://pypi.org/project/treat-sim/)\n",
    "\n",
    "The model is available to install from the [Python Package Index (PyPI)](https://pypi.org/project/treat-sim/). If you wish to use the model in your own code or package this is the simplest way to include it.  It can be installed from a terminal or included in an conda environment or Python virtual environment.  To install at run time use:\n",
    "\n",
    "```bash\n",
    "pip install treat-sim\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba8719f7",
   "metadata": {},
   "source": [
    "## Running multiple replications of the `treat-sim` model\n",
    "\n",
    "To create a custom experiment and run multiple replications of it using the m~odel you need to import the `Scenario` and `multiple_replications` functions from the `model` module. Example code is below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3ef2e46d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>00_arrivals</th>\n",
       "      <td>5.0</td>\n",
       "      <td>231.80</td>\n",
       "      <td>5.07</td>\n",
       "      <td>227.00</td>\n",
       "      <td>229.00</td>\n",
       "      <td>230.00</td>\n",
       "      <td>233.00</td>\n",
       "      <td>240.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>01a_triage_wait</th>\n",
       "      <td>5.0</td>\n",
       "      <td>30.51</td>\n",
       "      <td>15.39</td>\n",
       "      <td>17.68</td>\n",
       "      <td>24.28</td>\n",
       "      <td>24.80</td>\n",
       "      <td>28.66</td>\n",
       "      <td>57.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>01b_triage_util</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.03</td>\n",
       "      <td>0.57</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>02a_registration_wait</th>\n",
       "      <td>5.0</td>\n",
       "      <td>106.13</td>\n",
       "      <td>11.72</td>\n",
       "      <td>90.00</td>\n",
       "      <td>103.24</td>\n",
       "      <td>103.61</td>\n",
       "      <td>112.24</td>\n",
       "      <td>121.54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>02b_registration_util</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.85</td>\n",
       "      <td>0.85</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>03a_examination_wait</th>\n",
       "      <td>5.0</td>\n",
       "      <td>24.84</td>\n",
       "      <td>7.07</td>\n",
       "      <td>14.69</td>\n",
       "      <td>21.37</td>\n",
       "      <td>25.51</td>\n",
       "      <td>31.09</td>\n",
       "      <td>31.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>03b_examination_util</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.85</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>04a_treatment_wait(non_trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>134.87</td>\n",
       "      <td>27.08</td>\n",
       "      <td>94.02</td>\n",
       "      <td>120.25</td>\n",
       "      <td>150.35</td>\n",
       "      <td>152.48</td>\n",
       "      <td>157.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>04b_treatment_util(non_trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.90</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.89</td>\n",
       "      <td>0.89</td>\n",
       "      <td>0.91</td>\n",
       "      <td>0.93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>05_total_time(non-trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>232.00</td>\n",
       "      <td>14.87</td>\n",
       "      <td>208.36</td>\n",
       "      <td>233.30</td>\n",
       "      <td>233.88</td>\n",
       "      <td>234.76</td>\n",
       "      <td>249.69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>06a_trauma_wait</th>\n",
       "      <td>5.0</td>\n",
       "      <td>209.37</td>\n",
       "      <td>63.74</td>\n",
       "      <td>133.81</td>\n",
       "      <td>149.37</td>\n",
       "      <td>236.51</td>\n",
       "      <td>250.71</td>\n",
       "      <td>276.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>06b_trauma_util</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.90</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.83</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.88</td>\n",
       "      <td>1.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>07a_treatment_wait(trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>11.08</td>\n",
       "      <td>4.89</td>\n",
       "      <td>3.72</td>\n",
       "      <td>9.23</td>\n",
       "      <td>12.25</td>\n",
       "      <td>13.70</td>\n",
       "      <td>16.52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>07b_treatment_util(trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.50</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.37</td>\n",
       "      <td>0.42</td>\n",
       "      <td>0.46</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>08_total_time(trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>350.13</td>\n",
       "      <td>63.75</td>\n",
       "      <td>281.06</td>\n",
       "      <td>301.52</td>\n",
       "      <td>346.70</td>\n",
       "      <td>380.83</td>\n",
       "      <td>440.52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>09_throughput</th>\n",
       "      <td>5.0</td>\n",
       "      <td>167.00</td>\n",
       "      <td>4.64</td>\n",
       "      <td>161.00</td>\n",
       "      <td>164.00</td>\n",
       "      <td>167.00</td>\n",
       "      <td>171.00</td>\n",
       "      <td>172.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                count    mean    std     min     25%     50%  \\\n",
       "00_arrivals                       5.0  231.80   5.07  227.00  229.00  230.00   \n",
       "01a_triage_wait                   5.0   30.51  15.39   17.68   24.28   24.80   \n",
       "01b_triage_util                   5.0    0.61   0.03    0.57    0.61    0.61   \n",
       "02a_registration_wait             5.0  106.13  11.72   90.00  103.24  103.61   \n",
       "02b_registration_util             5.0    0.86   0.01    0.84    0.85    0.85   \n",
       "03a_examination_wait              5.0   24.84   7.07   14.69   21.37   25.51   \n",
       "03b_examination_util              5.0    0.86   0.01    0.85    0.86    0.86   \n",
       "04a_treatment_wait(non_trauma)    5.0  134.87  27.08   94.02  120.25  150.35   \n",
       "04b_treatment_util(non_trauma)    5.0    0.90   0.02    0.87    0.89    0.89   \n",
       "05_total_time(non-trauma)         5.0  232.00  14.87  208.36  233.30  233.88   \n",
       "06a_trauma_wait                   5.0  209.37  63.74  133.81  149.37  236.51   \n",
       "06b_trauma_util                   5.0    0.90   0.08    0.83    0.86    0.87   \n",
       "07a_treatment_wait(trauma)        5.0   11.08   4.89    3.72    9.23   12.25   \n",
       "07b_treatment_util(trauma)        5.0    0.50   0.13    0.37    0.42    0.46   \n",
       "08_total_time(trauma)             5.0  350.13  63.75  281.06  301.52  346.70   \n",
       "09_throughput                     5.0  167.00   4.64  161.00  164.00  167.00   \n",
       "\n",
       "                                   75%     max  \n",
       "00_arrivals                     233.00  240.00  \n",
       "01a_triage_wait                  28.66   57.12  \n",
       "01b_triage_util                   0.62    0.64  \n",
       "02a_registration_wait           112.24  121.54  \n",
       "02b_registration_util             0.87    0.87  \n",
       "03a_examination_wait             31.09   31.56  \n",
       "03b_examination_util              0.87    0.88  \n",
       "04a_treatment_wait(non_trauma)  152.48  157.26  \n",
       "04b_treatment_util(non_trauma)    0.91    0.93  \n",
       "05_total_time(non-trauma)       234.76  249.69  \n",
       "06a_trauma_wait                 250.71  276.42  \n",
       "06b_trauma_util                   0.88    1.03  \n",
       "07a_treatment_wait(trauma)       13.70   16.52  \n",
       "07b_treatment_util(trauma)        0.61    0.66  \n",
       "08_total_time(trauma)           380.83  440.52  \n",
       "09_throughput                   171.00  172.00  "
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from treat_sim.model import Scenario, multiple_replications\n",
    "\n",
    "# use all default parameter values\n",
    "base_case = Scenario()\n",
    "\n",
    "# run replications (defaults to 5 if parameter ignored.)\n",
    "results = multiple_replications(base_case, n_reps=5)\n",
    "\n",
    "# show results (use print() if not using Jupyter notebooks)\n",
    "results.describe().round(2).T"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5209ba49",
   "metadata": {},
   "source": [
    "## Custom experiments\n",
    "\n",
    "Simply modify the default parameters of the `Scenario` class if you would like to run different experiments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f7962d70",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>00_arrivals</th>\n",
       "      <td>5.0</td>\n",
       "      <td>231.80</td>\n",
       "      <td>5.07</td>\n",
       "      <td>227.00</td>\n",
       "      <td>229.00</td>\n",
       "      <td>230.00</td>\n",
       "      <td>233.00</td>\n",
       "      <td>240.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>01a_triage_wait</th>\n",
       "      <td>5.0</td>\n",
       "      <td>30.51</td>\n",
       "      <td>15.39</td>\n",
       "      <td>17.68</td>\n",
       "      <td>24.28</td>\n",
       "      <td>24.80</td>\n",
       "      <td>28.66</td>\n",
       "      <td>57.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>01b_triage_util</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.03</td>\n",
       "      <td>0.57</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>02a_registration_wait</th>\n",
       "      <td>5.0</td>\n",
       "      <td>106.13</td>\n",
       "      <td>11.72</td>\n",
       "      <td>90.00</td>\n",
       "      <td>103.24</td>\n",
       "      <td>103.61</td>\n",
       "      <td>112.24</td>\n",
       "      <td>121.54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>02b_registration_util</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.84</td>\n",
       "      <td>0.85</td>\n",
       "      <td>0.85</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.87</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>03a_examination_wait</th>\n",
       "      <td>5.0</td>\n",
       "      <td>24.84</td>\n",
       "      <td>7.07</td>\n",
       "      <td>14.69</td>\n",
       "      <td>21.37</td>\n",
       "      <td>25.51</td>\n",
       "      <td>31.09</td>\n",
       "      <td>31.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>03b_examination_util</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.85</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.88</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>04a_treatment_wait(non_trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>1.93</td>\n",
       "      <td>0.14</td>\n",
       "      <td>1.71</td>\n",
       "      <td>1.92</td>\n",
       "      <td>1.95</td>\n",
       "      <td>1.99</td>\n",
       "      <td>2.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>04b_treatment_util(non_trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.64</td>\n",
       "      <td>0.02</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.62</td>\n",
       "      <td>0.64</td>\n",
       "      <td>0.65</td>\n",
       "      <td>0.68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>05_total_time(non-trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>188.56</td>\n",
       "      <td>8.52</td>\n",
       "      <td>177.58</td>\n",
       "      <td>184.76</td>\n",
       "      <td>187.32</td>\n",
       "      <td>192.98</td>\n",
       "      <td>200.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>06a_trauma_wait</th>\n",
       "      <td>5.0</td>\n",
       "      <td>209.37</td>\n",
       "      <td>63.74</td>\n",
       "      <td>133.81</td>\n",
       "      <td>149.37</td>\n",
       "      <td>236.51</td>\n",
       "      <td>250.71</td>\n",
       "      <td>276.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>06b_trauma_util</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.90</td>\n",
       "      <td>0.08</td>\n",
       "      <td>0.83</td>\n",
       "      <td>0.86</td>\n",
       "      <td>0.87</td>\n",
       "      <td>0.88</td>\n",
       "      <td>1.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>07a_treatment_wait(trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>11.08</td>\n",
       "      <td>4.89</td>\n",
       "      <td>3.72</td>\n",
       "      <td>9.23</td>\n",
       "      <td>12.25</td>\n",
       "      <td>13.70</td>\n",
       "      <td>16.52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>07b_treatment_util(trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.50</td>\n",
       "      <td>0.13</td>\n",
       "      <td>0.37</td>\n",
       "      <td>0.42</td>\n",
       "      <td>0.46</td>\n",
       "      <td>0.61</td>\n",
       "      <td>0.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>08_total_time(trauma)</th>\n",
       "      <td>5.0</td>\n",
       "      <td>350.13</td>\n",
       "      <td>63.75</td>\n",
       "      <td>281.06</td>\n",
       "      <td>301.52</td>\n",
       "      <td>346.70</td>\n",
       "      <td>380.83</td>\n",
       "      <td>440.52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>09_throughput</th>\n",
       "      <td>5.0</td>\n",
       "      <td>199.40</td>\n",
       "      <td>4.67</td>\n",
       "      <td>193.00</td>\n",
       "      <td>198.00</td>\n",
       "      <td>200.00</td>\n",
       "      <td>200.00</td>\n",
       "      <td>206.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                count    mean    std     min     25%     50%  \\\n",
       "00_arrivals                       5.0  231.80   5.07  227.00  229.00  230.00   \n",
       "01a_triage_wait                   5.0   30.51  15.39   17.68   24.28   24.80   \n",
       "01b_triage_util                   5.0    0.61   0.03    0.57    0.61    0.61   \n",
       "02a_registration_wait             5.0  106.13  11.72   90.00  103.24  103.61   \n",
       "02b_registration_util             5.0    0.86   0.01    0.84    0.85    0.85   \n",
       "03a_examination_wait              5.0   24.84   7.07   14.69   21.37   25.51   \n",
       "03b_examination_util              5.0    0.86   0.01    0.85    0.86    0.86   \n",
       "04a_treatment_wait(non_trauma)    5.0    1.93   0.14    1.71    1.92    1.95   \n",
       "04b_treatment_util(non_trauma)    5.0    0.64   0.02    0.61    0.62    0.64   \n",
       "05_total_time(non-trauma)         5.0  188.56   8.52  177.58  184.76  187.32   \n",
       "06a_trauma_wait                   5.0  209.37  63.74  133.81  149.37  236.51   \n",
       "06b_trauma_util                   5.0    0.90   0.08    0.83    0.86    0.87   \n",
       "07a_treatment_wait(trauma)        5.0   11.08   4.89    3.72    9.23   12.25   \n",
       "07b_treatment_util(trauma)        5.0    0.50   0.13    0.37    0.42    0.46   \n",
       "08_total_time(trauma)             5.0  350.13  63.75  281.06  301.52  346.70   \n",
       "09_throughput                     5.0  199.40   4.67  193.00  198.00  200.00   \n",
       "\n",
       "                                   75%     max  \n",
       "00_arrivals                     233.00  240.00  \n",
       "01a_triage_wait                  28.66   57.12  \n",
       "01b_triage_util                   0.62    0.64  \n",
       "02a_registration_wait           112.24  121.54  \n",
       "02b_registration_util             0.87    0.87  \n",
       "03a_examination_wait             31.09   31.56  \n",
       "03b_examination_util              0.87    0.88  \n",
       "04a_treatment_wait(non_trauma)    1.99    2.08  \n",
       "04b_treatment_util(non_trauma)    0.65    0.68  \n",
       "05_total_time(non-trauma)       192.98  200.16  \n",
       "06a_trauma_wait                 250.71  276.42  \n",
       "06b_trauma_util                   0.88    1.03  \n",
       "07a_treatment_wait(trauma)       13.70   16.52  \n",
       "07b_treatment_util(trauma)        0.61    0.66  \n",
       "08_total_time(trauma)           380.83  440.52  \n",
       "09_throughput                   200.00  206.00  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# an extra non trauma treatment cubicle\n",
    "extra_cubicle_experiment = Scenario(n_cubicles_1=2)\n",
    "\n",
    "# experiment results\n",
    "results_extra_cubicle = multiple_replications(extra_cubicle_experiment, n_reps=5)\n",
    "\n",
    "# show results of experiment\n",
    "results_extra_cubicle.describe().round(2).T"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d8fe52e9",
   "metadata": {},
   "source": [
    "## Pre-configured experiments\n",
    "\n",
    "The package also includes a selection of pre-configured experiments to run.  The following code runs all experiments and display a summary of the results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9e3784d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "from treat_sim.model import (get_scenarios, run_scenario_analysis,\n",
    "                             scenario_summary_frame, \n",
    "                             DEFAULT_RESULTS_COLLECTION_PERIOD)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b603a08f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Scenario Analysis\n",
      "No. Scenario: 6\n",
      "Replications: 50\n",
      "Running base => done.\n",
      "\n",
      "Running triage+1 => done.\n",
      "\n",
      "Running exam+1 => done.\n",
      "\n",
      "Running treat+1 => done.\n",
      "\n",
      "Running swap_exam_treat => done.\n",
      "\n",
      "Running short_exam => done.\n",
      "\n",
      "Scenario analysis complete.\n"
     ]
    }
   ],
   "source": [
    "results = run_scenario_analysis(get_scenarios(), DEFAULT_RESULTS_COLLECTION_PERIOD,\n",
    "                                n_reps=50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "800d943c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>base</th>\n",
       "      <th>triage+1</th>\n",
       "      <th>exam+1</th>\n",
       "      <th>treat+1</th>\n",
       "      <th>swap_exam_treat</th>\n",
       "      <th>short_exam</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>00_arrivals</th>\n",
       "      <td>227.720000</td>\n",
       "      <td>227.720000</td>\n",
       "      <td>227.720000</td>\n",
       "      <td>227.720000</td>\n",
       "      <td>227.720000</td>\n",
       "      <td>227.720000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>01a_triage_wait</th>\n",
       "      <td>35.243019</td>\n",
       "      <td>1.325176</td>\n",
       "      <td>35.243019</td>\n",
       "      <td>35.243019</td>\n",
       "      <td>1.325176</td>\n",
       "      <td>1.325176</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>01b_triage_util</th>\n",
       "      <td>0.607039</td>\n",
       "      <td>0.303519</td>\n",
       "      <td>0.607039</td>\n",
       "      <td>0.607039</td>\n",
       "      <td>0.303519</td>\n",
       "      <td>0.303519</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>02a_registration_wait</th>\n",
       "      <td>105.572644</td>\n",
       "      <td>135.915119</td>\n",
       "      <td>105.572644</td>\n",
       "      <td>105.572644</td>\n",
       "      <td>135.915119</td>\n",
       "      <td>135.915119</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>02b_registration_util</th>\n",
       "      <td>0.840613</td>\n",
       "      <td>0.843954</td>\n",
       "      <td>0.840613</td>\n",
       "      <td>0.840613</td>\n",
       "      <td>0.843954</td>\n",
       "      <td>0.843954</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>03a_examination_wait</th>\n",
       "      <td>25.552525</td>\n",
       "      <td>26.688866</td>\n",
       "      <td>0.146565</td>\n",
       "      <td>25.552525</td>\n",
       "      <td>148.865965</td>\n",
       "      <td>66.003847</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>03b_examination_util</th>\n",
       "      <td>0.850448</td>\n",
       "      <td>0.853567</td>\n",
       "      <td>0.667856</td>\n",
       "      <td>0.850448</td>\n",
       "      <td>0.893629</td>\n",
       "      <td>0.868998</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>04a_treatment_wait(non_trauma)</th>\n",
       "      <td>136.660635</td>\n",
       "      <td>138.575405</td>\n",
       "      <td>151.808204</td>\n",
       "      <td>2.280962</td>\n",
       "      <td>33.568594</td>\n",
       "      <td>111.337103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>04b_treatment_util(non_trauma)</th>\n",
       "      <td>0.867238</td>\n",
       "      <td>0.869324</td>\n",
       "      <td>0.867691</td>\n",
       "      <td>0.629346</td>\n",
       "      <td>0.836384</td>\n",
       "      <td>0.871039</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>05_total_time(non-trauma)</th>\n",
       "      <td>234.335783</td>\n",
       "      <td>232.133275</td>\n",
       "      <td>223.063821</td>\n",
       "      <td>192.191909</td>\n",
       "      <td>280.729440</td>\n",
       "      <td>244.797808</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>06a_trauma_wait</th>\n",
       "      <td>151.680557</td>\n",
       "      <td>175.135269</td>\n",
       "      <td>151.680557</td>\n",
       "      <td>151.680557</td>\n",
       "      <td>175.135269</td>\n",
       "      <td>175.135269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>06b_trauma_util</th>\n",
       "      <td>0.826941</td>\n",
       "      <td>0.840977</td>\n",
       "      <td>0.826941</td>\n",
       "      <td>0.826941</td>\n",
       "      <td>0.840977</td>\n",
       "      <td>0.840977</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>07a_treatment_wait(trauma)</th>\n",
       "      <td>14.305044</td>\n",
       "      <td>14.997287</td>\n",
       "      <td>14.305044</td>\n",
       "      <td>14.305044</td>\n",
       "      <td>14.997287</td>\n",
       "      <td>14.997287</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>07b_treatment_util(trauma)</th>\n",
       "      <td>0.501010</td>\n",
       "      <td>0.506908</td>\n",
       "      <td>0.501010</td>\n",
       "      <td>0.501010</td>\n",
       "      <td>0.506908</td>\n",
       "      <td>0.506908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>08_total_time(trauma)</th>\n",
       "      <td>292.280487</td>\n",
       "      <td>282.783517</td>\n",
       "      <td>292.280487</td>\n",
       "      <td>292.280487</td>\n",
       "      <td>282.783517</td>\n",
       "      <td>282.783517</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>09_throughput</th>\n",
       "      <td>162.160000</td>\n",
       "      <td>162.920000</td>\n",
       "      <td>165.880000</td>\n",
       "      <td>195.300000</td>\n",
       "      <td>138.540000</td>\n",
       "      <td>156.600000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      base    triage+1      exam+1  \\\n",
       "00_arrivals                     227.720000  227.720000  227.720000   \n",
       "01a_triage_wait                  35.243019    1.325176   35.243019   \n",
       "01b_triage_util                   0.607039    0.303519    0.607039   \n",
       "02a_registration_wait           105.572644  135.915119  105.572644   \n",
       "02b_registration_util             0.840613    0.843954    0.840613   \n",
       "03a_examination_wait             25.552525   26.688866    0.146565   \n",
       "03b_examination_util              0.850448    0.853567    0.667856   \n",
       "04a_treatment_wait(non_trauma)  136.660635  138.575405  151.808204   \n",
       "04b_treatment_util(non_trauma)    0.867238    0.869324    0.867691   \n",
       "05_total_time(non-trauma)       234.335783  232.133275  223.063821   \n",
       "06a_trauma_wait                 151.680557  175.135269  151.680557   \n",
       "06b_trauma_util                   0.826941    0.840977    0.826941   \n",
       "07a_treatment_wait(trauma)       14.305044   14.997287   14.305044   \n",
       "07b_treatment_util(trauma)        0.501010    0.506908    0.501010   \n",
       "08_total_time(trauma)           292.280487  282.783517  292.280487   \n",
       "09_throughput                   162.160000  162.920000  165.880000   \n",
       "\n",
       "                                   treat+1  swap_exam_treat  short_exam  \n",
       "00_arrivals                     227.720000       227.720000  227.720000  \n",
       "01a_triage_wait                  35.243019         1.325176    1.325176  \n",
       "01b_triage_util                   0.607039         0.303519    0.303519  \n",
       "02a_registration_wait           105.572644       135.915119  135.915119  \n",
       "02b_registration_util             0.840613         0.843954    0.843954  \n",
       "03a_examination_wait             25.552525       148.865965   66.003847  \n",
       "03b_examination_util              0.850448         0.893629    0.868998  \n",
       "04a_treatment_wait(non_trauma)    2.280962        33.568594  111.337103  \n",
       "04b_treatment_util(non_trauma)    0.629346         0.836384    0.871039  \n",
       "05_total_time(non-trauma)       192.191909       280.729440  244.797808  \n",
       "06a_trauma_wait                 151.680557       175.135269  175.135269  \n",
       "06b_trauma_util                   0.826941         0.840977    0.840977  \n",
       "07a_treatment_wait(trauma)       14.305044        14.997287   14.997287  \n",
       "07b_treatment_util(trauma)        0.501010         0.506908    0.506908  \n",
       "08_total_time(trauma)           292.280487       282.783517  282.783517  \n",
       "09_throughput                   195.300000       138.540000  156.600000  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scenario_summary_frame(results)"
   ]
  }
 ],
 "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.8.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}