Exemplo n.º 1
0
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')]))
Exemplo n.º 5
0
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')
]