Skip to content

Problems with reversible synth/deg rules #10

@lh64

Description

@lh64

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.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions