AIRS Quality Screening
Wed, Sep 6, 2017Locations
L1b RTP processing:
** /asl/packages/rtp_prod2/ **
RTP subset statistics:
** /asl/matlib/airs/find_good_airs_chans.m **
L1C processing:
** /home/chepplew/projects/airs/scaf/qa_flags_l1b_l1c.m **
Overview
AIRS L1B
AIRS L1B data are supplied with a calibration flag field “calflag”:
- Bit field, by channel, for the current scanline.
- Zero means the channel was well calibrated, for this scanline.
- Bit 7 (MSB): scene over/underflow;
- Bit 6: (value 64) anomaly in offset calculation;
- Bit 5: (value 32) anomaly in gain calculation;
- Bit 4: (value 16) pop detected;
- Bit 3: (value 8) DCR Occurred;
- Bit 2: (value 4) Moon in View;
- Bit 1: (value 2) telemetry out of limit condition;
- Bit 0: (LSB, value 1) cold scene noise
The RTP processing processes the Calflag through one of Scott’s routines: calnum_to_data() to produce a couple of flag arrays: ical & nedt. Count itself starts as an array of ones sized nchans x nobs and elements are flipped to zero if any of the following are true: radiance is bad (robs == -9999), ical is other than 0 or, nedt > 1. what gets reported in stats is then a sum by channel of the count array. Thus, it is a count of obs that satisfied cal criteria for each spectral channel.
For analysis such as stability or trending channels are eliminated depending upon the frequency that channel ‘count’ value is retruend as zero. Currently the channel is accepted if it’s count value is 1 at least 90% of the time over the mission life. There are variations on this depending upon the a/b state for the channel.
AIRS L1C
The AIRS L1C are supplied with two status flag fields ‘L1cProc’ and ‘L1cSynthReason’ describing if a L1B channel was changed and if so how it was changed. Additionaly gap channels are filled.
L1C L1cProc
- Bit field, by channel, for the current spectrum.
- Zero means the channel was unchanged in Level-1C.;
- Bit 7 (MSB, value 128): This is a synthesized fill channel where the AIRS instrument does not have a detector;
- Bit 6: (value 64) Cleaned. See L1cCleanReason for the cause;
- Bit 5: (value 32) Shifted frequency (not used in release 6.0);
- Bit 4: (value 16) radiometric correction applied (not used in release 6.0);
- Bit 3: (value 8) unused/reserved (value 0);
- Bit 2: (value 4) unused/reserved (value 0);
- Bit 1: (value 2) unused/reserved (value 0);
- Bit 0: (LSB, value 1) Output value is a dummy/filler value because data is missing or otherwise could not be processed.
L1cSynthReason
- 0: value is preserved from Level-1B;
- 1: Filled because this channel falls in a gap between AIRS instrument modules;
- 2: Cleaned because this channel is known to be of low quality;
- 3: Cleaned because of bad (-9999.0) Level-1B radiance value;
- 4: Cleaned because of high Level-1B NeN noise measurement;
- 5: Cleaned because Level-1B reported a zero or negative value in the NeN noise measurement indicating that the channel is in too poor a state for noise level to be measured effectively;
- 6: Cleaned because the telemetry, gain, offset, or pop flag bits were set in Level-1B CalFlag (not used);
- 7: Cleaned because Level-1B radiance is unphysically hot;
- 8: Cleaned because Level-1B radiance is unphysically cold;
- 9: Cleaned because Level-1B radiance is hotter than expected based on the radiances of correlated channels;
- 10: Cleaned because Level-1B radiance is colder than expected based on the radiances of correlated channels;
- 11: Cleaned because Level-1B radiance is significantly increased by scene spatial inhomgeneity;
- 12: Cleaned because Level-1B radiance is significantly decreased by scene spatial inhomgeneity;
- 100: Cleaned by runtime user command (Test mode only)
L1B Method
< LLS >
L1C Method
For sensor stability and climate trending and anomaly work only ‘good’ AIRS channels are used. The L1C data provides the means to permit AIRS to be converted to CrIS spectral response and includes (or will do) the spectral drift correction and Doppler effect.
There are at least three approaches to selecting ‘good’ channels from the L1C data, such as (i) carrying through the calflag data and aligning with the L1C channels, or (ii) using the L1C report flags to screen out channels that have been corrected or filled, or (iii) using an anlysis of the L1B channel observations before and after being modified by the L1C processor.
Sample Results
By way of example, the AIRIBRAD and AIRICRAD granules for 2016d001 were examined. The L1b calflag and L1c processing flags for a ‘good’ channel are shown in figure 1. For most of the day the calflag, and L1cProc are zero, meaning no errors and no changes respectively. But there are some L1b DCR errors and L1C changes the observation according to scene inhomogeneity.
Evaluating the PDF for this channel measurements (represented in terms of brightness temperature) for the L1b and L1c data and comparing the fractional ratio as shown in Figure 2. This shows that the relative changes are less than about 0.2% and one can trust this channel to be good for application studies.
On the otherhand for a channel known to be bad, the L1C makes more significant changes so as to ‘repair’ the measurements. The PDFs for the L1b and L1c and their fractional difference are shown in Figure 3. In this case the changes are up to about 8% for scenes at about 285 K. This can be used to reject this channel for further application.
This approach can be applied to a full day and all channels. A threshold value for the fractional change in the PDF of the observations can be chosen below which it can be safely assumed that the channel data are good enough for further application, such as stability and trending. Results for the peak PDF fractional difference for channels in the LW region are shown in Figure 4.
If a threshold of 0.5% is chosen then 388 channels from the band 650 to 1050 cm^{-1} are found to be relatively unchanged by the L1C processor. This ofcourse, relates to real channels only and not the gap-filled channels from the L1C reconstructions.
Conclusions and Recommendations.
Use this method to track and report L1C channel performance on a day-by-day basis.
Need to have a wrapper function to trawl through the granule files.