disdrodb 0.2.0__py3-none-any.whl → 0.3.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 (315) hide show
  1. disdrodb/__init__.py +1 -1
  2. disdrodb/_config.py +1 -3
  3. disdrodb/_version.py +2 -2
  4. disdrodb/accessor/__init__.py +1 -1
  5. disdrodb/accessor/methods.py +18 -11
  6. disdrodb/api/checks.py +2 -4
  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 +15 -9
  11. disdrodb/api/path.py +1 -3
  12. disdrodb/cli/disdrodb_check_metadata_archive.py +2 -2
  13. disdrodb/cli/disdrodb_check_products_options.py +44 -0
  14. disdrodb/cli/disdrodb_create_summary.py +48 -22
  15. disdrodb/cli/disdrodb_create_summary_station.py +39 -18
  16. disdrodb/cli/disdrodb_data_archive_directory.py +1 -3
  17. disdrodb/cli/disdrodb_download_archive.py +45 -24
  18. disdrodb/cli/disdrodb_download_metadata_archive.py +27 -16
  19. disdrodb/cli/disdrodb_download_station.py +56 -26
  20. disdrodb/cli/disdrodb_initialize_station.py +40 -20
  21. disdrodb/cli/disdrodb_metadata_archive_directory.py +1 -3
  22. disdrodb/cli/disdrodb_open_data_archive.py +16 -11
  23. disdrodb/cli/disdrodb_open_logs_directory.py +29 -18
  24. disdrodb/cli/disdrodb_open_metadata_archive.py +25 -11
  25. disdrodb/cli/disdrodb_open_metadata_directory.py +32 -20
  26. disdrodb/cli/disdrodb_open_product_directory.py +38 -21
  27. disdrodb/cli/disdrodb_open_readers_directory.py +1 -3
  28. disdrodb/cli/disdrodb_run.py +189 -0
  29. disdrodb/cli/disdrodb_run_l0.py +55 -64
  30. disdrodb/cli/disdrodb_run_l0_station.py +47 -52
  31. disdrodb/cli/disdrodb_run_l0a.py +47 -45
  32. disdrodb/cli/disdrodb_run_l0a_station.py +38 -37
  33. disdrodb/cli/disdrodb_run_l0b.py +45 -45
  34. disdrodb/cli/disdrodb_run_l0b_station.py +37 -36
  35. disdrodb/cli/disdrodb_run_l0c.py +50 -47
  36. disdrodb/cli/disdrodb_run_l0c_station.py +41 -38
  37. disdrodb/cli/disdrodb_run_l1.py +49 -45
  38. disdrodb/cli/disdrodb_run_l1_station.py +40 -37
  39. disdrodb/cli/disdrodb_run_l2e.py +50 -45
  40. disdrodb/cli/disdrodb_run_l2e_station.py +41 -37
  41. disdrodb/cli/disdrodb_run_l2m.py +49 -45
  42. disdrodb/cli/disdrodb_run_l2m_station.py +40 -37
  43. disdrodb/cli/disdrodb_run_station.py +184 -0
  44. disdrodb/cli/disdrodb_upload_archive.py +45 -35
  45. disdrodb/cli/disdrodb_upload_station.py +39 -32
  46. disdrodb/configs.py +13 -8
  47. disdrodb/constants.py +4 -2
  48. disdrodb/data_transfer/__init__.py +1 -3
  49. disdrodb/data_transfer/download_data.py +38 -54
  50. disdrodb/data_transfer/upload_data.py +1 -3
  51. disdrodb/data_transfer/zenodo.py +1 -3
  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 +1 -14
  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 +17 -3
  74. disdrodb/etc/products/L2M/global.yaml +1 -1
  75. disdrodb/fall_velocity/__init__.py +46 -0
  76. disdrodb/fall_velocity/graupel.py +483 -0
  77. disdrodb/fall_velocity/hail.py +287 -0
  78. disdrodb/{l1/fall_velocity.py → fall_velocity/rain.py} +265 -50
  79. disdrodb/issue/__init__.py +1 -3
  80. disdrodb/issue/checks.py +3 -5
  81. disdrodb/issue/reader.py +1 -3
  82. disdrodb/issue/writer.py +1 -3
  83. disdrodb/l0/__init__.py +1 -1
  84. disdrodb/l0/check_configs.py +26 -17
  85. disdrodb/l0/check_standards.py +1 -3
  86. disdrodb/l0/configs/LPM/l0a_encodings.yml +0 -1
  87. disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +0 -4
  88. disdrodb/l0/configs/LPM/l0b_encodings.yml +9 -9
  89. disdrodb/l0/configs/LPM/raw_data_format.yml +11 -11
  90. disdrodb/l0/configs/LPM_V0/bins_diameter.yml +103 -0
  91. disdrodb/l0/configs/LPM_V0/bins_velocity.yml +103 -0
  92. disdrodb/l0/configs/LPM_V0/l0a_encodings.yml +45 -0
  93. disdrodb/l0/configs/LPM_V0/l0b_cf_attrs.yml +180 -0
  94. disdrodb/l0/configs/LPM_V0/l0b_encodings.yml +410 -0
  95. disdrodb/l0/configs/LPM_V0/raw_data_format.yml +474 -0
  96. disdrodb/l0/configs/ODM470/bins_diameter.yml +643 -0
  97. disdrodb/l0/configs/ODM470/bins_velocity.yml +0 -0
  98. disdrodb/l0/configs/ODM470/l0a_encodings.yml +11 -0
  99. disdrodb/l0/configs/ODM470/l0b_cf_attrs.yml +46 -0
  100. disdrodb/l0/configs/ODM470/l0b_encodings.yml +106 -0
  101. disdrodb/l0/configs/ODM470/raw_data_format.yml +111 -0
  102. disdrodb/l0/configs/PARSIVEL/l0b_cf_attrs.yml +1 -1
  103. disdrodb/l0/configs/PARSIVEL/raw_data_format.yml +8 -8
  104. disdrodb/l0/configs/PARSIVEL2/raw_data_format.yml +9 -9
  105. disdrodb/l0/l0_reader.py +1 -3
  106. disdrodb/l0/l0a_processing.py +7 -5
  107. disdrodb/l0/l0b_nc_processing.py +2 -4
  108. disdrodb/l0/l0b_processing.py +27 -22
  109. disdrodb/l0/l0c_processing.py +37 -11
  110. disdrodb/l0/manuals/LPM_V0.pdf +0 -0
  111. disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +1 -1
  112. disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +1 -1
  113. disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +1 -1
  114. disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +1 -1
  115. disdrodb/l0/readers/LPM/GERMANY/DWD.py +190 -12
  116. disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +63 -14
  117. disdrodb/l0/readers/LPM/ITALY/GID_LPM_PI.py +279 -0
  118. disdrodb/l0/readers/LPM/ITALY/GID_LPM_T.py +279 -0
  119. disdrodb/l0/readers/LPM/ITALY/GID_LPM_W.py +3 -5
  120. disdrodb/l0/readers/LPM/KIT/CHWALA.py +1 -3
  121. disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_LPM_NC.py +1 -1
  122. disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_RWANDA_LPM_NC.py +103 -0
  123. disdrodb/l0/readers/LPM/NORWAY/HAUKELISETER_LPM.py +214 -0
  124. disdrodb/l0/readers/LPM/NORWAY/NMBU_LPM.py +206 -0
  125. disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +1 -3
  126. disdrodb/l0/readers/LPM/SLOVENIA/UL.py +1 -3
  127. disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +1 -3
  128. disdrodb/l0/readers/LPM/UK/DIVEN.py +1 -1
  129. disdrodb/l0/readers/LPM/UK/WITHWORTH_LPM.py +217 -0
  130. disdrodb/l0/readers/LPM/USA/CHARLESTON.py +227 -0
  131. disdrodb/l0/readers/{LPM → LPM_V0}/BELGIUM/ULIEGE.py +34 -52
  132. disdrodb/l0/readers/LPM_V0/ITALY/GID_LPM_V0.py +240 -0
  133. disdrodb/l0/readers/ODM470/OCEAN/OCEANRAIN.py +123 -0
  134. disdrodb/l0/readers/PARSIVEL/AUSTRALIA/MELBOURNE_2007_PARSIVEL.py +1 -1
  135. disdrodb/l0/readers/PARSIVEL/BASQUECOUNTRY/EUSKALMET_OTT.py +1 -1
  136. disdrodb/l0/readers/PARSIVEL/CHINA/CHONGQING.py +1 -3
  137. disdrodb/l0/readers/PARSIVEL/EPFL/ARCTIC_2021.py +1 -1
  138. disdrodb/l0/readers/PARSIVEL/EPFL/COMMON_2011.py +1 -1
  139. disdrodb/l0/readers/PARSIVEL/EPFL/DAVOS_2009_2011.py +1 -1
  140. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_2009.py +1 -1
  141. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2008.py +1 -1
  142. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2010.py +1 -1
  143. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2011.py +1 -1
  144. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2012.py +1 -1
  145. disdrodb/l0/readers/PARSIVEL/EPFL/GENEPI_2007.py +1 -1
  146. disdrodb/l0/readers/PARSIVEL/EPFL/GRAND_ST_BERNARD_2007.py +1 -1
  147. disdrodb/l0/readers/PARSIVEL/EPFL/GRAND_ST_BERNARD_2007_2.py +1 -1
  148. disdrodb/l0/readers/PARSIVEL/EPFL/HPICONET_2010.py +1 -1
  149. disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP2.py +1 -1
  150. disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP3.py +1 -1
  151. disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP4.py +1 -1
  152. disdrodb/l0/readers/PARSIVEL/EPFL/LOCARNO_2018.py +1 -1
  153. disdrodb/l0/readers/PARSIVEL/EPFL/LOCARNO_2019.py +1 -1
  154. disdrodb/l0/readers/PARSIVEL/EPFL/PARADISO_2014.py +1 -1
  155. disdrodb/l0/readers/PARSIVEL/EPFL/PARSIVEL_2007.py +1 -1
  156. disdrodb/l0/readers/PARSIVEL/EPFL/PLATO_2019.py +1 -1
  157. disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019.py +1 -1
  158. disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019_WJF.py +1 -1
  159. disdrodb/l0/readers/PARSIVEL/EPFL/RIETHOLZBACH_2011.py +1 -1
  160. disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2017.py +1 -1
  161. disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2019.py +1 -1
  162. disdrodb/l0/readers/PARSIVEL/EPFL/UNIL_2022.py +1 -1
  163. disdrodb/l0/readers/PARSIVEL/JAPAN/JMA.py +1 -1
  164. disdrodb/l0/readers/PARSIVEL/KOREA/ICEPOP_MSC.py +159 -0
  165. disdrodb/l0/readers/PARSIVEL/NASA/LPVEX.py +26 -14
  166. disdrodb/l0/readers/PARSIVEL/NASA/MC3E.py +2 -2
  167. disdrodb/l0/readers/PARSIVEL/NCAR/CCOPE_2015.py +1 -1
  168. disdrodb/l0/readers/PARSIVEL/NCAR/OWLES_MIPS.py +1 -1
  169. disdrodb/l0/readers/PARSIVEL/NCAR/PECAN_MOBILE.py +1 -1
  170. disdrodb/l0/readers/PARSIVEL/NCAR/PLOWS_MIPS.py +1 -1
  171. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2009.py +1 -1
  172. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +1 -3
  173. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +1 -3
  174. disdrodb/l0/readers/PARSIVEL/SLOVENIA/UL.py +1 -1
  175. disdrodb/l0/readers/PARSIVEL2/ARM/ARM_PARSIVEL2.py +1 -1
  176. disdrodb/l0/readers/PARSIVEL2/BASQUECOUNTRY/EUSKALMET_OTT2.py +2 -2
  177. disdrodb/l0/readers/PARSIVEL2/BELGIUM/ILVO.py +1 -3
  178. disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +1 -1
  179. disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +1 -1
  180. disdrodb/l0/readers/PARSIVEL2/CANADA/UQAM_NC.py +1 -1
  181. disdrodb/l0/readers/PARSIVEL2/DENMARK/DTU.py +1 -1
  182. disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_nc.py +1 -1
  183. disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_raw.py +1 -1
  184. disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +1 -1
  185. disdrodb/l0/readers/PARSIVEL2/FRANCE/ENPC_PARSIVEL2.py +1 -3
  186. disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +1 -1
  187. disdrodb/l0/readers/PARSIVEL2/FRANCE/SIRTA_PARSIVEL2.py +1 -3
  188. disdrodb/l0/readers/PARSIVEL2/GREECE/NOA.py +4 -3
  189. disdrodb/l0/readers/PARSIVEL2/ITALY/GID_PARSIVEL2.py +1 -3
  190. disdrodb/l0/readers/PARSIVEL2/ITALY/HYDROX.py +5 -3
  191. disdrodb/l0/readers/PARSIVEL2/JAPAN/PRECIP.py +155 -0
  192. disdrodb/l0/readers/PARSIVEL2/KIT/BURKINA_FASO.py +1 -1
  193. disdrodb/l0/readers/PARSIVEL2/KIT/TEAMX.py +1 -1
  194. disdrodb/l0/readers/PARSIVEL2/KOREA/ICEPOP_MSC.py +161 -0
  195. disdrodb/l0/readers/PARSIVEL2/{NASA/GCPEX.py → KOREA/ICEPOP_UCLM.py} +51 -31
  196. disdrodb/l0/readers/PARSIVEL2/MEXICO/OH_IIUNAM_nc.py +1 -1
  197. disdrodb/l0/readers/PARSIVEL2/MPI/BCO_PARSIVEL2.py +15 -8
  198. disdrodb/l0/readers/PARSIVEL2/MPI/BOWTIE.py +9 -4
  199. disdrodb/l0/readers/PARSIVEL2/NASA/APU.py +31 -6
  200. disdrodb/l0/readers/PARSIVEL2/NASA/NSSTC.py +1 -1
  201. disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +1 -1
  202. disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_FP3.py +1 -1
  203. disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_MIPS.py +1 -1
  204. disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_MIPS.py +1 -1
  205. disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_PIPS.py +1 -1
  206. disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +2 -2
  207. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +1 -1
  208. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +1 -1
  209. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P1.py +1 -3
  210. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +1 -1
  211. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +1 -1
  212. disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT_NC.py +1 -1
  213. disdrodb/l0/readers/{PARSIVEL/NASA/PIERS.py → PARSIVEL2/NORWAY/UIB.py} +65 -31
  214. disdrodb/l0/readers/PARSIVEL2/PHILIPPINES/PAGASA.py +7 -6
  215. disdrodb/l0/readers/PARSIVEL2/SPAIN/CENER.py +1 -1
  216. disdrodb/l0/readers/PARSIVEL2/SPAIN/CR1000DL.py +1 -1
  217. disdrodb/l0/readers/PARSIVEL2/SPAIN/GRANADA.py +1 -3
  218. disdrodb/l0/readers/PARSIVEL2/SPAIN/LIAISE.py +1 -1
  219. disdrodb/l0/readers/PARSIVEL2/SWEDEN/SMHI.py +1 -1
  220. disdrodb/l0/readers/PARSIVEL2/USA/CSU.py +138 -0
  221. disdrodb/l0/readers/PARSIVEL2/USA/CW3E.py +49 -22
  222. disdrodb/l0/readers/PWS100/AUSTRIA/HOAL.py +1 -3
  223. disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100.py +1 -3
  224. disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100_SIRTA.py +1 -1
  225. disdrodb/l0/readers/{PARSIVEL/NASA/IFLOODS.py → RD80/BRAZIL/ATTO_RD80.py} +50 -36
  226. disdrodb/l0/readers/RD80/BRAZIL/CHUVA_RD80.py +1 -3
  227. disdrodb/l0/readers/RD80/BRAZIL/GOAMAZON_RD80.py +1 -3
  228. disdrodb/l0/readers/RD80/NCAR/CINDY_2011_RD80.py +1 -3
  229. disdrodb/l0/readers/RD80/NCAR/RELAMPAGO_RD80.py +1 -3
  230. disdrodb/l0/readers/RD80/NOAA/PSL_RD80.py +1 -3
  231. disdrodb/l0/readers/{SW250 → SWS250}/BELGIUM/KMI.py +2 -4
  232. disdrodb/l0/readers/template_reader_raw_netcdf_data.py +1 -3
  233. disdrodb/l0/readers/template_reader_raw_text_data.py +1 -3
  234. disdrodb/l0/standards.py +4 -5
  235. disdrodb/l0/template_tools.py +1 -3
  236. disdrodb/l1/__init__.py +1 -1
  237. disdrodb/l1/classification.py +913 -0
  238. disdrodb/l1/processing.py +36 -106
  239. disdrodb/l1/resampling.py +8 -3
  240. disdrodb/l1_env/__init__.py +1 -1
  241. disdrodb/l1_env/routines.py +6 -6
  242. disdrodb/l2/__init__.py +1 -1
  243. disdrodb/l2/empirical_dsd.py +61 -31
  244. disdrodb/l2/processing.py +327 -62
  245. disdrodb/metadata/checks.py +1 -3
  246. disdrodb/metadata/download.py +4 -4
  247. disdrodb/metadata/geolocation.py +1 -3
  248. disdrodb/metadata/info.py +1 -3
  249. disdrodb/metadata/manipulation.py +1 -3
  250. disdrodb/metadata/reader.py +1 -3
  251. disdrodb/metadata/search.py +1 -3
  252. disdrodb/metadata/standards.py +1 -3
  253. disdrodb/metadata/writer.py +1 -3
  254. disdrodb/physics/__init__.py +17 -0
  255. disdrodb/physics/atmosphere.py +272 -0
  256. disdrodb/physics/water.py +130 -0
  257. disdrodb/physics/wrappers.py +62 -0
  258. disdrodb/psd/__init__.py +1 -1
  259. disdrodb/psd/fitting.py +22 -9
  260. disdrodb/psd/models.py +1 -1
  261. disdrodb/routines/__init__.py +5 -1
  262. disdrodb/routines/l0.py +28 -18
  263. disdrodb/routines/l1.py +8 -6
  264. disdrodb/routines/l2.py +8 -4
  265. disdrodb/routines/options.py +116 -71
  266. disdrodb/routines/options_validation.py +728 -0
  267. disdrodb/routines/wrappers.py +431 -11
  268. disdrodb/scattering/__init__.py +1 -1
  269. disdrodb/scattering/axis_ratio.py +9 -6
  270. disdrodb/scattering/permittivity.py +8 -8
  271. disdrodb/scattering/routines.py +32 -14
  272. disdrodb/summary/__init__.py +1 -1
  273. disdrodb/summary/routines.py +146 -86
  274. disdrodb/utils/__init__.py +1 -1
  275. disdrodb/utils/archiving.py +16 -9
  276. disdrodb/utils/attrs.py +4 -3
  277. disdrodb/utils/cli.py +8 -10
  278. disdrodb/utils/compression.py +13 -13
  279. disdrodb/utils/dask.py +33 -14
  280. disdrodb/utils/dataframe.py +1 -3
  281. disdrodb/utils/decorators.py +1 -3
  282. disdrodb/utils/dict.py +1 -1
  283. disdrodb/utils/directories.py +3 -5
  284. disdrodb/utils/encoding.py +2 -4
  285. disdrodb/utils/event.py +1 -1
  286. disdrodb/utils/list.py +1 -3
  287. disdrodb/utils/logger.py +1 -3
  288. disdrodb/utils/manipulations.py +182 -6
  289. disdrodb/utils/pydantic.py +80 -0
  290. disdrodb/utils/routines.py +1 -3
  291. disdrodb/utils/subsetting.py +1 -1
  292. disdrodb/utils/time.py +3 -2
  293. disdrodb/utils/warnings.py +1 -3
  294. disdrodb/utils/writer.py +1 -3
  295. disdrodb/utils/xarray.py +30 -3
  296. disdrodb/utils/yaml.py +1 -3
  297. disdrodb/viz/__init__.py +1 -1
  298. disdrodb/viz/plots.py +197 -21
  299. {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/METADATA +2 -2
  300. disdrodb-0.3.0.dist-info/RECORD +358 -0
  301. {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/entry_points.txt +3 -0
  302. disdrodb/etc/products/L1/1MIN.yaml +0 -13
  303. disdrodb/etc/products/L1/LPM/1MIN.yaml +0 -13
  304. disdrodb/etc/products/L1/PARSIVEL/1MIN.yaml +0 -13
  305. disdrodb/etc/products/L1/PARSIVEL2/1MIN.yaml +0 -13
  306. disdrodb/etc/products/L1/PWS100/1MIN.yaml +0 -13
  307. disdrodb/etc/products/L1/RD80/1MIN.yaml +0 -13
  308. disdrodb/etc/products/L1/SWS250/1MIN.yaml +0 -13
  309. disdrodb/etc/products/L2M/10MIN.yaml +0 -12
  310. disdrodb/l1/beard_model.py +0 -618
  311. disdrodb/l1/filters.py +0 -203
  312. disdrodb-0.2.0.dist-info/RECORD +0 -312
  313. {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/WHEEL +0 -0
  314. {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/licenses/LICENSE +0 -0
  315. {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/top_level.txt +0 -0
@@ -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
@@ -56,41 +56,42 @@ def disdrodb_run_l0b_station(
56
56
  data_archive_dir: Optional[str] = None,
57
57
  metadata_archive_dir: Optional[str] = None,
58
58
  ):
59
- """Run the L0B processing of a specific DISDRODB station from the terminal.
60
-
61
- Parameters
62
- ----------
63
- data_source : str
64
- Institution name (when campaign data spans more than 1 country),
65
- or country (when all campaigns (or sensor networks) are inside a given country).
66
- Must be UPPER CASE.
67
- campaign_name : str
68
- Campaign name. Must be UPPER CASE.
69
- station_name : str
70
- Station name
71
- force : bool
72
- If True, overwrite existing data into destination directories.
73
- If False, raise an error if there are already data into destination directories.
74
- The default is False.
75
- verbose : bool
76
- Whether to print detailed processing information into terminal.
77
- The default is True.
78
- parallel : bool
79
- If True, the files are processed simultaneously in multiple processes.
80
- Each process will use a single thread to avoid issues with the HDF/netCDF library.
81
- By default, the number of process is defined with os.cpu_count().
82
- However, you can customize it by typing: DASK_NUM_WORKERS=4 disdrodb_run_l0b_station
83
- If False, the files are processed sequentially in a single process.
84
- If False, multi-threading is automatically exploited to speed up I/0 tasks.
85
- debugging_mode : bool
86
- If True, it reduces the amount of data to process.
87
- It processes 100 rows sampled from 3 L0A files.
88
- The default is False.
89
- data_archive_dir : str
90
- DISDRODB Data Archive directory
91
- Format: <...>/DISDRODB
92
- If not specified, uses path specified in the DISDRODB active configuration.
93
- """
59
+ """Run the DISDRODB L0B processing chain for a specific DISDRODB station.
60
+
61
+ It produces a DISDRODB L0B netCDF file for each DISDRODB L0A Apache Parquet file
62
+ of the specified station.
63
+
64
+ \b
65
+ Station Specification:
66
+ Requires exact specification of data_source, campaign_name, and station_name.
67
+ All three parameters must be provided and are case-sensitive (UPPER CASE required).
68
+
69
+ \b
70
+ Performance Options:
71
+ --parallel: Uses multiple processes for faster processing (default: True)
72
+ If parallel processing is enabled, each process will use a single thread
73
+ to avoid issues with the HDF/netCDF library.
74
+ The DASK_NUM_WORKERS environment variable controls the number of processes
75
+ to use.A sensible default is automatically set by the software.
76
+ --debugging_mode: Processes only a subset of data for testing
77
+ --force: Overwrites existing output files (default: False)
78
+
79
+ \b
80
+ Examples:
81
+ # Process a single station with full processing chain
82
+ disdrodb_run_l0b_station EPFL HYMEX_LTE_SOP2 10
83
+
84
+ # Force overwrite existing files with verbose output
85
+ disdrodb_run_l0b_station EPFL HYMEX_LTE_SOP2 10 --force True --verbose True
86
+
87
+ # Process station with debugging mode and custom workers
88
+ DASK_NUM_WORKERS=4 disdrodb_run_l0b_station NETHERLANDS DELFT PAR001_Cabauw --debugging_mode True
89
+
90
+ \b
91
+ Important Notes:
92
+ - Data source, campaign, and station names must be UPPER CASE
93
+ - All three station identifiers are required (no wildcards or filtering)
94
+ """ # noqa: D301
94
95
  from disdrodb.routines.l0 import run_l0b_station
95
96
  from disdrodb.utils.dask import close_dask_cluster, initialize_dask_cluster
96
97
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
  # -----------------------------------------------------------------------------.
3
- # Copyright (c) 2021-2023 DISDRODB developers
3
+ # Copyright (c) 2021-2026 DISDRODB developers
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
6
6
  # it under the terms of the GNU General Public License as published by
@@ -56,52 +56,55 @@ def disdrodb_run_l0c(
56
56
  data_archive_dir: Optional[str] = None,
57
57
  metadata_archive_dir: Optional[str] = None,
58
58
  ):
59
- """
60
- Run the L0C processing of DISDRODB stations.
61
-
62
- This function allows to launch the processing of many DISDRODB stations with a single command.
63
- From the list of all available DISDRODB stations, it runs the processing of the
64
- stations matching the provided data_sources, campaign_names and station_names.
65
-
66
- Parameters
67
- ----------
68
- data_sources : str
69
- Name of data source(s) to process.
70
- The name(s) must be UPPER CASE.
71
- If campaign_names and station are not specified, process all stations.
72
- To specify multiple data sources, write i.e.: --data_sources 'NASA EPFL NCAR'
73
- campaign_names : str
74
- Name of the campaign(s) to process.
75
- The name(s) must be UPPER CASE.
76
- To specify multiple campaigns, write i.e.: --campaign_names 'IPEX IMPACTS'
77
- station_names : str
78
- Station names.
79
- To specify multiple stations, write i.e.: --station_names 'station1 station2'
80
- force : bool
81
- If True, overwrite existing data into destination directories.
82
- If False, raise an error if there are already data into destination directories.
83
- The default is False.
84
- verbose : bool
85
- Whether to print detailed processing information into terminal.
86
- The default is True.
87
- parallel : bool
88
- If True, the files are processed simultaneously in multiple processes.
89
- Each process will use a single thread to avoid issues with the HDF/netCDF library.
90
- By default, the number of process is defined with os.cpu_count().
91
- However, you can customize it by typing: DASK_NUM_WORKERS=4 disdrodb_run_l0b
92
- If False, the files are processed sequentially in a single process.
93
- If False, multi-threading is automatically exploited to speed up I/0 tasks.
94
- debugging_mode : bool
95
- If True, it reduces the amount of data to process.
96
- It processes 100 rows sampled from 3 L0A files for each station.
97
- The default is False.
98
- remove_l0b: bool, optional
99
- Whether to remove the processed L0B files. The default value is ``False``.
100
- data_archive_dir : str
101
- DISDRODB Data Archive directory
102
- Format: <...>/DISDRODB
103
- If not specified, uses path specified in the DISDRODB active configuration.
104
- """
59
+ """Run the DISDRODB L0C processing chain for many/all DISDRODB stations.
60
+
61
+ It produces DISDRODB L0C files from existing DISDRODB L0B data of the specified stations.
62
+ DISDRODB L0B files must be available before launching the DISDRODB L0C processing.
63
+
64
+ The DISDRODB L0C processing chain performs time-based quality control by
65
+ removing duplicate timesteps and correcting trailing-second offsets.
66
+ Then, it consolidate L0B data into by default daily netCDF files.
67
+
68
+ \b
69
+ Station Selection:
70
+ If no station filters are specified, processes ALL available stations.
71
+ Use data_sources, campaign_names, and station_names to filter stations.
72
+ Filters work together to narrow down the selection (AND logic).
73
+
74
+ \b
75
+ Performance Options:
76
+ --parallel: Uses multiple processes for faster processing (default: True)
77
+ If parallel processing is enabled, each process will use a single thread
78
+ to avoid issues with the HDF/netCDF library.
79
+ The DASK_NUM_WORKERS environment variable controls the number of processes
80
+ to use.A sensible default is automatically set by the software.
81
+ --debugging_mode: Processes only a subset of data for testing
82
+ --force: Overwrites existing output files (default: False)
83
+
84
+ \b
85
+ Examples:
86
+ # Process all stations
87
+ disdrodb_run_l0c
88
+
89
+ # Process a specific data source and force overwrite existing files
90
+ disdrodb_run_l0c --data_sources EPFL --force True --verbose True
91
+
92
+ # Process specific data sources
93
+ disdrodb_run_l0c --data_sources 'USA EPFL'
94
+
95
+ # Process specific campaigns in debugging mode
96
+ disdrodb_run_l0c --campaign_names 'DELFT IMPACTS' --debugging_mode True
97
+
98
+ # Process specific stations with custom number of workers
99
+ DASK_NUM_WORKERS=8 disdrodb_run_l0c --data_sources NASA --station_names 'apu01 apu02'
100
+
101
+ \b
102
+ Important Notes:
103
+ - Data source names must be UPPER CASE
104
+ - Campaign names must be UPPER CASE
105
+ - To specify multiple values, use space-separated strings in quotes
106
+ - Use --debugging_mode for initial testing with reduced data volumes
107
+ """ # noqa: D301
105
108
  from disdrodb.routines import run_l0c
106
109
 
107
110
  # Parse data_sources, campaign_names and station arguments
@@ -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
@@ -57,43 +57,46 @@ def disdrodb_run_l0c_station(
57
57
  data_archive_dir: Optional[str] = None,
58
58
  metadata_archive_dir: Optional[str] = None,
59
59
  ):
60
- """Run the L0C processing of a specific DISDRODB station from the terminal.
61
-
62
- Parameters
63
- ----------
64
- data_source : str
65
- Institution name (when campaign data spans more than 1 country),
66
- or country (when all campaigns (or sensor networks) are inside a given country).
67
- Must be UPPER CASE.
68
- campaign_name : str
69
- Campaign name. Must be UPPER CASE.
70
- station_name : str
71
- Station name
72
- force : bool
73
- If True, overwrite existing data into destination directories.
74
- If False, raise an error if there are already data into destination directories.
75
- The default is False.
76
- verbose : bool
77
- Whether to print detailed processing information into terminal.
78
- The default is True.
79
- parallel : bool
80
- If True, the files are processed simultaneously in multiple processes.
81
- Each process will use a single thread to avoid issues with the HDF/netCDF library.
82
- By default, the number of process is defined with os.cpu_count().
83
- However, you can customize it by typing: DASK_NUM_WORKERS=4 disdrodb_run_l0b_station
84
- If False, the files are processed sequentially in a single process.
85
- If False, multi-threading is automatically exploited to speed up I/0 tasks.
86
- debugging_mode : bool
87
- If True, it reduces the amount of data to process.
88
- It processes 100 rows sampled from 3 L0A files.
89
- The default is False.
90
- remove_l0b: bool, optional
91
- Whether to remove the processed L0B files. The default value is ``False``.
92
- data_archive_dir : str
93
- DISDRODB Data Archive directory
94
- Format: <...>/DISDRODB
95
- If not specified, uses path specified in the DISDRODB active configuration.
96
- """
60
+ """Run the DISDRODB L0C processing chain for a specific DISDRODB station.
61
+
62
+ It produces DISDRODB L0C files from existing DISDRODB L0B data of the specified station.
63
+ DISDRODB L0B files must be available before launching the DISDRODB L0C processing.
64
+
65
+ The DISDRODB L0C processing chain performs time-based quality control by
66
+ removing duplicate timesteps and correcting trailing-second offsets.
67
+ Then, it consolidate L0B data into by default daily netCDF files.
68
+
69
+ \b
70
+ Station Specification:
71
+ Requires exact specification of data_source, campaign_name, and station_name.
72
+ All three parameters must be provided and are case-sensitive (UPPER CASE required).
73
+
74
+ \b
75
+ Performance Options:
76
+ --parallel: Uses multiple processes for faster processing (default: True)
77
+ If parallel processing is enabled, each process will use a single thread
78
+ to avoid issues with the HDF/netCDF library.
79
+ The DASK_NUM_WORKERS environment variable controls the number of processes
80
+ to use.A sensible default is automatically set by the software.
81
+ --debugging_mode: Processes only a subset of data for testing
82
+ --force: Overwrites existing output files (default: False)
83
+
84
+ \b
85
+ Examples:
86
+ # Process a single station with full processing chain
87
+ disdrodb_run_l0c_station EPFL HYMEX_LTE_SOP2 10
88
+
89
+ # Force overwrite existing files with verbose output
90
+ disdrodb_run_l0c_station EPFL HYMEX_LTE_SOP2 10 --force True --verbose True
91
+
92
+ # Process station with debugging mode and custom workers
93
+ DASK_NUM_WORKERS=4 disdrodb_run_l0c_station NETHERLANDS DELFT PAR001_Cabauw --debugging_mode True
94
+
95
+ \b
96
+ Important Notes:
97
+ - Data source, campaign, and station names must be UPPER CASE
98
+ - All three station identifiers are required (no wildcards or filtering)
99
+ """ # noqa: D301
97
100
  from disdrodb.routines.l0 import run_l0c_station
98
101
  from disdrodb.utils.dask import close_dask_cluster, initialize_dask_cluster
99
102
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
  # -----------------------------------------------------------------------------.
3
- # Copyright (c) 2021-2023 DISDRODB developers
3
+ # Copyright (c) 2021-2026 DISDRODB developers
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
6
6
  # it under the terms of the GNU General Public License as published by
@@ -52,50 +52,54 @@ def disdrodb_run_l1(
52
52
  data_archive_dir: Optional[str] = None,
53
53
  metadata_archive_dir: Optional[str] = None,
54
54
  ):
55
- """
56
- Run the L1 processing of DISDRODB stations.
57
-
58
- This function allows to launch the processing of many DISDRODB stations with a single command.
59
- From the list of all available DISDRODB stations, it runs the processing
60
- of the stations matching the provided data_sources, campaign_names and station_names.
61
-
62
- Parameters
63
- ----------
64
- data_sources : str
65
- Name of data source(s) to process.
66
- The name(s) must be UPPER CASE.
67
- If campaign_names and station are not specified, process all stations.
68
- To specify multiple data sources, write i.e.: --data_sources 'NASA EPFL NCAR'
69
- campaign_names : str
70
- Name of the campaign(s) to process.
71
- The name(s) must be UPPER CASE.
72
- To specify multiple campaigns, write i.e.: --campaign_names 'IPEX IMPACTS'
73
- station_names : str
74
- Station names.
75
- To specify multiple stations, write i.e.: --station_names 'station1 station2'
76
- force : bool
77
- If True, overwrite existing data into destination directories.
78
- If False, raise an error if there are already data into destination directories.
79
- The default is False.
80
- verbose : bool
81
- Whether to print detailed processing information into terminal.
82
- The default is False.
83
- parallel : bool
84
- If True, the files are processed simultaneously in multiple processes.
85
- Each process will use a single thread.
86
- By default, the number of process is defined with os.cpu_count().
87
- However, you can customize it by typing: DASK_NUM_WORKERS=4 disdrodb_run_l0a
88
- If False, the files are processed sequentially in a single process.
89
- If False, multi-threading is automatically exploited to speed up I/0 tasks.
90
- debugging_mode : bool
91
- If True, it reduces the amount of data to process.
92
- It processes just the first 3 raw data files for each station.
93
- The default is False.
94
- data_archive_dir : str
95
- DISDRODB Data Archive directory
96
- Format: <...>/DISDRODB
97
- If not specified, uses path specified in the DISDRODB active configuration.
98
- """
55
+ """Run the DISDRODB L1 processing chain for many/all DISDRODB stations.
56
+
57
+ It produces DISDRODB L1 files from existing DISDRODB L0C data of the specified stations.
58
+ DISDRODB L0C files must be available before launching the DISDRODB L1 processing.
59
+
60
+ The DISDRODB L1 processing chain temporally aggregates L0C data at the specified temporal intervals,
61
+ applies quality control (QC) algorithms, and detetermines precipitation phase and hydrometeor types.
62
+
63
+ \b
64
+ Station Selection:
65
+ If no station filters are specified, processes ALL available stations.
66
+ Use data_sources, campaign_names, and station_names to filter stations.
67
+ Filters work together to narrow down the selection (AND logic).
68
+
69
+ \b
70
+ Performance Options:
71
+ --parallel: Uses multiple processes for faster processing (default: True)
72
+ If parallel processing is enabled, each process will use a single thread
73
+ to avoid issues with the HDF/netCDF library.
74
+ The DASK_NUM_WORKERS environment variable controls the number of processes
75
+ to use.A sensible default is automatically set by the software.
76
+ --debugging_mode: Processes only a subset of data for testing
77
+ --force: Overwrites existing output files (default: False)
78
+
79
+ \b
80
+ Examples:
81
+ # Process all stations
82
+ disdrodb_run_l1
83
+
84
+ # Process a specific data source and force overwrite existing files
85
+ disdrodb_run_l1 --data_sources EPFL --force True --verbose True
86
+
87
+ # Process specific data sources
88
+ disdrodb_run_l1 --data_sources 'USA EPFL'
89
+
90
+ # Process specific campaigns in debugging mode
91
+ disdrodb_run_l1 --campaign_names 'DELFT IMPACTS' --debugging_mode True
92
+
93
+ # Process specific stations with custom number of workers
94
+ DASK_NUM_WORKERS=8 disdrodb_run_l1 --data_sources NASA --station_names 'apu01 apu02'
95
+
96
+ \b
97
+ Important Notes:
98
+ - Data source names must be UPPER CASE
99
+ - Campaign names must be UPPER CASE
100
+ - To specify multiple values, use space-separated strings in quotes
101
+ - Use --debugging_mode for initial testing with reduced data volumes
102
+ """ # noqa: D301
99
103
  from disdrodb.routines import run_l1
100
104
 
101
105
  # Parse data_sources, campaign_names and station arguments
@@ -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
@@ -53,42 +53,45 @@ def disdrodb_run_l1_station(
53
53
  data_archive_dir: Optional[str] = None,
54
54
  metadata_archive_dir: Optional[str] = None,
55
55
  ):
56
- """
57
- Run the L1 processing of a specific DISDRODB station from the terminal.
58
-
59
- Parameters
60
- ----------
61
- data_source : str
62
- Institution name (when campaign data spans more than 1 country),
63
- or country (when all campaigns (or sensor networks) are inside a given country).
64
- Must be UPPER CASE.
65
- campaign_name : str
66
- Campaign name. Must be UPPER CASE.
67
- station_name : str
68
- Station name
69
- force : bool
70
- If True, overwrite existing data into destination directories.
71
- If False, raise an error if there are already data into destination directories.
72
- The default is False.
73
- verbose : bool
74
- Whether to print detailed processing information into terminal.
75
- The default is True.
76
- parallel : bool
77
- If True, the files are processed simultaneously in multiple processes.
78
- Each process will use a single thread.
79
- By default, the number of process is defined with os.cpu_count().
80
- However, you can customize it by typing: DASK_NUM_WORKERS=4 disdrodb_run_l0a_station
81
- If False, the files are processed sequentially in a single process.
82
- If False, multi-threading is automatically exploited to speed up I/0 tasks.
83
- debugging_mode : bool
84
- If True, it reduces the amount of data to process.
85
- It processes just the first 3 raw data files.
86
- The default is False.
87
- data_archive_dir : str
88
- DISDRODB Data Archive directory.
89
- Format: <...>/DISDRODB
90
- If not specified, uses path specified in the DISDRODB active configuration.
91
- """
56
+ """Run the DISDRODB L1 processing chain for a specific DISDRODB station.
57
+
58
+ It produces DISDRODB L1 files from existing DISDRODB L0C data of the specified station.
59
+ DISDRODB L0C files must be available before launching the DISDRODB L1 processing.
60
+
61
+ The DISDRODB L1 processing chain temporally aggregates L0C data at the specified temporal intervals,
62
+ applies quality control (QC) algorithms, and detetermines precipitation phase and hydrometeor types.
63
+
64
+ \b
65
+ Station Specification:
66
+ Requires exact specification of data_source, campaign_name, and station_name.
67
+ All three parameters must be provided and are case-sensitive (UPPER CASE required).
68
+
69
+ \b
70
+ Performance Options:
71
+ --parallel: Uses multiple processes for faster processing (default: True)
72
+ If parallel processing is enabled, each process will use a single thread
73
+ to avoid issues with the HDF/netCDF library.
74
+ The DASK_NUM_WORKERS environment variable controls the number of processes
75
+ to use.A sensible default is automatically set by the software.
76
+ --debugging_mode: Processes only a subset of data for testing
77
+ --force: Overwrites existing output files (default: False)
78
+
79
+ \b
80
+ Examples:
81
+ # Process a single station with full processing chain
82
+ disdrodb_run_l1_station EPFL HYMEX_LTE_SOP2 10
83
+
84
+ # Force overwrite existing files with verbose output
85
+ disdrodb_run_l1_station EPFL HYMEX_LTE_SOP2 10 --force True --verbose True
86
+
87
+ # Process station with debugging mode and custom workers
88
+ DASK_NUM_WORKERS=4 disdrodb_run_l1_station NETHERLANDS DELFT PAR001_Cabauw --debugging_mode True
89
+
90
+ \b
91
+ Important Notes:
92
+ - Data source, campaign, and station names must be UPPER CASE
93
+ - All three station identifiers are required (no wildcards or filtering)
94
+ """ # noqa: D301
92
95
  from disdrodb.routines.l1 import run_l1_station
93
96
  from disdrodb.utils.dask import close_dask_cluster, initialize_dask_cluster
94
97
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
  # -----------------------------------------------------------------------------.
3
- # Copyright (c) 2021-2023 DISDRODB developers
3
+ # Copyright (c) 2021-2026 DISDRODB developers
4
4
  #
5
5
  # This program is free software: you can redistribute it and/or modify
6
6
  # it under the terms of the GNU General Public License as published by
@@ -52,50 +52,55 @@ def disdrodb_run_l2e(
52
52
  data_archive_dir: Optional[str] = None,
53
53
  metadata_archive_dir: Optional[str] = None,
54
54
  ):
55
- """
56
- Run the L2E processing of DISDRODB stations.
57
-
58
- This function allows to launch the processing of many DISDRODB stations with a single command.
59
- From the list of all available DISDRODB stations, it runs the processing
60
- of the stations matching the provided data_sources, campaign_names and station_names.
61
-
62
- Parameters
63
- ----------
64
- data_sources : str
65
- Name of data source(s) to process.
66
- The name(s) must be UPPER CASE.
67
- If campaign_names and station are not specified, process all stations.
68
- To specify multiple data sources, write i.e.: --data_sources 'NASA EPFL NCAR'
69
- campaign_names : str
70
- Name of the campaign(s) to process.
71
- The name(s) must be UPPER CASE.
72
- To specify multiple campaigns, write i.e.: --campaign_names 'IPEX IMPACTS'
73
- station_names : str
74
- Station names.
75
- To specify multiple stations, write i.e.: --station_names 'station1 station2'
76
- force : bool
77
- If True, overwrite existing data into destination directories.
78
- If False, raise an error if there are already data into destination directories.
79
- The default is False.
80
- verbose : bool
81
- Whether to print detailed processing information into terminal.
82
- The default is False.
83
- parallel : bool
84
- If True, the files are processed simultaneously in multiple processes.
85
- Each process will use a single thread.
86
- By default, the number of process is defined with os.cpu_count().
87
- However, you can customize it by typing: DASK_NUM_WORKERS=4 disdrodb_run_l0a
88
- If False, the files are processed sequentially in a single process.
89
- If False, multi-threading is automatically exploited to speed up I/0 tasks.
90
- debugging_mode : bool
91
- If True, it reduces the amount of data to process.
92
- It processes just the first 3 raw data files for each station.
93
- The default is False.
94
- data_archive_dir : str
95
- DISDRODB Data Archive directory
96
- Format: <...>/DISDRODB
97
- If not specified, uses path specified in the DISDRODB active configuration.
98
- """
55
+ """Run the DISDRODB L2E processing chain for many/all DISDRODB stations.
56
+
57
+ It produces DISDRODB L2E files from existing DISDRODB L1 data of the specified stations.
58
+ DISDRODB L1 files must be available before launching the DISDRODB L2E processing.
59
+
60
+ The DISDRODB L2E processing chain filters the disdrometer raw spectra,
61
+ compute empirical integral DSD variables and optionally simulate
62
+ polarimetric radar variables at multiple frequencies.
63
+
64
+ \b
65
+ Station Selection:
66
+ If no station filters are specified, processes ALL available stations.
67
+ Use data_sources, campaign_names, and station_names to filter stations.
68
+ Filters work together to narrow down the selection (AND logic).
69
+
70
+ \b
71
+ Performance Options:
72
+ --parallel: Uses multiple processes for faster processing (default: True)
73
+ If parallel processing is enabled, each process will use a single thread
74
+ to avoid issues with the HDF/netCDF library.
75
+ The DASK_NUM_WORKERS environment variable controls the number of processes
76
+ to use.A sensible default is automatically set by the software.
77
+ --debugging_mode: Processes only a subset of data for testing
78
+ --force: Overwrites existing output files (default: False)
79
+
80
+ \b
81
+ Examples:
82
+ # Process all stations
83
+ disdrodb_run_l2e
84
+
85
+ # Process a specific data source and force overwrite existing files
86
+ disdrodb_run_l2e --data_sources EPFL --force True --verbose True
87
+
88
+ # Process specific data sources
89
+ disdrodb_run_l2e --data_sources 'USA EPFL'
90
+
91
+ # Process specific campaigns in debugging mode
92
+ disdrodb_run_l2e --campaign_names 'DELFT IMPACTS' --debugging_mode True
93
+
94
+ # Process specific stations with custom number of workers
95
+ DASK_NUM_WORKERS=8 disdrodb_run_l2e --data_sources NASA --station_names 'apu01 apu02'
96
+
97
+ \b
98
+ Important Notes:
99
+ - Data source names must be UPPER CASE
100
+ - Campaign names must be UPPER CASE
101
+ - To specify multiple values, use space-separated strings in quotes
102
+ - Use --debugging_mode for initial testing with reduced data volumes
103
+ """ # noqa: D301
99
104
  from disdrodb.routines import run_l2e
100
105
 
101
106
  # Parse data_sources, campaign_names and station arguments