Skip to content

Commit 0ae4a93

Browse files
authored
HEALPix catalog improvements (FlexTRKR#116)
Improved support for HEALPix catalog from The Digital Earth Global km-scale Hackathon. 1. Updated to work with both online and local catalog. 2. Improved remapping MCS masks from lat/lon grid to HEALPix grid. 3. Added several notebooks to demonstrate running the tracking on HEALPix data and example analysis with tracking outputs. - demo_mcs_tracking_simple.ipynb - demo_mcs_tracking_widget.ipynb - demo_mcs_track_stats_healpix.ipynb
1 parent fc94255 commit 0ae4a93

15 files changed

Lines changed: 40733 additions & 616008 deletions

Notebooks/demo_mcs_track_stats_healpix.html

Lines changed: 17704 additions & 307841 deletions
Large diffs are not rendered by default.

Notebooks/demo_mcs_track_stats_healpix.ipynb

Lines changed: 17840 additions & 308042 deletions
Large diffs are not rendered by default.

Notebooks/demo_mcs_tracking_simple.ipynb

Lines changed: 1941 additions & 0 deletions
Large diffs are not rendered by default.

Notebooks/demo_mcs_tracking_widget.ipynb

Lines changed: 2223 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
---
2+
# HEALPix MCS tracking configuration file
3+
# Tracking uses collocated Tb + Precipitation
4+
5+
# Processing steps:
6+
run_idfeature : True # parallel
7+
run_tracksingle : True # parallel
8+
run_gettracks : True # serial
9+
run_trackstats : True # parallel
10+
run_identifymcs : True # serial
11+
run_matchpf : True # parallel
12+
run_robustmcs : True # serial
13+
run_mapfeature : True # parallel
14+
run_speed : True # parallel
15+
run_remap_healpix: True # parallel
16+
17+
# Parallel processing set up
18+
# run_parallel: 1 (local cluster), 2 (Dask MPI)
19+
run_parallel: 1
20+
nprocesses : 64 # Number of processors to use if run_parallel=1
21+
dask_tmp_dir: /tmp # Dask temporary directory if run_parallel=1
22+
timeout: 3600 # [seconds] Dask timeout limit
23+
24+
# Start/end date and time
25+
startdate: '20200201.0000'
26+
enddate: '20200203.0000'
27+
28+
# HEALPix parameters
29+
# catalog_file: /global/cfs/cdirs/m4581/gsharing/scream-cess-healpix/main.yaml
30+
catalog_file: https://digital-earths-global-hackathon.github.io/catalog/catalog.yaml
31+
catalog_location: NERSC
32+
catalog_source: scream2D_hrly
33+
# Catalog parameters, can have multiple entries
34+
catalog_params:
35+
zoom: 7
36+
# time: PT1H
37+
olr_varname: rlut # OLR variable name
38+
pcp_varname: pr # Precipitation variable name
39+
pcp_convert_factor: 3600000. # Convert precipitation flux from [m/s] to [mm/h]
40+
input_format: zarr # zarr or netcdf
41+
42+
# Specify tracking input data date/time string format
43+
# This is the preprocessed file that contains Tb & rainrate
44+
# E.g., databasename20181101.011503.nc --> yyyymodd.hhmmss
45+
# E.g., databasename2018-11-01_01:15:00 --> yyyy-mo-dd_hh:mm:ss
46+
time_format: yyyymoddhh
47+
databasename: '' # This is not used for HEALPix data
48+
49+
# Input files directory
50+
clouddata_path: '' # Not needed for catalog data
51+
# Working directory for the tracking data
52+
root_path: /pscratch/sd/w/wcmca1/scream-cess-healpix/mcs_tracking_hp7/
53+
# Working sub-directory names
54+
tracking_path_name: tracking
55+
stats_path_name: stats
56+
pixel_path_name: mcstracking
57+
58+
# Land mask file (target lat/lon grid for converting HEALPix to lat/lon)
59+
landmask_filename: /pscratch/sd/f/feng045/DYAMOND/maps/IMERG_landmask_180W-180E_60S-60N_0.5deg.nc
60+
landmask_varname: landseamask
61+
landmask_x_dimname: lon
62+
landmask_y_dimname: lat
63+
landmask_x_coordname: lon
64+
landmask_y_coordname: lat
65+
landfrac_thresh: [0, 90] # Define the range of fraction for land (depends on what value is land the landmask file)
66+
67+
# Input dataset structure
68+
pixel_radius: 50.0 # [km] Spatial resolution of the input data
69+
datatimeresolution: 1.0 # [hour] Temporal resolution of the input data
70+
# Variable names in the input data
71+
olr2tb: True
72+
clouddatasource: model
73+
time_dimname: time
74+
x_dimname: lon
75+
y_dimname: lat
76+
time_coordname: time
77+
x_coordname: lon
78+
y_coordname: lat
79+
80+
# Specify types of feature being tracked
81+
# This adds additional feature-specific statistics to be computed
82+
feature_type: tb_pf
83+
84+
# Cloud identification parameters
85+
mincoldcorepix: 1 # Minimum number of pixels for the cold core
86+
smoothwindowdimensions: 2 # Dimension of the Box2DKernel filter on Tb.
87+
medfiltsize: 5 # Window size to perform medfilt2d to fill missing Tb pixels, must be an odd number
88+
geolimits: [-60, -360, 60, 360] # [lat_min, lon_min, lat_max, lon_max] 4-element array to subset domain boundaries
89+
area_thresh: 800 # [km^2] Minimum area to define a cloud
90+
miss_thresh: 0.4 # Missing data fraction threshold. If missing data exceeds this, the time frame will be omitted.
91+
cloudtb_core: 225.0 # [K]
92+
cloudtb_cold: 241.0 # [K]
93+
cloudtb_warm: 261.0 # [K]
94+
cloudtb_cloud: 261.0 # [K]
95+
absolutetb_threshs: [160, 330] # K [min, max] absolute Tb range allowed.
96+
warmanvilexpansion: 0 # Not working yet, set this to 0 for now
97+
cloudidmethod: label_grow
98+
# Specific parameters to link cloud objects using PF
99+
linkpf: 1 # Set to 1 to turn on linkpf option; default: 0
100+
pf_smooth_window: 5 # Smoothing window for identifying PF
101+
pf_dbz_thresh: 1 # [dBZ] for reflectivity, or [mm/h] for rainrate
102+
pf_link_area_thresh: 648.0 # [km^2]
103+
104+
# Periodic boundary conditions
105+
pbc_direction: x # (options: x, y, both, none)
106+
# Fraction to extend the domain to label features at the periodic boundary
107+
pbc_extended_fraction: 0.1 # (range: 0 to 1)
108+
# Fraction of the domain to wrap feature position
109+
# If feature center movement between two time steps > max_domain_fraction * domain size,
110+
# the feature position will be wrapped to the other side of the domain
111+
pbc_max_domain_fraction: 0.5 # (range: 0 to 1)
112+
113+
# Tracking parameters
114+
othresh: 0.5 # overlap fraction threshold. Clouds that overlap more than this between times are tracked.
115+
timegap: 3.1 # [hour] If missing data duration longer than this, tracking restarts
116+
nmaxlinks: 50 # Maximum number of clouds that any single cloud can be linked to
117+
maxnclouds: 3000 # Maximum number of clouds in one snapshot
118+
duration_range: [2, 650] # A vector [minlength,maxlength] to specify the duration range for the tracks
119+
# Flag to remove short-lived tracks [< min(duration_range)] that are not mergers/splits with other tracks
120+
# 0:keep all tracks; 1:remove short tracks
121+
remove_shorttracks: 1
122+
# Set this flag to 1 to write a dense (2D) trackstats netCDF file
123+
# Note that for datasets with lots of tracks, the memory consumption could be large
124+
trackstats_dense_netcdf: 1
125+
# Minimum time difference threshold to match track stats with cloudid files
126+
match_pixel_dt_thresh: 60.0 # seconds
127+
128+
# MCS Tb parameters
129+
mcs_tb_area_thresh: 40000 # [km^2] Tb area threshold
130+
mcs_tb_duration_thresh: 4 # [hour] Tb minimum length of a mcs
131+
mcs_tb_split_duration: 12 # [hour] Tb tracks smaller or equal to this length will be included with the MCS splits from
132+
mcs_tb_merge_duration: 12 # [hour] Tb tracks smaller or equal to this length will be included with the MCS merges into
133+
mcs_tb_gap: 1 # [unitless] Allowable temporal gap in Tb data for MCS area threshold
134+
# MCS PF parameters
135+
mcs_pf_majoraxis_thresh: 0 # [km] MCS PF major axis length lower limit
136+
max_pf_majoraxis_thresh: 100000 # [km] MCS PF major axis length upper limit
137+
mcs_pf_durationthresh: 4 # [hour] PF minimum length of mcs
138+
mcs_pf_majoraxis_for_lifetime: 20 # [km] Minimum PF size to count PF lifetime
139+
mcs_pf_gap: 1 # [unitless] Allowable temporal gap in PF data for MCS characteristics
140+
141+
# Specify rain rate parameters
142+
pf_rr_thres: 0.5 # [mm/hr] Rain rate threshold
143+
nmaxpf: 3 # Maximum number of precipitation features that can be within a cloud feature
144+
nmaxcore: 20 # Maximum number of convective cores that can be within a cloud feature
145+
pcp_thresh: 0.5 # Pixels with hourly precipitation larger than this will be labeled with track number
146+
heavy_rainrate_thresh: 5.0 # [mm/hr] Heavy rain rate threshold
147+
mcs_min_rainvol_thresh: 20000 # [km^2 mm/h] Min rain volumne threshold
148+
mcs_volrain_duration_thresh: 1.0 # [hour] Min volume rain threshold
149+
150+
# Define tracked feature variable names
151+
feature_varname: feature_number
152+
nfeature_varname: nfeatures
153+
featuresize_varname: npix_feature
154+
155+
# Track statistics output file dimension names
156+
tracks_dimname: tracks
157+
times_dimname: times
158+
pf_dimname: nmaxpf
159+
fillval: -9999
160+
# MCS track stats file base names
161+
mcstbstats_filebase: mcs_tracks_
162+
mcspfstats_filebase: mcs_tracks_pf_
163+
mcsrobust_filebase: mcs_tracks_robust_
164+
pixeltracking_filebase: mcstrack_
165+
mcsfinal_filebase: mcs_tracks_final_
166+
167+
# Feature movement speed parameters
168+
lag_for_speed: 1 # lag intervals between tracked features to calculate movement
169+
track_number_for_speed: pcptracknumber
170+
track_field_for_speed: precipitation
171+
min_size_thresh_for_speed: 20 # [km] Min PF major axis length to calculate movement
172+
max_speed_thresh: 50 # [m/s]
173+
max_speed_for_trajectory_smoothing: 40 # [m/s] Max speed for smoothing lat/lon (only for visualization)
174+
175+
# MCSMIP standardized outputs (Zarr)
176+
# Flags to convert Zarr output
177+
create_mask_zarr: True
178+
create_tbpr_zarr: True
179+
create_full_zarr: False
180+
overwrite_zarr: True # Overwrite existing Zarr files
181+
# Zarr chunk sizes (default: auto)
182+
chunksize_time: 24 # time
183+
chunksize_lat: 240 # y
184+
chunksize_lon: 600 # x
185+
chunksize_cell: auto # HEALPix cell
186+
# Zarr output presets - configure different outputs
187+
zarr_output_presets:
188+
mask:
189+
write: False
190+
out_filebase: mcs_mask_latlon_
191+
# Variables to include in Zarr output
192+
var_list:
193+
- cloudtracknumber
194+
- cloudnumber
195+
# Variable renaming mapping for Zarr output
196+
var_rename:
197+
cloudtracknumber: mcs_mask
198+
cloudnumber: ccs_mask
199+
200+
# Remap back to healpix
201+
healpix:
202+
out_filebase: scream2D_hrly_mcsmask_
203+
zoom: 7 # zoom level to remap
204+
version: v1 # version in zarr filename

0 commit comments

Comments
 (0)