Preparing AIA data#

AIA data provided by the JSOC are level 1 data products. This means that the images still include the roll angle of the satellite and each channel may have a slightly different resolution. Typically, before performing any sort of data analysis on AIA images, you will want to promote your AIA data from level 1 to level 1.5. This promotion involves updating the pointing keywords, removing the roll angle, scaling the image to a resolution of 0.6 arcseconds per pixel, and translating the image such that the center of the Sun is located in the center of the image.

In IDL, this is done with the aia_prep.pro procedure in SSWIDL as described in the SDO Analysis Guide. The following example, Registering and aligning level 1 data demonstrates how to achieve this in Python with aiapy.

Additional data processing steps (e.g. a PSF deconvolution) should be done in the following order:

  1. Pointing correction (aiapy.calibrate.update_pointing)

  2. Image respiking (aiapy.calibrate.respike)

  3. PSF deconvolution (aiapy.psf.deconvolve)

  4. Registration (aiapy.calibrate.register)

  5. Degradation correction (aiapy.calibrate.correct_degradation)

  6. Exposure normalization

A few notes on this:

  • Level 1.5, in its typical usage, only includes steps 1 and 4. Unless stated otherwise, a science publication mentioning level 1.5 AIA data does not include steps 2, 3, 5 and 6.

  • The PSF functions are defined on the level 1 pixel grid so PSF deconvolution MUST be done on the level 1 data products (i.e. before image registration). This is described in the PSF gallery example Deconvolving images with the instrument Point Spread Function (PSF).

  • The pointing update should be done prior to image registration as the updated keywords, namely CRPIX1 and CRPIX2, are used in the image registration step. More details can be found in this gallery example Updating pointing and observer keywords in the FITS header.

  • The exposure time normalization and degradation correction (aiapy.calibrate.correct_degradation) operations are just scalar multiplication and are thus linear such that their ordering is inconsequential.

  • Exposure time normalization can be performed by simply dividing a map by the exposure time property, my_map / my_map.exposure_time.