diff --git a/rfplot.py b/rfplot.py index 8abf221..fc80605 100755 --- a/rfplot.py +++ b/rfplot.py @@ -60,7 +60,6 @@ def main(): # Parse input arguments parser = argparse.ArgumentParser(description="rfplot: plot RF observations", formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument("-p", "--path", help="Input path to parent directory /a/b/", type=str) - parser.add_argument("-P", "--prefix", help="Filename prefix c in c_??????.bin", type=str) parser.add_argument("-s", "--start", type=int, default=0, help="Number of starting subintegration") parser.add_argument("-l", "--length", type=int, default=3600, help="Number of subintegrations to plot") parser.add_argument("-C", "--site", type=int, help="Site ID", default=4171) @@ -84,11 +83,9 @@ def main(): if not os.path.exists(args.catalog): print(f"TLE catalog not available under {args.catalog}") - print(site, args.freqlist, args.catalog) - # Read spectrogram if args.artifact is None: - s = Spectrogram(args.path, args.prefix, args.start, args.length, args.site) + s = Spectrogram(args.path, args.start, args.length, args.site) timestamps = [ x.replace(tzinfo=utc) for x in s.t] range_rate_base = [ 0 for x in timestamps] site_location = wgs84.latlon(site["lat"], site["lon"], site["height"]) diff --git a/strf/rfio.py b/strf/rfio.py index f3aa1ef..b64943b 100644 --- a/strf/rfio.py +++ b/strf/rfio.py @@ -1,6 +1,8 @@ #!/usr/bin/env python3 import os import re +import sys +import glob import numpy as np @@ -9,11 +11,27 @@ from datetime import datetime, timedelta class Spectrogram: """Spectrogram class""" - def __init__(self, path, prefix, ifile, nsub, siteid): + def __init__(self, froot, ifile, nsub, siteid): """Define a spectrogram""" + path, prefix = extract_path_and_prefix(froot) - # Read first file to get number of channels + # Read matching filenames + fnames = sorted(glob.glob(os.path.join(path, f"{prefix}_*.bin"))) + + # Start filename fname = os.path.join(path, f"{prefix}_{ifile:06d}.bin") + + if not fname in fnames: + # Exit on no matching files + if fnames == []: + print(f"Spectrogram is not available under {fname}") + sys.exit(1) + else: + print(f"Spectrogram is not available under {fname}\nUsing {fnames[0]} instead") + fname = fnames[0] + ifile = int(fname.split("_")[1].replace(".bin", "")) + + # Read first header with open(fname, "rb") as fp: header = parse_header(fp.read(256)) @@ -29,12 +47,22 @@ class Spectrogram: while isub