Weighting Function project



  1. Implement a radiative transfer code for computing emission weighting functions and top-of-the-atmosphere microwave brightness temperatures for an arbitrary temperature/humidity profile and arbitrary microwave frequency.
  2. Perform numerical experiments designed to give insight into the role of various environmental variables, as well as viewing angle, on the weighting functions and brightness temperatures observed by satellite microwave sounders.


  1. Writeup using the LaTeX AMS preprint template.
  2. Printout of complete model source code (python).   Use small (e.g., 8 pt) fixed-width font (e.g., Courier), double columns, if possible, and be sure to comment liberally!

Getting started

Download the following items:


  1. Verify that you can run the sample script and generate a radiosonde sounding plot without error.
  2. I strongly recommend that you work through the existing code IN DETAIL, as this is an excellent way to learn how to do basic things in python.
  3. Add your own code to the python script to compute satellite-observed microwave brightness temperatures and/or weighting functions (see below) for a specific list or range of frequencies, using the procedure I outlined in class.
  4. Test case:  For a surface emissivity of \(\varepsilon=0.5\), a surface (ground) temperature of 300 K, and \(\mu = 0.5\),  verify that you are able to reproduce the weighting function plot  you downloaded above AND also reproduce the following results to within 0.2 K:
    Successfully opened file  91408_2011_07_19_12.txt
    93  levels in raw input sounding
    269  levels in interpolated sounding
    268  layers in model atmosphere
    Total precipitable water =  57.7460405625  kg/m^2
    Freq.      TB
    50.3000    260.0
    52.8000    261.7
    53.7110    243.1
    54.4000    228.1
    54.9400    216.3
    55.5000    207.7
    57.2900    206.2
    57.5070    213.9
  5. Proceed with the experiments described in the instructions to follow.
  6. Write up your results using the AMS LaTeX preprint template (see here).


The python program I provided takes care of the problem of reading a raw sounding, interpolating the sounding to a finer set of levels, and computing the physical properties of the atmospheric layers bounded by those levels.   Your task will be add the necessary code to compute the radiative properties of the layers at a prescribed frequency and, from those properties, compute and plot both the emission weighting function at selected frequencies and the spectrum of brightness temperature as seen by a satellite microwave radiometer viewing the atmosphere from above.

The trick to doing the radiative transfer is to recognize that each discrete layer can be approximated  as an isothermal slab with an emissivity that is equal to one minus the transmittance.  The brightness temperature emerging from each slab (top and bottom) is computed from the those properties.  The portion of that brightness temperature that contributed to what is seen from space is determined by the transmittance of the intervening atmosphere and, where applicable, the reflectivity of the surface (we will take the surface to be a specular reflector).

The weight of a single layer is the value of everything that multiplies the mean temperature of the layer when determining the brightness temperature seen by the satellite.  In other words, if you change the mean temperature of the layer by one degree, by what fraction of a degree will the observed brightness temperature change?

The above weight is non-dimensional. And it will be larger for geometrically thick layers than for thin layers, all other factors being equal.  
If one normalizes by dividing each layer weight by each layer thickness \(\Delta Z\), then one has the weighting function \( W(z)\), with dimensions of inverse length.

Note that when the surface is reflective, then both downward and upward emission from a layer may contribute to that layer’s weight.



You will use two soundings obtained from the University of Wyoming site, one from the deep tropics and one from a high latitude location:

  • SBBV Boa Vista, Brazil, at 12Z 01 Mar 2012
  • YYQ Churchill, Canada, at 12Z 01 Mar 2012

Choose “Text: List”  as the type of plot.  When saving, save to a file name of your choice, but be sure to save as “text file” not as “web page” or HTML.


For all experiments,

  • Take the surface skin temperature \(T_s\) to be the same as the temperature of the lowest atmospheric level \(T_0\) in your sounding.
  • Take the surface emissivity to be 1.0 except where instructed otherwise.
  • Assume nadir viewing (\(\theta = 0)\) except where instructed otherwise.
  • When asked to computing weighting functions for AMSU-A channels, use the following frequencies:
    Channel Freq. (GHz)
    3 50.3000
    4 52.8000
    5 53.7110
    6 54.4000
    7 54.9400
    8 55.5000
    9 57.2900
    10 57.5070
  • When asked to computing weighting functions for AMSU-B channels, use the following frequencies:
    Channel Freq. (GHz)
    16 89.00
    17 150.0
    18 184.31
    19 186.31
    20 190.31


  1.  Compute and plot the weighting functions for channels 3-10 for both soundings (same plot, use colors and/or dashes to distinguish between soundings).  How do the weighting functions differ between the two cases?
  2. Do the same for channels 18-20.
  3. Compute and plot (on the same plot) the complete spectra of microwave brightness temperature for the two soundings — 0.1 to 300 GHz at intervals of 0.1 GHz.   Describe the differences in results.   Attribute differences to (a) differences in the surface temperature, (b) differences in the atmospheric temperature profile, and (c) differences in the atmospheric humidity profile.
  4. For just the tropical sounding, plot the spectra for two cases:  emissivity equal to 1  and emissivity equal to 0.5.  What do your results tell you about the ranges of frequencies for which the atmosphere is opaque?
  5. Repeat the above for the polar sounding and describe what changes relative to the previous results.
  6. Again, plot spectra for the tropical sounding, this time for two nadir angles \(\theta\):  0 degrees and 55 degrees.  Discuss the resulting differences.