MET Online Tutorial for METv8.0 | TC-Stat > Run

Like the STAT-Analysis tool, TC-Stat may be run with or without a configuration file. When running multiple analysis jobs over the same subset of data using a configuration file is most effiecient. However, when running simple jobs to quickly explore your data, using the command line is more convenient. For this tutorial, we'll run command line jobs.

Filter Job

The TC-Stat filter job subsets your data and writes that subset to an output file. TC-Stat supports the following types of filtering:

  • Header string columns using -amodel, -bmodel, -storm_id, -basin, -cyclone, and -storm_name. Multiple values may be specified as a comma-separated list or using multiple switches. When multiple values are specified, the output will contain their union.
  • Timing information using -init_beg, -init_end, -init_inc, -init_exc, -init_hour, similar switches for valid times, and -lead for the lead time.
  • The -init_mask, -valid_mask, and -track_watch_warn options filter by the corresponding data columns.
  • The -column_thresh option specifis the name of the column followed by a threshold to apply (e.g. -column_thresh TK_ERR gt10).
  • The -column_str option specifis the name of the column followed by a list of one or more strings to match (e.g. -column_str LEVEL HU,TS).
  • The -init_thresh and -init_str options work the same way but are only applied to the initial forecast track point (i.e. LEAD equals 0).
  • The -water_only option excludes any points where the distance to land is <= 0.
  • The -rirw and -landfall options subset the tracks down to the RIRW or landfall points, respectively.
  • The -event_equal and -event_equal_lead options control the logic for subsetting down to a homogenous sample.
  • The -out_init_mask and -out_valid_mask options define lat/lon polyline regions. The initial forecast track point (i.e. LEAD equals 0) must fall within the -out_init_mask while the entire track must fall within -out_valid_mask.
  • If your TC-Pairs output includes all track points, the -match_points options subsets tracks down to common times.

Next, run the following jobs:

  • Select data for the official forecast only (e.g. AMODEL equals OFCL). After you run the job, inspect the output file:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job filter -dump_row $MET_TUTORIAL_DATA/output/tc_stat/OFCL_sandy.tcst \
-amodel OFCL
  • The input TCST file includes tracks for 00, 06, 12, and 18Z initializations. Select only initialization hour 00 and inspect the output file:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job filter -dump_row $MET_TUTORIAL_DATA/output/tc_stat/INIT_sandy.tcst \
-init_hour 00
  • Select hurricane strength lines where the track error exceeds 150 nm and inspect the output file:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job filter -dump_row $MET_TUTORIAL_DATA/output/tc_stat/TKERR_sandy.tcst \
-column_str LEVEL HU \
-column_thresh TK_ERR gt150

Summary Job

Next, we'll run some summary jobs, applying additional filtering criteria as well. Just like the STAT-Analysis tool, TC-Stat supports the -by job command option which is a very convenient way of running the same job over multiple subsets of data:

  • Summarize all of the track (TK_ERR) and intensity (AMAX_WIND-BMAX_WIND) error values:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job summary \
-column TK_ERR -column AMAX_WIND-BMAX_WIND
  • Now use the -by option to run the same job for each unique combination of model name (AMODEL) and lead time (LEAD):
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job summary -by AMODEL,LEAD \
-column TK_ERR -column AMAX_WIND-BMAX_WIND
  • That's a lot of output, but we could filter it down using the -lead option to select particular lead times of interest:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job summary -by AMODEL,LEAD -lead 00,24,48,72 \
-column TK_ERR -column AMAX_WIND-BMAX_WIND
  • Run that same job one more time but use event equalization to compare three specific models (OFCL, OCD5, and HWRF) over a homogenous set of cases:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job summary -by AMODEL,LEAD -lead 00,24,48,72 \
-amodel OFCL,OCD5,HWRF -event_equal TRUE \
-column TK_ERR -column AMAX_WIND-BMAX_WIND

Notice that the counts (TOTAL column) are now constant across all models for each lead time.

By default, TC-Stat writes its job output to the screen but it can easily be redirected to a file using the -out option.

RIRW Job

Next, we'll run a sample Rapid Intensification job:

  • Run job for each unique model using all the default settings:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job rirw -by AMODEL
  • By default, TC-Stat dumps the contingency table counts (RIRW_CTC) and contingency table statistics (RIRW_CTS). Notice that there are differing counts in the TOTAL column. Let's rerun but turn off the RIRW_CTS output, and event equalize 3 models:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job rirw -by AMODEL -amodel OFCL,OCD5,HWRF -event_equal TRUE \
-out_line_type CTC
  • Notice that the TOTAL column remains constant meaning that event equalization worked as expected. By default, rapid intensification is defined an increase of 30 kts in exactly 24 hours which is a rather rare event. Let's try changing that to be a 20 kts maximum increase in 24 hours:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job rirw -by AMODEL -amodel OFCL,OCD5,HWRF -event_equal TRUE \
-out_line_type CTC -rirw_exact FALSE -rirw_thresh ge20
  • When populating the contingency table, we only get a hit when the rapid intensification occurs at exactly the same time in both tracks. But how do the scores change if we only require that the events be within 12 hours of eachother for a hit?
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job rirw -by AMODEL -amodel OFCL,OCD5,HWRF -event_equal TRUE \
-out_line_type CTC -rirw_exact FALSE -rirw_thresh ge20 -rirw_window 12
  • Lastly, rerun but write all possible line types (CTC, CTS, and MPR) to an output file:
tc_stat \
-lookin $MET_TUTORIAL_DATA/output/tc_pairs/tc_pairs_sandy.tcst \
-job rirw -by AMODEL -amodel OFCL,OCD5,HWRF -event_equal TRUE \
-out_line_type CTC,CTS,MPR -rirw_exact FALSE -rirw_thresh ge20 -rirw_window 12 \
-out $MET_TUTORIAL_DATA/output/tc_stat/RIRW_sandy.txt

Open the output $MET_TUTORIAL_DATA/output/tc_stat/RIRW_sandy.txt file and inspect the results.