def create_simple_hybrid_model(parameter_values=None): model = Model(name="Simple_Hybrid_Model") # Species A = Species(name='A', initial_value=0) B = Species(name='B', initial_value=0) model.add_species([A, B]) # Parameters k1 = Parameter(name='k1', expression=1) k2 = Parameter(name='k2', expression=10) model.add_parameter([k1, k2]) # Rate Rule rate_rule = RateRule(name='Brate', variable='B', formula="cos(t)") model.add_rate_rule(rate_rule) # Reactions r1 = Reaction(name='r1', reactants={A: 1}, products={}, propensity_function="k1*B") r2 = Reaction(name='r2', reactants={}, products={B: 1}, rate=k2) model.add_reaction([r1, r2]) model.timespan(numpy.linspace(0, 1, 11)) return model
def test_species_parameter_name_substrings(self): model = Model() rate = Parameter(name='rate', expression=1) model.add_parameter(rate) species1 = Species('A', initial_value=100) species2 = Species('AA', initial_value=0) model.add_species([species1, species2]) reaction1 = Reaction(name="reaction1", reactants={species1: 1}, products={species2: 1}, rate=rate) model.add_reaction(reaction1) number_points = 11 model.timespan(np.linspace(0, 1, number_points)) from gillespy2.solvers.numpy.ssa_solver import NumPySSASolver results = model.run(number_of_trajectories=1, solver=NumPySSASolver, seed=1) self.assertTrue(len(results['time']) == number_points) self.assertTrue(len(results[species1.name]) == number_points) self.assertTrue(len(results[species2.name]) == number_points) self.assertGreater(results[species1.name][0], results[species1.name][-1]) self.assertLess(results[species2.name][0], results[species2.name][-1]) self.assertEqual( np.sum(results[species1.name]) + np.sum(results[species2.name]), number_points * species1.initial_value)
def test_uniform_timespan(self): model = Model() model.timespan(np.linspace(0, 1, 100)) with self.assertRaises(InvalidModelError): model.timespan(np.array([0, 0.1, 0.5]))
def create_oregonator(parameter_values=None): # Superclass initialization model = Model(name="Oregonator") # Species F = Species(name="F", initial_value=2) A = Species(name="A", initial_value=250) B = Species(name="B", initial_value=500) C = Species(name="C", initial_value=1000) P = Species(name="P", initial_value=0) model.add_species([F, A, B, C, P]) # Parameters (rates) k1 = Parameter(name="k1", expression=2.0) k2 = Parameter(name="k2", expression=0.1) k3 = Parameter(name="k3", expression=104) k4 = Parameter(name="k4", expression=4e-7) k5 = Parameter(name="k5", expression=26.0) model.add_parameter([k1, k2, k3, k4, k5]) # Reactions reaction1 = Reaction(name="reaction1", reactants={ B: 1, F: 1 }, products={ A: 1, F: 1 }, rate=k1) reaction2 = Reaction(name="reaction2", reactants={ A: 1, B: 1 }, products={P: 1}, rate=k2) reaction3 = Reaction(name="reaction3", reactants={ A: 1, F: 1 }, products={ A: 2, C: 1, F: 1 }, rate=k3) reaction4 = Reaction(name="reaction4", reactants={A: 2}, products={P: 1}, rate=k4) reaction5 = Reaction(name="reaction5", reactants={ C: 1, F: 1 }, products={ B: 1, F: 1 }, rate=k5) model.add_reaction([reaction1, reaction2, reaction3, reaction4, reaction5]) if sys.argv[1] != 'ODESolver': model.timespan(np.linspace(0, 5, 501)) else: model.timespan(np.linspace(0, 5, 500001)) return model