Package: pysolo
lrose-solo-pythonPython interface to Solo editing functionsScientific poster for this project:Poster PDFInstallpipinstallpysoloTested for Ubuntu 18.04 and 20.04.Check out the GitHub:https://github.com/NCAR/lrose-solo-pythonView it on PyPI:https://pypi.org/project/pysolo/PyArt FunctionsThe functions below work with PyArt to do Solo II operations. The functions all require the following:radar: PyArt radar object.field: Name of the field containing the data.new_field: Name of the new field to save the operation on.Addtional parameters as needed by the function.boundary_mask: a 2D list of mask boundaries to do the operation on (default: None).sweep: the sweep to do the operation on (default: 0).NameFunctionSourceDespeckle Fielddespeckle_field(radar, field, new_field, a_speckle, boundary_mask=None, sweep=0)Despeckle.ccRing Zap Fieldring_zap_field(radar, field, new_field, from_km, to_km, boundary_mask=None, sweep=0)RemoveRing.ccThreshold Fieldthreshold_field(radar, field, field_ref, new_field, where, scaled_thr1, scaled_thr2, thr_missing=None, first_good_gate=0, boundary_mask=None)ThresholdField.ccFlag Freckles Fieldflag_freckles_field(radar, field, new_field, freckle_threshold, freckle_avg_count, boundary_mask=None, sweep=0)FlagOps.ccFlag Glitches Fieldflag_glitches_field(radar, field, new_field, deglitch_threshold, deglitch_radius, deglitch_min_gates, boundary_mask=None, sweep=0)FlagOps.ccForced Unfolding Fieldforced_unfolding_field(radar, field, new_field, dds_radd_eff_unamb_vel, center, boundary_mask=None, sweep=0)ForcedUnfolding.ccMerge Fields Fieldmerge_fields_field(radar, field, new_field, boundary_mask=None, sweep=0)MergeFields.ccRadial Shear Fieldradial_shear_field(radar, field, new_field, seds_gate_diff_interval, boundary_mask=None, sweep=0)RadialShear.ccRain Rate Fieldrain_rate_field(radar, field, new_field, dconst, boundary_mask=None, sweep=0)RainRate.ccUnfold First Good Gate Fieldunfold_first_good_gate_field(radar, field, new_field, max_neg_folds, ngates_averaged, last_good_v0, boundary_mask=None, sweep=0)BBUnfolding.ccUnfold Local Wind Fieldunfold_local_wind_field(radar, field, new_field,ew_wind, ns_wind, ud_wind, max_pos_folds, max_neg_folds, ngates_averaged, boundary_mask=None, sweep=0)BBUnfolding.ccIn addition to these functions, there aremasked_arrayandrayvariants. The masked array functions intake a numpy masked array and output a resultant masked array, while the ray variants intake a single ray and output a 1D masked array.Boundary MasksBoundaries are enclosed polygons to select which areas to perform Solo II operations on. In code, they are a list of lists of flags. PySolo contains functions to load in boundaries either from file format or two lists. Either function will return a list, which may be passed into any of the functions mentioned above to perform processing on an enclosed region.Read Boundary From Fileget_boundary_mask_from_file(radar,file_path)Read Boundary From Listsget_boundary_mask_from_list(radar,x_points,y_points)The x_points and y_points correspond to cartesian coordinate pairs. For instance, ifx_points = [0, 0, 20, 20]andy_points = [40, 80, 80, 40], this corresponds to a boundary with edges:(0, 40), (0,80), (20,80), (20, 40).Flag OperationsThe functions below will work on individual rays and generate certain masks for them based on the function's behavior.NameFunctionSourceAssign Bad Flagsassert_bad_flags(input_list_data, bad, bad_flag_mask, dgi_clip_gate=None, boundary_mask=None)FlagOps.ccAssign Valueassign_value(input_list_data, bad, constant, bad_flag_mask, dgi_clip_gate=None, boundary_mask=None)FlagOps.ccBad Flags Logicbad_flags_logic(input_list_data, bad, where, logical, scaled_thr1, scaled_thr2, bad_flag_mask, dgi_clip_gate=None, boundary_mask=None)FlagOps.ccClear Bad Flagsclear_bad_flags(complement, flag)FlagOps.ccCopy Bad Flagscopy_bad_flags(input_list_data, bad, dgi_clip_gate=None, boundary_mask=None)FlagOps.ccFlagged Addflagged_add(input_list_data, bad, f_const, multiply, bad_flag_mask, dgi_clip_gate=None, boundary_mask=None)FlagOps.ccSet Bad Flagsset_bad_flags(input_list_data, bad, where, scaled_thr1, scaled_thr2, dgi_clip_gate=None, boundary_mask=None)FlagOps.cc