disdrodb 0.5.0__py3-none-any.whl → 0.5.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- disdrodb/__init__.py +4 -0
- disdrodb/_version.py +2 -2
- disdrodb/accessor/methods.py +14 -0
- disdrodb/api/checks.py +8 -7
- disdrodb/api/io.py +81 -29
- disdrodb/api/path.py +17 -14
- disdrodb/api/search.py +15 -18
- disdrodb/cli/disdrodb_open_products_options.py +38 -0
- disdrodb/cli/disdrodb_run.py +2 -2
- disdrodb/cli/disdrodb_run_station.py +4 -4
- disdrodb/configs.py +1 -1
- disdrodb/data_transfer/download_data.py +70 -1
- disdrodb/etc/configs/attributes.yaml +62 -8
- disdrodb/etc/configs/encodings.yaml +28 -0
- disdrodb/etc/products/L2M/MODELS/GAMMA_GS_ND_SSE.yaml +8 -0
- disdrodb/etc/products/L2M/MODELS/GAMMA_ML.yaml +1 -1
- disdrodb/etc/products/L2M/MODELS/LOGNORMAL_GS_LOG_ND_SSE.yaml +8 -0
- disdrodb/etc/products/L2M/MODELS/LOGNORMAL_GS_ND_SSE.yaml +8 -0
- disdrodb/etc/products/L2M/MODELS/LOGNORMAL_ML.yaml +1 -1
- disdrodb/etc/products/L2M/MODELS/NGAMMA_GS_LOG_ND_SSE.yaml +8 -0
- disdrodb/etc/products/L2M/MODELS/NGAMMA_GS_ND_SSE.yaml +8 -0
- disdrodb/etc/products/L2M/global.yaml +4 -4
- disdrodb/fall_velocity/graupel.py +8 -8
- disdrodb/fall_velocity/hail.py +2 -2
- disdrodb/fall_velocity/rain.py +33 -5
- disdrodb/issue/checks.py +1 -1
- disdrodb/l0/l0_reader.py +1 -1
- disdrodb/l0/l0a_processing.py +2 -2
- disdrodb/l0/l0b_nc_processing.py +5 -5
- disdrodb/l0/l0b_processing.py +20 -24
- disdrodb/l0/l0c_processing.py +18 -13
- disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +4 -0
- disdrodb/l0/readers/PARSIVEL2/VIETNAM/IGE_PARSIVEL2.py +239 -0
- disdrodb/l0/template_tools.py +13 -13
- disdrodb/l1/classification.py +10 -6
- disdrodb/l2/empirical_dsd.py +25 -15
- disdrodb/l2/processing.py +32 -14
- disdrodb/metadata/download.py +1 -1
- disdrodb/metadata/geolocation.py +4 -4
- disdrodb/metadata/reader.py +3 -3
- disdrodb/metadata/search.py +10 -8
- disdrodb/psd/__init__.py +4 -0
- disdrodb/psd/fitting.py +2660 -592
- disdrodb/psd/gof_metrics.py +389 -0
- disdrodb/psd/grid_search.py +1066 -0
- disdrodb/psd/models.py +1281 -145
- disdrodb/routines/l2.py +6 -6
- disdrodb/routines/options_validation.py +8 -8
- disdrodb/scattering/axis_ratio.py +70 -2
- disdrodb/scattering/permittivity.py +13 -10
- disdrodb/scattering/routines.py +10 -10
- disdrodb/summary/routines.py +23 -20
- disdrodb/utils/archiving.py +29 -22
- disdrodb/utils/attrs.py +6 -4
- disdrodb/utils/dataframe.py +4 -4
- disdrodb/utils/encoding.py +3 -1
- disdrodb/utils/event.py +9 -9
- disdrodb/utils/logger.py +4 -7
- disdrodb/utils/manipulations.py +2 -2
- disdrodb/utils/subsetting.py +1 -1
- disdrodb/utils/time.py +8 -7
- disdrodb/viz/plots.py +25 -17
- {disdrodb-0.5.0.dist-info → disdrodb-0.5.1.dist-info}/METADATA +44 -33
- {disdrodb-0.5.0.dist-info → disdrodb-0.5.1.dist-info}/RECORD +68 -66
- {disdrodb-0.5.0.dist-info → disdrodb-0.5.1.dist-info}/entry_points.txt +1 -0
- disdrodb/etc/products/L2M/MODELS/GAMMA_GS_ND_MAE.yaml +0 -6
- disdrodb/etc/products/L2M/MODELS/LOGNORMAL_GS_LOG_ND_MAE.yaml +0 -6
- disdrodb/etc/products/L2M/MODELS/LOGNORMAL_GS_ND_MAE.yaml +0 -6
- disdrodb/etc/products/L2M/MODELS/NGAMMA_GS_LOG_ND_MAE.yaml +0 -6
- disdrodb/etc/products/L2M/MODELS/NGAMMA_GS_ND_MAE.yaml +0 -6
- disdrodb/etc/products/L2M/MODELS/NGAMMA_GS_R_MAE.yaml +0 -6
- disdrodb/etc/products/L2M/MODELS/NGAMMA_GS_Z_MAE.yaml +0 -6
- {disdrodb-0.5.0.dist-info → disdrodb-0.5.1.dist-info}/WHEEL +0 -0
- {disdrodb-0.5.0.dist-info → disdrodb-0.5.1.dist-info}/licenses/LICENSE +0 -0
- {disdrodb-0.5.0.dist-info → disdrodb-0.5.1.dist-info}/top_level.txt +0 -0
disdrodb/utils/event.py
CHANGED
|
@@ -44,7 +44,7 @@ def group_timesteps_into_event(
|
|
|
44
44
|
|
|
45
45
|
Parameters
|
|
46
46
|
----------
|
|
47
|
-
timesteps:
|
|
47
|
+
timesteps: numpy.ndarray
|
|
48
48
|
Candidate timesteps to be grouped into events.
|
|
49
49
|
neighbor_time_interval : str
|
|
50
50
|
The time interval around a given a timestep defining the neighborhood.
|
|
@@ -121,9 +121,9 @@ def remove_isolated_timesteps(timesteps, neighbor_min_size, neighbor_time_interv
|
|
|
121
121
|
|
|
122
122
|
Parameters
|
|
123
123
|
----------
|
|
124
|
-
timesteps : array-like of
|
|
124
|
+
timesteps : array-like of numpy.datetime64
|
|
125
125
|
Sorted or unsorted array of valid timesteps.
|
|
126
|
-
neighbor_time_interval :
|
|
126
|
+
neighbor_time_interval : numpy.timedelta64
|
|
127
127
|
The time interval around a given a timestep defining the neighborhood.
|
|
128
128
|
Only timesteps that fall within this time interval before or after a timestep are considered neighbors.
|
|
129
129
|
neighbor_min_size : int, optional
|
|
@@ -136,12 +136,12 @@ def remove_isolated_timesteps(timesteps, neighbor_min_size, neighbor_time_interv
|
|
|
136
136
|
|
|
137
137
|
Returns
|
|
138
138
|
-------
|
|
139
|
-
|
|
139
|
+
numpy.ndarray
|
|
140
140
|
Array of timesteps with isolated entries removed.
|
|
141
141
|
"""
|
|
142
142
|
# Sort timesteps
|
|
143
143
|
timesteps = np.array(timesteps)
|
|
144
|
-
timesteps.sort()
|
|
144
|
+
timesteps = np.sort(timesteps)
|
|
145
145
|
|
|
146
146
|
# Do nothing if neighbor_min_size is 0
|
|
147
147
|
if neighbor_min_size == 0:
|
|
@@ -182,15 +182,15 @@ def group_timesteps_into_events(timesteps, event_max_time_gap):
|
|
|
182
182
|
|
|
183
183
|
Parameters
|
|
184
184
|
----------
|
|
185
|
-
timesteps : array-like of
|
|
185
|
+
timesteps : array-like of numpy.datetime64
|
|
186
186
|
Sorted array of valid timesteps.
|
|
187
|
-
event_max_time_gap :
|
|
187
|
+
event_max_time_gap : numpy.timedelta64
|
|
188
188
|
Maximum time interval allowed between consecutive valid timesteps for them
|
|
189
189
|
to be considered part of the same event.
|
|
190
190
|
|
|
191
191
|
Returns
|
|
192
192
|
-------
|
|
193
|
-
list of
|
|
193
|
+
list of numpy.ndarray
|
|
194
194
|
A list of events, where each event is an array of timesteps.
|
|
195
195
|
"""
|
|
196
196
|
# Deal with case with no timesteps
|
|
@@ -198,7 +198,7 @@ def group_timesteps_into_events(timesteps, event_max_time_gap):
|
|
|
198
198
|
return []
|
|
199
199
|
|
|
200
200
|
# Ensure timesteps are sorted
|
|
201
|
-
timesteps.sort()
|
|
201
|
+
timesteps = np.sort(timesteps)
|
|
202
202
|
|
|
203
203
|
# Compute differences between consecutive timesteps
|
|
204
204
|
diffs = np.diff(timesteps)
|
disdrodb/utils/logger.py
CHANGED
|
@@ -224,13 +224,10 @@ def create_product_logs(
|
|
|
224
224
|
The summary log selects only logged lines with ``root``, ``WARNING``, and ``ERROR`` keywords.
|
|
225
225
|
The problems log file selects only logged lines with the ``ERROR`` keyword.
|
|
226
226
|
|
|
227
|
-
The logs directory structure is the
|
|
228
|
-
/logs
|
|
229
|
-
- /
|
|
230
|
-
- /
|
|
231
|
-
--> SUMMARY.<PRODUCT_ACRONYM>.<CAMPAIGN_NAME>.<STATION_NAME>.log
|
|
232
|
-
- /problems
|
|
233
|
-
--> PROBLEMS.<PRODUCT_ACRONYM>.<CAMPAIGN_NAME>.<STATION_NAME>.log
|
|
227
|
+
The logs directory structure is the following
|
|
228
|
+
- ``/logs/files/<product_name>/<station>`` (same structure as data directory, with logs for each processed file)
|
|
229
|
+
- ``/logs/summary/SUMMARY.<PRODUCT_ACRONYM>.<CAMPAIGN_NAME>.<STATION_NAME>.log``
|
|
230
|
+
- ``/logs/problems/PROBLEMS.<PRODUCT_ACRONYM>.<CAMPAIGN_NAME>.<STATION_NAME>.log``
|
|
234
231
|
|
|
235
232
|
Parameters
|
|
236
233
|
----------
|
disdrodb/utils/manipulations.py
CHANGED
|
@@ -76,7 +76,7 @@ def define_diameter_array(diameter_min=0, diameter_max=10, diameter_spacing=0.05
|
|
|
76
76
|
|
|
77
77
|
Returns
|
|
78
78
|
-------
|
|
79
|
-
|
|
79
|
+
xarray.DataArray
|
|
80
80
|
A DataArray containing the center of each diameter bin, with coordinates for
|
|
81
81
|
the bin width, lower bound, upper bound, and center.
|
|
82
82
|
|
|
@@ -100,7 +100,7 @@ def define_velocity_array(velocity_min=0, velocity_max=10, velocity_spacing=0.05
|
|
|
100
100
|
|
|
101
101
|
Returns
|
|
102
102
|
-------
|
|
103
|
-
|
|
103
|
+
xarray.DataArray
|
|
104
104
|
A DataArray containing the center of each velocity bin, with coordinates for
|
|
105
105
|
the bin width, lower bound, upper bound, and center.
|
|
106
106
|
|
disdrodb/utils/subsetting.py
CHANGED
|
@@ -99,7 +99,7 @@ def _get_dim_isel_on_non_dim_coord_from_sel(xr_obj, coord, sel_indices, method):
|
|
|
99
99
|
-------
|
|
100
100
|
dim : str
|
|
101
101
|
Dimension related to the 1D non-dimension coordinate.
|
|
102
|
-
isel_indices :
|
|
102
|
+
isel_indices : numpy.ndarray
|
|
103
103
|
Indices for index-based selection.
|
|
104
104
|
"""
|
|
105
105
|
dim = _get_dim_of_1d_non_dimensional_coord(xr_obj, coord)
|
disdrodb/utils/time.py
CHANGED
|
@@ -35,16 +35,17 @@ logger = logging.getLogger(__name__)
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
def seconds_to_temporal_resolution(seconds):
|
|
38
|
-
"""
|
|
39
|
-
Convert a duration in seconds to a readable string format (e.g., "1H30", "1D2H").
|
|
38
|
+
"""Convert a duration in seconds to a readable string format (e.g., "1H30", "1D2H").
|
|
40
39
|
|
|
41
40
|
Parameters
|
|
42
41
|
----------
|
|
43
|
-
|
|
42
|
+
seconds: int
|
|
43
|
+
The time duration in seconds.
|
|
44
44
|
|
|
45
45
|
Returns
|
|
46
46
|
-------
|
|
47
|
-
|
|
47
|
+
str:
|
|
48
|
+
The duration as a string in a format like "30S", "1MIN30S", "1H30MIN", or "1D2H".
|
|
48
49
|
"""
|
|
49
50
|
timedelta = pd.Timedelta(seconds=seconds)
|
|
50
51
|
components = timedelta.components
|
|
@@ -124,7 +125,7 @@ def temporal_resolution_to_seconds(temporal_resolution):
|
|
|
124
125
|
|
|
125
126
|
Returns
|
|
126
127
|
-------
|
|
127
|
-
|
|
128
|
+
int
|
|
128
129
|
Duration in seconds.
|
|
129
130
|
"""
|
|
130
131
|
seconds, _ = get_sampling_information(temporal_resolution)
|
|
@@ -242,7 +243,7 @@ def regularize_dataset(
|
|
|
242
243
|
|
|
243
244
|
Parameters
|
|
244
245
|
----------
|
|
245
|
-
xr_obj : xarray.Dataset or
|
|
246
|
+
xr_obj : xarray.Dataset or xarray.DataArray
|
|
246
247
|
xarray object with time dimension.
|
|
247
248
|
time_dim : str, optional
|
|
248
249
|
The time dimension in the xarray object. The default value is ``"time"``.
|
|
@@ -253,7 +254,7 @@ def regularize_dataset(
|
|
|
253
254
|
Method to use for filling missing timesteps.
|
|
254
255
|
If ``None``, fill with ``fill_value``. The default value is ``None``.
|
|
255
256
|
For other possible methods, see xarray.Dataset.reindex()`.
|
|
256
|
-
fill_value :
|
|
257
|
+
fill_value : float or dict, optional
|
|
257
258
|
Fill value to fill missing timesteps.
|
|
258
259
|
If not specified, for float variables it uses ``dtypes.NA`` while for
|
|
259
260
|
for integers variables it uses the maximum allowed integer value or,
|
disdrodb/viz/plots.py
CHANGED
|
@@ -32,8 +32,9 @@ from disdrodb.utils.time import ensure_sample_interval_in_seconds, regularize_da
|
|
|
32
32
|
#### N(D) visualizations
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
def _single_plot_nd_distribution(drop_number_concentration, diameter, diameter_bin_width):
|
|
36
|
-
|
|
35
|
+
def _single_plot_nd_distribution(drop_number_concentration, diameter, diameter_bin_width, ax=None, yscale="linear"):
|
|
36
|
+
if ax is None:
|
|
37
|
+
fig, ax = plt.subplots(1, 1)
|
|
37
38
|
ax.bar(
|
|
38
39
|
diameter,
|
|
39
40
|
drop_number_concentration,
|
|
@@ -42,9 +43,11 @@ def _single_plot_nd_distribution(drop_number_concentration, diameter, diameter_b
|
|
|
42
43
|
color="lightgray",
|
|
43
44
|
label="Data",
|
|
44
45
|
)
|
|
46
|
+
ax.set_xlim(diameter[0] - diameter_bin_width[0] / 2, None)
|
|
45
47
|
ax.set_title("Drop number concentration (N(D))")
|
|
46
48
|
ax.set_xlabel("Drop diameter (mm)")
|
|
47
49
|
ax.set_ylabel("N(D) [m-3 mm-1]")
|
|
50
|
+
ax.set_yscale(yscale)
|
|
48
51
|
return ax
|
|
49
52
|
|
|
50
53
|
|
|
@@ -69,7 +72,7 @@ def _get_nd_variable(xr_obj, variable):
|
|
|
69
72
|
return xr_obj
|
|
70
73
|
|
|
71
74
|
|
|
72
|
-
def plot_nd(xr_obj, variable="drop_number_concentration", cmap=None, norm=None):
|
|
75
|
+
def plot_nd(xr_obj, variable="drop_number_concentration", cmap=None, norm=None, yscale="linear", ax=None):
|
|
73
76
|
"""Plot drop number concentration N(D) timeseries."""
|
|
74
77
|
da_nd = _get_nd_variable(xr_obj, variable=variable)
|
|
75
78
|
|
|
@@ -79,6 +82,8 @@ def plot_nd(xr_obj, variable="drop_number_concentration", cmap=None, norm=None):
|
|
|
79
82
|
drop_number_concentration=da_nd.isel(velocity_method=0, missing_dims="ignore"),
|
|
80
83
|
diameter=xr_obj["diameter_bin_center"],
|
|
81
84
|
diameter_bin_width=xr_obj["diameter_bin_width"],
|
|
85
|
+
yscale=yscale,
|
|
86
|
+
ax=ax,
|
|
82
87
|
)
|
|
83
88
|
return ax
|
|
84
89
|
|
|
@@ -98,7 +103,7 @@ def plot_nd(xr_obj, variable="drop_number_concentration", cmap=None, norm=None):
|
|
|
98
103
|
|
|
99
104
|
# Plot N(D)
|
|
100
105
|
cbar_kwargs = {"label": "N(D) [m-3 mm-1]"}
|
|
101
|
-
p = da_nd.plot.pcolormesh(x="time", norm=norm, cmap=cmap, extend="max", cbar_kwargs=cbar_kwargs)
|
|
106
|
+
p = da_nd.plot.pcolormesh(x="time", norm=norm, cmap=cmap, extend="max", cbar_kwargs=cbar_kwargs, ax=ax)
|
|
102
107
|
p.axes.set_title("Drop number concentration N(D)")
|
|
103
108
|
p.axes.set_ylabel("Drop diameter (mm)")
|
|
104
109
|
return p
|
|
@@ -304,12 +309,13 @@ def plot_spectrum(
|
|
|
304
309
|
Name of the variable to plot if xr_obj is a Dataset.
|
|
305
310
|
ax : matplotlib.axes.Axes, optional
|
|
306
311
|
Axes to plot on. If None, uses current axes or creates a new one.
|
|
307
|
-
cmap : Colormap, optional
|
|
312
|
+
cmap : matplotlib.colors.Colormap, optional
|
|
308
313
|
Colormap to use. If None, uses 'Spectral_r' with 'under' set to 'none'.
|
|
309
314
|
norm : matplotlib.colors.Normalize, optional
|
|
310
315
|
Normalization for colormap. If None, uses LogNorm with vmin=1.
|
|
311
|
-
extend :
|
|
316
|
+
extend : str, optional
|
|
312
317
|
Whether to draw arrows on the colorbar to indicate out-of-range values.
|
|
318
|
+
Valid options are 'neither', 'min', 'max', 'both'.
|
|
313
319
|
Default is 'max'.
|
|
314
320
|
add_colorbar : bool, optional
|
|
315
321
|
Whether to add a colorbar. Default is True.
|
|
@@ -322,10 +328,12 @@ def plot_spectrum(
|
|
|
322
328
|
|
|
323
329
|
Notes
|
|
324
330
|
-----
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
331
|
+
If the input DataArray has a time dimension, it is summed over time before plotting
|
|
332
|
+
unless FacetGrid options (e.g., col, row) are specified in plot_kwargs.
|
|
333
|
+
|
|
334
|
+
If FacetGrid options are used, the plot will create a grid of subplots for each time slice.
|
|
335
|
+
|
|
336
|
+
To create a FacetGrid plot, use:
|
|
329
337
|
|
|
330
338
|
ds.isel(time=slice(0, 9)).disdrodb.plot_spectrum(col="time", col_wrap=3)
|
|
331
339
|
|
|
@@ -465,7 +473,7 @@ def normalize_array(arr, method="max"):
|
|
|
465
473
|
|
|
466
474
|
Parameters
|
|
467
475
|
----------
|
|
468
|
-
arr :
|
|
476
|
+
arr : numpy.ndarray
|
|
469
477
|
Input array.
|
|
470
478
|
method : str
|
|
471
479
|
Normalization method. Options:
|
|
@@ -477,7 +485,7 @@ def normalize_array(arr, method="max"):
|
|
|
477
485
|
|
|
478
486
|
Returns
|
|
479
487
|
-------
|
|
480
|
-
|
|
488
|
+
numpy.ndarray
|
|
481
489
|
Normalized array.
|
|
482
490
|
"""
|
|
483
491
|
arr = np.asarray(arr, dtype=float)
|
|
@@ -699,12 +707,12 @@ def compute_dense_lines(
|
|
|
699
707
|
coord : str
|
|
700
708
|
The name of the coordinate/dimension of the DataArray to bin over.
|
|
701
709
|
``da.coords[coord]`` must be a 1D numeric array (monotonic is recommended).
|
|
702
|
-
x_bins :
|
|
703
|
-
Bin edges to bin the coordinate/dimension.
|
|
710
|
+
x_bins : array-like
|
|
711
|
+
Bin edges to bin the coordinate/dimension with shape (nx+1,).
|
|
704
712
|
Must be monotonically increasing.
|
|
705
713
|
The number of x-bins will be ``nx = len(x_bins) - 1``.
|
|
706
|
-
y_bins :
|
|
707
|
-
Bin edges for the DataArray values.
|
|
714
|
+
y_bins : array-like
|
|
715
|
+
Bin edges for the DataArray values with shape (ny+1,).
|
|
708
716
|
Must be monotonically increasing.
|
|
709
717
|
The number of y-bins will be ``ny = len(y_bins) - 1``.
|
|
710
718
|
normalization : bool, optional
|
|
@@ -714,7 +722,7 @@ def compute_dense_lines(
|
|
|
714
722
|
|
|
715
723
|
Returns
|
|
716
724
|
-------
|
|
717
|
-
|
|
725
|
+
xarray.DataArray
|
|
718
726
|
2D histogram of shape ``(ny, nx)``. Dimensions are ``('y', 'x')``, where:
|
|
719
727
|
|
|
720
728
|
- ``x``: the bin-center coordinate of ``x_bins`` (length ``nx``)
|
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: disdrodb
|
|
3
|
-
Version: 0.5.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.5.1
|
|
4
|
+
Summary: An open-source python software for standardized processing, sharing, and analysis of disdrometer data.
|
|
5
5
|
Author: Gionata Ghiggi
|
|
6
|
-
|
|
7
|
-
Project-URL:
|
|
8
|
-
Project-URL:
|
|
9
|
-
Project-URL:
|
|
10
|
-
Project-URL:
|
|
11
|
-
Project-URL:
|
|
12
|
-
|
|
6
|
+
License-Expression: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Homepage, https://github.com/ltelab/disdrodb
|
|
8
|
+
Project-URL: Documentation, https://disdrodb.readthedocs.io
|
|
9
|
+
Project-URL: Repository, https://github.com/ltelab/disdrodb
|
|
10
|
+
Project-URL: Source, https://github.com/ltelab/disdrodb
|
|
11
|
+
Project-URL: Issues, https://github.com/ltelab/disdrodb/issues
|
|
12
|
+
Project-URL: Changelog, https://github.com/ltelab/disdrodb/blob/main/CHANGELOG.md
|
|
13
|
+
Keywords: python,disdrometer,parsivel,drop size distribution,radar,remote sensing,precipitation,rainfall
|
|
13
14
|
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
-
Classifier: Intended Audience ::
|
|
15
|
-
Classifier:
|
|
15
|
+
Classifier: Intended Audience :: Science/Research
|
|
16
|
+
Classifier: Intended Audience :: Education
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
16
18
|
Classifier: Operating System :: Unix
|
|
17
|
-
Classifier: Operating System ::
|
|
18
|
-
Classifier: Operating System ::
|
|
19
|
+
Classifier: Operating System :: Microsoft
|
|
20
|
+
Classifier: Operating System :: MacOS
|
|
21
|
+
Classifier: Programming Language :: Python
|
|
22
|
+
Classifier: Programming Language :: Python :: 3
|
|
23
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
28
|
+
Classifier: Topic :: Scientific/Engineering
|
|
29
|
+
Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
|
|
19
30
|
Requires-Python: >=3.11
|
|
20
31
|
Description-Content-Type: text/markdown
|
|
21
32
|
License-File: LICENSE
|
|
@@ -50,28 +61,29 @@ Requires-Dist: twine; extra == "dev"
|
|
|
50
61
|
Requires-Dist: loghub; extra == "dev"
|
|
51
62
|
Dynamic: license-file
|
|
52
63
|
|
|
53
|
-
# 📦
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
64
|
+
# 📦 disdrodb
|
|
65
|
+
|
|
66
|
+
An open-source python software for standardized processing, sharing, and analysis of disdrometer data
|
|
67
|
+
|
|
68
|
+
| | |
|
|
69
|
+
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
70
|
+
| Deployment | [](https://pypi.org/project/disdrodb/) [](https://anaconda.org/conda-forge/disdrodb) |
|
|
71
|
+
| Activity | [](https://pypi.org/project/disdrodb/) [](https://anaconda.org/conda-forge/disdrodb) |
|
|
72
|
+
| Python Versions | [](https://www.python.org/downloads/) |
|
|
73
|
+
| Supported Systems | [](https://github.com/ltelab/disdrodb/actions/workflows/tests.yml) [](https://github.com/ltelab/disdrodb/actions/workflows/tests.yml) [](https://github.com/ltelab/disdrodb/actions/workflows/tests_windows.yml) |
|
|
74
|
+
| Project Status | [](https://www.repostatus.org/#active) |
|
|
75
|
+
| Build Status | [](https://github.com/ltelab/disdrodb/actions/workflows/tests.yml) [](https://github.com/ltelab/disdrodb/actions/workflows/lint.yml) [](https://disdrodb.readthedocs.io/en/latest/) |
|
|
76
|
+
| Linting | [](https://github.com/psf/black) [](https://github.com/astral-sh/ruff) [](https://github.com/codespell-project/codespell) |
|
|
77
|
+
| Code Coverage | [](https://coveralls.io/github/ltelab/disdrodb?branch=main) [](https://codecov.io/gh/ltelab/disdrodb) |
|
|
78
|
+
| Code Quality | [](https://www.codefactor.io/repository/github/ltelab/disdrodb) [](https://app.codacy.com/gh/ltelab/disdrodb/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [](https://codescene.io/projects/36773) |
|
|
79
|
+
| License | [](https://github.com/ltelab/disdrodb/blob/main/LICENSE) |
|
|
80
|
+
| Community | [](https://join.slack.com/t/disdrodbworkspace/shared_invite/zt-25l4mvgo7-cfBdXalzlWGd4Pt7H~FqoA) [](https://github.com/ltelab/disdrodb/discussions) |
|
|
81
|
+
| Citation | [](https://zenodo.org/doi/10.5281/zenodo.7680581) |
|
|
69
82
|
|
|
70
83
|
[**Slack**](https://join.slack.com/t/disdrodbworkspace/shared_invite/zt-25l4mvgo7-cfBdXalzlWGd4Pt7H~FqoA) | [**Documentation**](https://disdrodb.readthedocs.io/en/latest/)
|
|
71
84
|
|
|
72
|
-
DISDRODB is
|
|
73
|
-
|
|
74
|
-
The DISDRODB project also aims to establish a global standard for sharing disdrometer observations.
|
|
85
|
+
DISDRODB is an international joint effort to index, collect and homogenize drop size distribution (DSD) data from around the world.
|
|
86
|
+
DISDRODB aims to establish a global standard for sharing disdrometer observations.
|
|
75
87
|
Built on FAIR data principles and Climate & Forecast (CF) conventions, DISDRODB standards facilitate the processing, analysis and visualization of disdrometer data.
|
|
76
88
|
|
|
77
89
|
## ℹ️ Software Overview
|
|
@@ -88,7 +100,6 @@ The software enables you to:
|
|
|
88
100
|
|
|
89
101
|
- Compute empirical and model-based drop size distribution parameters and derive geophysical and polarimetric radar variables of interest (DISDRODB L2 product)
|
|
90
102
|
|
|
91
|
-
Currently, the DISDRODB Working Group is finalizing the development of the L1 and L2 scientific products.
|
|
92
103
|
If you have ideas, algorithms, data, or expertise to share, or you want to contribute to the future DISDRODB products, do not hesitate to get in touch!!!
|
|
93
104
|
|
|
94
105
|
Join the [**DISDRODB Slack Workspace**](https://join.slack.com/t/disdrodbworkspace/shared_invite/zt-25l4mvgo7-cfBdXalzlWGd4Pt7H~FqoA) to meet the DISDRODB Community!
|