#! /usr/bin/bash # IMPORTANT: IF THIS IS YOUR OWN PRIVATE COPY OF THIS FILE, MAKE SURE # YOU EITHER SET THE $HWRF_GRAPHICS_INSTALL VARIABLE: export HWRF_GRAPHICS_INSTALL=/global/save/wx20st/hwrf-automation/ # Then skip down to the "EDIT VARIABLES IN THIS SECTION" section below. #################### FIND THE HWRF GRAPHICS LIBRARY # NOTE: Don't edit anything in this section. if [[ -z "$HWRF_GRAPHICS_INSTALL" ]] ; then guessdir=$( dirname $0 )/.. if [[ ${guessdir:0:1} != / && ${guessdir:0:1} != \~ ]] ; then guessdir="$(pwd)/$guessdir" fi if [[ -s "$guessdir/lib/hwrf_graphics_lib.bash.inc" ]] ; then export HWRF_GRAPHICS_INSTALL="$guessdir" echo "\$HWRF_GRAPHICS_INSTALL is unset. Using this script's parent directory \"$HWRF_GRAPHICS_INSTALL\"" 1>&2 fi fi source "$HWRF_GRAPHICS_INSTALL/lib/hwrf_graphics_lib.bash.inc" if [[ -z "$GR_HAVE_LIB" ]] ; then echo "Unable to load HWRF graphics library in dir \"$HWRF_GRAPHICS_INSTALL\". Check your \$HWRF_GRAPHICS_INSTALL variable." 1>&2 exit 2 fi #################### DELETE TEMPORARY FILES rm -f intensity*outerr intensity*png track*outerr track*png hwrf_gr_*.gs #################### EDIT VARIABLES IN THIS SECTION export PLOT_SUBTITLE="GFS Oper. vs. PRD13I - N. Atl." # IMPORTANT: IF YOU HAVE YOUR OWN PRIVATE COPY OF THE PLOTINFO FILE, # SET THE PLOTINFO VARIABLE TO THE PATH TO THAT FILE: export PLOTINFO="../gfs.plotinfo" intensity_models="AVNO PRHI" intensity_nrl=../../stats/gfstwoyear_atl.i.out intensity_relmodels="AVNO PRHI" track_models="AVNO PRHI" track_nrl=../../stats/gfstwoyear_atl.t.out track_relmodels="AVNO PRHI" grads_table_cmd="$GR_USH/hwrf_grads.bash -lbc $GR_GRADS/hwrf_gr_plot_stat_table.gs.in" grads_multi_cmd="$GR_USH/hwrf_grads.bash -lbc $GR_GRADS/hwrf_gr_plot_stat_multi.gs.in" grads_storms_cmd="$GR_USH/hwrf_grads.bash -lbc $GR_GRADS/hwrf_gr_plot_stat_storms.gs.in" #################### CREATE THE INTENSITY PLOTS # NOTE: in the $grads_table_cmd and $grads_multi_cmd, setting an # environment variable via "export VAR=VALUE" has the same effect as # adding VAR=VALUE as an argument to all of the $grads_(whatever)_cmd # commands that follow. For example, I could get rid of all of the # PLOT_XLABEL='' arguments below if I placed "export PLOT_XLABEL=''" # (or simply "unset PLOT_XLABEL") below this comment. export NRL_TRUTH="$intensity_nrl" export MODELS="$intensity_models" $grads_table_cmd HEADING='AVERAGE INTENSITY ERRORS' \ PLOT_TITLE='Average Intensity Errors (kt)' OUTGIF='intensity-err.png' \ PLOT_YLABEL='Intensity Error (kt)' YMIN=0 YMAX=30 PLOT_XLABEL='' \ > intensity-err.outerr 2>&1 $grads_table_cmd HEADING='ERROR STANDARD DEVIATION' \ PLOT_TITLE='Intensity Errors: Std.Dev. (kt)' \ OUTGIF='intensity-std.png' \ PLOT_YLABEL='Intensity Error Std.Dev. (kt)' YMIN=0 YMAX=23 PLOT_XLABEL='' \ > intensity-std.outerr 2>&1 $grads_table_cmd HEADING='AVERAGE INTENSITY BIAS' \ PLOT_TITLE='Intensity Bias (kt)' OUTGIF='intensity-bias.png' \ PLOT_YLABEL='Intensity Bias (kt)' YMIN=-35 YMAX=5 PLOT_XLABEL='' \ > intensity-bias.outerr 2>&1 $grads_table_cmd HEADING='(in knots) = 10.0 SAMPLE IS HOMOGENEOUS.' \ SKIP_TO='--- BEGIN INTENSITY CHANGE VERIFICATION ---' \ PLOT_TITLE='Correct Prediction of Intensity Tendency (thresh. 10kt)' \ OUTGIF='intensity-change-10.png' \ PLOT_YLABEL='Freq. of Correct Pred. (%)' YMIN=0 YMAX=55 PLOT_XLABEL='' \ > intensity-change-10.outerr 2>&1 $grads_table_cmd HEADING='(in knots) = 10.0 SAMPLE IS HOMOGENEOUS.' \ SKIP_TO='--- BEGIN INTENSITY CHANGE VERIFICATION ---' \ PLOT_TITLE='Correct Prediction of Intensity Tendency (thresh. 10kt)' \ OUTGIF='intensity-change-from0-10.png' SKIP_PARAGRAPHS=1 \ PLOT_YLABEL='Freq. of Correct Pred. (%)' YMIN=0 YMAX=90 PLOT_XLABEL='' \ > intensity-change-from0-10.outerr 2>&1 $grads_table_cmd HEADING='observed. SAMPLE IS HOMOGENEOUS.' \ PLOT_TITLE='Correlation Coef: Model vs. Observed Intens. Chg.' \ OUTGIF='intensity-corr-10.png' PLOT_YLABEL='Correlation Coef.' \ YMIN=0 YMAX=0.7 PLOT_XLABEL='' \ > intensity-corr-10.outerr 2>&1 $grads_table_cmd HEADING='observed. SAMPLE IS HOMOGENEOUS.' \ PLOT_TITLE='Correlation Coef: Model vs. Observed Intens. Chg.' \ OUTGIF='intensity-corr-from0-10.png' PLOT_YLABEL='Correlation Coef.' \ YMIN=0 YMAX=0.9 PLOT_XLABEL='' SKIP_PARAGRAPHS=1 \ > intensity-corr-from0-10.outerr 2>&1 $grads_table_cmd HEADING='FREQUENCY OF SUPERIOR PERFORMANCE (%)' \ PLOT_TITLE='Frequency of Superior Performance (%)' \ OUTGIF='intensity-percent-superior.png' PLOT_YLABEL='Frequency (%)' YMIN=0 YMAX=40 \ PLOT_XLABEL='Forecast Time (hours)' > intensity-percent-superior.outerr 2>&1 $grads_table_cmd HEADING='FREQUENCY OF SUPERIOR PERFORMANCE (number)' \ PLOT_TITLE='Frequency of Superior Performance (number)' \ OUTGIF='intensity-number-superior.png' PLOT_YLABEL='Num. of Superior Fcsts.' \ YMIN=0 YMAX=150 PLOT_XLABEL='' > intensity-number-superior.outerr 2>&1 # Generate the per-storm plots: $grads_storms_cmd HEADING='FORECAST ERRORS (KT) FOR' \ PLOT_TITLE='Intensity Errors (kt) For [NAME] [STID] [YEAR]' \ OUT_TEMPLATE='intensity-err-[NAME]-[STID]-[YEAR].png' \ PLOT_YLABEL='Intensity Error (kt)' YMIN=0 YMAX=50 PLOT_XLABEL='' \ > intensity-err-perstorm.outerr 2>&1 # Generate plots that are relative to a specific model (ie.: average # errors relative to HWRF) for rel in $intensity_relmodels ; do ymin=-60 ymax=60 $grads_table_cmd HEADING="AVERAGE ERRORS RELATIVE TO $rel" \ PLOT_TITLE="Average Errors Relative to $rel (kt)" \ OUTGIF="intensity-rel-$rel.png" PLOT_YLABEL='Average Error (kt)' \ YMIN="$ymin" YMAX="$ymax" PLOT_XLABEL='' \ > "intensity-rel-$rel.outerr" 2>&1 $grads_multi_cmd HEADING="PROBABILITIES FOR MODEL DIFFERENCES" \ REL_MODEL="$rel" PLOT_XLABEL='' PLOT_YLABEL='Probability of Difference' \ OUTGIF="intensity-prob-diff-$rel.png" YMIN=0 YMAX=1.05 \ PLOT_TITLE="Prob. that Model is Different from $rel" \ > "intensity-prob-diff-$rel.outerr" 2>&1 $grads_multi_cmd HEADING="ADJUSTED PROBABILITIES" \ REL_MODEL="$rel" PLOT_XLABEL='' PLOT_YLABEL='Probability of Difference' \ OUTGIF="intensity-prob-diff-$rel.png" YMIN=0 YMAX=1.05 \ PLOT_TITLE="Prob. that Model is Diff. from $rel. (30hr Corr)" \ > "intensity-prob-diff-$rel.outerr" 2>&1 done #################### CREATE THE TRACK PLOTS export NRL_TRUTH="$track_nrl" export MODELS="$track_models" $grads_table_cmd HEADING='average track errors' \ PLOT_TITLE='Average Track Errors (NMi)' OUTGIF='track-err.png' \ PLOT_YLABEL='Track Error (NMi)' YMIN=0 YMAX=350 PLOT_XLABEL='' > track-err.outerr 2>&1 $grads_table_cmd HEADING='ERROR STANDARD DEVIATION' \ PLOT_TITLE='Track Errors: Std.Dev. (NMi)' \ OUTGIF='track-std.png' \ PLOT_YLABEL='Track Error Std.Dev. (NMi)' YMIN=0 YMAX=225 PLOT_XLABEL='' \ > track-std.outerr 2>&1 $grads_table_cmd HEADING='AVERAGE XBIAS (NM) FOR HOMOGENEOUS SAMPLE' \ PLOT_TITLE='Track X Bias (nmi)' OUTGIF='track-xbias.png' \ PLOT_YLABEL='Track X Bias (nmi)' YMIN=-75 YMAX=150 PLOT_XLABEL='' \ > track-xbias.outerr 2>&1 $grads_table_cmd HEADING='AVERAGE YBIAS (NM) FOR HOMOGENEOUS SAMPLE' \ PLOT_TITLE='Track Y Bias (nmi)' OUTGIF='track-ybias.png' \ PLOT_YLABEL='Track Y Bias (nmi)' YMIN=-75 YMAX=75 PLOT_XLABEL='' \ > track-ybias.outerr 2>&1 $grads_table_cmd HEADING='FREQUENCY OF SUPERIOR PERFORMANCE (%)' \ PLOT_TITLE='Frequency of Superior Performance (%)' \ OUTGIF='track-percent-superior.png' PLOT_YLABEL='Frequency (%)' YMIN=0 YMAX=70 \ PLOT_XLABEL='Forecast Time (hours)' > track-percent-superior.outerr 2>&1 $grads_table_cmd HEADING='FREQUENCY OF SUPERIOR PERFORMANCE (number)' \ PLOT_TITLE='Frequency of Superior Performance (number)' \ OUTGIF='track-number-superior.png' PLOT_YLABEL='Num. of Superior Fcsts.' \ YMIN=0 YMAX=150 PLOT_XLABEL='' > track-number-superior.outerr 2>&1 # Generate the per-storm plots: $grads_storms_cmd HEADING='forecast errors (NM) FOR' \ PLOT_TITLE='Track Errors (NMi) For [NAME] [STID] [YEAR]' \ OUT_TEMPLATE='track-err-[NAME]-[STID]-[YEAR].png' \ PLOT_YLABEL='Track Error (NMi)' YMIN=0 YMAX=400 PLOT_XLABEL='' \ > track-err-perstorm.outerr 2>&1 # Generate plots that are relative to a specific model (ie.: average # errors relative to HWRF) for rel in $track_relmodels ; do ymin=-100 ymax=100 if [[ "$rel" == DSHP ]] ; then ymin=-40 ymax=100 fi $grads_table_cmd HEADING="AVERAGE ERRORS RELATIVE TO $rel" \ PLOT_TITLE="Average Errors Relative to $rel (nmi)" \ OUTGIF="track-rel-$rel.png" PLOT_YLABEL='Average Error (nmi)' \ YMIN="$ymin" YMAX="$ymax" PLOT_XLABEL='' \ > "track-rel-$rel.outerr" 2>&1 $grads_multi_cmd HEADING="PROBABILITIES FOR MODEL DIFFERENCES" \ REL_MODEL="$rel" PLOT_XLABEL='' PLOT_YLABEL='Probability of Difference' \ OUTGIF="track-prob-diff-$rel.png" YMIN=0 YMAX=1.05 \ PLOT_TITLE="Prob. that Model is Different from $rel" \ > "track-prob-diff-$rel.outerr" 2>&1 $grads_multi_cmd HEADING="ADJUSTED PROBABILITIES" \ REL_MODEL="$rel" PLOT_XLABEL='' PLOT_YLABEL='Probability of Difference' \ OUTGIF="track-prob-diff-$rel.png" YMIN=0 YMAX=1.05 \ PLOT_TITLE="Prob. that Model is Diff. from $rel. (30hr Corr)" \ > "track-prob-diff-$rel.outerr" 2>&1 done