Beispiel #1
0
    def test_is_match(self):
        from sciunit import Model

        m = Model()
        m2 = Model()
        self.assertFalse(m.is_match(m2))
        self.assertTrue(m.is_match(m))
        self.assertTrue(m.is_match("Model"))
Beispiel #2
0
    def test_error_types(self):
        from sciunit.errors import CapabilityError, BadParameterValueError,\
                                   PredictionError, InvalidScoreError
        from sciunit import Model, Capability

        CapabilityError(Model(), Capability)
        PredictionError(Model(), 'foo')
        InvalidScoreError()
        BadParameterValueError('x', 3)
Beispiel #3
0
    def test_error_types(self):
        from sciunit.errors import (
            CapabilityError,
            BadParameterValueError,
            PredictionError,
            InvalidScoreError,
        )
        from sciunit import Model, Capability

        CapabilityError(Model(), Capability)
        CapabilityError(Model(), Capability, "this is a test detail")
        PredictionError(Model(), "foo")
        InvalidScoreError()
        BadParameterValueError("x", 3)
Beispiel #4
0
    def test_Test(self):
        pv = config["PREVALIDATE"]
        config["PREVALIDATE"] = 1
        with self.assertRaises(ObservationError):
            t = Test(None)

        with self.assertRaises(ObservationError):

            class Test2(Test):
                observation_schema = None
                score_type = ZScore
                units = pq.pA

                def generate_prediction(self):
                    return 1

            t = Test2({"mean": 5 * pq.pA})

        t = Test({})
        self.assertRaises(ObservationError, t.validate_observation,
                          "I am not an observation")
        t.observation_schema = {}
        t.validate_observation({0: 0, 1: 1})
        Test.observation_schema = [{}, {}]
        self.assertListEqual(t.observation_schema_names(),
                             ["Schema 1", "Schema 2"])
        config["PREVALIDATE"] = pv

        self.assertRaises(ParametersError, t.validate_params, None)
        self.assertRaises(ParametersError, t.validate_params,
                          "I am not an observation")
        t.params_schema = {}
        t.validate_params({0: 1, 1: 2})

        self.assertRaises(Error, t.check_capabilities, "I am not a model")
        t.condition_model(Model())
        self.assertRaises(NotImplementedError, t.generate_prediction, Model())
        self.assertRaises(NotImplementedError, t.optimize, Model())

        self.assertTrue(t.compute_score({0: 2, 1: 2}, {0: 2, 1: 2}).score)
        self.assertFalse(t.compute_score({0: -2, 1: 2}, {0: 2, 1: -2}).score)
        t.score_type = None
        self.assertRaises(NotImplementedError, t.compute_score, {}, {})

        t.score_type = BooleanScore
        self.assertRaises(InvalidScoreError, t.check_score_type,
                          FloatScore(0.5))
Beispiel #5
0
    def test_ProtocolToFeaturesTest(self):
        t = ProtocolToFeaturesTest([1, 2, 3])
        m = Model()
        m.run = lambda: 0

        self.assertIsInstance(t.generate_prediction(m), NotImplementedError)
        self.assertIsInstance(t.setup_protocol(m), NotImplementedError)
        self.assertIsInstance(t.get_result(m), NotImplementedError)
        self.assertIsInstance(t.extract_features(m, list()),
                              NotImplementedError)
Beispiel #6
0
    def test_backends_init_caches(self):
        myModel = Model()
        backend = Backend()
        backend.model = myModel

        backend.init_backend(use_disk_cache=True, use_memory_cache=True)
        backend.init_backend(use_disk_cache=False, use_memory_cache=True)
        backend.init_backend(use_disk_cache=True, use_memory_cache=False)
        backend.init_backend(use_disk_cache=False, use_memory_cache=False)
        backend.init_cache()
 def test_fake_test(self):
     from neuronunit.tests import FakeTest
     from sciunit import Model
     observation = {'a' : 1, 'b' : 1}
     ft = FakeTest(observation, name="a_b_test")
     m = Model(name="a_b_model")
     m.attrs = {'a' : 1, 'b' : 1}
     prediction = ft.generate_prediction(m)
     score = ft.compute_score([0.9, 1.1], prediction).score
     self.assertAlmostEqual(score, 0.09, 2)
Beispiel #8
0
    def test_Test(self):
        config_set("PREVALIDATE", True)
        with self.assertRaises(ObservationError):
            t = Test(None)
        config_set("PREVALIDATE", False)

        t = Test(None)
        self.assertRaises(ObservationError, t.validate_observation, None)
        self.assertRaises(ObservationError, t.validate_observation,
                          "I am not an observation")
        self.assertRaises(ObservationError, t.validate_observation,
                          {"mean": None})
        t = Test([0, 1])
        t.observation_schema = {}
        t.validate_observation({0: 0, 1: 1})
        Test.observation_schema = [{}, {}]
        self.assertListEqual(t.observation_schema_names(),
                             ["Schema 1", "Schema 2"])

        self.assertRaises(ParametersError, t.validate_params, None)
        self.assertRaises(ParametersError, t.validate_params,
                          "I am not an observation")
        t.params_schema = {}
        t.validate_params({0: 1, 1: 2})

        self.assertRaises(Error, t.check_capabilities, "I am not a model")
        t.condition_model(Model())
        self.assertRaises(NotImplementedError, t.generate_prediction, Model())
        self.assertRaises(NotImplementedError, t.optimize, Model())

        self.assertTrue(t.compute_score({0: 2, 1: 2}, {0: 2, 1: 2}).score)
        self.assertFalse(t.compute_score({0: -2, 1: 2}, {0: 2, 1: -2}).score)
        t.score_type = None
        self.assertRaises(NotImplementedError, t.compute_score, {}, {})

        t.score_type = BooleanScore
        self.assertRaises(InvalidScoreError, t.check_score_type,
                          FloatScore(0.5))
        self.assertRaises(ObservationError, t.judge, [Model(), Model()])
Beispiel #9
0
    def test_backends_set_caches(self):
        myModel = Model()
        backend = Backend()
        backend.model = myModel
        # backend.init_memory_cache()
        self.assertIsNone(backend.get_disk_cache("key1"))
        self.assertIsNone(backend.get_disk_cache("key2"))
        self.assertIsNone(backend.get_memory_cache("key1"))
        self.assertIsNone(backend.get_memory_cache("key2"))
        backend.set_disk_cache("value1", "key1")
        backend.set_memory_cache("value1", "key1")
        self.assertEqual(backend.get_memory_cache("key1"), "value1")
        self.assertEqual(backend.get_disk_cache("key1"), "value1")
        backend.set_disk_cache("value2")
        backend.set_memory_cache("value2")
        self.assertEqual(backend.get_memory_cache(myModel.hash), "value2")
        self.assertEqual(backend.get_disk_cache(myModel.hash), "value2")

        backend.load_model()
        backend.set_attrs(test_attribute="test attribute")
        backend.set_run_params(test_param="test parameter")
        backend.init_backend(use_disk_cache=True, use_memory_cache=True)
Beispiel #10
0
    def test_get_model_state(self):
        from sciunit import Model

        m = Model()
        state = m.__getstate__()
        self.assertEqual(m.__dict__, state)
Beispiel #11
0
        class MyBackend(Backend):
            model = Model()

            def _backend_run(self) -> str:
                return "test result"
Beispiel #12
0
    def test_getattr(self):
        from sciunit import Model

        m = Model()
        self.assertEqual(m.name, m.__getattr__("name"))