Пример #1
0
if args.vis_units is not None:
    kwargs['vis_units'] = args.vis_units

if args.nbl_per_load == "none":
    args.nbl_per_load = None
if args.nbl_per_load is not None:
    args.nbl_per_load = int(args.nbl_per_load)

ac.apply_cal(args.infilename,
             args.outfilename,
             args.new_cal,
             old_calibration=args.old_cal,
             flag_file=args.flag_file,
             flag_filetype=args.flag_filetype,
             flag_nchan_low=args.flag_nchan_low,
             flag_nchan_high=args.flag_nchan_high,
             spw_range=args.spw_range,
             filetype_in=args.filetype_in,
             filetype_out=args.filetype_out,
             nbl_per_load=args.nbl_per_load,
             redundant_groups=args.redundant_groups,
             gain_convention=args.gain_convention,
             redundant_solution=args.redundant_solution,
             redundant_average=args.redundant_average,
             add_to_history=' '.join(sys.argv),
             clobber=args.clobber,
             dont_red_average_flagged_data=args.dont_red_average_flagged_data,
             exclude_from_redundant_mode=args.exclude_from_redundant_mode,
             **kwargs)
Пример #2
0
if not os.path.exists(f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}"):
    os.mkdir(f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}")
flags = UVFlag(flag_file)
flags.select(frequencies = flags.freq_array[(flags.freq_array>=115*1e+6) & (flags.freq_array<175*1e+6)])
flags.select(times=flags.time_array[2600:2660])
hd_data = HERAData(data_file)
freqs = hd_data.freqs[(hd_data.freqs>=115*1e+6) & (hd_data.freqs<175*1e+6)]
data, flag, nsample = hd_data.read(polarizations=["ee"], frequencies=freqs)
for bl in data:
    if (bl[0] == bad_ant).any() or (bl[1] == bad_ant).any():
                flag[bl] = np.ones_like(flag[bl])
    flag[bl] = flags.flag_array.squeeze()
hd_data.update(flags=flag)
hd_data.write_uvh5(f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}.uvh5", clobber=True)
del data, flag, nsample, hd_data
redcal.redcal_run(input_data=f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}.uvh5", clobber=True, solar_horizon=90, verbose=True)
abscal.post_redcal_abscal_run(data_file=f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}.uvh5", redcal_file=f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}.omni.calfits", model_files=[data_file], clobber=True, data_solar_horizon=90, model_solar_horizon=90)

cs=smooth_cal.CalibrationSmoother(calfits_list=sorted(glob.glob(f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_*.abs.calfits")))
cs.time_freq_2D_filter(time_scale=21600)
cs.write_smoothed_cal(clobber=True, output_replace=(".abs.",".smooth_abs."))


apply_cal.apply_cal(data_infilename=f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}.uvh5", data_outfilename=f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}_smoothcal.uvh5", new_calibration=f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}.smooth_abs.calfits", clobber=True)

vc = vis_clean.VisClean(f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}_smoothcal.uvh5")
vc.read()
vc.vis_clean(standoff=100, min_dly=600, mode="dpss_leastsq", skip_if_flag_within_edge_distance=1, flag_model_rms_outliers=True, max_contiguous_edge_flags=1)
vc.write_filtered_data(filled_outfilename=f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}_filtered.uvh5", clobber=True)
os.remove(f"/users/kshahin/kshahin/HERA_Calibration/DayfxP_{day}/data_{day}_{chunk}.uvh5")
Пример #3
0
#!/usr/bin/env python2.7
"""Command-line drive script for hera_cal.apply_cal"""
import argparse
from hera_cal import apply_cal as ac
import sys

a = ac.apply_cal_argparser()
args = a.parse_args()

kwargs = {}
if args.vis_units is not None:
    kwargs['vis_units'] = args.vis_units

ac.apply_cal(args.infile,
             args.outfile,
             args.new_cal,
             old_calibration=args.old_cal,
             flags_npz=args.flags_npz,
             flag_nchan_low=args.flag_nchan_low,
             flag_nchan_high=args.flag_nchan_high,
             filetype=args.filetype,
             gain_convention=args.gain_convention,
             add_to_history=' '.join(sys.argv),
             clobber=args.clobber,
             **kwargs)
Пример #4
0
    def test_apply_cal(self):
        fname = os.path.join(DATA_PATH, "zen.2457698.40355.xx.HH.uvcA")
        outname = os.path.join(
            DATA_PATH, "test_output/zen.2457698.40355.xx.HH.applied.uvcA")
        old_cal = os.path.join(
            DATA_PATH, "test_input/zen.2457698.40355.HH.uvcA.omni.calfits")
        new_cal = os.path.join(
            DATA_PATH, "test_input/zen.2457698.40355.HH.uvcA.omni.calfits")
        flags_npz = os.path.join(
            DATA_PATH, "zen.2457698.40355.xx.HH.uvcA.fake_flags.npz")

        uvd = UVData()
        uvd.read_miriad(fname)
        uvd.flag_array = np.logical_or(uvd.flag_array,
                                       np.load(flags_npz)['flag_array'])
        data, data_flags = io.load_vis(uvd)
        new_gains, new_flags = io.load_cal(new_cal)
        uvc_old = UVCal()
        uvc_old.read_calfits(old_cal)
        uvc_old.gain_array *= (3.0 + 4.0j)

        ac.apply_cal(fname,
                     outname,
                     new_cal,
                     old_calibration=uvc_old,
                     gain_convention='divide',
                     flags_npz=flags_npz,
                     filetype='miriad',
                     clobber=True,
                     vis_units='Jy')
        u = UVData()
        u.read_miriad(outname)
        self.assertEqual(u.vis_units, 'Jy')
        new_data, new_flags = io.load_vis(outname)
        for k in new_data.keys():
            for i in range(new_data[k].shape[0]):
                for j in range(new_data[k].shape[1]):
                    if not new_flags[k][i, j]:
                        self.assertAlmostEqual(new_data[k][i, j] / 25.0,
                                               data[k][i, j], 4)
                    if j < 300 or j > 923:
                        self.assertTrue(new_flags[k][i, j])

        # test band edge flagging
        ac.apply_cal(fname,
                     outname,
                     new_cal,
                     old_calibration=uvc_old,
                     gain_convention='divide',
                     flag_nchan_low=450,
                     flag_nchan_high=400,
                     filetype='miriad',
                     clobber=True)
        new_data, new_flags = io.load_vis(outname)
        for k in new_data.keys():
            for i in range(new_data[k].shape[0]):
                for j in range(new_data[k].shape[1]):
                    if not new_flags[k][i, j]:
                        self.assertAlmostEqual(new_data[k][i, j] / 25.0,
                                               data[k][i, j], 4)
                    if j < 450 or j > 623:
                        self.assertTrue(new_flags[k][i, j])

        with self.assertRaises(ValueError):
            ac.apply_cal(fname, outname, None)
        shutil.rmtree(outname)