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")
def test_add_module(self): pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir) read = FitsReadingModule(name_in='read1', input_dir=None, image_tag='im_arr1') assert pipeline.add_module(read) is None read = FitsReadingModule(name_in='read2', input_dir=self.test_dir, image_tag='im_arr2') assert pipeline.add_module(read) is None with pytest.warns(UserWarning) as warning: pipeline.add_module(read) assert len(warning) == 1 assert warning[0].message.args[0] == 'Pipeline module names need to be unique. ' \ 'Overwriting module \'read2\'.' process = BadPixelSigmaFilterModule(name_in='badpixel', image_in_tag='im_arr1', image_out_tag='im_out') assert pipeline.add_module(process) is None write = FitsWritingModule(name_in='write1', file_name='result.fits', data_tag='im_arr1') assert pipeline.add_module(write) is None write = FitsWritingModule(name_in='write2', file_name='result.fits', data_tag='im_arr1', output_dir=self.test_dir) assert pipeline.add_module(write) is None assert pipeline.run() is None assert pipeline.get_module_names() == [ 'read1', 'read2', 'badpixel', 'write1', 'write2' ] os.remove(self.test_dir + 'result.fits') os.remove(self.test_dir + 'PynPoint_database.hdf5')
def test_read_data(self) -> None: module = FitsReadingModule(name_in='read1', image_tag='adi', input_dir=self.test_dir + 'adi') self.pipeline.add_module(module) self.pipeline.run_module('read1') data = self.pipeline.get_data('adi') assert np.sum(data) == pytest.approx(11.012854046962481, rel=self.limit, abs=0.) assert data.shape == (10, 21, 21) self.pipeline.set_attribute('adi', 'PARANG', np.linspace(0., 180., 10), static=False) module = FitsReadingModule(name_in='read2', image_tag='psf', input_dir=self.test_dir + 'psf') self.pipeline.add_module(module) self.pipeline.run_module('read2') data = self.pipeline.get_data('psf') assert np.sum(data) == pytest.approx(108.43655133957289, rel=self.limit, abs=0.) assert data.shape == (10, 21, 21) module = FitsReadingModule(name_in='read3', image_tag='ref', input_dir=self.test_dir + 'psf') self.pipeline.add_module(module) self.pipeline.run_module('read3') data = self.pipeline.get_data('ref') assert np.sum(data) == pytest.approx(108.43655133957289, rel=self.limit, abs=0.) assert data.shape == (10, 21, 21)
def test_read_data(self): module = FitsReadingModule(name_in='read1', image_tag='data1', input_dir=self.test_dir+'data1', overwrite=True, check=True) self.pipeline.add_module(module) module = FitsReadingModule(name_in='read2', image_tag='data2', input_dir=self.test_dir+'data2', overwrite=True, check=True) self.pipeline.add_module(module) module = FitsReadingModule(name_in='read3', image_tag='data3', input_dir=self.test_dir+'data3', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read1') self.pipeline.run_module('read2') self.pipeline.run_module('read3') data = self.pipeline.get_data('data1') 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) data = self.pipeline.get_data('data2') 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) data = self.pipeline.get_data('data3') 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_read_data(self): read = FitsReadingModule(name_in="read1", image_tag="data1", input_dir=self.test_dir+"data1", overwrite=True, check=True) self.pipeline.add_module(read) read = FitsReadingModule(name_in="read2", image_tag="data2", input_dir=self.test_dir+"data2", overwrite=True, check=True) self.pipeline.add_module(read) read = FitsReadingModule(name_in="read3", image_tag="data3", input_dir=self.test_dir+"data3", overwrite=True, check=True) self.pipeline.add_module(read) self.pipeline.run_module("read1") self.pipeline.run_module("read2") self.pipeline.run_module("read3") data = self.pipeline.get_data("data1") 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) data = self.pipeline.get_data("data2") 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) data = self.pipeline.get_data("data3") 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_read_data(self): read_science = FitsReadingModule(name_in="read_science", input_dir=self.test_dir + "adi", image_tag="im_arr") self.pipeline.add_module(read_science) read_dark = FitsReadingModule(name_in="read_dark", input_dir=self.test_dir + "dark", image_tag="dark_arr") self.pipeline.add_module(read_dark) read_flat = FitsReadingModule(name_in="read_flat", input_dir=self.test_dir + "flat", image_tag="flat_arr") self.pipeline.add_module(read_flat) self.pipeline.run_module("read_science") self.pipeline.run_module("read_dark") self.pipeline.run_module("read_flat") data = self.pipeline.get_data("im_arr") assert np.allclose(data[0, 61, 39], -0.00022889163546536875, rtol=limit, atol=0.) assert data.shape == (82, 102, 100) data = self.pipeline.get_data("dark_arr") assert np.allclose(data[0, 61, 39], 2.368170995592123e-05, rtol=limit, atol=0.) assert data.shape == (16, 100, 100) data = self.pipeline.get_data("flat_arr") assert np.allclose(data[0, 61, 39], 0.98703416941301647, rtol=limit, atol=0.) assert data.shape == (16, 100, 100)
def test_run_module(self) -> None: pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir) module = FitsReadingModule(name_in='read', image_tag='im_arr') assert pipeline.add_module(module) is None assert pipeline.run_module('read') is None os.remove(self.test_dir + 'PynPoint_database.hdf5')
def test_get_shape(self) -> None: pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir) module = FitsReadingModule(name_in='read', image_tag='images') pipeline.add_module(module) pipeline.run_module('read') assert pipeline.get_shape('images') == (5, 11, 11)
def test_add_module(self): pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir) read = FitsReadingModule(name_in="read1", input_dir=None, image_tag="im_arr1") assert pipeline.add_module(read) is None read = FitsReadingModule(name_in="read2", input_dir=self.test_dir, image_tag="im_arr2") assert pipeline.add_module(read) is None with pytest.warns(UserWarning) as warning: pipeline.add_module(read) assert len(warning) == 1 assert warning[0].message.args[0] == "Processing module names need to be unique. " \ "Overwriting module 'read2'." process = BadPixelSigmaFilterModule(name_in="badpixel", image_in_tag="im_arr1") assert pipeline.add_module(process) is None write = FitsWritingModule(name_in="write1", file_name="result.fits", data_tag="im_arr1") assert pipeline.add_module(write) is None write = FitsWritingModule(name_in="write2", file_name="result.fits", data_tag="im_arr1", output_dir=self.test_dir) assert pipeline.add_module(write) is None assert pipeline.run() is None assert pipeline.get_module_names() == [ 'read1', 'read2', 'badpixel', 'write1', 'write2' ] os.remove(self.test_dir + "result.fits") os.remove(self.test_dir + "PynPoint_database.hdf5")
def test_read_data(self) -> None: module = FitsReadingModule(name_in='read1', image_tag='images', input_dir=self.test_dir+'data', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read1') data = self.pipeline.get_data('images') assert np.mean(data) == pytest.approx(0.08722544528764692, rel=self.limit, abs=0.) assert data.shape == (10, 11, 11) module = FitsReadingModule(name_in='read2', image_tag='extra', input_dir=self.test_dir+'extra', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read2') extra = self.pipeline.get_data('extra') assert data == pytest.approx(extra, rel=self.limit, abs=0.) module = FitsReadingModule(name_in='read_ifs', image_tag='images_ifs', input_dir=self.test_dir+'data_ifs', overwrite=True, check=True, ifs_data=True) self.pipeline.add_module(module) self.pipeline.run_module('read_ifs') self.pipeline.set_attribute('images_ifs', 'PARANG', np.linspace(0., 180., 10), static=False) data = self.pipeline.get_data('images_ifs') assert np.sum(data) == pytest.approx(749.8396528807369, rel=self.limit, abs=0.) assert data.shape == (3, 10, 21, 21)
def test_read_data(self): module = FitsReadingModule(name_in='read1', image_tag='star', input_dir=self.test_dir + 'star', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read1') data = self.pipeline.get_data('star') assert np.allclose(data[0, 10, 10], 0.09834884212021108, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.00038538535294683216, rtol=limit, atol=0.) assert data.shape == (40, 51, 51) module = FitsReadingModule(name_in='read2', image_tag='binary', input_dir=self.test_dir + 'binary', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read2') data = self.pipeline.get_data('binary') assert np.allclose(data[0, 50, 50], 0.0986064357966972, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.00019636787665654158, rtol=limit, atol=0.) assert data.shape == (80, 101, 101)
def test_read_data(self) -> None: module = FitsReadingModule(name_in='read', image_tag='read', input_dir=self.test_dir+'self.limits') self.pipeline.add_module(module) self.pipeline.run_module('read') data = self.pipeline.get_data('read') assert np.sum(data) == pytest.approx(108.43655133957289, rel=self.limit, abs=0.) assert data.shape == (10, 21, 21)
def test_read_data(self) -> None: module = FitsReadingModule(name_in='read1', image_tag='dither', input_dir=self.test_dir + 'dither') self.pipeline.add_module(module) self.pipeline.run_module('read1') data = self.pipeline.get_data('dither') assert np.sum(data) == pytest.approx(211.20534661914408, rel=self.limit, abs=0.) assert data.shape == (20, 21, 21) module = FitsReadingModule(name_in='read2', image_tag='science', input_dir=self.test_dir + 'science') self.pipeline.add_module(module) self.pipeline.run_module('read2') data = self.pipeline.get_data('science') assert np.sum(data) == pytest.approx(105.54278879805277, rel=self.limit, abs=0.) assert data.shape == (10, 11, 11) module = FitsReadingModule(name_in='read3', image_tag='sky', input_dir=self.test_dir + 'sky') self.pipeline.add_module(module) self.pipeline.run_module('read3') data = self.pipeline.get_data('sky') assert np.sum(data) == pytest.approx(105.54278879805277, rel=self.limit, abs=0.) assert data.shape == (10, 11, 11)
def test_output_port_name(self): read = FitsReadingModule(name_in='read', input_dir=self.test_dir + 'images', image_tag='images') read.add_output_port('test') with pytest.warns(UserWarning) as warning: read.add_output_port('test') assert len(warning) == 1 assert warning[0].message.args[0] == 'Tag \'test\' of ReadingModule \'read\' is already ' \ 'used.' process = BadPixelSigmaFilterModule(name_in='badpixel', image_in_tag='images', image_out_tag='im_out') process.add_output_port('test') with pytest.warns(UserWarning) as warning: process.add_output_port('test') assert len(warning) == 1 assert warning[0].message.args[0] == 'Tag \'test\' of ProcessingModule \'badpixel\' is ' \ 'already used.' self.pipeline.m_data_storage.close_connection() process._m_data_base = self.test_dir + 'database.hdf5' process.add_output_port('new')
def test_output_port_name(self): read = FitsReadingModule(name_in="read", input_dir=self.test_dir + "images", image_tag="images") read.add_output_port("test") with pytest.warns(UserWarning) as warning: read.add_output_port("test") assert len(warning) == 1 assert warning[0].message.args[ 0] == "Tag 'test' of ReadingModule 'read' is already used." process = BadPixelSigmaFilterModule(name_in="badpixel", image_in_tag="images") process.add_output_port("test") with pytest.warns(UserWarning) as warning: process.add_output_port("test") assert len(warning) == 1 assert warning[0].message.args[0] == "Tag 'test' of ProcessingModule 'badpixel' is " \ "already used." self.pipeline.m_data_storage.close_connection() process._m_data_base = self.test_dir + "database.hdf5" process.add_output_port("new")
def test_read_data(self): module = FitsReadingModule(name_in='read', image_tag='read', input_dir=self.test_dir+'limits') self.pipeline.add_module(module) self.pipeline.run_module('read') data = self.pipeline.get_data('read') assert np.allclose(data[0, 10, 10], 0.00012958496246258364, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.00010029494781738066, rtol=limit, atol=0.) assert data.shape == (40, 100, 100)
def test_read_data(self): read = FitsReadingModule(name_in="read1", image_tag="science", input_dir=self.test_dir + "science") self.pipeline.add_module(read) self.pipeline.run_module("read1") data = self.pipeline.get_data("science") assert np.allclose(data[0, 50, 50], 0.09798413502193708, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.00010063896953157961, rtol=limit, atol=0.) assert data.shape == (80, 100, 100) read = FitsReadingModule(name_in="read2", image_tag="reference", input_dir=self.test_dir + "reference") self.pipeline.add_module(read) self.pipeline.run_module("read2") data = self.pipeline.get_data("reference") assert np.allclose(data[0, 50, 50], 0.09798413502193708, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.00010029494781738066, rtol=limit, atol=0.) assert data.shape == (40, 100, 100)
def test_read_data(self) -> None: module = FitsReadingModule(name_in='read1', image_tag='science', input_dir=self.test_dir + 'science') self.pipeline.add_module(module) self.pipeline.run_module('read1') data = self.pipeline.get_data('science') assert np.allclose(data[0, 50, 50], 0.09798413502193708, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.00010063896953157961, rtol=limit, atol=0.) assert data.shape == (80, 100, 100) module = FitsReadingModule(name_in='read2', image_tag='reference', input_dir=self.test_dir + 'reference') self.pipeline.add_module(module) self.pipeline.run_module('read2') data = self.pipeline.get_data('reference') assert np.allclose(data[0, 50, 50], 0.09798413502193708, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.00010029494781738066, rtol=limit, atol=0.) assert data.shape == (40, 100, 100)
def test_read_data(self): read = FitsReadingModule(name_in="read1", image_tag="read", input_dir=self.test_dir+"flux") self.pipeline.add_module(read) self.pipeline.run_module("read1") data = self.pipeline.get_data("read") assert np.allclose(data[0, 50, 50], 0.0986064357966972, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 9.827812356946396e-05, rtol=limit, atol=0.) assert data.shape == (40, 101, 101) read = FitsReadingModule(name_in="read2", image_tag="adi", input_dir=self.test_dir+"adi") self.pipeline.add_module(read) self.pipeline.run_module("read2") data = self.pipeline.get_data("adi") assert np.allclose(data[0, 7, 7], 0.09823888178122618, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.008761678820997612, rtol=limit, atol=0.) assert data.shape == (20, 15, 15) read = FitsReadingModule(name_in="read3", image_tag="psf", input_dir=self.test_dir+"psf") self.pipeline.add_module(read) self.pipeline.run_module("read3") data = self.pipeline.get_data("psf") assert np.allclose(data[0, 7, 7], 0.09806026673451182, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.004444444429123135, rtol=limit, atol=0.) assert data.shape == (4, 15, 15)
def test_read_data(self) -> None: module = FitsReadingModule(name_in='read1', image_tag='star', input_dir=self.test_dir + 'star', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read1') data = self.pipeline.get_data('star') assert np.sum(data) == pytest.approx(105.54278879805277, rel=self.limit, abs=0.) assert data.shape == (10, 11, 11) module = FitsReadingModule(name_in='read2', image_tag='binary', input_dir=self.test_dir + 'binary', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read2') data = self.pipeline.get_data('binary') assert np.sum(data) == pytest.approx(11.012854046962481, rel=self.limit, abs=0.) assert data.shape == (10, 21, 21) self.pipeline.set_attribute('binary', 'PARANG', -1. * np.linspace(0., 180., 10), static=False)
def test_fits_reading(self): read = FitsReadingModule(name_in='read', input_dir=self.test_dir+'fits', image_tag='images', overwrite=True, check=True) self.pipeline.add_module(read) self.pipeline.run_module('read') data = self.pipeline.get_data('images') 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_read_data(self) -> None: module = FitsReadingModule(name_in='read', image_tag='read', input_dir=self.test_dir+'prep') self.pipeline.add_module(module) self.pipeline.run_module('read') data = self.pipeline.get_data('read') assert np.sum(data) == pytest.approx(105.54278879805277, rel=self.limit, abs=0.) assert data.shape == (10, 11, 11) module = FitsReadingModule(name_in='read_ifs', image_tag='read_ifs', input_dir=self.test_dir+'prep_ifs', ifs_data=True) self.pipeline.add_module(module) self.pipeline.run_module('read_ifs') data = self.pipeline.get_data('read_ifs') assert np.sum(data) == pytest.approx(749.8396528807369, rel=self.limit, abs=0.) assert data.shape == (3, 10, 21, 21)
def test_read_data(self): module = FitsReadingModule(name_in='read', image_tag='images', input_dir=self.test_dir+'images', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read') data = self.pipeline.get_data('images') assert np.allclose(data[0, 10, 10], 0.09799496683489618, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.0025020285041348557, rtol=limit, atol=0.) assert data.shape == (40, 20, 20)
def test_read_data(self): read = FitsReadingModule(name_in="read", image_tag="read", input_dir=self.test_dir+"images", overwrite=True, check=True) self.pipeline.add_module(read) self.pipeline.run_module("read") data = self.pipeline.get_data("read") assert np.allclose(data[0, 50, 50], 0.09798413502193704, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.0001002167910262529, rtol=limit, atol=0.) assert data.shape == (44, 100, 100)
def test_run_module_wrong_tag(self) -> None: pipeline = Pypeline(self.test_dir, self.test_dir, self.test_dir) module = FitsReadingModule(name_in='read') pipeline.add_module(module) module = FitsWritingModule(name_in='write', file_name='result.fits', data_tag='im_list') pipeline.add_module(module) module = BadPixelSigmaFilterModule(name_in='badpixel', image_in_tag='im_list', image_out_tag='im_out') pipeline.add_module(module) with pytest.raises(AttributeError) as error: pipeline.run_module('badpixel') assert str(error.value) == 'Pipeline module \'badpixel\' is looking for data under a ' \ 'tag which does not exist in the database.' with pytest.raises(AttributeError) as error: pipeline.run_module('write') assert str(error.value) == 'Pipeline module \'write\' is looking for data under a tag ' \ 'which does not exist in the database.' with pytest.raises(AttributeError) as error: pipeline.run() assert str(error.value) == 'Pipeline module \'write\' is looking for data under a tag ' \ 'which is not created by a previous module or the data does ' \ 'not exist in the database.' assert pipeline.validate_pipeline_module('test') == (False, 'test') with pytest.raises(TypeError) as error: pipeline._validate('module', 'tag') assert str(error.value) == 'type of argument "module" must be one of (ReadingModule, ' \ 'WritingModule, ProcessingModule); got str instead' os.remove(self.test_dir + 'PynPoint_database.hdf5')
def test_read_data(self) -> None: module = FitsReadingModule(name_in='read', image_tag='science', input_dir=self.test_dir+'science', ifs_data=True) self.pipeline.add_module(module) self.pipeline.run_module('read') data = self.pipeline.get_data('science') assert np.sum(data) == pytest.approx(749.8396528807368, rel=self.limit, abs=0.) assert data.shape == (3, 10, 21, 21) self.pipeline.set_attribute('science', 'WAVELENGTH', [1., 1.1, 1.2], static=False) self.pipeline.set_attribute('science', 'PARANG', np.linspace(0., 180., 10), static=False)
def test_read_data(self) -> None: module = FitsReadingModule(name_in='read', image_tag='images', input_dir=self.test_dir + 'images', overwrite=True, check=True) self.pipeline.add_module(module) self.pipeline.run_module('read') data = self.pipeline.get_data('images') assert np.sum(data) == pytest.approx(105.54278879805277, rel=self.limit, abs=0.) assert data.shape == (10, 11, 11)
def test_fits_read_files_exists(self): module = FitsReadingModule(name_in='read9', input_dir=None, image_tag='files', overwrite=True, check=True, filenames=['fits/image00.fits', 'fits/image03.fits']) self.pipeline.add_module(module) with pytest.raises(ValueError) as error: self.pipeline.run_module('read9') assert str(error.value) == 'The file fits/image00.fits does not exist. ' \ 'Please check that the path is correct.'
def test_static_not_found(self): self.pipeline.set_attribute("config", "DIT", "ESO DET DIT", static=True) read = FitsReadingModule(name_in="read3", input_dir=self.test_dir+"fits", image_tag="input", overwrite=True, check=True) self.pipeline.add_module(read) with pytest.warns(UserWarning) as warning: self.pipeline.run_module("read3") assert len(warning) == 4 for item in warning: assert item.message.args[0] == "Static attribute DIT (=ESO DET DIT) not found in " \ "the FITS header."
def test_read_data(self): read = FitsReadingModule(name_in="read", image_tag="read", input_dir=self.test_dir + "limits") self.pipeline.add_module(read) self.pipeline.run_module("read") data = self.pipeline.get_data("read") assert np.allclose(data[0, 10, 10], 0.00012958496246258364, rtol=limit, atol=0.) assert np.allclose(np.mean(data), 0.00010029494781738066, rtol=limit, atol=0.) assert data.shape == (40, 100, 100)