def test__getitem__(self): "Dataset: operator 'a[3:5], a[3]'" #1D dataset ds = self.Dataset(name="distance", unit="meter", attributes={}, shape=[12], storage=NdArray('double', list(range(12)))) #slicing self.assertTrue(ds[3:5].storage().compare(NdArray('double', [3, 4]))) #indexing self.assertAlmostEqual(ds[3] / meter, 3) #2D dataset stor = NdArray('double', list(range(12))) stor.setShape((3, 4)) ds = self.Dataset(name="distance", unit="meter", attributes={}, shape=[3, 4], storage=stor) #slicing subarr = ds[1:2, 1:2].storage() expected = NdArray('double', [5]) expected.setShape((1, 1)) self.assertTrue(subarr.compare(expected)) #indexing self.assertAlmostEqual(ds[1, 1] / meter, 5) return
def test_createDataset(self): "histogram.__init__: createDataset" name = "intensity" unit = "1" shape = [100,200] types = [ 'double', 'float', 'int', 'unsigned' ] for datatype in types: try: ds = createDataset( name, unit, shape=shape, data_type = datatype ) except: raise RuntimeError, datatype self.assertEqual( name, ds.name() ) self.assertEqual( 1, ds.unit() ) self.assertVectorEqual( shape, ds.shape() ) self.assertEqual( ds.typecodeAsC(), datatype ) continue from histogram.ndarray.NumpyNdArray import NdArray storage = NdArray( "float", 20000, 0 ) storage.setShape( shape ) ds2 = createDataset( name, unit, storage = storage ) self.assertEqual( name, ds2.name() ) self.assertEqual( 1, ds2.unit() ) self.assertVectorEqual( shape, ds2.shape() ) self.assertEqual( ds2.typecodeAsC(), "float" ) return
def test_createDataset(self): "histogram.__init__: createDataset" name = "intensity" unit = "1" shape = [100, 200] types = ['double', 'float', 'int', 'unsigned'] for datatype in types: try: ds = createDataset(name, unit, shape=shape, data_type=datatype) except: raise RuntimeError(datatype) self.assertEqual(name, ds.name()) self.assertEqual(1, ds.unit()) self.assertVectorEqual(shape, ds.shape()) self.assertEqual(ds.typecodeAsC(), datatype) continue from histogram.ndarray.NumpyNdArray import NdArray storage = NdArray("float", 20000, 0) storage.setShape(shape) ds2 = createDataset(name, unit, storage=storage) self.assertEqual(name, ds2.name()) self.assertEqual(1, ds2.unit()) self.assertVectorEqual(shape, ds2.shape()) self.assertEqual(ds2.typecodeAsC(), "float") return
def test__setitem__(self): "Dataset: operator 'a[3]=4'" #1D dataset ds = self.Dataset(name="distance", unit="meter", attributes={}, shape=[12], storage=NdArray('double', list(range(12)))) #set slice from numpy import array ds[3:5] = array([1, 2]) * meter self.assertTrue(ds[3:5].storage().compare(NdArray('double', [1, 2]))) #set item ds[10] = 11 * meter self.assertAlmostEqual(ds[10] / meter, 11) #2D dataset stor = NdArray('double', list(range(12))) stor.setShape((3, 4)) ds = self.Dataset(name="distance", unit="meter", attributes={}, shape=[3, 4], storage=stor) #slicing ds[1:2, 1:2] = array([[999]]) * meter subarr = ds[1:2, 1:2].storage() expected = NdArray('double', [999]) expected.setShape((1, 1)) self.assertTrue(subarr.compare(expected)) #indexing self.assertAlmostEqual(ds[1, 1] / meter, 999) ds[1, 1] = 333 * meter self.assertAlmostEqual(ds[1, 1] / meter, 333) #set slice with datasets ds1v = NdArray('double', list(range(12))) ds1v.setShape((3, 4)) ds1 = self.Dataset(name="distance", unit="meter", shape=[3, 4], storage=ds1v) ds2v = NdArray('double', list(range(4))) ds2v.setShape((2, 2)) ds2 = self.Dataset(name="distance", unit="meter", shape=[2, 2], storage=ds2v) ds1[1:3, 1:3] = ds2 #set slice with one number ds1v = NdArray('double', list(range(12))) ds1v.setShape((3, 4)) ds1 = self.Dataset(name="distance", unit="meter", shape=[3, 4], storage=ds1v) ds1[1:3, 1:3] = 1 * meter return
def testSum(self): "Dataset: method 'sum'" storage = NdArray('double', list(range(6))) storage.setShape((2, 3)) ds = self.Dataset(name="distance", unit="meter", attributes={}, shape=[2, 3], storage=storage) self.assertAlmostEqual(ds.sum() / meter, 15.) ds1 = ds.sum(0) expected = NdArray('double', [3, 5, 7]) self.assertTrue(ds1.storage().compare(expected)) return
def test_1(**kwds): from histogram.Axis import Axis from histogram.NdArrayDataset import Dataset name = 'test' unit = '1' attributes = { 'plottable': True, 'nifty': False, 'pi': 3.14159, 3.14159: 'pi' } lengths = [2, 3, 4] dtype = 6 # double stor1 = NdArray(dtype, lengths[0] + 1, 1.0) ax1 = Axis(name + 'ax1', unit, attributes, lengths[0], stor1) stor2 = NdArray(dtype, lengths[1] + 1, 1.0) ax2 = Axis(name + 'ax2', unit, attributes, lengths[1], stor2) stor3 = NdArray(dtype, lengths[2] + 1, 1.0) ax3 = Axis(name + 'ax3', unit, attributes, lengths[2], stor3) size = lengths[0] * lengths[1] * lengths[2] dataStore = NdArray(dtype, size, 1.0) dataStore.setShape((2, 3, 4)) data = Dataset(name + 'data', unit, attributes, lengths, dataStore) errorStore = NdArray(dtype, size, 1.0) errorStore.setShape((2, 3, 4)) error = Dataset(name + 'error', unit, attributes, lengths, errorStore) from histogram.Histogram import Histogram hist = Histogram('testHist', data, error, [ax1, ax2, ax3], attributes) passed = True hax1 = hist.axisFromId(1) if hax1 is not ax1: passed = False log("hax1 was %s instead of %s" % (hax1, ax1)) return passed
def test_0(**kwds): from histogram.Axis import Axis from histogram.NdArrayDataset import Dataset name = 'test' unit = '1' attributes = { 'plottable': True, 'nifty': False, 'pi': 3.14159, 3.14159: 'pi' } lengths = [2, 3, 4] dtype = 6 # double stor1 = NdArray(dtype, lengths[0] + 1, 1.0) ax1 = Axis(name + 'ax1', unit, attributes, lengths[0], stor1) stor2 = NdArray(dtype, lengths[1] + 1, 1.0) ax2 = Axis(name + 'ax2', unit, attributes, lengths[1], stor2) stor3 = NdArray(dtype, lengths[2] + 1, 1.0) ax3 = Axis(name + 'ax3', unit, attributes, lengths[2], stor3) size = lengths[0] * lengths[1] * lengths[2] dataStore = NdArray(dtype, size, 1.0) dataStore.setShape((2, 3, 4)) data = Dataset(name + 'data', unit, attributes, lengths, dataStore) errorStore = NdArray(dtype, size, 1.0) errorStore.setShape((2, 3, 4)) error = Dataset(name + 'error', unit, attributes, lengths, errorStore) from histogram.Histogram import Histogram histogram = Histogram('testHist', data, error, [ax1, ax2, ax3], attributes) return True