#!/usr/bin/env python3 # -*- mode: python -*- # # Copyright (c) 2017 Weitian LI # MIT license # """ Make SKA1-low telescope model for OSKAR[1] simulation usage. [1] OSKAR: https://github.com/OxfordSKA/OSKAR """ import os import sys import argparse import logging from pkg_resources import resource_exists, resource_filename from fg21sim.share import CONFIGS from fg21sim.utils import setup_logging from fg21sim.uvsim import telescope def main(): layoutfile = "ska1low.layout.txt" layoutfile_required = True if resource_exists(telescope.__package__, layoutfile): layoutfile = resource_filename(telescope.__package__, layoutfile) layoutfile_required = False else: layoutfile = None parser = argparse.ArgumentParser( description="Make SKA1-low telescope model for OSKAR") parser.add_argument("-d", "--debug", dest="debug", action="store_true", help="show verbose debug information") parser.add_argument("-C", "--clobber", dest="clobber", action="store_true", help="overwrite the existing output files") parser.add_argument("-p", "--plot", dest="plot", action="store_true", help="make plots for telescope and stations") parser.add_argument("-l", "--layout-file", dest="layoutfile", required=layoutfile_required, default=layoutfile, help="SKA1-low layout configuration " + "(default: %s)" % layoutfile) parser.add_argument("-o", "--outdir", dest="outdir", required=True, help="output telescope model directory") parser.add_argument("--position", help="telescope position on Earth; " + "longitude,latitude [deg]") args = parser.parse_args() loglevel = "DEBUG" if args.debug else "INFO" setup_logging(dict_config=CONFIGS.logging, level=loglevel) tool = os.path.basename(sys.argv[0]) logger = logging.getLogger(tool) logger.info("COMMAND: {0}".format(" ".join(sys.argv))) position = None if args.position: position = list(map(float, args.position.split(","))) logger.info("Telescope position: (%f, %f) [deg]" % tuple(position)) ska1low = telescope.SKA1Low(args.layoutfile, position=position) ska1low.generate_stations() ska1low.make_oskar_model(args.outdir, clobber=args.clobber) if args.plot: ska1low.plot_telescope(outdir=args.outdir) ska1low.plot_stations(outdir=args.outdir) if __name__ == "__main__": main()