Exemple #1
0
def test_path_ctor():
    #  make sure constructors that take file paths can use pathlib.Path
    path = pathlib.Path(PATH)

    NodeStorage(path / 'nodes1.h5')
    EdgeStorage(path / 'edges1.h5')
    SpikeReader(path / 'spikes.h5')
    SomaReportReader(path / 'somas.h5')
    ElementReportReader(path / 'elements.h5')
Exemple #2
0
def test_path_ctor():
    #  make sure constructors that take file paths can use pathlib.Path
    path = pathlib.Path(PATH)

    NodeStorage(path / 'nodes1.h5')
    EdgeStorage(path / 'edges1.h5')
    SpikeReader(path / 'spikes.h5')
    SomaReportReader(path / 'somas.h5')
    ElementReportReader(path / 'elements.h5')
    NodeSets.from_file(path / 'node_sets.json')
    CircuitConfig.from_file(path / 'config/circuit_config.json')
Exemple #3
0
class TestElementReportPopulation(unittest.TestCase):
    def setUp(self):
        path = os.path.join(PATH, "elements.h5")
        self.test_obj = ElementReportReader(path)

    def test_get_all_population(self):
        self.assertEqual(self.test_obj.get_populations_names(),
                         ['All', 'element1', 'element42'])

    def test_get_population(self):
        self.assertTrue(
            isinstance(self.test_obj['All'], ElementReportPopulation))

    def test_get_inexistant_population(self):
        self.assertRaises(RuntimeError, self.test_obj.__getitem__, 'foobar')

    def test_get_reports_from_population(self):
        self.assertEqual(self.test_obj['All'].times, (0., 4., 0.2))
        self.assertEqual(self.test_obj['All'].time_units, 'ms')
        self.assertEqual(self.test_obj['All'].data_units, 'mV')
        self.assertTrue(self.test_obj['All'].sorted)
        self.assertEqual(len(self.test_obj['All'].get().data),
                         100)  # Number of elements
        sel = self.test_obj['All'].get(node_ids=[13, 14],
                                       tstart=0.8,
                                       tstop=1.2)
        keys = list(sel.data.keys())
        keys.sort()
        self.assertEqual(keys,
                         [(13, 60), (13, 61), (13, 62), (13, 63), (13, 64),
                          (14, 65), (14, 66), (14, 67), (14, 68), (14, 69)])

        self.assertEqual(len(sel.index),
                         3)  # Number of timestamp (0.8, 1.0 and 1.2)
        sel = self.test_obj['All'].get(tstart=5.,
                                       tstop=-1)  # tstart out of range
        self.assertEqual(len(sel.data), 0)
        sel = self.test_obj['All'].get(tstart=3., tstop=3.)
        self.assertEqual(len(sel.data), 100)
Exemple #4
0
 def setUp(self):
     path = os.path.join(PATH, "elements.h5")
     self.test_obj = ElementReportReader(path)
Exemple #5
0
class TestElementReportPopulation(unittest.TestCase):
    def setUp(self):
        path = os.path.join(PATH, "elements.h5")
        self.test_obj = ElementReportReader(path)

    def test_get_all_population(self):
        self.assertEqual(self.test_obj.get_population_names(),
                         ['All', 'element1', 'element42'])

    def test_get_population(self):
        self.assertTrue(
            isinstance(self.test_obj['All'], ElementReportPopulation))

    def test_get_inexistant_population(self):
        self.assertRaises(RuntimeError, self.test_obj.__getitem__, 'foobar')

    def test_get_node_ids(self):
        self.assertEqual(self.test_obj['All'].get_node_ids(), [
            1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
            20
        ])

    def test_get_reports_from_population(self):
        self.assertEqual(self.test_obj['All'].times, (0., 4., 0.2))
        # check following calls succeed (no memory destroyed)
        self.assertEqual(self.test_obj['All'].times, (0., 4., 0.2))

        self.assertEqual(self.test_obj['All'].time_units, 'ms')
        self.assertEqual(self.test_obj['All'].data_units, 'mV')
        self.assertTrue(self.test_obj['All'].sorted)
        self.assertEqual(len(self.test_obj['All'].get(tstride=2).data),
                         10)  # Number of times in this range
        self.assertEqual(len(self.test_obj['All'].get(tstride=2).times),
                         10)  # Should be the same
        self.assertEqual(len(self.test_obj['All'].get().ids), 100)
        sel = self.test_obj['All'].get(node_ids=[13, 14],
                                       tstart=0.8,
                                       tstop=1.2)
        keys = list(sel.ids)
        keys.sort()
        self.assertEqual(keys,
                         [(13, 30), (13, 30), (13, 31), (13, 31), (13, 32),
                          (14, 32), (14, 33), (14, 33), (14, 34), (14, 34)])

        self.assertEqual(len(self.test_obj['All'].get(node_ids=[]).data), 0)
        self.assertEqual(len(self.test_obj['All'].get(node_ids=[]).times), 0)
        self.assertEqual(len(self.test_obj['All'].get(node_ids=[]).ids), 0)

        self.assertEqual(len(sel.times),
                         3)  # Number of timestamp (0.8, 1.0 and 1.2)
        with self.assertRaises(SonataError):
            self.test_obj['All'].get(tstart=5.)  # tstart out of range

        # tstart should be <= tstop
        np.testing.assert_allclose(
            self.test_obj['All'].get(node_ids=[1, 2], tstart=3.,
                                     tstop=3.).data[0], [
                                         150.0, 150.1, 150.2, 150.3, 150.4,
                                         150.5, 150.6, 150.7, 150.8, 150.9
                                     ])
        # check following calls succeed (no memory destroyed)
        np.testing.assert_allclose(
            self.test_obj['All'].get(node_ids=[1, 2], tstart=3.,
                                     tstop=3.).data[0], [
                                         150.0, 150.1, 150.2, 150.3, 150.4,
                                         150.5, 150.6, 150.7, 150.8, 150.9
                                     ])
        np.testing.assert_allclose(
            self.test_obj['All'].get(node_ids=[3, 4], tstart=0.2,
                                     tstop=0.4).data[0],
            [11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 11.9], 1e-6,
            0)
        np.testing.assert_allclose(
            self.test_obj['All'].get(node_ids=[3, 4], tstride=4).data[2],
            [81.0, 81.1, 81.2, 81.3, 81.4, 81.5, 81.6, 81.7, 81.8, 81.9], 1e-6,
            0)