Montage Montage is an astronomical image toolkit with components for reprojection, background matching, coaddition and visualization of FITS files. It can be used as a set of command-line tools (Linux, OS X and Windows), C library calls (Linux and OS X) and as Python binary extension modules.
The Montage source is written in ANSI-C and code can be downloaded from GitHub ( https://github.com/Caltech-IPAC/Montage ). The Python package can be installed from PyPI ("</i>pip install MontagePy"). The package has no external dependencies. See http://montage.ipac.caltech.edu/ for details on the design and applications of Montage.
It is often the case that only a small piece of an image is needed for science or visualization purposes. mSubimage provides a way to cut out such a piece and still maintain all the header and projection information.
from MontagePy.main import mSubimage, mViewer
help(mSubimage)
In this example, we will cut a small region from the center of a large mosaic, using the default center coordinate/size mode:
rtn = mSubimage('M17/mosaic_small.fits',
'work/M17/mosaic_small_subimage.fits',
275.19629, -16.17153, 0.3, 0.3)
print(rtn)
Here are the original image and the cutout:
from IPython.display import HTML, display, Image
mViewer('-ct 1 -gray M17/mosaic_small.fits \
-2s max gaussian-log -out work/M17/mosaic_small.png',
'', mode=2)
Image(filename='work/M17/mosaic_small.png')
mViewer('-ct 1 -gray work/M17/mosaic_small_subimage.fits \
-2s max gaussian-log -out work/M17/mosaic_small_subimage.png',
'', mode=2)
Image(filename='work/M17/mosaic_small_subimage.png')
If mSubimage encounters an error, the return structure will just have two elements: a status of 1 ("error") and a message string that tries to diagnose the reason for the error.
For instance, if the user specifies an image that doesn't exist:
rtn = mSubimage('input/M17/unknown.fits',
'work/M17/cutout.fits',
275.19629, -16.17153, 0.3, 0.3)
print(rtn)
mSubimage can also be run as a command-line tool in Linux, OS X, and Windows:
Usage: mSubimage [-d][-a(ll pixels)][-h hdu][-s statusfile] in.fit out.fit ra dec xsize [ysize] | mSubimage -p [-d][-h hdu][-s statusfile] in.fit out.fit xstartpix ystartpix xpixsize [ypixsize] | mSubimage -c [-d][-h hdu][-s statusfile] in.fit out.fit
If you are writing in C/C++, mSubimage can be accessed as a library function:
/*-***********************************************************************/ /* */ /* mSubimage */ /* */ /* This program subsets an input image around a location of interest */ /* and creates a new output image consisting of just those pixels. */ /* The location is defined by the RA,Dec (J2000) of the new center and */ /* the XY size in degrees of the area (X and Y) in the direction of */ /* the image axes, not Equatorial coordinates. */ /* */ /* char *infile Input FITS file */ /* char *outfile Subimage output FITS file */ /* */ /* double ra RA of cutout center (or start X pixel in */ /* PIX mode */ /* double dec Dec of cutout center (or start Y pixel in */ /* PIX mode */ /* */ /* double xsize X size in degrees (SKY mode) or pixels */ /* (PIX mode) */ /* double ysize Y size in degrees (SKY mode) or pixels */ /* (PIX mode) */ /* */ /* int mode Processing mode. The two main modes are */ /* 0 (SKY) and 1 (PIX), corresponding to cutouts */ /* are in sky coordinate or pixel space. The two */ /* other modes are 3 (HDU) and 4 (SHRINK), where */ /* the region parameters are ignored and you get */ /* back either a single HDU or an image that has */ /* had all the blank border pixels removed. */ /* */ /* int hdu Optional HDU offset for input file */ /* int nowcs Indicates that the image has no WCS info */ /* (only makes sense in PIX mode) */ /* */ /* int debug Debugging output level */ /* */ /*************************************************************************/ struct mSubimageReturn *mSubimage(char *infile, char *outfile, double ra, double dec, double xsize, double ysize, int mode, int hdu, int nowcs, int debugin)
Return Structure
struct mSubimageReturn { int status; // Return status (0: OK, 1:ERROR) char msg [1024]; // Return message (for error return) char json [4096]; // Return parameters as JSON string char content[1024]; // String giving an idea of output content (e.g., 'blank', 'flat', or 'normal'. };