|
17 | 17 | }, |
18 | 18 | { |
19 | 19 | "cell_type": "code", |
20 | | - "execution_count": null, |
21 | 20 | "metadata": {}, |
22 | | - "outputs": [], |
23 | 21 | "source": [ |
24 | 22 | "# install if not done yet\n", |
25 | 23 | "# !apt install libatlas-base-dev swig\n", |
26 | 24 | "# %pip install pypesto[amici,petab] --quiet\n", |
27 | 25 | "# %pip install git+https://github.com/Benchmarking-Initiative/Benchmark-Models-PEtab.git@master#subdirectory=src/python --quiet" |
28 | | - ] |
| 26 | + ], |
| 27 | + "outputs": [], |
| 28 | + "execution_count": null |
29 | 29 | }, |
30 | 30 | { |
31 | 31 | "cell_type": "code", |
32 | | - "execution_count": null, |
33 | 32 | "metadata": {}, |
34 | | - "outputs": [], |
35 | 33 | "source": [ |
36 | 34 | "import os\n", |
37 | 35 | "from pprint import pprint\n", |
|
43 | 41 | "import pypesto.optimize as optimize\n", |
44 | 42 | "import pypesto.petab\n", |
45 | 43 | "import pypesto.visualize as visualize" |
46 | | - ] |
| 44 | + ], |
| 45 | + "outputs": [], |
| 46 | + "execution_count": null |
47 | 47 | }, |
48 | 48 | { |
49 | 49 | "cell_type": "markdown", |
|
68 | 68 | }, |
69 | 69 | { |
70 | 70 | "cell_type": "code", |
71 | | - "execution_count": null, |
72 | 71 | "metadata": { |
73 | 72 | "scrolled": true |
74 | 73 | }, |
75 | | - "outputs": [], |
76 | 74 | "source": [ |
77 | 75 | "# a collection of models that can be simulated\n", |
78 | 76 | "\n", |
|
92 | 90 | "\n", |
93 | 91 | "# create a petab problem\n", |
94 | 92 | "petab_problem = petab.Problem.from_yaml(yaml_config)" |
95 | | - ] |
| 93 | + ], |
| 94 | + "outputs": [], |
| 95 | + "execution_count": null |
96 | 96 | }, |
97 | 97 | { |
98 | 98 | "cell_type": "markdown", |
|
110 | 110 | }, |
111 | 111 | { |
112 | 112 | "cell_type": "code", |
113 | | - "execution_count": null, |
114 | 113 | "metadata": { |
115 | 114 | "scrolled": true |
116 | 115 | }, |
117 | | - "outputs": [], |
118 | 116 | "source": [ |
119 | 117 | "importer = pypesto.petab.PetabImporter(petab_problem, simulator_type=\"amici\")\n", |
120 | 118 | "factory = importer.create_objective_creator()\n", |
121 | 119 | "\n", |
122 | 120 | "model = factory.create_model(verbose=False)\n", |
123 | 121 | "\n", |
124 | 122 | "# some model properties\n", |
125 | | - "print(\"Model parameters:\", list(model.getParameterIds()), \"\\n\")\n", |
126 | | - "print(\"Model const parameters:\", list(model.getFixedParameterIds()), \"\\n\")\n", |
127 | | - "print(\"Model outputs: \", list(model.getObservableIds()), \"\\n\")\n", |
128 | | - "print(\"Model states: \", list(model.getStateIds()), \"\\n\")" |
129 | | - ] |
| 123 | + "print(\"Model parameters:\", list(model.get_parameter_ids()), \"\\n\")\n", |
| 124 | + "print(\"Model const parameters:\", list(model.get_fixed_parameter_ids()), \"\\n\")\n", |
| 125 | + "print(\"Model outputs: \", list(model.get_observable_ids()), \"\\n\")\n", |
| 126 | + "print(\"Model states: \", list(model.get_state_ids()), \"\\n\")" |
| 127 | + ], |
| 128 | + "outputs": [], |
| 129 | + "execution_count": null |
130 | 130 | }, |
131 | 131 | { |
132 | 132 | "cell_type": "markdown", |
|
151 | 151 | }, |
152 | 152 | { |
153 | 153 | "cell_type": "code", |
154 | | - "execution_count": null, |
155 | 154 | "metadata": {}, |
156 | | - "outputs": [], |
157 | 155 | "source": [ |
158 | 156 | "importer = pypesto.petab.PetabImporter.from_yaml(\n", |
159 | 157 | " yaml_config, simulator_type=\"amici\"\n", |
160 | 158 | ")\n", |
161 | 159 | "problem = importer.create_problem() # creating the problem from the importer. The objective can be found at problem.objective" |
162 | | - ] |
| 160 | + ], |
| 161 | + "outputs": [], |
| 162 | + "execution_count": null |
163 | 163 | }, |
164 | 164 | { |
165 | 165 | "cell_type": "markdown", |
|
170 | 170 | }, |
171 | 171 | { |
172 | 172 | "cell_type": "code", |
173 | | - "execution_count": null, |
174 | 173 | "metadata": { |
175 | 174 | "scrolled": true |
176 | 175 | }, |
177 | | - "outputs": [], |
178 | 176 | "source": [ |
179 | 177 | "import libsbml\n", |
180 | 178 | "\n", |
|
185 | 183 | "obj = factory.create_objective()\n", |
186 | 184 | "\n", |
187 | 185 | "# for some models, hyperparameters need to be adjusted\n", |
188 | | - "# obj.amici_solver.setMaxSteps(10000)\n", |
189 | | - "# obj.amici_solver.setRelativeTolerance(1e-7)\n", |
190 | | - "# obj.amici_solver.setAbsoluteTolerance(1e-7)" |
191 | | - ] |
| 186 | + "# obj.amici_solver.set_max_steps(10000)\n", |
| 187 | + "# obj.amici_solver.set_relative_tolerance(1e-7)\n", |
| 188 | + "# obj.amici_solver.set_absolute_tolerance(1e-7)" |
| 189 | + ], |
| 190 | + "outputs": [], |
| 191 | + "execution_count": null |
192 | 192 | }, |
193 | 193 | { |
194 | 194 | "cell_type": "markdown", |
|
199 | 199 | }, |
200 | 200 | { |
201 | 201 | "cell_type": "code", |
202 | | - "execution_count": null, |
203 | 202 | "metadata": {}, |
204 | | - "outputs": [], |
205 | 203 | "source": [ |
206 | 204 | "ret = obj(\n", |
207 | 205 | " petab_problem.x_nominal_scaled,\n", |
|
210 | 208 | " return_dict=True,\n", |
211 | 209 | ")\n", |
212 | 210 | "pprint(ret)" |
213 | | - ] |
| 211 | + ], |
| 212 | + "outputs": [], |
| 213 | + "execution_count": null |
214 | 214 | }, |
215 | 215 | { |
216 | 216 | "cell_type": "markdown", |
|
221 | 221 | }, |
222 | 222 | { |
223 | 223 | "cell_type": "code", |
224 | | - "execution_count": null, |
225 | 224 | "metadata": {}, |
226 | | - "outputs": [], |
227 | 225 | "source": [ |
228 | 226 | "problem = importer.create_problem(obj)" |
229 | | - ] |
| 227 | + ], |
| 228 | + "outputs": [], |
| 229 | + "execution_count": null |
230 | 230 | }, |
231 | 231 | { |
232 | 232 | "cell_type": "markdown", |
|
237 | 237 | }, |
238 | 238 | { |
239 | 239 | "cell_type": "code", |
240 | | - "execution_count": null, |
241 | 240 | "metadata": {}, |
242 | | - "outputs": [], |
243 | 241 | "source": [ |
244 | 242 | "print(f\"{problem.x_fixed_indices=}\")\n", |
245 | 243 | "print(f\"{problem.x_free_indices=}\")" |
246 | | - ] |
| 244 | + ], |
| 245 | + "outputs": [], |
| 246 | + "execution_count": null |
247 | 247 | }, |
248 | 248 | { |
249 | 249 | "cell_type": "markdown", |
|
254 | 254 | }, |
255 | 255 | { |
256 | 256 | "cell_type": "code", |
257 | | - "execution_count": null, |
258 | 257 | "metadata": {}, |
259 | | - "outputs": [], |
260 | 258 | "source": [ |
261 | 259 | "objective = problem.objective\n", |
262 | 260 | "fval, gradient = objective(\n", |
263 | 261 | " petab_problem.x_nominal_free_scaled, sensi_orders=(0, 1)\n", |
264 | 262 | ")\n", |
265 | 263 | "print(f\"{fval=}\\n{gradient=}\")" |
266 | | - ] |
| 264 | + ], |
| 265 | + "outputs": [], |
| 266 | + "execution_count": null |
267 | 267 | }, |
268 | 268 | { |
269 | 269 | "cell_type": "code", |
270 | | - "execution_count": null, |
271 | 270 | "metadata": {}, |
272 | | - "outputs": [], |
273 | 271 | "source": [ |
274 | 272 | "eps = 1e-4\n", |
275 | 273 | "\n", |
|
291 | 289 | "for i, (g, f) in enumerate(zip(gradient, fdval)):\n", |
292 | 290 | " print(f\"{i=}: {g=:9f},\\t{f=:9f},\\t{g - f=:9f}\")\n", |
293 | 291 | "print(f\"l2 difference: {np.linalg.norm(gradient - fdval):.2e}\")" |
294 | | - ] |
| 292 | + ], |
| 293 | + "outputs": [], |
| 294 | + "execution_count": null |
295 | 295 | }, |
296 | 296 | { |
297 | 297 | "cell_type": "markdown", |
|
309 | 309 | }, |
310 | 310 | { |
311 | 311 | "cell_type": "code", |
312 | | - "execution_count": null, |
313 | 312 | "metadata": { |
314 | 313 | "scrolled": true |
315 | 314 | }, |
316 | | - "outputs": [], |
317 | 315 | "source": [ |
318 | 316 | "optimizer = optimize.ScipyOptimizer()\n", |
319 | 317 | "\n", |
|
324 | 322 | "result = optimize.minimize(\n", |
325 | 323 | " problem=problem, optimizer=optimizer, n_starts=10, engine=engine\n", |
326 | 324 | ")" |
327 | | - ] |
| 325 | + ], |
| 326 | + "outputs": [], |
| 327 | + "execution_count": null |
328 | 328 | }, |
329 | 329 | { |
330 | 330 | "cell_type": "markdown", |
|
342 | 342 | }, |
343 | 343 | { |
344 | 344 | "cell_type": "code", |
345 | | - "execution_count": null, |
346 | 345 | "metadata": { |
347 | 346 | "collapsed": false, |
348 | 347 | "jupyter": { |
349 | 348 | "outputs_hidden": false |
350 | 349 | } |
351 | 350 | }, |
352 | | - "outputs": [], |
353 | 351 | "source": [ |
354 | 352 | "problem = importer.create_problem(\n", |
355 | 353 | " startpoint_kwargs={\"check_fval\": True, \"check_grad\": True}\n", |
356 | 354 | ")" |
357 | | - ] |
| 355 | + ], |
| 356 | + "outputs": [], |
| 357 | + "execution_count": null |
358 | 358 | }, |
359 | 359 | { |
360 | 360 | "cell_type": "markdown", |
|
372 | 372 | }, |
373 | 373 | { |
374 | 374 | "cell_type": "code", |
375 | | - "execution_count": null, |
376 | 375 | "metadata": {}, |
377 | | - "outputs": [], |
378 | 376 | "source": [ |
379 | 377 | "result.optimize_result.fval" |
380 | | - ] |
| 378 | + ], |
| 379 | + "outputs": [], |
| 380 | + "execution_count": null |
381 | 381 | }, |
382 | 382 | { |
383 | 383 | "cell_type": "markdown", |
|
388 | 388 | }, |
389 | 389 | { |
390 | 390 | "cell_type": "code", |
391 | | - "execution_count": null, |
392 | 391 | "metadata": {}, |
393 | | - "outputs": [], |
394 | 392 | "source": [ |
395 | 393 | "ref = visualize.create_references(\n", |
396 | 394 | " x=petab_problem.x_nominal_scaled, fval=obj(petab_problem.x_nominal_scaled)\n", |
397 | 395 | ")\n", |
398 | 396 | "\n", |
399 | 397 | "visualize.waterfall(result, reference=ref, scale_y=\"lin\")\n", |
400 | 398 | "visualize.parameters(result, reference=ref);" |
401 | | - ] |
| 399 | + ], |
| 400 | + "outputs": [], |
| 401 | + "execution_count": null |
402 | 402 | }, |
403 | 403 | { |
404 | 404 | "cell_type": "markdown", |
|
413 | 413 | }, |
414 | 414 | { |
415 | 415 | "cell_type": "code", |
416 | | - "execution_count": null, |
417 | 416 | "metadata": { |
418 | 417 | "pycharm": { |
419 | 418 | "name": "#%%\n" |
420 | 419 | } |
421 | 420 | }, |
422 | | - "outputs": [], |
423 | 421 | "source": [ |
424 | 422 | "# we need to explicitly import the method\n", |
425 | 423 | "from pypesto.visualize.model_fit import visualize_optimized_model_fit\n", |
426 | 424 | "\n", |
427 | 425 | "visualize_optimized_model_fit(\n", |
428 | 426 | " petab_problem=petab_problem, result=result, pypesto_problem=problem\n", |
429 | 427 | ");" |
430 | | - ] |
| 428 | + ], |
| 429 | + "outputs": [], |
| 430 | + "execution_count": null |
431 | 431 | } |
432 | 432 | ], |
433 | 433 | "metadata": { |
|
0 commit comments