def test_profile_spat(): """ Test that bspline_profile (1) is successful and (2) produces the same result for a set of data fit spatially. """ # Files created using `rmtdict` branch (30 Jan 2020) files = [data_path('gemini_gnirs_32_{0}_spat_fit.npz'.format(slit)) for slit in [0,1]] for f in files: d = np.load(f) spat_bspl = bspline.bspline(d['spat_coo_data'], nord=4, bkspace=np.fmax(1.0/d['median_slit_width']/10.0, 1.2*np.median(np.diff(d['spat_coo_data'])))) spat_bspl, spat_gpm_fit, spat_flat_fit, _, exit_status \ = fitting.bspline_profile(d['spat_coo_data'], d['spat_flat_data'], np.ones_like(d['spat_flat_data']), np.ones_like(d['spat_flat_data']), nord=4, upper=5.0, lower=5.0, fullbkpt=spat_bspl.breakpoints, quiet=True) assert np.allclose(d['spat_flat_fit'], spat_flat_fit), 'Bad spatial bspline result'
def test_profile_twod(): """ Test that bspline_profile (1) is successful and (2) produces the same result for a set of data fit two-dimensionally. """ # Files created using `rmtdict` branch (30 Jan 2020) files = [data_path('gemini_gnirs_32_{0}_twod_fit.npz'.format(slit)) for slit in [0,1]] spec_samp_coarse = 50.0 twod_sigrej = 4.0 for f in files: d = np.load(f) twod_bspl, twod_gpm_fit, twod_flat_fit, _ , exit_status \ = fitting.bspline_profile(d['twod_spec_coo_data'], d['twod_flat_data'], d['twod_ivar_data'], d['poly_basis'], ingpm=d['twod_gpm_data'], nord=4, upper=twod_sigrej, lower=twod_sigrej, kwargs_bspline={'bkspace': spec_samp_coarse}, kwargs_reject={'groupbadpix': True, 'maxrej': 10}, quiet=True) assert np.allclose(d['twod_flat_fit'], twod_flat_fit), 'Bad 2D bspline result'
def test_profile_spec(): """ Test that bspline_profile (1) is successful and (2) produces the same result for a set of data fit spectrally. """ # Files created using `rmtdict` branch (30 Jan 2020) files = [data_path('gemini_gnirs_32_{0}_spec_fit.npz'.format(slit)) for slit in [0,1]] logrej = 0.5 spec_samp_fine = 1.2 for f in files: d = np.load(f) spec_bspl, spec_gpm_fit, spec_flat_fit, _, exit_status \ = fitting.bspline_profile(d['spec_coo_data'], d['spec_flat_data'], d['spec_ivar_data'], np.ones_like(d['spec_coo_data']), ingpm=d['spec_gpm_data'], nord=4, upper=logrej, lower=logrej, kwargs_bspline={'bkspace': spec_samp_fine}, kwargs_reject={'groupbadpix': True, 'maxrej': 5}, quiet=True) assert np.allclose(d['spec_flat_fit'], spec_flat_fit), 'Bad spectral bspline result'
def test_io(): """ Test that bspline_profile (1) is successful and (2) produces the same result for a set of data fit spectrally. """ # Files created using `rmtdict` branch (30 Jan 2020) files = [ data_path('gemini_gnirs_32_{0}_spec_fit.npz'.format(slit)) for slit in [0, 1] ] logrej = 0.5 spec_samp_fine = 1.2 for f in files: d = np.load(f) spec_bspl, spec_gpm_fit, spec_flat_fit, _, exit_status \ = fitting.bspline_profile(d['spec_coo_data'], d['spec_flat_data'], d['spec_ivar_data'], np.ones_like(d['spec_coo_data']), ingpm=d['spec_gpm_data'], nord=4, upper=logrej, lower=logrej, kwargs_bspline={'bkspace': spec_samp_fine}, kwargs_reject={'groupbadpix': True, 'maxrej': 5}, quiet=True) # Write ofile = data_path('tst_bspline.fits') if os.path.isfile(ofile): os.remove(ofile) spec_bspl.to_file(ofile) # Read _spec_bspl = bspline.bspline.from_file(ofile) # Check that the data read in is the same assert np.array_equal(_spec_bspl.breakpoints, spec_bspl.breakpoints), 'Bad read' # Evaluate the bsplines and check that the written and read in data # provide the same result tmp = spec_bspl.value(np.linspace(0., 1., 100))[0] _tmp = _spec_bspl.value(np.linspace(0., 1., 100))[0] assert np.array_equal(tmp, _tmp), 'Bad bspline evaluate' # Test overwrite _spec_bspl.to_file(ofile, overwrite=True) # None bspl = bspline.bspline(None) bspl.to_file(ofile, overwrite=True) os.remove(ofile)