Example #1
0
    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().subset(['vertical', 'horizontal'])

        self.assertTrue(sl.shape, (10, data.shape[1]))
Example #2
0
    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)
Example #3
0
    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()

# Set the output of the normaliser as the input and execute to determine center.
cor.set_input(norm.get_output())
center_of_rotation = cor.get_output()

# Set up AcquisitionDataPadder to pad data for centering using the computed
# center, set the output of the normaliser as input and execute to produce
# padded/centered data.
padder = AcquisitionDataPadder(center_of_rotation=center_of_rotation)
padder.set_input(norm.get_output())
padded_data = padder.get_output()