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
Exemple #2
0
 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)
Exemple #3
0
 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]))
Exemple #4
0
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