Esempio n. 1
0
    def setup_class(self) -> None:

        self.test_dir = os.path.dirname(__file__) + '/'

        create_star_data(path=self.test_dir + 'prep')
        create_config(self.test_dir + 'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 2
0
    def setup_class(self):

        self.test_dir = os.path.dirname(__file__) + "/"

        create_star_data(path=self.test_dir + "fits")
        create_config(self.test_dir + "PynPoint_config.ini")

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 3
0
    def setup_class(self):

        self.test_dir = os.path.dirname(__file__) + '/'

        create_random(self.test_dir, ndit=1)
        create_config(self.test_dir+'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 4
0
    def setup_class(self):

        self.test_dir = os.path.dirname(__file__) + "/"

        create_star_data(path=self.test_dir + "images", ndit=10, nframes=11)
        create_config(self.test_dir + "PynPoint_config.ini")

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 5
0
    def test_run_module(self) -> None:
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        read = FitsReadingModule(name_in='read', image_tag='im_arr')
        assert pipeline.add_module(read) is None
        assert pipeline.run_module('read') is None

        os.remove(self.test_dir + 'PynPoint_database.hdf5')
Esempio n. 6
0
    def test_run_module(self):
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        read = FitsReadingModule(name_in="read", image_tag="im_arr")
        assert pipeline.add_module(read) is None
        assert pipeline.run_module("read") is None

        os.remove(self.test_dir + "PynPoint_database.hdf5")
Esempio n. 7
0
    def setup_class(self) -> None:

        self.test_dir = os.path.dirname(__file__) + '/'

        create_star_data(path=self.test_dir + 'images', ndit=10, nframes=11)
        create_config(self.test_dir + 'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 8
0
    def test_delete_not_found(self):
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        with pytest.warns(UserWarning) as warning:
            pipeline.delete_data('images')

        assert len(warning) == 2
        assert warning[0].message.args[0] == 'Dataset \'images\' not found in the database.'
        assert warning[1].message.args[0] == 'Attributes of \'images\' not found in the database.'
Esempio n. 9
0
    def setup_class(self) -> None:

        self.limit = 1e-5
        self.test_dir = os.path.dirname(__file__) + '/'

        create_ifs_data(self.test_dir+'science')
        create_config(self.test_dir+'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 10
0
class TestFilter:
    def setup_class(self) -> None:

        self.test_dir = os.path.dirname(__file__) + '/'

        create_star_data(self.test_dir + 'data')
        create_config(self.test_dir + 'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

    def teardown_class(self) -> None:

        remove_test_data(self.test_dir, folders=['data'])

    def test_read_data(self) -> None:

        module = FitsReadingModule(name_in='read',
                                   image_tag='data',
                                   input_dir=self.test_dir + 'data',
                                   overwrite=True,
                                   check=True)

        self.pipeline.add_module(module)

        self.pipeline.run_module('read')

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

    def test_gaussian_filter(self) -> None:

        module = GaussianFilterModule(name_in='filter',
                                      image_in_tag='data',
                                      image_out_tag='filtered',
                                      fwhm=0.1)

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

        data = self.pipeline.get_data('filtered')
        assert np.allclose(data[0, 50, 50],
                           0.0388143943049942,
                           rtol=limit,
                           atol=0.)
        assert np.allclose(np.mean(data),
                           0.00010029494781738068,
                           rtol=limit,
                           atol=0.)
        assert data.shape == (40, 100, 100)
Esempio n. 11
0
    def setup_class(self) -> None:

        self.limit = 1e-10
        self.test_dir = os.path.dirname(__file__) + '/'

        create_star_data(self.test_dir + 'images')
        create_config(self.test_dir + 'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 12
0
    def test_add_wrong_module(self):
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        with pytest.raises(AssertionError) as error:
            pipeline.add_module(None)

        assert str(error.value) == 'The added module is not a valid Pypeline module.'

        os.remove(self.test_dir+'PynPoint_database.hdf5')
Esempio n. 13
0
    def test_add_wrong_module(self) -> None:
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        with pytest.raises(TypeError) as error:
            pipeline.add_module(None)

        assert str(error.value) == 'type of argument "module" must be ' \
                                   'pynpoint.core.processing.PypelineModule; got NoneType instead'

        os.remove(self.test_dir + 'PynPoint_database.hdf5')
Esempio n. 14
0
    def test_run_module_non_existing(self):
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

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

        assert len(warning) == 1
        assert warning[0].message.args[0] == 'Module \'test\' not found.'

        os.remove(self.test_dir + 'PynPoint_database.hdf5')
Esempio n. 15
0
    def setup_class(self):

        self.test_dir = os.path.dirname(__file__) + '/'

        create_fake(path=self.test_dir + 'dither',
                    ndit=[20, 20, 20, 20],
                    nframes=[20, 20, 20, 20],
                    exp_no=[1, 2, 3, 4],
                    npix=(100, 100),
                    fwhm=3.,
                    x0=[25, 75, 75, 25],
                    y0=[75, 75, 25, 25],
                    angles=[[0., 25.], [25., 50.], [50., 75.], [75., 100.]],
                    sep=None,
                    contrast=None)

        create_fake(path=self.test_dir + 'star',
                    ndit=[10, 10, 10, 10],
                    nframes=[10, 10, 10, 10],
                    exp_no=[1, 3, 5, 7],
                    npix=(100, 100),
                    fwhm=3.,
                    x0=[50, 50, 50, 50],
                    y0=[50, 50, 50, 50],
                    angles=[[0., 25.], [25., 50.], [50., 75.], [75., 100.]],
                    sep=None,
                    contrast=None)

        create_fake(path=self.test_dir + 'sky',
                    ndit=[5, 5, 5, 5],
                    nframes=[5, 5, 5, 5],
                    exp_no=[2, 4, 6, 8],
                    npix=(100, 100),
                    fwhm=None,
                    x0=[50, 50, 50, 50],
                    y0=[50, 50, 50, 50],
                    angles=[[0., 25.], [25., 50.], [50., 75.], [75., 100.]],
                    sep=None,
                    contrast=None)

        create_fake(path=self.test_dir + 'line',
                    ndit=[4, 4, 4, 4],
                    nframes=[4, 4, 4, 4],
                    exp_no=[1, 3, 5, 7],
                    npix=(20, 20),
                    fwhm=3.,
                    x0=[10, 10, 10, 10],
                    y0=[10, 10, 10, 10],
                    angles=[[0., 25.], [25., 50.], [50., 75.], [75., 100.]],
                    sep=None,
                    contrast=None)

        create_config(self.test_dir + 'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 16
0
    def test_list_attributes(self) -> None:

        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        attr_dict = pipeline.list_attributes('images')

        assert len(attr_dict) == 11
        assert attr_dict['INSTRUMENT'] == 'IMAGER'
        assert attr_dict['PIXSCALE'] == 0.027
        assert attr_dict['NFRAMES'] == [5]
        assert attr_dict['PARANG_START'] == [10.]
Esempio n. 17
0
    def setup_class(self) -> None:

        self.limit = 1e-10
        self.test_dir = os.path.dirname(__file__) + '/'

        create_fake_data(self.test_dir + 'adi')
        create_star_data(self.test_dir + 'psf', npix=21, pos_star=10.)
        create_star_data(self.test_dir + 'ref', npix=21, pos_star=10.)
        create_config(self.test_dir + 'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 18
0
    def setup_class(self):

        self.test_dir = os.path.dirname(__file__) + '/'

        create_random(self.test_dir, ndit=10, parang=None)
        create_config(self.test_dir+'PynPoint_config.ini')

        np.savetxt(self.test_dir+'parang.dat', np.arange(1., 11., 1.))
        np.savetxt(self.test_dir+'new.dat', np.arange(10., 21., 1.))
        np.savetxt(self.test_dir+'attribute.dat', np.arange(1, 11, 1), fmt='%i')

        data2d = np.random.normal(loc=0, scale=2e-4, size=(10, 10))
        np.savetxt(self.test_dir+'data_2d.dat', data2d)

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 19
0
class TestFilter:
    def setup_class(self) -> None:

        self.limit = 1e-10
        self.test_dir = os.path.dirname(__file__) + '/'

        create_star_data(self.test_dir + 'data')
        create_config(self.test_dir + 'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

    def teardown_class(self) -> None:

        remove_test_data(self.test_dir, folders=['data'])

    def test_read_data(self) -> None:

        module = FitsReadingModule(name_in='read',
                                   image_tag='data',
                                   input_dir=self.test_dir + 'data',
                                   overwrite=True,
                                   check=True)

        self.pipeline.add_module(module)

        self.pipeline.run_module('read')

        data = self.pipeline.get_data('data')
        assert np.sum(data) == pytest.approx(105.54278879805277,
                                             rel=self.limit,
                                             abs=0.)
        assert data.shape == (10, 11, 11)

    def test_gaussian_filter(self) -> None:

        module = GaussianFilterModule(name_in='filter',
                                      image_in_tag='data',
                                      image_out_tag='filtered',
                                      fwhm=0.1)

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

        data = self.pipeline.get_data('filtered')
        assert np.sum(data) == pytest.approx(105.54278879805275,
                                             rel=self.limit,
                                             abs=0.)
        assert data.shape == (10, 11, 11)
Esempio n. 20
0
    def test_create_pipeline_existing_database(self):
        np.random.seed(1)
        images = np.random.normal(loc=0, scale=2e-4, size=(10, 100, 100))

        with h5py.File(self.test_dir+'PynPoint_database.hdf5', 'w') as hdf_file:
            dset = hdf_file.create_dataset('images', data=images)
            dset.attrs['PIXSCALE'] = 0.01

        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
        data = pipeline.get_data('images')

        assert np.allclose(data[0, 0, 0], 0.00032486907273264834, rtol=limit, atol=0.)
        assert np.allclose(np.mean(data), 1.0506056979365338e-06, rtol=limit, atol=0.)
        assert pipeline.get_attribute('images', 'PIXSCALE') == 0.01

        os.remove(self.test_dir+'PynPoint_database.hdf5')
Esempio n. 21
0
    def setup_class(self):

        self.test_dir = os.path.dirname(__file__) + '/'

        create_star_data(path=self.test_dir+'images',
                         npix_x=20,
                         npix_y=20,
                         x0=[10, 10, 10, 10],
                         y0=[10, 10, 10, 10],
                         parang_start=[0., 25., 50., 75.],
                         parang_end=[25., 50., 75., 100.],
                         exp_no=[1, 2, 3, 4])

        create_config(self.test_dir+'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 22
0
    def test_get_config_attribute(self) -> None:
        create_config(self.test_dir + 'PynPoint_config.ini')
        Pypeline(self.test_dir, self.test_dir, self.test_dir)

        storage = DataStorage(self.test_dir + 'PynPoint_database.hdf5')
        port = ConfigPort('config', None)

        with pytest.warns(UserWarning) as warning:
            attribute = port.get_attribute('CPU')

        assert len(warning) == 1
        assert warning[0].message.args[0] == 'ConfigPort can not load data unless a database is ' \
                                             'connected.'

        assert attribute is None

        port = ConfigPort('config', storage)

        attribute = port.get_attribute('CPU')
        assert attribute == 1

        attribute = port.get_attribute('NFRAMES')
        assert attribute == 'NAXIS3'

        attribute = port.get_attribute('PIXSCALE')
        assert np.allclose(attribute, 0.027, rtol=limit, atol=0.)

        with pytest.warns(UserWarning) as warning:
            attribute = port.get_attribute('test')

        assert len(warning) == 1
        assert warning[0].message.args[
            0] == 'The attribute \'test\' was not found.'

        assert attribute is None
Esempio n. 23
0
    def test_get_config_attribute(self):
        create_config(self.test_dir + "PynPoint_config.ini")
        Pypeline(self.test_dir, self.test_dir, self.test_dir)

        storage = DataStorage(self.test_dir + "PynPoint_database.hdf5")
        port = ConfigPort("config", None)

        with pytest.warns(UserWarning) as warning:
            attribute = port.get_attribute("CPU")

        assert len(warning) == 1
        assert warning[0].message.args[0] == "ConfigPort can not load data unless a database is " \
                                             "connected."

        assert attribute is None

        port = ConfigPort("config", storage)

        attribute = port.get_attribute("CPU")
        assert attribute == 1

        attribute = port.get_attribute("NFRAMES")
        assert attribute == "NAXIS3"

        attribute = port.get_attribute("PIXSCALE")
        assert np.allclose(attribute, 0.027, rtol=limit, atol=0.)

        with pytest.warns(UserWarning) as warning:
            attribute = port.get_attribute("test")

        assert len(warning) == 1
        assert warning[0].message.args[
            0] == "No attribute found - requested: test."

        assert attribute is None
Esempio n. 24
0
    def setup_class(self):

        self.test_dir = os.path.dirname(__file__) + "/"

        create_star_data(path=self.test_dir+"dither",
                         npix_x=100,
                         npix_y=100,
                         x0=[25, 75, 75, 25],
                         y0=[75, 75, 25, 25],
                         parang_start=[0., 25., 50., 75.],
                         parang_end=[25., 50., 75., 100.],
                         exp_no=[1, 2, 3, 4])

        create_star_data(path=self.test_dir+"star_odd",
                         npix_x=101,
                         npix_y=101,
                         x0=[50],
                         y0=[50],
                         parang_start=[0.],
                         parang_end=[25.],
                         exp_no=[1],
                         noise=False)

        create_star_data(path=self.test_dir+"star_even",
                         npix_x=100,
                         npix_y=100,
                         x0=[49.5],
                         y0=[49.5],
                         parang_start=[0.],
                         parang_end=[25.],
                         exp_no=[1],
                         noise=False)

        create_waffle_data(path=self.test_dir+"waffle_odd",
                           npix=101,
                           x_waffle=[20., 20., 80., 80.],
                           y_waffle=[20., 80., 80., 20.])

        create_waffle_data(path=self.test_dir+"waffle_even",
                           npix=100,
                           x_waffle=[20., 20., 79., 79.],
                           y_waffle=[20., 79., 79., 20.])

        create_config(self.test_dir+"PynPoint_config.ini")

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 25
0
    def setup_class(self) -> None:

        self.test_dir = os.path.dirname(__file__) + '/'

        create_star_data(path=self.test_dir+'dither',
                         npix_x=100,
                         npix_y=100,
                         x0=[25, 75, 75, 25],
                         y0=[75, 75, 25, 25],
                         parang_start=[0., 25., 50., 75.],
                         parang_end=[25., 50., 75., 100.],
                         exp_no=[1, 2, 3, 4])

        create_star_data(path=self.test_dir+'star_odd',
                         npix_x=101,
                         npix_y=101,
                         x0=[50],
                         y0=[50],
                         parang_start=[0.],
                         parang_end=[25.],
                         exp_no=[1],
                         noise=False)

        create_star_data(path=self.test_dir+'star_even',
                         npix_x=100,
                         npix_y=100,
                         x0=[49.5],
                         y0=[49.5],
                         parang_start=[0.],
                         parang_end=[25.],
                         exp_no=[1],
                         noise=False)

        create_waffle_data(path=self.test_dir+'waffle_odd',
                           npix=101,
                           x_spot=[20., 20., 80., 80.],
                           y_spot=[20., 80., 80., 20.])

        create_waffle_data(path=self.test_dir+'waffle_even',
                           npix=100,
                           x_spot=[20., 20., 79., 79.],
                           y_spot=[20., 79., 79., 20.])

        create_config(self.test_dir+'PynPoint_config.ini')

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)
Esempio n. 26
0
    def test_create_pipeline_new_database(self):
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        pipeline.m_data_storage.open_connection()
        pipeline.m_data_storage.close_connection()

        del pipeline

        os.remove(self.test_dir + 'PynPoint_database.hdf5')
Esempio n. 27
0
    def test_create_pipeline_existing_database(self) -> None:

        np.random.seed(1)
        images = np.random.normal(loc=0, scale=2e-4, size=(5, 11, 11))

        with h5py.File(self.test_dir+'PynPoint_database.hdf5', 'w') as hdf_file:
            dset = hdf_file.create_dataset('images', data=images)
            dset.attrs['PIXSCALE'] = 0.01

        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        data = pipeline.get_data('images')
        assert np.mean(data) == pytest.approx(1.1824138000882435e-05, rel=self.limit, abs=0.)
        assert data.shape == (5, 11, 11)

        assert pipeline.get_attribute('images', 'PIXSCALE') == 0.01

        os.remove(self.test_dir+'PynPoint_database.hdf5')
Esempio n. 28
0
    def test_get_shape(self):
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        read = FitsReadingModule(name_in='read', image_tag='images')
        pipeline.add_module(read)
        pipeline.run_module('read')

        assert pipeline.get_shape('images') == (10, 100, 100)
Esempio n. 29
0
    def test_get_shape(self):
        pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)

        read = FitsReadingModule(name_in="read", image_tag="images")
        pipeline.add_module(read)
        pipeline.run_module("read")

        assert pipeline.get_shape("images") == (10, 100, 100)
Esempio n. 30
0
    def setup_class(self) -> None:

        self.limit = 1e-10
        self.test_dir = os.path.dirname(__file__) + '/'

        create_random(self.test_dir, nimages=10)
        create_config(self.test_dir + 'PynPoint_config.ini')

        np.savetxt(self.test_dir + 'parang.dat', np.arange(10., 20., 1.))
        np.savetxt(self.test_dir + 'new.dat', np.arange(20., 30., 1.))
        np.savetxt(self.test_dir + 'attribute.dat',
                   np.arange(0, 10, 1),
                   fmt='%i')
        np.savetxt(self.test_dir + 'wavelength.dat', np.arange(0., 10., 1.))

        data2d = np.random.normal(loc=0, scale=2e-4, size=(10, 10))
        np.savetxt(self.test_dir + 'data_2d.dat', data2d)

        self.pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir)