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,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
@@ -47,29 +45,61 @@ def disdrodb_download_station(
47
45
  metadata_archive_dir: Optional[str] = None,
48
46
  force: bool = False,
49
47
  ):
50
- """
51
- Download data of a single DISDRODB station from the DISDRODB remote repository.
52
-
53
- Parameters
54
- ----------
55
- data_source : str
56
- The name of the institution (for campaigns spanning multiple countries) or
57
- the name of the country (for campaigns or sensor networks within a single country).
58
- Must be provided in UPPER CASE.
59
- campaign_name : str
60
- The name of the campaign. Must be provided in UPPER CASE.
61
- station_name : str
62
- The name of the station.
63
- data_archive_dir : str, optional
64
- The base directory of DISDRODB, expected in the format ``<...>/DISDRODB``.
65
- If not specified, the path specified in the DISDRODB active configuration will be used.
66
- force: bool, optional
67
- If ``True``, overwrite the already existing raw data file.
68
- The default value is ``False``.
69
- data_archive_dir : str (optional)
70
- DISDRODB Data Archive directory. Format: ``<...>/DISDRODB``.
71
- If ``None`` (the default), the disdrodb config variable ``data_archive_dir`` is used.
72
- """
48
+ """Download raw data of a single station from the DISDRODB Decentralized Data Archive.
49
+
50
+ It downloads station raw data files and stores them in the local DISDRODB Data Archive.
51
+ The data are organized by data_source, campaign_name, and station_name.
52
+
53
+ For stations data hosted on FTP/webservers, recursive calls of
54
+ this command allows to fetch and download just the new data when becomes available.
55
+
56
+ For stations data hosted on data repository such as Zenodo in ZIP archives,
57
+ if a new version becomes available, you must set force=True to download the new version.
58
+
59
+ \b
60
+ Station Specification:
61
+ Requires exact specification of data_source, campaign_name, and station_name.
62
+ All three parameters must be provided and are case-sensitive (UPPER CASE required).
63
+
64
+ \b
65
+ Download Behavior:
66
+ For webserver/FTP-hosted data:
67
+ - Incremental downloads: Fetch only new files when they become available
68
+ - Existing files on disk are skipped unless --force is used
69
+
70
+ For repository-hosted data (e.g., Zenodo):
71
+ - Use --force to download new versions when available
72
+ - Without --force, download is skipped if data already exists locally
73
+
74
+ \b
75
+ Download Options:
76
+ --force: Removes existing raw data files and forces complete re-download (default: False)
77
+ WARNING: All existing station data will be deleted before re-downloading.
78
+
79
+ \b
80
+ Archive Directories:
81
+ --data_archive_dir: Custom path to DISDRODB data archive
82
+ --metadata_archive_dir: Custom path to DISDRODB metadata archive
83
+ If not specified, paths from the active DISDRODB configuration are used
84
+
85
+ \b
86
+ Examples:
87
+ # Download data for a single station
88
+ disdrodb_download_station EPFL HYMEX_LTE_SOP2 10
89
+
90
+ # Force re-download of existing data
91
+ disdrodb_download_station EPFL HYMEX_LTE_SOP2 10 --force True
92
+
93
+ # Download with custom archive directory
94
+ disdrodb_download_station NASA IFLOODS apu01 --data_archive_dir /path/to/DISDRODB
95
+
96
+ \b
97
+ Important Notes:
98
+ - Data source, campaign, and station names must be UPPER CASE
99
+ - All three station identifiers are required (no wildcards)
100
+ - Downloaded files are placed in <data_archive_dir>/Raw/<data_source>/<campaign_name>/<station_name>/
101
+ - Use --force with caution as it will remove data on disk before starting to re-download them.
102
+ """ # noqa: D301
73
103
  from disdrodb.data_transfer.download_data import download_station
74
104
 
75
105
  data_archive_dir = parse_archive_dir(data_archive_dir)
@@ -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
@@ -46,25 +46,45 @@ def disdrodb_initialize_station(
46
46
  data_archive_dir: Optional[str] = None,
47
47
  metadata_archive_dir: Optional[str] = None,
48
48
  ):
