WXP
User's Guide
system_resrcfile <<
system_parse
>> system_auto

Parsing Data and Header Files

Parse Lookup File

For most WXP program, they can find data files by use of the name convention tag.   For parsing, there is an additional method that simplifies the process.  When the parse program parses for a WMO header, it searches the parse lookup file "parse.lup" to cross reference headers to name convention tags.  This eliminates the need to specify the in_file file name tag.  The syntax of the file is:

   pattern      tag

The pattern can be a regular expression.  It returns the tag of the first match in the file.  That name convention is used to setup the filenames to search for the desired product.  Here is a sample parse lookup file:

   FO      mos_dat
   FT      term_dat
   W       sev_dat
   F       for_dat
   C       cli_dat
   S       sfc_dat
   U       upa_dat
   AC      sev_dat
   A       sum_dat   

In this case, all products whose WMO header starts with "W" will be searched for in the files with the tag "sev_dat". 

Text Data

When parsing data, most of the data is processed a line at a time. This means that searching for a particular product in a file can consume tremendous amounts of time. To simplify the process, there are header files that list the product headers in a separate file along with byte offsets into the actual ingested data file. This file then becomes a lookup table for specific products. The use of a header file speeds up searching for products by nearly an order of magnitude and is recommended for all data files.  

The LDM, as well as non-WXP ingestors, does not create header files. The hdrparse program is used to post process the ingested data and create the header files.   To run hdrparse, the file name convention file must be set up with a header file name syntax:

   for_dat       %D/%y%m%d%h_for.wmo   %D/%y%m%d%h_for.hdr
   sev_dat       %D/%y%m%d%h_sev.wmo   %D/%y%m%d%h_sev.hdr
   sum_dat       %D/%y%m%d%h_sum.wmo   %D/%y%m%d%h_sum.hdr
   cli_dat       %D/%y%m%d%h_cli.wmo   %D/%y%m%d%h_cli.hdr

For each listed file type, there is the name convention for the ingested file plus a second listing which is the name convention of the header file. If the second name convention is omitted, WXP assumes there are no header files for this particular type of file.  Once the name convention file is set up to use header files, run header parse on the type of file:

   hdrparse -cu=la -if=for_dat

and this will generate the header file. The header output will appear on the screen. The num_hour resource can be used to create header files over several hours.  

Once done, programs like parse, forecast and fouswx will run faster and network traffic reduced since direct access into large files requires the transfer of a smaller amount of data than a line by line search through the file would.

GRIB Data

As with text data, parsing large GRIB files can be made easier with header files. Again, header file name conventions are specified in the name convention file:

grib_eta      %D/%y%m%d%12h_eta.grb    %D/%y%m%d%12h_eta.hdr
grib_ngm      %D/%y%m%d%12h_ngm.grb    %D/%y%m%d%12h_ngm.hdr
grib_ruc      %D/%y%m%d%3h_ruc.grb     %D/%y%m%d%3h_ruc.hdr     

These header files are produce automatically by the WXP ingestor. Again, the LDM does not generate these file so the griblook program must be run to generate these files:

   griblook -cu=la -mo=eta -ou=hdrfile -pf=app

This will update the current header file for the ETA model grids.

Automating Header File Generation

For header files to work, they must be continually generated as the data arrives.   This means that a script should be run in cron once a minute to generate these files.  Here is a sample script:

#! /bin/csh -f
#  hdrcreate: Creates a set of header files for various non-WXP ingested files
setenv wxpdefault /home/wxp/etc

foreach model ( eta ngm ruc \
   avn_n0e avn_n1e avn_n0w avn_n1w \
   avn_s0e avn_s1e avn_s0w avn_s1w \
   mrf_nh mrf_us mrf_ak mrf_hi mrf_pr \
   mrf_nhem mrf_shem )
   /home/wxp/bin/griblook -cu=la -mo=$model -ou=hdrfile -pf=app -me=none
end

foreach type ( for_dat sev_dat cli_dat sum_dat mos_dat )
   /home/wxp/bin/hdrparse -cu=la -if=$type -pf=app -me=none
end 

Both programs are run in append mode so that they only parse what has come in since the last running of the program.  The program uses the existing header file to find out the location of the last product seen when the program ran last.  It then starts parsing from that point and appends the new products to the end of the existing header file.  This reduces the execution time of the script considerably.


For further information about WXP, email devo@ks.unisys.com
Last updated by Dan Vietor on July 21, 1998

system_resrcfile <<
system_parse
>> system_auto