Example #1
0
 def test_null_timeout(self):
     model = create_decay()
     species = gillespy2.Species('test_species', initial_value=1)
     model.add_species([species])
     solver = TauHybridSolver(model=model)
     results = solver.run()
     self.assertTrue(len(results) > 0)
Example #2
0
 def test_add_bad_expression_rate_rule_dict(self):
     model = create_decay()
     species2 = gillespy2.Species('test_species2',
                                  initial_value=2,
                                  mode='continuous')
     rule = gillespy2.RateRule(variable=species2, formula='')
     with self.assertRaises(ModelError):
         model.add_rate_rule(rule)
Example #3
0
 def test_file_with_directory_name_exists(self):
     with self.assertRaises(DirectoryError):
         temp = tempfile.NamedTemporaryFile()
         model = create_decay()
         solverSSAC = SSACSolver(model, temp.name)
         solverODEC = ODECSolver(model, temp.name)
         solverTAUC = TauLeapingCSolver(model, temp.name)
         solverHYBC = TauHybridCSolver(model, temp.name)
Example #4
0
 def test_ensure_continuous_dynamic_timeout_warning(self):
     model = create_decay()
     species1 = gillespy2.Species('test_species1',
                                  initial_value=1,
                                  mode='dynamic')
     model.add_species(species1)
     with self.assertLogs('GillesPy2', level='WARN'):
         solver = TauHybridSolver(model=model)
         results = model.run(solver=solver, timeout=1)
Example #5
0
 def test_ensure_hybrid_continuous_species(self):
     model = create_decay()
     species1 = gillespy2.Species('test_species1',
                                  initial_value=1,
                                  mode='continuous')
     model.add_species(species1)
     results = model.run()
     valid_solvers = ('TauHybridSolver', 'TauHybridCSolver')
     self.assertIn(results[0].solver_name, valid_solvers)
Example #6
0
 def test_StochML_from_and_to_model(self):
     model = create_decay()
     stochml = StochMLDocument.from_model(model)
     stochml_model = stochml.to_model('model')
     stochml_model.timespan(model.tspan)
     ode_solver = ODESolver(model=stochml_model)
     stochml_model.run(solver=ode_solver)
     ssa_solver = NumPySSASolver(model=stochml_model)
     stochml_model.run(solver=ssa_solver)
Example #7
0
    def setUpClass(cls):
        cls.solvers = [
            SSACSolver,
            ODESolver,
            NumPySSASolver,
            TauLeapingSolver,
            TauHybridSolver,
            ODECSolver,
            TauLeapingCSolver,
            TauHybridCSolver,
        ]

        cls.sbml_features = {
            "AssignmentRule": lambda model, variable:
                model.add_assignment_rule(gillespy2.AssignmentRule(variable=variable, formula="1/(t+1)")),
            "RateRule": lambda model, variable:
                model.add_rate_rule(gillespy2.RateRule(variable=variable, formula="2*t")),
            "Event": lambda model, variable:
                model.add_event(gillespy2.Event(
                    trigger=gillespy2.EventTrigger(expression="t>1"),
                    assignments=[gillespy2.EventAssignment(variable=variable, expression="100")]
                )),
            "FunctionDefinition": lambda model, variable:
                model.add_function_definition(
                    gillespy2.FunctionDefinition(name="fn", function="variable", args=["variable"])),
        }

        # List of supported SBML features for each solver.
        # When a feature is implemented for a particular solver, add the feature to its list.
        cls.solver_supported_sbml_features = {
            NumPySSASolver: [],
            TauLeapingSolver: [],
            ODESolver: [],
            TauHybridSolver: [
                "AssignmentRule",
                "RateRule",
                "Event",
                "FunctionDefinition",
            ],

            SSACSolver: [],
            ODECSolver: [],
            TauLeapingCSolver: [],
            TauHybridCSolver: [
                "RateRule",
                "Event",
            ],
        }

        cls.model = create_decay()

        cls.results = {}
        cls.labeled_results = {}
        cls.labeled_results_more_trajectories = {}
Example #8
0
 def test_add_rate_rule(self):
     model = create_decay()
     species = gillespy2.Species('test_species', initial_value=1)
     rule = gillespy2.RateRule(name='rr1',
                               formula='test_species+1',
                               variable='test_species')
     model.add_species([species])
     model.add_rate_rule([rule])
     results = model.run()
     valid_solvers = ('TauHybridSolver', 'TauHybridCSolver')
     self.assertIn(results[0].solver_name, valid_solvers)
Example #9
0
    def test_model_run_with_both_increment_and_timespan(self):
        model = create_decay()

        try:
            model.run(increment=4)

        except SimulationError as e:
            return

        self.fail("""
            Failed while testing Model.run() behavior when both `timespan` and `increment` are set.
            """)
Example #10
0
 def test_add_assignment_rule(self):
     model = create_decay()
     species = gillespy2.Species('test_species4', initial_value=1)
     rule = gillespy2.AssignmentRule(name='ar1',
                                     variable=species.name,
                                     formula='2')
     model.add_species([species])
     model.add_assignment_rule([rule])
     results = model.run()
     self.assertEquals(results[species.name][0], 2)
     self.assertEquals(results[species.name][-1], 2)
     self.assertEqual(results[0].solver_name, 'TauHybridSolver')
Example #11
0
 def old_check_cpp_support(self):
     try:
         model = create_decay()
         solver = SSACSolver(model=model)
         results = model.run(solver=solver, cpp_support=True)
         return True
     except Exception as e:
         from gillespy2.core import log
         log.warn('Unable to use C++ optimized SSA: {0}.  The performance of ' \
         'this package can be significantly increased if you install/configure GCC on ' \
         'this machine.'.format(e))
         return False
Example #12
0
class TestVariableSolvers(unittest.TestCase):
    model = create_decay()
    solverSSAC = SSACSolver(model, variable=True)
    solverODEC = ODECSolver(model, variable=True)
    solverTAUC = TauLeapingCSolver(model, variable=True)
    solverHYBC = TauHybridCSolver(model, variable=True)
    solverlist = [solverSSAC, solverODEC, solverTAUC, solverHYBC]

    def test_create(self):
        model = create_decay()
        solverSSAC = SSACSolver(model)
        solverODEC = ODECSolver(model)
        solverTAUC = TauLeapingCSolver(model)
        solverHYBC = TauHybridCSolver(model)

    def test_file_with_directory_name_exists(self):
        with self.assertRaises(DirectoryError):
            temp = tempfile.NamedTemporaryFile()
            model = create_decay()
            solverSSAC = SSACSolver(model, temp.name)
            solverODEC = ODECSolver(model, temp.name)
            solverTAUC = TauLeapingCSolver(model, temp.name)
            solverHYBC = TauHybridCSolver(model, temp.name)

    def test_run_example_precompiled(self):
        for solver in self.solverlist:
            results = self.model.run(solver=solver)

    def test_change_species(self):
        initial_value = self.model.listOfSpecies['Sp'].initial_value
        for solver in self.solverlist:
            results = self.model.run(solver=solver, variables={'Sp': 3})
        with self.subTest(msg='Test changed species simulation'):
            self.assertEqual(results['Sp'][0], 3)
        with self.subTest(msg='Test changed species model integrity'):
            self.assertEqual(self.model.listOfSpecies['Sp'].initial_value,
                             initial_value)

    def test_change_parameter(self):
        initial_expression = self.model.listOfParameters['k1'].expression
        for solver in self.solverlist:
            results = self.model.run(solver=solver, variables={'k1': 0})
            with self.subTest(msg='Test changed parameter simulation'):
                self.assertEqual(results['Sp'][-1], results['Sp'][0])
            with self.subTest(msg='Test changed parameter model integrity'):
                self.assertEqual(self.model.listOfParameters['k1'].expression,
                                 initial_expression)

    def test_invalid_variable(self):
        with self.assertRaises(SimulationError):
            for solver in self.solverlist:
                results = self.model.run(solver=solver,
                                         variables={'foobar': 0})
Example #13
0
 def test_math_name_overlap(self):
     model = create_decay()
     gamma = gillespy2.Species('gamma', initial_value=2, mode='continuous')
     model.add_species([gamma])
     k2 = gillespy2.Parameter(name='k2', expression=1)
     model.add_parameter([k2])
     gamma_react = gillespy2.Reaction(name='gamma_react',
                                      reactants={'gamma': 1},
                                      products={},
                                      rate=k2)
     model.add_reaction([gamma_react])
     solver = TauHybridSolver(model=model)
     model.run(solver=solver)
Example #14
0
 def test_add_stochastic_time_dependent_event(self):
     model = create_decay()
     model.listOfSpecies['Sp'].mode = 'discrete'
     eventTrig = gillespy2.EventTrigger(
         expression='t >= 10',
         initial_value=True,
     )
     event1 = gillespy2.Event(name='event1', trigger=eventTrig)
     ea1 = gillespy2.EventAssignment(variable='Sp', expression='1000')
     ea2 = gillespy2.EventAssignment(variable='k1', expression='0')
     event1.add_assignment([ea1, ea2])
     model.add_event(event1)
     results = model.run()
     self.assertEqual(results['Sp'][-1], 1000)
