Source code for montage_wrapper.commands_extra

# This file contains commands for which wrappers could not be
# auto-generated from the HTML docs

import subprocess
import shlex

from . import status


[docs]def mCoverageCheck(in_table, out_table, mode, polygon=None, ra=None, dec=None, width=None, height=None, rotation=None, radius=None, header=None, status_file=None): ''' mCoverageCheck can be used to subset an image metadata table (containing FITS/WCS information or image corners) by determining which records in the table represent images that overlap with a region definition (box or circle in the sky) given on the command line. Parameters ---------- in_table : str Input metadata table. out_table : str Output metadata table, to contain subset of in_table. mode : str How to check for coverage: - 'points': use a polygon with points specified by polygon= - 'box': use a rectangular box with center given by ra= and dec=, and the width given by width=. Optionally, the height and rotation can be given by height= and rotation= - 'circle': use a circle with center given by ra= and dec= and radius given by radius= - 'point': use a point given by ra= and dec= - 'header': use a header file given by header= polygon : list A polygon which should be given as [(ra1, dec1), (ra2, dec2), ..., (raN, decN)]. ra : float, optional The right ascension of the box, circle, or point dec : float, optional The declination of the box, circle, or point width : float, optional The width of the box height : float, optional The height of the box rotation : float, optional The rotation of the box radius : float, optional The radius of the circle header : str, optional A header file status_file : str, optional Output and errors are sent to status_file instead of to stdout ''' command = "mCoverageCheck" if status_file: command += " -s %s" % str(status_file) command += " " + str(in_table) command += " " + str(out_table) command += " -" + mode if mode == 'points': if polygon is None: raise Exception("polygon= needs to be specified for mode='points'") for point in polygon: command += " " + str(point[0]) command += " " + str(point[1]) elif mode == 'box': if ra is None: raise Exception("ra= needs to be specified for mode='box'") if dec is None: raise Exception("dec= needs to be specified for mode='box'") if width is None: raise Exception("width= needs to be specified for mode='box'") command += " " + str(ra) command += " " + str(dec) command += " " + str(width) if height is not None: command += " " + str(height) if rotation is not None: command += " " + str(rotation) else: if rotation is not None: raise Exception("Cannot specify rotation without height") elif mode == 'circle': if ra is None: raise Exception("ra= needs to be specified for mode='circle'") if dec is None: raise Exception("dec= needs to be specified for mode='circle'") if radius is None: raise Exception("radius= needs to be specified for mode='circle'") command += " " + str(ra) command += " " + str(dec) command += " " + str(radius) elif mode == 'point': if ra is None: raise Exception("ra= needs to be specified for mode='point'") if dec is None: raise Exception("dec= needs to be specified for mode='point'") command += " " + str(ra) command += " " + str(dec) elif mode == 'header': if header is None: raise Exception("header= needs to be specified for mode='header'") command += " " + header else: raise Exception("Unknown mode: %s" % mode) p = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, stderr=subprocess.PIPE) stderr = p.stderr.read() if stderr: raise Exception(stderr) return status.parse_struct("mCoverageCheck", p.stdout.read().strip())

Page Contents