49
- r"""Initialize the DISDRODB directory structure for a station.
50
-
51
- It adds the relevant directories and the default issue and metadata YAML files..
52
-
53
- Parameters \n
54
- ---------- \n
55
- data_source : str \n
56
- Institution name (when campaign data spans more than 1 country), or country (when all campaigns (or sensor
57
- networks) are inside a given country).\n
58
- Must be UPPER CASE.\n
59
- campaign_name : str \n
60
- Campaign name. Must be UPPER CASE.\n
61
- station_name : str \n
62
- Station name \n
63
- data_archive_dir : str \n
64
- DISDRODB Data Archive directory \n
65
- Format: <...>/DISDRODB \n
66
- If not specified, uses path specified in the DISDRODB active configuration. \n
67
- """
49
+ """Initialize the DISDRODB directory structure for a new station.
50
+
51
+ Creates the required directory structure and default YAML configuration files
52
+ for a new station in both the DISDRODB Data and Metadata archives.
53
+
54
+ \b
55
+ Station Specification:
56
+ Requires exact specification of data_source, campaign_name, and station_name.
57
+ All three parameters must be provided and are case-sensitive (UPPER CASE required).
58
+
59
+ \b
60
+ Created Structure:
61
+ Data Archive:
62
+ - Data directory for the station where to place the raw data files
63
+
64
+ Metadata Archive:
65
+ - Station metadata YAML file (template)
66
+ - Station issue YAML file (template)
67
+
68
+ \b
69
+ Archive Directories:
70
+ --data_archive_dir: Custom path to DISDRODB data archive
71
+ --metadata_archive_dir: Custom path to DISDRODB metadata archive
72
+ If not specified, paths from the active DISDRODB configuration are used
73
+
74
+ \b
75
+ Examples:
76
+ # Initialize a new station with default configuration
77
+ disdrodb_initialize_station DATA_SOURCE CAMPAIGN_NAME STATION_NAME
78
+
79
+ # Initialize with custom archive directories
80
+ disdrodb_initialize_station DATA_SOURCE CAMPAIGN_NAME STATION_NAME --data_archive_dir /path/to/DISDRODB
81
+
82
+ \b
83
+ Important Notes:
84
+ - Data source, campaign, and station names must be in UPPER CASE
85
+ - All three station identifiers are required (no wildcards)
86
+ - Creates template YAML files that need to be manually filled in
87
+ """ # noqa: D301
68
88
  from disdrodb.api.create_directories import create_initial_station_structure
69
89
 
70
90
  data_archive_dir = parse_archive_dir(data_archive_dir)
@@ -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
@@ -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
@@ -36,14 +34,21 @@ sys.tracebacklimit = 0 # avoid full traceback error if occur
36
34
  def disdrodb_open_data_archive(
37
35
  data_archive_dir: Optional[str] = None,
38
36
  ):
39
- """Open the DISDRODB Data Archive.
40
-
41
- Parameters
42
- ----------
43
- data_archive_dir : str, optional
44
- The base directory of DISDRODB, expected in the format ``<...>/DISDRODB``.
45
- If not specified, the path specified in the DISDRODB active configuration will be used.
46
- """
37
+ """Open the DISDRODB Data Archive directory in the system file explorer.
38
+
39
+ \b
40
+ Archive Directory:
41
+ --data_archive_dir: Custom path to DISDRODB data archive
42
+ If not specified, the path from the active DISDRODB configuration is used
43
+
44
+ \b
45
+ Examples:
46
+ # Open the data archive from active configuration
47
+ disdrodb_open_data_archive
48
+
49
+ # Open a custom data archive directory
50
+ disdrodb_open_data_archive --data_archive_dir /path/to/DISDRODB
51
+ """ # noqa: D301
47
52
  from disdrodb.api.io import open_data_archive
48
53
 
49
54
  data_archive_dir = parse_archive_dir(data_archive_dir)
@@ -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
@@ -41,22 +39,35 @@ def disdrodb_open_logs_directory(
41
39
  station_name: Optional[str] = None,
42
40
  data_archive_dir: Optional[str] = None,
43
41
  ):