Example #15
0
 def test_add_continuous_species_dependent_event(self):
     model = create_decay()
     model.listOfSpecies['Sp'].mode = 'continuous'
     eventTrig = gillespy2.EventTrigger(
         expression='Sp <= 90',
         initial_value=True,
     )
     event1 = gillespy2.Event(name='event1', trigger=eventTrig)
     ea1 = gillespy2.EventAssignment(variable='Sp', expression='1000')
     ea2 = gillespy2.EventAssignment(variable='k1', expression='0')
     event1.add_assignment([ea1, ea2])
     model.add_event(event1)
     results = model.run()
     valid_solvers = ('TauHybridSolver', 'TauHybridCSolver')
     self.assertIn(results[0].solver_name, valid_solvers)
     self.assertEqual(results['Sp'][-1], 1000)
Example #16
0
 def test_add_rate_rule_dict(self):
     model = create_decay()
     species2 = gillespy2.Species('test_species2',
                                  initial_value=2,
                                  mode='continuous')
     species3 = gillespy2.Species('test_species3',
                                  initial_value=3,
                                  mode='continuous')
     rule2 = gillespy2.RateRule('rule2', species2, 'cos(t)')
     rule3 = gillespy2.RateRule(name='rule3',
                                variable=species3,
                                formula='sin(t)')
     rate_rule_dict = {'rule2': rule2, 'rule3': rule3}
     model.add_species([species2, species3])
     with self.assertRaises(ModelError):
         model.add_rate_rule(rate_rule_dict)
Example #17
0
    def test_run_example(self):
        model = create_decay()
        solver = ODESolver(model=model)
        for i in [1, self.number_of_trajectories]:
            for label in [True, False]:
                with self.subTest(number_of_trajectories=i, show_labels=label):
                    if i > 1:
                        results = model.run(solver=solver,
                                            number_of_trajectories=i)
                        self.assertEqual(len(results), i)
                    else:
                        results = model.run(solver=solver,
                                            number_of_trajectories=i)

                    if not label:
                        results = results.to_array()
                    if i > 1 or not label:
                        for result in results[1:]:
                            if label:
                                self.assertEqual(results[0], result)
                            else:
                                self.assertTrue(
                                    np.array_equal(results[0], result))
Example #18
0
 def test_run_example__with_tspan_only(self):
     model = create_decay()
     solver = SSACSolver(model=model)
     results = solver.run()
Example #19
0
 def test_run_example__with_tspan_and_increment(self):
     with self.assertRaises(SimulationError):
         model = create_decay()
         solver = SSACSolver(model=model)
         results = solver.run(increment=0.2)
Example #20
0
 def test_file_with_directory_name_exists(self):
     with self.assertRaises(DirectoryError):
         temp = tempfile.NamedTemporaryFile()
         model = create_decay()
         solver = SSACSolver(model, temp.name)
Example #21
0
 def test_run_example(self):
     model = create_decay()
     solver = SSACSolver(model=model)
     results = model.run(solver=solver)
Example #22
0
 def setUp(self):
     self.model = create_decay()
     self.solver = ODECSolver(self.model)
     self.model_no_tspan = create_decay_no_tspan()
     self.solver_no_tspan = ODECSolver(self.model_no_tspan)
Example #23
0
 def test_create(self):
     model = create_decay()
     solver = SSACSolver(model)
Example #24
0
 def test_create(self):
     model = create_decay()
     solverSSAC = SSACSolver(model)
     solverODEC = ODECSolver(model)
     solverTAUC = TauLeapingCSolver(model)
     solverHYBC = TauHybridCSolver(model)
Example #25
0
 def test_add_function_definition(self):
     model = create_decay()
     funcdef = gillespy2.FunctionDefinition(name='fun', function='Sp+1')
     model.add_function_definition(funcdef)
     results = model.run()
     self.assertEqual(results[0].solver_name, 'TauHybridSolver')
 def test_create(self):
     model = create_decay()
     solver = TauLeapingCSolver(model)
 def setUp(self):
     self.model = create_decay()
     self.model_no_tspan = create_decay_no_tspan()
     self.solver = TauLeapingSolver(model=self.model)
     self.solver_no_tspan = TauLeapingSolver(model=self.model_no_tspan)
 def test_run_example_precompiled(self):
     model = create_decay()
     solver = TauLeapingCSolver(model=model)
     results = model.run(solver=solver)
Example #29
0
 def setUp(self):
     self.model = create_decay()
     self.solver = NumPySSASolver(model=self.model)
     self.model_no_tspan = create_decay_no_tspan()
     self.solver_no_tspan = NumPySSASolver(model=self.model_no_tspan)
Example #30
0
 def test_extraneous_args(self):
     for solver in self.solvers:
         with self.subTest(solver=solver.name), self.assertLogs('GillesPy2', level='WARN'):
             model = create_decay()
             solver = solver(model=model)
             model.run(solver=solver, nonsense='ABC')