In [1]:
%matplotlib inline
from ecell4 import *
from ecell4_base.core import *
from ecell4_base import *

In [2]:
radius, D = 0.005, 1
with species_attributes():
    A | B | C | {"radius": radius, "D": D}

with reaction_rules():
    A + B == C | (0.01, 0.3)

m = get_model()

In [3]:
def run(factory, observers):
    w = factory.world(ones())
    w.bind_to(m) #XXX: depends on m.
    w.add_molecules(Species("A"), 60)
    w.add_molecules(Species("B"), 60)

    sim = factory.simulator(w)
    sim.run(5.0, observers)

In [4]:
# factory = gillespie.Factory()
factory = spatiocyte.Factory(radius)
# factory = meso.Factory(Integer3(5, 5, 5))
# factory = bd.Factory()
# factory = egfrd.Factory(Integer3(4, 4, 4))

obs1 = NumberObserver(["A", "C"])
run(factory, obs1)

In [5]:
obs2 = FixedIntervalNumberObserver(0.2, ["A", "C"])
run(ode.Factory(), obs2)

In [6]:
viz.plot_number_observer(obs1, '-', obs2, '--')