44
- """Open the DISDRODB Data Archive logs directory of a station.
42
+ """Open the DISDRODB Data Archive station logs directory in the system file explorer.
43
+
44
+ It allows to easily browse processing logs and error reports.
45
+
46
+ \b
47
+ Station Specification:
48
+ Requires data_source and campaign_name (UPPER CASE required).
49
+ station_name is optional.
50
+
51
+ \b
52
+ Archive Directory:
53
+ --data_archive_dir: Custom path to DISDRODB data archive
54
+ If not specified, the path from the active DISDRODB configuration is used
55
+
56
+ \b
57
+ Examples:
58
+ # Open logs directory for a specific station
59
+ disdrodb_open_logs_directory EPFL HYMEX_LTE_SOP2 10
60
+
61
+ # Open logs directory for an entire campaign
62
+ disdrodb_open_logs_directory NASA IFLOODS
63
+
64
+ # Open with custom data archive directory
65
+ disdrodb_open_logs_directory EPFL HYMEX_LTE_SOP2 10 --data_archive_dir /path/to/DISDRODB
45
66
 
46
- Parameters
47
- ----------
48
- data_source : str
49
- The name of the institution (for campaigns spanning multiple countries) or
50
- the name of the country (for campaigns or sensor networks within a single country).
51
- Must be provided in UPPER CASE.
52
- campaign_name : str
53
- The name of the campaign. Must be provided in UPPER CASE.
54
- station_name : str
55
- The name of the station.
56
- data_archive_dir : str, optional
57
- The base directory of DISDRODB, expected in the format ``<...>/DISDRODB``.
58
- If not specified, the path specified in the DISDRODB active configuration will be used.
59
- """
67
+ \b
68
+ Important Notes:
69
+ - Data source and campaign names must be in UPPER CASE
70
+ """ # noqa: D301
60
71
  from disdrodb.api.io import open_logs_directory
61
72
 
62
73
  data_archive_dir = parse_archive_dir(data_archive_dir)
@@ -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
@@ -36,14 +34,30 @@ sys.tracebacklimit = 0 # avoid full traceback error if occur
36
34
  def disdrodb_open_metadata_archive(
37
35
  metadata_archive_dir: Optional[str] = None,
38
36
  ):
39
- """Open the DISDRODB Metadata Archive.
40
-
41
- Parameters
42
- ----------
43
- metadata_archive_dir : str, optional
44
- The base directory of DISDRODB, expected in the format ``<...>/DISDRODB``.
45
- If not specified, the path specified in the DISDRODB active configuration will be used.
46
- """
37
+ """Open the DISDRODB Metadata Archive directory in the system file explorer.
38
+
39
+ Opens the metadata archive directory using the system's default file manager,
40
+ allowing you to browse station metadata files and YAML configurations.
41
+
42
+ \b
43
+ Archive Directory:
44
+ --metadata_archive_dir: Custom path to DISDRODB metadata archive
45
+ If not specified, the path from the active DISDRODB configuration is used
46
+
47
+ \b
48
+ Examples:
49
+ # Open the metadata archive from active configuration
50
+ disdrodb_open_metadata_archive
51
+
52
+ # Open a custom metadata archive directory
53
+ disdrodb_open_metadata_archive --metadata_archive_dir /path/to/DISDRODB-METADATA/DISDRODB
54
+
55
+ \b
56
+ Important Notes:
57
+ - Opens the directory in your system's default file manager
58
+ - The metadata archive contains station YAML files and issue reports
59
+ - Useful for manual inspection and verification of station metadata
60
+ """ # noqa: D301
47
61
  from disdrodb.api.io import open_metadata_archive
48
62
 
49
63
  metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
@@ -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
@@ -41,24 +39,38 @@ def disdrodb_open_metadata_directory(
41
39
  station_name: Optional[str] = None,
42
40
  metadata_archive_dir: Optional[str] = None,
43
41
  ):
