def testAll(self): if has_wget: # def testGetDimensions(self): nr = NexusReader(self.filename) self.assertEqual(nr.get_sinogram_dimensions(), (135, 91, 160), "Sinogram dimensions are not correct") # def testGetProjectionDimensions(self): nr = NexusReader(self.filename) self.assertEqual(nr.get_projection_dimensions(), (91, 135, 160), "Projection dimensions are not correct") # def testLoadProjectionWithoutDimensions(self): nr = NexusReader(self.filename) projections = nr.load_projection() self.assertEqual( projections.shape, (91, 135, 160), "Loaded projection data dimensions are not correct") # def testLoadProjectionWithDimensions(self): nr = NexusReader(self.filename) projections = nr.load_projection( (slice(0, 1), slice(0, 135), slice(0, 160))) self.assertEqual( projections.shape, (1, 135, 160), "Loaded projection data dimensions are not correct") # def testLoadProjectionCompareSingle(self): nr = NexusReader(self.filename) projections_full = nr.load_projection() projections_part = nr.load_projection( (slice(0, 1), slice(0, 135), slice(0, 160))) numpy.testing.assert_array_equal(projections_part, projections_full[0:1, :, :]) # def testLoadProjectionCompareMulti(self): nr = NexusReader(self.filename) projections_full = nr.load_projection() projections_part = nr.load_projection( (slice(0, 3), slice(0, 135), slice(0, 160))) numpy.testing.assert_array_equal(projections_part, projections_full[0:3, :, :]) # def testLoadProjectionCompareRandom(self): nr = NexusReader(self.filename) projections_full = nr.load_projection() projections_part = nr.load_projection( (slice(1, 8), slice(5, 10), slice(8, 20))) numpy.testing.assert_array_equal(projections_part, projections_full[1:8, 5:10, 8:20]) # def testLoadProjectionCompareFull(self): nr = NexusReader(self.filename) projections_full = nr.load_projection() projections_part = nr.load_projection( (slice(None, None), slice(None, None), slice(None, None))) numpy.testing.assert_array_equal(projections_part, projections_full[:, :, :]) # def testLoadFlatCompareFull(self): nr = NexusReader(self.filename) flats_full = nr.load_flat() flats_part = nr.load_flat( (slice(None, None), slice(None, None), slice(None, None))) numpy.testing.assert_array_equal(flats_part, flats_full[:, :, :]) # def testLoadDarkCompareFull(self): nr = NexusReader(self.filename) darks_full = nr.load_dark() darks_part = nr.load_dark( (slice(None, None), slice(None, None), slice(None, None))) numpy.testing.assert_array_equal(darks_part, darks_full[:, :, :]) # def testProjectionAngles(self): nr = NexusReader(self.filename) angles = nr.get_projection_angles() self.assertEqual( angles.shape, (91, ), "Loaded projection number of angles are not correct") # def test_get_acquisition_data_subset(self): nr = NexusReader(self.filename) key = nr.get_image_keys() sl = nr.get_acquisition_data_subset(0, 10) data = nr.get_acquisition_data() print(data.geometry) print(data.geometry.dimension_labels) print(data.dimension_labels) rdata = data.subset(channel=0) # self.assertTrue(sl.shape, (10, rdata.shape[1])) try: data.subset(['vertical', 'horizontal']) self.assertTrue(False) except ValueError as ve: print("Exception catched", ve) self.assertTrue(True) else: # skips all tests if module wget is not present self.assertFalse(has_wget)
def testGetProjectionDimensions(self): nr = NexusReader(self.filename) self.assertEqual(nr.get_projection_dimensions(), (91, 135, 160), "Projection dimensions are not correct")
def avg_img(image): shape = list(numpy.shape(image)) l = shape.pop(0) avg = numpy.zeros(shape) for i in range(l): avg += image[i] / l return avg # Set up a reader object pointing to the Nexus data set. Revise path as needed. reader = NexusReader( os.path.join("..", "..", "..", "..", "CCPi-ReconstructionFramework", "data", "24737_fd.nxs")) # Read and print the dimensions of the raw projections dims = reader.get_projection_dimensions() print(dims) # Load and average all flat and dark images in preparation for normalising data. flat = avg_img(reader.load_flat()) dark = avg_img(reader.load_dark()) # Set up normaliser object for normalising data by flat and dark images. norm = Normalizer(flat_field=flat, dark_field=dark) # Load the raw projections and pass as input to the normaliser. norm.set_input(reader.get_acquisition_data()) # Set up CenterOfRotationFinder object to center data. cor = CenterOfRotationFinder()
avg.set_input(flatsslice) flats = avg.get_output() ave = averager() ave.stats(flatsslice.array[:,0,0]) print ("avg" , ave.avg, flats.array[0][0][0]) print ("var" , ave.var, flats.array[1][0][0]) print ("read dark") read_dark = NexusReader(os.path.join( os.path.abspath(directory) , '74243.nxs')) read_dark.data_path = data_path ## darks are very many so we proceed in batches total_size = read_dark.get_projection_dimensions()[0] print ("total_size", total_size) batchsize = 40 if batchsize > total_size: batchlimits = [batchsize * (i+1) for i in range(int(total_size/batchsize))] + [total_size-1] else: batchlimits = [total_size] #avg.N = 0 avg.offset = 0 N = 0 for batch in range(len(batchlimits)): print ("running batch " , batch) bmax = batchlimits[batch] bmin = bmax-batchsize