Allow species with the same idea to be identified perhaps using the type to indicate that they should be connected with other species of the same id when the model gets generated. This is to reduce the clutter and avoid the need for port mapping in some instances.
We may want to consider adding a global Id perhaps using SBML groups.
Hi everyone,
I've been thinking about connecting species between components. The current input/output method works well for small systems, but it seems like to would become cumbersome if you're connecting species between, say, 10 components (that all exist within the same compartment). Let's say you want these 10 components to have AHL as an input and output. Biologically, the AHL from these 10 components would wander over to the other components. With the current input/output method, if you want these 10 components to "share" a common stock of AHL, I don't think it's possible. The closest thing you can do is have all 10 components produce 10 different AHL output species and accept 10 different AHL input species. Then you've got to do 10^2 pairwise input/output connections to get the AHLs to go between each component. (If I'm missing something here, please correct me.)
So, the input/output method does not scale very well. Moreover, if you choose to not use input/output, and you stick 10 components together in the same compartment, you inadvertently have created 10 compartments, essentially. There are no automatic cross-component interactions.
What I propose is a project-level species management panel. This panel would list all species in the project (which you can narrow down). Next to the species would be a list of all components where this species occurs (ie, where the species' global ID** occurs). You could then select which components you wish to allow this species to automatically migrate to, which would be limited by compartment "membranes" unless the species is diffusible. (By "migrate to" I mean "become well-stirred with".) There would be options for "all" or "none", which would be the most commonly used things. ("All would be the default. "None" would be useful if you want the species to participate in a spatial modeling grid.) So, within compartments, all "allowed" component species with the same global ID** would be merged (their initial amounts/concentrations added together), and then this merged species would be the one used in reactions within that compartment. All RNAP/Promoter bindings and production reactions, for instance, would use this compartment-level species, so that means there are automatic cross-component interactions.
**I also propose a new identifier for species. This would be called a global ID (or something like that). An example would be "AHL" or "glucose" or "TetR" or "Part004523" or whatever. These are not required to be unique and the program would consider all species with the same global ID to be identical. This would allow you, for instance, to assign an SBOL file to a global ID and then all species with that global ID would have that SBOL file associated. The same goes for various rates and constants. There would be a separate place to manage all of the global species and their values associated SBOL (and save them and so on). Alternatively, we could have the name identifier be this global ID, but it seems like a global ID and a name could both be used (and if we do that, we could keep the species ID hidden).
Hopefully that all makes sense. Let me know what you think.
Best,
Jason