示例#1
0
    def process_vis(self, vis_range=(390, 720), min_scan=None,
                    max_scan=None, sigma=2.3, para_angle=45):
        data_file = self.file
        wls = self.vis_wls()
        t = data_file['t']
        d = -data_file['data_Stresing CCD'][min_scan:max_scan, ...]

        if 'rot' in data_file:
            rot = data_file['rot'][min_scan:max_scan]
            para_idx = (abs(np.round(rot) - para_angle) < 3)
        else:
            n_ir_cwl = data_file['wl_Remote IR 32x2'].shape[0]
            para_idx = np.repeat(np.array([False, True], dtype='bool'), n_ir_cwl)

        dpm = sigma_clip(d[para_idx, ...], axis=0, sigma=sigma, max_iter=10)
        dsm = sigma_clip(d[~para_idx, ...], axis=0, sigma=sigma, max_iter=10)
        dp = dpm.mean(0)
        dps = dpm.std(0)
        ds = dsm.mean(0)
        dss = dsm.std(0)

        para = TimeResSpec(wls, t, dp[0, :, 0, ...], freq_unit='nm',
                           disp_freq_unit='nm')
        perp = TimeResSpec(wls, t, ds[0, :, 0, ...], freq_unit='nm',
                           disp_freq_unit='nm')
        pol = PolTRSpec(para, perp)

        pol = pol.cut_freq(*vis_range, invert_sel=True)
        return pol.para, pol.perp, pol
示例#2
0
def test_pol_tr():
    ds = TimeResSpec(wl, t, data)
    ds2 = TimeResSpec(wl, t, data)
    ps = PolTRSpec(para=ds, perp=ds2)
    out = ps.bin_freqs(10)
    assert (out.para.wavenumbers.size == 10)
    assert (out.perp.wavenumbers.size == 10)
    assert_almost_equal(out.perp.data, out.para.data)
    ps.subtract_background()
    ps.mask_freqs([(400, 550)])

    assert (ps.para.data.mask[1, ps.para.wl_idx(520)])
    out = ps.cut_freq(400, 550)
    assert (np.all(out.para.wavelengths >= 550))
    assert (np.all(out.perp.wavelengths >= 550))
    ps.bin_times(6)
    ps.scale_and_shift(1, 0.5)
    ps.copy()