Open xtrojak opened 3 years ago
Also covered in #32. There is possibly more reactions to cover all isomorphisms than needed, but otherwise it's correct.
Actually, the problem is much more complex. We have identified three types of possible isomorphism occuring in a model:
A(dom{u}).B()::cell => A(dom{p}).B()::cell
B().A(dom{u})::cell => B().A(dom{p})::cell
A(dom{u}).B()::cell => A(dom{p}).B()::cell
B().A()::cell => B()::cell + A()::cell
A(S{u},T{p}).B()::cell => A(S{p},T{p}).B()::cell
A(T{u}, S{u})::cell => A(T{p}, S{u})::cell
(Maybe the last one is not an issue directly, or is only related to multiple domains)
As a consequence, if there is an "isomorphic" agent used in inits
, a corresponding conversion reaction to a form used in a rule might be missing entirely.
In order to export BCSL models to SBML-multi standard, it is necessary (to the best of our knowledge) to include extra rules which transform the isomorphic form of BCSL complexes used in rules/inits/rates. This is necessary because an external tool might not recognize isomorphism to such extend as BCSL does.
Moreover, this becomes tricky because of the used abstraction introduced by the rule-based approach. There might be "hidden" isomorphic forms of a complex which are not equal but rather compatible. This will most probably not be covered in #11.