#!/usr/bin/env python # -*- mode: python; coding: utf-8 -* # Copyright (c) 2018 Radio Astronomy Software Group # Licensed under the 2-clause BSD License """ A command-line script for converting any pyuvdata compatible file to UVFITS format """ from __future__ import absolute_import, division, print_function import argparse import sys import os import pyuvdata from astropy.time import Time # setup argparse a = argparse.ArgumentParser(description="A command-line script for converting file(s) to UVFITS format.") a.add_argument("files", type=str, nargs='*', help="pyuvdata-compatible file(s) to convert to uvfits.") a.add_argument("--output_filename", type=str, default=None, help="Filepath of output file. Default is input with suffix replaced by .uvfits") a.add_argument("--phase_time", type=float, default=None, help="Julian Date to phase data to. Default is the first integration of the file.") a.add_argument("--overwrite", default=False, action='store_true', help="overwrite output file if it already exists.") a.add_argument("--verbose", default=False, action='store_true', help="report feedback to stdout.") # get args args = a.parse_args() history = ' '.join(sys.argv) # iterate over files for filename in args.files: # check output if args.output_filename is None: splitext = os.path.splitext(filename)[1] if splitext[1] == '.uvh5': outfilename = splitext[0] + '.uvfits' elif splitext[1] in ['.ms', '.MS']: outfilename = splitext[0] + '.uvfits' elif splitext[1] == '.sav': outfilename = splitext[0] + '.uvfits' else: outfilename = filename + '.uvfits' else: outfilename = args.output_filename if os.path.exists(outfilename) and args.overwrite is False: print("{} exists, not overwriting...".format(outfilename)) continue # read in file UV = pyuvdata.UVData() UV.read(filename) if UV.phase_type == 'drift': # phase data if args.phase_time is not None: UV.phase_to_time(Time(args.phase_time, format='jd', scale='utc')) if args.verbose: print("phasing {} to time {}".format(filename, args.phase_time)) else: UV.phase_to_time(Time(UV.time_array[0], format='jd', scale='utc')) if args.verbose: print("phasing {} to time {}".format(filename, UV.time_array[0])) # write data UV.history += history if args.verbose: print("saving {}".format(outfilename)) UV.write_uvfits(outfilename, spoof_nonessential=True)