diff --git a/optimization202/Modeling_Session_1/completed_nonlinear_regression_exercise.ipynb b/optimization202/Modeling_Session_1/completed_nonlinear_regression_exercise.ipynb index 5b385ce..42fbf8b 100755 --- a/optimization202/Modeling_Session_1/completed_nonlinear_regression_exercise.ipynb +++ b/optimization202/Modeling_Session_1/completed_nonlinear_regression_exercise.ipynb @@ -117,15 +117,14 @@ "id": "f6ad2892-6047-4bb5-bfea-0c66e01cc80e", "metadata": {}, "source": [ - "## Problem description\n", - "### Michaelis Menton Enzyme Kinetics\n", - "Michaelis-Menten kinetics describes how quickly a reaction happens when an enzyme—a type of molecule that speeds up processes in the body or other reactions—interacts with other molecules. Initially, as the amount of molecules $x$ increases, the reaction speed, $y$, increases. But at a certain point, adding more molecules doesn’t increase the speed much because the enzyme is already working as fast as it can.\n", + "### Michaelis-Menten Enzyme Kinetics\n", + "[Michaelis-Menten](https://en.wikipedia.org/wiki/Michaelis%E2%80%93Menten_kinetics) kinetics describes how quickly a reaction happens when an enzyme—a type of molecule that speeds up processes in the body or other reactions—interacts with other molecules. Initially, as the amount of molecules $x$ increases, the reaction speed, $y$, increases. But at a certain point, adding more molecules doesn’t increase the speed much because the enzyme is already working as fast as it can.\n", "\n", "![image.png](attachment:dfac2263-b4f3-4d9f-808d-c0d7b34ad8e6.png)\n", "\n", "Two key things come from this: the maximum speed the enzyme can reach $V_{max}$ and the concentration level at which it’s working at half that maximum speed $K_m$. These insights help us understand efficiency and limitations, which is valuable for making decisions in fields like drug development, where knowing an enzyme's limits can guide dosage or predict interactions.\n", "\n", - "In Michaelis Menten kinetics, we can model the speed of an enzymatic reaction can be with the following equations:\n", + "In Michaelis-Menten kinetics, we can model the speed of an enzymatic reaction can be with the following equations:\n", "\n", "$$\n", "[\\text{Speed of reaction}] = \\frac{{\\bf V_{max}}\\cdot [\\text{Initial concentration}]}{K_m + [\\text{Initial concentration}]}\n", @@ -137,7 +136,7 @@ "\n", "where the regression parameters that we will find in this notebook are $V_{max}$ and $K_m$. We will be given data points $i$ for \n", "- The independent variable $x$ which is the concentration. Each data point will be $x_i$.\n", - "- The dependent variable $y(x)$ which is the speed of the reaction that we are trying to model. Each data point will be $y_i$.\n" + "- The dependent variable $y(x)$ which is the speed of the reaction that we are trying to model. Each data point will be $y_i$." ] }, { @@ -174,10 +173,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "bf53b323-9e7b-40c7-a8d8-28723d77ae3a", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: gurobipy in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (12.0.0)\n", + "Requirement already satisfied: plotly in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (5.23.0)\n", + "Requirement already satisfied: tenacity>=6.2.0 in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (from plotly) (8.2.3)\n", + "Requirement already satisfied: packaging in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (from plotly) (23.2)\n", + "Requirement already satisfied: numpy in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (1.26.4)\n", + "Requirement already satisfied: pandas in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (2.2.2)\n", + "Requirement already satisfied: numpy>=1.23.2 in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (from pandas) (1.26.4)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (from pandas) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (from pandas) (2023.3.post1)\n", + "Requirement already satisfied: tzdata>=2022.7 in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (from pandas) (2023.3)\n", + "Requirement already satisfied: six>=1.5 in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (from python-dateutil>=2.8.2->pandas) (1.16.0)\n", + "Requirement already satisfied: openpyxl in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (3.1.2)\n", + "Requirement already satisfied: et-xmlfile in /Users/yurchisin/opt/anaconda3/envs/gurobi_ml/lib/python3.11/site-packages (from openpyxl) (1.1.0)\n" + ] + } + ], "source": [ "!pip install gurobipy\n", "!pip install plotly\n", @@ -238,10 +257,10 @@ "output_type": "stream", "text": [ "Here are the x values:\n", - "{np.float64(0.0): 0.05, np.float64(1.0): 0.1, np.float64(2.0): 0.25, np.float64(3.0): 0.5, np.float64(4.0): 1.0, np.float64(5.0): 2.5, np.float64(6.0): 5.0, np.float64(7.0): 8.0, np.float64(8.0): 20.0, np.float64(9.0): 30.0}\n", + "{0.0: 0.05, 1.0: 0.1, 2.0: 0.25, 3.0: 0.5, 4.0: 1.0, 5.0: 2.5, 6.0: 5.0, 7.0: 8.0, 8.0: 20.0, 9.0: 30.0}\n", "\n", "Here are the y values:\n", - "{np.float64(0.0): 2.98, np.float64(1.0): 5.2, np.float64(2.0): 14.38, np.float64(3.0): 30.3, np.float64(4.0): 48.99, np.float64(5.0): 86.25, np.float64(6.0): 112.57, np.float64(7.0): 136.24, np.float64(8.0): 169.97, np.float64(9.0): 177.71}\n" + "{0.0: 2.98, 1.0: 5.2, 2.0: 14.38, 3.0: 30.3, 4.0: 48.99, 5.0: 86.25, 6.0: 112.57, 7.0: 136.24, 8.0: 169.97, 9.0: 177.71}\n" ] } ], @@ -277,35 +296,6 @@ "id": "0693fe8b-08ac-4bd2-af7f-dcbd531888e3", "metadata": {}, "outputs": [ - { - "data": { - "text/html": [ - " \n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "application/vnd.plotly.v1+json": { @@ -344,7 +334,6 @@ } ], "layout": { - "autosize": true, "template": { "data": { "bar": [ @@ -1208,56 +1197,17 @@ "text": "Nonlinear regression example: Reaction Speed vs Concentration" }, "xaxis": { - "autorange": true, - "range": [ - -1.8746865203761753, - 31.924686520376177 - ], "title": { "text": "x" - }, - "type": "linear" + } }, "yaxis": { - "autorange": true, - "range": [ - -11.439466019417475, - 192.1294660194175 - ], "title": { "text": "y" - }, - "type": "linear" + } } } - }, - "text/html": [ - "
" - ] + } }, "metadata": {}, "output_type": "display_data" @@ -1320,7 +1270,15 @@ "execution_count": 5, "id": "a4d15290-83c7-46c9-bd7d-de202a18a2cf", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Restricted license - for non-production use only - expires 2026-11-23\n" + ] + } + ], "source": [ "# Declare and initialize model\n", "model = gp.Model(\"Nonlinear regression\")" @@ -1521,7 +1479,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "e4b41f36-17ff-4748-95c5-d8d101e80231", "metadata": {}, "outputs": [ @@ -1529,9 +1487,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (mac64[arm] - Darwin 23.6.0 23G93)\n", + "Gurobi Optimizer version 12.0.0 build v12.0.0rc1 (mac64[rosetta2] - Darwin 24.1.0 24B83)\n", "\n", - "CPU model: Apple M1 Pro\n", + "CPU model: Apple M1\n", "Thread count: 8 physical cores, 8 logical processors, using up to 8 threads\n", "\n", "Optimize a model with 0 rows, 12 columns and 0 nonzeros\n", @@ -1556,7 +1514,7 @@ "Variable types: 13 continuous, 0 integer (0 binary)\n", "Found heuristic solution: objective 76.2644466\n", "\n", - "Root relaxation: objective 0.000000e+00, 5 iterations, 0.00 seconds (0.00 work units)\n", + "Root relaxation: objective 0.000000e+00, 5 iterations, 0.01 seconds (0.00 work units)\n", "\n", " Nodes | Current Node | Objective Bounds | Work\n", " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n", @@ -1569,13 +1527,13 @@ "* 1917 51 26 76.2644456 76.22556 0.05% 2.2 0s\n", "* 2134 4 26 76.2644455 76.25478 0.01% 2.2 0s\n", "\n", - "Explored 2299 nodes (4752 simplex iterations) in 0.06 seconds (0.01 work units)\n", + "Explored 2299 nodes (4747 simplex iterations) in 0.13 seconds (0.01 work units)\n", "Thread count was 8 (of 8 available processors)\n", "\n", "Solution count 4: 76.2644 76.2644 76.2644 76.2644 \n", "\n", "Optimal solution found (tolerance 1.00e-04)\n", - "Best objective 7.626444550832e+01, best bound 7.626444409353e+01, gap 0.0000%\n" + "Best objective 7.626444550834e+01, best bound 7.626444409354e+01, gap 0.0000%\n" ] } ], @@ -1601,10 +1559,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "31f7a434-c49f-4ab1-a788-3dcae22bbd48", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An optimial solution was found with objective 76.26444550833548\n", + "\n", + " Variable X \n", + "-------------------------\n", + " Vmax 195.345 \n", + " Km 3.26518 \n", + " ymodel[0.0] 2.94622 \n", + " ymodel[1.0] 5.80489 \n", + " ymodel[2.0] 13.893 \n", + " ymodel[3.0] 25.941 \n", + " ymodel[4.0] 45.8 \n", + " ymodel[5.0] 84.709 \n", + " ymodel[6.0] 118.174 \n", + " ymodel[7.0] 138.725 \n", + " ymodel[8.0] 167.929 \n", + " ymodel[9.0] 176.171 \n" + ] + } + ], "source": [ "status = model.status\n", "if status == GRB.OPTIMAL:\n", @@ -1628,7 +1609,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "2c52078d-528a-4717-bef7-7fc675cd92ab", "metadata": {}, "outputs": [ @@ -1984,111 +1965,110 @@ 30 ], "y": [ - 2.9462211863341503, - 19.035291772484577, - 32.64116811796802, - 44.29755040167961, - 54.3954226370028, - 63.22776782643117, - 71.01846255192636, - 77.94151770607249, - 84.13422985964252, - 89.7063789887091, - 94.74679305939918, - 99.32811887683283, - 103.51034610783087, - 107.34344876698542, - 110.86939168855966, - 114.12367322377509, - 117.13652458703875, - 119.93385181669865, - 122.5379825671759, - 124.96826333510556, - 127.24154093787023, - 129.37255359730096, - 131.37425082742857, - 133.2580568022455, - 135.03408852093938, - 136.71133757015443, - 138.29782237808809, - 139.80071640209988, - 141.22645657407392, - 142.58083546202855, - 143.86907993095184, - 145.09591855522433, - 146.26563961554123, + 2.9462211863341357, + 19.03529177248449, + 32.641168117967894, + 44.297550401679445, + 54.39542263700262, + 63.227767826430984, + 71.01846255192618, + 77.9415177060723, + 84.13422985964233, + 89.70637898870892, + 94.74679305939901, + 99.32811887683263, + 103.51034610783071, + 107.34344876698525, + 110.8693916885595, + 114.12367322377494, + 117.13652458703861, + 119.9338518166985, + 122.5379825671758, + 124.96826333510546, + 127.2415409378701, + 129.37255359730085, + 131.37425082742845, + 133.25805680224545, + 135.03408852093932, + 136.71133757015434, + 138.29782237808803, + 139.80071640209982, + 141.22645657407386, + 142.58083546202852, + 143.8690799309518, + 145.0959185552243, + 146.2656396155412, 147.38214117967294, 148.44897449960717, - 149.46938174306644, + 149.46938174306646, 150.4463289039657, - 151.38253459549117, - 152.28049531449815, - 153.14250767165456, - 153.9706880041365, - 154.76698972350732, - 155.53321869814204, - 156.2710469251744, - 156.98202470982937, - 157.6675915388559, - 158.32908580855127, - 158.9677535457154, - 159.58475624110196, - 160.18117789898056, - 160.75803139282573, - 161.31626420552595, - 161.85676362254463, - 162.38036143790532, - 162.88783822549968, - 163.37992722184998, - 163.85731786094507, - 164.320658996988, - 164.77056184673555, - 165.2076026794874, - 165.63232527961821, - 166.0452432037808, - 166.4468418524794, - 166.83758037358294, - 167.21789341347295, - 167.58819272986707, - 167.94886867889986, - 168.30029158775187, - 168.6428130229734, - 168.97676696363436, - 169.30247088752958, - 169.62022677786513, - 169.9303220571359, - 170.2330304542642, - 170.5286128104988, - 170.81731782906135, - 171.09938277306787, - 171.37503411584265, - 171.6444881473699, - 171.90795154029672, - 172.1656218786001, - 172.41768815175996, - 172.6643312170359, - 172.90572423222383, - 173.14203306106836, - 173.3734166533264, - 173.60002740131105, - 173.82201147459753, - 174.03950913443484, - 174.25265502928525, - 174.46157847279963, - 174.66640370543453, - 174.86725014082336, - 175.06423259792808, - 175.25746151991999, - 175.44704318066596, - 175.6330798796315, - 175.8156701259521, - 175.99490881236747, - 176.17088737966606 + 151.38253459549114, + 152.28049531449818, + 153.14250767165458, + 153.97068800413652, + 154.76698972350735, + 155.533218698142, + 156.27104692517443, + 156.98202470982943, + 157.66759153885596, + 158.32908580855135, + 158.96775354571545, + 159.584756241102, + 160.18117789898062, + 160.75803139282576, + 161.31626420552604, + 161.85676362254472, + 162.38036143790538, + 162.88783822549976, + 163.37992722185004, + 163.85731786094516, + 164.32065899698804, + 164.77056184673566, + 165.20760267948748, + 165.63232527961827, + 166.04524320378093, + 166.4468418524795, + 166.83758037358302, + 167.2178934134731, + 167.5881927298672, + 167.94886867889997, + 168.30029158775199, + 168.64281302297348, + 168.9767669636345, + 169.30247088752967, + 169.62022677786527, + 169.93032205713604, + 170.2330304542643, + 170.52861281049894, + 170.81731782906144, + 171.099382773068, + 171.3750341158428, + 171.64448814737003, + 171.90795154029686, + 172.16562187860026, + 172.4176881517601, + 172.66433121703608, + 172.90572423222397, + 173.1420330610685, + 173.3734166533265, + 173.6000274013112, + 173.82201147459767, + 174.03950913443495, + 174.2526550292854, + 174.4615784727998, + 174.66640370543467, + 174.86725014082353, + 175.06423259792822, + 175.25746151992016, + 175.4470431806661, + 175.63307987963168, + 175.81567012595227, + 175.99490881236767, + 176.1708873796662 ] } ], "layout": { - "autosize": true, "template": { "data": { "bar": [ @@ -2952,57 +2932,17 @@ "text": "Nonlinear regression example: Reaction Speed vs Concentration" }, "xaxis": { - "autorange": true, - "range": [ - -1.8435808945334071, - 31.893580894533407 - ], "title": { "text": "x" - }, - "type": "linear" + } }, "yaxis": { - "autorange": true, - "range": [ - -11.439466019417475, - 192.1294660194175 - ], "title": { "text": "y" - }, - "type": "linear" + } } } - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAABE8AAAFoCAYAAACmM9U+AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAET6ADAAQAAAABAAABaAAAAACxlhEDAABAAElEQVR4AeydB5wURfbHH7vkjGQQBRUDJgRzPnM6FXOO5987s2c605nz6Xnqme/EnHP2zDmjIiYMiIDkHBaWZf/1rd0aemYn9LBpdvf3+Aydqqurv909O/Xr9141K3dmMhEQAREQAREQAREQAREQAREQAREQAREQgbQEitKu1UoREAEREAEREAEREAEREAEREAEREAEREAFPQOKJbgQREAEREAEREAEREAEREAEREAEREAERyEJA4kkWONokAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhJPdA+IgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBYCEk+ywNEmERABERABERABERABERABERABERABEZB4ontABERABERABERABERABERABERABERABLIQkHiSBY42iYAIiIAIiIAIiIAIiIAIiIAIiIAIiIDEE90DIiACIiACIiACIiACIiACIiACIiACIpCFgMSTLHC0SQREQAREQAREQAREQAREQAREQAREQAQknugeEAEREAEREAEREAEREAEREAEREAEREIEsBCSeZIGjTSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIg8UT3gAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhkISDxJAscbRIBERABERABERABERABERABERABERABiSe6B0RABERABERABERABERABERABERABEQgCwGJJ1ngaJMIiIAIiIAIiIAIiIAIiIAIiIAIiIAISDzRPSACIiACIiACIiACIiACIiACIiACIiACWQhIPMkCR5tEQAREQAREQAREQAREQAREQAREQAREQOKJ7gEREAEREAEREAEREAEREAEREAEREAERyEJA4kkWONokAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhJPdA+IgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBYCEk+ywNEmERABERABERABERABERABERABERABEZB4ontABERABERABERABERABERABERABERABLIQkHiSBY42iYAIiIAIiIAIiIAIiIAIiIAIiIAIiIDEE90DIiACIiACIiACIiACIiACIiACIiACIpCFgMSTLHC0SQREQAREQAREQAREQAREQAREQAREQAQknugeEAEREAEREAEREAEREAEREAEREAEREIEsBCSeZIGjTSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIg8UT3gAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhkISDxJAscbRIBERABERABERABERABERABERABERABiSe6B0RABERABERABERABERABERABERABEQgCwGJJ1ngaJMIiIAIiIAIiIAIiIAIiIAIiIAIiIAISDzRPSACIiACIiACIiACIiACIiACIiACIiACWQhIPMkCR5tEQAREQAREQAREQAREQAREQAREQAREQOKJ7gEREAEREAEREAEREAEREAEREAEREAERyEJA4kkWONokAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhJP6uAeKC0ttRtvvNGee+65xNHKy8tt9uzZNm/evMQ6zTQcArp+tX+t0j03tX/UhnuEQronFyxYYD/99JP9+uuvNn/+/AYBlXbyPf3KK68UZHu5vuPGjbNffvnF4CureQKF9AzV/NmpRhEQAREQAREQgeoSaPTiyd13322rrrqq/1x++eVVeF199dV+23fffVdlW02toBN4ww032JNPPpmokk7F0KFD7cADD0ys00zDIaDrV/vXKt1zU9tHjX5f8L2xxhpr2AYbbGDHHnusffrpp7V9+Jz1l5WV2UUXXWT33XdflbKFcE9+/PHHtv/++9s666xjO+20k2233Xa27rrr2qabbmrnn3++TZkypUq7C2XFnDlz/Pf0Cy+8UChN8u346quv7IADDrC1117b/vCHP9gOO+zg+e6666723//+12h3Y7PXXnvN3+eIRTVthf4M1fT5qj4REAEREAEREIGaI9DoxZMlS5YYb5P43H///TZ58uQkemE707q0Nm3a2CabbGKDBw+uy8PqWDVEQNevhkAWWDXh+4Dncp999jE6qL1797bXX3/dDj/8cPvwww/rtcWLFy/2wsmrr75apR31fU/+/vvvdswxx9iIESP899pxxx3nRadtttnGe9g99NBD3muiSsO1IiMBxLx9993XPvvsM9tqq63stNNOsxNOOMG23XZbGzNmjF1xxRWGYNXYjHsIgTD173VNnGch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DS8aQhEknESpaF4EREAEREAEREAEREAEREAERKA+CEg8qQ/qOmYSAfJcMEoN4SK4aRPKwUgWPXv2TCqnhcZBgISw/V0i1EIOhWscpAv7LHQfFPb1UetEQAREQAREQAREQASSCShsJ5mHlkRABERABERABERABERABERABERABEQgiUBR0pIWREAEREAEREAEREAEREAEREAEREAEREAEkghIPEnCoQUREAEREAEREAEREAEREAEREAEREAERSCYg8SSZh5ZEQAREQAREQAREQAREQAREQAREQAREIImAxJMkHFoQAREQAREQAREQAREQAREQAREQAREQgWQCEk+SeWhJBERABERABERABERABERABERABERABJIISDxJwqEFERABERABERABERABERABERABERABEUgmIPEkmYeWREAEREAEREAEREAEREAEREAEREAERCCJgMSTJBxaEAEREAEREAEREAEREAEREAEREAEREIFkAhJPknloSQREQAREQAREQAREQAREQAREQAREQASSCEg8ScKhBREQAREQAREQAREQAREQAREQAREQARFIJiDxJJmHlkRABERABERABERABERABERABERABEQgiYDEkyQcWhABERABERABERABERABERABERABERCBZAIST5J5aEkEREAEREAEREAEREAEREAEREAEREAEkghIPEnCoQUREAEREAEREAEREAEREAEREAEREAERSCYg8SSZh5ZEQAREQAREQAREQAREQAREQAREQAREIImAxJMkHFoQAREQAREQAREQAREQAREQAREQAREQgWQCEk+SeWhJBERABERABERABERABERABERABERABJIISDxJwqEFERABERABERABERABERABERABERABEUgmIPEkmYeWREAEREAEREAEREAEREAEREAEREAERCCJgMSTJBxaEAEREAEREAEREAEREAEREAEREAEREIFkAhJPknloSQREQAREQAREQAREQAREQAREQAREQASSCEg8ScKhBREQAREQAREQAREQAREQAREQAREQARFIJiDxJJmHlkRABERABERABERABERABERABERABEQgiYDEkyQcWhABERABERABERABERABERABERABERCBZAIST5J5aEkEREAEREAEREAEREAEREAEREAEREAEkghIPEnCoQUREAEREAEREAEREAEREAEREAEREAERSCYg8SSZh5ZEQAREQAREQAREQAREQAREQAREQAREIImAxJMkHFoQAREQAREQAREQAREQAREQAREQAREQgWQCEk+SeWhJBERABERABERABERABERABERABERABJIISDxJwqEFERABERABERABERABERABERABERABEUgmIPEkmYeWREAEREAEREAEREAEREAEREAEREAERCCJgMSTJBxaEAEREAEREAEREAEREAEREAEREAEREIFkAhJPknloSQREQAREQAREQAREQAREQAREQAREQASSCEg8ScKhBREQAREQAREQAREQAREQAREQAREQARFIJiDxJJmHlkRABERABERABERABERABERABERABEQgiYDEkyQcWhABERABERABERABERABERABERABERCBZAIST5J5aEkEREAEREAEREAEREAEREAEREAEREAEkghIPEnCoQUREAEREAEREAEREAEREAEREAEREAERSCYg8SSZh5ZEQAREQAREQAREQAREQAREQAREQAREIImAxJMkHFoQAREQAREQAREQAREQAREQAREQAREQgWQCEk+SeWhJBERABERABERABERABERABERABERABJIISDxJwqEFERABERABERABERABERABERABERABEUgmIPEkmYeWREAEREAEREAEREAEREAEREAEREAERCCJgMSTJBxaEAEREAEREAEREAEREAEREAEREAEREIFkAhJPknloSQREQAREQAREQAREQAREQAREQAREQASSCEg8ScKR38LAgQPz20GlRUAEREAEREAEREAEREAEREAEREAEGhwBiScN7pKpwSIgAiIgAiIgAiIgAiIgAiIgAiIgAnVJQOJJXdLWsURABERABERABERABERABERABERABBocAYknDe6SqcEiIAIiIAIiIAIiIAIiIAIiIAIiIAJ1SUDiSV3S1rFEQAREQAREQAREQAREQAREQAREQAQaHAGJJw3ukqnBIiACIiACIiACIiACIiACIiACIiACdUlA4kld0taxREAEREAEREAEREAEREAEREAEREAEGhwBiScN7pKpwSIgAiIgAiIgAiIgAiIgAiIgAiIgAnVJQOJJXdLWsURABERABERABERABERABERABERABBocAYknDe6SqcEiIAIiIAIiIAIiUL8E5i1cbJ+PnWETZ5XUb0N0dBEQAREQARGoIwLN6+g4OowIiIAIiIAIiIAIiEAjIPDi17/bGY9+ZXOdgIIdsWl/u3D3NRvBmTXOUygpKbFmzZpZq1atcp5gPmVzVpajwFtvvWV9+vSxgQMH5iipzSIgAiJQGATkeVIY10GtEAEREAEREAEREIGCJzB17kI75aEvEsIJDR7+/hh7+ovxBd/22mjg/EWL7eFPfrNb3vzJvh4/q0YOMWvWLC8oICqk+9xxxx15Hef444+3008/PdY++ZSNVWGWQjfddJO98cYbWUpUbPr666/tpJNOyllOBURABESgtgnI86S2Cat+ERABERABERABEWgkBD4dM8MWLl5S5Wze+3Gq7TG4b5X1jXkFQtJeN79vY6fP96d51UtmF/xxkB252YBqnXaHDh3shRdeSNQxbNgwO/nkk23rrbf267p165bYFmfm3HPPtaKieO9L8ykb59g1UWbKlCn29ttv10RVqkMEREAEqkVA4km18GlnERABERABERABESgcAqVLSm1R2SIrWVzipwvLFhof1kWnYX3qulAu3Xa2TZ8/z9oOmOnCQEpt8dzVbeHk3fzJd22fOySkcCjVTEv+/caPCeEk1HjFC9/ZsPX6Wue2LcOqvKcIHdFQluLiYuvdu3di3TXXXONDcFhP6MtOO+1kbdq0sdtuu82mTZtmbdu2tR133NHOP/98a9GihT355JPWunVrw6vkww8/tOuuu8423HBDv75du3Z2zDHH2L777uvbmU/Z+fPn2xVXXOGFniVLltigQYOsZ8+evv50J/3zzz/7Nn3xxRfWq1cvmzlzZqLYgw8+mLb91HvRRRcZx/rjH//oy1977bX22WefpS3P+cpEQAREoLYISDypLbKqVwREQAREQAREoMkRWFK+JCFUBAEiCBJhGtZnFS4WZxY9Fi3JLI6UW3mtMy9uXXGIZgsrwlQ6tWlhh2y8Yq0ft9AO8P3EOVWatKhsiY2ZNt8GV0M8qVJpyorx48fb888/b5tttpn3RllxxRUNkeGUU07xAsvEiRPtzDPPtDXWWMMOPPBAmzBhghdXqGb27Nk2YsQIL3JcfPHF9uWXX9oll1xiu+++uxdk8il79dVX26uvvuq9YtZee227/fbb7ZdffklpbcViaWmpF2k6derkxRVEjgsuuCBRFm+adO3ff//9bZ999rFbbrnF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SDzJj5dKi4AIiEC1CDCUbhBHmI6bO84vh3nyjuQyBJHubbsv9RJJ4xmCKLJcm+VMo8fkolkD28tcQlyEDfJkBFGjJGXZr08VP9Is10BzfBUIDQwji+iAqNGSj+tkMZ8INWE+CBnpxI9c250QolCTmrpiqkcEchK46aabbPvtt/fiydNPP21/+9vf7IcffojV4QyVX3rppXb33XfbZZddZvvtt19YbWeccYYhJlx//fW26667WtxyiQpSZs4//3zfGd5jjz38llAfC3TMBgwYYH/9619t2223Tdmzdhbvuusua968uR166KGJA5x11lmeRXXFEzrF1LXBBht48aRNmzb25z//2Z544gl/rRIHzDHz3//+12688Ub78MMPrVUrF85XabNmzbJNNtnE/vWvf/nrH9YX0hTB6KSTTrJvvvkmqVmvvfaaP6fff//dEFeGDh1q1113nRdSQkH4cc9dcsklWe+H0aNH2xFHHGGTJ0/2u6666qp2/PHH2y677BKqyjndZpttfB2HHXaYL4sQc+CBB9oKK6xgt99+u3M4rHmPQ86dY4wfP94fM9yH55xzTtb2xuUSKkl95hAuZ86caW+++aaFexyxYcstt/Trv//+e3++H3/8sf3nP/+x999/3wuy1Dd48GC79tprPZfosxuOxZTvox133DG6Ktb8qFGjPI9jjz3WXz922nnnne3HH3+ssj/PLeeRatOnT7ezzz7bPv30U38OvXv39s/gZptt5oWpr776yj/bPIOIcjVpEk9qkqbqEgERaPIEFpYttN/n/p7wGgkeJEEwIZQmm7Uubm292/W2vh36Wp/2fWz59stbz7Y9rUfbHhXTdj1MOUSyEcxjGyEraUUNPD5SxY80QkcQSghxqSlD3CAXhv90jMyzjmUngCS2h3WhfOVy607y0qip66F6RKBACWy99db2yCOP5CWcRE+FjuI+++zjOx6/u87diy++6DcTGhq1uOWi+7z00kv25Zdf2iuvvJLUcVlvvfXsH//4h82dO9eGDx/uO07vvvtuomMXraOm5+nU19XbdDpwiDTnnXeePfTQQ7GvESLAlVde6Tu70U4pPPFkodNbaIb4wH00bty4KnzxDjn11FMNoeK0007z133PPff0ndoTTzzRnwrbuU8QVnLZEpc0HK7UwbVEhLniiitshx128MJYrv3Zzv0d7nHuwz/9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RwlhOJ9O/NTGzB6TfGblzW29HuvYBr0rPEsGdx9sbVu0TS5Tk0vzpi0VRrxAUimUMORvOmMkGrxIujthJFUoadMl3R5aJwIiIAIiIAIiIAIiIAIiIALVJiDxpNoIVYEIFC6BsbPHJsQSBJPxc11ekIiVL2lhZfNXdJ8BFZ+SFWzXNdez/ddbIVKqmrPkIyFBa2o+EpYXzEhfOXlIuq4cEUgQS/g4TxIlZk3PTGtFQAREQAQaLYH58+fbzJkzrXv37rFHhVwWGB9//LEf6nXw4MFpd587d661bt3amjdv/F2IxYsXW3FxsTXjxU2KTZs2zcrKytKO4JlSNOdiSUmJHxG0Xbt2/vrm3KFACuTb7nzLc5oMOdu3b18bMmTIMp3177//bh06dLD27V3i/wKyOXPm+OeZcyty3tHfffedffvtt7brrrs22aGWC+jyZG1K4//my3r62igCjYsAniXvjn/XPvr9I5/kdcqCKUkn2KFFBx96QwjOpMl97NZXFrrtxUllfpnqRqdZVpsz0WziSPf5ymwy+UicQEICV4YDTmetOlSIIiHUBoGEefKSFCW3K93uWicCIiACIiACjZnAk08+aTfccIONG1fhkUlHfqONNrKTTjrJNthggxo/9QceeMA6depk6cQTBJz11lvP/vWvf9kuu+yS89gTJkywrbbaym699Vbbdtttk8r/6U9/so4dO9p1112XtL5QFmbMmOE7spdccklS2ydNmmQnnniijRgxwnd6V1ttNbvxxhsTI3aef/759tBDDyWdxjrrrGOPP/540rqwcOqpp9rzzz9v5bxocgZ3eHXtGi+f3DXXXOPbwnULRhteeeUVe+SRRxLtCttqappvu/MtTzu596+++mp79NFHfbMvvfRSu/vuu+2yyy6z/fbbL3EqZ5xxhj311FN2/fXX+2uGMMF+b775phelKNi7d2/761//anvuuafnFd0/VLTbbrvZP//5z7CYdTp69Oi0zwAiDfdGJnv55Zftqquust9++80Xod1rrrmm9ezZ004++WTjmTn++OMz7a71BUBA4kkBXAQ1QQSWlcBil/9jxOQR9s64d7xoMnqmS54aseVaL2dDegyx9XtV5CwZ2GWgFTWryP/xxW8znXjyXqR0xew6y3eqsi7tCoSScZ+6zycVYgmCicuhktba94yIJJUCCWE3HXunLa6VIiAC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ael6zYmACIiACIiACIiACIiACIiACDQoAhJPGtTlUmNri8BMl4fkzq/v9MLJwrKF/jBrdVvLCM3p1myoHXTHJ7Zw8e9+/UOf/GZn77y6HbtuS7PP7jL7/G6zeRWj7VirjmbrHlDx6Tu0tpqrekVABERABERABERABERABERABOqQgMSTOoStQxUegXml83xozt2j7jbmsT/0+4NPAju0Z4X4ccR/P3bCSUWCWDeWsG1RNNJWef06K3/zc2tWmTjWerqhhDf4U4WXSct2hXeiapEIiIAIiIAIiIAIiIAIiIAIiMAyE5B4sszotGNDJoB3CeE5d468MxGes3nfze2k9U6yNbqukXRq42YusI421/YrfssOLn7NBhRN9NvLm7khidfap0I0WWGjpH20IAIiIAIiIAIiIAIiIAIiIAIi0HgISDxpPNdSZxKTwHvj37NLP7zUxs0d5/cY0mOInTzkZBvSc0jVGiaMsCuKb7W1W/3PWjcr9dvHlXez51rsaMeecpFZ+wyJY6vWpDUiIAIiIAIiIAIiIAIiIAIiIAINlIDEkwZ64dTs/AlMmT/FrvrkKnt5zMt+51W7rGqnDj3V8DhJstISs1FPVCSAHf+ZuXFyrLyZ2Ztl69i9Zdvbpy03tNsP2sCate+atJsWREAEREAEREAEREAEREAEREAEGicBiSeN87rqrCIElri8JA9//7Dd8PkNNrd0rrVp3saOG3ycHbrGoVZcVLy05GyXEPbDm81G3Gu2YEbF+jZdzAYfbEuGHm0tZ3W0AxaW2T9XWs46tnYhOzIREAEREAEREAEREAEREAEREIEmQUDiSZO4zE33JL+d9q1d9MFFNmraKA+BZLDnbHSO9WrXaymUGb+avXe9E03uMytzww5jfVwIDwlg19rbrEVrQ2LZtJvfov9EQAREQAREQAREQAREQAREQASaGAGJJ03sgjeV051fOt9uHHGjPfDdA4bnSc+2Pb1oss0K2yxFMHW02TvXmo18xGxJmVkzF5uz5jCnkpxk1jdN/pOle2pOBERABERABERABERABERABESgCRFodOLJ4sWLrbi42PWDXUc4xebMmWPz58+3nj17pmwxY7+JEyda7969/f5VCmhFgyHw6q+v2pUfX2mT5k+y4mbFdvigw32YTtsWbSvOYfYEs1cvcKLJoy6ZSbkZoTvrHmi2xWlm3QY2mPNUQ0VABERABERABERABERABERABOqGQFHdHKZujjJjxgzbcsst7fXXX0864MKFC+2kk06yIUOG2BZbbGE77LCDjRkzJlHmkUcescGDB9s222zjp0899VRim2YaDoEJcyfY8a8db6e+eaoXTtbutrY9vNvDdvoGp5sXTkoXuKyvV5rd6LxKvnLeJkUub8n6R5mdOMJs2K0SThrOpVZLRUAEREAEREAEREAEREAERKBOCTQa8eTUU92oKZtvblOmTKkC8NFHH7UPP/zQXnrpJfv888+tb9++dtFFF/lykydPtvPPP9/OO+88GzVqlJ1xxhl29tln2/Tp06vUoxWFSWDxksV219d32R5P7WFvj3vbOrToYOdtdJ7dt8t9ttpyq1U0Gi+TG4c68eQKM0QUwnNO/Mxst3+adVmxME9MrRIBERABERABERABERABERABESgIAo1GPDnnnHO8ONKqVasqYBFNdt55Z1t55ZWtffv2dtRRR9l7771nhPG8+uqr1rlzZzvggAOsRYsWdsghh1ibNm2qeK9UqVQrCoLAF5O/sP2e3c+u++w6KykrsZ0H7GzPDHvG9l99fytq5m7vcZ+a3bmd2eMu+evs8Wa9B5sd+ZLZvsPNOq9QEOegRoiACIiACIiACIiACIiACIiACBQ2gUaT86R79+6edLpcJ+QyISQn2AorrOBSXZQbXidsYzlYUVGR9evXz37//fewyk9LSkqSlrVQvwRmLZxl139+vT32w2O+If069LPzNj7PNu2zaUXDfF6TC114zsMVy+1dnpttXZ6TwQdVJIatWKv/RUAEREAEREAEREAEREAEREAERCAngUYjnmQ7UzxMWrdunSgS5mfPnm18Ur1VWGafqO2zzz7RRc3XI4F3x79r5757rk0vmW7Ni5rb0Wsdbcesc4y1KnZeR4TkvH+D2btu6GE34o41d+s2OcFs87+atWpfj63WoUVABERABERABERABERABERABBoqgSYhnnTo0MFIGhsseJF07NjR+CxatChs8lPKsj5qzz33XHTRzw8cqJFZqkCpxRWlS0rths9vsOGjhvujrN9zffv7Jn+3AZ0GVBx1pPNCYRSdWeMqlgftabb9xcppUkFD/4uACIiACIiACIiACIiACIiACCwjgSYhnvTq1ct+/fXXBCLmCe/p0aOHH7Y4um3JkiU2duzYtMMZ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SAwfPjzq6uqyGXeGDRsWp5122jpZBg4cGJMnT15nOgkIECBAgAABAgQIECBAgACB8hUQPHm/7VLgZMaMGdGnT58sgFJMkwqeFKMkDQECBAgQIECAAAECBAgQKG+B3A8Y29x8NTU1MWDAgOZNrwQIECBAgAABAgQIECBAgACBTCD3Y564DwgQIECAAAECBAgQIECAAAECHyYgePJhOo4RIECAAAECBAgQIECAAAECuRcQPMn9LQCAAAECBAgQIECAAAECBAgQ+DABY558mE4Rx9KgsRYCBAgQIECAAIHNJ2D2w81n78oECBDIi4DZdsq8pZcuXRpnn312jBkzpsxrUvrFHzt2bLz00ktx5ZVXln5hy7yEN910Uxx88MExePDgMq9J6Rf/lFNOidGjR0fXrl1Lv7BlXMJXX301HnzwwbjtttvKuBblUfSRI0fG1ltvHaeffnp5FLiMS3nuuefG8OHDo2/fvmVcC0UnQIAAAQLFCXhspzgnqQgQIECAAAECBAgQIECAAIGcCgie5LThVZsAAQIECBAgQIAAAQIECBAoTkDwpDgnqQgQIECAAAECBAgQIECAAIGcCgie5LThVZsAAQIECBAgQIAAAQIECBAoTsCAscU5SUWAAAECBAgQIECAAAECBAjkVEDPk5w2vGoTIECAAAECBAgQIECAAAECxZ6F9/0AAA9hSURBVAkInhTnJBUBAgQIECBAgAABAgQIECCQUwHBk5w2vGoTIECAAAECBAgQIECAAAECxQkInhTnJBUBAgQIECBAgAABAgQIECCQUwHBkzJv+MWLF8esWbPKvBaKn3eBxsbGaGhoWCNDfX19TJs2ba3H13iSnWsVSJ5NTU1rPe7Axgsk4+nTp8eSJUvWmtnMmTNj6dKlaz3uQHECy5YtiylTpkR6D7G0r8CKFSvi73//e7z77rtrvJDPI2tksZMAAQIEKkhA8KRMG3PlypVx0UUXxX777ReHH354HHfccdmHmjKtTkkX+9prr42BAwe2+hsyZEhJl7mcCpe+yH/rW9+KK664YrVijx49Ovbdd98YPHhw9jpmzJjV0thRvMD8+fPjiCOOiHHjxrU6afz48a3u7+b7PQUALOsn8MADD2T36lFHHRUHHXRQfPnLX4633367JZM333wzjjnmmKwdPv7xj8dll10WtbW1LcetFC/wla98JfbZZ5849thj45BDDolhw4a1OvmAAw5Y7b6+7777WqWxUZzAJZdcEnvvvXd86lOfikMPPTROP/30mDt3bnayzyPFGUpFgAABAuUvIHhSpm3485//PF544YV44okn4o9//GPsuOOOq31wLNOqlVyx05f7ww47LB5//PGWvzvuuKPkylmOBUrBkE984hPx61//erXiz549O1Lg6pprromJEyfG5ZdfHldddVXMmzdvtbR2rFsgffn55Cc/ucZfjZt7oqx6j6f13r17rztjKVoJbLHFFnHbbbfFyy+/nN3XKQCVAirNy3XXXRe77bZbdvyxxx6Lp556KgQFm3XW73XQoEGZ3YQJE+L666+Phx56KF566aWWTNJ9feWVV7a8b6d7+nOf+1zLcSvFC/Tr1y9+9rOfZe/F6XPH1KlT48EHH8wy8HmkeEcpCRAgQKC8BQRPyrT90oeXE088MXbdddfo3r17pF/gnnvuuUjdZi1tL7Dlllu2+gWzb9++bX+RHOaYfjF+9NFH4/jjj1+t9mPHjo2ePXvG0KFDo6amJs4555zo2rXrar0mVjvRjjUKXH311VmwtXPnzms8nnamL/XNvU7Sa8eOHdea1oE1C6Rf5NP9nN6Xk2Hq6fPMM89kiVPg78UXX8x6o6QgS/ryn3oNpvdzy/oLpMDInnvumb0vpP+H2223XYt1c2477LBDq3t6q622aj7kdT0ELr300kg9pTp16hTp/1+HDh2y9+eUhc8j6wEpKQECBAiUtYBPxmXafOl5+fQoQ/PSv3//bByD9Gt9+qJvaVuBV155JXtMauutt866LaeeKJaNF0hfMNNf+iL5wTFP0j2e7uvmJX1YT79+vvPOO827vK6HwLbbbpulrqqqWutZF198cfblKD0qddppp0WXLl3WmtaBdQukcTief/752H333bPEzeNTDRgwoOXktP7qq6+2bFvZMIHJkydH+v+3xx57tMog9fr5zW9+k713pECswHcrnvXaSI/n3HXXXVmAKgWtmh9f9XlkvRglJkCAAIEyFtDzpEwbL/UwWfWLTfP6okWLyrRGpVvs9Jz3SSedFDvvvHM2dsG5556rm/0maK50L3+wl0Ta1ruq7fFTYOWss87KerKlX5ZvueWWSIEUy8YJfOc738kGM/3mN7+ZZdT8/tz8fp12pnX39MY5J780BlgK+qUxOZqXU045JQ4++ODo06dP1jsiPbIj+Nqss/6vaSDkFKRKAyEvXLgw+0u5+Dyy/pbOIECAAIHyFNDzpDzbLetdkn4Fal7SKPhp6dGjR/Mur20kcMYZZ7TKKX0R+uUvfxmnnnpqq/022lYg3csfHEgz3fPu8bZ1Trmlx0duuOGGlozTINTpy2gaYNZjDi0s67Xy4x//OH7605/G3XffnT02kk5uvnc/+N6tt+B60bZKnGbb+frXv571XPvRj34U1dXVLcfTOCjNyze+8Y3sEarf/e538fnPf755t9f1EEg9BJNxGksmGd5+++3x/e9/3+eR9TCUlAABAgTKW0DPkzJtv+233z77RbO5+GmqxtQdPz3zbWlfgWS/fPny9r2I3LPBStN93bykRyDSIIUGMW0Wab/XZuPmoGz7Xakyc/7BD34QaVDpkSNHxtFHH91SyWbXVe/rNPVrek+xrL/AggUL4ktf+lKkHj2PPPJI9OrVa62ZpABV+vLvvXutREUfSJ81Uk/M5sfQfB4pmk5CAgQIEChzAcGTMm3ANCBhmjngrbfeiqVLl8b999+fTR/oF8y2b9Dhw4fHpEmTsl4QaWajNDNGmqrRsvECaZyT9Ct8ek1dwtN6CpKkJQ0mm74cjRo1KjuWZtJIX+ZXHetn40uQnxzq6uoy31Tj1KNn1d4PyTZNX5y636dxI+68887YaaedIg22aVk/gRtvvDH7dT69b6Qxe1KgJP0l7zRm0oEHHhg/+clPIvWYSI9APPnkk2scMHn9rpq/1OnRkdQrMPWOSo9Hpe3k3DwtdBpHJjmnx3SS/T333JPd2+kxHsv6CaTgVOqZ9sYbb2TvHWnQ4zRIbJoKOi0+j6yfp9QECBAgUL4CVYXul03lW/z8ljx9ibzsssuyD97pV6A0kOa9994bu+yyS35R2qnmn/nMZ+LPf/5zS+4nn3xy9mE9zfxi2TiBFPS76aabWmWSpnJNM+ukJf2anL6Epi/+acadYcOGZQOZtjrBRlECZ555Zjat+aqJ03Tn6df6FCz54Q9/mAWp0vE0i1fqkv+xj31s1eTWixBIg2imqXM/uKQAVZqWOwVMvva1r0Wawjj9+03vJ9/97ndXG9/ng+fbbi2Q/I466qjWOwtbKUD1+9//PpsK+vzzz8+CKylRt27d4oorrvDIzmpi696Rgqrp/SPdu81Lum9vvvnmbMwen0eaVbwSIECAQKULCJ6UeQunX4TSL25pQDxL+wmkwfHmzJmTda9PXb8tm04gBU5mzJiR3eMpgGJpH4H063yaNSMFBT3+1z7Gq+aavvynMVD0FlxVpW3XUy+21JMq3ds77rijqbc3kre5Z1p6/CzNkvbBxeeRD4rYJkCAAIFKExA8qbQWVR8CBAgQIECAAAECBAgQIECgTQWMedKmnDIjQIAAAQIECBAgQIAAAQIEKk1A8KTSWlR9CBAgQIAAAQIECBAgQIAAgTYVEDxpU06ZESBAgAABAgQIECBAgAABApUmIHhSaS2qPgQIECBAgAABAgQIECBAgECbCgietCmnzAgQIECAAAECBAgQIECAAIFKExA8qbQWVR8CBAgQIECAAAECBAgQIECgTQUET9qUU2YECBAgQIAAAQIECBAgQIBApQkInlRai6oPAQIECBAgQIAAAQIECBAg0KYCgidtyikzAgQIECBAgAABAgQIECBAoNIEBE8qrUXVhwABAgQIECBAgAABAgQIEGhTAcGTNuWUGQECBAgQIECAAAECBAgQIFBpAoInldai6kOAAAECBAgQIECAAAECBAi0qYDgSZtyyowAAQIECBAgQIAAAQIECBCoNAHBk0prUfUhQIAAAQIECBAgQIAAAQIE2lRA8KRNOWVGgAABAgQIECBAgAABAgQIVJqA4Emltaj6ECBAgAABAgQIECBAgAABAm0qIHjSppwyI0CAAAECBAgQIECAAAECBCpNQPCk0lpUfQgQILAOgauvvjqGDh0as2bNakn53HPPxZAhQ+KJJ55o2WeFAAECBAgQIECAAIH3BARP3AkECBDImcB5550XkyZNiksuuSQaGhpi9uzZcemll0bPnj3juOOOy5mG6hIgQIAAAQIECBBYt0BVU2FZdzIpCBAgQKCSBB5//PG4+OKL4/zzz4+XX345Zs6cGb/61a+iR48elVRNdSFAgAABAgQIECDQJgId2yQXmRAgQIBAWQmcdNJJWdBk5MiR0a1bt/jFL34hcFJWLaiwBAgQIECAAAECm1LAYzubUtu1CBAgUEICu+yyS1aampqa6N69ewmVTFEIECBAgAABAgQIlJaA4ElptYfSECBAYJMIvPbaazF8+PA488wzo7q6Oi688MKora3dJNd2EQIECBAgQIAAAQLlJiB4Um4tprwECBDYSIH58+fHBRdcEPvss08MGzYsbr311pgwYUKMGDFiI3N2OgECBAgQIECAAIHKFBA8qcx2VSsCBAisVSDNrLNixYq4/fbbs14nhx9+eDZw7MMPPxyPPfbYWs9zgAABAgQIECBAgEBeBcy2k9eWV28CBAgQIECAAAECBAgQIECgKAE9T4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq4DgSV5bXr0JECBAgAABAgQIECBAgACBogQET4pikogAAQIECBAgQIAAAQIECBDIq8D/B0h5iqDP+YsCAAAAAElFTkSuQmCC", - "text/html": [ - "
" - ] + } }, "metadata": {}, "output_type": "display_data" @@ -3092,12 +3032,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "f98c1ae2-f9e8-4a9e-b600-45906b50224d", "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Freeing default Gurobi environment\n" + ] + } + ], "source": [ "# Free Gurobi resources: Model and environment\n", "model.dispose()\n", @@ -3107,7 +3055,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "gurobi_ml", "language": "python", "name": "python3" }, @@ -3121,7 +3069,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.11.6" } }, "nbformat": 4, diff --git a/optimization202/Modeling_Session_1/nonlinear_regression_exercise.ipynb b/optimization202/Modeling_Session_1/nonlinear_regression_exercise.ipynb index 089e92e..2c50abf 100755 --- a/optimization202/Modeling_Session_1/nonlinear_regression_exercise.ipynb +++ b/optimization202/Modeling_Session_1/nonlinear_regression_exercise.ipynb @@ -117,15 +117,14 @@ "id": "f6ad2892-6047-4bb5-bfea-0c66e01cc80e", "metadata": {}, "source": [ - "## Problem description\n", - "### Michaelis Menton Enzyme Kinetics\n", - "Michaelis-Menten kinetics describes how quickly a reaction happens when an enzyme—a type of molecule that speeds up processes in the body or other reactions—interacts with other molecules. Initially, as the amount of molecules $x$ increases, the reaction speed, $y$, increases. But at a certain point, adding more molecules doesn’t increase the speed much because the enzyme is already working as fast as it can.\n", + "### Michaelis-Menten Enzyme Kinetics\n", + "[Michaelis-Menten](https://en.wikipedia.org/wiki/Michaelis%E2%80%93Menten_kinetics) kinetics describes how quickly a reaction happens when an enzyme—a type of molecule that speeds up processes in the body or other reactions—interacts with other molecules. Initially, as the amount of molecules $x$ increases, the reaction speed, $y$, increases. But at a certain point, adding more molecules doesn’t increase the speed much because the enzyme is already working as fast as it can.\n", "\n", "![image.png](attachment:dfac2263-b4f3-4d9f-808d-c0d7b34ad8e6.png)\n", "\n", "Two key things come from this: the maximum speed the enzyme can reach $V_{max}$ and the concentration level at which it’s working at half that maximum speed $K_m$. These insights help us understand efficiency and limitations, which is valuable for making decisions in fields like drug development, where knowing an enzyme's limits can guide dosage or predict interactions.\n", "\n", - "In Michaelis Menten kinetics, we can model the speed of an enzymatic reaction can be with the following equations:\n", + "In Michaelis-Menten kinetics, we can model the speed of an enzymatic reaction can be with the following equations:\n", "\n", "$$\n", "[\\text{Speed of reaction}] = \\frac{{\\bf V_{max}}\\cdot [\\text{Initial concentration}]}{K_m + [\\text{Initial concentration}]}\n", @@ -137,7 +136,7 @@ "\n", "where the regression parameters that we will find in this notebook are $V_{max}$ and $K_m$. We will be given data points $i$ for \n", "- The independent variable $x$ which is the concentration. Each data point will be $x_i$.\n", - "- The dependent variable $y(x)$ which is the speed of the reaction that we are trying to model. Each data point will be $y_i$.\n" + "- The dependent variable $y(x)$ which is the speed of the reaction that we are trying to model. Each data point will be $y_i$." ] }, { @@ -188,7 +187,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "b2a60227-b5f8-44cb-9b0b-08fbcc7e873c", "metadata": {}, "outputs": [], @@ -261,996 +260,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "0693fe8b-08ac-4bd2-af7f-dcbd531888e3", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - " \n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "mode": "markers", - "name": "Training data", - "type": "scatter", - "x": [ - 0.05, - 0.1, - 0.25, - 0.5, - 1, - 2.5, - 5, - 8, - 20, - 30 - ], - "y": [ - 2.98, - 5.2, - 14.38, - 30.3, - 48.99, - 86.25, - 112.57, - 136.24, - 169.97, - 177.71 - ] - } - ], - "layout": { - "autosize": true, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "rgb(36,36,36)" - }, - "error_y": { - "color": "rgb(36,36,36)" - }, - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "baxis": { - "endlinecolor": "rgb(36,36,36)", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "rgb(36,36,36)" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1, - "#fde725" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1, - "#fde725" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1, - "#fde725" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.6 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1, - "#fde725" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1, - "#fde725" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - }, - "colorscale": [ - [ - 0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1, - "#fde725" - ] - ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "rgb(237,237,237)" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "rgb(217,217,217)" - }, - "line": { - "color": "white" - } - }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 1, - "tickcolor": "rgb(36,36,36)", - "ticks": "outside" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "rgb(103,0,31)" - ], - [ - 0.1, - "rgb(178,24,43)" - ], - [ - 0.2, - "rgb(214,96,77)" - ], - [ - 0.3, - "rgb(244,165,130)" - ], - [ - 0.4, - "rgb(253,219,199)" - ], - [ - 0.5, - "rgb(247,247,247)" - ], - [ - 0.6, - "rgb(209,229,240)" - ], - [ - 0.7, - "rgb(146,197,222)" - ], - [ - 0.8, - "rgb(67,147,195)" - ], - [ - 0.9, - "rgb(33,102,172)" - ], - [ - 1, - "rgb(5,48,97)" - ] - ], - "sequential": [ - [ - 0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1, - "#fde725" - ] - ], - "sequentialminus": [ - [ - 0, - "#440154" - ], - [ - 0.1111111111111111, - "#482878" - ], - [ - 0.2222222222222222, - "#3e4989" - ], - [ - 0.3333333333333333, - "#31688e" - ], - [ - 0.4444444444444444, - "#26828e" - ], - [ - 0.5555555555555556, - "#1f9e89" - ], - [ - 0.6666666666666666, - "#35b779" - ], - [ - 0.7777777777777778, - "#6ece58" - ], - [ - 0.8888888888888888, - "#b5de2b" - ], - [ - 1, - "#fde725" - ] - ] - }, - "colorway": [ - "#1F77B4", - "#FF7F0E", - "#2CA02C", - "#D62728", - "#9467BD", - "#8C564B", - "#E377C2", - "#7F7F7F", - "#BCBD22", - "#17BECF" - ], - "font": { - "color": "rgb(36,36,36)" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "white", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "white", - "polar": { - "angularaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "radialaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "zaxis": { - "backgroundcolor": "white", - "gridcolor": "rgb(232,232,232)", - "gridwidth": 2, - "linecolor": "rgb(36,36,36)", - "showbackground": true, - "showgrid": false, - "showline": true, - "ticks": "outside", - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - }, - "shapedefaults": { - "fillcolor": "black", - "line": { - "width": 0 - }, - "opacity": 0.3 - }, - "ternary": { - "aaxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "baxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - }, - "bgcolor": "white", - "caxis": { - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - }, - "yaxis": { - "automargin": true, - "gridcolor": "rgb(232,232,232)", - "linecolor": "rgb(36,36,36)", - "showgrid": false, - "showline": true, - "ticks": "outside", - "title": { - "standoff": 15 - }, - "zeroline": false, - "zerolinecolor": "rgb(36,36,36)" - } - } - }, - "title": { - "text": "Nonlinear regression example: Reaction Speed vs Concentration" - }, - "xaxis": { - "autorange": true, - "range": [ - -1.8746865203761753, - 31.924686520376177 - ], - "title": { - "text": "x" - }, - "type": "linear" - }, - "yaxis": { - "autorange": true, - "range": [ - -11.439466019417475, - 192.1294660194175 - ], - "title": { - "text": "y" - }, - "type": "linear" - } - } - }, - "text/html": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Create a figure\n", "fig = go.Figure()\n", @@ -1305,7 +318,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "a4d15290-83c7-46c9-bd7d-de202a18a2cf", "metadata": {}, "outputs": [], @@ -1329,7 +342,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "7b93ec63-f6a6-49dc-a4a6-a7be0cb21c5e", "metadata": {}, "outputs": [], @@ -1390,7 +403,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "38341cae-b427-4855-a4a8-064ba50e3cd5", "metadata": {}, "outputs": [], @@ -1436,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "2fb54b23-d80e-4a37-8ccf-d5c78d31c50e", "metadata": {}, "outputs": [], @@ -1455,7 +468,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "7ed492af-3d18-44ba-afb8-7e8b53efaec0", "metadata": {}, "outputs": [],