Skip to content
AndreasPrein edited this page Jul 14, 2023 · 24 revisions

Introduction

Welcome to the Multi-Object Analysis of Atmospheric Phenomena (MOAAP) wiki! MOAAP was designed to identify and track a maximum number of atmospheric phenomena with a minimum set of input variables. The current version is able to identify:

  • fronts
    (850 hPa temperature, 850 hPa eastward wind speed, 850 hPa northward wind speed)
  • mesoscale convective systems (MCSs)
    (surface precipitation accumulation, cloud brightness temperature)
  • surface cyclones
    (sea level pressure)
  • mid-level cyclones
    (500 hPa geopotential height)
  • tropical cyclones
    (sea level pressure, surface precipitation accumulation, 850 hPa temperature, cloud brightness temperature)
  • cut-off lows
    (500 hPa geopotential height, 850 hPa temperature, 850 hPa eastward wind speed, 850 hPa northward wind speed, eastward wind speed at 200 hPa)
  • anticyclones
    (sea level pressure)
  • jet streams
    (eastward wind speed at 200 hPa, northward wind speed at 200 hPa)
  • atmospheric rivers
    (northward integrated vapor flux, eastward integrated vapor flux)
  • equatorial waves
    (surface precipitation accumulation)

The variables in brackets indicate the necessary fields for identifying the phenomena. All input variables must have the same temporal and spatial resolution and the dimensions must be [time, lat, lon]. MOAAP is not able to track phenomena on irregular grids.

All relevant functions are in the Tracking_Functions.py Python program. We currently work on a reference paper that describes the code and exemplifies its usage. A pre-print of the paper can be accessed here.

Usage

moaap(Lon, Lat, Time, dT, Mask, **kwargs)

Lon
numpay.array [lat, lon]\
2D center locations of grid longitudes (must be on a regular grid)

Lat
numpay.array [lat, lon]\
2D center locations of grid latitudes (must be on a regular grid)

Time
pandas.date_range [time]
pandas date_range vector containing time stamps for each time

dT
integer
temporal frequency of data [hours]

Mask
numpay.array [lat, lon]\
mask with dimensions [lat,lon] defining the analysis region as 1 and the background as 0

**kwargs

v850 = None                    850 hPa zonal wind speed [m/s]
u850 = None                    850 hPa meridional wind speed [m/s]
t850 = None                    850 hPa air temperature [K]
q850 = None                    850 hPa mixing ratio [g/kg]
slp = None                     sea level pressure [Pa]
ivte = None                    zonal integrated vapor transport [kg m-1 s-1]
ivtn = None                    meridional integrated vapor transport [kg m-1 s-1]
z500 = None                    geopotential height [gpm]
v200 = None                    200 hPa zonal wind speed [m/s]
u200 = None                    200 hPa meridional wind speed [m/s]
pr   = None                    accumulated surface precipitation [mm/time]
tb   = None                    brightness temperature [K]

DataName = ''                  string - name of the processed dataset
OutputFolder=''                string  - output directory path
SmoothSigmaP = 0               float - standard deviation of Gaussian filter for precipitation smoothing
Pthreshold = 2                 float - precipitation threshold [mm/hours]
MinTimePR = 4                  integer - minimum lifetime of precipitation features [hours]
MinAreaPR = 5000               float - minimum area of precipitation features [km^2]
MinTimeMS = 9                  integer - minimum lifetime for moisture stream [hours]
MinAreaMS = 100000             float - minimum area of moisture stream [km^2]
MinMSthreshold = 0.13          float - threshold for moisture stream [g*m/g*s]
MinTimeCY = 12                 integer - minimum lifetime of cyclone [hours]
MaxPresAnCY = -8               float - pressure threshold for cyclone anomaly [hPa]
MinTimeACY = 12                integer - minimum lifetime of anticyclone [hours]
MinPresAnACY = 6               float - pressure threshold for anti-cyclone anomaly [hPa]
MinAreaFR = 50000              float - minimum size of frontal zones [km2]
front_treshold = 1             float - frontal parameter threshold for masking frontal zones []
SmoothSigmaC = 0               float - standard deviation of Gaussian filter for brightness temperatures []
Cthreshold = 241               float - brightness temperature threshold for cloud tracking [K]
MinTimeC = 4                   integer - minimum lifetime of ice cloud shields [hours]
MinAreaC = 40000               float - minimum area of ice cloud shields [km^2]
IVTtrheshold = 500             float - integrated water vapor transport threshold for atmospheric river (AR) detection [kg m-1 s-1]
MinTimeIVT = 9                 integer - minimum lifetime of ARs [hours]
AR_MinLen = 2000               float - minimum length of an AR [km]
AR_Lat = 20                    float - absolute latitude of an AR centroid (ARs have to be poleward of this latitude) [|degrees|]
AR_width_lenght_ratio = 2      float - minimum length-to-width ratio of ARs []
TC_Pmin = 995                  float - minimum pressure for tropical cyclone (TC) detection [hPa]
TC_lat_genesis = 35            float - maximum latitude (absolute value) for TC genesis [|degree|]
TC_lat_max = 60                float - maximum latitude for TC existence [|degree|]
TC_deltaT_core = 0             float - minimum degrees difference between TC core and surrounding [K]
TC_T850min = 285               float - minimum temperature of TC core at 850 hPa [K]
TC_minBT = 241                 float - minimum average cloud top brightness temperature of TC cloud shield [K]
MCS_Minsize = 5000             float - minimum size of MCS precipitation area [km^2] 
MCS_minPR = 15                 float - minimum threshold for peak precipitation [mm/h]
CL_MaxT = 215                  float - brightness temperature has to be lower than this threshold at least once in MCS lifetime[K]
CL_Area = 40000                float - MCS cloud shield hast to be larger than this threshold for at least `MCS_minTime` consecutive hours [km^2]
MCS_minTime = 4                integer - minimum lifetime of MCS [hours]

Output

object_split                   directory that contains information about the history of phenomena
                               (e.g., if they split off or merged with other phenomena). This output 
                               is still experimental and should be used with caution.

The moaap function stores multiple files into the OutputFolder. The OutputFolder can be set as a keyword (the default is the working directory).

The following output files are written:

  • NetCDF file that contains all objects (integer labeled masks) and original fields that are thresholded. This file can be used to calculate all phenomena characteristics if the user desires.

    YYYYMM_DataNameObjectMasksDataName_dt-dTh_MOAAP-masks.nc

  • Python pickle file that contains the characteristics of all identified anticyclones.

    ACY_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified mesoscale cloud fields.

    Clouds_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified cyclones (tropical and extratropical).

    CY_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified IVT objects (ARs are a subset of these objects).

    IVT_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified mid-level cyclones.

    CY-z500_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified cut-off low-pressure systems.

    COL_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified jet streams.

    jet_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified Kelvin waves.

    Kelvin_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified inertia gravity waves.

    IGW_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified mixed Rossby gravity waves.

    MRG_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the characteristics of all identified eastward propagating gravity waves.

    Eig0_YYYYMM_DataName_dt-dTh_MOAAP-masks

  • Python pickle file that contains the tracks (time, lat, lon of pressure center) of all tropical cyclones.

    YYYYMM_TCs_tracks.pkl

Important notes

We recommend that the temporal resolution of the input data must be at least 3-hourly for variables related to MCS tracking (brightness temperature and precipitation) and at least 6-hourly for all other variables. A higher temporal resolution will result in better performance of tracking objects.

The current version of MOAAP only identifies but does not track frontal zones since those are often short-lived, fast moving, skinny features that are hard to track even at hourly output frequencies. Model output at ~10 minute intervals would be needed to follow fronts over time.

Some of the climatological object characteristics have known biases such as high frontal frequencies in areas of complex topography. Those biases are discussed in the MOAAP reference paper which will be shared here once it is submitted.

Clone this wiki locally