-
Notifications
You must be signed in to change notification settings - Fork 19
Neighbourhood methods
Gridpp supports methods that for each gridpoint computes a statistic based on values within a square neighbourhood surrounding the gridpoint.
The function in gridpp look like this:
values = gridpp.neighbourhood(input, radius, statistic)where input is a 2D field, radius is the half-width of the neighbourhood, and statistic is one of gridpp.Mean, gridpp.Min, gridpp.Max, gridpp.Std, gridpp.Variance, or gridpp.Sum.
To compute the neighbourhood mean on a 15x15 square neighbourhood, use:
radius = 7
ovalues = gridpp.neighbourhood(ivalues, radius, gridpp.Mean)Neighbourhoods can also be computed by pooling ensemble members together, creating a single field (instead of one field for each ensemble member). For this use the same function, but provide a 3D input with dimensions (Y, X, num_members).
To compute neighbourhood quantiles (such as median) use:
values = gridpp.neighbourhood_quantile(input, quantile, radius)The standard neighbourhood_quantile function is computationly expensive. To significantly reduce computation, at the cost of accuracy, use:
values = gridpp.neighbourhood_quantile_fast(input, quantile, radius, thresholds)where thresholds is a vector of approximation thresholds. Gridpp computes for each threshold, the fraction of the neighbourhood that exceeds each threshold, and computes the quantile from these fractions using piecewise-linear interpolation.