Ejemplo n.º 1
0
def test_slit_illum_correct_different_roi(change_working_dir, input_data,
                                          request):

    ad, slit_illum_ad = input_data

    assert ad.detector_roi_setting() != slit_illum_ad.detector_roi_setting()

    p = GMOSLongslit([ad])
    ad_out = p.slitIllumCorrect(slit_illum=slit_illum_ad)[0]

    for ext_out in ad_out:

        # Create output data
        data_o = np.ma.masked_array(ext_out.data, mask=ext_out.mask)

        # Bin columns
        n_rows = data_o.shape[0]
        fitter = fitting.LevMarLSQFitter()
        model = models.Chebyshev1D(c0=0.5 * n_rows,
                                   degree=2,
                                   domain=(0, n_rows))
        model.c0.fixed = True
        nbins = 10
        rows = np.arange(n_rows)

        for i in range(nbins):

            col_start = i * data_o.shape[1] // nbins
            col_end = (i + 1) * data_o.shape[1] // nbins

            cols = np.ma.mean(data_o[:, col_start:col_end], axis=1)

            fitted_model = fitter(model, rows, cols)

            # Check column is linear
            np.testing.assert_allclose(fitted_model.c2.value, 0, atol=0.001)

            # Check if slope is (almost) horizontal (< 2.5 deg)
            slope_angle = np.rad2deg(
                np.arctan(fitted_model.c1.value / (rows.size // 2)))

            assert np.abs(slope_angle) <= 1.0

    if request.config.getoption("--do-plots"):
        plot_slit_illum_correct_results(ad,
                                        ad_out,
                                        fname="test_different_roi_")
Ejemplo n.º 2
0
def test_slit_illum_correct_without_slit_illumination(astrofaker):
    in_ad = astrofaker.create("GMOS-S", mode="SPECT")
    p = GMOSLongslit([in_ad])
    with pytest.raises(NotImplementedError):
        p.slitIllumCorrect()
Ejemplo n.º 3
0
def test_dont_do_slit_illum(astrofaker):
    in_ad = astrofaker.create("GMOS-S", mode="SPECT")
    p = GMOSLongslit([in_ad])
    out_ad = p.slitIllumCorrect(do_illum=False)[0]
    for in_ext, out_ext in zip(in_ad, out_ad):
        assert np.testing.assert_equal(in_ext.data, out_ext.data)