CellML Discussion List

Text archives Help


[cellml-discussion] Modules and Components


Chronological Thread 
  • From: lpsmith at spod-central.org (Lucian Smith)
  • Subject: [cellml-discussion] Modules and Components
  • Date: Wed, 29 Jul 2009 19:50:02 +0100

So, my current project is to translate CellML to Antimony, and take
advantage of the modularity in both. So I have a couple questions about
that, first, to make sure I understand CellML modularity, and second, to
ask all of you how you would expect to find CellML's modules converted.

So, as I understand it, there are two ways to modularize a CellML model.
You can put variables into components, and/or you can put models into
files. For now, there is a 1:1 relationship between files and models--one
file will contain exactly one model. One model might contain any number
of components, but only one copy of each. If you want multiple copies of
a module, you need to put it in another file, then import that model
multiple times. There is no such thing as an imported model that is not
part of the model that imports it, though it's possible to import a model
and not connect it to anything, thereby creating, in effect, two separate
models that are running at the same time. (Well, I guess you'd still have
to connect 'time' in those models. What if you didn't?)

Any aspect of an element of a model is only defined once, by design. I am
not sure what happens if a variable in one component is given (say) an
initial value, and another variable in a different component is given a
different initial value, and then the two are connected. Is that invalid
CellML? Can you only connect things that have compatible public_interface
bits set? At any rate, it is at least clear that the intent is to set the
public_interface parts appropriately.


In Antimony, each module is distinct from the other modules, much as if
they had been converted to different files in CellML--they can be imported
as needed into other models, but have their own separate existence, and
can function as complete models on their own.

Given this, I'm inclined to convert CellML components into Antimony
models, 'promoting' them. My worry is that in practice, CellML components
might be pretty small, and promoting each component to a full-fledged
model might not make much sense. But on the other hand, if I flatten
all components to a single Antimony model, all the modularity within a
model will have been lost, which also seems unfortunate. So it seems like
a good question to ask the CellML community--would you rather see
components fully modularized, or flattened? And going back the other way,
will converting Antimony modules to CellML components be enough, or would
you prefer to see them as distinct CellML files/models?

(This also has ramifications in the future, when SBML gets modularity, or
'hierarchical modeling', as they're calling it, so I'm sure the issue will
be raised again in the future.)


Thanks!

-Lucian Smith




Archive powered by MHonArc 2.6.18.

Top of page