Improve sedml generation when multiple CellML files are present
Closed this issue · 5 comments
@jonrkarr I could use some help in figuring out how to approach this one. For this model, the sedml was generated by the package.
Here is the example run https://run.biosimulations.org/runs/624e906ce2e617ecb3590ff8#tab=log
The first task in the simulations fails with the message:
The task does not describe a valid simulation:
Error: a problem occurred during the generation of the model code (CellML Variable J2 in component Cformation has in interfaces, but is not connected (directly or indirectly) to any variable with no in interfaces;).
I suppose when adding the variables that can be output to the sedml file that is generated, I would have to parse the CellML model and check for this condition. However, based on my understanding of these interfaces work ( https://tutorial-on-cellml-opencor-and-pmr.readthedocs.io/en/latest/pmr.html) this condition perhaps means that the model is not correctly written, since there is an interface for some component that is not connected to other components. There are some sedml tasks that do complete successfully, so I am unsure if this needs to be addressed in our sedml generation or in the source
This sounds like an error that OpenCOR raises that the CellML RNG schema doesn't catch. This sounds like an error with the model that should be reported to Physiome. Perhaps it should be an OpenCOR error, but let's defer to the Auckland team to determine whether its a model or OpenCOR error.
This is a more general set of issues that need to be addressed in this repository rather than physiome. Some or all of the below error types can be addressed by more carefully selecting which CellML files to create SED-ML for. Many of the simulation runs have successful tasks, but failures for some model files.
- The interface issue with components seems to be due to trying to simulate a component that was not designed to be a top level model
- Some simulations fail due to no ODEs defined. Could be CellML files that don't define equations, because the only have units for example
- Underconstrained model- information about initial values can be in some of the other files
In general this is caused by attempting to run components as top level simulations. This happens when the component is not imported into any other model. This is only caught at runtime, so it might be necessary to load the models definitions into opencor to determine if they can have a simulation defined for them. The biosimulators_utils method could then raise an error if there is an attempt to create sims, params, vars
for a non-top level model
Because OpenCOR needs to be run in its own Python environment, I'd prefer not to make it a dependency of BioSimulators-utils.
Alternatively, this functionality could be added to this repository.