AMICI-dev / AMICI

Advanced Multilanguage Interface to CVODES and IDAS
https://amici.readthedocs.io/
Other
108 stars 31 forks source link

Python SBML-import: Provide option to parameterize selected initial states #924

Open dweindl opened 4 years ago

dweindl commented 4 years ago

Currently we need an SBML model with InitialAssignments for that. Although I am generally in favor of defining everything possible at the level of SBML, I think it would still be a helpful feature.

FFroehlich commented 4 years ago

Not my circus, not my monkeys. I don't think this lies in the repsonsibility of AMICI to take care of these things.

You can set arbitrary initial functions through ExpData.x0 or model.setInitialStates(). If you need sensitivities though, you will have to modify the sbml.

dweindl commented 4 years ago

We will need that for PEtab import, but can also be implemented by transiently creating the respective initial assignments in the SBML model.

FFroehlich commented 4 years ago

The same applies to PEtab. Whats the problem with properly formatting your SBML model? Transiently adding stuff to SBML models just leads to incompatibilities for others tools. How are you going to communicate those parameters back to people who want to use copasi/roadrunner?

dweindl commented 4 years ago

Similar thing as in #922, I wouldn't say that SBML initial assignments are there to mark parameters to be estimated or to compute sensitivities w.r.t. them. This is how AMICI interprets it. If this is portable to anywhere, then it's just by chance. According to the SBML specs, "the reason for the existence of InitialAssignment [is]: to permit the calculation of the value of a constant or the initial value of a variable from the values of other quantities in a model."

But this is not my main point. We want to be able to use models that were not initially designed with parameter estimation in mind, without modification. If there is some other standardized way of doing this, great.

FFroehlich commented 4 years ago

Okay reading through the initial values section of the sbml spec again you are right.

I really don't like the idea of passing this kind of stuff as arguments to sbml2amici as I think code is not a good way to document these things in a sustainable/portable way. How about a .yaml configuration file?

dweindl commented 4 years ago

Sounds good to me. As this would be more or less equivalent to passing some dict with a well-defined/documented structure, I would also allow for passing that directly.