disdrodb 0.2.1__py3-none-any.whl → 0.4.0__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 (313) hide show
  1. disdrodb/__init__.py +3 -1
  2. disdrodb/_config.py +2 -3
  3. disdrodb/_version.py +2 -2
  4. disdrodb/accessor/__init__.py +2 -1
  5. disdrodb/accessor/methods.py +10 -9
  6. disdrodb/api/checks.py +3 -7
  7. disdrodb/api/configs.py +1 -3
  8. disdrodb/api/create_directories.py +4 -6
  9. disdrodb/api/info.py +1 -3
  10. disdrodb/api/io.py +233 -32
  11. disdrodb/api/path.py +3 -7
  12. disdrodb/cli/disdrodb_check_metadata_archive.py +3 -2
  13. disdrodb/cli/disdrodb_check_products_options.py +45 -0
  14. disdrodb/cli/disdrodb_create_summary.py +54 -28
  15. disdrodb/cli/disdrodb_create_summary_station.py +41 -20
  16. disdrodb/cli/disdrodb_data_archive_directory.py +2 -3
  17. disdrodb/cli/disdrodb_download_archive.py +50 -30
  18. disdrodb/cli/disdrodb_download_metadata_archive.py +28 -16
  19. disdrodb/cli/disdrodb_download_station.py +58 -29
  20. disdrodb/cli/disdrodb_initialize_station.py +43 -23
  21. disdrodb/cli/disdrodb_metadata_archive_directory.py +2 -3
  22. disdrodb/cli/disdrodb_open_data_archive.py +17 -13
  23. disdrodb/cli/disdrodb_open_logs_directory.py +31 -21
  24. disdrodb/cli/disdrodb_open_metadata_archive.py +26 -13
  25. disdrodb/cli/disdrodb_open_metadata_directory.py +34 -23
  26. disdrodb/cli/disdrodb_open_product_directory.py +39 -23
  27. disdrodb/cli/disdrodb_open_readers_directory.py +2 -3
  28. disdrodb/cli/disdrodb_run.py +189 -0
  29. disdrodb/cli/disdrodb_run_l0.py +61 -70
  30. disdrodb/cli/disdrodb_run_l0_station.py +50 -55
  31. disdrodb/cli/disdrodb_run_l0a.py +53 -51
  32. disdrodb/cli/disdrodb_run_l0a_station.py +41 -40
  33. disdrodb/cli/disdrodb_run_l0b.py +51 -51
  34. disdrodb/cli/disdrodb_run_l0b_station.py +40 -39
  35. disdrodb/cli/disdrodb_run_l0c.py +56 -53
  36. disdrodb/cli/disdrodb_run_l0c_station.py +44 -41
  37. disdrodb/cli/disdrodb_run_l1.py +55 -51
  38. disdrodb/cli/disdrodb_run_l1_station.py +43 -40
  39. disdrodb/cli/disdrodb_run_l2e.py +56 -51
  40. disdrodb/cli/disdrodb_run_l2e_station.py +44 -40
  41. disdrodb/cli/disdrodb_run_l2m.py +55 -51
  42. disdrodb/cli/disdrodb_run_l2m_station.py +43 -40
  43. disdrodb/cli/disdrodb_run_station.py +184 -0
  44. disdrodb/cli/disdrodb_upload_archive.py +51 -42
  45. disdrodb/cli/disdrodb_upload_station.py +42 -36
  46. disdrodb/configs.py +20 -16
  47. disdrodb/constants.py +5 -2
  48. disdrodb/data_transfer/__init__.py +1 -3
  49. disdrodb/data_transfer/download_data.py +45 -61
  50. disdrodb/data_transfer/upload_data.py +7 -11
  51. disdrodb/data_transfer/zenodo.py +2 -4
  52. disdrodb/docs.py +1 -3
  53. disdrodb/etc/configs/attributes.yaml +52 -2
  54. disdrodb/etc/configs/encodings.yaml +45 -1
  55. disdrodb/etc/products/L0C/ODM470/global.yaml +5 -0
  56. disdrodb/etc/products/L0C/global.yaml +5 -0
  57. disdrodb/etc/products/L1/ODM470/global.yaml +6 -0
  58. disdrodb/etc/products/L1/global.yaml +0 -13
  59. disdrodb/etc/products/L2E/LPM/1MIN.yaml +1 -0
  60. disdrodb/etc/products/L2E/LPM/global.yaml +36 -0
  61. disdrodb/etc/products/L2E/LPM_V0/1MIN.yaml +1 -0
  62. disdrodb/etc/products/L2E/LPM_V0/global.yaml +36 -0
  63. disdrodb/etc/products/L2E/ODM470/1MIN.yaml +1 -0
  64. disdrodb/etc/products/L2E/ODM470/global.yaml +36 -0
  65. disdrodb/etc/products/L2E/PARSIVEL/1MIN.yaml +1 -0
  66. disdrodb/etc/products/L2E/PARSIVEL/global.yaml +36 -0
  67. disdrodb/etc/products/L2E/PARSIVEL2/1MIN.yaml +1 -0
  68. disdrodb/etc/products/L2E/PARSIVEL2/global.yaml +36 -0
  69. disdrodb/etc/products/L2E/PWS100/1MIN.yaml +1 -0
  70. disdrodb/etc/products/L2E/PWS100/global.yaml +36 -0
  71. disdrodb/etc/products/L2E/RD80/1MIN.yaml +19 -0
  72. disdrodb/etc/products/L2E/SWS250/1MIN.yaml +19 -0
  73. disdrodb/etc/products/L2E/global.yaml +16 -2
  74. disdrodb/fall_velocity/__init__.py +47 -0
  75. disdrodb/fall_velocity/graupel.py +484 -0
  76. disdrodb/fall_velocity/hail.py +288 -0
  77. disdrodb/{l1/fall_velocity.py → fall_velocity/rain.py} +265 -44
  78. disdrodb/issue/__init__.py +1 -3
  79. disdrodb/issue/checks.py +2 -3
  80. disdrodb/issue/reader.py +2 -3
  81. disdrodb/issue/writer.py +2 -5
  82. disdrodb/l0/__init__.py +2 -1
  83. disdrodb/l0/check_configs.py +36 -29
  84. disdrodb/l0/check_standards.py +1 -4
  85. disdrodb/l0/configs/LPM/l0a_encodings.yml +17 -17
  86. disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +55 -55
  87. disdrodb/l0/configs/LPM/l0b_encodings.yml +17 -17
  88. disdrodb/l0/configs/LPM/raw_data_format.yml +17 -17
  89. disdrodb/l0/configs/LPM_V0/l0a_encodings.yml +2 -2
  90. disdrodb/l0/configs/LPM_V0/l0b_cf_attrs.yml +2 -2
  91. disdrodb/l0/configs/LPM_V0/l0b_encodings.yml +2 -2
  92. disdrodb/l0/configs/LPM_V0/raw_data_format.yml +2 -2
  93. disdrodb/l0/configs/ODM470/bins_diameter.yml +643 -0
  94. disdrodb/l0/configs/ODM470/bins_velocity.yml +0 -0
  95. disdrodb/l0/configs/ODM470/l0a_encodings.yml +11 -0
  96. disdrodb/l0/configs/ODM470/l0b_cf_attrs.yml +46 -0
  97. disdrodb/l0/configs/ODM470/l0b_encodings.yml +106 -0
  98. disdrodb/l0/configs/ODM470/raw_data_format.yml +111 -0
  99. disdrodb/l0/configs/PARSIVEL/l0b_cf_attrs.yml +1 -1
  100. disdrodb/l0/l0_reader.py +2 -3
  101. disdrodb/l0/l0a_processing.py +6 -8
  102. disdrodb/l0/l0b_nc_processing.py +3 -6
  103. disdrodb/l0/l0b_processing.py +2 -16
  104. disdrodb/l0/l0c_processing.py +29 -12
  105. disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +2 -1
  106. disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +18 -18
  107. disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +18 -18
  108. disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +18 -18
  109. disdrodb/l0/readers/LPM/GERMANY/DWD.py +244 -63
  110. disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +65 -23
  111. disdrodb/l0/readers/LPM/ITALY/GID_LPM_AQ.py +277 -0
  112. disdrodb/l0/readers/LPM/ITALY/GID_LPM_PI.py +19 -18
  113. disdrodb/l0/readers/LPM/ITALY/GID_LPM_T.py +23 -19
  114. disdrodb/l0/readers/LPM/ITALY/GID_LPM_W.py +19 -21
  115. disdrodb/l0/readers/LPM/KIT/CHWALA.py +19 -20
  116. disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_LPM_NC.py +1 -1
  117. disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_RWANDA_LPM_NC.py +18 -18
  118. disdrodb/l0/readers/LPM/NORWAY/HAUKELISETER_LPM.py +19 -20
  119. disdrodb/l0/readers/LPM/NORWAY/NMBU_LPM.py +19 -20
  120. disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +19 -20
  121. disdrodb/l0/readers/LPM/SLOVENIA/UL.py +19 -20
  122. disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +19 -20
  123. disdrodb/l0/readers/LPM/UK/DIVEN.py +1 -1
  124. disdrodb/l0/readers/LPM/UK/WITHWORTH_LPM.py +19 -20
  125. disdrodb/l0/readers/LPM/USA/CHARLESTON.py +19 -20
  126. disdrodb/l0/readers/LPM/USA/DEVEX.py +255 -0
  127. disdrodb/l0/readers/LPM_V0/BELGIUM/ULIEGE.py +3 -5
  128. disdrodb/l0/readers/LPM_V0/ITALY/GID_LPM_V0.py +4 -3
  129. disdrodb/l0/readers/ODM470/OCEAN/OCEANRAIN.py +124 -0
  130. disdrodb/l0/readers/PARSIVEL/AUSTRALIA/MELBOURNE_2007_PARSIVEL.py +1 -1
  131. disdrodb/l0/readers/PARSIVEL/BASQUECOUNTRY/EUSKALMET_OTT.py +2 -1
  132. disdrodb/l0/readers/PARSIVEL/CHINA/CHONGQING.py +2 -3
  133. disdrodb/l0/readers/PARSIVEL/EPFL/ARCTIC_2021.py +2 -1
  134. disdrodb/l0/readers/PARSIVEL/EPFL/COMMON_2011.py +2 -1
  135. disdrodb/l0/readers/PARSIVEL/EPFL/DAVOS_2009_2011.py +2 -1
  136. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_2009.py +2 -1
  137. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2008.py +2 -1
  138. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2010.py +2 -1
  139. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2011.py +2 -1
  140. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2012.py +2 -1
  141. disdrodb/l0/readers/PARSIVEL/EPFL/GENEPI_2007.py +2 -1
  142. disdrodb/l0/readers/PARSIVEL/EPFL/GRAND_ST_BERNARD_2007.py +2 -1
  143. disdrodb/l0/readers/PARSIVEL/EPFL/GRAND_ST_BERNARD_2007_2.py +2 -1
  144. disdrodb/l0/readers/PARSIVEL/EPFL/HPICONET_2010.py +2 -1
  145. disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP2.py +2 -1
  146. disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP3.py +2 -1
  147. disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP4.py +2 -1
  148. disdrodb/l0/readers/PARSIVEL/EPFL/LOCARNO_2018.py +1 -1
  149. disdrodb/l0/readers/PARSIVEL/EPFL/LOCARNO_2019.py +1 -1
  150. disdrodb/l0/readers/PARSIVEL/EPFL/PARADISO_2014.py +2 -1
  151. disdrodb/l0/readers/PARSIVEL/EPFL/PARSIVEL_2007.py +2 -1
  152. disdrodb/l0/readers/PARSIVEL/EPFL/PLATO_2019.py +1 -1
  153. disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019.py +2 -1
  154. disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019_WJF.py +2 -1
  155. disdrodb/l0/readers/PARSIVEL/EPFL/RIETHOLZBACH_2011.py +2 -1
  156. disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2017.py +2 -1
  157. disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2019.py +2 -1
  158. disdrodb/l0/readers/PARSIVEL/EPFL/UNIL_2022.py +2 -1
  159. disdrodb/l0/readers/PARSIVEL/JAPAN/JMA.py +1 -1
  160. disdrodb/l0/readers/PARSIVEL/KOREA/ICEPOP_MSC.py +159 -0
  161. disdrodb/l0/readers/PARSIVEL/NASA/LPVEX.py +1 -1
  162. disdrodb/l0/readers/PARSIVEL/NASA/MC3E.py +1 -1
  163. disdrodb/l0/readers/PARSIVEL/NCAR/CCOPE_2015.py +1 -1
  164. disdrodb/l0/readers/PARSIVEL/NCAR/OWLES_MIPS.py +1 -1
  165. disdrodb/l0/readers/PARSIVEL/NCAR/PECAN_MOBILE.py +1 -1
  166. disdrodb/l0/readers/PARSIVEL/NCAR/PLOWS_MIPS.py +1 -1
  167. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2009.py +1 -1
  168. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +1 -3
  169. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +1 -3
  170. disdrodb/l0/readers/PARSIVEL/SLOVENIA/UL.py +2 -1
  171. disdrodb/l0/readers/PARSIVEL2/ARM/ARM_PARSIVEL2.py +2 -1
  172. disdrodb/l0/readers/PARSIVEL2/BASQUECOUNTRY/EUSKALMET_OTT2.py +2 -1
  173. disdrodb/l0/readers/PARSIVEL2/BELGIUM/ILVO.py +2 -3
  174. disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +1 -1
  175. disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +1 -1
  176. disdrodb/l0/readers/PARSIVEL2/CANADA/UQAM_NC.py +1 -1
  177. disdrodb/l0/readers/PARSIVEL2/DENMARK/DTU.py +1 -1
  178. disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_nc.py +2 -1
  179. disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_raw.py +2 -1
  180. disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +1 -1
  181. disdrodb/l0/readers/PARSIVEL2/FRANCE/ENPC_PARSIVEL2.py +2 -3
  182. disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +2 -2
  183. disdrodb/l0/readers/PARSIVEL2/FRANCE/SIRTA_PARSIVEL2.py +1 -3
  184. disdrodb/l0/readers/PARSIVEL2/GREECE/NOA.py +4 -3
  185. disdrodb/l0/readers/PARSIVEL2/ITALY/GID_PARSIVEL2.py +1 -3
  186. disdrodb/l0/readers/PARSIVEL2/ITALY/HYDROX.py +6 -3
  187. disdrodb/l0/readers/PARSIVEL2/JAPAN/PRECIP.py +1 -1
  188. disdrodb/l0/readers/PARSIVEL2/KIT/BURKINA_FASO.py +1 -1
  189. disdrodb/l0/readers/PARSIVEL2/KIT/TEAMX.py +1 -1
  190. disdrodb/l0/readers/PARSIVEL2/KOREA/ICEPOP_MSC.py +161 -0
  191. disdrodb/l0/readers/PARSIVEL2/KOREA/ICEPOP_UCLM.py +126 -0
  192. disdrodb/l0/readers/PARSIVEL2/MEXICO/OH_IIUNAM_nc.py +2 -1
  193. disdrodb/l0/readers/PARSIVEL2/MPI/BCO_PARSIVEL2.py +1 -1
  194. disdrodb/l0/readers/PARSIVEL2/MPI/BOWTIE.py +1 -1
  195. disdrodb/l0/readers/PARSIVEL2/NASA/APU.py +3 -1
  196. disdrodb/l0/readers/PARSIVEL2/NASA/NSSTC.py +1 -1
  197. disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +2 -1
  198. disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_FP3.py +1 -1
  199. disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_MIPS.py +1 -1
  200. disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_MIPS.py +2 -1
  201. disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_PIPS.py +2 -1
  202. disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +1 -1
  203. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +1 -1
  204. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +1 -1
  205. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P1.py +2 -3
  206. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +1 -1
  207. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +2 -1
  208. disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT_NC.py +1 -1
  209. disdrodb/l0/readers/PARSIVEL2/NORWAY/UIB.py +10 -2
  210. disdrodb/l0/readers/PARSIVEL2/PHILIPPINES/PAGASA.py +2 -3
  211. disdrodb/l0/readers/PARSIVEL2/SPAIN/CENER.py +1 -1
  212. disdrodb/l0/readers/PARSIVEL2/SPAIN/CR1000DL.py +1 -1
  213. disdrodb/l0/readers/PARSIVEL2/SPAIN/GRANADA.py +2 -3
  214. disdrodb/l0/readers/PARSIVEL2/SPAIN/LIAISE.py +1 -1
  215. disdrodb/l0/readers/PARSIVEL2/SWEDEN/SMHI.py +2 -1
  216. disdrodb/l0/readers/PARSIVEL2/USA/CSU.py +1 -1
  217. disdrodb/l0/readers/PARSIVEL2/USA/CW3E.py +2 -1
  218. disdrodb/l0/readers/PWS100/AUSTRIA/HOAL.py +2 -3
  219. disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100.py +2 -3
  220. disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100_SIRTA.py +2 -1
  221. disdrodb/l0/readers/RD80/BRAZIL/ATTO_RD80.py +1 -3
  222. disdrodb/l0/readers/RD80/BRAZIL/CHUVA_RD80.py +1 -3
  223. disdrodb/l0/readers/RD80/BRAZIL/GOAMAZON_RD80.py +1 -3
  224. disdrodb/l0/readers/RD80/NCAR/CINDY_2011_RD80.py +1 -3
  225. disdrodb/l0/readers/RD80/NCAR/RELAMPAGO_RD80.py +1 -3
  226. disdrodb/l0/readers/RD80/NOAA/PSL_RD80.py +2 -3
  227. disdrodb/l0/readers/SWS250/BELGIUM/KMI.py +2 -3
  228. disdrodb/l0/readers/template_reader_raw_netcdf_data.py +2 -3
  229. disdrodb/l0/readers/template_reader_raw_text_data.py +2 -3
  230. disdrodb/l0/standards.py +4 -5
  231. disdrodb/l0/template_tools.py +7 -11
  232. disdrodb/l1/__init__.py +2 -1
  233. disdrodb/l1/classification.py +914 -0
  234. disdrodb/l1/processing.py +36 -106
  235. disdrodb/l1/resampling.py +13 -3
  236. disdrodb/l1_env/__init__.py +1 -1
  237. disdrodb/l1_env/routines.py +7 -6
  238. disdrodb/l2/__init__.py +2 -1
  239. disdrodb/l2/empirical_dsd.py +58 -31
  240. disdrodb/l2/processing.py +327 -61
  241. disdrodb/metadata/checks.py +10 -13
  242. disdrodb/metadata/download.py +5 -4
  243. disdrodb/metadata/geolocation.py +3 -4
  244. disdrodb/metadata/info.py +3 -5
  245. disdrodb/metadata/manipulation.py +1 -3
  246. disdrodb/metadata/reader.py +1 -3
  247. disdrodb/metadata/search.py +1 -4
  248. disdrodb/metadata/standards.py +1 -3
  249. disdrodb/metadata/writer.py +1 -3
  250. disdrodb/physics/__init__.py +17 -0
  251. disdrodb/physics/atmosphere.py +273 -0
  252. disdrodb/physics/water.py +131 -0
  253. disdrodb/physics/wrappers.py +63 -0
  254. disdrodb/psd/__init__.py +1 -2
  255. disdrodb/psd/fitting.py +23 -9
  256. disdrodb/psd/models.py +2 -1
  257. disdrodb/routines/__init__.py +6 -1
  258. disdrodb/routines/l0.py +39 -25
  259. disdrodb/routines/l1.py +23 -16
  260. disdrodb/routines/l2.py +12 -9
  261. disdrodb/routines/options.py +117 -73
  262. disdrodb/routines/options_validation.py +728 -0
  263. disdrodb/routines/wrappers.py +460 -40
  264. disdrodb/scattering/__init__.py +1 -2
  265. disdrodb/scattering/axis_ratio.py +6 -6
  266. disdrodb/scattering/permittivity.py +9 -8
  267. disdrodb/scattering/routines.py +33 -15
  268. disdrodb/summary/__init__.py +1 -1
  269. disdrodb/summary/routines.py +95 -30
  270. disdrodb/utils/__init__.py +1 -1
  271. disdrodb/utils/archiving.py +18 -10
  272. disdrodb/utils/attrs.py +7 -5
  273. disdrodb/utils/cli.py +8 -10
  274. disdrodb/utils/compression.py +10 -13
  275. disdrodb/utils/coords.py +45 -0
  276. disdrodb/utils/dask.py +7 -5
  277. disdrodb/utils/dataframe.py +5 -6
  278. disdrodb/utils/decorators.py +3 -4
  279. disdrodb/utils/dict.py +1 -1
  280. disdrodb/utils/directories.py +5 -7
  281. disdrodb/utils/encoding.py +4 -5
  282. disdrodb/utils/event.py +1 -1
  283. disdrodb/utils/list.py +1 -3
  284. disdrodb/utils/logger.py +1 -3
  285. disdrodb/utils/manipulations.py +175 -4
  286. disdrodb/utils/pydantic.py +81 -0
  287. disdrodb/utils/routines.py +2 -3
  288. disdrodb/utils/subsetting.py +1 -1
  289. disdrodb/utils/time.py +6 -4
  290. disdrodb/utils/warnings.py +2 -3
  291. disdrodb/utils/writer.py +5 -3
  292. disdrodb/utils/xarray.py +31 -3
  293. disdrodb/utils/yaml.py +1 -3
  294. disdrodb/viz/__init__.py +1 -1
  295. disdrodb/viz/plots.py +193 -18
  296. {disdrodb-0.2.1.dist-info → disdrodb-0.4.0.dist-info}/METADATA +5 -4
  297. disdrodb-0.4.0.dist-info/RECORD +361 -0
  298. {disdrodb-0.2.1.dist-info → disdrodb-0.4.0.dist-info}/entry_points.txt +3 -0
  299. disdrodb/etc/products/L1/1MIN.yaml +0 -13
  300. disdrodb/etc/products/L1/LPM/1MIN.yaml +0 -13
  301. disdrodb/etc/products/L1/LPM_V0/1MIN.yaml +0 -13
  302. disdrodb/etc/products/L1/PARSIVEL/1MIN.yaml +0 -13
  303. disdrodb/etc/products/L1/PARSIVEL2/1MIN.yaml +0 -13
  304. disdrodb/etc/products/L1/PWS100/1MIN.yaml +0 -13
  305. disdrodb/etc/products/L1/RD80/1MIN.yaml +0 -13
  306. disdrodb/etc/products/L1/SWS250/1MIN.yaml +0 -13
  307. disdrodb/etc/products/L2M/10MIN.yaml +0 -12
  308. disdrodb/l1/beard_model.py +0 -662
  309. disdrodb/l1/filters.py +0 -205
  310. disdrodb-0.2.1.dist-info/RECORD +0 -329
  311. {disdrodb-0.2.1.dist-info → disdrodb-0.4.0.dist-info}/WHEEL +0 -0
  312. {disdrodb-0.2.1.dist-info → disdrodb-0.4.0.dist-info}/licenses/LICENSE +0 -0
  313. {disdrodb-0.2.1.dist-info → disdrodb-0.4.0.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,5 @@
1
- #!/usr/bin/env python3
2
-
3
1
  # -----------------------------------------------------------------------------.
4
- # Copyright (c) 2021-2023 DISDRODB developers
2
+ # Copyright (c) 2021-2026 DISDRODB developers
5
3
  #
6
4
  # This program is free software: you can redistribute it and/or modify
7
5
  # it under the terms of the GNU General Public License as published by
disdrodb/issue/checks.py CHANGED
@@ -1,7 +1,5 @@
1
- #!/usr/bin/env python3
2
-
3
1
  # -----------------------------------------------------------------------------.
4
- # Copyright (c) 2021-2023 DISDRODB developers
2
+ # Copyright (c) 2021-2026 DISDRODB developers
5
3
  #
6
4
  # This program is free software: you can redistribute it and/or modify
7
5
  # it under the terms of the GNU General Public License as published by
@@ -17,6 +15,7 @@
17
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
16
  # -----------------------------------------------------------------------------.
19
17
  """Checks for issue YAML files."""
18
+
20
19
  import logging
21
20
 
22
21
  import numpy as np
disdrodb/issue/reader.py CHANGED
@@ -1,7 +1,5 @@
1
- #!/usr/bin/env python3
2
-
3
1
  # -----------------------------------------------------------------------------.
4
- # Copyright (c) 2021-2023 DISDRODB developers
2
+ # Copyright (c) 2021-2026 DISDRODB developers
5
3
  #
6
4
  # This program is free software: you can redistribute it and/or modify
7
5
  # it under the terms of the GNU General Public License as published by
@@ -17,6 +15,7 @@
17
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
16
  # -----------------------------------------------------------------------------.
19
17
  """Issue YAML File Reader."""
18
+
20
19
  import logging
21
20
 
22
21
  import yaml
disdrodb/issue/writer.py CHANGED
@@ -1,7 +1,5 @@
1
- #!/usr/bin/env python3
2
-
3
1
  # -----------------------------------------------------------------------------.
4
- # Copyright (c) 2021-2023 DISDRODB developers
2
+ # Copyright (c) 2021-2026 DISDRODB developers
5
3
  #
6
4
  # This program is free software: you can redistribute it and/or modify
7
5
  # it under the terms of the GNU General Public License as published by
@@ -20,7 +18,6 @@
20
18
 
21
19
  import logging
22
20
  import os
23
- from typing import Optional
24
21
 
25
22
  import yaml
26
23
 
@@ -52,7 +49,7 @@ def _write_issue_docs(f):
52
49
  )
53
50
 
54
51
 
55
- def write_issue(filepath: str, timesteps: Optional[list] = None, time_periods: Optional[list] = None) -> None:
52
+ def write_issue(filepath: str, timesteps: list | None = None, time_periods: list | None = None) -> None:
56
53
  """Write the issue YAML file.
57
54
 
58
55
  Parameters
disdrodb/l0/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # -----------------------------------------------------------------------------.
2
- # Copyright (c) 2021-2023 DISDRODB developers
2
+ # Copyright (c) 2021-2026 DISDRODB developers
3
3
  #
4
4
  # This program is free software: you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -15,6 +15,7 @@
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
16
  # -----------------------------------------------------------------------------.
17
17
  """DISDRODB L0 software."""
18
+
18
19
  from disdrodb.l0.l0_reader import available_readers, get_reader, get_station_reader
19
20
  from disdrodb.l0.l0a_processing import generate_l0a
20
21
  from disdrodb.l0.l0b_nc_processing import generate_l0b_from_nc
@@ -1,7 +1,5 @@
1
- #!/usr/bin/env python3
2
-
3
1
  # -----------------------------------------------------------------------------.
4
- # Copyright (c) 2021-2023 DISDRODB developers
2
+ # Copyright (c) 2021-2026 DISDRODB developers
5
3
  #
6
4
  # This program is free software: you can redistribute it and/or modify
7
5
  # it under the terms of the GNU General Public License as published by
@@ -19,10 +17,9 @@
19
17
  """Check configuration files."""
20
18
 
21
19
  import os
22
- from typing import Optional, Union
23
20
 
24
21
  import numpy as np
25
- from pydantic import BaseModel, Field, ValidationError, field_validator, model_validator
22
+ from pydantic import Field, field_validator, model_validator
26
23
 
27
24
  from disdrodb.api.configs import available_sensor_names, get_sensor_configs_dir, read_config_file
28
25
  from disdrodb.l0.standards import (
@@ -36,6 +33,7 @@ from disdrodb.l0.standards import (
36
33
  get_velocity_bin_width,
37
34
  )
38
35
  from disdrodb.utils.directories import list_files
36
+ from disdrodb.utils.pydantic import CustomBaseModel
39
37
 
40
38
  CONFIG_FILES_LIST = [
41
39
  "bins_diameter.yml",
@@ -104,28 +102,24 @@ def check_variable_consistency(sensor_name: str) -> None:
104
102
  raise ValueError(msg)
105
103
 
106
104
 
107
- class SchemaValidationException(Exception):
108
- """Exception raised when schema validation fails."""
109
-
110
-
111
- def _schema_error(object_to_validate: Union[str, list], schema: BaseModel, message) -> bool:
105
+ def _schema_error(object_to_validate: str | list, schema: CustomBaseModel, message) -> bool:
112
106
  """Function that validate the schema of a given object with a given schema.
