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')
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')
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)
def setUp(self): path = os.path.join(PATH, "elements.h5") self.test_obj = ElementReportReader(path)
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)