TOVS Path-P IDL Tools Tutorial
Introduction
NSIDC developed a number of IDL programs to browse and visualize TOVS Pathfinder Path-P Daily and Monthly Polar Gridded Atmospheric Parameters data files. The IDL tools described in this tutorial are available via HTTPS, along with the aforementioned data set, in the /tools/
directory. For instructions on installing these tools, see the Getting Started section below. Installing and running these IDL tools allows the user to perform the following functions (this Tutorial contains examples of each):
- Listing a table of contents, including dates, daily variables and ancillary data
- Displaying a color image of any variable and date
- Displaying a color animation of any variable and a range of dates
- Displaying a scatter plot of any two variables for a given date
- Displaying a time-series plot of any (column,row) coordinate for any variable and range of dates
- Displaying a table of general statistics (minimum, maximum, average, standard deviation) for any variable and range of dates
- Extracting, saving, and restoring a 3-dimensional array of data and its associated metadata for any variable and range of dates
- Conversion routines for (latitude,longitude) to/from (column,row) coordinates
The IDL tools were developed at NSIDC with the exception of colorbar.pro
, which is used for the legends on most of the color graphics displays. The tool colorbar.pro
is included here with the kind permission of its author, Dr. David Fanning.
Getting started
These IDL tools have been written for use with IDL 6.0 or later and have been tested on Unix and Windows machines.
The IDL tools require that the TOVS Pathfinder Path-P Daily and Monthly Polar Gridded Atmospheric Parameters data files to be organized in a specific way on your disk. All the data files must be placed under the same base directory. The ancillary data files (tpp_n100_9999999_ancil.hdf
for the Northern Hemisphere and tpp_s100_9999999_ancil.hdf
for the Southern Hemisphere) must be in the base directory, while the daily data files must be in yearly subdirectories under the base directory. The directory name of each yearly subdirectory must be the 4-digit year. The easiest way to ensure that your directory is set up properly is to download the daily data tar files to the base directory and untar them from there. The yearly subdirectories will be created automatically.
Example:
- Unix systems: This example assumes that the data files will be stored in your home directory under a subdirectory named tovs, for example, in
/usr/me/tovs
(Note: This location is arbitrary; the data files can be stored anywhere in your file system that there is sufficient space). In this example, the ancillary data files (tpp_n100_9999999_ancil.hdf
andtpp_s100_9999999_ancil.hdf
) would be placed in/usr/me/tovs
. The daily data files would be placed in the subdirectories/usr/me/tovs/1979
for 1979 data,/usr/me/tovs/1980
for 1980 data, and so on. One way of setting this up is to download the daily data tar files to/usr/me/tovs
and untar them from there to create the subdirectories automatically. Note: Files other than daily data files should not be put in the directories with the daily data files.
- Windows: This example assumes that the data files will be stored under the directory
b:\tovs
(Note: This location is arbitrary; the data files can be stored anywhere in your file system that there is sufficient space). In this example, the ancillary data files (tpp_n100_9999999_ancil.hdf
andtpp_s100_9999999_ancil.hdf
) would be placed inb:\tovs
. The daily data files would be placed in the subdirectoriesb:\tovs\1979
for 1979 data,b:\tovs\1980
for 1980 data, and so on. One way of setting up the correct directory structure is to download the tar files tob:\tovs
and untar them from there to create the subdirectories automatically. Note: Files other than daily data files should not be put in the directories with the daily data files.
To download and run the tools from the TOVS Path-P HTTPS site, please perform the following steps. Implementation of each step will vary depending on your operating system and shell.
- Download tools from the TOVS Path-P FTP site
- Add the path to the tools to your IDL path
- Set the startup file
- Pick a fixed-width font for your output log
- Restart IDL
- Begin using the tools with the tutorial
1. Download tools from the TOVS Path-P site
If downloading in bulk, follow the general NSIDC instructions for bulk download via HTTPS.
Note: You must download all the files to ensure that the tools will work properly.
2. Add the path to the tools to your IDL path
Note: Be sure to add the new path without eliminating any existing paths.
Unix systems: The exact syntax will depend on your shell. On systems using flavors of C shell, an example of the command would be the following:
setenv IDL_PATH /usr/me/tovs/IDL_tools\:$IDL_PATH
Note: The pathname /usr/me/tovs/IDL_tools
is only used as an example. If you get an error message similar to IDL_PATH: undefined variable
, you need to run the idl_setup
script. If you do not know how to run this script, consult your system administrator.
Windows: Start IDL and add the directory name where you put the tools to the list of default paths using the pull-down menus:
File->Preferences->Path
.
3. Set the startup file
There are two different version of the startup file. A Unix version called unixstrt.pro
and a Windows version called winstrt.pro
. When you use the startup file, IDL will compile each of the tool's programs in the correct order and will set the device visual so that the display colors behave correctly. The tools were built assuming that PseudoColor is used on Unix systems and decomposed color is turned off on Windows systems. Unexpected results will occur on the color displays if you run the tools using TrueColor. If you use a customized startup file, you may wish to merge the startup file provided with your own customizations.
- Unix systems: The exact syntax will depend on your shell. On systems using flavors of C shell, an example of the command would be the following:
setenv IDL_STARTUP /usr/me/tovs/IDL_tools/unixstrt.pro
Note: The pathname /usr/me/tovs/IDL_tools
is only used as an example.
- Windows: Start IDL and change the startup file to the full path name on your disk using the pull-down menus:
File->Preferences->Startup
. For example, if you put the tools inb:\tovs\IDL_tools
, then you would enterb:\tovs\IDL_tools\winstrt.pro
.
4. Pick a fixed-width font for your output log
Some of the tools display text output in the IDL window. The output will be easier to read if you are using a fixed-width font such as Courier or Courier New.
- Unix systems: This will depend on the window manager you are using. One way for users with
xterm
to do this is to add the following line to your.Xdefaults
file:
xterm*font: -adobe-courier-*-o-*-*-20-*-*-*-*-*-*-*
- Windows: Start IDL and change the font for the output log to Courier using the pull-down menus:
File->Preferences->Fonts
. Select Output Log and then Courier font.
5. Restart IDL
For these changes to take affect, you must restart IDL. After restarting, your display should look similar to the following:
IDL Version 6.x. Research Systems, Inc.
Installation number: xxxx.
Licensed for use by: your company/institution
For basic information, enter IDLInfo
at the IDL>
prompt. It should print the following:
% Compiled module: COLORBAR.
% Compiled module: BLANK_LEGEND.
% Compiled module: MAKE_LEGEND.
% Compiled module: PAINT_LEGEND.
% Compiled module: SNOWICE_LEGEND.
% Compiled module: OCEAN_LEGEND.
% Compiled module: SSMI_CONVERT.
% Compiled module: SSMI_INVERSE.
% Compiled module: EASE_CONVERT.
% Compiled module: EASE_INVERSE.
% Compiled module: PPPU_ADD_SDS.
% Compiled module: PPPU_FILES.
% Compiled module: PPPU_GET_SDS_DESCRIPTIONS.
% Compiled module: PPPU_IS_ANCILLARY_SDS.
% Compiled module: PPPU_YYYYDOY_TO_JULDAY.
% Compiled module: PPP_READ.
% Compiled module: PPP_TOC.
% Compiled module: PPP_EXTRACT.
% Compiled module: PPP_STATS.
% Compiled module: PPP_PLATFORM.
% Compiled module: PPP_PLOT.
% Compiled module: PPP_PLOT_XPARAMS.
% Compiled module: PPP_COMPARE.
% Compiled module: PPP_SHOW.
% Compiled module: PPP_ANIMATE.
% Compiled module: PPP_SAVE.
% Compiled module: PPP_RESTORE.
% Compiled module: PLAY_GIF.
% Compiled module: PPP_PLATFORM
The Polar Pathfinder P-cube/TOVS IDL access routines are now installed. Please refer to index.html in the HTML documentation, for more information about these tools, including extended help documentation.
Select Platform:
Enter 1 for P-cube
Enter 2 for TOVS Northern Hemisphere Path-P Daily
Enter 3 for TOVS Northern Hemisphere Path-P Monthly
Enter 4 for TOVS Southern Hemisphere Path-P Daily
:
The prompt at the end of the installation requires you to select the data you want to visualize. For this tutorial and data set, you will only be concerned with modes 2, 3, and 4 (P-cube is a different data set not discussed in this tutorial). Note: You can use the procedure ppp_platform
at any time to switch data sets.
If you see compilation errors during startup, the first thing to check is if you have overwritten your current IDL_PATH (instead of appending the IDL tools directory to your existing path, thereby causing IDL to lose track of standard IDL functions). The way to check this is to print the value of IDL_PATH by printing the system variable !path
and to confirm that the output looks similar to the following:
IDL> print, !path
/usr/me/tovs/IDL_tools:+/usr/local/rsi/idl5.1/idl_5.1/lib:+/usr/local/rsi/idl5.1/idl_5.1/examples
And not like this:
IDL> print, !path
/usr/me/tovs/IDL_tools
If you did overwrite your IDL_PATH, you must start a new window to get the original path back before re-executing the setenv commands above.
6. Begin using the tools with the tutorial.
Please refer to the Extended Help documentation and the Tutorial for examples and suggestions on how to run the tools.
Tutorial
If you have not already set up your copy of IDL to run the TOVS Path-P IDL tools, please follow the directions in the Getting Started section above before attempting the tutorial.
This tutorial assumes that you are familiar with the IDL command line and array and structure terminology. The first step you need to take is to set the working directory to the root or base data directory. To do this, use the IDL cd procedure by typing the following at the IDL command prompt:
IDL> cd, 'mydir/tovs'
Where mydir
is the full or relative pathname of the base directory where your TOVS Path-P data resides.
This tutorial is divided into four general categories of routines. We recommend that the user proceed chronologically as follows:
- Displaying general information and statistics about the data files
- Color displays
- Plots
- Extracting, saving, and retrieving 3-D time-series
Tutorial 1: Displaying general information and statistics about the data files
This section of the tutorial explains how to extract a table of contents for the TOVS Path-P files and explains how to extract a table of statistics for a specific parameter and range of dates. You will learn how to use the following:
PPP_TOC
- Displays a table of contents of TOVS Path-P filesPPP_STATS
- Displays statistics for one parameter and range of dates
PPP_TOC
- Displaying a table of contents
The first step in browsing the TOVS Path-P data is to display a table of contents using the IDL procedure, PPP_TOC
. This procedure has two required arguments:
sds_desc
: Returns an array of structures that contain metadata pertaining to each HDF Scientific Data Set (SDS) included in the data. Metadata will include the SDS name, a longer descriptive label, the units, and the fill value used for this SDS.dates
: Returns an array of dates, one for each daily file included in your TOVS Path-P data directory.
PPP_TOC
will traverse the current directory structure, looking for all TOVS Path-P files contained there and will display an informational message that summarizes what it has found. The list of parameter names, returned to you in the array sds_desc.name
, is the list of strings that will be considered valid input values to all other routines that accept an argument or keyword called SDS_NAME
. The list of dates, returned to you in the dates
array, can be used (or subsetted for a particular range of dates) in all other routines that accept an argument called DATES
.
Note: PPP_TOC
splits the parameter information into two groups: those parameters that change over time and are included in each daily file and those parameters that are static and are included only once in the ancillary data file.
Please refer to the Extended Help documentation for details on the other keywords to PPP_TOC
.
PPP_STATS
- Displaying statistics for one parameter and range of dates
Now that you know which parameters are included in the TOVS Path-P files, you may want to use PPP_STATS
to extract some statistics for a given parameter and range of dates. PPP_STATS
has one required argument and a number of keywords for flexibility. The required argument is sds_name
, which is a string that you select from the parameter listing you just displayed with PPP_TOC
.
PPP_STATS
also accepts keywords for a date range (START_DATE
and END_DATE
) or an array of specific dates (DATES
). Any dates entered as keywords in this way can be either integers or strings of the form yyyyddd (4-digit year and 3-digit day of year). Other functions that behave similarly are PPP_ANIMATE
, PPP_EXTRACT
, and PPP_PLOT
, which will be covered later in another section of the tutorial. These keywords are not required arguments, because PPP_STATS
can also be used to display statistics for the ancillary parameters which are static data that have no associated dates.
Tutorial 2: Color displays of SDS data from TOVS Path-P files
This section of the tutorial explains how to display a color image of a specific parameter and date and explains how to display a color animation of a specific parameter for a range of dates. You will learn how to use the following IDL procedures:
PPP_SHOW
- Displays a color image of one parameter for a given datePPP_ANIMATE
- Displays an animated series of data for a range of dates
PPP_SHOW
- Displaying data for one parameter on a given date
To display a color image of a specific parameter for a given date with map and graticule overlays use PPP_SHOW
, which is similar to PPP_STATS
in that it only has one required argument, sds_name
, one of the strings that you select from the parameter listing from PPP_TOC
. You can specify the date of the file to read by using the DATE
keyword (either a string or integer of the form yyyyddd). Once again, the DATE
keyword is not required because you might wish to display one of the static, ancillary parameters.
PPP_SHOW
accepts a number of other keywords that allow you to set the displayed label or legend title, force a new window to be opened, or to return the actual data array or its associated metadata in named variables. Please refer to the Extended Help documentation for details on the other keywords to PPP_SHOW
.
PPP_ANIMATE
- Displaying an animated series of data for a range of dates
Now that you are familiar with the way temperature data can be displayed for a single day, you can use PPP_ANIMATE
to extract a 3-D time-series of a given parameter and a range of dates. Like PPP_STATS
and PPP_SHOW
, PPP_ANIMATE
has sds_name
as one required argument and a number of keywords for flexibility.
Like PPP_STATS
, PPP_ANIMATE
accepts keywords for a date range (START_DATE
and END_DATE
) or an array of dates (DATES
). The defaults are the beginning and end of all TOVS Path-P data found under the current directory, however, since this routine is very memory intensive, it is recommended that you limit the dates that you animate according to your system's memory. For example, a movie of only 100 days would require 670 columns x 670 rows x 100 days which is almost 45 Mb of memory. Since each user's system is different, there are no safeguards built into PPP_ANIMATE
to limit the number of dates you may include; so use this routine with caution.
Tutorial 3: X-Y plots of SDS data in TOVS Path-P files
This section of the tutorial explains how to display a time-series plot of the data value for one pixel (column,row) of a specific sds_name, how to convert between (column,row) and (latitude,longitude) coordinates, and how to display a scatter plot of two sds_names for a given date. You will learn how to use the following IDL routines:
EASE_CONVERT
- Converts from (lat,lon) to (column,row) coordinates.EASE_INVERSE
- Converts from (column,row) to (lat,lon) coordinates.PPP_PLOT
- Plots a time-series of SDS data from a given pixel.PPP_COMPARE
- Makes a scatter plot of two SDS arrays for a given date.
EASE_CONVERT
- Converting (lat,lon) to (col,row) coordinates and
EASE_INVERSE
- Converting (col,row) to (lat,lon) coordinates
The IDL tools include coordinate conversion routines for converting between (latitude,longitude) and (column,row) coordinates. Both routines, EASE_CONVERT
and EASE_INVERSE
, are functions requiring five input arguments. The function result will be 0 for a successful return or -1 in the event of an error such as an unknown grid name or if the input coordinates are not on the input grid. The first argument is always the grid name.
Please refer to the Extended Help documentation for complete details on EASE_CONVERT
and EASE_INVERSE
.
PPP_PLOT
- Plotting a time-series of SDS data from a given pixel
Now that you know how to determine the particular pixel coordinates for a given (latitude,longitude), you can use PPP_PLOT
to extract data values for that pixel and display a time-series plot for a range of dates. PPP_PLOT
has three required arguments: sds_name and the column and row coordinates to extract. It also accepts a number of specific keywords and makes use of IDL's keyword inheritance capability, by accepting and passing along any keywords that are valid for IDL's PLOT
procedure.
Like PPP_STATS
and PPP_ANIMATE
, PPP_PLOT
accepts keywords for a date range (START_DATE
and END_DATE
) or an array of dates (DATES
). The defaults are the beginning and end of all data found under the current directory. Please refer to the Extended Help documentation for details on the other keywords to PPP_PLOT
.
PPP_COMPARE
- Making a scatter plot of two SDS arrays for a given date
Another plot display is the scatter plot produced by PPP_COMPARE. PPP_COMPARE has three required arguments: the sds_name to plot on the X-axis, the sds_name to plot on the Y-axis, and the date. Like PPP_PLOT, it makes use of IDL's keyword inheritance capability by accepting and passing along any keywords that are valid for IDL's PLOT procedure. It also accepts the CURSOR
keyword for interactive mouse behavior.
You can use any keywords to PPP_COMPARE
that would normally be accepted by PLOT
to customize the plot being displayed, for example, you can shorten the strings used for XTITLE
or YTITLE
.
Please refer to the Extended Help documentation for details on the other keywords to PPP_COMPARE.
Tutorial 4: Extracting, saving, and restoring 3-D time-series
This section of the tutorial explains various methods for extracting 3-D time-series of data from the HDF files and explains how to save and restore these data for future analysis. You will learn how to use the following IDL routines:
PPP_EXTRACT
- Extracts a 3-D slice of data and associated metadata from the HDF files.PPP_SAVE
- Saves a 3-D slice and metadata to an external file, for analysis at a later time.PPP_RESTORE
- Restores a previously saved 3-D slice and metadata from an external file.
PPP_EXTRACT
- Extracting a 3-D slice of data and associated metadata from the HDF files
You can use PPP_EXTRACT
to read a 3-D slice of TOVS Path-P data for a given SDS and range of dates. PPP_EXTRACT
is a function with two required arguments: a named variable which will be returned with the extracted data and the sds_name
to extract. Like PPP_STATS
, PPP_ANIMATE
, and PPP_PLOT
, it accepts the DATES
keyword or a range of dates bounded by START_DATE
and END_DATE
. It also accepts keywords for two additional portions of metadata from the HDF files: LABELS
designates a named variable that will be returned with a string array of dates for each layer of the 3-D data and SDS_INFO
designates a named variable that will be returned with a structure containing the SDS metadata. Please refer to the Extended Help documentation for details on the other keywords to PPP_EXTRACT
.
PPP_SAVE
and PPP_RESTORE
- Saving and restoring a 3-D slice and metadata to/from an external file
You can use PPP_SAVE
and PPP_RESTORE
to write/restore the data and metadata from PPP_EXTRACT
to/from an external file for use in other IDL sessions. Both routines have four required arguments: the dataarray, the SDS_INFO
structure, a string array of date labels (one for each date layer in the data array), and the name of the external file. Please refer to the Extended Help documentation for details on using PPP_SAVE
and PPP_RESTORE
.
Extended help
The content for this page was created by the IDL library routine mk_html_help. For more information on this routine, refer to the IDL Online Help Navigator or type the following at the IDL command prompt:
IDL> ? mk_html_help
List of routines
COLORBAR
EASE_CONVERT
EASE_INVERSE
PLAY_GIF
PPPU_ADD_SDS
PPPU_FILES
PPPU_GET_SDS_DESCRIPTIONS
PPPU_IS_ANCILLARY_SDS
PPPU_YYYYDOY_TO_JULDAY
PPP_ANIMATE
PPP_COMPARE
PPP_EXTRACT
PPP_PLATFORM
PPP_PLOT
PPP_PLOT_XPARAMS
PPP_READ
PPP_RESTORE
PPP_SAVE
PPP_SHOW
PPP_STATS
PPP_TOC
SSMI_CONVERT
SSMI_INVERSE
Routine descriptions
COLORBAR
NAME: COLORBAR PURPOSE: The purpose of this routine is to add a color bar to the current graphics window. CATEGORY: Graphics, Widgets. CALLING SEQUENCE: COLORBAR INPUTS: None. KEYWORD PARAMETERS: BOTTOM: The lowest color index of the colors to be loaded in the bar. CHARSIZE: The character size of the color bar annotations. Default is 1.0. COLOR: The color index of the bar outline and characters. Default is ncolors - 1 + bottom. DIVISIONS: The number of divisions to divide the bar into. There will be (divisions + 1) annotations. The default is 2. FORMAT: The format of the bar annotations. Default is '(F6.2)'. MAX: The maximum data value for the bar annotation. Default is NCOLORS-1. MIN: The minimum data value for the bar annotation. Default is 0. NCOLORS: This is the number of colors in the color bar. POSITION: A four-element array of normalized coordinates in the same form as the POSITION keyword on a plot. Default is [0.88, 0.15, 0.95, 0.95] for a vertical bar and [0.15, 0.88, 0.95, 0.95] for a horizontal bar. PSCOLOR: This keyword is only applied if the output is being sent to a PostScript file. It indicates that the PostScript device is configured for color output. If this keyword is set, then the annotation is drawn in the color specified by the COLOR keyword. If the keyword is not set, the annotation is drawn in the color specified by the !P.COLOR system variable (usually this will be the color black). In general, this gives better looking output on non-color or gray-scale printers. If you are not specifically setting the annotation color (with the COLOR keyword), it will probably be better NOT to set this keyword either, even if you are outputting to a color PostScript printer. RIGHT: This puts the labels on the right-hand side of a vertical color bar. It applies only to vertical color bars. TITLE: This is title for the color bar. The default is to have no title. TOP: This puts the labels on top of the bar rather than under it. The keyword only applies if a horizontal color bar is rendered. VERTICAL: Setting this keyword give a vertical color bar. The default is a horizontal color bar. COMMON BLOCKS: None. SIDE EFFECTS: Color bar is drawn in the current graphics window. RESTRICTIONS: The number of colors available on the display device (not the PostScript device) is used unless the NCOLORS keyword is used. EXAMPLE: To display a horizontal color bar above a contour plot, type: LOADCT, 5, NCOLORS=100 CONTOUR, DIST(31,41), POSITION=[0.15, 0.15, 0.95, 0.75], $ C_COLORS=INDGEN(25)*4, NLEVELS=25 COLORBAR, NCOLORS=100 MODIFICATION HISTORY: Written by: David Fanning, 10 JUNE 96. 10/27/96: Added the ability to send output to PostScript. DWF 11/4/96: Substantially rewritten to go to screen or PostScript file without having to know much about the PostScript device or even what the current graphics device is. DWF 1/27/97: Added the RIGHT and TOP keywords. Also modified the way the TITLE keyword works. DWF 7/15/97: Fixed a problem some machines have with plots that have no valid data range in them. DWF
(See colorbar.pro
in your IDL TOVS Path-P tools directory.)
EASE_CONVERT
NAME: ease_convert PURPOSE: Use a spherical earth model to convert geographic coordinates to azimuthal equal-area or equal-area cylindrical grid coordinates for various EASE-Grids. CATEGORY: Grid coordinate conversion CALLING SEQUENCE: status = ease_convert ( grid, lat, lon, r, s) INPUTS: grid: projection name SSM/I Polar Pathfinder: [NSM][lh] (where l="low" res (25km), h="high" res (12.5km)) AVHRR Polar Pathfinder: [NS]a{1,5,25} (where 1=1.25 km res, 5=5 km res, 25=25 km res) TOVS-P Polar Pathfinder: NpathP (100km res) AARI sea ice: AARI (12.5 km res) lat, lon - geo. coords. (decimal degrees) OUTPUTS: r, s - column, row coordinates RESULT: status = 0 indicates normal successful completion -1 indicates error status (point not on grid, unknown projection) EXAMPLE: status = ease_convert ('Nl',90.,0.,col,row) status will be 0, and the returned col, row will be 360.0, 360.0
NOTES:
Please see All About EASE-Grid and Summary of NOAA/NASA Polar Pathfinder Grid Relationships.
(See easeconv.pro
n your IDL TOVS Path-P tools directory.)
EASE_INVERSE
NAME: ease_inverse PURPOSE: Use a spherical earth model to convert azimuthal equal-area or equal-area cylindrical grid coordinates to geographic coordinates for various EASE-Grids CATEGORY: Grid coordinate conversion CALLING SEQUENCE: status = ease_inverse ( grid, r, s, lat, lon) INPUTS: grid: projection name SSM/I Polar Pathfinder: [NSM][lh] (where l="low" res (25km), h="high" res (12.5km)) AVHRR Polar Pathfinder: [NS]a{1,5,25} (where 1=1.25 km res, 5=5 km res, 25=25 km res) TOVS-P Polar Pathfinder: NpathP (100km res) AARI sea ice: AARI (12.5 km res) r, s - column, row coordinates OUTPUTS: lat, lon - geo. coords. (decimal degrees) RESULT: status = 0 indicates normal successful completion -1 indicates error status (point not on grid) EXAMPLE: status = ease_inverse ('Nl',360.0, 360.0, lat, lon) status will be 0, and the returned lat, lon will be 90.0, 0.0
(See easeconv.pro
in your IDL TOVS Path-P tools directory.)
PLAY_GIF
NAME: play_gif PURPOSE: Play a gif animation using xinteranimate. CATEGORY: Graphics animation. CALLING SEQUENCE: PLAY_GIF, gif_filename INPUTS: gif_filename: the full pathname of the gif animation file. If gif_filename is not provided, then PICKFILE is called to allow the user to select a file interactively. KEYWORDS: GROUP: the widget group of caller. DIR: the initial directory in which to select; the directory selected from on return. FIRST: the first frame number of the animation to play. The default is 0. COUNT: the number of frames to play; the default is 50; 0 means play all the frames remaining in the file after FIRST. NOREMAP: don't remap palette even if !D.N_COLORS is less than 256. RESTRICTIONS: This procedure requires IDL 5 or higher because it uses the /MULTIPLE keyword to READ_GIF which wasn't introduced until IDL 5. SIDE EFFECTS: PICKFILE is called if no gif_filename is provided. If !D.N_COLORS is less than or equal to 256 and noremap is not set, then a dummy window is opened temporarily to set the "true" value of !D.N_COLORS, which is then copied to n_colors, and then the window is deleted. If !D.N_COLORS LT 256 and noremap is not set, then the palette is remapped to consist of !D.N_COLORS colors. XINTERANIMATE is called to display the animation. EXAMPLE: To display the first 50 frames of the gif animation file nor_14_bcktmp_animation.gif, type: PLAY_GIF, 'nor_14_bcktmp_animation.gif' To display 35 frames starting at frame number 100 of the gif animation file bar_14_albd_animation.gif without remapping of the palette in an 8-bit color environment, type: PLAY_GIF, 'bar_14_albd_animation.gif', FIRST=100, COUNT=35, $ /NOREMAP
(See playgif.pro
in your IDL TOVS Path-P tools directory.)
PPPU_ADD_SDS
NAME: PPPU_ADD_SDS PURPOSE: Adds a new SDS_INFO structure to the array of structures so far. CALLING SEQUENCE: pppu_add_sds, num_sds, sds_descriptions, name, label, unit, layer_num, fill_value, calibration_factor, uncalibrated_offset INPUTS: num_sds: the current number of SDS descriptions sds_descriptions: the array of SDS_INFO descriptions name: the string name of the new SDS label: the string label of the new SDS unit: the string unit of the new SDS layer_num: the integer layer number of the new SDS This is usually 0, but may be positive if/when the SDS is actually stored as a 3-D array in the HDF file fill_value: the SDS fill_value calibration_factor: the SDS calibration factor uncalibrated_offset: the SDS uncalibrated offset OUTPUTS: num_sds: the incremented number of SDS descriptions sds_descriptions: the array of SDS_INFO descriptions, with a new SDS_INFO structure appended to it
(See p3utils.pro
in your IDL TOVS Path-P tools directory.)
PPPU_FILES
NAME: pppu_files PURPOSE: Searches directories for a list of P-cube/TOVS files CATEGORY: P-cube/TOVS utilities CALLING SEQUENCE: list=pppu_files(directory) INPUTS: directory: base directory with P-cube/TOVS files. This directory and 4-digit year subdirectories will be searched for files. GLOBAL VARIABLES: platform_index: 1 - use P-cube data 2 - use TOVS Northern Hemisphere Path-P Daily data 3 - use TOVS Northern Hemisphere Path-P Monthly data 4 - use TOVS Southern Hemisphere Path-P Daily data KEYWORDS: ANCILLARY: set this keyword to return the name of the ancillary data file COUNT: number of files found. DATES: list of dates to find daily files for. Default is all files in year subdirectories. (ignored if ANCILLARY is set) END_DATE: if entered, the date to stop extracting. Default is end of all P-cube/TOVS files found. (ignored if ANCILLARY is set) LABELS: string array of dates of the files found and extracted from START_DATE: if entered, the date to start extracting. Default is beginning of all P-cube/TOVS files found. (ignored if ANCILLARY is set) RESULT: A sorted list of files found, or -1 if none were found. EXAMPLE: list=pppu_files('.') Returns a sorted list of all P-cube/TOVS files found in 4-digit year subdirectories of ./ NOTES: P-cube/TOVS files are HDF files with the following characteristics: 1) All files are assumed to be in (4-digit) year subdirectories of the same base directory 2) File naming convention is dir/yyyy/ppp_n100_yyyyddd_daily.v0 for P-cube files and dir/yyyy/tpp_Nss_h100_yyyyddd_daily[monthly].vx for TOVS files. 3) The date in the filename is assumed to be correct 4) There is exactly 1 file per date 5) All files are assumed to contain the same HDF structure. It is assumed that they all contain the same, fixed set of SDSs (Scientific Data Sets) 6) A single ancillary data file will be assumed to be in dir.
(See p3utils.pro
in your IDL TOVS Path-P tools directory.)
PPPU_GET_SDS_DESCRIPTIONS
NAME: PPPU_GET_SDS_DESCRIPTIONS PURPOSE: Retrieve information for all SDS's in this file CALLING SEQUENCE: desc = pppu_get_sds_descriptions(filename) INPUTS: filename: filename string from which the SDS descriptions will be retrieved GLOBAL VARIABLES: platform_index: 1 - use P-cube data 2 - use TOVS Northern Hemisphere Path-P Daily data 3 - use TOVS Northern Hemisphere Path-P Monthly data 4 - use TOVS Southern Hemisphere Path-P Daily data KEYWORDS: COUNT: the number of SDS_INFO records returned RESULT: Returns an array of SDS_INFO records, one for each SDS in this file, or -1 if no records were found.
(See p3utils.pro
in your IDL TOVS Path-P tools directory.)
PPPU_IS_ANCILLARY_SDS
NAME: PPPU_IS_ANCILLARY_SDS PURPOSE: Determine whether sds_name is ancillary data CALLING SEQUENCE: status=pppu_is_ancillary_sds(sds_name) INPUTS: sds_name: name of sds to examine RESULT: 1 if sds_name is ancillary data, 0 otherwise
(See p3utils.pro
in your IDL TOVS Path-P tools directory.)
PPPU_YYYYDOY_TO_JULDAY
NAME: PPPU_YYYYDOY_TO_JULDAY PURPOSE: Convert year, day of year string to Julian day CALLING SEQUENCE: status=pppu_yyyydoy_to_julday(yyyydoy) INPUTS: yyyydoy: string date RESULT: the Julian day corresponding to yyyydoy or -1 in case of error
(See p3utils.pro
in your IDL TOVS Path-P tools directory.)
PPP_ANIMATE
NAME: ppp_animate PURPOSE: Extracts and animates a time-series array of SDS data of a given type and list of dates (see NOTES for warning about memory). CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: ppp_animate, sds_name INPUTS: sds_name: the string SDS name for this data, (will be used to determine display range, colors, etc) OUTPUTS: labels: string array of labels, 1 for each frame of data KEYWORDS: DATA: a named variable returned with the requested data array DATES: integer or string array of dates [yyyydoy,yyyydoy,...] Default is dates of 1st 10 P-cube/TOVS files found. DIRECTORY: base directory with P-cube/TOVS files. 4-digit year subdirectories will be searched for P-cube/TOVS files. Default is ./ END_DATE: if entered, the date to stop extracting. Default is end of all P-cube/TOVS files found. GRAT_COLOR: set this keyword to a non-zero color index to display the graticule overlay (Default is no overlay) LABELS: string array of dates of the files found and extracted from, used for label in lower left corner of each displayed frame. MAP_COLOR: set this keyword to a non-zero color index to display the map overlay (Default is no overlay) MAX_VALUE: the highest value to display. Default is maximum non-fill_value MIN_VALUE: the lowest value to display. Default is minimum non-fill_value SDS_INFO: a named variable returned with metadata for the sds_name, used to determine unit and sds_label to write on the lower right corner of the display, and fill_value. START_DATE: if entered, the date to start extracting. Default is beginning of all P-cube/TOVS files found. VERBOSE: set for verbose output summary EXAMPLE: ppp_animate, 'a_surface_albedo', START_DATE=1988001, END_DATE=1988020,DATA=data,SDS_INFO=info,LABELS=lab 20 days of surface albedo, will be extracted and animated via xinteranimate NOTES: Warning: this routine is extremely memory-intensive. Calling it with a large number of dates may result in memory errors.
(See p3animat.pro
in your IDL TOVS Path-P tools directory.)
PPP_COMPARE
NAME: ppp_compare PURPOSE: Displays a scatter plot of (scaled) data for two P-cube/TOVS SDS's for a given date CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: ppp_compare, x_sds_name, y_sds_name, date INPUTS: x_sds_name: the string SDS name that will be extracted and displayed on the X-axis; the list of valid SDS names is returned as the name element of the sds_description structure from ppp_toc y_sds_name: the string SDS name that will be extracted and displayed on the Y-axis; the list of valid SDS names is returned as the name element of the sds_description structure from ppp_toc date: scalar integer (yyyydoy) or string ('yyyydoy') date to extract and display KEYWORDS: CURSOR: set this keyword for interactive cursor behavior in the display window DIRECTORY: base directory with P-cube/TOVS files. 4-digit year subdirectories will be searched for P-cube/TOVS files. Default is ./ MISSING: set to display "missing" (aka "fill" values) Default is only to display values where both are non-missing. NEW_WINDOW: set this keyword to open a new window for display VERBOSE: set for verbose output summary _EXTRA=extra_keywords: This routine is essentially a wrapper to IDL's plot routine, so any extra keywords entered will be passed to the plot command RESULT: A scatter plot of the results EXAMPLE: ppp_compare, 't_temperature-700','t_temperature-850', 1988020, title='TOVS temperature 700 vs 850 mb',/cursor A scatter plot of values where both SDS's are non-missing values will be displayed in the current window. The mouse will be activated to return data values as it is dragged across the display plot
(See p3compar.pro
in your IDL TOVS Path-P tools directory.)
PPP_EXTRACT
NAME: ppp_extract PURPOSE: Extracts an array of SDS data of a given type and list of dates. CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: result = ppp_extract, data, sds_name INPUTS: sds_name: the string SDS name that is returned as the name element of the sds_description structure from ppp_toc OUTPUTS: data: the data array for this sds_name extracted from each file corresponding to dates KEYWORDS: DATES: integer or string array of dates [yyyydoy,yyyydoy,...] Default is dates of all P-cube/TOVS files found. DIRECTORY: base directory with P-cube/TOVS files. 4-digit year subdirectories will be searched for P-cube/TOVS files. Default is ./ END_DATE: if entered, the date to stop extracting. Default is end of all P-cube/TOVS files found. LABELS: string array of dates of the files found and extracted from RAW: set this keyword to retrieve raw stored data Default is to return scaled data SDS_INFO: a named structure with information about this SDS includes unit, SDS label, fill value, etc. START_DATE: if entered, the date to start extracting. Default is beginning of all P-cube/TOVS files found. VERBOSE: set for verbose output summary RESULT: This function returns 1 on success, or 0 in the event of an error EXAMPLE: result = ppp_extract( data,'a_surface_albedo', dates=[1988001,1988002],labels=labels) The returned data array will contain 3-D surface albedo (cols x rows x 2 days). The returned labels array will be a string array with the date of each layer found NOTES: Dates with no corresponding P-cube/TOVS files are reported and ignored.
(See p3extrct.pro
in your IDL TOVS Path-P tools directory.)
PPP_PLATFORM
NAME: ppp_platform PURPOSE: Allows user to select either P-cube or TOVS data. CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: ppp_platform INPUT: RETURN VALUE: 1 - use P-cube data 2 - use TOVS Northern Hemisphere Path-P Daily data 3 - use TOVS Northern Hemisphere Path-P Monthly data 4 - use TOVS Southern Hemisphere Path-P Daily data
(See p3pltfrm.pro
in your IDL TOVS Path-P tools directory.)
PPP_PLOT
NAME: ppp_plot PURPOSE: Displays a plot of data at a given pixel, for a given SDS and a set of dates CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: ppp_plot, sds_name, column, row INPUTS: sds_name: the string SDS name that will be extracted and sliced for display (valid SDS names are returned as the name element of the sds_description structure from ppp_toc) column,row: the data coordinates (0..66) to slice and display KEYWORDS: CURSOR: set this keyword for interactive cursor behavior in the display window DATES: integer or string array of dates [yyyydoy,yyyydoy,...] Default is dates of all P-cube/TOVS files found. DIRECTORY: base directory with P-cube/TOVS files. 4-digit year subdirectories will be searched for P-cube/TOVS files. Default is ./ END_DATE: if entered, the date to stop extracting. Default is end of all P-cube/TOVS files found. LABELS: string array returned with dates of the files found and extracted from, these will be used to determine x-axis coordinates MISSING: set to include dates with "missing" (aka "fill" values), treated as NaN (not-a-number) on the plot. Default is only to display non-missing values NEW_WINDOW: set this keyword to open a new window for display RAW: set this keyword to retrieve raw stored data Default is to get scaled data SLICE: name of a variable that will be returned with the data displayed on the y-axis START_DATE: if entered, the date to start extracting. Default is beginning of all P-cube/TOVS files found. VERBOSE: set for verbose output summary XTICKS: the number of x-axis tick intervals to draw Default is 4 intervals (5 tick values will be labelled) _EXTRA=extra_keywords: This routine is essentially a wrapper to IDL's plot routine, o any extra keywords entered will be passed to the plot command RESULT: Plot of the slice at the input column,row EXAMPLE: ppp_plot, 't_temperature-700',10,20,dates=indgen(20)+1988020 title='TOVS temperature 700 at pixel (10,20)',/cursor The slice of SDS data at column 10, row 20 from the 20 dates beginning January 20, 1988 will be extracted, and non-missing values will be plotted. The mouse will be activated to return data values as it is dragged across the display plot
(See p3plot.pro
in your IDL TOVS Path-P tools directory.)
PPP_PLOT_XPARAMS
NAME: ppp_plot_xparams PURPOSE: Use an array of string dates ['yyyydoy'] to set up plot parameter xvalues, xtickvalues and number of ticks CATEGORY: P-cube/TOVS display CALLING SEQUENCE: ppp_plot_xparams, strdates, xvals, xtickv, xticks INPUTS: strdates: string array with year, day of year strings ['yyyydoy'] for x-axis values xticks : the number of tick intervals to establish OUTPUTS: xvals: returned array with x values (julian dates) to plot xtickv : returned array with the tick values for xticks+1 labels EXAMPLE: dates = strcompress(string(indgen(10)+1988020),/rem) ppp_plot_xparams, dates, xvals, xtickv, xticks returned parameters can be used in a subsequent call to plot
(See p3plot.pro
in your IDL TOVS Path-P tools directory.)
PPP_READ
NAME: PPP_READ PURPOSE: Reads a 2-D array of data from a file CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: result = ppp_read( data, sds_name, filename ) INPUTS: sds_name: name of the SDS filename: file to read OUTPUTS: data: a 2-D array of sds_name data read from filename KEYWORDS: RAW: set this keyword to return raw (unscaled) data (default is to return scaled data) SDS_INFO: a named structure returned with information about this SDS includes unit, SDS label, fill value, etc. VERBOSE: set for verbose output RESULT: 1 on success, 0 otherwise EXAMPLE: filename = '/usr4/data/pcube/1988/ppp_n100_1988352_daily.v0.5.hdf' result = ppp_read(data,'a_surface_albedo', filename,SDS=info) The returned data array will contain scaled surface albedo data from the Pcube file for day 352 of 1988 The returned info structure will contain SDS-specific information for these data (name, label, units, fill_value, etc)
(See p3read.pro
in your IDL TOVS Path-P tools directory.)
PPP_RESTORE
NAME: ppp_restore PURPOSE: Restores an array of extracted SDS data and accompanying metadata CATEGORY: P-cube/TOVS data tools CALLING SEQUENCE: ppp_restore, data, labels, sds_info, filename INPUTS: filename: the filename to create and write to OUTPUTS: data: a 2- or 3-D data array labels: string array of labels for each layer of data; the number of labels will match the size of data's 3rd dimension (or be 1 if data is a single layer) sds_info: a named structure with information about this data, includes name, units, SDS label, fill value, etc. KEYWORDS: VERBOSE: set for verbose output summary EXAMPLE: status = ppp_extract (data,'a_surface_albedo',start_date=1988001, end_date=1988031,labels=labels,sds_info=info) if 1 eq status then ppp_save, data, labels, info, 'surf_albedo.dat',/verbose (in a later session:) ppp_restore, data, labels, info, 'surf_albedo.dat',/verbose The returned data, labels, and info variables will contain saved values from the earlier session
(See p3restor.pro
in your IDL TOVS Path-P tools directory.)
PPP_SAVE
NAME: ppp_save PURPOSE: Saves an array of extracted SDS data and accompanying metadata CATEGORY: P-cube/TOVS data tools CALLING SEQUENCE: ppp_save, data, labels, sds_info, filename INPUTS: data: the 2- or 3-D data array extracted via ppp_extract labels: string array of labels for each layer of data; the number of labels must match the size of data's 3rd dimension (or be 1 if data is a single layer) sds_info: a named structure with information about this SDS returned from sds_extract, includes unit, SDS label, fill value, etc. filename: the filename to create and write to KEYWORDS: VERBOSE: set for verbose output summary EXAMPLE: status = ppp_extract (data,'a_surface_albedo',start_date=1988001, end_date=1988031,labels=labels,sds_info=info) if 1 eq status then ppp_save, data, labels, info, 'surf_albedo.dat',/verbose The extracted data array and metadata will be saved to the file 'surf_albedo.dat', and can be restored via ppp_restore
(See p3save.pro
in your IDL TOVS Path-P tools directory.)
PPP_SHOW
NAME: ppp_show PURPOSE: Reads and displays a grid of P-cube/TOVS SDS data for a given date CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: ppp_show, sds_name INPUTS: sds_name: the string SDS name that is returned as the name element of the sds_description structure from ppp_toc OUTPUTS: KEYWORDS: CURSOR: set this keyword for interactive cursor behavior in the display window DATA: a named variable returned with the requested data layer DATE: integer or string date of daily file to read (yyyydoy or 'yyyydoy'). This keyword is ignored for ancillary sds_name's. Default is 1988001. DIRECTORY: base directory with P-cube/TOVS files. 4-digit year subdirectories will be searched for P-cube/TOVS files. Default is ./ GRAT_COLOR: set this keyword to a non-zero color index to display the graticule overlay (Default is no overlay) IMAGE: an 8-bit image of the displayed window LABEL: string to write to the lower left corner of the display Default is the date as mm-dd-yyyy LEGEND_TITLE: string to write as a legend title Default is the units from the file's sds_info MAP_COLOR: set this keyword to a non-zero color index to display the map overlay (Default is no overlay) MIN_VALUE,MAX_VALUE: the min/max data values to display (values in this range will be scaled linearly) Default is min/max of non-fill_value data. MULTIPLY: multiplication factor for resampled output. Default is 10. NEW_WINDOW: set this keyword to open a new window for display if NEW_WINDOW = -1 then do not display data' SDS_INFO: a named variable returne with metadata for the sds_name, will be used to determine unit and sds_label to write on the lower right corner of the display, and fill_value. SDS_LABEL: string to write to the lower right corner of the display Default is the sds label from the file's sds_info VERBOSE: set for verbose output summary RESULT: A window will be presented with the data scaled appropriately for the type of data. EXAMPLE: sds_name='a_surface_albedo' ppp_show, sds_name, DATE=1988020, DATA=data, IMAGE=image, $ sds_info=sds_info, map=196, grat=196,/cursor data will contain a 67x67 fltarr with AVHRR surface albedo values. sds_info will contain sds metadata for AVHRR surface albedo.
(See p3show.pro
in your IDL TOVS Path-P tools directory.)
PPP_STATS
NAME: ppp_stats PURPOSE: Prints summary statistics (min, max, fill_value, % missing, non-missing avg and standard deviation) for SDS data for a list of dates. CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: ppp_stats, sds_name INPUTS: sds_name: the string SDS name that is returned as the name element of the sds_description structure from ppp_toc KEYWORDS: DATES: integer or string array of dates [yyyydoy,yyyydoy,...] Default is dates of all P-cube/TOVS files found. This parameter is ignored for ancillary data SDSs. DIRECTORY: base directory with P-cube/TOVS files. 4-digit year subdirectories will be searched for P-cube/TOVS files. Default is ./ END_DATE: if entered, the date to stop extracting. Default is end of all P-cube/TOVS files found. This parameter is ignored for ancillary data SDSs. GLOBAL_STATS: an anonymous structure with global values of displayed statistics for all dates found LUN: file unit to write output to. Default is -1 (stdout) START_DATE: if entered, the date to start extracting. Default is beginning of all P-cube/TOVS files found. This parameter is ignored for ancillary data SDSs. EXAMPLE: ppp_stats, 'a_surface_albedo',dates=[1988001,1988002] Summary statistics for Jan. 1 and 2, 1988 AVHRR surface albedo will be printed. NOTES: Dates with no corresponding P-cube/TOVS files are reported and ignored.
(See p3stats.pro
in your IDL TOVS Path-P tools directory.)
PPP_TOC
NAME: ppp_toc PURPOSE: Prints a table of contents of data from P-cube or TOVS HDF files. "P-cube" was coined to refer to combined data from the three Polar Pathfinder data sets (Polar AVHRR, TOVS Path-P, and SSM/I). It is also a pun on the data structure, which is essentially a hypercube of gridded data with dimensions cols x rows x parameters x time. CATEGORY: HDF Interface to P-cube/TOVS data files CALLING SEQUENCE: ppp_toc, sds_descriptions, dates OUTPUTS: sds_descriptions: variable that is returned with an array of SDS_INFO structures, one for each SDS in these P-cube/TOVS files. dates: variable that is returned with a string array of the dates of the available data, as 4-digit year and day of year (yyyydoy) GLOBAL VARIABLES: platform_index: 1 - use P-cube data 2 - use TOVS Northern Hemisphere Path-P Daily data 3 - use TOVS Northern Hemisphere Path-P Monthly data 4 - use TOVS Southern Hemisphere Path-P Daily data KEYWORDS: DIRECTORY: base directory with P-cube/TOVS files. 4-digit year subdirectories will be searched for P-cube/TOVS files. Default is ./ VERBOSE: set for verbose output summary EXAMPLE: ppp_toc, SDS_DESC, sds_descriptions, DATES=dates, DIR='/CDROM/PCUBE/DATA/' The sds_descriptions and dates for files in '/CDROM/PCUBE/DATA/' year subdirectories will be returned. A summary will be displayed.
(See p3toc.pro
in your IDL TOVS Path-P tools directory.)
SSMI_CONVERT
NAME: ssmi_convert PURPOSE: Use a spherical earth model to convert geographic coordinates to azimuthal equal-area or equal-area cylindrical grid coordinates (for SSM/I EASE-Grids, 25 km, 12.5 km) CATEGORY: Grid coordinate conversion CALLING SEQUENCE: status = ssmi_convert ( grid, lat, lon, r, s) INPUTS: grid: projection name '[NSM][lh]' (where l="low" res (25km), h="high" res (12.5km) lat, lon - geo. coords. (decimal degrees) OUTPUTS: r, s - column, row coordinates RESULT: status = 0 indicates normal successful completion -1 indicates error status (point not on grid) EXAMPLE: status = ssmi_convert ('Nl',90.,0.,col,row) status will be 0, and the returned col, row will be 360.0, 360.0
(See easeconv.pro
in your IDL TOVS Path-P tools directory.)
SSMI_INVERSE
NAME: ssmi_inverse PURPOSE: Use a spherical earth model to convert azimuthal equal-area equal-area cylindrical grid coordinates to geographic coordinates (for SSM/I EASE-Grids, 25 km, 12.5 km) CATEGORY: Grid coordinate conversion CALLING SEQUENCE: status = ssmi_inverse ( grid, r, s, lat, lon) INPUTS: grid: projection name '[NSM][lh]' (where l="low" res (25km), h="high" res (12.5km) r, s - column, row coordinates OUTPUTS: lat, lon - geo. coords. (decimal degrees) RESULT: status = 0 indicates normal successful completion -1 indicates error status (point not on grid) EXAMPLE: status = ssmi_inverse ('Nl',360.0, 360.0, lat, lon) status will be 0, and the returned lat, lon will be 90.0, 0.0
(See easeconv.pro
in your IDL TOVS Path-P tools directory.)
IDL TOVS Path-P tools directory
TOVS Path-P data users will need to look in the directory where the IDL tools were installed from the NSIDC TOVS Path-P FTP site. If the tools are not already installed, see the Getting Started section of this tutorial for installation instructions.