disdrodb 0.1.3__py3-none-any.whl → 0.1.5__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/api/checks.py +70 -47
- disdrodb/api/configs.py +0 -2
- disdrodb/api/create_directories.py +0 -2
- disdrodb/api/info.py +3 -3
- disdrodb/api/io.py +48 -8
- disdrodb/api/path.py +116 -133
- disdrodb/api/search.py +12 -3
- disdrodb/cli/disdrodb_create_summary.py +113 -0
- disdrodb/cli/disdrodb_create_summary_station.py +11 -1
- disdrodb/cli/disdrodb_run_l0a_station.py +1 -1
- disdrodb/cli/disdrodb_run_l0b_station.py +2 -2
- disdrodb/cli/disdrodb_run_l0c_station.py +2 -2
- disdrodb/cli/disdrodb_run_l1_station.py +2 -2
- disdrodb/cli/disdrodb_run_l2e_station.py +2 -2
- disdrodb/cli/disdrodb_run_l2m_station.py +2 -2
- disdrodb/constants.py +1 -1
- disdrodb/data_transfer/download_data.py +123 -7
- disdrodb/etc/products/L1/global.yaml +1 -1
- disdrodb/etc/products/L2E/5MIN.yaml +1 -0
- disdrodb/etc/products/L2E/global.yaml +1 -1
- disdrodb/etc/products/L2M/GAMMA_GS_ND_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/GAMMA_ML.yaml +1 -1
- disdrodb/etc/products/L2M/LOGNORMAL_GS_LOG_ND_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/LOGNORMAL_GS_ND_MAE.yaml +6 -0
- disdrodb/etc/products/L2M/LOGNORMAL_ML.yaml +8 -0
- disdrodb/etc/products/L2M/global.yaml +11 -3
- disdrodb/issue/writer.py +2 -0
- disdrodb/l0/check_configs.py +49 -16
- disdrodb/l0/configs/LPM/l0a_encodings.yml +2 -2
- disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +2 -2
- disdrodb/l0/configs/LPM/l0b_encodings.yml +2 -2
- disdrodb/l0/configs/LPM/raw_data_format.yml +2 -2
- disdrodb/l0/configs/PWS100/l0b_encodings.yml +1 -0
- disdrodb/l0/configs/SWS250/bins_diameter.yml +108 -0
- disdrodb/l0/configs/SWS250/bins_velocity.yml +83 -0
- disdrodb/l0/configs/SWS250/l0a_encodings.yml +18 -0
- disdrodb/l0/configs/SWS250/l0b_cf_attrs.yml +72 -0
- disdrodb/l0/configs/SWS250/l0b_encodings.yml +155 -0
- disdrodb/l0/configs/SWS250/raw_data_format.yml +148 -0
- disdrodb/l0/l0a_processing.py +10 -5
- disdrodb/l0/l0b_nc_processing.py +10 -6
- disdrodb/l0/l0b_processing.py +92 -72
- disdrodb/l0/l0c_processing.py +369 -251
- disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +8 -1
- disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +2 -2
- disdrodb/l0/readers/LPM/BELGIUM/ULIEGE.py +256 -0
- disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +2 -2
- disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +2 -2
- disdrodb/l0/readers/LPM/GERMANY/DWD.py +491 -0
- disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +2 -2
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_W.py +2 -2
- disdrodb/l0/readers/LPM/KIT/CHWALA.py +2 -2
- disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +107 -12
- disdrodb/l0/readers/LPM/SLOVENIA/UL.py +3 -3
- disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +2 -2
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +5 -14
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +5 -14
- disdrodb/l0/readers/PARSIVEL/SLOVENIA/UL.py +117 -8
- disdrodb/l0/readers/PARSIVEL2/ARM/ARM_PARSIVEL2.py +4 -0
- disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +10 -14
- disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +10 -14
- disdrodb/l0/readers/PARSIVEL2/CANADA/UQAM_NC.py +69 -0
- disdrodb/l0/readers/PARSIVEL2/DENMARK/DTU.py +8 -14
- disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_raw.py +382 -0
- disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +4 -0
- disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/GREECE/NOA.py +127 -0
- disdrodb/l0/readers/PARSIVEL2/ITALY/HYDROX.py +239 -0
- disdrodb/l0/readers/PARSIVEL2/MPI/BCO_PARSIVEL2.py +136 -0
- disdrodb/l0/readers/PARSIVEL2/MPI/BOWTIE.py +220 -0
- disdrodb/l0/readers/PARSIVEL2/NASA/LPVEX.py +109 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +5 -11
- disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_MIPS.py +4 -17
- disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +5 -14
- disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +10 -13
- disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +10 -13
- disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT_NC.py +3 -0
- disdrodb/l0/readers/PARSIVEL2/PHILIPPINES/PANGASA.py +232 -0
- disdrodb/l0/readers/PARSIVEL2/SPAIN/CENER.py +6 -18
- disdrodb/l0/readers/PARSIVEL2/SPAIN/GRANADA.py +120 -0
- disdrodb/l0/readers/PARSIVEL2/USA/C3WE.py +7 -25
- disdrodb/l0/readers/PWS100/AUSTRIA/HOAL.py +321 -0
- disdrodb/l0/readers/SW250/BELGIUM/KMI.py +239 -0
- disdrodb/l1/beard_model.py +31 -129
- disdrodb/l1/fall_velocity.py +156 -57
- disdrodb/l1/filters.py +25 -28
- disdrodb/l1/processing.py +12 -14
- disdrodb/l1_env/routines.py +46 -17
- disdrodb/l2/empirical_dsd.py +6 -0
- disdrodb/l2/processing.py +3 -3
- disdrodb/metadata/checks.py +132 -125
- disdrodb/metadata/geolocation.py +0 -2
- disdrodb/psd/fitting.py +180 -210
- disdrodb/psd/models.py +1 -1
- disdrodb/routines/__init__.py +54 -0
- disdrodb/{l0/routines.py → routines/l0.py} +288 -418
- disdrodb/{l1/routines.py → routines/l1.py} +60 -92
- disdrodb/{l2/routines.py → routines/l2.py} +284 -485
- disdrodb/{routines.py → routines/wrappers.py} +100 -7
- disdrodb/scattering/axis_ratio.py +95 -85
- disdrodb/scattering/permittivity.py +24 -0
- disdrodb/scattering/routines.py +56 -36
- disdrodb/summary/routines.py +147 -45
- disdrodb/utils/archiving.py +434 -0
- disdrodb/utils/attrs.py +2 -0
- disdrodb/utils/cli.py +5 -5
- disdrodb/utils/dask.py +62 -1
- disdrodb/utils/decorators.py +31 -0
- disdrodb/utils/encoding.py +10 -1
- disdrodb/{l2 → utils}/event.py +1 -66
- disdrodb/utils/logger.py +1 -1
- disdrodb/utils/manipulations.py +22 -12
- disdrodb/utils/routines.py +166 -0
- disdrodb/utils/time.py +5 -293
- disdrodb/utils/xarray.py +3 -0
- disdrodb/viz/plots.py +109 -15
- {disdrodb-0.1.3.dist-info → disdrodb-0.1.5.dist-info}/METADATA +3 -2
- {disdrodb-0.1.3.dist-info → disdrodb-0.1.5.dist-info}/RECORD +124 -96
- {disdrodb-0.1.3.dist-info → disdrodb-0.1.5.dist-info}/entry_points.txt +1 -0
- {disdrodb-0.1.3.dist-info → disdrodb-0.1.5.dist-info}/WHEEL +0 -0
- {disdrodb-0.1.3.dist-info → disdrodb-0.1.5.dist-info}/licenses/LICENSE +0 -0
- {disdrodb-0.1.3.dist-info → disdrodb-0.1.5.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
center:
|
|
2
|
+
0: 0.55
|
|
3
|
+
1: 0.95
|
|
4
|
+
2: 1.41
|
|
5
|
+
3: 1.84
|
|
6
|
+
4: 2.465
|
|
7
|
+
5: 3.27
|
|
8
|
+
6: 4.01
|
|
9
|
+
7: 4.625
|
|
10
|
+
8: 5.275
|
|
11
|
+
9: 6.325
|
|
12
|
+
10: 7.63
|
|
13
|
+
11: 9.51
|
|
14
|
+
12: 11.745
|
|
15
|
+
13: 14.14
|
|
16
|
+
14: 17.775
|
|
17
|
+
15: 22.5
|
|
18
|
+
bounds:
|
|
19
|
+
0:
|
|
20
|
+
- 0.40
|
|
21
|
+
- 0.70
|
|
22
|
+
1:
|
|
23
|
+
- 0.70
|
|
24
|
+
- 1.20
|
|
25
|
+
2:
|
|
26
|
+
- 1.20
|
|
27
|
+
- 1.62
|
|
28
|
+
3:
|
|
29
|
+
- 1.62
|
|
30
|
+
- 2.06
|
|
31
|
+
4:
|
|
32
|
+
- 2.06
|
|
33
|
+
- 2.87
|
|
34
|
+
5:
|
|
35
|
+
- 2.87
|
|
36
|
+
- 3.67
|
|
37
|
+
6:
|
|
38
|
+
- 3.67
|
|
39
|
+
- 4.35
|
|
40
|
+
7:
|
|
41
|
+
- 4.35
|
|
42
|
+
- 4.90
|
|
43
|
+
8:
|
|
44
|
+
- 4.90
|
|
45
|
+
- 5.65
|
|
46
|
+
9:
|
|
47
|
+
- 5.65
|
|
48
|
+
- 7.00
|
|
49
|
+
10:
|
|
50
|
+
- 7.00
|
|
51
|
+
- 8.26
|
|
52
|
+
11:
|
|
53
|
+
- 8.26
|
|
54
|
+
- 10.76
|
|
55
|
+
12:
|
|
56
|
+
- 10.76
|
|
57
|
+
- 12.73
|
|
58
|
+
13:
|
|
59
|
+
- 12.73
|
|
60
|
+
- 15.55
|
|
61
|
+
14:
|
|
62
|
+
- 15.55
|
|
63
|
+
- 20.00
|
|
64
|
+
15:
|
|
65
|
+
- 20.00
|
|
66
|
+
- 25.00
|
|
67
|
+
width:
|
|
68
|
+
0: 0.3
|
|
69
|
+
1: 0.5
|
|
70
|
+
2: 0.42
|
|
71
|
+
3: 0.44
|
|
72
|
+
4: 0.81
|
|
73
|
+
5: 0.8
|
|
74
|
+
6: 0.68
|
|
75
|
+
7: 0.55
|
|
76
|
+
8: 0.75
|
|
77
|
+
9: 1.35
|
|
78
|
+
10: 1.26
|
|
79
|
+
11: 2.5
|
|
80
|
+
12: 1.97
|
|
81
|
+
13: 2.82
|
|
82
|
+
14: 4.45
|
|
83
|
+
15: 5.0
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
precipitation_rate: "float32"
|
|
2
|
+
precipitation_accumulated: "float32"
|
|
3
|
+
weather_code_synop_4680: "float32" # 'uint16'
|
|
4
|
+
weather_code_metar_4678: "str"
|
|
5
|
+
past_weather1: "str"
|
|
6
|
+
past_weather2: "str"
|
|
7
|
+
mor_visibility_5min: "float32"
|
|
8
|
+
mor_visibility: "float32" # 'uint16'
|
|
9
|
+
number_particles: "float32" # 'uint32'
|
|
10
|
+
sensor_temperature: "float32" # 'uint16'
|
|
11
|
+
obstruction_status: "str"
|
|
12
|
+
total_extinction_coefficient: "float32"
|
|
13
|
+
transmissometer_extinction_coefficient: "float32"
|
|
14
|
+
back_scatter_extinction_coefficient: "float32"
|
|
15
|
+
ambient_light_sensor_signal: "float32"
|
|
16
|
+
sensor_status: "str" #
|
|
17
|
+
ambient_light_sensor_signal_status: "str"
|
|
18
|
+
raw_drop_number: "str"
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
precipitation_rate:
|
|
2
|
+
description: Rainfall rate
|
|
3
|
+
long_name: Precipitation rate
|
|
4
|
+
units: mm/h
|
|
5
|
+
precipitation_accumulated:
|
|
6
|
+
description: Accumulated rain amount over the measurement interval
|
|
7
|
+
long_name: Precipitation accumulated
|
|
8
|
+
units: mm
|
|
9
|
+
weather_code_synop_4680:
|
|
10
|
+
description: SYNOP weather code according to table 4680 of Parsivel documentation
|
|
11
|
+
long_name: Weather code SYNOP 4680
|
|
12
|
+
units: ""
|
|
13
|
+
weather_code_metar_4678:
|
|
14
|
+
description: METAR/SPECI weather code according to table 4678 of Parsivel documentation
|
|
15
|
+
long_name: Weather code METAR 4678
|
|
16
|
+
units: ""
|
|
17
|
+
past_weather1:
|
|
18
|
+
description: Past weather code 1
|
|
19
|
+
long_name: Past weather 1
|
|
20
|
+
units: ""
|
|
21
|
+
past_weather2:
|
|
22
|
+
description: Past weather code 2
|
|
23
|
+
long_name: Past weather 2
|
|
24
|
+
units: ""
|
|
25
|
+
mor_visibility_5min:
|
|
26
|
+
description: Meteorological Optical Range in precipitation (5 minute average)
|
|
27
|
+
long_name: MOR visibility 5 minute
|
|
28
|
+
units: m
|
|
29
|
+
mor_visibility:
|
|
30
|
+
description: Meteorological Optical Range in precipitation
|
|
31
|
+
long_name: MOR visibility
|
|
32
|
+
units: m
|
|
33
|
+
number_particles:
|
|
34
|
+
description: Number of particles detected and validated
|
|
35
|
+
long_name: Number of detected particles
|
|
36
|
+
units: ""
|
|
37
|
+
sensor_temperature:
|
|
38
|
+
description: Temperature in sensor housing
|
|
39
|
+
long_name: Temperature of the sensor
|
|
40
|
+
units: "degC"
|
|
41
|
+
obstruction_status:
|
|
42
|
+
description: Obstruction status of the sensor
|
|
43
|
+
long_name: Obstruction status
|
|
44
|
+
units: ""
|
|
45
|
+
total_extinction_coefficient:
|
|
46
|
+
description: Total extinction coefficient
|
|
47
|
+
long_name: Total extinction coefficient
|
|
48
|
+
units: "1/km"
|
|
49
|
+
transmissometer_extinction_coefficient:
|
|
50
|
+
description: Transmissometer extinction coefficient
|
|
51
|
+
long_name: Transmissometer extinction coefficient
|
|
52
|
+
units: "1/km"
|
|
53
|
+
back_scatter_extinction_coefficient:
|
|
54
|
+
description: Back scatter extinction coefficient
|
|
55
|
+
long_name: Back scatter extinction coefficient
|
|
56
|
+
units: "1/km"
|
|
57
|
+
ambient_light_sensor_signal:
|
|
58
|
+
description: Ambient light sensor signal
|
|
59
|
+
long_name: Ambient light sensor signal
|
|
60
|
+
units: "cd/m2"
|
|
61
|
+
sensor_status:
|
|
62
|
+
description: Sensor status
|
|
63
|
+
long_name: Sensor status
|
|
64
|
+
units: ""
|
|
65
|
+
ambient_light_sensor_signal_status:
|
|
66
|
+
description: Ambient light sensor signal status
|
|
67
|
+
long_name: Ambient light sensor signal status
|
|
68
|
+
units: ""
|
|
69
|
+
raw_drop_number:
|
|
70
|
+
description: Drop counts per diameter and velocity class
|
|
71
|
+
long_name: Raw drop number
|
|
72
|
+
units: ""
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
precipitation_rate:
|
|
2
|
+
dtype: float32
|
|
3
|
+
zlib: true
|
|
4
|
+
complevel: 3
|
|
5
|
+
shuffle: true
|
|
6
|
+
fletcher32: false
|
|
7
|
+
contiguous: false
|
|
8
|
+
chunksizes: 5000
|
|
9
|
+
precipitation_accumulated:
|
|
10
|
+
dtype: float32
|
|
11
|
+
zlib: true
|
|
12
|
+
complevel: 3
|
|
13
|
+
shuffle: true
|
|
14
|
+
fletcher32: false
|
|
15
|
+
contiguous: false
|
|
16
|
+
chunksizes: 5000
|
|
17
|
+
weather_code_synop_4680:
|
|
18
|
+
dtype: uint8
|
|
19
|
+
zlib: true
|
|
20
|
+
complevel: 3
|
|
21
|
+
shuffle: true
|
|
22
|
+
fletcher32: false
|
|
23
|
+
contiguous: false
|
|
24
|
+
chunksizes: 5000
|
|
25
|
+
_FillValue: 255
|
|
26
|
+
weather_code_metar_4678:
|
|
27
|
+
dtype: str
|
|
28
|
+
zlib: false
|
|
29
|
+
complevel: 3
|
|
30
|
+
shuffle: true
|
|
31
|
+
fletcher32: false
|
|
32
|
+
contiguous: false
|
|
33
|
+
chunksizes: 5000
|
|
34
|
+
past_weather1:
|
|
35
|
+
dtype: str
|
|
36
|
+
zlib: false
|
|
37
|
+
complevel: 3
|
|
38
|
+
shuffle: true
|
|
39
|
+
fletcher32: false
|
|
40
|
+
contiguous: false
|
|
41
|
+
chunksizes: 5000
|
|
42
|
+
past_weather2:
|
|
43
|
+
dtype: str
|
|
44
|
+
zlib: false
|
|
45
|
+
complevel: 3
|
|
46
|
+
shuffle: true
|
|
47
|
+
fletcher32: false
|
|
48
|
+
contiguous: false
|
|
49
|
+
chunksizes: 5000
|
|
50
|
+
mor_visibility_5min:
|
|
51
|
+
dtype: uint16
|
|
52
|
+
zlib: true
|
|
53
|
+
complevel: 3
|
|
54
|
+
shuffle: true
|
|
55
|
+
fletcher32: false
|
|
56
|
+
contiguous: false
|
|
57
|
+
chunksizes: 5000
|
|
58
|
+
_FillValue: 65535
|
|
59
|
+
mor_visibility:
|
|
60
|
+
dtype: uint16
|
|
61
|
+
zlib: true
|
|
62
|
+
complevel: 3
|
|
63
|
+
shuffle: true
|
|
64
|
+
fletcher32: false
|
|
65
|
+
contiguous: false
|
|
66
|
+
chunksizes: 5000
|
|
67
|
+
_FillValue: 65535
|
|
68
|
+
number_particles:
|
|
69
|
+
dtype: uint16
|
|
70
|
+
zlib: true
|
|
71
|
+
complevel: 3
|
|
72
|
+
shuffle: true
|
|
73
|
+
fletcher32: false
|
|
74
|
+
contiguous: false
|
|
75
|
+
chunksizes: 5000
|
|
76
|
+
_FillValue: 65535
|
|
77
|
+
sensor_temperature:
|
|
78
|
+
dtype: uint16
|
|
79
|
+
scale_factor: 0.1
|
|
80
|
+
add_offset: -60.0
|
|
81
|
+
zlib: true
|
|
82
|
+
complevel: 3
|
|
83
|
+
shuffle: true
|
|
84
|
+
fletcher32: false
|
|
85
|
+
contiguous: false
|
|
86
|
+
chunksizes: 5000
|
|
87
|
+
_FillValue: 65535
|
|
88
|
+
obstruction_status:
|
|
89
|
+
dtype: str
|
|
90
|
+
zlib: false
|
|
91
|
+
complevel: 3
|
|
92
|
+
shuffle: true
|
|
93
|
+
fletcher32: false
|
|
94
|
+
contiguous: false
|
|
95
|
+
chunksizes: 5000
|
|
96
|
+
sensor_status:
|
|
97
|
+
dtype: str
|
|
98
|
+
zlib: false
|
|
99
|
+
complevel: 3
|
|
100
|
+
shuffle: true
|
|
101
|
+
fletcher32: false
|
|
102
|
+
contiguous: false
|
|
103
|
+
chunksizes: 5000
|
|
104
|
+
ambient_light_sensor_signal_status:
|
|
105
|
+
dtype: str
|
|
106
|
+
zlib: false
|
|
107
|
+
complevel: 3
|
|
108
|
+
shuffle: true
|
|
109
|
+
fletcher32: false
|
|
110
|
+
contiguous: false
|
|
111
|
+
chunksizes: 5000
|
|
112
|
+
total_extinction_coefficient:
|
|
113
|
+
dtype: float32
|
|
114
|
+
zlib: true
|
|
115
|
+
complevel: 3
|
|
116
|
+
shuffle: true
|
|
117
|
+
fletcher32: false
|
|
118
|
+
contiguous: false
|
|
119
|
+
chunksizes: 5000
|
|
120
|
+
transmissometer_extinction_coefficient:
|
|
121
|
+
dtype: float32
|
|
122
|
+
zlib: true
|
|
123
|
+
complevel: 3
|
|
124
|
+
shuffle: true
|
|
125
|
+
fletcher32: false
|
|
126
|
+
contiguous: false
|
|
127
|
+
chunksizes: 5000
|
|
128
|
+
back_scatter_extinction_coefficient:
|
|
129
|
+
dtype: float32
|
|
130
|
+
zlib: true
|
|
131
|
+
complevel: 3
|
|
132
|
+
shuffle: true
|
|
133
|
+
fletcher32: false
|
|
134
|
+
contiguous: false
|
|
135
|
+
chunksizes: 5000
|
|
136
|
+
ambient_light_sensor_signal:
|
|
137
|
+
dtype: float32
|
|
138
|
+
zlib: true
|
|
139
|
+
complevel: 3
|
|
140
|
+
shuffle: true
|
|
141
|
+
fletcher32: false
|
|
142
|
+
contiguous: false
|
|
143
|
+
chunksizes: 5000
|
|
144
|
+
raw_drop_number:
|
|
145
|
+
dtype: uint16
|
|
146
|
+
zlib: true
|
|
147
|
+
complevel: 3
|
|
148
|
+
shuffle: true
|
|
149
|
+
fletcher32: false
|
|
150
|
+
contiguous: false
|
|
151
|
+
_FillValue: 65535
|
|
152
|
+
chunksizes:
|
|
153
|
+
- 5000
|
|
154
|
+
- 16
|
|
155
|
+
- 21
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
precipitation_rate:
|
|
2
|
+
n_digits: 6
|
|
3
|
+
n_characters: 7
|
|
4
|
+
n_decimals: 3
|
|
5
|
+
n_naturals: 3
|
|
6
|
+
data_range:
|
|
7
|
+
- 0
|
|
8
|
+
- 9999.999
|
|
9
|
+
nan_flags: null
|
|
10
|
+
precipitation_accumulated:
|
|
11
|
+
n_digits: 6
|
|
12
|
+
n_characters: 7
|
|
13
|
+
n_decimals: 2
|
|
14
|
+
n_naturals: 4
|
|
15
|
+
data_range:
|
|
16
|
+
- 0
|
|
17
|
+
- 9999.0
|
|
18
|
+
nan_flags: null
|
|
19
|
+
weather_code_synop_4680:
|
|
20
|
+
n_digits: 2
|
|
21
|
+
n_characters: 2
|
|
22
|
+
n_decimals: 0
|
|
23
|
+
n_naturals: 2
|
|
24
|
+
data_range:
|
|
25
|
+
- 0
|
|
26
|
+
- 89
|
|
27
|
+
nan_flags: null
|
|
28
|
+
weather_code_metar_4678:
|
|
29
|
+
n_digits: null
|
|
30
|
+
n_characters: null
|
|
31
|
+
n_decimals: null
|
|
32
|
+
n_naturals: null
|
|
33
|
+
data_range: null
|
|
34
|
+
nan_flags: null
|
|
35
|
+
past_weather1:
|
|
36
|
+
n_digits: null
|
|
37
|
+
n_characters: null
|
|
38
|
+
n_decimals: null
|
|
39
|
+
n_naturals: null
|
|
40
|
+
data_range: null
|
|
41
|
+
nan_flags: null
|
|
42
|
+
past_weather2:
|
|
43
|
+
n_digits: null
|
|
44
|
+
n_characters: null
|
|
45
|
+
n_decimals: null
|
|
46
|
+
n_naturals: null
|
|
47
|
+
data_range: null
|
|
48
|
+
nan_flags: null
|
|
49
|
+
mor_visibility_5min:
|
|
50
|
+
n_digits: null
|
|
51
|
+
n_characters: null
|
|
52
|
+
n_decimals: null
|
|
53
|
+
n_naturals: null
|
|
54
|
+
data_range: null
|
|
55
|
+
nan_flags: null
|
|
56
|
+
mor_visibility:
|
|
57
|
+
n_digits: null
|
|
58
|
+
n_characters: null
|
|
59
|
+
n_decimals: null
|
|
60
|
+
n_naturals: null
|
|
61
|
+
data_range: null
|
|
62
|
+
nan_flags: null
|
|
63
|
+
number_particles:
|
|
64
|
+
n_digits: 4
|
|
65
|
+
n_characters: 4
|
|
66
|
+
n_decimals: 0
|
|
67
|
+
n_naturals: 4
|
|
68
|
+
data_range:
|
|
69
|
+
- 0
|
|
70
|
+
- 9999
|
|
71
|
+
nan_flags: null
|
|
72
|
+
sensor_temperature:
|
|
73
|
+
n_digits: 4
|
|
74
|
+
n_characters: 6
|
|
75
|
+
n_decimals: 1
|
|
76
|
+
n_naturals: 3
|
|
77
|
+
data_range:
|
|
78
|
+
- -99
|
|
79
|
+
- 100
|
|
80
|
+
nan_flags: null
|
|
81
|
+
obstruction_status:
|
|
82
|
+
n_digits: null
|
|
83
|
+
n_characters: null
|
|
84
|
+
n_decimals: null
|
|
85
|
+
n_naturals: null
|
|
86
|
+
data_range: null
|
|
87
|
+
nan_flags: null
|
|
88
|
+
total_extinction_coefficient:
|
|
89
|
+
n_digits: 5
|
|
90
|
+
n_characters: 6
|
|
91
|
+
n_decimals: 2
|
|
92
|
+
n_naturals: 3
|
|
93
|
+
data_range:
|
|
94
|
+
- 0
|
|
95
|
+
- 999.99
|
|
96
|
+
nan_flags: null
|
|
97
|
+
transmissometer_extinction_coefficient:
|
|
98
|
+
n_digits: 5
|
|
99
|
+
n_characters: 6
|
|
100
|
+
n_decimals: 2
|
|
101
|
+
n_naturals: 3
|
|
102
|
+
data_range:
|
|
103
|
+
- 0
|
|
104
|
+
- 999.99
|
|
105
|
+
nan_flags: null
|
|
106
|
+
back_scatter_extinction_coefficient:
|
|
107
|
+
n_digits: 5
|
|
108
|
+
n_characters: 7
|
|
109
|
+
n_decimals: 2
|
|
110
|
+
n_naturals: 3
|
|
111
|
+
data_range:
|
|
112
|
+
- -999.99
|
|
113
|
+
- 999.99
|
|
114
|
+
nan_flags: null
|
|
115
|
+
ambient_light_sensor_signal:
|
|
116
|
+
n_digits: 5
|
|
117
|
+
n_characters: 5
|
|
118
|
+
n_decimals: 0
|
|
119
|
+
n_naturals: 5
|
|
120
|
+
data_range:
|
|
121
|
+
- 0
|
|
122
|
+
- 99998
|
|
123
|
+
nan_flags: 99999
|
|
124
|
+
sensor_status:
|
|
125
|
+
n_digits: null
|
|
126
|
+
n_characters: null
|
|
127
|
+
n_decimals: null
|
|
128
|
+
n_naturals: null
|
|
129
|
+
data_range: null
|
|
130
|
+
nan_flags: null
|
|
131
|
+
ambient_light_sensor_signal_status:
|
|
132
|
+
n_digits: null
|
|
133
|
+
n_characters: null
|
|
134
|
+
n_decimals: null
|
|
135
|
+
n_naturals: null
|
|
136
|
+
data_range: null
|
|
137
|
+
nan_flags: null
|
|
138
|
+
raw_drop_number:
|
|
139
|
+
n_digits: 0
|
|
140
|
+
n_characters: 4096
|
|
141
|
+
n_decimals: 0
|
|
142
|
+
n_naturals: 0
|
|
143
|
+
data_range: null
|
|
144
|
+
nan_flags: null
|
|
145
|
+
dimension_order:
|
|
146
|
+
- velocity_bin_center
|
|
147
|
+
- diameter_bin_center
|
|
148
|
+
n_values: 336
|
disdrodb/l0/l0a_processing.py
CHANGED
|
@@ -269,13 +269,15 @@ def remove_issue_timesteps(df, issue_dict, logger=None, verbose=False):
|
|
|
269
269
|
# Retrieve timesteps and time_periods
|
|
270
270
|
timesteps = issue_dict.get("timesteps", None)
|
|
271
271
|
time_periods = issue_dict.get("time_periods", None)
|
|
272
|
+
timesteps = [] if timesteps is None else timesteps
|
|
273
|
+
time_periods = [] if time_periods is None else time_periods
|
|
272
274
|
|
|
273
275
|
# Drop rows of specified timesteps
|
|
274
|
-
if timesteps:
|
|
276
|
+
if len(timesteps) > 0:
|
|
275
277
|
df = drop_timesteps(df=df, timesteps=timesteps)
|
|
276
278
|
|
|
277
279
|
# Drop rows within specified time_period
|
|
278
|
-
if time_periods:
|
|
280
|
+
if len(time_periods) > 0:
|
|
279
281
|
df = drop_time_periods(df, time_periods=time_periods)
|
|
280
282
|
|
|
281
283
|
# Report number of dropped rows
|
|
@@ -804,9 +806,6 @@ def read_l0a_dataframe(
|
|
|
804
806
|
# Define the list of dataframe
|
|
805
807
|
df = pq.ParquetDataset(filepaths).read().to_pandas()
|
|
806
808
|
|
|
807
|
-
# Ensure no index
|
|
808
|
-
df = df.reset_index(drop=True)
|
|
809
|
-
|
|
810
809
|
# Reduce rows
|
|
811
810
|
if debugging_mode:
|
|
812
811
|
n_rows = min(100, len(df))
|
|
@@ -815,6 +814,12 @@ def read_l0a_dataframe(
|
|
|
815
814
|
# Ensure time is in nanoseconds
|
|
816
815
|
df["time"] = df["time"].astype("M8[ns]")
|
|
817
816
|
|
|
817
|
+
# Ensure sorted by time
|
|
818
|
+
df = df.sort_values(by="time")
|
|
819
|
+
|
|
820
|
+
# Ensure no index
|
|
821
|
+
df = df.reset_index(drop=True)
|
|
822
|
+
|
|
818
823
|
# ---------------------------------------------------
|
|
819
824
|
# Return dataframe
|
|
820
825
|
return df
|
disdrodb/l0/l0b_nc_processing.py
CHANGED
|
@@ -36,7 +36,6 @@ from disdrodb.l0.standards import (
|
|
|
36
36
|
from disdrodb.utils.logger import (
|
|
37
37
|
log_error,
|
|
38
38
|
# log_warning,
|
|
39
|
-
# log_debug,
|
|
40
39
|
log_info,
|
|
41
40
|
)
|
|
42
41
|
|
|
@@ -347,7 +346,7 @@ def drop_timesteps(ds, timesteps: list):
|
|
|
347
346
|
# Ensure there's at least one timestep left
|
|
348
347
|
if ds_filtered.sizes.get("time", 0) == 0:
|
|
349
348
|
raise ValueError(
|
|
350
|
-
"No timesteps left after removing problematic timesteps.
|
|
349
|
+
"No timesteps left after removing problematic timesteps. Maybe you need to adjust the issue YAML file.",
|
|
351
350
|
)
|
|
352
351
|
return ds_filtered
|
|
353
352
|
|
|
@@ -423,16 +422,21 @@ def remove_issue_timesteps(
|
|
|
423
422
|
ValueError
|
|
424
423
|
If after removing specified timesteps/periods no data remains.
|
|
425
424
|
"""
|
|
425
|
+
# Retrieve number of initial rows
|
|
426
426
|
n_initial = ds.sizes.get("time", 0)
|
|
427
|
-
|
|
428
|
-
|
|
427
|
+
|
|
428
|
+
# Retrieve timesteps and time_periods
|
|
429
|
+
timesteps = issue_dict.get("timesteps")
|
|
430
|
+
time_periods = issue_dict.get("time_periods")
|
|
431
|
+
timesteps = [] if timesteps is None else timesteps
|
|
432
|
+
time_periods = [] if time_periods is None else time_periods
|
|
429
433
|
|
|
430
434
|
# Drop individual timesteps
|
|
431
|
-
if timesteps:
|
|
435
|
+
if len(timesteps) > 0:
|
|
432
436
|
ds = drop_timesteps(ds, timesteps)
|
|
433
437
|
|
|
434
438
|
# Drop intervals of time
|
|
435
|
-
if time_periods:
|
|
439
|
+
if len(time_periods) > 0:
|
|
436
440
|
ds = drop_time_periods(ds, time_periods)
|
|
437
441
|
|
|
438
442
|
# Report number dropped
|