Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Isomorphism in SBML-multi export #18

Open
xtrojak opened this issue Jun 30, 2021 · 2 comments
Open

Isomorphism in SBML-multi export #18

xtrojak opened this issue Jun 30, 2021 · 2 comments
Labels
enhancement New feature or request

Comments

@xtrojak
Copy link
Collaborator

xtrojak commented Jun 30, 2021

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.

@xtrojak xtrojak added the enhancement New feature or request label Jun 30, 2021
@xtrojak
Copy link
Collaborator Author

xtrojak commented Feb 2, 2022

Also covered in #32. There is possibly more reactions to cover all isomorphisms than needed, but otherwise it's correct.

@xtrojak xtrojak closed this as completed Feb 2, 2022
@xtrojak xtrojak reopened this Mar 18, 2022
@xtrojak
Copy link
Collaborator Author

xtrojak commented Mar 18, 2022

Actually, the problem is much more complex. We have identified three types of possible isomorphism occuring in a model:

  1. simple shuffling of identical agents (only this type is already covered in the implementation)
A(dom{u}).B()::cell => A(dom{p}).B()::cell
B().A(dom{u})::cell => B().A(dom{p})::cell
  1. shuffling of compatible agents
A(dom{u}).B()::cell => A(dom{p}).B()::cell
B().A()::cell => B()::cell + A()::cell
  1. multiple domains in a structure agent in combination with incompatible complexes
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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant