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
_______________________________________________
cellml-discussion mailing list
[email protected]
http://www.cellml.org/mailman/listinfo/cellml-discussion

Reply via email to