コード例 #1
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_parameter_set_parameter_update(self):
     p = {"p1":1}
     p_update = mb.parameters.ParameterSet({"p2":2})
     m = mb.Model(p)
     m.par.update(p_update)
     self.assertEqual(m.par.p1, p["p1"])
     self.assertEqual(m.par.p2, p_update.p2)
コード例 #2
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_dictionary_parameter_update(self):
     p = {"p1":1}
     p_update = {"p2":2}
     m = mb.Model(p)
     m.par.update(p_update)
     self.assertEqual(m.par.p1, p["p1"])
     self.assertEqual(m.par.p2, p_update["p2"])
コード例 #3
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_compound_ids_multiple_compounds(self):
     m = mb.Model()
     m.set_cpds(["X", "Y"])
     self.assertEqual(m.cpdIdDict["X"], 0)
     self.assertEqual(m.cpdIds()["X"], 0)
     self.assertEqual(m.cpdIdDict["Y"], 1)
     self.assertEqual(m.cpdIds()["Y"], 1)
コード例 #4
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_stoichiometries_two_compounds_two_reactions(self):
     m = mb.Model({"k":1})
     m.set_cpds(["X", "Y"])
     m.set_rate("v0", lambda p: p.k)
     m.set_rate("v1", lambda p: p.k)
     m.set_stoichiometry("v0", {"X":1})
     m.set_stoichiometry("v1", {"X":-1, "Y":1})
     self.assertEqual(m.stoichiometries, {'v0': {'X': 1}, 'v1': {'X': -1, 'Y': 1}})
コード例 #5
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_full_concentration_vector_two_variables(self):
     m = mb.Model()
     m.set_cpds(["X", "Y"])
     m.add_reaction(
         "v0",
         lambda p, x: x,
         {"X":1},
         "X")
     m.add_algebraicModule(
         lambda p, x: x[0] * x[1],
         "mod1",
         ["X", "Y"],
         ["Z"])
     self.assertTrue(all(m.fullConcVec(np.array([1, 1])) == np.array([1, 1, 1])))
コード例 #6
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_full_concentration_vector_one_cpd_two_derived_variables_tuple(self):
     m = mb.Model()
     m.set_cpds(["X"])
     m.add_reaction(
         "v0",
         lambda p, x: x,
         {"X":1},
         "X")
     m.add_algebraicModule(
         lambda p, x: (x, x),
         "mod1",
         ["X"],
         ["Y", "Z"])
     self.assertTrue(all(m.fullConcVec(np.array([1])) == np.array([1, 1, 1])))
コード例 #7
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_integration_one_variable(self):
     """Test basic exponential decay
     dxdt = - x
     Solution: x(t) = exp(-t)
     """
     m = mb.Model()
     m.set_cpds(["x"])
     m.set_rate('v0', lambda p, x: -x, "x")
     m.set_stoichiometry("v0", {"x":1})
     s = mb.Simulate(m)
     # Simulate 10 time units
     t = 10
     y = s.timeCourse(np.linspace(0,t,10),np.ones(1))
     self.assertTrue(np.isclose(y[-1][0], np.exp(-t)))
コード例 #8
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_full_concentration_vector_type_error_list(self):
     m = mb.Model()
     m.set_cpds(["X"])
     m.add_reaction(
         "v0",
         lambda p, x: x,
         {"X":1},
         "X")
     m.add_algebraicModule(
         lambda p, x: x,
         "mod1",
         ["X"],
         ["Y"])
     with self.assertRaises(TypeError):
         m.fullConcVec([1])
コード例 #9
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_find_steady_state(self):
     """Simple two variable integration test
     -> X -> Y ->
     Steady-state solution:
     x = k0 / k1
     y = k0 / k2
     """
     from modelbase.analysis import findSteadyState
     m = mb.Model({"k0":1, "k1":2, "k2": 4})
     m.set_cpds(["x", "y"])
     m.set_rate('v0', lambda p: p.k0)
     m.set_rate('v1', lambda p, x: p.k1 * x, "x")
     m.set_rate('v2', lambda p, y: p.k2 * y, "y")
     m.set_stoichiometry("v0", {"x":1})
     m.set_stoichiometry("v1", {"x":-1, "y":1})
     m.set_stoichiometry("v2", {"y":-1})
     x, y = findSteadyState(m, np.ones(2))
     self.assertTrue(np.isclose(x, m.par.k0 / m.par.k1))
     self.assertTrue(np.isclose(y, m.par.k0 / m.par.k2))
コード例 #10
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_integration_two_variables(self):
     """Simple two variable integration test
     -> X -> Y ->
     Steady-state solution:
     x = k0 / k1
     y = k0 / k2
     """
     m = mb.Model({"k0":1, "k1":2, "k2": 4})
     m.set_cpds(["x", "y"])
     m.set_rate('v0', lambda p: p.k0)
     m.set_rate('v1', lambda p, x: p.k1 * x, "x")
     m.set_rate('v2', lambda p, y: p.k2 * y, "y")
     m.set_stoichiometry("v0", {"x":1})
     m.set_stoichiometry("v1", {"x":-1, "y":1})
     m.set_stoichiometry("v2", {"y":-1})
     s = mb.Simulate(m)
     # Assume steady state after 100 time units
     y = s.timeCourse(np.linspace(0,100,10), np.ones(2))
     self.assertTrue(np.isclose(y[-1][0], m.par.k0 / m.par.k1))
     self.assertTrue(np.isclose(y[-1][1], m.par.k0 / m.par.k2))
