-
Notifications
You must be signed in to change notification settings - Fork 8
Description
The reversible synthesis/degradation rule
Rule('synth_deg', A() <> None, k_deg, k_synth)
should produce the following pair of BNGL rules:
synth_deg_forward: A() -> __sink() k_deg
synth_deg_reverse: __source() -> A() + __source() k_synth
However, it instead produces the single BNGL rule
synth_deg: A() <-> __sink() k_deg, k_synth
This is obviously a problem since the synthesis rate erroneously depends on the concentration of the dummy species __sink().
Furthermore, reversing the order of the reactant and product in the rule, i.e.,
Rule('synth_deg', None <> A(), k_synth, k_deg)
leads to the erroneous BNGL rule
synth_deg: A() <-> __sink() k_synth, k_deg
where the reactant and product have been swapped but the rate constants have not.
These problems can be avoided by writing the synthesis and degradation rules as separate unidirectional rules or by using the macro 'synthesize_degrade_table([[A(), k_synth, k_deg]])'. Nevertheless, it makes sense to fix these problems. The best solution is probably to replace the __source() and __sink() species with BNG's null symbol '0'. This would avoid the need for any special handling in cases like this.