From 4907f8cf46dbdd43524f988759a5ee9b43739023 Mon Sep 17 00:00:00 2001 From: David McKenna <mckenna@astron.nl> Date: Thu, 6 Feb 2025 16:38:33 +0100 Subject: [PATCH] MISC: Scrap work for A&O plenary --- scraps/scrap_vis.py | 60 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/scraps/scrap_vis.py b/scraps/scrap_vis.py index 22d66f4..c9fca56 100644 --- a/scraps/scrap_vis.py +++ b/scraps/scrap_vis.py @@ -130,7 +130,7 @@ def plot_antenna(antenna_idx, input_hdf5_files, outdir: str = "./", fade=0.8, de solt = sol if i == count: - src = SkyCoord.from_name(sol.attrs["observation_source"]) + src = SkyCoord.from_name(sol.attrs["observation_source"].split(',')[0]) obstime = Time(sol.attrs["observation_date"]) alt = src.transform_to(AltAz(obstime=obstime, location=el)).alt.deg alts.append(alt) @@ -179,7 +179,7 @@ def plot_antenna(antenna_idx, input_hdf5_files, outdir: str = "./", fade=0.8, de if i != 0: solt.close() - src = SkyCoord.from_name(sol.attrs["observation_source"]) + src = SkyCoord.from_name(sol.attrs["observation_source"].split(',')[0]) obstime = Time(sol.attrs["observation_date"]) alt = src.transform_to(AltAz(obstime=obstime, location=el)).alt.deg fig.suptitle( @@ -198,7 +198,19 @@ def plot_antenna(antenna_idx, input_hdf5_files, outdir: str = "./", fade=0.8, de res.append((phases, offsets)) return res, alts -def plot_single_int_antenna(antenna_idx, input_hdf5_file, outdir: str = "./", freq = None, pols = None): + +def build_jones_arr(dataset): + output = np.zeros((512, 2,2), dtype = np.complex128) + output[:, 0, 0] = dataset["x"] + output[:, 1, 1] = dataset["y"] + output[:, 0, 1] = dataset["xy"] + output[:, 1, 0] = dataset["yx"] + + return output + +def plot_single_int_antenna(antenna_idx, input_hdf5_file, outdir: str = "./", freq = None, pols = None, reference_antenna: None | int = None): + if not os.path.exists(outdir): + os.mkdir(outdir) plot_dims = int(np.sqrt(len(antenna_idx))) print(plot_dims) @@ -241,14 +253,36 @@ def plot_single_int_antenna(antenna_idx, input_hdf5_file, outdir: str = "./", fr obstime = Time(sol.attrs["observation_date"]) alt = src.transform_to(AltAz(obstime=obstime, location=el)).alt.deg + if reference_antenna is not None: + ref_ant_component = np.zeros((512, 2, 2), dtype = np.complex128) + ref_ant_component[:, ...] = np.exp(-1.0j * np.angle(np.linalg.det(build_jones_arr(solt["antennas"][f"{prefix}{reference_antenna:02d}"]))))[:, np.newaxis, np.newaxis] + # ref_data = build_jones_arr(solt["antennas"][f"{prefix}{reference_antenna:02d}"]) + # ref_data[ref_data[:, 0, 0] == 0.0, 0, 0] = 1.0 + # ref_data[ref_data[:, 1, 1] == 0.0, 1, 1] = 1.0 + # ref_ant_component = np.exp(-1.0j * np.angle(ref_data)) + for x in range(plot_dims): for y in range(plot_dims): antenna = antenna_idx[x * plot_dims + y] data = solt["antennas"][f"{prefix}{antenna:02d}"] + + if reference_antenna is not None: + expanded_data = build_jones_arr(data) + for i in range(512): + expanded_data[i] = expanded_data[i] @ ref_ant_component[i] + data = { + 'x': expanded_data[:, 0, 0], + 'y': expanded_data[:, 1, 1], + 'xy': expanded_data[:, 0, 1], + 'yx': expanded_data[:, 1, 1], + } + axs[x, y].set_title(f"Antenna {antenna}") for pol in pols or ["x", "y"]: datum = np.angle(np.array(data[f"{pol}"])) + # datum = np.angle(np.conj(np.array(data[f"{pol}"]))) + axs[x, y].plot( freq, datum, @@ -317,7 +351,7 @@ if __name__ == "__main__": # '/Users/mckenna/l2_data/CS001/2024-12-06T16:27:59.604236/LBA/tmp/gains_nomask/CalTable-CS001-LBA_50MHz_2024-12-06T16:28:01_Merged Sky Model_NONE.h5', # outdir='cs1_noblmask', freq=np.arange(512) * 100 / 512) -# plot_single_int_antenna([0, 4, 6, 12, 29, 45, 52, 64, 78], + # plot_single_int_antenna([0, 4, 6, 12, 29, 45, 52, 64, 78], # '/Users/mckenna/l2_data/CS001/2024-12-06T16:27:59.604236/LBA/tmp/gains/CalTable-CS001-LBA_50MHz_2024-12-06T16:29:41_Merged Sky Model_NONE.h5', # outdir="./32_3x3/", freq=np.arange(512) * 100 / 512) # for file in os.listdir("/Users/mckenna/l2_data/LBA_2024-12-06_60hr_run_gains_6step/"): @@ -331,12 +365,24 @@ if __name__ == "__main__": # os.path.join("/Users/mckenna/l2_data/LBA_2024-12-06_60hr_run_gains_6step", file), # outdir="./ani_lba_cross/", freq=np.arange(512) * 100 / 512, pols = ['xy', 'yx']) -# lba_dir = "./folder_save_solutions_lba" + basepath = "/Users/mckenna/cal_pres/sb30_480_src_fix/gains/" + for file in os.listdir(basepath): + if not os.path.isfile(os.path.join(basepath, file)) or not file.endswith("5"): + continue + + plot_single_int_antenna([0, 4, 6, 12, 29, 45, 52, 64, 78], + os.path.join(basepath, file), + outdir=os.path.join(basepath, "./ani_lba_ref/"), freq=np.arange(512) * 100 / 512, reference_antenna = 45) + plot_single_int_antenna([0, 4, 6, 12, 29, 45, 52, 64, 78], + os.path.join(basepath, file), + outdir=os.path.join(basepath, "./ani_lba_cross_ref/"), freq=np.arange(512) * 100 / 512, pols = ['xy', 'yx'], reference_antenna = 45) + + # lba_dir = os.path.join(basepath, "folder_save_solutions") # lba_cal_ref_files = [os.path.join(lba_dir, file) for file in os.listdir(lba_dir) if "SolTable" in file and "old" not in file] # lba_cal_ref_files.sort() # # visualise_baseline_flagging("CS001LBA", 10.0) - # # plot_antenna([0, 47, 3, 83], lba_cal_ref_files) - # # plot_antenna([0, 5, 6, 42, 60, 80, 46, 47, 94], lba_cal_ref_files, lba_dir, fade = 0.5) + # plot_antenna([0, 47, 3, 83], lba_cal_ref_files) + # plot_antenna([0, 5, 6, 42, 60, 80, 46, 47, 94], lba_cal_ref_files, lba_dir, fade = 0.5) # # hba_dir = "./folder_save_solutions" # hba_cal_ref_files = [os.path.join(hba_dir, file) for file in os.listdir(hba_dir) if -- GitLab