In [1]:
%matplotlib inline
from ecell4.core import *
from ecell4.util import *
from ecell4 import gillespie, lattice, meso, ode, bd, egfrd

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

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

m = get_model(False)

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

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

In [4]:
# factory = gillespie.GillespieFactory()
factory = lattice.LatticeFactory(0.005)
# factory = meso.MesoscopicFactory(Integer3(5, 5, 5))
# factory = ode.ODEFactory()
# factory = bd.BDFactory()
# factory = egfrd.EGFRDFactory(Integer3(4, 4, 4))

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

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

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



In [6]: