disdrodb 0.1.2__py3-none-any.whl → 0.1.4__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.
Files changed (142) hide show
  1. disdrodb/__init__.py +68 -34
  2. disdrodb/_config.py +5 -4
  3. disdrodb/_version.py +16 -3
  4. disdrodb/accessor/__init__.py +20 -0
  5. disdrodb/accessor/methods.py +125 -0
  6. disdrodb/api/checks.py +177 -24
  7. disdrodb/api/configs.py +3 -3
  8. disdrodb/api/info.py +13 -13
  9. disdrodb/api/io.py +281 -22
  10. disdrodb/api/path.py +184 -195
  11. disdrodb/api/search.py +18 -9
  12. disdrodb/cli/disdrodb_create_summary.py +103 -0
  13. disdrodb/cli/disdrodb_create_summary_station.py +91 -0
  14. disdrodb/cli/disdrodb_run_l0.py +1 -1
  15. disdrodb/cli/disdrodb_run_l0_station.py +1 -1
  16. disdrodb/cli/disdrodb_run_l0a_station.py +1 -1
  17. disdrodb/cli/disdrodb_run_l0b.py +1 -1
  18. disdrodb/cli/disdrodb_run_l0b_station.py +3 -3
  19. disdrodb/cli/disdrodb_run_l0c.py +1 -1
  20. disdrodb/cli/disdrodb_run_l0c_station.py +3 -3
  21. disdrodb/cli/disdrodb_run_l1_station.py +2 -2
  22. disdrodb/cli/disdrodb_run_l2e_station.py +2 -2
  23. disdrodb/cli/disdrodb_run_l2m_station.py +2 -2
  24. disdrodb/configs.py +149 -4
  25. disdrodb/constants.py +61 -0
  26. disdrodb/data_transfer/download_data.py +127 -11
  27. disdrodb/etc/configs/attributes.yaml +339 -0
  28. disdrodb/etc/configs/encodings.yaml +473 -0
  29. disdrodb/etc/products/L1/global.yaml +13 -0
  30. disdrodb/etc/products/L2E/10MIN.yaml +12 -0
  31. disdrodb/etc/products/L2E/1MIN.yaml +1 -0
  32. disdrodb/etc/products/L2E/global.yaml +22 -0
  33. disdrodb/etc/products/L2M/10MIN.yaml +12 -0
  34. disdrodb/etc/products/L2M/GAMMA_ML.yaml +8 -0
  35. disdrodb/etc/products/L2M/NGAMMA_GS_LOG_ND_MAE.yaml +6 -0
  36. disdrodb/etc/products/L2M/NGAMMA_GS_ND_MAE.yaml +6 -0
  37. disdrodb/etc/products/L2M/NGAMMA_GS_Z_MAE.yaml +6 -0
  38. disdrodb/etc/products/L2M/global.yaml +26 -0
  39. disdrodb/issue/writer.py +2 -0
  40. disdrodb/l0/__init__.py +13 -0
  41. disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +4 -4
  42. disdrodb/l0/configs/PARSIVEL/l0b_cf_attrs.yml +1 -1
  43. disdrodb/l0/configs/PARSIVEL/l0b_encodings.yml +3 -3
  44. disdrodb/l0/configs/PARSIVEL/raw_data_format.yml +1 -1
  45. disdrodb/l0/configs/PARSIVEL2/l0b_cf_attrs.yml +5 -5
  46. disdrodb/l0/configs/PARSIVEL2/l0b_encodings.yml +3 -3
  47. disdrodb/l0/configs/PARSIVEL2/raw_data_format.yml +1 -1
  48. disdrodb/l0/configs/PWS100/l0b_cf_attrs.yml +4 -4
  49. disdrodb/l0/configs/PWS100/raw_data_format.yml +1 -1
  50. disdrodb/l0/l0a_processing.py +37 -32
  51. disdrodb/l0/l0b_nc_processing.py +118 -8
  52. disdrodb/l0/l0b_processing.py +30 -65
  53. disdrodb/l0/l0c_processing.py +369 -259
  54. disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +7 -0
  55. disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_LPM_NC.py +66 -0
  56. disdrodb/l0/readers/LPM/SLOVENIA/{CRNI_VRH.py → UL.py} +3 -0
  57. disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +195 -0
  58. disdrodb/l0/readers/PARSIVEL/GPM/PIERS.py +0 -2
  59. disdrodb/l0/readers/PARSIVEL/JAPAN/JMA.py +4 -1
  60. disdrodb/l0/readers/PARSIVEL/NCAR/PECAN_MOBILE.py +1 -1
  61. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2009.py +1 -1
  62. disdrodb/l0/readers/PARSIVEL2/ARM/ARM_PARSIVEL2.py +4 -0
  63. disdrodb/l0/readers/PARSIVEL2/BELGIUM/ILVO.py +168 -0
  64. disdrodb/l0/readers/PARSIVEL2/CANADA/UQAM_NC.py +69 -0
  65. disdrodb/l0/readers/PARSIVEL2/DENMARK/DTU.py +165 -0
  66. disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +69 -0
  67. disdrodb/l0/readers/PARSIVEL2/FRANCE/ENPC_PARSIVEL2.py +255 -134
  68. disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +525 -0
  69. disdrodb/l0/readers/PARSIVEL2/FRANCE/SIRTA_PARSIVEL2.py +1 -1
  70. disdrodb/l0/readers/PARSIVEL2/GPM/GCPEX.py +9 -7
  71. disdrodb/l0/readers/PARSIVEL2/KIT/BURKINA_FASO.py +1 -1
  72. disdrodb/l0/readers/PARSIVEL2/KIT/TEAMX.py +123 -0
  73. disdrodb/l0/readers/PARSIVEL2/{NETHERLANDS/DELFT.py → MPI/BCO_PARSIVEL2.py} +41 -71
  74. disdrodb/l0/readers/PARSIVEL2/MPI/BOWTIE.py +220 -0
  75. disdrodb/l0/readers/PARSIVEL2/NASA/APU.py +120 -0
  76. disdrodb/l0/readers/PARSIVEL2/NASA/LPVEX.py +109 -0
  77. disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +1 -0
  78. disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_FP3.py +1 -1
  79. disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_MIPS.py +126 -0
  80. disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_PIPS.py +165 -0
  81. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +1 -1
  82. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +20 -12
  83. disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT_NC.py +5 -0
  84. disdrodb/l0/readers/PARSIVEL2/SPAIN/CENER.py +144 -0
  85. disdrodb/l0/readers/PARSIVEL2/SPAIN/CR1000DL.py +201 -0
  86. disdrodb/l0/readers/PARSIVEL2/SPAIN/LIAISE.py +137 -0
  87. disdrodb/l0/readers/PARSIVEL2/USA/C3WE.py +146 -0
  88. disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100.py +105 -99
  89. disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100_SIRTA.py +151 -0
  90. disdrodb/l1/__init__.py +5 -0
  91. disdrodb/l1/fall_velocity.py +46 -0
  92. disdrodb/l1/filters.py +34 -20
  93. disdrodb/l1/processing.py +46 -45
  94. disdrodb/l1/resampling.py +77 -66
  95. disdrodb/l1_env/routines.py +18 -3
  96. disdrodb/l2/__init__.py +7 -0
  97. disdrodb/l2/empirical_dsd.py +58 -10
  98. disdrodb/l2/processing.py +268 -117
  99. disdrodb/metadata/checks.py +132 -125
  100. disdrodb/metadata/standards.py +3 -1
  101. disdrodb/psd/fitting.py +631 -345
  102. disdrodb/psd/models.py +9 -6
  103. disdrodb/routines/__init__.py +54 -0
  104. disdrodb/{l0/routines.py → routines/l0.py} +316 -355
  105. disdrodb/{l1/routines.py → routines/l1.py} +76 -116
  106. disdrodb/routines/l2.py +1019 -0
  107. disdrodb/{routines.py → routines/wrappers.py} +98 -10
  108. disdrodb/scattering/__init__.py +16 -4
  109. disdrodb/scattering/axis_ratio.py +61 -37
  110. disdrodb/scattering/permittivity.py +504 -0
  111. disdrodb/scattering/routines.py +746 -184
  112. disdrodb/summary/__init__.py +17 -0
  113. disdrodb/summary/routines.py +4196 -0
  114. disdrodb/utils/archiving.py +434 -0
  115. disdrodb/utils/attrs.py +68 -125
  116. disdrodb/utils/cli.py +5 -5
  117. disdrodb/utils/compression.py +30 -1
  118. disdrodb/utils/dask.py +121 -9
  119. disdrodb/utils/dataframe.py +61 -7
  120. disdrodb/utils/decorators.py +31 -0
  121. disdrodb/utils/directories.py +35 -15
  122. disdrodb/utils/encoding.py +37 -19
  123. disdrodb/{l2 → utils}/event.py +15 -173
  124. disdrodb/utils/logger.py +14 -7
  125. disdrodb/utils/manipulations.py +81 -0
  126. disdrodb/utils/routines.py +166 -0
  127. disdrodb/utils/subsetting.py +214 -0
  128. disdrodb/utils/time.py +35 -177
  129. disdrodb/utils/writer.py +20 -7
  130. disdrodb/utils/xarray.py +5 -4
  131. disdrodb/viz/__init__.py +13 -0
  132. disdrodb/viz/plots.py +398 -0
  133. {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/METADATA +4 -3
  134. {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/RECORD +139 -98
  135. {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/entry_points.txt +2 -0
  136. disdrodb/l1/encoding_attrs.py +0 -642
  137. disdrodb/l2/processing_options.py +0 -213
  138. disdrodb/l2/routines.py +0 -868
  139. /disdrodb/l0/readers/PARSIVEL/SLOVENIA/{UL_FGG.py → UL.py} +0 -0
  140. {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/WHEEL +0 -0
  141. {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/licenses/LICENSE +0 -0
  142. {disdrodb-0.1.2.dist-info → disdrodb-0.1.4.dist-info}/top_level.txt +0 -0
@@ -1,213 +0,0 @@
1
- import os
2
-
3
- # TODO: Write to YAML
4
- # TODO: radar_simulation_enabled: differentiate between L2E and L2M:
5
-
6
- DEFAULT_CONFIG = {
7
- "global_settings": {
8
- "time_integration": [
9
- "1MIN",
10
- "5MIN",
11
- "10MIN",
12
- "ROLL1MIN",
13
- ], # ["10S", "30S", "1MIN", "5MIN", "10MIN", "15MIN", "30MIN", "1H", "ROLL5MIN", "ROLL10MIN"],
14
- # Radar options
15
- "radar_simulation_enabled": False,
16
- "radar_simulation_options": {
17
- "radar_band": ["S", "C", "X", "Ku", "Ka", "W"],
18
- "canting_angle_std": 7,
19
- "diameter_max": 10,
20
- "axis_ratio": "Thurai2007",
21
- },
22
- # L2E options
23
- # "l2e_options": {}
24
- # L2M options
25
- "l2m_options": {
26
- "fall_velocity_method": "Beard1976",
27
- "diameter_min": 0,
28
- "diameter_max": 10,
29
- "diameter_spacing": 0.05,
30
- "gof_metrics": True,
31
- "min_nbins": 4,
32
- "remove_timesteps_with_few_bins": False,
33
- "mask_timesteps_with_few_bins": False,
34
- "models": {
35
- # PSD models fitting options
36
- "GAMMA_ML": {
37
- "psd_model": "GammaPSD",
38
- "optimization": "ML",
39
- "optimization_kwargs": {
40
- "init_method": "M346",
41
- "probability_method": "cdf",
42
- "likelihood": "multinomial",
43
- "truncated_likelihood": True,
44
- "optimizer": "Nelder-Mead",
45
- },
46
- },
47
- "NGAMMA_GS_LOG_ND_MAE": {
48
- "psd_model": "NormalizedGammaPSD",
49
- "optimization": "GS",
50
- "optimization_kwargs": {
51
- "target": "ND",
52
- "transformation": "log",
53
- "error_order": 1, # MAE
54
- },
55
- },
56
- # "NGAMMA_GS_ND_MAE": {
57
- # "psd_model": "NormalizedGammaPSD",
58
- # "optimization": "GS",
59
- # "optimization_kwargs": {
60
- # "target": "ND",
61
- # "transformation": "identity",
62
- # "error_order": 1, # MAE
63
- # },
64
- # },
65
- # "NGAMMA_GS_Z": {
66
- # "psd_model": "NormalizedGammaPSD",
67
- # "optimization": "GS",
68
- # "optimization_kwargs": {
69
- # "target": "Z",
70
- # "transformation": "identity", # unused
71
- # "error_order": 1, # unused
72
- # },
73
- # },
74
- },
75
- },
76
- },
77
- "specific_settings": {
78
- "10S": {
79
- "radar_simulation_enabled": False,
80
- },
81
- "30S": {
82
- "radar_simulation_enabled": False,
83
- },
84
- "10MIN": {
85
- "radar_simulation_enabled": False,
86
- },
87
- "15MIN": {
88
- "radar_simulation_enabled": False,
89
- },
90
- "30MIN": {
91
- "radar_simulation_enabled": False,
92
- },
93
- "1H": {
94
- "radar_simulation_enabled": False,
95
- },
96
- "ROLL10MIN": {
97
- "radar_simulation_enabled": False,
98
- },
99
- },
100
- }
101
-
102
- TEST_CONFIG = {
103
- "global_settings": {
104
- "time_integration": [
105
- "1MIN",
106
- "10MIN",
107
- "ROLL1MIN",
108
- "ROLL10MIN",
109
- ], # ["10S", "30S", "1MIN", "5MIN", "10MIN", "15MIN", "30MIN", "1H", "ROLL5MIN", "ROLL10MIN"],
110
- # Radar options
111
- "radar_simulation_enabled": False,
112
- "radar_simulation_options": {
113
- "radar_band": ["S", "C", "X", "Ku", "Ka", "W"],
114
- "canting_angle_std": 7,
115
- "diameter_max": 10,
116
- "axis_ratio": "Thurai2007",
117
- },
118
- # L2E options
119
- # "l2e_options": {}
120
- # L2M options
121
- "l2m_options": {
122
- "fall_velocity_method": "Beard1976",
123
- "diameter_min": 0,
124
- "diameter_max": 10,
125
- "diameter_spacing": 0.05,
126
- "gof_metrics": True,
127
- "min_nbins": 4,
128
- "remove_timesteps_with_few_bins": False,
129
- "mask_timesteps_with_few_bins": False,
130
- "models": {
131
- # PSD models fitting options
132
- "GAMMA_ML": {
133
- "psd_model": "GammaPSD",
134
- "optimization": "ML",
135
- "optimization_kwargs": {
136
- "init_method": "M346",
137
- "probability_method": "cdf",
138
- "likelihood": "multinomial",
139
- "truncated_likelihood": True,
140
- "optimizer": "Nelder-Mead",
141
- },
142
- },
143
- "NGAMMA_GS_LOG_ND_MAE": {
144
- "psd_model": "NormalizedGammaPSD",
145
- "optimization": "GS",
146
- "optimization_kwargs": {
147
- "target": "ND",
148
- "transformation": "log",
149
- "error_order": 1, # MAE
150
- },
151
- },
152
- # "NGAMMA_GS_ND_MAE": {
153
- # "psd_model": "NormalizedGammaPSD",
154
- # "optimization": "GS",
155
- # "optimization_kwargs": {
156
- # "target": "ND",
157
- # "transformation": "identity",
158
- # "error_order": 1, # MAE
159
- # },
160
- # },
161
- # "NGAMMA_GS_Z": {
162
- # "psd_model": "NormalizedGammaPSD",
163
- # "optimization": "GS",
164
- # "optimization_kwargs": {
165
- # "target": "Z",
166
- # "transformation": "identity", # unused
167
- # "error_order": 1, # unused
168
- # },
169
- # },
170
- },
171
- },
172
- },
173
- "specific_settings": {
174
- "10S": {
175
- "radar_simulation_enabled": False,
176
- },
177
- "30S": {
178
- "radar_simulation_enabled": False,
179
- },
180
- "10MIN": {
181
- "radar_simulation_enabled": False,
182
- },
183
- "15MIN": {
184
- "radar_simulation_enabled": False,
185
- },
186
- "30MIN": {
187
- "radar_simulation_enabled": False,
188
- },
189
- "1H": {
190
- "radar_simulation_enabled": False,
191
- },
192
- "ROLL10MIN": {
193
- "radar_simulation_enabled": False,
194
- },
195
- },
196
- }
197
-
198
-
199
- def get_l2_processing_options():
200
- """Retrieve L2 processing options."""
201
- # TODO: Implement validation !
202
- l2_options_dict = {}
203
- # Define config to use
204
- config = TEST_CONFIG if os.environ.get("PYTEST_CURRENT_TEST") else DEFAULT_CONFIG
205
- # Define global L2 options
206
- for tt in config["global_settings"]["time_integration"]:
207
- l2_options_dict[tt] = config["global_settings"].copy()
208
- _ = l2_options_dict[tt].pop("time_integration", None)
209
- # Add specific settings
210
- for tt, product_options in config["specific_settings"].items():
211
- if tt in l2_options_dict:
212
- l2_options_dict[tt].update(product_options)
213
- return l2_options_dict