def test_create_csv_backend(): indep = [backend.Independent(label='ilabel1', shape=[1], datatype='v', unit=''), backend.Independent(label='ilabel2', shape=[1], datatype='v', unit='')] dep = [backend.Dependent(label='dlabel', legend='dlegend1', shape=[1], datatype='v', unit=''), backend.Dependent(label='dlabel', legend='dlegend2', shape=[1], datatype='v', unit='')] csv_filename = tempfile.mktemp(suffix='.csv') ini_filename = csv_filename[:-4] + '.ini' try: dataset = backend.CsvNumpyData(csv_filename) dataset.initialize_info('test CSV dataset', indep, dep) dataset.save() rec_array = datavault.util.to_record_array(np.eye(4)) dataset.addData(rec_array) rec_array_tr = np.core.records.fromarrays((np.ones(4)*1, np.ones(4)*2, np.ones(4)*3, np.ones(4)*4)) dataset.addData(rec_array_tr) dataset.save() del dataset dataset = backend.open_backend(csv_filename[:-4]) data, newpos = dataset.getData(limit=8, start=0, transpose=False, simpleOnly=True) data = datavault.util.from_record_array(data) ref_data = np.vstack((np.eye(4), np.array([np.ones(4)*1, np.ones(4)*2, np.ones(4)*3, np.ones(4)*4]).T)) assert np.array_equal(data, ref_data) assert os.path.exists(csv_filename) assert os.path.exists(ini_filename) finally: unlink_if_exist(ini_filename, csv_filename)
def test_add_string_array_column(self): name = _unique_filename() data = self.get_backend_data(name) independent = backend.Independent(label='NewVariable', shape=(2, 0), datatype='s', unit='') self.assertRaises(ValueError, data.initialize_info, 'FooTitle', [independent], [])
def test_initialize_type_unknown(self): name = _unique_filename() data = self.get_backend_data(name) independent = backend.Independent(label='NewVariable', shape=(1, ), datatype='x', unit='') self.assertRaises(RuntimeError, data.initialize_info, 'FooTitle', [independent], [])
def test_initialize_type_v(self): name = _unique_filename() data = self.get_backend_data(name) independent = backend.Independent(label='NewVariable', shape=(1, ), datatype='s', unit='') data.initialize_info('Foo', [independent], []) self.assertEqual(data.dtype, np.dtype([('f0', 'O')]))
def test_create_simple_backend(): try: fname = tempfile.mktemp(suffix='.hdf5') indep = [backend.Independent(label='ilabel1', shape=[1], datatype='v', unit=''), backend.Independent(label='ilabel2', shape=[1], datatype='v', unit='')] dep = [backend.Dependent(label='dlabel', legend='dlegend1', shape=[1], datatype='v', unit=''), backend.Dependent(label='dlabel', legend='dlegend2', shape=[1], datatype='v', unit='')] dvfile = backend.create_backend(fname[:-5], "Test of datavault", indep, dep, extended=False) rec_array = datavault.util.to_record_array(np.eye(4)) dvfile.addData(rec_array) rec_array_tr = np.core.records.fromarrays((np.ones(4)*1, np.ones(4)*2, np.ones(4)*3, np.ones(4)*4)) dvfile.addData(rec_array_tr) data, newpos = dvfile.getData(limit=8, start=0, transpose=False, simpleOnly=True) data = datavault.util.from_record_array(data) ref_data = np.vstack((np.eye(4), np.array([np.ones(4)*1, np.ones(4)*2, np.ones(4)*3, np.ones(4)*4]).T)) assert np.array_equal(data, ref_data) finally: unlink_if_exist(fname)
def test_add_complex_data_array_then_read_objs(self): name = _unique_filename() data = self.get_backend_data(name) independent = backend.Independent(label='NewVariable', shape=(1, ), datatype='s', unit='') data.initialize_info('Foo', [independent], []) data_entry = np.recarray((1, ), dtype=[('f0', 'O')]) data_entry[0] = ({'a': 0}, ) data.addData(data_entry) added_data, _ = data.getData(None, 0, False, None) self.assertEqual(added_data[0][0], "{'a': 0}")
def test_add_complex_data_array_then_read(self): name = _unique_filename() data = self.get_backend_data(name) independent = backend.Independent(label='NewVariable', shape=(2, 2), datatype='c', unit='V') data.initialize_info('Foo', [independent], []) data_entry = np.recarray((1, ), dtype=[('f0', '<c16', (2, 2))]) data_entry[0][0][0] = [0j, 1j] data_entry[0][0][1] = [1j, 0j] data.addData(data_entry) added_data, _ = data.getData(None, 0, False, None) self.assert_arrays_equal(added_data[0][0], [[0j, 1j], [1j, 0j]])
def test_create_new_simple_dataset(self): # Create the root session and a child session. self.datavault.initContext(self.context) # Create a dataset at root. path, name = self.datavault.new(self.context, 'foo', [('x', 'ms')], [('y', 'E', 'eV')]) self.assertEqual([''], path) self.assertEqual('00001 - foo', name) self.assertEqual('2.0.0', self.datavault.get_version(self.context)) # Check that it contains the right pieces. # Simple variables output. independents, dependents = self.datavault.variables(self.context) self.assertEqual([('x', 'ms')], independents) self.assertEqual([('y', 'E', 'eV')], dependents) # Extended variables output. independents_ex, dependents_ex = self.datavault.variables_ex( self.context) expected_independents_ex = [ backend.Independent(label='x', shape=(1, ), datatype='v', unit='ms') ] expected_dependents_ex = [ backend.Dependent(label='y', legend='E', shape=(1, ), datatype='v', unit='eV') ] self.assertEqual(expected_independents_ex, independents_ex) self.assertEqual(expected_dependents_ex, dependents_ex) # Name. self.assertEqual(name, self.datavault.get_name(self.context)) # Row and transpose type. self.assertEqual('*(v[ms],v[eV])', self.datavault.row_type(self.context)) self.assertEqual('(*v[ms],*v[eV])', self.datavault.transpose_type(self.context))
def test_initialize_info_bad_vars(self): bad_independents = [ backend.Independent(label='FirstVariable', shape=(1, ), datatype='f', unit='Ghz') ] data = self.get_backend_data(self.filename) self.assertRaises(RuntimeError, data.initialize_info, 'FooTitle', bad_independents, []) bad_dependents = [ backend.Dependent(label='Cents', legend='OnlyDependent', shape=(1, ), datatype='t', unit='Dollars') ] self.assertRaises(RuntimeError, data.initialize_info, 'FooTitle', bad_dependents, [])
def onCloseCallback(self_closing_file): self.close_callback_called = True self.file.onClose(onCloseCallback) # Advance clock to close the self closing file. self.clock.advance(self.close_timeout_sec) self.assertFalse(self.opener.file.is_open, msg='File not closed after timeout') self.assertTrue(self.close_callback_called, msg='Registered callback not called!') # Dependent and Independent variables used for testing IniData and HDF5MetaData. _INDEPENDENTS = [ backend.Independent(label='FirstVariable', shape=(1, ), datatype='v', unit='Ghz'), backend.Independent(label='SecondVariable', shape=(1, ), datatype='v', unit='Kelvin') ] _DEPENDENTS = [ backend.Dependent(label='Cents', legend='OnlyDependent', shape=(1, ), datatype='v', unit='Dollars') ]