Montage Release Change History 5.0 21Dec2016 Version 5.0 offers a new fast reprojection module, mProjectQL, that is suitable for creating images for visualization; support for FITS files containing data written in the HEALPix sky- tesselation scheme; and support for creating images that can be consumed by the World Wide Telescope (WWT). This release also allows the core modules to be built and used as a statically or dynamically linked library.The Montage library is built at the same time as the toolbox modules with the make command; no special build procedure is needed. A list of the library functions and the library API is here. mProjectQL uses the Lanczos image interpolation scheme to provide higher performance in reprojection at the expense of conservation of flux; we recommend mProjectQL primarily for creating images for quick-look visualization rather than for science analysis. It offers a speed-up of approximately x20 over mProject. Support for HEALPix: Montage treats HEALPix as if it were a spherical projection that can processed with the existing reprojection routines in Montage. It is managed through a local version of the WCStools library users who prefer to use the SAO library should note that will lose HEALPix and TOAST support). The distribution includes a copy of the HPXcvt module to convert HEALPix data from FITS table form to FITS image form; this module is part of the WCSLib distribution at http://www.atnf.csiro.au/people/mcalabre/WCS/wcslib. (Copyright (C) 1995-2016, Mark Calabretta). Support for the WWT: As with HEALPix, Montage treats TOAST, the sky-tessellation scheme used by the WWT, as if they were a spherical projection that can processed with the existing reprojection routines in Montage. It is managed through the same local version of the WCStools library used to manage HEALPix data. The WWT consumes PNG or JPEG files organized and named to conform to the TOAST sky-tessellation scheme. Montage includes custom routines to organize TOAST files for display in the WWT. These modules are: mHdrWWT: Create a TOAST tile header file given a tile ID (in Z-order digits such as"2320") and an output file name. mHdrWWTExec: Recursively creates all the headers for an all-sky set using mHdrWWT. mProjWWTExec: Runs mProjectQL to reproject an all-sky input image into a set of FITS tile images using the headers created by mHdrWWT and mHdrWWTExec . It writes all these into a directory, given an an argument. mPNGWWTExe: Runs mViewer for each FITS file, using a pregenerated histogram and a color table given as arguments. The histogram is generated by mHistogram and can be based on one of the WWT image set or from the original image(s)from which the WWT images were derived. 4.0 30Sep2015 New modules to support working with data cubes : mCubeProj -- Based on mProject, this new module allows for three- and four-dimensional data files (and is easily extended to more dimensions if we ever find data in that form that needs to be projected). mCubeProj is for now kept separate from mProject even though the spatial code is identical to avoid slowing or introducing bugs into that heavily-used module. We may merge them back together in the future. mCubeProj requires that the first two axes are spatial. See mTranspose if the cube needs to be reorganized into this form. --- mTranspose -- Dealing with reprojection and reselection of axes at the same time is much more complicated than either of those operations and makes the code much more likely to harbor bugs. We have opted for requiring the spatial dimensions to be the first two in the cube and providing a "transpose" utility to allow reorganizing files where this is not the case. --- mAddCube -- Coadds the reprojected cubes in an input list to form an output mosaic with FITS header keywords specified in a header file. mSubCube -- Creates a subimage (or "cutout") of a FITS file containing a data cube. mShrinkCube -- Rescale the spatial dimension of a cube. Resampling or even averaging in the third dimension is not generally safe, so we do not attempt it. --- Library directory names have been changed to reflect version numbers since most of these are outside packages that can be replaced by the user if desired (e.g. to change to a newer version of the WCS library if it has new projections). --- Some modules (checkHdr.c, mAddExec.c, mBgModel.c, mCoverageCheck.c, mDiff.c, mMakeImg.c, mProject.c, mProjectPP.c, mPutHdr.c, mShrink.c, mSubimage.c) have been modified slightly to avoid messages from newer versions of compilers (especially on Mac OSX). No algorithmic changes; mostly proper handling of returns, etc. --- We have augmented the "JPEG generator" with enough new functionality that we are rebranding it as a new tool, mViewer. mViewer support grayscale, pseudocolor and full color (three image) rendering into JPEG or PNG files. There are several overlays possible, including coordinate grids (of any sort and number) catalog overlays (scaled and colored symbols with several shapes), image metadata outlines, labels and custom markers, and so on. mJPEG remains in the distribution but we do not plan further development. The JPEG files contain AVM tags that allow them to be ingested into the World Wide Telescope. This utility can be used standalone, in pipelines, or as the basis of an interactive (AJAX GUI) interaction toolkit. A beta version of the Python wrapper around mViewer has been included in the distribution. --- There have been minor updates to several other modules: Image metadata collection for mImgtbl occasionally ran into trouble with missing or invalid WCS keywords. Changed to handle more gracefully. mBgModel had a realloc bug where it was point to the wrong array index. An optional parameter was added to mMakeHdr to set a maximum number of pixels on an image side. mOverlaps now checks to see if the image metadata already has the image four corners rather than (re)generating them. mTblSort had a bug where an empty table would loop forever. Finally, there have been a few additions of minor tools for which need arose: mPad -- Pad a FITS image with null pixel regions (e.g. so mViewer can have a border). mExamine -- Return basic information on a image and optionally on a cone region. 3.3 14Dec2010 Library directory names changed to reflect version numbers since most of these are outside packages that can be replaced by the user if desired (e.g. to change to a newer version of the WCS library if it has new projections). The checkHdr() routine used by most programs to validate that the FITS header in the file being used has all the necessary information (so we can give a more informative message than that we get from the WCS library) has been update to include more checks and better messages. Several modules had to have a kludge added to get around a closure problem with the WCS library: For CAR projections (and potentially other cylindrical projections), FITS headers with really large CRPIX offsets (e.g. a large fraction of the sky) had trouble with pix->sky->pix transformations. This affected mMakeImg, mOverlaps, mProject, mSubimage, mSubset, mTANHdr, and utilities such as mRotate. A few modules had an option added to allow status messages to go to a file rather than to stdout. This is primarily to support certain workflow environments (like ISI's Pegasus). Also there is an include file (mNaN.h) that is used to deal with inter-platform differences in not-a-number checking and this has been made more robust. mAdd and mAddExec had small update to better support MPI use. mBgExec and mProjExec had more extensive MPI additions. mBgModel has an added parameter (-a) to force the use all the overlap fits (normally there are exclusion rules for fits that have too small an area, etc.). There was also a small bug in the counting of the number of fits that were to be used. mCoverageCheck is more careful about WCS initialization, particularly in cutout mode, for some projections going back to the original FITS file rather than using the nominal parameters pulled from it earlier. Also, at one point in the processing mCoverageCheck was using nominal outside pixel edges (e.g. -0.5 to npix+0.5) rather than the exact pixel min,max range even though this had been determined. All the pixels being blank in an mDiff run was changed from an error to a warning to avoid causing higher-level executives to exit. mDiffExec was likewise changed to deal with the mDiff warning properly and to add a "level only" mode to be passed on the mFitplane (i.e. so that mFitPlane finds only the average difference between overlapping images and does not fit a full plane). mFitExec also need to allow "level only" and had minor updates for MPI processing. Finally, mFitplane was changed to support this "level only" mode. mImgtbl was changed to return the number of images found with "bad" WCS information. mMakeHdr was extended to allow for padding the image header created and to check for a greater variety of parameters in the input table. mMakeImage is more careful about supporting odder projections, the poles, etc. mProjectPP was modified to be more careful about checking "offscale" status in a projection. mPutHdr was modified to check that inviolate information (basically BITPIX and NAXIS1,2) were not changed. mPutHdr is not meant to be used to correct a corrupted file, just one where non-structural information in the header is missing or incorrect. mShrink had an option added to allow it to extract and work with a single HDU in a multi-HDU FITS file. mSubimage now includes a "shrink-wrap" mode to strip off blank pixels around the outside of the image. mSubset was not handling tables correctly when the coordinate system of the data and the command-line didn't match. The interation mechanism in mTANHdr was a little too sensitive and has been damped down a little. mTblSort had a reverse sort option added. Padding in mTileHdr was being added with the wrong sign. A Galactic plane mosaic DAG generator (mDAGGalacticPlane) was added to the grid/Pegasus utilities. Also in that package, mDAG was updated to the Pegasus DAX schema version 2. There were a few other changes to code in the same package. mArchiveExec had a simple "restart" mechanism added and is more robust regarding column names (e.g. "url" and "URL" are both now valid). mArchiveGet puts more work into parsing data URLs and dealing with proxy servers. mArchiveList also now deals with proxy servers. mExec, the wrapper executive that runs end-to-end mosaic processing, has a number of additional options (many of them about results markup). mHdr has an extra option when dealing with 2MASS images to ensure the inclusion of the proper MAGZP value in the mosaic header. mHdr can make use of the remote object name "lookup" service and has therefore also been updated with proper URL proxy handling. mJPEG is currently under active development (to support overlays of various sorts) but already has additional functionality to allow it to deal with files with no WCS, showing a compass rose, etc. mPix2Coord can support HDU selection and both FITS and "header file" data input. There were several minor updates made to correct typos or wording in error messsages, etc. or notes in the code. 3.2 Never released except as beta versions. See 3.3 for changes to final state. 3.1 21Sep2007 The updates in this release center mostly around using Montage via mExec. The archive access to SDSS has been brought up to DR6 and full flux calibration is now done. A problem with CAR projection (which can have very large offsets as they often refer back to lat=0, lon=0) has been dealt with, and mExec itself has been made more robust and the output more instructive. A few other bug fixes and enhances were also made: mJPEG can now make images with a simple compass 'rose' (showing N and E directions) and can make images for FITS files where there is no valid WCS. mTANHdr was made more robust, especially in dealing with projections like CAR (when it is far away from the equator) where there are some gross overall distortions (in addition to the fine distortions that mTANHdr is really meant to address). 3.0 05Jan2007 The core system has not been changed much, though there have been some additions and numerous small tweaks. The main emphasis has been on solidifying Montage use in a distributed Grid environment to allow the building of large-scale mosaics from 2MASS, SDSS, and DPOSS. New Core Modules: + mConvert + mDiffFitExec + mHdrTbl + mTblSort New Utilities: + mArchiveList + mArchiveGet + mArchiveExec + mBestImage + mCatMap + mExec + mFixNaN + mHdr + mJPEG + mPix2Coord + mRotate Grid tools for Globus, Pegasus included in "grid" subdirectory Additional Changes: + mAdd: bug fixes; added averaging mode options + mAddExec: new module to create series of tiled mosaics, instead of one large output image (mAdd) + mBgExec: Memory bug fixes; improved handling for images with no corrections + mBgModel: Improved error handling; increased default iterations to 10000 + mDiff: Improved error handling; decreased required pixel area to include in calculations to 0.333 + mMakeHdr: Added flag (-p) to set pixel scale; improved error handling + mMakeImg: Added 'region' and 'replace' modes + mOverlaps: Increased diff file name range + mProjExec: Automatically use mProjectPP when possible; output message updates; added flux scaling option; added support for 'hdu' column in image table + mProject, mProjectPP: Added flux scaling option; added weight image and HDU functionality; added option to force reprojection of whole image, even if part of it is outside region of interest + mShrink: Added "fixed size" mode + mTANHdr: Scaling/rotation now inherited from input header; increased number of points used in fit; check fit for "all off-scale" condition; performance improvements 2.2 20Jul2004 Makefiles have been updated and the CFITSIO library modified (see docs/ExternalLibraries.txt for details) to allow the use of 64-bit addressing (files larger than 2 GByte) on LINUX platforms. 2.1 01Jul2004 Changes have been made to several modules. The biggest change, however, is the addition of mTANHdr (and associated changed to mProjectPP) which allow the fast reprojection of non-tangent-plane projections if they can be approximated as distorted TAN images. 2.0.4 16Mar2004 mAdd no longer allocates the entire output image up front, and so uses even less memory. -level-only flag has been added to mBgModel. New module mShrink added to make scaled versions of an image (e.g. image with pixel scale 5.5 times larger than the original) New modules mRadHit and mRadHitExec added to try and remove "radiation hit" type artifacts from original unprojected images by comparing pixel values to local medians. New modules mDagTbls and mConcatFit added to aid in GRID computing use of Montage. The first generates a set of tables (lists of images, overlap analysis) for use in setting up a batch processing run. The second combines the output of difference fitting (presumably in this context done via separate threads) into a single table for use by mBgModel. 2.0.3 04Feb2004 mAdd has been updated to better manage memory and a fast reprojection (plane-to-plane) module has been added (mProjectPP). 2.0.2 13Jan2004 Fixed several problems with 'boundaries' library (used by mMakeHdr). Also fixed a realloc() bug in mMakeHdr. 2.0.1 25Nov2003 Fixed background matching (specifically mDiff bug) and made various other minor changes. 2.0 17Sep2003 Status file option added to all modules to support GRID (Montage-G DAG) processing. Migrated from Montage 1.7.1: Fixed a couple of bugs in mProject: FITS reading was being done incorrectly (which caused occassional error conditions) and pixel "handedness" was sometime computed incorrectly for CD matrices. 1.7 29May2003 - Added checks for malloc return values in mAdd - mBgModel now allows arbitrarily large number of iterations 1.6 24Apr2003 Support for DSS projection has been added. All anomaly reports from 1.5 have been resolved. Specifically: - checkHdr.c is more robust (and handles DSS headers properly - checkWCS.c handles transposed lon/lat - Minor changes to mImgtbl support routines - mImgtbl checks for correct ordering of corners - Added checks to see if template file lines contained syntax (ie, had been passed through a PC) - Added checks for svc_run() aborts due to a missing executable (eg if the mProjExec executable existed but mProject didn't) - Fixed bug in mGetHdr where it checked the wrong argument for FITS header - mHdrCheck now checks explicitly for a missing input file - Added specific checks to mProjExec to see if the various files and directories on the command line exist before calling mProject - Fixed bugs in syntax for parsing -i and -o arguments in mProject - Added more debugging messages to mProject 1.5 18Mar2003 All anomoly reports have been resolved and getopt() processing has been incorporated into most of the modules to handle command-line parameters. 1.4 24Jan2003 The background rectification software has been debugged and modified slightly. Minor modifications have also been made to the reprojection code to avoid problems with small-offset roundoff errors affecting the pixel overlap calculations. 1.3 1Oct2002 Workaround for bug in WCS library affecting cylindrical projections; fix for LINUX bug in svc control library 1.2 25Sep2002 Initial LINUX port 1.1 27Jul2002 Updated pixel overlap to remove repeated (within positional tolerance) points. Otherwise the Girard() calculation gets confused. 1.0 01Jul2002 Initial Limited Release