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
