[Met_help] [rt.rap.ucar.edu #70338] History for Setting a range of pressure levels to verify in ensemble_stat

John Halley Gotway via RT met_help at ucar.edu
Thu Jan 15 10:10:11 MST 2015


----------------------------------------------------------------
  Initial Request
----------------------------------------------------------------

Hello,

Regarding the ensemble stat tool, I was wondering if there is a way to imply processing of variables at multiple pressure levels in one name call. For example, having P200-P925 in the ens and obs=fcst sections will only give verification of variables at 200 hPa.
name       = "TMP";
         level      = [ "P200-P925" ];
         cat_thresh = [];

I saw that this was used in the point-stat tool documentation example so was wondering if it could extend to ensemble stat? I could just declare each variable at each pressure level in that range, but was wondering for the sake of simplifying config scripts if I could set a range like above?

Thanks,
Brock

Brock Burghardt
Atmospheric Science PhD Student
Dept. of Geosciences
Texas Tech University



----------------------------------------------------------------
  Complete Ticket History
----------------------------------------------------------------

Subject: Setting a range of pressure levels to verify in ensemble_stat
From: John Halley Gotway
Time: Mon Jan 12 12:17:49 2015

Brock,

Here's how the logic works in Point-Stat...

For a range of pressure levels like P200-925, point_stat first looks
to see
if there's a single GRIB record defined for that range.  If so, it
reads
it.  If not, it reads all single pressure levels falling into that
range.
If you have output every 100mb, it'd read records for 200, 300, 400,
500,
600, 700, 800, and 900.  Next, for each point observation falling in
the
defined range, it'll look at the forecast levels above/below the
observation.  For an observation at 575mb, it'll look at the forecast
levels of 500 and 600 mb.  It'll interpolate to the observations
lat/lon
horizontally on the 500 and 600 levels.  Then it's interpolate
vertically
between those levels, linear in the log of pressure.  Since 575 is
closer
to 600 than 500, the value at 600 will be weighted more that the value
at
500.

Point-Stat groups together all matched forecast and observation pairs
for
the observations falling into that range and uses them to compute
output
statistics.  So the verification statistics are computed over all
those
levels.

Rather than aggregating results together in the vertical, you may
instead
want to evaluate performance level-by-level.  So define multiple
levels,
like this: level = [ "P200", "P300", ..., "P900" ];
That generate 8 different sets of output statistics, one for each
level.

You need to decide how you want to slice/dice/aggregate the data when
you
set up the configuration file, and that will determine the levels or
range
of levels you use.

Now on to your question about ensemble_stat...
There are two different sections where you specify the "fields" to be
evaluated: ens.field and fcst.field.

In the "ens" section, the field defines the 2D fields for which you
want to
compute an ensemble-mean.  This cannot be a range of levels - you need
to
list them explicitly.  However, there are some short cuts you could
use.
(1) If you list multiple entries for the "level", it'll treat them
separately.  The example below will read temperature from each of the
levels listed:

   field = [
      {
         name  = "TMP";
         level = [ "P900", "P800", "P700", "P600", "P500", "P400",
"P300",
"P200" ];
         cat_thresh = [ >300 ];
      }
   ];

(2) You can take advantage of the scope in the config file.  Suppose
you
want to evaluate 3 different variables on the same set of 8 levels.
The
example will do that and you only need to specify those levels once.
MET
will try to read "level" from each array entry of "field", but if it
can't
find it there, it'll step up to the next scope, find it, and read it
there:

   level = [ "P900", "P800", "P700", "P600", "P500", "P400", "P300",
"P200"
];
   field = [
      { name  = "TMP";  cat_thresh = [ >300 ]; },
      { name  = "UGRD"; cat_thresh = [ >2 ]; },
      { name  = "VGRD"; cat_thresh = [ >2 ]; }
   ];

Those shortcuts may make your Ensemble-Stat config file easier to
write and
maintain.

"field" also shows up in the "fcst" section which is used to define to
what
statistics should be computed.  Here's you can define a range of
pressure
levels like this:
   field = [
      { name  = "TMP"; level = [ "P900-200" ]; }
   ];

That'll compute stats over a range of pressure levels, just like
Point-Stat
does.

However, you may see an error message like this one:
ERROR  : process_point_ens() -> no fields matching
TMP_P900-200_ENS_MEAN(*,*) found in file:
out/ensemble_stat_20140820_000000V_ens.nc

To get rid of it, just disable the output flag for spread-skill
variance:
   ssvar = NONE;

In order to compute spread-skill variance, Ensemble-Stat needs an
ensemble
mean.  But no ensemble-mean exists for that field in the NetCDF output
that
Ensemble-Stat computed.

Give that a shot and let me know if you have more questions.

Thanks,
John


On Mon, Jan 12, 2015 at 10:57 AM, Burghardt, Brock via RT
<met_help at ucar.edu
> wrote:

>
> Mon Jan 12 10:57:25 2015: Request 70338 was acted upon.
> Transaction: Ticket created by brock.burghardt at ttu.edu
>        Queue: met_help
>      Subject: Setting a range of pressure levels to verify in
ensemble_stat
>        Owner: Nobody
>   Requestors: brock.burghardt at ttu.edu
>       Status: new
>  Ticket <URL:
https://rt.rap.ucar.edu/rt/Ticket/Display.html?id=70338 >
>
>
> Hello,
>
> Regarding the ensemble stat tool, I was wondering if there is a way
to
> imply processing of variables at multiple pressure levels in one
name call.
> For example, having P200-P925 in the ens and obs=fcst sections will
only
> give verification of variables at 200 hPa.
> name       = "TMP";
>          level      = [ "P200-P925" ];
>          cat_thresh = [];
>
> I saw that this was used in the point-stat tool documentation
example so
> was wondering if it could extend to ensemble stat? I could just
declare
> each variable at each pressure level in that range, but was
wondering for
> the sake of simplifying config scripts if I could set a range like
above?
>
> Thanks,
> Brock
>
> Brock Burghardt
> Atmospheric Science PhD Student
> Dept. of Geosciences
> Texas Tech University
>
>
>

------------------------------------------------
Subject: RE: [rt.rap.ucar.edu #70338] Setting a range of pressure levels to verify in ensemble_stat
From: Burghardt, Brock
Time: Mon Jan 12 12:35:24 2015

Excellent, thank you for explaining that so well, it makes much more
sense to me now. That also explains why I was seeing the SSVAR error,
but I'll likely want to look at the individual level statistics so
will need to break up the levels.

Thanks again!
Brock

-----Original Message-----
From: John Halley Gotway via RT [mailto:met_help at ucar.edu]
Sent: Monday, January 12, 2015 1:18 PM
To: Burghardt, Brock
Subject: Re: [rt.rap.ucar.edu #70338] Setting a range of pressure
levels to verify in ensemble_stat

Brock,

Here's how the logic works in Point-Stat...

For a range of pressure levels like P200-925, point_stat first looks
to see if there's a single GRIB record defined for that range.  If so,
it reads it.  If not, it reads all single pressure levels falling into
that range.
If you have output every 100mb, it'd read records for 200, 300, 400,
500, 600, 700, 800, and 900.  Next, for each point observation falling
in the defined range, it'll look at the forecast levels above/below
the observation.  For an observation at 575mb, it'll look at the
forecast levels of 500 and 600 mb.  It'll interpolate to the
observations lat/lon horizontally on the 500 and 600 levels.  Then
it's interpolate vertically between those levels, linear in the log of
pressure.  Since 575 is closer to 600 than 500, the value at 600 will
be weighted more that the value at 500.

Point-Stat groups together all matched forecast and observation pairs
for the observations falling into that range and uses them to compute
output statistics.  So the verification statistics are computed over
all those levels.

Rather than aggregating results together in the vertical, you may
instead want to evaluate performance level-by-level.  So define
multiple levels, like this: level = [ "P200", "P300", ..., "P900" ];
That generate 8 different sets of output statistics, one for each
level.

You need to decide how you want to slice/dice/aggregate the data when
you set up the configuration file, and that will determine the levels
or range of levels you use.

Now on to your question about ensemble_stat...
There are two different sections where you specify the "fields" to be
evaluated: ens.field and fcst.field.

In the "ens" section, the field defines the 2D fields for which you
want to compute an ensemble-mean.  This cannot be a range of levels -
you need to list them explicitly.  However, there are some short cuts
you could use.
(1) If you list multiple entries for the "level", it'll treat them
separately.  The example below will read temperature from each of the
levels listed:

   field = [
      {
         name  = "TMP";
         level = [ "P900", "P800", "P700", "P600", "P500", "P400",
"P300", "P200" ];
         cat_thresh = [ >300 ];
      }
   ];

(2) You can take advantage of the scope in the config file.  Suppose
you want to evaluate 3 different variables on the same set of 8
levels.  The example will do that and you only need to specify those
levels once.  MET will try to read "level" from each array entry of
"field", but if it can't find it there, it'll step up to the next
scope, find it, and read it there:

   level = [ "P900", "P800", "P700", "P600", "P500", "P400", "P300",
"P200"
];
   field = [
      { name  = "TMP";  cat_thresh = [ >300 ]; },
      { name  = "UGRD"; cat_thresh = [ >2 ]; },
      { name  = "VGRD"; cat_thresh = [ >2 ]; }
   ];

Those shortcuts may make your Ensemble-Stat config file easier to
write and maintain.

"field" also shows up in the "fcst" section which is used to define to
what statistics should be computed.  Here's you can define a range of
pressure levels like this:
   field = [
      { name  = "TMP"; level = [ "P900-200" ]; }
   ];

That'll compute stats over a range of pressure levels, just like
Point-Stat does.

However, you may see an error message like this one:
ERROR  : process_point_ens() -> no fields matching
TMP_P900-200_ENS_MEAN(*,*) found in file:
out/ensemble_stat_20140820_000000V_ens.nc

To get rid of it, just disable the output flag for spread-skill
variance:
   ssvar = NONE;

In order to compute spread-skill variance, Ensemble-Stat needs an
ensemble mean.  But no ensemble-mean exists for that field in the
NetCDF output that Ensemble-Stat computed.

Give that a shot and let me know if you have more questions.

Thanks,
John


On Mon, Jan 12, 2015 at 10:57 AM, Burghardt, Brock via RT
<met_help at ucar.edu
> wrote:

>
> Mon Jan 12 10:57:25 2015: Request 70338 was acted upon.
> Transaction: Ticket created by brock.burghardt at ttu.edu
>        Queue: met_help
>      Subject: Setting a range of pressure levels to verify in
ensemble_stat
>        Owner: Nobody
>   Requestors: brock.burghardt at ttu.edu
>       Status: new
>  Ticket <URL:
https://rt.rap.ucar.edu/rt/Ticket/Display.html?id=70338
> >
>
>
> Hello,
>
> Regarding the ensemble stat tool, I was wondering if there is a way
to
> imply processing of variables at multiple pressure levels in one
name call.
> For example, having P200-P925 in the ens and obs=fcst sections will
> only give verification of variables at 200 hPa.
> name       = "TMP";
>          level      = [ "P200-P925" ];
>          cat_thresh = [];
>
> I saw that this was used in the point-stat tool documentation
example
> so was wondering if it could extend to ensemble stat? I could just
> declare each variable at each pressure level in that range, but was
> wondering for the sake of simplifying config scripts if I could set
a range like above?
>
> Thanks,
> Brock
>
> Brock Burghardt
> Atmospheric Science PhD Student
> Dept. of Geosciences
> Texas Tech University
>
>
>



------------------------------------------------
Subject: Setting a range of pressure levels to verify in ensemble_stat
From: John Halley Gotway
Time: Mon Jan 12 13:25:28 2015

Great, glad that did the trick.

Thanks,
John

On Mon, Jan 12, 2015 at 12:35 PM, Burghardt, Brock via RT
<met_help at ucar.edu
> wrote:

>
> <URL: https://rt.rap.ucar.edu/rt/Ticket/Display.html?id=70338 >
>
> Excellent, thank you for explaining that so well, it makes much more
sense
> to me now. That also explains why I was seeing the SSVAR error, but
I'll
> likely want to look at the individual level statistics so will need
to
> break up the levels.
>
> Thanks again!
> Brock
>
> -----Original Message-----
> From: John Halley Gotway via RT [mailto:met_help at ucar.edu]
> Sent: Monday, January 12, 2015 1:18 PM
> To: Burghardt, Brock
> Subject: Re: [rt.rap.ucar.edu #70338] Setting a range of pressure
levels
> to verify in ensemble_stat
>
> Brock,
>
> Here's how the logic works in Point-Stat...
>
> For a range of pressure levels like P200-925, point_stat first looks
to
> see if there's a single GRIB record defined for that range.  If so,
it
> reads it.  If not, it reads all single pressure levels falling into
that
> range.
> If you have output every 100mb, it'd read records for 200, 300, 400,
500,
> 600, 700, 800, and 900.  Next, for each point observation falling in
the
> defined range, it'll look at the forecast levels above/below the
> observation.  For an observation at 575mb, it'll look at the
forecast
> levels of 500 and 600 mb.  It'll interpolate to the observations
lat/lon
> horizontally on the 500 and 600 levels.  Then it's interpolate
vertically
> between those levels, linear in the log of pressure.  Since 575 is
closer
> to 600 than 500, the value at 600 will be weighted more that the
value at
> 500.
>
> Point-Stat groups together all matched forecast and observation
pairs for
> the observations falling into that range and uses them to compute
output
> statistics.  So the verification statistics are computed over all
those
> levels.
>
> Rather than aggregating results together in the vertical, you may
instead
> want to evaluate performance level-by-level.  So define multiple
levels,
> like this: level = [ "P200", "P300", ..., "P900" ]; That generate 8
> different sets of output statistics, one for each level.
>
> You need to decide how you want to slice/dice/aggregate the data
when you
> set up the configuration file, and that will determine the levels or
range
> of levels you use.
>
> Now on to your question about ensemble_stat...
> There are two different sections where you specify the "fields" to
be
> evaluated: ens.field and fcst.field.
>
> In the "ens" section, the field defines the 2D fields for which you
want
> to compute an ensemble-mean.  This cannot be a range of levels - you
need
> to list them explicitly.  However, there are some short cuts you
could use.
> (1) If you list multiple entries for the "level", it'll treat them
> separately.  The example below will read temperature from each of
the
> levels listed:
>
>    field = [
>       {
>          name  = "TMP";
>          level = [ "P900", "P800", "P700", "P600", "P500", "P400",
"P300",
> "P200" ];
>          cat_thresh = [ >300 ];
>       }
>    ];
>
> (2) You can take advantage of the scope in the config file.  Suppose
you
> want to evaluate 3 different variables on the same set of 8 levels.
The
> example will do that and you only need to specify those levels once.
MET
> will try to read "level" from each array entry of "field", but if it
can't
> find it there, it'll step up to the next scope, find it, and read it
there:
>
>    level = [ "P900", "P800", "P700", "P600", "P500", "P400", "P300",
"P200"
> ];
>    field = [
>       { name  = "TMP";  cat_thresh = [ >300 ]; },
>       { name  = "UGRD"; cat_thresh = [ >2 ]; },
>       { name  = "VGRD"; cat_thresh = [ >2 ]; }
>    ];
>
> Those shortcuts may make your Ensemble-Stat config file easier to
write
> and maintain.
>
> "field" also shows up in the "fcst" section which is used to define
to
> what statistics should be computed.  Here's you can define a range
of
> pressure levels like this:
>    field = [
>       { name  = "TMP"; level = [ "P900-200" ]; }
>    ];
>
> That'll compute stats over a range of pressure levels, just like
> Point-Stat does.
>
> However, you may see an error message like this one:
> ERROR  : process_point_ens() -> no fields matching
> TMP_P900-200_ENS_MEAN(*,*) found in file:
> out/ensemble_stat_20140820_000000V_ens.nc
>
> To get rid of it, just disable the output flag for spread-skill
variance:
>    ssvar = NONE;
>
> In order to compute spread-skill variance, Ensemble-Stat needs an
ensemble
> mean.  But no ensemble-mean exists for that field in the NetCDF
output that
> Ensemble-Stat computed.
>
> Give that a shot and let me know if you have more questions.
>
> Thanks,
> John
>
>
> On Mon, Jan 12, 2015 at 10:57 AM, Burghardt, Brock via RT <
> met_help at ucar.edu
> > wrote:
>
> >
> > Mon Jan 12 10:57:25 2015: Request 70338 was acted upon.
> > Transaction: Ticket created by brock.burghardt at ttu.edu
> >        Queue: met_help
> >      Subject: Setting a range of pressure levels to verify in
> ensemble_stat
> >        Owner: Nobody
> >   Requestors: brock.burghardt at ttu.edu
> >       Status: new
> >  Ticket <URL:
https://rt.rap.ucar.edu/rt/Ticket/Display.html?id=70338
> > >
> >
> >
> > Hello,
> >
> > Regarding the ensemble stat tool, I was wondering if there is a
way to
> > imply processing of variables at multiple pressure levels in one
name
> call.
> > For example, having P200-P925 in the ens and obs=fcst sections
will
> > only give verification of variables at 200 hPa.
> > name       = "TMP";
> >          level      = [ "P200-P925" ];
> >          cat_thresh = [];
> >
> > I saw that this was used in the point-stat tool documentation
example
> > so was wondering if it could extend to ensemble stat? I could just
> > declare each variable at each pressure level in that range, but
was
> > wondering for the sake of simplifying config scripts if I could
set a
> range like above?
> >
> > Thanks,
> > Brock
> >
> > Brock Burghardt
> > Atmospheric Science PhD Student
> > Dept. of Geosciences
> > Texas Tech University
> >
> >
> >
>
>
>
>

------------------------------------------------


More information about the Met_help mailing list