Description of ARLiD Data Files (Version 1) Data contact: Brandon Kerns (
[email protected]) Project PI: Shuyi S. Chen (
[email protected]) There are four sets of data files, as briefly described in the table below. TIMES is in format YYYYMMDDHH_YYYYMMDDHH where the first (second) date is the beginning (end) of the tracking period. The tracking periods are in 5-year increments except for 2020 – 2024, which is 4 years. File Name Description of Data arYYYYMMDDHH.nc NetCDF files containing the tropical moisture extent, TPW blobs, IVT blobs, and potential AR objects at each time. lpt_systems_ar_{TIMES}.txt Human readable AR systems information. For each AR system, a table is provided with the area, centroid latitude, centroid longitude, and number of AR objects at each time. lpt_systems_ar_{TIMES}.nc Detailed AR systems information in a structured NetCDF format. In addition to the variables in the .txt file, the bounding box of the AR systems at each time is given. A list of the grid points corresponding to each individual AR system is also provided. lpt_composite_mask_{TIMES}.nc Spatio-temporal mask of all AR systems combined. Binary data: 0 = no AR, 1 = AR. For each set of files, there is a tar archive. The tar archive contains a file for each tracking year. For the ar_blob_data, the files for each year will be tar.gz archives, which need to be extracted to see the individual files for each hour. For the three others, all the data for the tracking year are in one file. Below is a description of the data in each file. Example Jupyter notebooks for using the data are provided in the Github repository: https://github.com/uwincm/arlid
LPT Systems Text Files Contains some basic information about each AR system, in a human readable format. Each AR object is presented in a separate table, with a heading for each table. Here is an example of the top of the first table. $ head -10 lpt_systems_ar_2020060100_2021063023.txt [16:53:07] LPT nnnnn.nnnn YYYYMMDDHH _A_[km2] cen_lat.__ cen_lon.__ Nobj LPT 0.1000 2020060100 1167505 45.41 303.81 1 2020060101 1185830 45.55 304.11 1 2020060102 1289723 44.83 303.40 1 2020060103 1462365 43.97 304.04 1 2020060104 1494749 44.04 304.25 1 2020060105 1544858 43.98 304.26 1 2020060106 1579681 43.93 304.22 1 cen_lon: centroid longitude cen_lat: centroid latitude nobj: Number of objects. (Should always be 1 with splitting and merging allowed).
AR Blob Data (Includes Deep Tropics Mask) Here is the NetCDF data descriptor, along with notes about the relevant variables in blue. $ ncdump -h mask_data/2020/01/ar2020010100.nc [16:43:04] netcdf ar2020010100 { dimensions: time = 1 ; lat = 721 ; lon = 1440 ; variables: byte mask(time, lat, lon) ; The AR object mask. 1 = Inside of AR Object. mask:units = "1" ; byte mask_ivt(time, lat, lon) ; The IVT blobs mask. 1 = Inside of the IVT blob. mask_ivt:units = "1" ; byte mask_tpw(time, lat, lon) ; The TPW blobs mask. 1 = Inside of the TPW blob. mask_tpw:units = "1" ; byte tropical_moisture_extent (time, lat, lon) ; Tropical moisture extent. 1 = Inside, 0 = outside. deep_tropics_mask:units = "1" ; double time(time) ; There is one time per file. This is here in case of aggregation of multiple times. time:_FillValue = NaN ; time:units = "seconds since 1970-1-1" ; double lon(lon) ; lon:_FillValue = NaN ; lon:units = "degrees_East" ; double lat(lat) ; lat:_FillValue = NaN ; lat:units = "degrees_North" ; }
Spatio-Temporal Mask Files (All ARs combined, for each time step) The file format is the same as for MJO LPT, but the MJO specific variables do not apply, since the MJO event detection step is not carried out (see https://github.com/uwincm/lptpython-public). Note that the spatial filter and time accumulation features of LPT were not used, so the masks represent instantaneous atmospheric rivers. Here is the NetCDF data descriptor, along with notes about the relevant variables in blue. Possible issues to be aware of are in red. $ ncdump -h lpt_composite_mask_2020060100_2021063023.nc [17:04:32] netcdf lpt_composite_mask_2020060100_2021063023 { dimensions: time = UNLIMITED ; // (9480 currently) lat = 721 ; lon = 1440 ; n = 1 ; variables: float grid_area(lat, lon) ; grid_area:_FillValue = NaNf ; grid_area:units = "km2" ; grid_area:description = "Area of each grid cell." ; int n(n) ; This dimension is not used. int time(time) ; time:units = "hours since 2020-06-01 00:00:00.000000" ; time:calendar = "standard" ; float lon(lon) ; lon:_FillValue = NaNf ; lon:units = "degrees_east" ; float lat(lat) ; lat:_FillValue = NaNf ; lat:units = "degrees_north" ; byte mask(time, lat, lon) ; Spatio-temporal mask of all ARs present at each time. 1 = inside an AR system. 0 = outside. mask:units = "1" ; }
LPT Systems NetCDF files (Centroids, bulk info, AR system grid points) The file format is the same as for MJO LPT, but the MJO specific variables do not apply, since the MJO event detection step is not carried out (see https://github.com/uwincm/lptpython-public). Here is the NetCDF data descriptor, along with notes about the relevant variables in blue. Possible issues to be aware of are in red. In this file, the data for the individual AR Objects are stitched together along the dimension “nstitch,” with missing/NaN values in-between each system. Below it is indicated which variables are for the systems as a whole, versus stitched variables giving data throughout the life cycles. A common use case is that you want to get the information for the life cycle of an individual AR system, which you know the ID of. In this case, the steps would be: - Get the array indices corresponding to the AR ID you want (e.g., this_lpt = lptid_stitched == this ar_id) - Extract the data for the AR system (e.g., this_centroid_lon = centroid_lon_stitched[this_lpt]). Another use case is that you want to gather or plot the data for multiple, or all, of the AR systems. In this case, if you want to plot all of them, take advantage of the NaN values inbetween each AR system, for example, for a quick time-longitude plot: plt.plot(centroid_lon_stitched, timestamp_stitched). If you want some but not all of the ARs, you might loop over the “lptid” variable. For more examples, see the Jupyter notebooks in the Github repository. $ ncdump -h lpt_systems_ar_2020060100_2021063023.nc [16:53:20] netcdf lpt_systems_ar_2020060100_2021063023 { dimensions: nlpt = 1416 ; nstitch = 158207 ; LPT systems stitched together with missing/NaN inbetween them. nobj = 509 ; npoints = 13771 ; Dimension: Max points of any of the AR systems. variables: These first few variables apply to the AR systems as a whole. double lptid(nlpt) ; lptid:_FillValue = NaN ;
lptid:units = "1.0" ; lptid:long_name = "LPT System id" ; int64 lpt_begin_index(nlpt) ; lpt_begin_index:units = "1" ; lpt_begin_index:long_name = "LPT System beginning index (zerobased, Python convention)" ; int64 lpt_end_index(nlpt) ; lpt_end_index:units = "1" ; lpt_end_index:long_name = "LPT System ending index (zero-based, Python convention)" ; double centroid_lon_start(nlpt) ; centroid_lon_start:_FillValue = NaN ; centroid_lon_start:units = "degrees_east" ; centroid_lon_start:long_name = "starting longitude (0-360)" ; centroid_lon_start:standard_name = "longitude" ; double centroid_lat_start(nlpt) ; centroid_lat_start:_FillValue = NaN ; centroid_lat_start:units = "degrees_north" ; centroid_lat_start:long_name = "starting latitude (-90-90)" ; centroid_lat_start:standard_name = "longitude" ; double centroid_lon_end(nlpt) ; centroid_lon_end:_FillValue = NaN ; centroid_lon_end:units = "degrees_east" ; centroid_lon_end:long_name = "ending longitude (0-360)" ; centroid_lon_end:standard_name = "longitude" ; double centroid_lat_end(nlpt) ; centroid_lat_end:_FillValue = NaN ; centroid_lat_end:units = "degrees_north" ; centroid_lat_end:long_name = "ending latitude (-90-90)" ; centroid_lat_end:standard_name = "longitude" ; double duration(nlpt) ; duration:_FillValue = NaN ; duration:units = "hours" ; duration:long_name = "LPT System Duration" ; double maxarea(nlpt) ; maxarea:_FillValue = NaN ; maxarea:units = "km2" ; maxarea:long_name = "LPT System area at time of largest extent" ; double zonal_propagation_speed(nlpt) ; Unphysical values for systems that cross the prime meridian! zonal_propagation_speed:_FillValue = NaN ; zonal_propagation_speed:units = "m s-1" ; zonal_propagation_speed:long_name = "Centroid Zonal Propagation Speed from least squares regression." ; double meridional_propagation_speed(nlpt) ; meridional_propagation_speed:_FillValue = NaN ; meridional_propagation_speed:units = "m s-1" ;
meridional_propagation_speed:long_name = "Centroid Meridional Propagation Speed from least squares regression." ; This next section is for each time step of each AR system, stitched together with missing/NaN values inbetween the systems. int64 timestamp_stitched(nstitch) ; Time stamps for each entry in the stitched data. timestamp_stitched:long_name = "LPT System time stamp -- stitched" ; timestamp_stitched:units = "hours since 2020-06-01 00:00:00.000000" ; timestamp_stitched:calendar = "standard" ; double lptid_stitched(nstitch) ; AR system id corresponding to each entry in the stitched data. This can be used to select the time series data for a specific system. lptid_stitched:_FillValue = NaN ; lptid_stitched:units = "1.0" ; lptid_stitched:long_name = "LPT System id -- stitched" ; int nobj_stitched(nstitch) ; double n_points_stitched(nstitch) ; n_points_stitched:_FillValue = NaN ; double centroid_lon_stitched(nstitch) ; Time series of centroid lon for each system. centroid_lon_stitched:_FillValue = NaN ; centroid_lon_stitched:units = "degrees_east" ; centroid_lon_stitched:long_name = "centroid longitude, may be inbetween objects (0-360) -- stitched" ; centroid_lon_stitched:standard_name = "longitude" ; double centroid_lat_stitched(nstitch) ; Time series of centroid lat for each system. centroid_lat_stitched:_FillValue = NaN ; centroid_lat_stitched:units = "degrees_north" ; centroid_lat_stitched:long_name = "centroid latitude, may be inbetween objects (-90-90) -- stitched" ; centroid_lat_stitched:standard_name = "latitude" ; double largest_object_centroid_lon_stitched(nstitch) ; largest_object_centroid_lon_stitched:_FillValue = NaN ; largest_object_centroid_lon_stitched:units = "degrees_east" ; largest_object_centroid_lon_stitched:long_name = "centroid longitude of the largest contiguous object (0-360) -- stitched" ; largest_object_centroid_lon_stitched:standard_name = "longitude" ; double largest_object_centroid_lat_stitched(nstitch) ;
largest_object_centroid_lat_stitched:_FillValue = NaN ; largest_object_centroid_lat_stitched:units = "degrees_north" ; largest_object_centroid_lat_stitched:long_name = "centroid latitude of the largest contiguous object (-90-90) -- stitched" ; largest_object_centroid_lat_stitched:standard_name = "latitude" ; double area_stitched(nstitch) ; Area of the AR systems at each time. area_stitched:_FillValue = NaN ; area_stitched:units = "km2" ; area_stitched:long_name = "LPT System enclosed area -- stitched" ; double max_lon_stitched(nstitch) ; Bounding box of the AR systems. max_lon_stitched:_FillValue = NaN ; max_lon_stitched:units = "degrees_east" ; max_lon_stitched:long_name = "max (eastmost) longitude (0-360) -- stitched" ; max_lon_stitched:standard_name = "longitude" ; double max_lat_stitched(nstitch) ; Bounding box of the AR systems. max_lat_stitched:_FillValue = NaN ; max_lat_stitched:units = "degrees_north" ; max_lat_stitched:long_name = "max (northmost) latitude (-90-90) - - stitched" ; max_lat_stitched:standard_name = "longitude" ; double min_lon_stitched(nstitch) ; Bounding box of the AR systems. min_lon_stitched:_FillValue = NaN ; min_lon_stitched:units = "degrees_east" ; min_lon_stitched:long_name = "min (westmost) longitude (0-360) -- stitched" ; min_lon_stitched:standard_name = "longitude" ; double min_lat_stitched(nstitch) ; Bounding box of the AR systems. min_lat_stitched:_FillValue = NaN ; min_lat_stitched:units = "degrees_north" ; min_lat_stitched:long_name = "min (southmost) latitude (-90-90) - - stitched" ; min_lat_stitched:standard_name = "longitude" ; double westmost_lat_stitched(nstitch) ; Latitude of the westmost bounding box of the AR systems. westmost_lat_stitched:_FillValue = NaN ; westmost_lat_stitched:units = "degrees_north" ; westmost_lat_stitched:long_name = "Latitude at min (westmost) longitude (-90-90) -- stitched" ; westmost_lat_stitched:standard_name = "longitude" ; double eastmost_lat_stitched(nstitch) ; Latitude of the eastmost bounding box point. eastmost_lat_stitched:_FillValue = NaN ; eastmost_lat_stitched:units = "degrees_north" ; eastmost_lat_stitched:long_name = "Latitude at max (eastmost) longitude (-90-90) -- stitched" ;
eastmost_lat_stitched:standard_name = "longitude" ; double southmost_lon_stitched(nstitch) ; Longitude of the southmost bounding box point. southmost_lon_stitched:_FillValue = NaN ; southmost_lon_stitched:units = "degrees_east" ; southmost_lon_stitched:long_name = "Longitude at min (southmost) longitude (0-360) -- stitched" ; southmost_lon_stitched:standard_name = "latitude" ; double northmost_lon_stitched(nstitch) ; Longitude of the northmost bounding box point. northmost_lon_stitched:_FillValue = NaN ; northmost_lon_stitched:units = "degrees_east" ; northmost_lon_stitched:long_name = "Longitude at max (northmost) longitude (0-360) -- stitched" ; northmost_lon_stitched:standard_name = "latitude" ; These variables below are not useful, because the “input field” was a mask 0/1 instead of a physical variable like precipitation. double amean_inst_field(nstitch) ; amean_inst_field:_FillValue = NaN ; amean_inst_field:units = "mm h-1" ; amean_inst_field:long_name = "LP object mean instantaneous rain rate (at end of running time)." ; double amean_running_field(nstitch) ; amean_running_field:_FillValue = NaN ; amean_running_field:units = "mm day-1" ; amean_running_field:long_name = "LP object running mean, mean rain rate (at end of running time)." ; double amean_filtered_running_field(nstitch) ; amean_filtered_running_field:_FillValue = NaN ; amean_filtered_running_field:units = "mm day-1" ; amean_filtered_running_field:long_name = "LP object filtered running mean, mean rain rate (at end of running time)." ; double min_inst_field(nstitch) ; min_inst_field:_FillValue = NaN ; min_inst_field:units = "mm h-1" ; min_inst_field:long_name = "LP object min instantaneous rain rate (at end of running time)." ; double min_running_field(nstitch) ; min_running_field:_FillValue = NaN ; min_running_field:units = "mm day-1" ; min_running_field:long_name = "LP object running mean, min rain rate (at end of running time)." ; double min_filtered_running_field(nstitch) ; min_filtered_running_field:_FillValue = NaN ;