44
- """Open the DISDRODB Data Archive logs directory of a station.
42
+ """Open the DISDRODB Metadata Archive directory of a station in the system file explorer.
43
+
44
+ The command allows to easily browse stations metadata YAML files.
45
+
46
+ \b
47
+ Station Specification:
48
+ Requires data_source and campaign_name (UPPER CASE required).
49
+ station_name is optional.
50
+
51
+ \b
52
+ Archive Directory:
53
+ --metadata_archive_dir: Custom path to DISDRODB Metadata Archive
54
+ If not specified, the path from the active DISDRODB configuration is used
55
+
56
+ \b
57
+ Examples:
58
+ # Open metadata directory for a specific station
59
+ disdrodb_open_metadata_directory EPFL HYMEX_LTE_SOP2 10
60
+
61
+ # Open metadata directory for a specific station
62
+ disdrodb_open_metadata_directory NASA IFLOODS
63
+
64
+ # Open with custom metadata archive directory
65
+ disdrodb_open_metadata_directory EPFL HYMEX_LTE_SOP2 --metadata_archive_dir /path/to/DISDRODB-METADATA/DISDRODB
45
66
 
46
- Parameters
47
- ----------
48
- data_source : str
49
- The name of the institution (for campaigns spanning multiple countries) or
50
- the name of the country (for campaigns or sensor networks within a single country).
51
- Must be provided in UPPER CASE.
52
- campaign_name : str
53
- The name of the campaign. Must be provided in UPPER CASE.
54
- station_name : str
55
- The name of the station.
56
- metadata_archive_dir : str, optional
57
- The directory path where the DISDRODB Metadata Archive is located.
58
- The directory path must end with ``<...>/DISDRODB``.
59
- If ``None``, it uses the ``metadata_archive_dir`` path specified
60
- in the DISDRODB active configuration.
61
- """
67
+ \b
68
+ Important Notes:
69
+ - Data source and campaign names must be in UPPER CASE
70
+ - Opens the directory in your system's default file manager
71
+ - Useful for manual inspection and editing of station metadata YAML files
72
+ - If station_name is omitted, opens the campaign-level metadata directory
73
+ """ # noqa: D301
62
74
  from disdrodb.api.io import open_metadata_directory
63
75
 
64
76
  metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
@@ -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
@@ -43,24 +41,43 @@ def disdrodb_open_product_directory(
43
41
  station_name: str,
44
42
  data_archive_dir: Optional[str] = None,
45
43
  ):
46
- """Open the DISDRODB Data Archive logs directory of a station.
47
-
48
- Parameters
49
- ----------
50
- product : str
51
- DISDRODB product.
52
- data_source : str
53
- The name of the institution (for campaigns spanning multiple countries) or
54
- the name of the country (for campaigns or sensor networks within a single country).
55
- Must be provided in UPPER CASE.
56
- campaign_name : str
57
- The name of the campaign. Must be provided in UPPER CASE.
58
- station_name : str
59
- The name of the station.
60
- data_archive_dir : str, optional
61
- The base directory of DISDRODB, expected in the format ``<...>/DISDRODB``.
62
- If not specified, the path specified in the DISDRODB active configuration will be used.
63
- """
44
+ """Open the DISDRODB Data Archive station product directory in the system file explorer.
45
+
46
+ Opens the data archive directory for a specific product level (RAW, L0A, L0B, etc.)
47
+ of a station using the system's default file manager, allowing you to browse
48
+ the data files.
49
+
50
+ \b
51
+ Station Specification:
52
+ Requires exact specification of product, data_source, campaign_name, and station_name.
53
+ All parameters must be provided and are case-sensitive (UPPER CASE required).
54
+
55
+ \b
56
+ Product Levels:
57
+ Valid products: RAW, L0A, L0B, L0C, L1, L2E, L2M
58
+ Specify the product level you want to browse
59
+
60
+ \b
61
+ Archive Directory:
62
+ --data_archive_dir: Custom path to DISDRODB data archive
63
+ If not specified, the path from the active DISDRODB configuration is used
64
+
65
+ \b
66
+ Examples:
67
+ # Open Raw data directory for a station
68
+ disdrodb_open_product_directory RAW EPFL HYMEX_LTE_SOP2 10
69
+
70
+ # Open L0B product directory
71
+ disdrodb_open_product_directory L0B NASA IFLOODS apu01
72
+
73
+ # Open L2M directory with custom archive path
74
+ disdrodb_open_product_directory L2M EPFL HYMEX_LTE_SOP2 10 --data_archive_dir /path/to/DISDRODB
75
+
76
+ \b
77
+ Important Notes:
78
+ - Product name must be valid: RAW, L0A, L0B, L0C, L1, L2E, or L2M
79
+ - Data source, campaign, and station names must be in UPPER CASE
80
+ """ # noqa: D301
64
81
  from disdrodb.api.io import open_product_directory
65
82
 
66
83
  data_archive_dir = parse_archive_dir(data_archive_dir)
@@ -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
@@ -0,0 +1,189 @@
1
+ # -----------------------------------------------------------------------------.
2
+ # Copyright (c) 2021-2026 DISDRODB developers
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ # -----------------------------------------------------------------------------.
17
+ """Script to launch DISDRODB products generation for the entire DISDRODB Archive."""
18
+ import sys
19
+ from typing import Optional
20
+
21
+ import click
22
+
23
+ from disdrodb.utils.cli import (
24
+ click_data_archive_dir_option,
25
+ click_l0_archive_options,
26
+ click_metadata_archive_dir_option,
27
+ click_processing_options,
28
+ click_stations_options,
29
+ parse_archive_dir,
30
+ parse_arg_to_list,
31
+ )
32
+
33
+ sys.tracebacklimit = 0 # avoid full traceback error if occur
34
+
35
+
36
+ @click.command()
37
+ @click_stations_options
38
+ @click_l0_archive_options
39
+ @click.option(
40
+ "-l1",
41
+ "--l1_processing",
42
+ type=bool,
43
+ show_default=True,
44
+ default=True,
45
+ help="Run L1 processing",
46
+ )
47
+ @click.option(
48
+ "-l2e",
49
+ "--l2e_processing",
50
+ type=bool,
51
+ show_default=True,
52
+ default=True,
53
+ help="Run L2E processing",
54
+ )
55
+ @click.option(
56
+ "-l2m",
57
+ "--l2m_processing",
58
+ type=bool,
59
+ show_default=True,
60
+ default=True,
61
+ help="Run L2M processing.",
62
+ )
63
+ @click_processing_options
64
+ @click_data_archive_dir_option
65
+ @click_metadata_archive_dir_option
66
+ def disdrodb_run(
67
+ # Stations options
68
+ data_sources: Optional[str] = None,
69
+ campaign_names: Optional[str] = None,
70
+ station_names: Optional[str] = None,
71
+ # L0 archive options
72
+ l0a_processing: bool = True,
73
+ l0b_processing: bool = True,
74
+ l0c_processing: bool = True,
75
+ remove_l0a: bool = False,
76
+ remove_l0b: bool = False,
77
+ # Higher level processing options
78
+ l1_processing: bool = True,
79
+ l2e_processing: bool = True,
80
+ l2m_processing: bool = True,
81
+ # Processing options
82
+ force: bool = False,
83
+ verbose: bool = True,
84
+ parallel: bool = True,
85
+ debugging_mode: bool = False,
86
+ # DISDRODB root directories
87
+ data_archive_dir: Optional[str] = None,
88
+ metadata_archive_dir: Optional[str] = None,
89
+ ):
90
+ """Run the complete processing of DISDRODB stations.
91
+
92
+ This function allows to launch the complete processing of many DISDRODB stations with a single command.
93
+ From the list of all available DISDRODB stations, it runs the processing of the
94
+ stations matching the provided data_sources, campaign_names and station_names.
95
+
96
+ \b
97
+ Processing Levels:
98
+ L0A: Raw data converted to DISDRODB standardized Apache Parquet format
99
+ L0B: L0A data converted to DISDRODB standardized netCDF4 format
100
+ L0C: Apply time QC and consolidate L0B data into (by default daily) netCDF files.
101
+ L1: Temporally resample L0C data to standard intervals (1-60 minutes), apply QC algorithms
102
+ and determine precipitation phase and hydrometeors types.
103
+ L2E: Compute empirical integral DSD variables (e.g., rain rate, liquid water content)
104
+ L2M: Fit parametric DSD models and compute model-based integral DSD variables
105
+
106
+ \b
107
+ Station Selection:
108
+ If no station filters are specified, processes ALL available stations.
109
+ Use data_sources, campaign_names, and station_names to filter stations.
110
+ Filters work together to narrow down the selection (AND logic).
111
+
112
+ \b
113
+ Performance Options:
114
+ --parallel: Uses multiple processes for faster processing (default: True)
115
+ If parallel processing is enabled, each process will use a single thread
116
+ to avoid issues with the HDF/netCDF library.
117
+ The DASK_NUM_WORKERS environment variable controls the number of processes
118
+ to use.A sensible default is automatically set by the software.
119
+ --debugging_mode: Processes only a subset of data for testing
120
+ --force: Overwrites existing output files (default: False)
121
+
122
+ \b
123
+ Examples:
124
+ # Process all stations with full processing chain
125
+ disdrodb_run
126
+
127
+ # Process specific data sources, skip L0A and L2M
128
+ disdrodb_run --data_sources 'USA EPFL' --l0a_processing False --l2m_processing False
129
+
130
+ # Process specific campaigns with debugging mode
131
+ disdrodb_run --campaign_names 'DELFT IMPACTS' --debugging_mode True
132
+
133
+ # Process specific stations with custom number of workers
134
+ DASK_NUM_WORKERS=8 disdrodb_run --data_sources 'NASA' --station_names 'apu01 apu02'
135
+
136
+ # Force overwrite existing files, verbose output
137
+ disdrodb_run --data_sources 'EPFL' --force True --verbose True
138
+
139
+ \b
140
+ Data Management:
141
+ --remove_l0a: Delete L0A files after L0B processing (saves disk space)
142
+ --remove_l0b: Delete L0B files after L0C processing (saves disk space)
143
+ Use with caution - removed files cannot be recovered without reprocessing
144
+
145
+ \b
146
+ Important Notes:
147
+ - Data source names must be UPPER CASE
148
+ - Campaign names must be UPPER CASE
149
+ - To specify multiple values, use space-separated strings in quotes
150
+ - Processing chain: L0A → L0B → L0C → L1 → L2E → L2M
151
+ - You can skip early or late processing levels, but not intermediate ones
152
+ - Processing validates chain consistency and will raise errors for gaps
153
+ - Large datasets may require significant disk space and processing time
154
+ - Use --debugging_mode for initial testing with reduced data volumes
155
+ """ # noqa: D301
156
+ from disdrodb.routines import run
157
+
158
+ # Parse data_sources, campaign_names and station arguments
159
+ data_archive_dir = parse_archive_dir(data_archive_dir)
160
+ metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
161
+ data_sources = parse_arg_to_list(data_sources)
162
+ campaign_names = parse_arg_to_list(campaign_names)
163
+ station_names = parse_arg_to_list(station_names)
164
+
165
+ # Run processing
166
+ run(
167
+ # DISDRODB root directories
168
+ data_archive_dir=data_archive_dir,
169
+ metadata_archive_dir=metadata_archive_dir,
170
+ # Stations options
171
+ data_sources=data_sources,
172
+ campaign_names=campaign_names,
173
+ station_names=station_names,
174
+ # L0 archive options
175
+ l0a_processing=l0a_processing,
176
+ l0b_processing=l0b_processing,
177
+ l0c_processing=l0c_processing,
178
+ remove_l0a=remove_l0a,
179
+ remove_l0b=remove_l0b,
180
+ # Higher level processing options
181
+ l1_processing=l1_processing,
182
+ l2e_processing=l2e_processing,
183
+ l2m_processing=l2m_processing,
184
+ # Processing options
185
+ force=force,
186
+ verbose=verbose,
187
+ debugging_mode=debugging_mode,
188
+ parallel=parallel,
189
+ )