Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
luciansmith opened this issue Jun 17, 2021 · 6 comments
Closed

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

luciansmith opened this issue Jun 17, 2021 · 6 comments

Comments

@luciansmith
Copy link
Contributor

cf fbergmann/libSEDML#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
Copy link
Contributor Author

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
Copy link
Contributor

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
Copy link
Contributor Author

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
Copy link
Contributor

jonrkarr commented Jun 17, 2021

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
Copy link
Member

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 added a commit that referenced this issue Aug 3, 2021
(Sorry I missed this before submission...)
@luciansmith
Copy link
Contributor Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants