Skip to content
Snippets Groups Projects
Forked from Collocation / intercal
40 commits behind, 95 commits ahead of the upstream repository.
Greg Quinn's avatar
Greg Quinn authored
ff7ed11a
This document is meant to be a short description of the inter-calibration
code as of 28 Feb 2011. This documentation probably should find a more
permanent home somehwere more visible someday.

Thus far, there are 3 different radiance comparison use cases for the
code in here:
 1. Pixel-by-pixel comparisons between Aqua AIRS and Aqua MODIS
 2. SNO-based AIRS / Terra MODIS inter-cal
 3. SNO-based IASI / MODIS (Aqua or Terra) inter-cal
In the SNO-based cases, we take a single radiance average for each
SNO using pixels that are filtered using a distance and sensor zenith
angle threshold.

For any of the above use cases the end product includes comparable BTs
for MODIS and AIRS (or IASI) that are separated by MODIS band.

On the MODIS side, all we need to do is average radiances. In case (1)
we average all MODIS observations within each AIRS FOV while in cases
(2) and (3) we average all MODIS observations near the SNO point.

On the hyperspectral side, we must use each MODIS band's spectral
response function to "convolve" the AIRS or IASI observations so
they are comparable to the MODIS bands. (For AIRS, there is an
additional needed step called "convolution corrections", needed
to deal with AIRS's spectral gaps,  which is not yet implemented
or applied in this code. Dave Tobin developed the corrections in
MATLAB.) For the SNO cases (2) and (3) multiple AIRS or IASI
observations are averaged to give a single value for the whole SNO.

The inter-cal code is structured as a series of scripts. Here's how
they can be used:

(1) Aqua AIRS-MODIS
-------------------
- airs2modis_pre.py: Takes an AIRS channel properties file and MODIS
  SRF file and produces an intermediate "pre" file that contains
  weights that will be applied to AIRS data
- airs2modis.py: Takes a "pre" file and an AIRS granule and applies
  the per-MODIS-band convolutions. (I call the output an "A2M" file
  since it has AIRS radiances in terms of MODIS.)
- modis2airs.py: Takes an AIRS granule and the MODIS granules that
  overlap it. Runs the AIRS-MODIS per-pixel collocation binary (part
  of the collocation package). Averages MODIS radiances on a
  per-AIRS-pixel basis and produces a single output granule that
  corresponds to the AIRS granule. (I call the output a "M2A" file).

(2) AIRS-MODIS or (3) IASI-MODIS using SNOs
-------------------------------------------
- {airs,iasi}2modis_pre.py: Same as in case (1). For iasi2modis_pre.py
  the inputs are any IASI L1C file and a MODIS SRF file.
- {airs,iasi}2modis_sno.py: Takes a "pre" file and a list of AIRS or
  IASI granules. Applies the convolutions according to the "pre" file
  and also averages observations that meet the distance and angle
  requirements (which are currently given as constants in the code).
- modis_sno.py: Takes a list of MODIS granules and averages observations
  that meet the distance and angle requirements.