Source code for image_merit

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

"""
Tool for quick image assessment.

Copyright (C) CSIRO 2017
"""
import argparse as ap
import sys
from pathlib import Path

import aces.misc.image_stats as ims

[docs]EXPLANATION = """TBD. """
[docs]HELPSTART = """This produces simple figures of merit. v 2019Nov29 """
[docs]def arg_init(): """Provide essential data for interpreting command line arguments. """ parser = ap.ArgumentParser(prog='image_merit', formatter_class=ap.ArgumentDefaultsHelpFormatter, description=HELPSTART, epilog='See -x for more explanation') parser.add_argument('in_file', nargs="+", help="Image file") parser.add_argument('-c', '--cellsize', type=int, default=100, help='Cell size in pixels') parser.add_argument('-n', '--nomask', action='store_true', help='Select to disable edge masking in statistics ' 'determination') parser.add_argument('-r', '--replace', action='store_true', help='Replace existing statistics file') parser.add_argument('-s', '--statistic', choices=['rms', 'min', 'rat', 'iqr'], default='rms', help="Statistic to compute") parser.add_argument('-v', '--verbose', action='store_true') parser.add_argument('-x', '--explain', action='store_true', help="Give an expanded explanation") return parser
[docs]def main(): # parse command line options print ("\n image_merit\n\n") args = arg_init().parse_args() verbose = args.verbose statistic = args.statistic if args.explain: print (EXPLANATION) sys.exit(0) if verbose: print ("ARGS = ", args) if args.in_file: in_files = args.in_file if in_files[0].startswith('@'): files = open(in_files[0][1:], 'rU').readlines() in_files = [f.strip() for f in files] else: print ("Try -h for help") sys.exit(0) mask_it = not args.nomask out_dir = Path('.') for in_file in in_files: input = Path(in_file) mos_stats, stats, fname = ims.image_cell_statistic(input, out_dir, cellsize=args.cellsize, statistic=statistic, do_mask=mask_it, replace_old=args.replace) print ("Statistics file is {}".format(fname)) things = sorted(stats.keys()) for thing in things: if thing != "speed": lab = 'rms' unit = 'microJy' fmt = " {} {:.1f} {}" label = "{:3s} {:12s}".format(lab, thing) print(fmt.format(label, stats[thing], unit)) if 'speed' in things: lab = "" unit = 'microJy^2 sq_deg' fmt = " {} {:.6f} {}" label = "{:3s} {:12s}".format(lab, 'speed') print(fmt.format(label, stats['speed'], unit)) return 0
if __name__ == "__main__": sys.exit(main())