MHDRTBL(1)

πŸ’– mHdrtbl β€” bestie's guide to pulling metadata out of header files πŸ’–

okay so real talk, mHdrtbl lives in the Montage family (manual section 1, if you're keeping score) and she's the header-template cousin of mImgtbl. Same energy, different input. Let's get into it πŸ¦‹


✨ SYNOPSIS ✨

mHdrtbl [-rcdb] [-s statusfile] [-t imglist] directory images.tbl

🌸 DESCRIPTION 🌸

So mHdrtbl operates in a fashion similar to mImgtbl, but here's the plot twist: she's used on a set of header template files instead of FITS images. That's it, that's the whole vibe. ✨


πŸ‘‘ OPTIONS πŸ‘‘

  • -r β€” lowkey one of the most useful ones. mHdrtbl can also be used as a standalone program to gather image metadata for other purposes (to populate a database, as a basis for spatial coverage searches, etc.). In this case it is often desirable to collect information on all the files in a directory tree recursively. The -r (recursive) flag instructs mHdrtbl to search the given directory and all its subdirectories recursively. fr fr, it goes all the way down 🫢
  • -c β€” the -c (corners) option will cause eight extra columns to be added to the output metadata table containing the RA, Dec coordinates (ra1, dec1, ... ra4, dec4) of the image corners. The output is always Equatorial J2000, even if the input is some other system. This has been done to make the metadata uniform so that it can easily be used for coverage searches, etc. Heads up bestie: the -c option is not needed for normal Montage processing. πŸ’…
  • -d β€” Turn on debugging πŸ›
  • -b β€” When this switch is set, mHdrtbl will explicitly output each header file it finds that does not appear to be valid, along with information on the error. She's not gonna ghost the bad ones, she'll name them 😭
  • -s statusfile β€” Output and errors are written to statusfile instead of being written to stdout. Quiet girl behavior πŸŽ€
  • -t imglist β€” mHdrtbl will only process files with names specified in table imglist, ignoring any other files in the directory. Example: example.imglist. Like a guest list but for files, and honestly? iconic.

🌈 ARGUMENTS 🌈

  • directory β€” Path to directory containing set of input header templates.
  • images.tbl β€” Path of output metadata table.

⭐ RESULT ⭐

The output table contains metadata information from all readable header templates in the directory specified by directory. count is the number of records in the table, and badhdrs is the number of files for which FITS/WCS metadata could not be extracted. Not me counting the casualties πŸ’€


πŸ’œ OUTPUT COLUMNS πŸ’œ

  • cntr β€” A unique counter (row number)
  • ra,dec β€” Image position in decimal degree format
  • cra,cdec β€” Right ascension in HHMMSS.SS format. Declination in DDMMSS.S format
  • naxis1, naxis2 β€” The size of the image in pixels for dimensions 1 and 2
  • ctype1, ctype2 β€” The coordinate system (the first four characters) and WCS map projection (last three characters) for dimensions 1 and 2
  • crpix1, crpix2 β€” The pixel coordinates of the reference location (can be fractional and can be off the image) for dimensions 1 and 2
  • crval1, crval2 β€” The coordinates of a reference location on the sky (often at the center of the image) for dimensions 1 and 2
  • cdelt1, cdelt2 β€” The pixel scale (in degrees on the sky per pixel) at the reference location for dimensions 1 and 2
  • crota2 β€” The rotation angle from the "up" direction to the celestial pole
  • equinox β€” Precessional year associated with the coordinate system
  • hdu β€” Numerical identifier for the FITS extension that the image info is extracted from, for FITS files with multiple HDUs.
  • size β€” Filesize (in bytes) of the input FITS file
  • fname β€” The path to the input FITS file

πŸ“’ MESSAGES πŸ“’

the way she talks to you... here's everything she might say πŸ‘‡

OK     [struct stat="OK", count=count, badfits=badfits]
ERROR  Illegal argument: -arg
ERROR  Cannot open status file: statusfile
ERROR  Cannot open field list file: fieldlistfile
ERROR  Cannot open image list file: imgfile
ERROR  Image table needs column fname/file
ERROR  Illegal field name: string]
ERROR  Illegal field type: string]
ERROR  Cannot access directory
ERROR  directory is not a directory
ERROR  Can't open output table.
ERROR  Can't open copy table.
ERROR  Can't open tmp (in) table.
ERROR  Can't open tmp (out) table.
ERROR  Can't open final table.
ERROR  FITS library error

πŸŽ€ EXAMPLES πŸŽ€

The following example runs mHdrtbl on a directory containing header templates stripped from 14 2MASS images:

$ mHdrtbl input/2mass headers.tbl
       [struct stat="OK", count=14, badfits=0]

Output: headers.tbl. periodt ✨


πŸ’€ BUGS πŸ’€

The drizzle algorithm has been implemented but has not been tested in this release. (not me shipping untested code 😭)
If a header template contains carriage returns (i.e., created/modified on a Windows machine), the cfitsio library will be unable to read it properly, resulting in the error: [struct stat="ERROR", status=207, msg="illegal character in keyword"] β€” yes Windows line endings will absolutely ruin your day, bestie πŸ™ˆ

It is best for the background correction algorithms if the area described in the header template completely encloses all of the input images in their entirety. If parts of input images are "chopped off" by the header template, the background correction will be affected. We recommend you use an expanded header for the reprojection and background modeling steps, returning to the originally desired header size for the final coaddition. The default background matching assumes that there are no non-linear background variations in the individual images (and therefore in the overlap differences). If there is any uncertainty in this regard, it is safer to turn on the "level only" background matching (the -l flag in mBgModel). 🫢


2001-2015 California Institute of Technology, Pasadena, California

If your research uses Montage, please include the following acknowledgement: "This research made use of Montage. It is funded by the National Science Foundation under Grant Number ACI-1440620, and was previously funded by the National Aeronautics and Space Administration's Earth Science Technology Office, Computation Technologies Project, under Cooperative Agreement Number NCC5-626 between NASA and the California Institute of Technology."

The Montage distribution includes an adaptation of the MOPEX algorithm developed at the Spitzer Science Center.


okay that's the whole thing, you're literally a header-metadata expert now πŸ’…βœ¨ this was Montage 5, dated Dec 2016, and yeah that's the tea β€” go slay your coverage searches, bestie πŸ¦‹πŸ’–