improver.nowcasting.lightning module

Module for NowcastLightning class and associated functions.

class improver.nowcasting.lightning.NowcastLightning(radius=10000.0)[source]

Bases: object

Produce Nowcast of lightning probability.

This Plugin selects a first-guess lightning probability field from MOGREPS-UK data matching the nowcast validity-time, and modifies this based on information from the nowcast.

For each forecast time, the closest-in-time first-guess lightning probability slice is copied and modified thus:

1: Increase lightning probability where lightning is observed or is
nearby.
2: Increase lightning probability where heavy or intense precipitation
is observed.
3: Reduce lightning probability where precipitation is light or
absent.
4: Increase lightning probability where ice is likely in the observed
radar column.

In this doc-string, LR is an abbreviation for the Lightning Risk index output by the CDP (Convection Diagnosis Procedure) and the Met Office nowcast. LR can take five values. 5 is the lowest risk and 1 is highest.

The default behaviour makes these adjustments to the upper and lower limits of lightning probability: lightning mapping (lightning rate in “min^-1”):

upper: lightning rate >= <function> => lightning prob = 1.0 (LR1)
The <function> returns a linear value from 0.5 to 2.5 over a 6-hour forecast_period.

lower: lightning rate == 0.0 => min lightning prob 0.25 (LR2)

precipitation mapping (for prob(precip > 0.5 mm/hr)):

upper: precip probability >= 0.1 => max lightning prob 1.0 (LR1)

middle: precip probability >= 0.05 => max lightning prob 0.25 (LR2)

lower: precip probability >= 0.0 => max lightning prob 0.0067 (LR3)

heavy: prob(precip > 7mm/hr) >= 0.4 => min lightning prob 0.25 (LR2)
equiv radar refl 37dBZ
intense:prob(precip > 35mm/hr) >= 0.2 => min lightning prob 1.0 (LR1)
equiv radar refl 48dBZ
VII (vertically-integrated ice) mapping (kg/m2):

upper: VII 2.0 => max lightning prob 0.9

middle: VII 1.0 => max lightning prob 0.5

lower: VII 0.5 => max lightning prob 0.1

__init__(radius=10000.0)[source]

Initialise class for Nowcast of lightning probability.

Keyword Arguments:
 radius (float) – Radius (metres) over which to neighbourhood process the output lightning probability. The value supplied applies at T+0 and increases to 2*radius at T+6 hours. The radius is applied in “process” using the circular neighbourhood plugin.
_modify_first_guess(cube, first_guess_lightning_cube, lightning_rate_cube, prob_precip_cube, prob_vii_cube=None)[source]

Modify first-guess lightning probability with nowcast data.

Parameters:
  • cube (iris.cube.Cube) – Provides the meta-data for the Nowcast lightning probability output cube.
  • first_guess_lightning_cube (iris.cube.Cube) – First-guess lightning probability. Must have same x & y dimensions as cube. Time dimension should overlap that of cube (closest slice in time is used with a maximum time mismatch of 2 hours). This is included to allow this cube to come from a different modelling system, such as the UM.
  • lightning_rate_cube (iris.cube.Cube) – Nowcast lightning rate. Must have same dimensions as cube.
  • prob_precip_cube (iris.cube.Cube) – Nowcast precipitation probability (threshold > 0.5, 7, 35). Must have same other dimensions as cube.
Keyword Arguments:
 

prob_vii_cube (iris.cube.Cube) – Radar-derived vertically integrated ice content (VII). Must have same x and y dimensions as cube. Time should be a scalar coordinate. Must have a threshold coordinate with points matching. self.vii_thresholds. Can be <No cube> or None or anything that evaluates to False.

Returns:

Output cube containing Nowcast lightning probability.

Return type:

new_prob_lightning_cube (iris.cube.Cube)

Raises:

iris.exceptions.ConstraintMismatchError – If lightning_rate_cube or first_guess_lightning_cube do not contain the expected times.

static _update_metadata(cube)[source]

Modify the meta data of input cube to resemble a Nowcast of lightning probability.

  1. Rename to “probability_of_lightning_rate_above_threshold”

2. Remove “threshold” coord (or causes iris.exceptions.CoordinateNotFoundError)

  1. Discard all cell_methods
Parameters:cube (iris.cube.Cube) – An input cube
Returns:Output cube - a copy of input cube with meta-data relating to a Nowcast of lightning probability. The data array will be a copy of the input cube.data
Return type:new_cube (iris.cube.Cube)
apply_ice(prob_lightning_cube, ice_cube)[source]

Modify Nowcast of lightning probability with ice data from a radar composite (VII; Vertically Integrated Ice)

Parameters:
  • prob_lightning_cube (iris.cube.Cube) – First-guess lightning probability. The forecast_period coord is modified in-place to “minutes”.
  • ice_cube (iris.cube.Cube) – Analysis of vertically integrated ice (VII) from radar thresholded at self.ice_thresholds. Units of threshold coord modified in-place to kg m^-2
Returns:

Output cube containing updated nowcast lightning probability. This cube will have the same dimensions and meta-data as prob_lightning_cube. The influence of the data in ice_cube reduces linearly to zero as forecast_period increases to 2H30M.

Return type:

new_cube (iris.cube.Cube)

Raises:

iris.exceptions.ConstraintMismatchError – If ice_cube does not contain the expected thresholds.

apply_precip(prob_lightning_cube, prob_precip_cube)[source]

Modify Nowcast of lightning probability with precipitation rate probabilities at thresholds of 0.5, 7 and 35 mm/h.

Parameters:
  • prob_lightning_cube (iris.cube.Cube) – First-guess lightning probability.
  • prob_precip_cube (iris.cube.Cube) – Nowcast precipitation probability (threshold > 0.5, 7., 35. mm hr-1) Units of threshold coord modified in-place to mm hr-1
Returns:

Output cube containing updated nowcast lightning probability. This cube will have the same dimensions and meta-data as prob_lightning_cube.

Return type:

new_cube (iris.cube.Cube)

Raises:

iris.exceptions.ConstraintMismatchError – If prob_precip_cube does not contain the expected thresholds.

ice_thresholds = (0.5, 1.0, 2.0)

Expected thresholds for vertically-integrated-ice (VII) data. These are used for increasing prob(lightning) with column-ice data. Units are kg/m2.

Type:(tuple)
process(cubelist)[source]

Produce Nowcast of lightning probability.

Parameters:cubelist (iris.cube.CubeList) –
Where thresholds are listed, only these threshold values will
be used.
Contains cubes of
  • First-guess lightning probability
  • Nowcast precipitation probability
    (required thresholds: > 0.5, 7., 35. mm hr-1)
  • Nowcast lightning rate
  • (optional) Analysis of vertically integrated ice (VII) from radar thresholded into probability slices at self.ice_thresholds.
Returns:Output cube containing Nowcast lightning probability. This cube will have the same dimensions as the input Nowcast precipitation probability after the threshold coord has been removed.
Return type:new_cube (iris.cube.Cube)
Raises:iris.exceptions.ConstraintMismatchError – If cubelist does not contain the expected cubes.