A helpful feature for systems with alternative propensity calculations (such as when stochastic constants are unavailable) might be support for externally provided propensities. For example, each reaction:
X + Y -> Z
may have an associated propensity function described by the user that depends on the counts of molecules at each iteration:
def get_propensity(X, Y, c1, c2, ...):
# computation here could involve several constants like c1, c2, ...
...
which returns a value that represents the propensity for this reaction, for this iteration. Since the inputs (X and Y) are dynamic during the simulation, the return value from get_propensity() also varies during the simulation.
Two candidate approaches to supporting this feature might be providing a way for the user:
- to provide the propensity functions to arrow once at the initialization of the system - (
get_propensity() is called inside arrow)
- to input the propensity values at each iteration - (
get_propensity() is called outside arrow by the user)
A helpful feature for systems with alternative propensity calculations (such as when stochastic constants are unavailable) might be support for externally provided propensities. For example, each reaction:
X + Y -> Z
may have an associated propensity function described by the user that depends on the counts of molecules at each iteration:
which returns a value that represents the propensity for this reaction, for this iteration. Since the inputs (X and Y) are dynamic during the simulation, the return value from
get_propensity()also varies during the simulation.Two candidate approaches to supporting this feature might be providing a way for the user:
get_propensity()is called inside arrow)get_propensity()is called outside arrow by the user)