def test_add_hdf_dataset(self): """ Test adding a name and an array """ testencoder = HDFEncoder() testencoder.add_hdf_dataset('test_dataset', self.known_array) testencoder.encoder_close()
def test_add_hdf_dataset_with_bad_array(self): """ Test adding a name and a something other than an array """ testencoder = HDFEncoder() with self.assertRaises(HDFEncoderException): testencoder.add_hdf_dataset(self.dataset_name,'bad array') testencoder.encoder_close()
def test_add_hdf_dataset_with_bad_name(self): """ Test adding a bad name and an array """ testencoder = HDFEncoder() with self.assertRaises(HDFEncoderException): self.dataset = testencoder.add_hdf_dataset('bad name', self.known_array) testencoder.encoder_close()
def test_encode_known_and_compare(self): """ Create an encoder and add some (one) dataset/array """ hdfencoder = HDFEncoder() hdfencoder.add_hdf_dataset(self.path_to_dataset, self.known_array) # Serialize to string and compare to a know value hdf_string = hdfencoder.encoder_close() self.assertEqual(hdf_string,self.known_hdf_as_string)
def test_encode_decode(self): """ Encode some arrays """ hdfencoder = HDFEncoder() # put array into the encoder hdfencoder.add_hdf_dataset(self.path_to_dataset, self.known_array) # get the string out from encoder hdf_string = hdfencoder.encoder_close() # Compare the arrays hdfdecoder = HDFDecoder(hdf_string) # put string in decoder... nparray = hdfdecoder.read_hdf_dataset(self.path_to_dataset) # get array out self.assertEqual(nparray.tostring(), self.known_array.tostring()) # works for arbitrarily shaped arrays
def test_decode_encode(self): """ Try a decode-encode sequence and compare if its the same string """ # decode an existing hdf file and read out an array hdfdecoder = HDFDecoder(self.known_hdf_as_string) # put known string in decoder... nparray = hdfdecoder.read_hdf_dataset(self.path_to_dataset) # get array out # encode the array and get the binary string containing the encoded hdf file hdfencoder = HDFEncoder() # put the array in the encoder... hdfencoder.add_hdf_dataset(self.path_to_dataset, self.known_array) hdf_string = hdfencoder.encoder_close() # get string out # compare the two strings self.assertEqual(hdf_string,self.known_hdf_as_string)
def test_encode_with_filename_and_compare(self): """ Create an encoder and add some (one) dataset/array """ testfilename = '/tmp/testFile.hdf5' hdfencoder = HDFEncoder(testfilename) hdfencoder.add_hdf_dataset(self.path_to_dataset, self.known_array) # get the string out from encoder hdf_string = hdfencoder.encoder_close() self.assertEqual(hdf_string,self.known_hdf_as_string) hdfdecoder = HDFDecoder(self.known_hdf_as_string) nparray = hdfdecoder.read_hdf_dataset(self.path_to_dataset) self.assertEqual(nparray.tostring(), self.known_array.tostring())
def add_two_datasets_read_compare(self, filename, dataset_name1, dataset_name2): array1 = numpy.ones((4,5)) array2 = numpy.ones((2,3)) # first create the file hdfencoder = HDFEncoder(filename) hdfencoder.add_hdf_dataset(dataset_name1, array1) hdfstring = hdfencoder.encoder_close() # now open the file and add another branch hdfencoder = HDFEncoder(filename) hdfencoder.add_hdf_dataset(dataset_name2, array2) hdfstring = hdfencoder.encoder_close() hdfdecoder = HDFDecoder(hdfstring) # Read the first dataset array_decoded_1 = hdfdecoder.read_hdf_dataset(dataset_name1) hdfdecoder = HDFDecoder(hdfstring) # Read the second dataset array_decoded_2 = hdfdecoder.read_hdf_dataset(dataset_name2) self.assertEqual(array1.tostring(), array_decoded_1.tostring()) self.assertEqual(array2.tostring(), array_decoded_2.tostring())
import numpy, h5py from prototype.hdf.science_object_codec import HDFEncoder, HDFDecoder array1 = numpy.ones((4,5)) array2 = numpy.ones((2,3)) array3 = numpy.ones((10,2)) dataset_name1 = 'rootgroup/mygroup/data/temperature' dataset_name2 = 'rootgroup/mygroup/data/pressure' dname = 'aGroup/adataset' ########################################################### # Create an encoder object hdfencoder = HDFEncoder() # Add data as an array hdfencoder.add_hdf_dataset(dataset_name1, array1) hdfencoder.add_hdf_dataset(dataset_name2, array2) # Convert all the data to a binary string for easy transportation hdfstring1 = hdfencoder.encoder_close() # Create another encoder. This time pass on name of hdf5 file to write hdfencoder = HDFEncoder('/tmp/testHDFEncoder.hdf5') hdfencoder.add_hdf_dataset(dataset_name1, array1) hdfencoder.add_hdf_dataset(dataset_name2, array2) # Convert all the data to a binary string for easy transportation hdfstring2 = hdfencoder.encoder_close() # Create another encoder. This time pass on name of hdf5 file to write hdfencoder = HDFEncoder('/tmp/testHDFEncoder.hdf5') hdfencoder.add_hdf_dataset(dname, array3)