SED-ML / sed-ml

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

AlgorithmParameter 'value' strings must be non-empty. #166

Closed luciansmith closed 3 years ago

luciansmith commented 3 years ago

cf https://github.com/fbergmann/libSEDML/issues/88: empty 'value' strings are treated by libsedml as unset, as has been the common practice in libsbml and other systems biology libraries for yonks.

However, this came as a surprise to @jonrkarr , who expected to be able to 'explicitly not set' an algorithm parameter by doing something like:

<algorithmParameter [...] value=""/>

It would be technically possible to update libsedml to handle this, but then we'd have to re-train developers who expect that if 'getX' returns "", that means that X hasn't been set, too. In general, it seems easier to just say in the spec that if you want to explicitly set something to be 'unset', you have to use something other than an empty string.

luciansmith commented 3 years ago

Added this sentence to the end of the 'value' paragraph:

"The string must be non-empty; to explicitly state that a value is not set, this should be encoded in the string as a value such as \null" or \unset", as makes sense for the term in question."

jonrkarr commented 3 years ago

I created KISAO_0000629 for this.

I hope this can be addressed in a way that's clearer in L2 as part of better support for data types.

luciansmith commented 3 years ago

How would you recommend using KiSAO 629 as a 'value'? Do you envision:

<algorithmParameter [...] value="KISAO:0000629"/>

or

<algorithmParameter [...] value="http:://www.biomodels.net/kisao/KISAO#KISAO_0000629"/>

or some other way?

jonrkarr commented 3 years ago

The former looks like other uses of KiSAO in SED-ML.

We're also using this scheme to indicate nested algorithm choices, such as for nested choices of CVODE supported by OpenCOR and nested choices for optimization methods from COBRApy and CBMPy.

In BioSimulators, we describe that the expected data type of these algorithm parameters for OpenCOR, etc. is a kisaoId. BioSimulators also captures the specific KiSAO terms that each tool supports.

fbergmann commented 3 years ago

I would prefer the formulation of:

"The string must be non-empty; to explicitly state that a value is not set, this should be encoded in the string as a value KISAO:0000629 (which indicates that the value is Null)".

to what we have currently in the draft spec

luciansmith commented 3 years ago

Argh; missed this before submission. Changed; maybe we'll get it in the final version.