Source code for low_comm_tools.ms_fixes.fix_scanid

from __future__ import annotations

import argparse
from pathlib import Path

import numpy as np
from casacore.tables import table

from low_comm_tools import ms_utils
from low_comm_tools.log_config import logger


[docs] def fix_scan_numbers(ms_path: Path) -> Path: logger.info(f"Fixing scan numbers in {ms_path}") current_scan_numbers = ms_utils.get_scan_numbers_from_ms(ms_path) logger.info(f"There are {len(current_scan_numbers)} scan numbers") with table(ms_path.as_posix(), ack=False, readonly=False) as tab: for new_scan_number, subtab in enumerate(tab.iter("SCAN_NUMBER")): scan_col = subtab.getcol("SCAN_NUMBER") new_scan_col = new_scan_number * np.ones_like(scan_col) subtab.putcol("SCAN_NUMBER", value=new_scan_col) logger.info(f"Updated SCAN_NUMBER column in {ms_path}") return ms_path
[docs] def get_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser( description="Fix SCAN_NUMBER column in MS", formatter_class=argparse.ArgumentDefaultsHelpFormatter, ) parser.add_argument("ms_path", help="Path to target MeasurementSet", type=Path) return parser
[docs] def main() -> None: parser = get_parser() args = parser.parse_args() _ = fix_scan_numbers( ms_path=args.ms_path, )
if __name__ == "__main__": main()