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)
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")
#!/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)
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)