diff --git a/docs/source/optimize_interface.ipynb b/docs/source/optimize_interface.ipynb index fcac72dfb..73e6485c9 100644 --- a/docs/source/optimize_interface.ipynb +++ b/docs/source/optimize_interface.ipynb @@ -34,6 +34,8 @@ " combine_static_parameter_interventions,\n", " param_value_objective,\n", " start_time_objective,\n", + " start_time_param_value_objective,\n", + " intervention_func_combinator,\n", ")\n", "\n", "smoke_test = \"CI\" in os.environ" @@ -122,7 +124,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Baseline samples before optimization from model 1" + "### Baseline samples before optimization from model 1 (SIR)" ] }, { @@ -172,7 +174,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Baseline samples before optimization from model 2" + "### Baseline samples before optimization from model 2 (SEIRHD)" ] }, { @@ -1037,7 +1039,7 @@ "### Optimizing for start times of multiple interventions (SEIRHD)\n", "Maximum delay in starting two interventions to get infections below 30000 individuals at 60 days for SEIRHD model\n", "* Intervene on beta_c to be 0.15\n", - "* Intervene on gamma to be 0.35" + "* Intervene on gamma to be 0.4" ] }, { @@ -1441,6 +1443,302 @@ "schema = plots.trajectories(result5[\"data\"], keep=\"I_state\", qlow=0.0, qhigh=1.0)\n", "plots.ipy_display(schema, dpi=150)" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optimize interface with multiple intervention templates\n", + "### Optimizing multiple intervention values and/or start times with existing intervention on hosp parameter (SEIRHD)\n", + "Get infections below 300,000 individuals betweeen 0-90 days for SEIRHD model\n", + "* Minimum change from their current value when intervening on beta_c after 10 days\n", + "* Maximum delay in starting the interventions on gamma with intervention value set to 0.35\n", + "\n", + "Intervention on \"hosp\" parameter is set to 0.1 after 10 days.\n", + "\n", + "QoI defined as max over range of simulated time." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{10.0: {'beta_c': tensor(0.4000)}} {5.0: {'gamma': tensor(0.4000)}}\n", + "{10.0: {'beta_c': tensor(0.3000)}, 5.0: {'gamma': tensor(0.4000)}}\n" + ] + } + ], + "source": [ + "intervened_params = [\"beta_c\", \"gamma\", \"gamma_c\"]\n", + "static_parameter_interventions1 = param_value_objective(\n", + " param_name=[intervened_params[0]],\n", + " start_time=torch.tensor([10.0]),\n", + ")\n", + "static_parameter_interventions2 = start_time_objective(\n", + " param_name=[intervened_params[1]],\n", + " param_value=torch.tensor([0.4]),\n", + ")\n", + "\n", + "# Combine different intervention templates\n", + "static_parameter_interventions_comb = intervention_func_combinator(\n", + " [static_parameter_interventions1, static_parameter_interventions2],\n", + " [1, 1],\n", + ")\n", + "\n", + "print(\n", + " static_parameter_interventions1(torch.tensor(0.4)),\n", + " static_parameter_interventions2(torch.tensor(5.0)),\n", + ")\n", + "print(static_parameter_interventions_comb(torch.tensor([0.3, 5.0])))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 1%| | 1/120 [00:07<14:48, 7.46s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 2%|▎ | 3/120 [00:12<07:09, 3.67s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 5%|▌ | 6/120 [00:16<04:19, 2.28s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 15%|█▌ | 18/120 [00:59<08:21, 4.92s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 21%|██ | 25/120 [01:42<10:09, 6.42s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 27%|██▋ | 32/120 [02:22<08:54, 6.07s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 29%|██▉ | 35/120 [02:35<07:31, 5.31s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 31%|███ | 37/120 [02:41<06:12, 4.49s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 40%|████ | 48/120 [03:32<07:01, 5.86s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 52%|█████▎ | 63/120 [05:01<06:02, 6.35s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 54%|█████▍ | 65/120 [05:08<04:40, 5.10s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 61%|██████ | 73/120 [05:16<01:47, 2.28s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 64%|██████▍ | 77/120 [05:22<01:29, 2.07s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 70%|███████ | 84/120 [05:29<00:55, 1.55s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 72%|███████▎ | 87/120 [05:43<01:17, 2.36s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 78%|███████▊ | 94/120 [06:01<01:10, 2.69s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 81%|████████ | 97/120 [06:14<01:15, 3.27s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 82%|████████▎ | 99/120 [06:20<01:08, 3.24s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + " 92%|█████████▏| 110/120 [07:10<00:55, 5.54s/it]C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\ouu\\ouu.py:108: UserWarning: Selected interventions are out of bounds. Will use a penalty instead of estimating risk.\n", + " warnings.warn(\n", + "124it [08:28, 4.10s/it] " + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimal policy: tensor([ 0.1998, 12.1812], dtype=torch.float64)\n", + "{'policy': tensor([ 0.1998, 12.1812], dtype=torch.float64), 'OptResults': message: ['requested number of basinhopping iterations completed successfully']\n", + " success: False\n", + " fun: 0.09606939020723225\n", + " x: [ 1.998e-01 1.218e+01]\n", + " nit: 3\n", + " minimization_failures: 4\n", + " nfev: 120\n", + " lowest_optimization_result: message: Did not converge to a solution satisfying the constraints. See `maxcv` for magnitude of violation.\n", + " success: False\n", + " status: 4\n", + " fun: 0.09606939020723225\n", + " x: [ 1.998e-01 1.218e+01]\n", + " nfev: 30\n", + " maxcv: 1949.409374999872}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "C:\\Users\\Anirban\\Documents\\GitHub\\pyciemss\\pyciemss\\interfaces.py:964: UserWarning: Optimal intervention policy does not satisfy constraints.Check if the risk_bounds value is appropriate for given problem.Otherwise, try (i) different initial_guess_interventions, (ii) increasing maxiter/maxfeval,and/or (iii) increase n_samples_ouu to improve accuracy of Monte Carlo risk estimation. \n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "# Define optimization problem setup\n", + "observed_params = [\"I_state\"]\n", + "risk_bound = 3e5\n", + "qoi = lambda y: obs_max_qoi(y, observed_params)\n", + "initial_guess_interventions = [0.35, 5.0]\n", + "bounds_interventions = [[0.1, 1.0], [0.5, end_time_SEIRHD2]]\n", + "\n", + "# Objective function\n", + "beta_c_current = 0.35\n", + "# Scaling factors for start time and parameter values in the objective function\n", + "scaling_factor_obj = [1.0, 0.4 / (end_time_SEIRHD2 - start_time)]\n", + "objfun = (\n", + " lambda x: np.abs(beta_c_current - x[0]) * scaling_factor_obj[0]\n", + " - x[1] * scaling_factor_obj[1]\n", + ")\n", + "\n", + "# Creating a combined intervention\n", + "intervened_params = [\"beta_c\", \"gamma\"]\n", + "static_parameter_interventions1 = param_value_objective(\n", + " param_name=[intervened_params[0]],\n", + " start_time=torch.tensor([10.0]),\n", + ")\n", + "static_parameter_interventions2 = start_time_objective(\n", + " param_name=[intervened_params[1]],\n", + " param_value=torch.tensor([0.45]),\n", + ")\n", + "# Combine different intervention templates into a list of Callables\n", + "static_parameter_interventions = intervention_func_combinator(\n", + " [static_parameter_interventions1, static_parameter_interventions2],\n", + " [1, 1],\n", + ")\n", + "\n", + "# Fixed intervention on hosp parameter\n", + "fixed_interventions = {10.0: {\"hosp\": torch.tensor(0.1)}}\n", + "\n", + "# Run optimize interface\n", + "opt_result6 = pyciemss.optimize(\n", + " model_opt2,\n", + " end_time_SEIRHD2,\n", + " logging_step_size,\n", + " qoi,\n", + " risk_bound,\n", + " static_parameter_interventions,\n", + " objfun,\n", + " initial_guess_interventions=initial_guess_interventions,\n", + " bounds_interventions=bounds_interventions,\n", + " start_time=start_time,\n", + " n_samples_ouu=num_samples_ouu,\n", + " maxiter=maxiter,\n", + " maxfeval=maxfeval,\n", + " fixed_static_parameter_interventions=fixed_interventions,\n", + " solver_method=\"rk4\",\n", + " solver_options={\"step_size\": 1.0},\n", + ")\n", + "print(f\"Optimal policy:\", opt_result6[\"policy\"])\n", + "print(opt_result6)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Sample using optimal policy as intervention" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fixed interventions: {10.0: {'hosp': tensor(0.1000)}}\n", + "Optimal intervention (including fixed interventions): {10.0: {'hosp': tensor(0.1000), 'beta_c': tensor(0.1998)}, 12.1812: {'gamma': tensor(0.4500)}}\n", + "Risk associated with QoI: [308213.24624999985]\n" + ] + }, + { + "data": { + "image/png": "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IK76T/XFX/zFBvjkT/5kcdVVV1111VVXXXXVVVddddVVV131InjoQx/60Me800d/tHztg3khrHtvffyPfPVXP+1pT3sa/34vDRzjRfc7/O+CuOo/1Rd/8Rcb4JM/+ZPFVVddddVVV1111VVXXXXVVVddddW/wiu/8iu/8pmHPvShvuXFXxwe+lAAeNrTdNvf//3Zpz3taX/8x3/8x/zH+W3gtXjRif9dEFf9p/riL/5iA3zyJ3+yuOqqq6666qqrrrrqqquuuuqqq6666r8L4qr/VF/8xV9sgE/+5E8WV1111VVXXXXVVVddddVVV1111VVX/XdBXPWf6ou/+IsN8Mmf/Mniqquuuuqqq6666qqrrrrqqquuuuqq/y6Iq/5TffEXf7EBPvmTP1lcddVVV1111VVXXXXVVVddddVVV1313wVx1X+qL/7iLzbAJ3/yJ4urrrrqqquuuuqqq6666qqrrrrqqqv+uyCu+k/1xV/8xQb45E/+ZHHVVVddddVVV1111VVXXXXVVVddddV/F8RV/6m++Iu/2ACf/MmfLK666qqrrrrqqquuuuqqq6666qqrrvrvgrjqP9UXf/EXG+CTP/mTxVVXXXXVVVddddVVV1111VVXXXXVVf9dEFf9p/riL/5iA3zyJ3+yuOqqq6666qqrrrrqqquuuuqqq6666r8L4qr/VF/8xV9sgE/+5E8WV1111VVXXXXVVVddddVVV1111VVX/XdBXPWf6ou/+IsN8Mmf/Mniqquuuuqqq6666qqrrrrqqquuuuqq/y6Iq/5TffEXf7EBPvmTP1lcddVVV1111VVXXXXVVVddddVVV1313wVx1X+qL/7iLzbAJ3/yJ4urrrrqqquuuuqqq6666qqrrrrqqqv+uyCu+k/1xV/8xQb45E/+ZHHVVVddddVVV1111VVXXXXVVVddddV/F8RV/6m++Iu/2ACf/MmfLK666qqrrrrqqquuuuqqq6666qqrrvrvgrjqP9UXf/EXG+CTP/mTxVVXXXXVVVddddVVV1111VVXXXXVVf9dEFf9p/riL/5iA3zyJ3+yuOqqq6666qqrrrrqqquuuuqqq6666r8L4qr/VF/8xV9sgE/+5E8WV1111VVXXXXVVVddddVVV1111VVX/XdBXPWf6ou/+IsN8Mmf/Mniqquuuuqqq6666qqrrrrqqquuuuqq/y6Iq/5TffEXf7EBPvmTP1lcddVVV1111VVXXXXVVVddddVVV1313wVx1X+qL/7iLzbAJ3/yJ4urrrrqqquuuuqqq6666qqrrrrqqqv+uyCu+k/1xV/8xQb45E/+ZHHVVVddddVVV1111VVXXXXVVVddddV/F8RV/6m++Iu/2ACf/MmfLK666qqrrrrqqquuuuqqq6666qqrrvrvgrjqP9UXf/EXG+CTP/mTxVVXXXXVVVddddVVV1111VVXXXXVVf9dEFf9p/riL/5iA3zyJ3+yuOqqq6666qqrrrrqqquuuuqqq6666r8L4qr/VF/8xV9sgE/+5E8WV1111VVXXXXVVVddddVVV1111VVX/XdBXPWf6ou/+IsN8Mmf/Mniqquuuuqqq6666qqrrrrqqquuuuqq/y6Iq/5TffEXf7EBPvmTP1lcddVVV1111VVXXXXVVVddddVVV1313wVx1X+qL/7iLzbAJ3/yJ4urrrrqqquuuuqqq6666qqrrrrqqqv+uyCu+k/1xV/8xQb45E/+ZHHVVVddddVVV1111VVXXXXVVVddddV/F8RV/6m++Iu/2ACf/MmfLK666qqrrrrqqquuuuqqq6666qqrrvrvgrjqP9UXf/EXG+CTP/mTxVVXXXXVVVddddVVV1111VVXXXXVVf9dEFf9p/riL/5iA3zyJ3+yuOqqq6666qqrrrrqqquuuuqqq6666r8L4qr/VF/8xV9sgE/+5E8WV1111VVXXXXVVVddddVVV1111VVX/XdBXPWf6ou/+IsN8Mmf/Mniqquuuuqqq6666qqrrrrqqquuuuqq/y6Iq/5TffEXf7EBPvmTP1lcddVVV1111VVXXXXVVVddddVVV1313wVx1X+qL/7iLzbAJ3/yJ4urrrrqqquuuuqqq6666qqrrrrqqqv+uyCu+k/1xV/8xQb45E/+ZHHVVVddddVVV1111VVXXXXVVVddddV/F8RV/6m++Iu/2ACf/MmfLK666qqrrrrqqquuuuqqq6666qqrrvrvgrjqP9UXf/EXG+CTP/mTxVVXXXXVVVddddVVV1111VVXXXXVVf9dEFf9p/riL/5iA3zyJ3+yuOqqq6666qqrrrrqqquuuuqqq6666r8L4qr/VF/8xV9sgE/+5E8WV1111VVXXXXVVVddddVVV1111VVX/XdBXPWf6ou/+IsN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", + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from copy import deepcopy\n", + "print(\"Fixed interventions: \", fixed_interventions)\n", + "intervention_list = [deepcopy(fixed_interventions)]\n", + "intervention_list.extend([static_parameter_interventions(opt_result6[\"policy\"])])\n", + "opt_intervention = combine_static_parameter_interventions(intervention_list)\n", + "print(\"Optimal intervention (including fixed interventions): \", opt_intervention)\n", + "with pyro.poutine.seed(rng_seed=0):\n", + " result6 = pyciemss.sample(\n", + " model_opt2,\n", + " end_time_SEIRHD2,\n", + " logging_step_size,\n", + " num_samples,\n", + " start_time=start_time,\n", + " static_parameter_interventions=opt_intervention,\n", + " solver_method=\"rk4\",\n", + " solver_options={\"step_size\": 1.},\n", + " )\n", + "\n", + "# Check risk estimate used in constraints\n", + "print(\"Risk associated with QoI:\", result6[\"risk\"][observed_params[0]][\"risk\"])\n", + "# Plot results for all states\n", + "schema = plots.trajectories(result6[\"data\"], keep=\"I_state\", qlow=0.0, qhigh=1.0)\n", + "plots.ipy_display(schema, dpi=150)" + ] } ], "metadata": { diff --git a/pyciemss/integration_utils/intervention_builder.py b/pyciemss/integration_utils/intervention_builder.py index 1f9391d86..572722576 100644 --- a/pyciemss/integration_utils/intervention_builder.py +++ b/pyciemss/integration_utils/intervention_builder.py @@ -20,6 +20,11 @@ def param_value_objective( def intervention_generator( x: torch.Tensor, ) -> Dict[float, Dict[str, Intervention]]: + x = torch.atleast_1d(x) + assert x.size()[0] == param_size, ( + f"Size mismatch between input size ('{x.size()[0]}') and param_name size ('{param_size}'): " + "check size for initial_guess_interventions and/or bounds_interventions." + ) static_parameter_interventions: Dict[float, Dict[str, Intervention]] = {} for count in range(param_size): if start_time[count].item() in static_parameter_interventions: @@ -48,6 +53,11 @@ def start_time_objective( def intervention_generator( x: torch.Tensor, ) -> Dict[float, Dict[str, Intervention]]: + x = torch.atleast_1d(x) + assert x.size()[0] == param_size, ( + f"Size mismatch between input size ('{x.size()[0]}') and param_name size ('{param_size}'): " + "check size for initial_guess_interventions and/or bounds_interventions." + ) static_parameter_interventions: Dict[float, Dict[str, Intervention]] = {} for count in range(param_size): if x[count].item() in static_parameter_interventions: @@ -78,9 +88,11 @@ def start_time_param_value_objective( def intervention_generator( x: torch.Tensor, ) -> Dict[float, Dict[str, Intervention]]: - assert ( - x.size()[0] == param_size * 2 - ), "Size mismatch: check size for initial_guess_interventions and/or bounds_interventions" + x = torch.atleast_1d(x) + assert x.size()[0] == param_size * 2, ( + f"Size mismatch between input size ('{x.size()[0]}') and param_name size ('{param_size * 2}'): " + "check size for initial_guess_interventions and/or bounds_interventions." + ) static_parameter_interventions: Dict[float, Dict[str, Intervention]] = {} for count in range(param_size): if x[count * 2].item() in static_parameter_interventions: @@ -102,10 +114,40 @@ def intervention_generator( return intervention_generator +def intervention_func_combinator( + intervention_funcs: List[ + Callable[[torch.Tensor], Dict[float, Dict[str, Intervention]]] + ], + intervention_func_lengths: List[int], +) -> Callable[[torch.Tensor], Dict[float, Dict[str, Intervention]]]: + assert len(intervention_funcs) == len(intervention_func_lengths) + + total_length = sum(intervention_func_lengths) + + # Note: This only works for combining static parameter interventions. + def intervention_generator( + x: torch.Tensor, + ) -> Dict[float, Dict[str, Intervention]]: + x = torch.atleast_1d(x) + assert x.size()[0] == total_length + interventions: List[Dict[float, Dict[str, Intervention]]] = [ + {} for _ in range(len(intervention_funcs)) + ] + i = 0 + for j, (input_length, intervention_func) in enumerate( + zip(intervention_func_lengths, intervention_funcs) + ): + interventions[j] = intervention_func(x[i : i + input_length]) + i += input_length + return combine_static_parameter_interventions(interventions) + + return intervention_generator + + def combine_static_parameter_interventions( - interventions: List[Dict[torch.Tensor, Dict[str, Intervention]]] -) -> Dict[torch.Tensor, Dict[str, Intervention]]: - static_parameter_interventions: Dict[torch.Tensor, Dict[str, Intervention]] = {} + interventions: List[Dict[float, Dict[str, Intervention]]] +) -> Dict[float, Dict[str, Intervention]]: + static_parameter_interventions: Dict[float, Dict[str, Intervention]] = {} for intervention in interventions: for key, value in intervention.items(): if key in static_parameter_interventions: diff --git a/pyciemss/interfaces.py b/pyciemss/interfaces.py index 3152fdf1c..81f876457 100644 --- a/pyciemss/interfaces.py +++ b/pyciemss/interfaces.py @@ -783,9 +783,7 @@ def optimize( solver_options: Dict[str, Any] = {}, start_time: float = 0.0, inferred_parameters: Optional[pyro.nn.PyroModule] = None, - fixed_static_parameter_interventions: Dict[ - torch.Tensor, Dict[str, Intervention] - ] = {}, + fixed_static_parameter_interventions: Dict[float, Dict[str, Intervention]] = {}, n_samples_ouu: int = int(1e3), maxiter: int = 5, maxfeval: int = 25, diff --git a/pyciemss/ouu/ouu.py b/pyciemss/ouu/ouu.py index c889a4b4c..7eb98e142 100644 --- a/pyciemss/ouu/ouu.py +++ b/pyciemss/ouu/ouu.py @@ -74,9 +74,7 @@ def __init__( risk_measure: Callable = lambda z: alpha_superquantile(z, alpha=0.95), num_samples: int = 1000, guide=None, - fixed_static_parameter_interventions: Dict[ - torch.Tensor, Dict[str, Intervention] - ] = {}, + fixed_static_parameter_interventions: Dict[float, Dict[str, Intervention]] = {}, solver_method: str = "dopri5", solver_options: Dict[str, Any] = {}, u_bounds: np.ndarray = np.atleast_2d([[0], [1]]), @@ -128,11 +126,12 @@ def propagate_uncertainty(self, x): with torch.no_grad(): x = np.atleast_1d(x) # Combine existing interventions with intervention being optimized + intervention_list = [ + deepcopy(self.fixed_static_parameter_interventions) + ] + intervention_list.extend([self.interventions(torch.from_numpy(x))]) static_parameter_interventions = combine_static_parameter_interventions( - [ - deepcopy(self.fixed_static_parameter_interventions), - self.interventions(torch.from_numpy(x)), - ] + intervention_list ) static_parameter_intervention_handlers = [ StaticParameterIntervention( diff --git a/tests/fixtures.py b/tests/fixtures.py index 9d2d75802..198d161cb 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -7,6 +7,7 @@ import torch from pyciemss.integration_utils.intervention_builder import ( + intervention_func_combinator, param_value_objective, start_time_objective, start_time_param_value_objective, @@ -93,7 +94,7 @@ def __init__( ModelFixture(os.path.join(MODELS_PATH, "SEIRHD_stockflow.json"), "p_cbeta"), ] -optimize_kwargs_SIRstockflow_param = { +optkwargs_SIRstockflow_param = { "qoi": lambda x: obs_nday_average_qoi(x, ["I_state"], 1), "risk_bound": 300.0, "static_parameter_interventions": param_value_objective( @@ -106,7 +107,7 @@ def __init__( "bounds_interventions": [[0.1], [0.5]], } -optimize_kwargs_SIRstockflow_time = { +optkwargs_SIRstockflow_time = { "qoi": lambda x: obs_nday_average_qoi(x, ["I_state"], 1), "risk_bound": 300.0, "static_parameter_interventions": start_time_objective( @@ -118,7 +119,7 @@ def __init__( "bounds_interventions": [[0.0], [40.0]], } -optimize_kwargs_SIRstockflow_time_param = { +optkwargs_SIRstockflow_time_param = { "qoi": lambda x: obs_nday_average_qoi(x, ["I_state"], 1), "risk_bound": 300.0, "static_parameter_interventions": start_time_param_value_objective( @@ -129,35 +130,45 @@ def __init__( "bounds_interventions": [[0.0, 0.1], [40.0, 0.5]], } -optimize_kwargs_SEIRHD_param_maxQoI = { +# Creating a combined interventions by combining into list of Callables +intervened_params = ["beta_c", "gamma"] +static_parameter_interventions1 = param_value_objective( + param_name=[intervened_params[0]], + start_time=torch.tensor([10.0]), +) +static_parameter_interventions2 = start_time_objective( + param_name=[intervened_params[1]], + param_value=torch.tensor([0.45]), +) +optkwargs_SEIRHD_paramtimeComb_maxQoI = { "qoi": lambda x: obs_max_qoi(x, ["I_state"]), - "risk_bound": 300.0, - "static_parameter_interventions": param_value_objective( - param_name=["beta_c", "gamma"], - start_time=[torch.tensor(10.0), torch.tensor(15.0)], + "risk_bound": 3e5, + "static_parameter_interventions": intervention_func_combinator( + [static_parameter_interventions1, static_parameter_interventions2], + [1, 1], ), - "objfun": lambda x: np.abs(0.35 - x[0]) + np.abs(0.2 - x[1]), - "initial_guess_interventions": [0.2, 0.4], - "bounds_interventions": [[0.1, 0.1], [0.5, 0.5]], + "objfun": lambda x: np.abs(0.35 - x[0]) - x[1], + "initial_guess_interventions": [0.35, 5.0], + "bounds_interventions": [[0.1, 1.0], [0.5, 90.0]], "fixed_static_parameter_interventions": {10.0: {"hosp": torch.tensor(0.1)}}, } OPT_MODELS = [ ModelFixture( os.path.join(MODELS_PATH, "SIR_stockflow.json"), - optimize_kwargs=optimize_kwargs_SIRstockflow_param, + optimize_kwargs=optkwargs_SIRstockflow_param, ), ModelFixture( os.path.join(MODELS_PATH, "SIR_stockflow.json"), - optimize_kwargs=optimize_kwargs_SIRstockflow_time, + optimize_kwargs=optkwargs_SIRstockflow_time, ), ModelFixture( os.path.join(MODELS_PATH, "SIR_stockflow.json"), - optimize_kwargs=optimize_kwargs_SIRstockflow_time_param, + optimize_kwargs=optkwargs_SIRstockflow_time_param, ), ModelFixture( os.path.join(MODELS_PATH, "SEIRHD_NPI_Type1_petrinet.json"), - optimize_kwargs=optimize_kwargs_SEIRHD_param_maxQoI, + optimize_kwargs=optkwargs_SEIRHD_paramtimeComb_maxQoI, ), ] diff --git a/tests/test_interfaces.py b/tests/test_interfaces.py index 4b58a5710..7e647c5b3 100644 --- a/tests/test_interfaces.py +++ b/tests/test_interfaces.py @@ -584,12 +584,18 @@ def test_optimize(model_fixture, start_time, end_time, num_samples): assert opt_policy[i] <= bounds_interventions[1][i] if "fixed_static_parameter_interventions" in optimize_kwargs: - opt_intervention = combine_static_parameter_interventions( - [ - deepcopy(optimize_kwargs["fixed_static_parameter_interventions"]), + intervention_list = [ + deepcopy(optimize_kwargs["fixed_static_parameter_interventions"]) + ] + intervention_list.extend( + [optimize_kwargs["static_parameter_interventions"](opt_result["policy"])] + if not isinstance( optimize_kwargs["static_parameter_interventions"](opt_result["policy"]), - ] + list, + ) + else optimize_kwargs["static_parameter_interventions"](opt_result["policy"]) ) + opt_intervention = combine_static_parameter_interventions(intervention_list) else: opt_intervention = optimize_kwargs["static_parameter_interventions"]( opt_result["policy"]