Closed jonrkarr closed 3 years ago
An example use case I have is model comparison (not using SED-ML to encode this, but use it in my modeling workflows). Often I have different model versions I want to compare in their behavior. For instance complex detailed models and model simplifications of the same system and I want to see the differences in model behavior. In such a case I simulate the same simulation experiment with the two models and calculate the residuals between the model simulations. This requires to calculate the difference between the models which requires access to values from multiple models. Basically something along the line of the following formulas:
M1.S1-M2.S1
abs(M1.S1-M2.S1)/(0.5*(M1.S1+M2.S1))
This seems like something that could be encoded as a data generator. Why can't data generators, which are simpler, be used for this example? Why does the calculation of such residuals need to be encoded as a compute model change for a simulation task?
I think it is because the datagenerator represents more of an output of a simulation task (or a reference from a model). The compute change element would update the initial conditions before the simulation would proceed.
Matthias' example sounds like an output: two tasks generate simulation predictions and the difference between their predictions could be calculated with data generators. How does this require the results of one task to be used to setup the initial conditions for another task? Is this intended to be used iteratively to minimize the residuals (e.g., a gradient descent)?
All of the BioSimulators tools will now support ComputeChange, including computations that involve targets on multiple models.
The models that the targets point to support the features of L1V3 -- the source may need to be resolved from other models, BioModels ids, and/or URLs and target models can also involve other changes. Errors are raised if the network of model sources is cyclic, or if the network of model changes is cyclic.
By requiring complete XPATHs and namespaces for NewXML elements, this implemented in a way which is agnostic to model languages such that the methods work equally for any XML-based language (e.g., CellML, SBML, BioNetGen XML, etc.). This avoids the need for special handling for each model language.
Is there anything left to do for this issue, or can we close it? It seems like the question has been answered?
This was just a question. It can be closed.
Does any tool support this? For example, tellurium does not.
Can anyone provide an example which requires this, and which can't be encoded in a simpler, alternative way?