pyPESTO
pyPESTO copied to clipboard
Aggregated Objective does not return expected outputs using `return_dict`
Bug description
The functions available in pypesto.visualize.model_fit cannot work with an AggregatedObjective and hence fail.
There are two reasons:
- the amici model is not available by objective.amici_model (I already fixed that issue in the branch
visualize_aggregatedby adding a new property to theAggregatedObjective) - calling
pypesto_problem.objective(x, return_dict=True)does return emptyrdatas. (this I could not fix right away)
Expected behavior
The visuslization routines should still work properly.
Also I would expect pypesto_problem.objective(x, return_dict=True) to return non empty rdatas.
Calling pypesto_problem.objective._objectives[0](x, return_dict=True) instead works and does return non empty rdatas.
To reproduce I attached a minimal example using the Blasi model and PeTab. minimal example.zip
Environment
- Operating system: MacOs
pypestoversion: branchvisualize_aggregated- Python version: python 3.10
maybe @dweindl can help here?
maybe @dweindl can help here?
I am not too familiar with either AggregatedObjective or pypesto.visualize.model_fit, but I agree that it should either work, or raise an informative error.
the amici model is not available by objective.amici_model
That makes sense, because often AggregatedObjective won't have only a single model (https://github.com/ICB-DCM/pyPESTO/issues/439).
(I already fixed that issue in the branch
visualize_aggregatedby adding a new property to theAggregatedObjective)
I would rather handle AggregatedObjective separately in the visualization code instead of adding amici_model to AggregatedObjective, since there will probably be multiple models.
I would rather handle
AggregatedObjectiveseparately in the visualization code instead of addingamici_modeltoAggregatedObjective, since there will probably be multiple models.
Okay, I thought that AggregatedObjective is usually an AmiciObjective and NegLogPriors and not multiple models. This makes it rather complicated to write a general visualization function.
I don't know how it's currently used, but one of the goals would be using it with PEtab problems comprising multiple models (https://github.com/ICB-DCM/pyPESTO/issues/439) and I wouldn't add anything that will complicate this.
I think it's nevertheless possible to provide some meaningful visualizations. Just iterate over the objectives and visualize what's possible and give a warning if any of those cannot be handled.
@arrjon can this be closed with the merge of #1411?
@arrjon can this be closed with the merge of #1411?
Regarding visualisation the bug is fixed. However, pypesto_problem.objective(x, return_dict=True) does still return empty rdatas when using an aggregated objective, which is not the behaviour I would expect.
True, thanks then i will leave it open.