Source code for spinifex.cli

#!/usr/bin/env python
from __future__ import annotations

import argparse
from pathlib import Path

from spinifex.vis_tools.ms_tools import (
    cli_get_dtec_h5parm_from_ms,
    cli_get_rm_h5parm_from_ms,
)


[docs] def get_parser(): parser = argparse.ArgumentParser( description="This Spinifex command-line interface can make an H5Parm with ionospheric data (TEC or RM), using the metadata from a measurement set." ) subparsers = parser.add_subparsers(dest="command") # Subparser for get_rm_h5parm_from_ms parser_rm = subparsers.add_parser( "get_rm_h5parm_from_ms", description="Calculate RM values using spinifex, write to h5parm", ) parser_rm.add_argument( "ms", type=Path, help="Measurement set for which the RM values should be calculated.", ) parser_rm.add_argument( "--iono-model-name", type=str, default="ionex", help="iono mode name", choices=["ionex", "ionex_iri", "tomion"], ) parser_rm.add_argument( "--solset-name", type=str, help="Solset name. Default: create a new one based on first existing sol###", ) parser_rm.add_argument( "--soltab-name", type=str, help="Soltab name. Default: rotationmeasure" ) parser_rm.add_argument( "--timestep", type=int, help="Timestep in seconds for which independent model calculations are done. " "Default: use time resolution of the measurement set", ) parser_rm.add_argument( "-o", "--h5parm", default="rotationmeasure.h5", type=Path, help="h5parm to which the results of the RotationMeasure is added.", ) parser_rm.add_argument( "-a", "--add-to-existing-solset", action="store_true", help="Add to existing solset if it exists", ) parser_rm.set_defaults(func=cli_get_rm_h5parm_from_ms) # Subparser for get_tec_h5parm_from_ms parser_tec = subparsers.add_parser( "get_tec_h5parm_from_ms", description="Calculate tec values using spinifex, write to h5parm", ) parser_tec.add_argument( "ms", type=Path, help="Measurement set for which the tec values should be calculated.", ) parser_tec.add_argument( "--iono-model-name", type=str, default="ionex", help="iono mode name", choices=["ionex", "ionex_iri", "tomion"], ) parser_tec.add_argument( "--solset-name", type=str, help="Solset name. Default: create a new one based on first existing sol###", ) parser_tec.add_argument( "--soltab-name", type=str, help="Soltab name. Default: tec###" ) parser_tec.add_argument( "--timestep", type=int, help="Timestep in seconds for which independent model calculations are done. " "Default: use time resolution of the measurement set", ) parser_tec.add_argument( "-o", "--h5parm", default="tec.h5", type=Path, help="h5parm to which the results of the tec is added.", ) parser_tec.add_argument( "-a", "--add-to-existing-solset", action="store_true", help="Add to existing solset if it exists", ) parser_tec.set_defaults(func=cli_get_dtec_h5parm_from_ms) return parser
[docs] def main(): parser = get_parser() args = parser.parse_args() if args.command: args.func(args) else: parser.print_help()
if __name__ == "__main__": main()