Esempio n. 1
0
    def test_stack_and_subset(self):

        self.pipeline.set_attribute("images", "PARANG", np.arange(1., 41., 1.), static=False)

        stack = StackAndSubsetModule(name_in="stack",
                                     image_in_tag="images",
                                     image_out_tag="stack",
                                     random=10,
                                     stacking=2)

        self.pipeline.add_module(stack)
        self.pipeline.run_module("stack")

        data = self.pipeline.get_data("stack")
        assert np.allclose(data[0, 50, 50], 0.09816320034649725, rtol=limit, atol=0.)
        assert np.allclose(np.mean(data), 9.983545774937238e-05, rtol=limit, atol=0.)
        assert data.shape == (10, 100, 100)

        data = self.pipeline.get_data("header_stack/INDEX")
        index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        assert np.allclose(data, index, rtol=limit, atol=0.)
        assert data.shape == (10, )

        data = self.pipeline.get_data("header_stack/PARANG")
        parang = [1.5, 15.5, 19.5, 23.5, 25.5, 29.5, 31.5, 35.5, 37.5, 39.5]
        assert np.allclose(data, parang, rtol=limit, atol=0.)
        assert data.shape == (10, )
    def test_stack_and_subset(self) -> None:

        self.pipeline.set_attribute('images', 'PARANG', np.arange(10.), static=False)

        module = StackAndSubsetModule(name_in='stack1',
                                      image_in_tag='images',
                                      image_out_tag='stack1',
                                      random=4,
                                      stacking=2,
                                      combine='mean',
                                      max_rotation=None)

        self.pipeline.add_module(module)
        self.pipeline.run_module('stack1')

        data = self.pipeline.get_data('stack1')
        assert np.mean(data) == pytest.approx(0.08758276283743936, rel=self.limit, abs=0.)
        assert data.shape == (4, 11, 11)

        data = self.pipeline.get_data('header_stack1/INDEX')
        assert data == pytest.approx(np.arange(4), rel=self.limit, abs=0.)
        assert data.shape == (4, )

        data = self.pipeline.get_data('header_stack1/PARANG')
        assert data == pytest.approx([0.5, 2.5, 6.5, 8.5], rel=self.limit, abs=0.)
        assert data.shape == (4, )
Esempio n. 3
0
    def test_stack(self):

        subset = StackAndSubsetModule(name_in="stacking_subset",
                                      image_in_tag="im_arr_aligned",
                                      image_out_tag="im_arr_stacked",
                                      random=None,
                                      stacking=4)

        self.pipeline.add_module(subset)
        self.pipeline.run_module("stacking_subset")

        data = self.pipeline.get_data("im_arr_stacked")
        assert np.allclose(data[0, 10, 10],
                           2.55745339731812e-05,
                           rtol=limit,
                           atol=0.)
        assert data.shape == (20, 46, 46)
Esempio n. 4
0
    def test_stack_max_rotation(self) -> None:

        angles = np.arange(1., 41., 1.)
        angles[1:6] = 3.
        angles[39] = 50.

        self.pipeline.set_attribute('images', 'PARANG', angles, static=False)

        module = StackAndSubsetModule(name_in='stack2',
                                      image_in_tag='images',
                                      image_out_tag='stack2',
                                      random=None,
                                      stacking=2,
                                      combine='median',
                                      max_rotation=1.)

        self.pipeline.add_module(module)
        with pytest.warns(UserWarning) as warning:
            self.pipeline.run_module('stack2')

        assert len(warning) == 1
        assert warning[0].message.args[0] == 'Testing of util.module.stack_angles has been ' \
                                             'limited, please use carefully.'

        data = self.pipeline.get_data('stack2')
        assert np.allclose(data[0, 50, 50],
                           0.09798413502193704,
                           rtol=limit,
                           atol=0.)
        assert np.allclose(np.mean(data),
                           0.00010035876175210947,
                           rtol=limit,
                           atol=0.)
        assert data.shape == (22, 100, 100)

        data = self.pipeline.get_data('header_stack2/INDEX')
        assert np.allclose(data, np.arange(22), rtol=limit, atol=0.)
        assert data.shape == (22, )

        data = self.pipeline.get_data('header_stack2/PARANG')
        assert data.shape == (22, )

        self.pipeline.set_attribute('images',
                                    'PARANG',
                                    np.arange(1., 41., 1.),
                                    static=False)
Esempio n. 5
0
    def test_stack_max_rotation(self) -> None:

        angles = np.arange(10.)
        angles[1:6] = 3.
        angles[9] = 50.

        self.pipeline.set_attribute('images', 'PARANG', angles, static=False)

        module = StackAndSubsetModule(name_in='stack2',
                                      image_in_tag='images',
                                      image_out_tag='stack2',
                                      random=None,
                                      stacking=2,
                                      combine='median',
                                      max_rotation=1.)

        self.pipeline.add_module(module)

        with pytest.warns(UserWarning) as warning:
            self.pipeline.run_module('stack2')

        assert len(warning) == 1

        assert warning[0].message.args[0] == 'Testing of util.module.stack_angles has been ' \
                                             'limited, please use carefully.'

        data = self.pipeline.get_data('stack2')
        assert np.mean(data) == pytest.approx(0.08580759396987508,
                                              rel=self.limit,
                                              abs=0.)
        assert data.shape == (7, 11, 11)

        data = self.pipeline.get_data('header_stack2/INDEX')
        assert data == pytest.approx(np.arange(7), rel=self.limit, abs=0.)
        assert data.shape == (7, )

        data = self.pipeline.get_data('header_stack2/PARANG')
        assert data.shape == (7, )

        self.pipeline.set_attribute('images',
                                    'PARANG',
                                    np.arange(10.),
                                    static=False)
Esempio n. 6
0
    def test_stack_and_subset(self) -> None:

        self.pipeline.set_attribute('images',
                                    'PARANG',
                                    np.arange(1., 41., 1.),
                                    static=False)

        module = StackAndSubsetModule(name_in='stack1',
                                      image_in_tag='images',
                                      image_out_tag='stack1',
                                      random=10,
                                      stacking=2,
                                      combine='mean',
                                      max_rotation=None)

        self.pipeline.add_module(module)
        self.pipeline.run_module('stack1')

        data = self.pipeline.get_data('stack1')
        assert np.allclose(data[0, 50, 50],
                           0.09816320034649725,
                           rtol=limit,
                           atol=0.)
        assert np.allclose(np.mean(data),
                           9.983545774937238e-05,
                           rtol=limit,
                           atol=0.)
        assert data.shape == (10, 100, 100)

        data = self.pipeline.get_data('header_stack1/INDEX')
        assert np.allclose(data, np.arange(10), rtol=limit, atol=0.)
        assert data.shape == (10, )

        data = self.pipeline.get_data('header_stack1/PARANG')
        parang = [1.5, 15.5, 19.5, 23.5, 25.5, 29.5, 31.5, 35.5, 37.5, 39.5]
        assert np.allclose(data, parang, rtol=limit, atol=0.)
        assert data.shape == (10, )