コード例 #11
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_set_stoichiometry_stDict_type_error_set(self):
     m = mb.Model({"k":1})
     m.set_cpds(["X"])
     m.set_rate("v0", lambda p: p.k)
     with self.assertRaises(TypeError):
         m.set_stoichiometry("v0", {"X"})
コード例 #12
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_compound_ids_empty(self):
     m = mb.Model()
     m.set_cpds([])
     self.assertEqual(m.cpdIdDict, {})
     self.assertEqual(m.cpdIds(), {})
コード例 #13
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_add_cpds_value_error_double_compounds(self):
     m = mb.Model()
     with self.assertRaises(ValueError):
         m.add_cpds(["X", "X"])
コード例 #14
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_type_error_parameter_init_set(self):
     with self.assertRaises(TypeError):
         m = mb.Model({"a"})
コード例 #15
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_compound_ids_one_compound(self):
     m = mb.Model()
     m.set_cpds(["X"])
     self.assertEqual(m.cpdIdDict["X"], 0)
     self.assertEqual(m.cpdIds()["X"], 0)
コード例 #16
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_algebraic_module_assembly_one_derived_var(self):
     m = mb.Model()
     m.set_cpds(["X"])
     m.add_algebraicModule(lambda p, x: x, "mod1", ["X"], ["Y"])
     self.assertEqual(m.allCpdNames(), ['X', 'Y'])
コード例 #17
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_algebraic_module_assembly_two_derived_compounds(self):
     m = mb.Model()
     m.set_cpds(["X"])
     m.add_algebraicModule(lambda p, x: (x, x), "mod1", ["X"], ["Y", "Z"])
     self.assertEqual(m.allCpdNames(), ["X", "Y", "Z"])
コード例 #18
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_add_cpds_list_two_compounds(self):
     m = mb.Model()
     m.add_cpds(["X", "Y"])
     self.assertEqual(m.cpdNames, ["X", "Y"])
コード例 #19
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_add_reaction_v_type_error_rate_name_set(self):
     m = mb.Model()
     m.set_cpds(["X"])
     with self.assertRaises(TypeError):
         m.add_reaction_v({"a"}, lambda x: x, {"X":1}, "X")
コード例 #20
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_set_rate_type_error_rate_name_list(self):
     m = mb.Model()
     with self.assertRaises(TypeError):
         m.set_rate([], lambda x: x)
コード例 #21
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_dictionary_parameter_init(self):
     m = mb.Model()
     p = {"p1": 1}
     m = mb.Model(p)
     self.assertEqual(m.par.p1, p["p1"])
コード例 #22
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_set_ratev_type_error_rate_name_set(self):
     m = mb.Model()
     with self.assertRaises(TypeError):
         m.set_ratev({"a"}, lambda x: x)
コード例 #23
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_parameter_set_parameter_init(self):
     m = mb.Model()
     p = mb.parameters.ParameterSet({"p1":1})
     m = mb.Model(p)
     self.assertEqual(m.par.p1, p.p1)
コード例 #24
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_set_ratev_rate_name_str(self):
     m = mb.Model()
     m.set_ratev("v1", lambda x: x)
     self.assertTrue("v1" in m.rateFn)
コード例 #25
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_type_error_parameter_update_set(self):
     m = mb.Model()
     with self.assertRaises(TypeError):
         m.par.update({"a"})
コード例 #26
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_stoichiometries_one_compound_one_reaction(self):
     m = mb.Model({"k":1})
     m.set_cpds(["X"])
     m.set_rate("v0", lambda p: p.k)
     m.set_stoichiometry("v0", {"X":1})
     self.assertEqual(m.stoichiometries, {'v0': {'X': 1}})
コード例 #27
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_type_error_parameter_init_list_empty(self):
     m = mb.Model()
     self.assertTrue(isinstance(m.par, mb.parameters.ParameterSet))
コード例 #28
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_type_error_parameter_update_list_empty(self):
     m = mb.Model()
     with self.assertRaises(TypeError):
         m.par.update(None)
     with self.assertRaises(TypeError):
         m.par.update()
コード例 #29
0
    import modelbase
    #import modelbase.algebraicModule

    import matplotlib.pyplot as plt

    import numpy as np

    print("Example 2 started...")

    # define slow variable A
    cl = ['A']
    p = {'v0': 1, 'k2': 0.1, 'K': 5}

    # instantiate model as AlgmModel (because it uses an algebraic module)
    m = modelbase.Model(p)

    m.set_cpds(cl)

    # this function defines the algebraic module. It accepts as first argument
    # the parameters, then the slow-changing variable
    # output are the two derived variables X and Y
    def feq(par, y):
        return np.array([y[0] / (1 + par.K), y[0] * par.K / (1 + par.K)])

    # define the algebraic module object
    #eqm = modelbase.algebraicModule.AlgebraicModule({'K':5},feq)

    # add it to the model by specifying the names of the variables
    m.add_algebraicModule(feq, 'rapidEq', ['A'], ['X', 'Y'])
コード例 #30
0
ファイル: tests.py プロジェクト: FireFly0516/modelbase
 def test_add_cpds_empty_list(self):
     m = mb.Model()
     m.add_cpds([])
     self.assertEqual(m.cpdNames, [])