From f3cde157aeddf7508377505cfc22d51088f19d0f Mon Sep 17 00:00:00 2001 From: "Mads M. Pedersen" <mmpe@dtu.dk> Date: Wed, 12 Oct 2016 08:01:30 +0200 Subject: [PATCH] minor improvement of gtsdf --- wetb/gtsdf/__init__.py | 10 +++++++--- wetb/gtsdf/gtsdf.py | 3 +++ wetb/gtsdf/tests/test_gtsdf.py | 25 ++++++++++++++++++++----- wetb/gtsdf/unix_time.py | 2 +- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/wetb/gtsdf/__init__.py b/wetb/gtsdf/__init__.py index b4b88948..7339aa34 100644 --- a/wetb/gtsdf/__init__.py +++ b/wetb/gtsdf/__init__.py @@ -42,10 +42,14 @@ from .gtsdf import load_pandas class Dataset(object): def __init__(self, filename): self.time, self.data, self.info = load(filename) - def __call__(self, name): - if name == "Time": + def __call__(self, id): + if isinstance(id, str): + return self((['Time'] + self.info['attribute_names']).index(id) + 1) + if id == 1: return self.time - return self.data[:, self.info['attribute_names'].index(name)] + else: + return self.data[:, id - 2] + __all__ = sorted([m for m in set(dir()) - set(d)]) diff --git a/wetb/gtsdf/gtsdf.py b/wetb/gtsdf/gtsdf.py index 9ebf7877..6ec004be 100644 --- a/wetb/gtsdf/gtsdf.py +++ b/wetb/gtsdf/gtsdf.py @@ -322,6 +322,9 @@ def append_block(filename, data, **kwargs): dtype = kwargs.get('dtype', np.uint16) else: dtype = f[block_name_fmt % 0]['data'].dtype + if dtype == np.uint16: + if no_observations < 12: # size with float32<1.2*size with uint16 + dtype = np.float32 block = f.create_group(block_name_fmt % blocknr) if 'time' in kwargs: diff --git a/wetb/gtsdf/tests/test_gtsdf.py b/wetb/gtsdf/tests/test_gtsdf.py index c70016fd..004eed32 100644 --- a/wetb/gtsdf/tests/test_gtsdf.py +++ b/wetb/gtsdf/tests/test_gtsdf.py @@ -31,7 +31,7 @@ class Test_gsdf(unittest.TestCase): @classmethod def tearDownClass(cls): super(Test_gsdf, cls).tearDownClass() - shutil.rmtree(tmp_path) + #shutil.rmtree(tmp_path) def test_minimum_requirements (self): fn = tmp_path + "minimum.hdf5" @@ -170,15 +170,27 @@ class Test_gsdf(unittest.TestCase): def test_append(self): fn = tmp_path + 'append.hdf5' - d = np.arange(12, dtype=np.float32).reshape(6, 2) + d = np.arange(48, dtype=np.float32).reshape(24, 2) d[2, 0] = np.nan gtsdf.save(fn, d) _, data, _ = gtsdf.load(fn) - np.testing.assert_array_almost_equal(data, d, 4) + np.testing.assert_array_almost_equal(data, d, 3) gtsdf.append_block(fn, d) _, data, _ = gtsdf.load(fn) - self.assertEqual(data.shape, (12, 2)) - np.testing.assert_array_almost_equal(data, np.append(d, d, 0), 4) + self.assertEqual(data.shape, (48, 2)) + np.testing.assert_array_almost_equal(data, np.append(d, d, 0), 3) + f = h5py.File(fn) + self.assertIn('gains', f['block0001']) + f.close() + + def test_append_small_block(self): + fn = tmp_path + 'append_small_block.hdf5' + d = np.arange(12, dtype=np.float32).reshape(2, 6) + gtsdf.save(fn, d) + gtsdf.append_block(fn, d + 12) + f = h5py.File(fn) + self.assertNotIn('gains', f['block0001']) + f.close() def test_nan_float(self): @@ -226,6 +238,9 @@ class Test_gsdf(unittest.TestCase): + + + if __name__ == "__main__": #import sys;sys.argv = ['', 'Test.testName'] unittest.main() diff --git a/wetb/gtsdf/unix_time.py b/wetb/gtsdf/unix_time.py index 6bf435e3..dfd4bc6e 100644 --- a/wetb/gtsdf/unix_time.py +++ b/wetb/gtsdf/unix_time.py @@ -34,7 +34,7 @@ def from_unix(sec): return datetime.utcfromtimestamp(0) return datetime.utcfromtimestamp(sec) else: - sec = np.array(sec) + sec = np.array(sec).astype(np.float) ms = np.atleast_1d((sec * 1000000 % 1000000).astype(np.int)) sec = sec.astype(np.int) S = np.atleast_1d(sec % 60) -- GitLab