Source code for low_comm_tools.delay_table_to_txt
from __future__ import annotations
from argparse import ArgumentParser
from pathlib import Path
import numpy as np
import pandas as pd
from casacore.tables import table
from low_comm_tools.constants import ELEMENT_POLS
from low_comm_tools.log_config import logger
from low_comm_tools.ms_utils import get_antenna_names_from_ms
[docs]
def convert_caltable(
cal_table: Path,
) -> Path:
logger.info(f"Converting {cal_table} to text format")
with table(cal_table.as_posix()) as tab:
cal_params = np.squeeze(tab.getcol("FPARAM"))
ant_1 = np.squeeze(tab.getcol("ANTENNA1"))
cal_flag = np.squeeze(tab.getcol("FLAG"))
delay_df = pd.DataFrame(
cal_params, columns=[f"delay_{ELEMENT_POLS[0]}", f"delay_{ELEMENT_POLS[1]}"]
)
delay_df["antenna_index"] = ant_1
ant_names = get_antenna_names_from_ms(cal_table)
ant_1_names = [ant_names[i] for i in ant_1]
delay_df["antenna_name"] = ant_1_names
delay_df[f"flag_{ELEMENT_POLS[0]}"] = cal_flag[:, 0]
delay_df[f"flag_{ELEMENT_POLS[1]}"] = cal_flag[:, 1]
out_path = cal_table.with_suffix(".csv")
delay_df.to_csv(out_path, index=False)
logger.info(f"Wrote {out_path}")
return out_path
[docs]
def get_parser() -> ArgumentParser:
parser = ArgumentParser(description="Convert a CASA caltable to a text file")
parser.add_argument("caltable", type=Path, help="Path to calibration table(s).")
return parser
[docs]
def main() -> None:
parser = get_parser()
args = parser.parse_args()
_ = convert_caltable(
cal_table=args.caltable,
)
if __name__ == "__main__":
main()