SED-ML / sed-ml

Simulation Experiment Description Markup Language (SED-ML)
http://sed-ml.org
5 stars 2 forks source link

Changes at runtime #6

Open matthiaskoenig opened 7 years ago

matthiaskoenig commented 7 years ago

https://sourceforge.net/p/sed-ml/feature-requests/3/

from @lenov At the moment, the changes applied to a model are meant to apply before performing the tasks. We need to be able to describe changes applied to a model variable during simulation. This is in particular useful for the computeChange. Use cases are: conditional change of a variable during simulation, synchronisation of different simulations (with variable transformation) etc.

The simplest way to do that would be to add an attribute on the change classes that would have values "initial" or "runtime".

NB: That is different from changing the simulation set-up (e.g. algorithm parameters).

matthiaskoenig commented 7 years ago

I could imagine handling this via something like events. One could have something like simulation events which allow to define more complicated simulation setups.

ghost commented 7 years ago

Not really. You want to synchronise all the time. What I mean to fetching the value of a variable in a model from another model -at all time-.

This is needed to encode multi-scale models such as the Mycoplasma one etc.

Of course, in future development, we should provide mechanisms to precise when to synchronise (continuous, discrete, event-based, rollback based etc, and with which characteristics).

fbergmann commented 7 years ago

An alternative would be to allow those changes to be done on the model ... I would like basically a way to indicate run this task on this model ... it would be a construct like change attribute, but simply reference the task to be run on the model ...

On Wed, Jul 12, 2017 at 10:50 AM, Nicolas Le Novère < notifications@github.com> wrote:

Not really. You want to synchronise all the time. What I mean to fetching the value of a variable in a model from another model -at all time-.

This is needed to encode multi-scale models such as the Mycoplasma one etc.

Of course, in future development, we should provide mechanisms to precise when to synchronise (continuous, discrete, event-based, rollback based etc, and with which characteristics).

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/SED-ML/sed-ml/issues/6#issuecomment-314698604, or mute the thread https://github.com/notifications/unsubscribe-auth/AA57Q4ml-mZkwYLyK8zoP0bODXzo-5dFks5sNIjggaJpZM4OVP3E .

ghost commented 7 years ago

[Maybe I misunderstood what Frank suggests. Sorry if this is the case]

I think that does not work because you assume the model(s) are simulated using a single simulator. That was the case of the Karr model because he implemented everything in MatLab. But you cannot use that for this model: http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0066811 Here one model is biochemical, and can be simulated using SBML-supporting tools (we tested SOSlib, COPASI and ECell3). The other is electrophysiological, and can be simulated using NeuroML-supported tools, in our case NEURON. The values of one variable in each model is computed using the values of variables simulated in the other model (see section "Variables Exchange and Transformation").

In some cases, the synchronisation events are known, so we could in theory use repeated simulations, with change of variable values before each step. However, in most cases, the time of synchronisation is not known, or is "continuous" (meaning as frequent as we can afford without slowing down the simulation too much)