113
107
 
114
108
  Parameters
115
109
  ----------
116
110
  object_to_validate : Union[str,list]
117
111
  Object to validate.
118
- schema : BaseModel
112
+ schema : CustomBaseModel
119
113
  Base model.
120
114
 
121
115
  """
122
116
  try:
123
117
  schema(**object_to_validate)
124
- except ValidationError as e:
125
- raise SchemaValidationException(f"Schema validation failed. {message} {e}")
118
+ except ValueError as e:
119
+ raise ValueError(f"{message} {e!s}") from None
126
120
 
127
121
 
128
- class L0BEncodingSchema(BaseModel):
122
+ class L0BEncodingSchema(CustomBaseModel):
129
123
  """Pydantic model for DISDRODB netCDF encodings."""
130
124
 
131
125
  contiguous: bool
@@ -134,8 +128,10 @@ class L0BEncodingSchema(BaseModel):
134
128
  complevel: int
135
129
  shuffle: bool
136
130
  fletcher32: bool
137
- FillValue: Optional[Union[int, float]] = Field(default=None, alias="_FillValue")
138
- chunksizes: Optional[Union[int, list[int]]]
131
+ FillValue: int | float | None = Field(default=None, alias="_FillValue")
132
+ chunksizes: int | list[int] | None
133
+ add_offset: float | None = None
134
+ scale_factor: float | None = None
139
135
 
140
136
  # if contiguous=False, chunksizes specified, otherwise should be not !
141
137
  @model_validator(mode="before")
@@ -200,6 +196,17 @@ class L0BEncodingSchema(BaseModel):
200
196
 
201
197
  return values
202
198
 
199
+ @model_validator(mode="after")
200
+ def remove_offset_and_scale_if_not_int(self):
201
+ """Ensure add_offset and scale_factor only apply to integer/uint dtypes."""
202
+ integer_types = {"int8", "int16", "int32", "int64", "uint8", "uint16", "uint32", "uint64"}
203
+
204
+ if self.dtype not in integer_types:
205
+ self.add_offset = None
206
+ self.scale_factor = None
207
+
208
+ return self
209
+
203
210
 
204
211
  def check_l0b_encoding(sensor_name: str) -> None:
205
212
  """Check ``l0b_encodings.yml`` file based on the schema defined in the class ``L0BEncodingSchema``.
@@ -216,7 +223,7 @@ def check_l0b_encoding(sensor_name: str) -> None:
216
223
  _schema_error(
217
224
  object_to_validate=value,
218
225
  schema=L0BEncodingSchema,
219
- message=f"Sensore name : {sensor_name}. Key : {key}.",
226
+ message=f"Invalid {sensor_name} L0B Encoding YAML file '{key}' settings.",
220
227
  )
221
228
 
222
229
 
@@ -243,19 +250,19 @@ def check_l0a_encoding(sensor_name: str) -> None:
243
250
  raise TypeError(f"Expecting a string for {key} in l0a_encodings.yml for sensor {sensor_name}.")
244
251
 
245
252
 
246
- class RawDataFormatSchema(BaseModel):
253
+ class RawDataFormatSchema(CustomBaseModel):
247
254
  """Pydantic model for the DISDRODB RAW Data Format YAML files."""
248
255
 
249
- n_digits: Optional[int]
250
- n_characters: Optional[int]
251
- n_decimals: Optional[int]
252
- n_naturals: Optional[int]
253
- data_range: Optional[list[float]]
254
- nan_flags: Optional[Union[int, float, str]] = None
255
- valid_values: Optional[list[float]] = None
256
- dimension_order: Optional[list[str]] = None
257
- n_values: Optional[int] = None
258
- field_number: Optional[str] = None
256
+ n_digits: int | None
257
+ n_characters: int | None
258
+ n_decimals: int | None
259
+ n_naturals: int | None
260
+ data_range: list[float] | None
261
+ nan_flags: int | float | str | None = None
262
+ valid_values: list[float] | None = None
263
+ dimension_order: list[str] | None = None
264
+ n_values: int | None = None
265
+ field_number: str | None = None
259
266
 
260
267
  @field_validator("data_range")
261
268
  def check_list_length(cls, value):
@@ -282,7 +289,7 @@ def check_raw_data_format(sensor_name: str) -> None:
282
289
  _schema_error(
283
290
  object_to_validate=value,
284
291
  schema=RawDataFormatSchema,
285
- message=f"Sensore name : {sensor_name}. Key : {key}.",
292
+ message=f"Invalid {sensor_name} RawDataFormat YAML file '{key}' settings.",
286
293
  )
287
294
 
288
295
 
@@ -1,7 +1,5 @@
1
- #!/usr/bin/env python3
2
-
3
1
  # -----------------------------------------------------------------------------.
4
- # Copyright (c) 2021-2023 DISDRODB developers
2
+ # Copyright (c) 2021-2026 DISDRODB developers
5
3
  #
6
4
  # This program is free software: you can redistribute it and/or modify
7
5
  # it under the terms of the GNU General Public License as published by
@@ -18,7 +16,6 @@
18
16
  # -----------------------------------------------------------------------------.
19
17
  """Check data standards."""
20
18
 
21
-
22
19
  import logging
23
20
 
24
21
  import numpy as np
@@ -53,23 +53,23 @@ number_particles_min_diameter_internal_data: "float32"
53
53
  number_particles_no_hydrometeor: "float32" # 'uint16'
54
54
  number_particles_no_hydrometeor_internal_data: "float32"
55
55
  number_particles_unknown_classification: "float32" # 'uint16'
56
- number_particles_unknown_classification_internal_data: "float32"
57
- number_particles_class_1: "float32" # 'uint16'
58
- number_particles_class_1_internal_data: "float32"
59
- number_particles_class_2: "float32" # 'uint16'
60
- number_particles_class_2_internal_data: "float32"
61
- number_particles_class_3: "float32" # 'uint16'
62
- number_particles_class_3_internal_data: "float32"
63
- number_particles_class_4: "float32" # 'uint16'
64
- number_particles_class_4_internal_data: "float32"
65
- number_particles_class_5: "float32" # 'uint16'
66
- number_particles_class_5_internal_data: "float32"
67
- number_particles_class_6: "float32" # 'uint16'
68
- number_particles_class_6_internal_data: "float32"
69
- number_particles_class_7: "float32" # 'uint16'
70
- number_particles_class_7_internal_data: "float32"
71
- number_particles_class_8: "float32" # 'uint16'
72
- number_particles_class_8_internal_data: "float32"
56
+ total_gross_volume_unknown_classification: "float32"
57
+ number_particles_hail: "float32" # 'uint16'
58
+ total_gross_volume_hail: "float32"
59
+ number_particles_solid_precipitation: "float32" # 'uint16'
60
+ total_gross_volume_solid_precipitation: "float32"
61
+ number_particles_large_pellet: "float32" # 'uint16'
62
+ total_gross_volume_large_pellet: "float32"
63
+ number_particles_small_pellet: "float32" # 'uint16'
64
+ total_gross_volume_small_pellet: "float32"
65
+ number_particles_snowgrain: "float32" # 'uint16'
66
+ total_gross_volume_snowgrain: "float32"
67
+ number_particles_rain: "float32" # 'uint16'
68
+ total_gross_volume_rain: "float32"
69
+ number_particles_small_rain: "float32" # 'uint16'
70
+ total_gross_volume_small_rain: "float32"
71
+ number_particles_drizzle: "float32" # 'uint16'
72
+ total_gross_volume_drizzle: "float32"
73
73
  number_particles_class_9: "float32" # 'uint16'
74
74
  number_particles_class_9_internal_data: "float32"
75
75
  raw_drop_number: "str"
@@ -224,81 +224,81 @@ number_particles_unknown_classification:
224
224
  description: Number of particles with unknown classification
225
225
  long_name: Number of particles with unknown classification
226
226
  units: ""
227
- number_particles_unknown_classification_internal_data:
228
- description: Total volume (gross) of this class
229
- long_name: Number of particles with unknown classification internal data
227
+ total_gross_volume_unknown_classification:
228
+ description: Total (gross) volume of particles classified as unknown
229
+ long_name: Total (gross) volume of particles classified as unknown
230
230
  units: ""
231
- number_particles_class_1:
232
- description: Number of particles class 1
233
- long_name: Number of particles class 1
231
+ number_particles_hail:
232
+ description: Number of particles classified as hail
233
+ long_name: Number of particles classified as hail
234
234
  units: ""
235
- number_particles_class_1_internal_data:
236
- description: Total volume (gross) of class 1
237
- long_name: Total volume of class 1
235
+ total_gross_volume_hail:
236
+ description: Total (gross) volume of particles classified as hail
237
+ long_name: Total (gross) volume of particles classified as hail
238
238
  units: ""
239
- number_particles_class_2:
240
- description: Number of particles class 2
241
- long_name: Number of particles class 2
239
+ number_particles_solid_precipitation:
240
+ description: Number of particles classified as solid precipitation
241
+ long_name: Number of particles classified as solid precipitation
242
242
  units: ""
243
- number_particles_class_2_internal_data:
244
- description: Total volume (gross) of class 2
245
- long_name: Total volume of class 2
243
+ total_gross_volume_solid_precipitation:
244
+ description: Total (gross) volume of particles classified as solid precipitation
245
+ long_name: Total (gross) volume of particles classified as solid precipitation
246
246
  units: ""
247
- number_particles_class_3:
248
- description: Number of particles class 3
249
- long_name: Number of particles class 3
247
+ number_particles_large_pellet:
248
+ description: Number of particles classified as great pellet
249
+ long_name: Number of particles classified as great pellet
250
250
  units: ""
251
- number_particles_class_3_internal_data:
252
- description: Total volume (gross) of class 3
253
- long_name: Total volume of class 3
251
+ total_gross_volume_large_pellet:
252
+ description: Total (gross) volume of particles classified as great pellet
253
+ long_name: Total (gross) volume of particles classified as great pellet
254
254
  units: ""
255
- number_particles_class_4:
256
- description: Number of particles class 4
257
- long_name: Number of particles class 4
255
+ number_particles_small_pellet:
256
+ description: Number of particles classified as small pellet
257
+ long_name: Number of particles classified as small pellet
258
258
  units: ""
259
- number_particles_class_4_internal_data:
260
- description: Total volume (gross) of class 4
261
- long_name: Total volume of class 4
259
+ total_gross_volume_small_pellet:
260
+ description: Total (gross) volume of particles classified as small pellet
261
+ long_name: Total (gross) volume of particles classified as small pellet
262
262
  units: ""
263
- number_particles_class_5:
264
- description: Number of particles class 5
265
- long_name: Number of particles class 5
263
+ number_particles_snowgrain:
264
+ description: Number of particles classified as snowgrain
265
+ long_name: Number of particles classified as snowgrain
266
266
  units: ""
267
- number_particles_class_5_internal_data:
268
- description: Total volume (gross) of class 5
269
- long_name: Total volume of class 5
267
+ total_gross_volume_snowgrain:
268
+ description: Total (gross) volume of particles classified as snowgrain
269
+ long_name: Total (gross) volume of particles classified as snowgrain
270
270
  units: ""
271
- number_particles_class_6:
272
- description: Number of particles class 6
273
- long_name: Number of particles class 6
271
+ number_particles_rain:
272
+ description: Number of particles classified as rain
273
+ long_name: Number of particles classified as rain
274
274
  units: ""
275
- number_particles_class_6_internal_data:
276
- description: Total volume (gross) of class 6
277
- long_name: Total volume of class 6
275
+ total_gross_volume_rain:
276
+ description: Total (gross) volume of particles classified as rain
277
+ long_name: Total (gross) volume of particles classified as rain
278
278
  units: ""
279
- number_particles_class_7:
280
- description: Number of particles class 7
281
- long_name: Number of particles class 7
279
+ number_particles_small_rain:
280
+ description: Number of particles classified as small rain
281
+ long_name: Number of particles classified as small rain
282
282
  units: ""
283
- number_particles_class_7_internal_data:
284
- description: Total volume (gross) of class 7
285
- long_name: Total volume of class 7
283
+ total_gross_volume_small_rain:
284
+ description: Total (gross) volume of particles classified as small rain
285
+ long_name: Total (gross) volume of particles classified as small rain
286
286
  units: ""
287
- number_particles_class_8:
288
- description: Number of particles class 8
289
- long_name: Number of particles class 8
287
+ number_particles_drizzle:
288
+ description: Number of particles classified as drizzle
289
+ long_name: Number of particles classified as drizzle
290
290
  units: ""
291
- number_particles_class_8_internal_data:
292
- description: Total volume (gross) of class 8
293
- long_name: Total volume of class 8
291
+ total_gross_volume_drizzle:
292
+ description: Total (gross) volume of particles classified as drizzle
293
+ long_name: Total (gross) volume of particles classified as drizzle
294
294
  units: ""
295
295
  number_particles_class_9:
296
- description: Number of particles class 9
297
- long_name: Number of particles class 9
296
+ description: Number of particles for reserved class 9
297
+ long_name: Number of particles for reserved class 9
298
298
  units: ""
299
299
  number_particles_class_9_internal_data:
300
- description: Total volume (gross) of class 9
301
- long_name: Total volume of class 9
300
+ description: Total volume (gross) for reserved class 9
301
+ long_name: Total volume of reserved class 9
302
302
  units: ""
303
303
  raw_drop_number:
304
304
  description: Precipitation spectrum
@@ -520,7 +520,7 @@ number_particles_unknown_classification:
520
520
  contiguous: false
521
521
  chunksizes: 5000
522
522
  _FillValue: 65535
523
- number_particles_unknown_classification_internal_data:
523
+ total_gross_volume_unknown_classification:
524
524
  dtype: float32
525
525
  zlib: true
526
526
  complevel: 3
@@ -528,7 +528,7 @@ number_particles_unknown_classification_internal_data:
528
528
  fletcher32: false
529
529
  contiguous: false
530
530
  chunksizes: 5000
531
- number_particles_class_1:
531
+ number_particles_hail:
532
532
  dtype: uint16
533
533
  zlib: true
534
534
  complevel: 3
@@ -537,7 +537,7 @@ number_particles_class_1:
537
537
  contiguous: false
538
538
  chunksizes: 5000
539
539
  _FillValue: 65535
540
- number_particles_class_1_internal_data:
540
+ total_gross_volume_hail:
541
541
  dtype: float32
542
542
  zlib: true
543
543
  complevel: 3
@@ -545,7 +545,7 @@ number_particles_class_1_internal_data:
545
545
  fletcher32: false
546
546
  contiguous: false
547
547
  chunksizes: 5000
548
- number_particles_class_2:
548
+ number_particles_solid_precipitation:
549
549
  dtype: uint16
550
550
  zlib: true
551
551
  complevel: 3
@@ -554,7 +554,7 @@ number_particles_class_2:
554
554
  contiguous: false
555
555
  chunksizes: 5000
556
556
  _FillValue: 65535
557
- number_particles_class_2_internal_data:
557
+ total_gross_volume_solid_precipitation:
558
558
  dtype: float32
559
559
  zlib: true
560
560
  complevel: 3
@@ -562,7 +562,7 @@ number_particles_class_2_internal_data:
562
562
  fletcher32: false
563
563
  contiguous: false
564
564
  chunksizes: 5000
565
- number_particles_class_3:
565
+ number_particles_large_pellet:
566
566
  dtype: uint16
567
567
  zlib: true
568
568
  complevel: 3
@@ -571,7 +571,7 @@ number_particles_class_3:
571
571
  contiguous: false
572
572
  chunksizes: 5000
573
573
  _FillValue: 65535
574
- number_particles_class_3_internal_data:
574
+ total_gross_volume_large_pellet:
575
575
  dtype: float32
576
576
  zlib: true
577
577
  complevel: 3
@@ -579,7 +579,7 @@ number_particles_class_3_internal_data:
579
579
  fletcher32: false
580
580
  contiguous: false
581
581
  chunksizes: 5000
582
- number_particles_class_4:
582
+ number_particles_small_pellet:
583
583
  dtype: uint16
584
584
  zlib: true
585
585
  complevel: 3
@@ -588,7 +588,7 @@ number_particles_class_4:
588
588
  contiguous: false
589
589
  chunksizes: 5000
590
590
  _FillValue: 65535
591
- number_particles_class_4_internal_data:
591
+ total_gross_volume_small_pellet:
592
592
  dtype: float32
593
593
  zlib: true
594
594
  complevel: 3
@@ -596,7 +596,7 @@ number_particles_class_4_internal_data:
596
596
  fletcher32: false
597
597
  contiguous: false
598
598
  chunksizes: 5000
599
- number_particles_class_5:
599
+ number_particles_snowgrain:
600
600
  dtype: uint16
601
601
  zlib: true
602
602
  complevel: 3
@@ -605,7 +605,7 @@ number_particles_class_5:
605
605
  contiguous: false
606
606
  chunksizes: 5000
607
607
  _FillValue: 65535
608
- number_particles_class_5_internal_data:
608
+ total_gross_volume_snowgrain:
609
609
  dtype: float32
610
610
  zlib: true
611
611
  complevel: 3
@@ -613,7 +613,7 @@ number_particles_class_5_internal_data:
613
613
  fletcher32: false
614
614
  contiguous: false
615
615
  chunksizes: 5000
616
- number_particles_class_6:
616
+ number_particles_rain:
617
617
  dtype: uint16
618
618
  zlib: true
619
619
  complevel: 3
@@ -622,7 +622,7 @@ number_particles_class_6:
622
622
  contiguous: false
623
623
  chunksizes: 5000
624
624
  _FillValue: 65535
625
- number_particles_class_6_internal_data:
625
+ total_gross_volume_rain:
626
626
  dtype: float32
627
627
  zlib: true
628
628
  complevel: 3
@@ -630,7 +630,7 @@ number_particles_class_6_internal_data:
630
630
  fletcher32: false
631
631
  contiguous: false
632
632
  chunksizes: 5000
633
- number_particles_class_7:
633
+ number_particles_small_rain:
634
634
  dtype: uint16
635
635
  zlib: true
636
636
  complevel: 3
@@ -639,7 +639,7 @@ number_particles_class_7:
639
639
  contiguous: false
640
640
  chunksizes: 5000
641
641
  _FillValue: 65535
642
- number_particles_class_7_internal_data:
642
+ total_gross_volume_small_rain:
643
643
  dtype: float32
644
644
  zlib: true
645
645
  complevel: 3
@@ -647,7 +647,7 @@ number_particles_class_7_internal_data:
647
647
  fletcher32: false
648
648
  contiguous: false
649
649
  chunksizes: 5000
650
- number_particles_class_8:
650
+ number_particles_drizzle:
651
651
  dtype: uint16
652
652
  zlib: true
653
653
  complevel: 3
@@ -656,7 +656,7 @@ number_particles_class_8:
656
656
  contiguous: false
657
657
  chunksizes: 5000
658
658
  _FillValue: 65535
659
- number_particles_class_8_internal_data:
659
+ total_gross_volume_drizzle:
660
660
  dtype: float32
661
661
  zlib: true
662
662
  complevel: 3