Category "Solar"


iTerm2 is a macOS terminal emulator with a lot of extra features. In particular, it has a simple protocol for displaying images inline. It comes with a program imgcat that will display common image formats such as PNG, JPEG, GIF, etc. Most of the images I deal with are FITS, though. I wrote fitscat to be a handy utility to display FITS images, as well as to print basic information about the FITS file such as a listing of extensions or an extension header.

For example, fitscat can display an image in an extension, as seen below:

There are options to specify a minimum and maximum value for scaling, as well as to use a simple filter such square root.

Also, fitscat can also print basic information about a FITS file, such as a listing of extensions:

CoMP$ fitscat --list 20150624.170419.comp.1074.iqu.5.fts
Filename: 20150624.170419.comp.1074.iqu.5.fts
No.    Name      Ver    Type      Cards   Dimensions   Format
  0  PRIMARY       1 PrimaryHDU      67   ()
  1  I, 1074.38    1 ImageHDU        33   (620, 620)   float32
  2  I, 1074.50    1 ImageHDU        33   (620, 620)   float32
  3  I, 1074.62    1 ImageHDU        33   (620, 620)   float32
  4  I, 1074.74    1 ImageHDU        33   (620, 620)   float32
  5  I, 1074.86    1 ImageHDU        33   (620, 620)   float32
  6  Q, 1074.38    1 ImageHDU        33   (620, 620)   float32
  7  Q, 1074.50    1 ImageHDU        33   (620, 620)   float32
  8  Q, 1074.62    1 ImageHDU        33   (620, 620)   float32
  9  Q, 1074.74    1 ImageHDU        33   (620, 620)   float32
 10  Q, 1074.86    1 ImageHDU        33   (620, 620)   float32
 11  U, 1074.38    1 ImageHDU        33   (620, 620)   float32
 12  U, 1074.50    1 ImageHDU        33   (620, 620)   float32
 13  U, 1074.62    1 ImageHDU        33   (620, 620)   float32
 14  U, 1074.74    1 ImageHDU        33   (620, 620)   float32
 15  U, 1074.86    1 ImageHDU        33   (620, 620)   float32

Or display a header:

CoMP$ fitscat --header -e 3 20150624.170419.comp.1074.iqu.5.fts
XTENSION= 'IMAGE   '           /extension type
BITPIX  =                  -32 /bits per data value
NAXIS   =                    2 /number of axes
NAXIS1  =                  620 /
NAXIS2  =                  620 /
PCOUNT  =                    0 /
GCOUNT  =                    1 /
EXTNAME = 'I, 1074.62'         /
WAVELENG=             1074.620 / WAVELENGTH OF OBS (NM)
POLSTATE= 'I       '           / POLARIZATION STATE
EXPOSURE=               250.00 / EXPOSURE TIME (MILLISEC)
NAVERAGE=                   16 / Number of images averaged together
FILTER  =                    1 / FILTER WHEEL POSITION (1-8)
DATATYPE=               'DATA' / DATA, DARK OR FLAT
LCVR1TMP=            29.639999 / DEGREES CELSIUS
LCVR2TMP=            33.429001 /
LCVR3TMP=            33.715000 /
LCVR4TMP=            33.738998 /
LCVR5TMP=            33.618999 /
LCVR6TMP=            28.847000 /
NDFILTER=                    8 / ND 1=.1, 2=.3, 3=.5, 4=1, 5=2, 6=3, 7=4, 8=cle
BACKGRND=               13.154 / Median of masked line center background
BODYTEMP=               34.023 / TEMPERATURE OF FILTER BODY (C)
BASETEMP=               33.599 / BASE PLATE TEMP (C)
RACKTEMP=               25.012 / COMPUTER RACK AMBIENT AIR TEMP (C)
OPTRTEMP=               33.306 / OPTICAL RAIL TEMP (C)
DEMULT  =                    1 / 1=DEMULTIPLEXED, 0=NOT DEMULTIPLEXED
FILTTEMP=               35.000 / ILX FILTER TEMPERATURE (C)
FLATFILE= '20150624.070023.FTS' / Name of flat field file
INHERIT =                    T /
DISPMIN =                 0.00 / Minimum data value
DISPMAX =                 5.00 / Maximum data value
DISPEXP =                 0.50 / Exponent value for scaling

The full interface of fitscat is shown below:

$ fitscat --help
usage: fitscat [-h] [--min MIN] [--max MAX] [--debug] [-d] [-l] [-r]
               [-e EXTEN_NO] [-f FILTER] [-s SLICE]
               filename

fitscat - a FITS query/display program

positional arguments:
  filename              FITS file to query

optional arguments:
  -h, --help            show this help message and exit
  --min MIN             min for scaling
  --max MAX             max for scaling
  --debug               set to debug
  -d, --display         set to display
  -l, --list            set to list HDUs
  -r, --header          set to display header
  -e EXTEN_NO, --exten_no EXTEN_NO
                        specify extension
  -f FILTER, --filter FILTER
                        specify filter (default: none)
  -s SLICE, --slice SLICE
                        specify slice of data array to display

Source code for the Python script is available on GitHub. The script is compatible with Python 2 and 3, but requires standard scientific Python packages AstroPy, NumPy, and PIL.

I will be posting more about the Great American Eclipse of 2017 this summer. To start off with, NASA has made some great maps of where the total eclipse will be visible from:

On August 21, 2017, the moon will pass between Earth and the sun in a total solar eclipse that will be visible on a path from Oregon to South Carolina across the continental United States. This path of totality will occur in a little over 90 minutes, while observers on the ground will see the eclipse for about two and a half minutes. Standing at the edge of the moon’s shadow, or umbra, the difference between seeing a total eclipse and a partial eclipse comes down to elevation – mountains and valleys both on Earth and on the moon – which affect where the shadow lands. In this visualization, data from NASA’s Lunar Reconnaissance Orbiter account for the moon’s terrain that creates a jagged edge on its shadow. This data is then combined with elevation data on Earth as well as information on the sun angle to create the most accurate map of the eclipse path to date. Watch the video to learn more.

NASA also has downloadable, detailed state maps of the eclipse path.

via kottke