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

Trac: Make use of ontology terms matching multiple (or no) variables #198

Open
MichaelClerx opened this issue May 5, 2020 · 7 comments
Open

Comments

@MichaelClerx
Copy link
Contributor

MichaelClerx commented May 5, 2020

https://chaste.cs.ox.ac.uk/trac/ticket/2002

e.g. For a lot of the voltage clamp protocols we want to be able to clamp concentrations.

But for models with separate definitions for intracellular concentrations in different sub-compartments (e.g. of the calcium system - dyadic space etc.) we should allow these to be clamped independently if present, but skipped if not present, so that we can still run a protocol on all possible candidate models.

Or discuss whether this might introduce an ambiguity we are trying to avoid?!?

See also https://chaste.cs.ox.ac.uk/trac/ticket/2487 for optional protocol inputs, and https://chaste.cs.ox.ac.uk/trac/ticket/2487#comment:25 for another use case:

It would be nice if we had a version of the Steady state action potential protocol that outputted (and plotted) all of the available ionic currents, and still worked if some were missing. Especially if we also allowed the system to feed through the 'names' (whatever that would mean) for the individual ion currents to form a key for the plot.

See also https://chaste.cs.ox.ac.uk/trac/ticket/1209.

@MichaelClerx
Copy link
Contributor Author

Quite some discussion in original ticket

@MichaelClerx
Copy link
Contributor Author

I think this is possible with optional inputs now?

@mirams @jonc125 ?

@jonc125
Copy link
Contributor

jonc125 commented May 5, 2020

It can be done to some degree, but what you can't yet do is things like clamp oxmeta:ExtracellularConcentration and clamp all variables that match.

@MichaelClerx
Copy link
Contributor Author

MichaelClerx commented May 5, 2020

Only difficulty in implementing that I think would be for newly created variables. We'd have to check whether they were also part of some transitively specified input, and would need to be able to check if the variable violated any constraints_during_ model modification (e.g. if we create a new variable, set its definition directly, and modify it as part of a vector, we need to be able to detect that and raise an error)

@mirams
Copy link

mirams commented May 16, 2020

Can we start by making it work for things in the ontology? The clamping of all extracellular / intracellular concs for instance would be very handy for a lot of protocols.

@jonc125
Copy link
Contributor

jonc125 commented May 18, 2020

I think what we could do is something like:

  • Check for transitive references on clamps (whether to initial value or to fixed value). Where we have a match, replace the single ProtocolVariable by one per matching variable, which can then be handled by the code as currently. If the check for transitive references is done early, we'll then pick up on most conflicts.
  • We may want a method that finds only transitive references, not direct ones, so we can distinguish the cases more clearly. Ontology terms shouldn't really be both a class and a label.
    • So either a var annotated with bqbiol:isVersionOf term, or a var annotated with bqbiol:is t where the ontology says t is-a term (directly or indirectly).
  • We can also query the ontology to pick up further conflicts, by checking (before even looking at the model) if the ontology terms used in ProtocolVariables are related via is-a.

@jonc125
Copy link
Contributor

jonc125 commented May 18, 2020

But as a new protocol language feature I think we'll get to this once we have the new back & front ends integrated!

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

No branches or pull requests

3 participants