#!/usr/bin/env python import pyfits import argparse def formatVisits(visits): """Format a set of visits into the format used for an --id argument""" visits = sorted(set(visits)) visitSummary = [] i = 0 while i < len(visits): v0 = -1 while i < len(visits): v = visits[i]; i += 1 if v0 < 0: v0 = v dv = -1 # visit stride continue if dv < 0: dv = v - v0 if visits[i - 2] + dv != v: i -= 1 # process this visit again later v = visits[i - 1] # previous value of v break if v0 == v: vstr = "%d" % v else: if v == v0 + dv: vstr = "%d^%d" % (v0, v) else: vstr = "%d..%d" % (v0, v) if dv > 1: vstr += ":%d" % dv visitSummary.append(vstr) return "^".join(visitSummary) def getVisitsForCalib(filename): fits = pyfits.open(filename) header = fits[0].header pattern = "HIERARCH CALIB_INPUT_%04d" index = 0 visits = [] while pattern % index in header: visits.append(header[pattern % index]) index += 1 return visits if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("filename", help="Calib filename") args = parser.parse_args() visits = getVisitsForCalib(args.filename) print args.filename, formatVisits(visits)