def test_real_case(): """""" # inputs precip, metadata = get_precipitation_fields( num_prev_files=2, num_next_files=0, return_raw=False, metadata=True, upscale=2000, ) # motion motion = dense_lucaskanade(precip) # parameters timesteps = [1, 2, 3] thr = 1 # mm / h slope = 1 * metadata["accutime"] # min-1 # compute probability forecast extrap_kwargs = dict(allow_nonfinite_values=True) fct = forecast(precip[-1], motion, timesteps, thr, slope=slope, extrap_kwargs=extrap_kwargs) assert fct.ndim == 3 assert fct.shape[0] == len(timesteps) assert fct.shape[1:] == precip.shape[1:] assert np.nanmax(fct) <= 1.0 assert np.nanmin(fct) >= 0.0
# read precip field date = datetime.strptime("201607112100", "%Y%m%d%H%M") fns = io.find_by_date(date, root, fmt, pattern, ext, timestep, num_prev_files=2) importer = io.get_method(importer_name, "importer") precip, __, metadata = io.read_timeseries(fns, importer, **importer_kwargs) precip, metadata = utils.to_rainrate(precip, metadata) # precip[np.isnan(precip)] = 0 # motion motion = dense_lucaskanade(precip) # parameters nleadtimes = 6 thr = 1 # mm / h slope = 1 * timestep # km / min # compute probability forecast extrap_kwargs = dict(allow_nonfinite_values=True) fct = forecast(precip[-1], motion, nleadtimes, thr, slope=slope, extrap_kwargs=extrap_kwargs)
# Nicely print the metadata pprint(metadata) ############################################################################### # Deterministic nowcast with S-PROG # --------------------------------- # # First, the motiong field is estimated using a local tracking approach based # on the Lucas-Kanade optical flow. # The motion field can then be used to generate a deterministic nowcast with # the S-PROG model, which implements a scale filtering appraoch in order to # progressively remove the unpredictable spatial scales during the forecast. # Estimate the motion field V = dense_lucaskanade(R) # The S-PROG nowcast nowcast_method = nowcasts.get_method("sprog") R_f = nowcast_method( R[-3:, :, :], V, n_leadtimes, n_cascade_levels=6, R_thr=-10.0, ) # Back-transform to rain rate R_f = transformation.dB_transform(R_f, threshold=-10.0, inverse=True)[0] # Plot the S-PROG forecast
rainrate, metadata = conversion.to_rainrate(reflectivity, metadata) # Upscale data to 2 km to reduce computation time rainrate, metadata = dimension.aggregate_fields_space(rainrate, metadata, 2000) # Plot the most recent rain rate field plt.figure() plot_precip_field(rainrate[-1, :, :]) plt.show() ############################################################################### # Estimate the advection field # ---------------------------- # The advection field is estimated using the Lucas-Kanade optical flow advection = dense_lucaskanade(rainrate, verbose=True) ############################################################################### # Deterministic nowcast # --------------------- # Compute 30-minute LINDA nowcast with 8 parallel workers # Restrict the number of features to 15 to reduce computation time nowcast_linda = linda.forecast( rainrate, advection, 6, max_num_features=15, add_perturbations=False, num_workers=8, measure_time=True,