disdrodb 0.0.21__py3-none-any.whl → 0.1.1__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 (279) hide show
  1. disdrodb/__init__.py +132 -15
  2. disdrodb/_config.py +4 -2
  3. disdrodb/_version.py +9 -4
  4. disdrodb/api/checks.py +264 -237
  5. disdrodb/api/configs.py +4 -8
  6. disdrodb/api/create_directories.py +235 -290
  7. disdrodb/api/info.py +217 -26
  8. disdrodb/api/io.py +306 -270
  9. disdrodb/api/path.py +597 -173
  10. disdrodb/api/search.py +486 -0
  11. disdrodb/{metadata/scripts → cli}/disdrodb_check_metadata_archive.py +12 -7
  12. disdrodb/{utils/pandas.py → cli/disdrodb_data_archive_directory.py} +9 -18
  13. disdrodb/cli/disdrodb_download_archive.py +86 -0
  14. disdrodb/cli/disdrodb_download_metadata_archive.py +53 -0
  15. disdrodb/cli/disdrodb_download_station.py +84 -0
  16. disdrodb/{api/scripts → cli}/disdrodb_initialize_station.py +22 -10
  17. disdrodb/cli/disdrodb_metadata_archive_directory.py +32 -0
  18. disdrodb/{data_transfer/scripts/disdrodb_download_station.py → cli/disdrodb_open_data_archive.py} +22 -22
  19. disdrodb/cli/disdrodb_open_logs_directory.py +69 -0
  20. disdrodb/{data_transfer/scripts/disdrodb_upload_station.py → cli/disdrodb_open_metadata_archive.py} +22 -24
  21. disdrodb/cli/disdrodb_open_metadata_directory.py +71 -0
  22. disdrodb/cli/disdrodb_open_product_directory.py +74 -0
  23. disdrodb/cli/disdrodb_open_readers_directory.py +32 -0
  24. disdrodb/{l0/scripts → cli}/disdrodb_run_l0.py +38 -31
  25. disdrodb/{l0/scripts → cli}/disdrodb_run_l0_station.py +32 -30
  26. disdrodb/{l0/scripts → cli}/disdrodb_run_l0a.py +30 -21
  27. disdrodb/{l0/scripts → cli}/disdrodb_run_l0a_station.py +24 -33
  28. disdrodb/{l0/scripts → cli}/disdrodb_run_l0b.py +30 -21
  29. disdrodb/{l0/scripts → cli}/disdrodb_run_l0b_station.py +25 -34
  30. disdrodb/cli/disdrodb_run_l0c.py +130 -0
  31. disdrodb/cli/disdrodb_run_l0c_station.py +129 -0
  32. disdrodb/cli/disdrodb_run_l1.py +122 -0
  33. disdrodb/cli/disdrodb_run_l1_station.py +121 -0
  34. disdrodb/cli/disdrodb_run_l2e.py +122 -0
  35. disdrodb/cli/disdrodb_run_l2e_station.py +122 -0
  36. disdrodb/cli/disdrodb_run_l2m.py +122 -0
  37. disdrodb/cli/disdrodb_run_l2m_station.py +122 -0
  38. disdrodb/cli/disdrodb_upload_archive.py +105 -0
  39. disdrodb/cli/disdrodb_upload_station.py +98 -0
  40. disdrodb/configs.py +90 -25
  41. disdrodb/data_transfer/__init__.py +22 -0
  42. disdrodb/data_transfer/download_data.py +87 -90
  43. disdrodb/data_transfer/upload_data.py +64 -37
  44. disdrodb/data_transfer/zenodo.py +15 -18
  45. disdrodb/docs.py +1 -1
  46. disdrodb/issue/__init__.py +17 -4
  47. disdrodb/issue/checks.py +10 -23
  48. disdrodb/issue/reader.py +9 -12
  49. disdrodb/issue/writer.py +14 -17
  50. disdrodb/l0/__init__.py +17 -26
  51. disdrodb/l0/check_configs.py +35 -23
  52. disdrodb/l0/check_standards.py +46 -51
  53. disdrodb/l0/configs/{Thies_LPM → LPM}/bins_diameter.yml +44 -44
  54. disdrodb/l0/configs/{Thies_LPM → LPM}/bins_velocity.yml +40 -40
  55. disdrodb/l0/configs/LPM/l0a_encodings.yml +80 -0
  56. disdrodb/l0/configs/{Thies_LPM → LPM}/l0b_cf_attrs.yml +84 -65
  57. disdrodb/l0/configs/{Thies_LPM → LPM}/l0b_encodings.yml +50 -9
  58. disdrodb/l0/configs/{Thies_LPM → LPM}/raw_data_format.yml +285 -245
  59. disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/bins_diameter.yml +66 -66
  60. disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/bins_velocity.yml +64 -64
  61. disdrodb/l0/configs/PARSIVEL/l0a_encodings.yml +32 -0
  62. disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/l0b_cf_attrs.yml +23 -21
  63. disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/l0b_encodings.yml +17 -17
  64. disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/raw_data_format.yml +77 -77
  65. disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/bins_diameter.yml +64 -64
  66. disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/bins_velocity.yml +64 -64
  67. disdrodb/l0/configs/PARSIVEL2/l0a_encodings.yml +39 -0
  68. disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/l0b_cf_attrs.yml +28 -26
  69. disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/l0b_encodings.yml +20 -20
  70. disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/raw_data_format.yml +107 -107
  71. disdrodb/l0/configs/PWS100/bins_diameter.yml +173 -0
  72. disdrodb/l0/configs/PWS100/bins_velocity.yml +173 -0
  73. disdrodb/l0/configs/PWS100/l0a_encodings.yml +19 -0
  74. disdrodb/l0/configs/PWS100/l0b_cf_attrs.yml +76 -0
  75. disdrodb/l0/configs/PWS100/l0b_encodings.yml +176 -0
  76. disdrodb/l0/configs/PWS100/raw_data_format.yml +182 -0
  77. disdrodb/l0/configs/{RD_80 → RD80}/bins_diameter.yml +40 -40
  78. disdrodb/l0/configs/RD80/l0a_encodings.yml +16 -0
  79. disdrodb/l0/configs/{RD_80 → RD80}/l0b_cf_attrs.yml +3 -3
  80. disdrodb/l0/configs/RD80/l0b_encodings.yml +135 -0
  81. disdrodb/l0/configs/{RD_80 → RD80}/raw_data_format.yml +46 -50
  82. disdrodb/l0/l0_reader.py +216 -340
  83. disdrodb/l0/l0a_processing.py +237 -208
  84. disdrodb/l0/l0b_nc_processing.py +227 -80
  85. disdrodb/l0/l0b_processing.py +96 -174
  86. disdrodb/l0/l0c_processing.py +627 -0
  87. disdrodb/l0/readers/{ARM → LPM/ARM}/ARM_LPM.py +36 -58
  88. disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +236 -0
  89. disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +185 -0
  90. disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +185 -0
  91. disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +195 -0
  92. disdrodb/l0/readers/LPM/ITALY/GID_LPM_W.py +210 -0
  93. disdrodb/l0/readers/{BRAZIL/GOAMAZON_LPM.py → LPM/KIT/CHWALA.py} +97 -76
  94. disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +197 -0
  95. disdrodb/l0/readers/LPM/SLOVENIA/CRNI_VRH.py +197 -0
  96. disdrodb/l0/readers/{UK → LPM/UK}/DIVEN.py +14 -35
  97. disdrodb/l0/readers/PARSIVEL/AUSTRALIA/MELBOURNE_2007_PARSIVEL.py +157 -0
  98. disdrodb/l0/readers/PARSIVEL/CHINA/CHONGQING.py +113 -0
  99. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/ARCTIC_2021.py +40 -57
  100. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/COMMON_2011.py +37 -54
  101. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/DAVOS_2009_2011.py +34 -51
  102. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_2009.py +34 -51
  103. disdrodb/l0/readers/{EPFL/PARADISO_2014.py → PARSIVEL/EPFL/EPFL_ROOF_2008.py} +38 -50
  104. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2010.py +105 -0
  105. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_ROOF_2011.py +34 -51
  106. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_ROOF_2012.py +33 -51
  107. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GENEPI_2007.py +25 -44
  108. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GRAND_ST_BERNARD_2007.py +25 -44
  109. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GRAND_ST_BERNARD_2007_2.py +25 -44
  110. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/HPICONET_2010.py +34 -51
  111. disdrodb/l0/readers/{EPFL/EPFL_ROOF_2010.py → PARSIVEL/EPFL/HYMEX_LTE_SOP2.py} +37 -50
  112. disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP3.py +111 -0
  113. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/HYMEX_LTE_SOP4.py +36 -54
  114. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/LOCARNO_2018.py +34 -52
  115. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/LOCARNO_2019.py +38 -56
  116. disdrodb/l0/readers/PARSIVEL/EPFL/PARADISO_2014.py +105 -0
  117. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/PARSIVEL_2007.py +27 -45
  118. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/PLATO_2019.py +24 -44
  119. disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019.py +140 -0
  120. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/RACLETS_2019_WJF.py +41 -59
  121. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/RIETHOLZBACH_2011.py +34 -51
  122. disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2017.py +117 -0
  123. disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2019.py +137 -0
  124. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/UNIL_2022.py +42 -55
  125. disdrodb/l0/readers/PARSIVEL/GPM/IFLOODS.py +104 -0
  126. disdrodb/l0/readers/{GPM → PARSIVEL/GPM}/LPVEX.py +29 -48
  127. disdrodb/l0/readers/PARSIVEL/GPM/MC3E.py +184 -0
  128. disdrodb/l0/readers/PARSIVEL/KIT/BURKINA_FASO.py +133 -0
  129. disdrodb/l0/readers/PARSIVEL/NCAR/CCOPE_2015.py +113 -0
  130. disdrodb/l0/readers/{NCAR/VORTEX_SE_2016_P1.py → PARSIVEL/NCAR/OWLES_MIPS.py} +46 -72
  131. disdrodb/l0/readers/PARSIVEL/NCAR/PECAN_MOBILE.py +125 -0
  132. disdrodb/l0/readers/{NCAR/OWLES_MIPS.py → PARSIVEL/NCAR/PLOWS_MIPS.py} +45 -64
  133. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2009.py +114 -0
  134. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +176 -0
  135. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +183 -0
  136. disdrodb/l0/readers/PARSIVEL/SLOVENIA/UL_FGG.py +121 -0
  137. disdrodb/l0/readers/{ARM/ARM_LD.py → PARSIVEL2/ARM/ARM_PARSIVEL2.py} +27 -50
  138. disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +163 -0
  139. disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +163 -0
  140. disdrodb/l0/readers/{DENMARK → PARSIVEL2/DENMARK}/EROSION_nc.py +14 -35
  141. disdrodb/l0/readers/PARSIVEL2/FRANCE/ENPC_PARSIVEL2.py +189 -0
  142. disdrodb/l0/readers/PARSIVEL2/FRANCE/SIRTA_PARSIVEL2.py +119 -0
  143. disdrodb/l0/readers/PARSIVEL2/GPM/GCPEX.py +104 -0
  144. disdrodb/l0/readers/PARSIVEL2/GPM/NSSTC.py +176 -0
  145. disdrodb/l0/readers/PARSIVEL2/ITALY/GID_PARSIVEL2.py +32 -0
  146. disdrodb/l0/readers/PARSIVEL2/MEXICO/OH_IIUNAM_nc.py +56 -0
  147. disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_FP3.py +120 -0
  148. disdrodb/l0/readers/{NCAR → PARSIVEL2/NCAR}/PECAN_MIPS.py +45 -64
  149. disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +181 -0
  150. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +160 -0
  151. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +160 -0
  152. disdrodb/l0/readers/{NCAR/PLOWS_MIPS.py → PARSIVEL2/NCAR/VORTEX_SE_2016_P1.py} +49 -66
  153. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +118 -0
  154. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +152 -0
  155. disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT.py +166 -0
  156. disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100.py +150 -0
  157. disdrodb/l0/readers/{NCAR/RELAMPAGO_RD80.py → RD80/BRAZIL/CHUVA_RD80.py} +36 -60
  158. disdrodb/l0/readers/{BRAZIL → RD80/BRAZIL}/GOAMAZON_RD80.py +36 -55
  159. disdrodb/l0/readers/{NCAR → RD80/NCAR}/CINDY_2011_RD80.py +35 -54
  160. disdrodb/l0/readers/{BRAZIL/CHUVA_RD80.py → RD80/NCAR/RELAMPAGO_RD80.py} +40 -54
  161. disdrodb/l0/readers/RD80/NOAA/PSL_RD80.py +274 -0
  162. disdrodb/l0/readers/template_reader_raw_netcdf_data.py +62 -0
  163. disdrodb/l0/readers/{reader_template.py → template_reader_raw_text_data.py} +20 -44
  164. disdrodb/l0/routines.py +885 -581
  165. disdrodb/l0/standards.py +77 -238
  166. disdrodb/l0/template_tools.py +105 -110
  167. disdrodb/l1/__init__.py +17 -0
  168. disdrodb/l1/beard_model.py +716 -0
  169. disdrodb/l1/encoding_attrs.py +635 -0
  170. disdrodb/l1/fall_velocity.py +260 -0
  171. disdrodb/l1/filters.py +192 -0
  172. disdrodb/l1/processing.py +202 -0
  173. disdrodb/l1/resampling.py +236 -0
  174. disdrodb/l1/routines.py +358 -0
  175. disdrodb/l1_env/__init__.py +17 -0
  176. disdrodb/l1_env/routines.py +38 -0
  177. disdrodb/l2/__init__.py +17 -0
  178. disdrodb/l2/empirical_dsd.py +1833 -0
  179. disdrodb/l2/event.py +388 -0
  180. disdrodb/l2/processing.py +528 -0
  181. disdrodb/l2/processing_options.py +213 -0
  182. disdrodb/l2/routines.py +868 -0
  183. disdrodb/metadata/__init__.py +9 -2
  184. disdrodb/metadata/checks.py +180 -124
  185. disdrodb/metadata/download.py +81 -0
  186. disdrodb/metadata/geolocation.py +146 -0
  187. disdrodb/metadata/info.py +20 -13
  188. disdrodb/metadata/manipulation.py +3 -3
  189. disdrodb/metadata/reader.py +59 -8
  190. disdrodb/metadata/search.py +77 -144
  191. disdrodb/metadata/standards.py +83 -80
  192. disdrodb/metadata/writer.py +10 -16
  193. disdrodb/psd/__init__.py +38 -0
  194. disdrodb/psd/fitting.py +2146 -0
  195. disdrodb/psd/models.py +774 -0
  196. disdrodb/routines.py +1412 -0
  197. disdrodb/scattering/__init__.py +28 -0
  198. disdrodb/scattering/axis_ratio.py +344 -0
  199. disdrodb/scattering/routines.py +456 -0
  200. disdrodb/utils/__init__.py +17 -0
  201. disdrodb/utils/attrs.py +208 -0
  202. disdrodb/utils/cli.py +269 -0
  203. disdrodb/utils/compression.py +60 -42
  204. disdrodb/utils/dask.py +62 -0
  205. disdrodb/utils/dataframe.py +342 -0
  206. disdrodb/utils/decorators.py +110 -0
  207. disdrodb/utils/directories.py +107 -46
  208. disdrodb/utils/encoding.py +127 -0
  209. disdrodb/utils/list.py +29 -0
  210. disdrodb/utils/logger.py +168 -46
  211. disdrodb/utils/time.py +657 -0
  212. disdrodb/utils/warnings.py +30 -0
  213. disdrodb/utils/writer.py +57 -0
  214. disdrodb/utils/xarray.py +138 -47
  215. disdrodb/utils/yaml.py +0 -1
  216. disdrodb/viz/__init__.py +17 -0
  217. disdrodb/viz/plots.py +17 -0
  218. disdrodb-0.1.1.dist-info/METADATA +294 -0
  219. disdrodb-0.1.1.dist-info/RECORD +232 -0
  220. {disdrodb-0.0.21.dist-info → disdrodb-0.1.1.dist-info}/WHEEL +1 -1
  221. disdrodb-0.1.1.dist-info/entry_points.txt +30 -0
  222. disdrodb/data_transfer/scripts/disdrodb_download_archive.py +0 -53
  223. disdrodb/data_transfer/scripts/disdrodb_upload_archive.py +0 -57
  224. disdrodb/l0/configs/OTT_Parsivel/l0a_encodings.yml +0 -32
  225. disdrodb/l0/configs/OTT_Parsivel2/l0a_encodings.yml +0 -39
  226. disdrodb/l0/configs/RD_80/l0a_encodings.yml +0 -16
  227. disdrodb/l0/configs/RD_80/l0b_encodings.yml +0 -135
  228. disdrodb/l0/configs/Thies_LPM/l0a_encodings.yml +0 -80
  229. disdrodb/l0/io.py +0 -257
  230. disdrodb/l0/l0_processing.py +0 -1091
  231. disdrodb/l0/readers/AUSTRALIA/MELBOURNE_2007_OTT.py +0 -178
  232. disdrodb/l0/readers/AUSTRALIA/MELBOURNE_2007_THIES.py +0 -247
  233. disdrodb/l0/readers/BRAZIL/CHUVA_LPM.py +0 -204
  234. disdrodb/l0/readers/BRAZIL/CHUVA_OTT.py +0 -183
  235. disdrodb/l0/readers/BRAZIL/GOAMAZON_OTT.py +0 -183
  236. disdrodb/l0/readers/CHINA/CHONGQING.py +0 -131
  237. disdrodb/l0/readers/EPFL/EPFL_ROOF_2008.py +0 -128
  238. disdrodb/l0/readers/EPFL/HYMEX_LTE_SOP2.py +0 -127
  239. disdrodb/l0/readers/EPFL/HYMEX_LTE_SOP3.py +0 -129
  240. disdrodb/l0/readers/EPFL/RACLETS_2019.py +0 -158
  241. disdrodb/l0/readers/EPFL/SAMOYLOV_2017.py +0 -136
  242. disdrodb/l0/readers/EPFL/SAMOYLOV_2019.py +0 -158
  243. disdrodb/l0/readers/FRANCE/SIRTA_OTT2.py +0 -138
  244. disdrodb/l0/readers/GPM/GCPEX.py +0 -123
  245. disdrodb/l0/readers/GPM/IFLOODS.py +0 -123
  246. disdrodb/l0/readers/GPM/MC3E.py +0 -123
  247. disdrodb/l0/readers/GPM/NSSTC.py +0 -164
  248. disdrodb/l0/readers/ITALY/GID.py +0 -199
  249. disdrodb/l0/readers/MEXICO/OH_IIUNAM_nc.py +0 -92
  250. disdrodb/l0/readers/NCAR/CCOPE_2015.py +0 -133
  251. disdrodb/l0/readers/NCAR/PECAN_FP3.py +0 -137
  252. disdrodb/l0/readers/NCAR/PECAN_MOBILE.py +0 -144
  253. disdrodb/l0/readers/NCAR/RELAMPAGO_OTT.py +0 -195
  254. disdrodb/l0/readers/NCAR/SNOWIE_PJ.py +0 -172
  255. disdrodb/l0/readers/NCAR/SNOWIE_SB.py +0 -179
  256. disdrodb/l0/readers/NCAR/VORTEX2_2009.py +0 -133
  257. disdrodb/l0/readers/NCAR/VORTEX2_2010.py +0 -188
  258. disdrodb/l0/readers/NCAR/VORTEX2_2010_UF.py +0 -191
  259. disdrodb/l0/readers/NCAR/VORTEX_SE_2016_P2.py +0 -135
  260. disdrodb/l0/readers/NCAR/VORTEX_SE_2016_PIPS.py +0 -170
  261. disdrodb/l0/readers/NETHERLANDS/DELFT.py +0 -187
  262. disdrodb/l0/readers/SPAIN/SBEGUERIA.py +0 -179
  263. disdrodb/l0/scripts/disdrodb_run_l0b_concat.py +0 -93
  264. disdrodb/l0/scripts/disdrodb_run_l0b_concat_station.py +0 -85
  265. disdrodb/utils/netcdf.py +0 -452
  266. disdrodb/utils/scripts.py +0 -102
  267. disdrodb-0.0.21.dist-info/AUTHORS.md +0 -18
  268. disdrodb-0.0.21.dist-info/METADATA +0 -186
  269. disdrodb-0.0.21.dist-info/RECORD +0 -168
  270. disdrodb-0.0.21.dist-info/entry_points.txt +0 -15
  271. /disdrodb/l0/configs/{RD_80 → RD80}/bins_velocity.yml +0 -0
  272. /disdrodb/l0/manuals/{Thies_LPM.pdf → LPM.pdf} +0 -0
  273. /disdrodb/l0/manuals/{ODM_470.pdf → ODM470.pdf} +0 -0
  274. /disdrodb/l0/manuals/{OTT_Parsivel.pdf → PARSIVEL.pdf} +0 -0
  275. /disdrodb/l0/manuals/{OTT_Parsivel2.pdf → PARSIVEL2.pdf} +0 -0
  276. /disdrodb/l0/manuals/{PWS_100.pdf → PWS100.pdf} +0 -0
  277. /disdrodb/l0/manuals/{RD_80.pdf → RD80.pdf} +0 -0
  278. {disdrodb-0.0.21.dist-info → disdrodb-0.1.1.dist-info/licenses}/LICENSE +0 -0
  279. {disdrodb-0.0.21.dist-info → disdrodb-0.1.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env python3
2
+ # -----------------------------------------------------------------------------.
3
+ # Copyright (c) 2021-2023 DISDRODB developers
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ # -----------------------------------------------------------------------------.
18
+ """Script to run the DISDRODB L2E processing."""
19
+ import sys
20
+ from typing import Optional
21
+
22
+ import click
23
+
24
+ from disdrodb.utils.cli import (
25
+ click_data_archive_dir_option,
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_processing_options
39
+ @click_data_archive_dir_option
40
+ @click_metadata_archive_dir_option
41
+ def disdrodb_run_l2e(
42
+ # Stations options
43
+ data_sources: Optional[str] = None,
44
+ campaign_names: Optional[str] = None,
45
+ station_names: Optional[str] = None,
46
+ # Processing options
47
+ force: bool = False,
48
+ verbose: bool = True,
49
+ parallel: bool = True,
50
+ debugging_mode: bool = False,
51
+ # DISDRODB root directories
52
+ data_archive_dir: Optional[str] = None,
53
+ metadata_archive_dir: Optional[str] = None,
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 'GPM 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
+ """
99
+ from disdrodb.routines import run_l2e
100
+
101
+ # Parse data_sources, campaign_names and station arguments
102
+ data_archive_dir = parse_archive_dir(data_archive_dir)
103
+ metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
104
+ data_sources = parse_arg_to_list(data_sources)
105
+ campaign_names = parse_arg_to_list(campaign_names)
106
+ station_names = parse_arg_to_list(station_names)
107
+
108
+ # Run processing
109
+ run_l2e(
110
+ # DISDRODB root directories
111
+ data_archive_dir=data_archive_dir,
112
+ metadata_archive_dir=metadata_archive_dir,
113
+ # Stations options
114
+ data_sources=data_sources,
115
+ campaign_names=campaign_names,
116
+ station_names=station_names,
117
+ # Processing options
118
+ force=force,
119
+ verbose=verbose,
120
+ debugging_mode=debugging_mode,
121
+ parallel=parallel,
122
+ )
@@ -0,0 +1,122 @@
1
+ # -----------------------------------------------------------------------------.
2
+ # Copyright (c) 2021-2023 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 run the DISDRODB L2E station processing."""
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_metadata_archive_dir_option,
26
+ click_processing_options,
27
+ click_station_arguments,
28
+ parse_archive_dir,
29
+ )
30
+
31
+ sys.tracebacklimit = 0 # avoid full traceback error if occur
32
+
33
+ # -------------------------------------------------------------------------.
34
+ # Click Command Line Interface decorator
35
+
36
+
37
+ @click.command()
38
+ @click_station_arguments
39
+ @click_processing_options
40
+ @click_data_archive_dir_option
41
+ @click_metadata_archive_dir_option
42
+ def disdrodb_run_l2e_station(
43
+ # Station arguments
44
+ data_source: str,
45
+ campaign_name: str,
46
+ station_name: str,
47
+ # Processing options
48
+ force: bool = False,
49
+ verbose: bool = False,
50
+ parallel: bool = True,
51
+ debugging_mode: bool = False,
52
+ # DISDRODB root directories
53
+ data_archive_dir: Optional[str] = None,
54
+ metadata_archive_dir: Optional[str] = None,
55
+ ):
56
+ """
57
+ Run the L2E 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
+ """
92
+ from disdrodb.l2.routines import run_l2e_station
93
+ from disdrodb.utils.dask import close_dask_cluster, initialize_dask_cluster
94
+
95
+ data_archive_dir = parse_archive_dir(data_archive_dir)
96
+ metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
97
+
98
+ # -------------------------------------------------------------------------.
99
+ # If parallel=True, set the dask environment
100
+ if parallel:
101
+ cluster, client = initialize_dask_cluster()
102
+
103
+ # -------------------------------------------------------------------------.
104
+ run_l2e_station(
105
+ # Station arguments
106
+ data_source=data_source,
107
+ campaign_name=campaign_name,
108
+ station_name=station_name,
109
+ # Processing options
110
+ force=force,
111
+ verbose=verbose,
112
+ debugging_mode=debugging_mode,
113
+ parallel=parallel,
114
+ # DISDRODB root directories
115
+ data_archive_dir=data_archive_dir,
116
+ metadata_archive_dir=metadata_archive_dir,
117
+ )
118
+
119
+ # -------------------------------------------------------------------------.
120
+ # Close the cluster
121
+ if parallel:
122
+ close_dask_cluster(cluster, client)
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env python3
2
+ # -----------------------------------------------------------------------------.
3
+ # Copyright (c) 2021-2023 DISDRODB developers
4
+ #
5
+ # This program is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ # -----------------------------------------------------------------------------.
18
+ """Script to run the DISDRODB L2M processing."""
19
+ import sys
20
+ from typing import Optional
21
+
22
+ import click
23
+
24
+ from disdrodb.utils.cli import (
25
+ click_data_archive_dir_option,
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_processing_options
39
+ @click_data_archive_dir_option
40
+ @click_metadata_archive_dir_option
41
+ def disdrodb_run_l2m(
42
+ # Stations options
43
+ data_sources: Optional[str] = None,
44
+ campaign_names: Optional[str] = None,
45
+ station_names: Optional[str] = None,
46
+ # Processing options
47
+ force: bool = False,
48
+ verbose: bool = True,
49
+ parallel: bool = True,
50
+ debugging_mode: bool = False,
51
+ # DISDRODB root directories
52
+ data_archive_dir: Optional[str] = None,
53
+ metadata_archive_dir: Optional[str] = None,
54
+ ):
55
+ """
56
+ Run the L2M 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 'GPM 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
+ """
99
+ from disdrodb.routines import run_l2m
100
+
101
+ # Parse data_sources, campaign_names and station arguments
102
+ data_archive_dir = parse_archive_dir(data_archive_dir)
103
+ metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
104
+ data_sources = parse_arg_to_list(data_sources)
105
+ campaign_names = parse_arg_to_list(campaign_names)
106
+ station_names = parse_arg_to_list(station_names)
107
+
108
+ # Run processing
109
+ run_l2m(
110
+ # DISDRODB root directories
111
+ data_archive_dir=data_archive_dir,
112
+ metadata_archive_dir=metadata_archive_dir,
113
+ # Stations options
114
+ data_sources=data_sources,
115
+ campaign_names=campaign_names,
116
+ station_names=station_names,
117
+ # Processing options
118
+ force=force,
119
+ verbose=verbose,
120
+ debugging_mode=debugging_mode,
121
+ parallel=parallel,
122
+ )
@@ -0,0 +1,122 @@
1
+ # -----------------------------------------------------------------------------.
2
+ # Copyright (c) 2021-2023 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 run the DISDRODB L2M station processing."""
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_metadata_archive_dir_option,
26
+ click_processing_options,
27
+ click_station_arguments,
28
+ parse_archive_dir,
29
+ )
30
+
31
+ sys.tracebacklimit = 0 # avoid full traceback error if occur
32
+
33
+ # -------------------------------------------------------------------------.
34
+ # Click Command Line Interface decorator
35
+
36
+
37
+ @click.command()
38
+ @click_station_arguments
39
+ @click_processing_options
40
+ @click_data_archive_dir_option
41
+ @click_metadata_archive_dir_option
42
+ def disdrodb_run_l2m_station(
43
+ # Station arguments
44
+ data_source: str,
45
+ campaign_name: str,
46
+ station_name: str,
47
+ # Processing options
48
+ force: bool = False,
49
+ verbose: bool = False,
50
+ parallel: bool = True,
51
+ debugging_mode: bool = False,
52
+ # DISDRODB root directories
53
+ data_archive_dir: Optional[str] = None,
54
+ metadata_archive_dir: Optional[str] = None,
55
+ ):
56
+ """
57
+ Run the L2M 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
+ """
92
+ from disdrodb.l2.routines import run_l2m_station
93
+ from disdrodb.utils.dask import close_dask_cluster, initialize_dask_cluster
94
+
95
+ data_archive_dir = parse_archive_dir(data_archive_dir)
96
+ metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
97
+
98
+ # -------------------------------------------------------------------------.
99
+ # If parallel=True, set the dask environment
100
+ if parallel:
101
+ cluster, client = initialize_dask_cluster()
102
+
103
+ # -------------------------------------------------------------------------.
104
+ run_l2m_station(
105
+ # Station arguments
106
+ data_source=data_source,
107
+ campaign_name=campaign_name,
108
+ station_name=station_name,
109
+ # Processing options
110
+ force=force,
111
+ verbose=verbose,
112
+ debugging_mode=debugging_mode,
113
+ parallel=parallel,
114
+ # DISDRODB root directories
115
+ data_archive_dir=data_archive_dir,
116
+ metadata_archive_dir=metadata_archive_dir,
117
+ )
118
+
119
+ # -------------------------------------------------------------------------.
120
+ # Close the cluster
121
+ if parallel:
122
+ close_dask_cluster(cluster, client)
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env python3
2
+
3
+ # -----------------------------------------------------------------------------.
4
+ # Copyright (c) 2021-2023 DISDRODB developers
5
+ #
6
+ # This program is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
+ # -----------------------------------------------------------------------------.
19
+ """Routines to upload data to the DISDRODB Decentralized Data Archive."""
20
+
21
+ import sys
22
+ from typing import Optional
23
+
24
+ import click
25
+
26
+ from disdrodb.data_transfer.upload_data import click_upload_archive_options, click_upload_options
27
+ from disdrodb.utils.cli import (
28
+ click_data_archive_dir_option,
29
+ click_metadata_archive_dir_option,
30
+ parse_archive_dir,
31
+ parse_arg_to_list,
32
+ )
33
+
34
+ sys.tracebacklimit = 0 # avoid full traceback error if occur
35
+
36
+
37
+ @click.command()
38
+ @click_upload_archive_options
39
+ @click_upload_options
40
+ @click_data_archive_dir_option
41
+ @click_metadata_archive_dir_option
42
+ def disdrodb_upload_archive(
43
+ # DISDRODB root directories
44
+ data_archive_dir: Optional[str] = None,
45
+ metadata_archive_dir: Optional[str] = None,
46
+ # Stations options
47
+ data_sources: Optional[str] = None,
48
+ campaign_names: Optional[str] = None,
49
+ station_names: Optional[str] = None,
50
+ # Upload options
51
+ platform: Optional[str] = None,
52
+ force: bool = False,
53
+ ):
54
+ """Find all stations containing local data and upload them to a remote repository.
55
+
56
+ Parameters
57
+ ----------
58
+ platform: str, optional
59
+ Name of the remote platform.
60
+ The default platform is ``"sandbox.zenodo"`` (for testing purposes).
61
+ Switch to ``"zenodo"`` for final data dissemination.
62
+ force: bool, optional
63
+ If ``True``, upload even if data already exists on another remote location.
64
+ The default value is ``force=False``.
65
+ data_archive_dir : str (optional)
66
+ The directory path where the DISDRODB Data Archive is located.
67
+ The directory path must end with ``<...>/DISDRODB``.
68
+ If ``None``, it uses the ``data_archive_dir`` path specified
69
+ in the DISDRODB active configuration.
70
+
71
+ Other Parameters
72
+ ----------------
73
+ data_sources: str or list of str, optional
74
+ Data source name (eg: EPFL).
75
+ If not provided (``None``), all data sources will be uploaded.
76
+ The default value is ``data_source=None``.
77
+ campaign_names: str or list of str, optional
78
+ Campaign name (eg: EPFL_ROOF_2012).
79
+ If not provided (``None``), all campaigns will be uploaded.
80
+ The default value is ``campaign_name=None``.
81
+ station_names: str or list of str, optional
82
+ Station name.
83
+ If not provided (``None``), all stations will be uploaded.
84
+ The default value is ``station_name=None``.
85
+ """
86
+ from disdrodb.data_transfer.upload_data import upload_archive
87
+
88
+ data_archive_dir = parse_archive_dir(data_archive_dir)
89
+ metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
90
+ data_sources = parse_arg_to_list(data_sources)
91
+ campaign_names = parse_arg_to_list(campaign_names)
92
+ station_names = parse_arg_to_list(station_names)
93
+
94
+ upload_archive(
95
+ # DISDRODB root directories
96
+ data_archive_dir=data_archive_dir,
97
+ metadata_archive_dir=metadata_archive_dir,
98
+ # Stations options
99
+ data_sources=data_sources,
100
+ campaign_names=campaign_names,
101
+ station_names=station_names,
102
+ # Upload options
103
+ platform=platform,
104
+ force=force,
105
+ )
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env python3
2
+
3
+ # -----------------------------------------------------------------------------.
4
+ # Copyright (c) 2021-2023 DISDRODB developers
5
+ #
6
+ # This program is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
18
+ # -----------------------------------------------------------------------------.
19
+ """Routines to upload station data to the DISDRODB Decentralized Data Archive."""
20
+
21
+ import sys
22
+ from typing import Optional
23
+
24
+ import click
25
+
26
+ from disdrodb.data_transfer.upload_data import click_upload_options
27
+ from disdrodb.utils.cli import (
28
+ click_data_archive_dir_option,
29
+ click_metadata_archive_dir_option,
30
+ click_station_arguments,
31
+ parse_archive_dir,
32
+ )
33
+
34
+ sys.tracebacklimit = 0 # avoid full traceback error if occur
35
+
36
+
37
+ @click.command()
38
+ @click_station_arguments
39
+ @click_upload_options
40
+ @click_data_archive_dir_option
41
+ @click_metadata_archive_dir_option
42
+ def disdrodb_upload_station(
43
+ # Station arguments
44
+ data_source: str,
45
+ campaign_name: str,
46
+ station_name: str,
47
+ # Upload options
48
+ platform: Optional[str] = None,
49
+ force: bool = False,
50
+ # DISDRODB root directories
51
+ data_archive_dir: Optional[str] = None,
52
+ metadata_archive_dir: Optional[str] = None,
53
+ ):
54
+ """
55
+ Upload data from a single DISDRODB station on a remote repository.
56
+
57
+ This function also automatically update the disdrodb_data url in the metadata file.
58
+
59
+ Parameters
60
+ ----------
61
+ data_source : str
62
+ The name of the institution (for campaigns spanning multiple countries) or
63
+ the name of the country (for campaigns or sensor networks within a single country).
64
+ Must be provided in UPPER CASE.
65
+ campaign_name : str
66
+ The name of the campaign. Must be provided in UPPER CASE.
67
+ station_name : str
68
+ The name of the station.
69
+ data_archive_dir : str (optional)
70
+ The directory path where the DISDRODB Data Archive is located.
71
+ The directory path must end with ``<...>/DISDRODB``.
72
+ If ``None``, it uses the ``data_archive_dir`` path specified
73
+ in the DISDRODB active configuration.
74
+ platform: str, optional
75
+ Name of the remote data storage platform.
76
+ The default platform is ``"sandbox.zenodo"`` (for testing purposes).
77
+ Switch to ``"zenodo"`` for final data dissemination.
78
+ force: bool, optional
79
+ If ``True``, upload the data and overwrite the ``disdrodb_data_url``.
80
+ The default value is ``force=False``.
81
+
82
+ """
83
+ from disdrodb.data_transfer.upload_data import upload_station
84
+
85
+ data_archive_dir = parse_archive_dir(data_archive_dir)
86
+ metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
87
+ upload_station(
88
+ # DISDRODB root directories
89
+ data_archive_dir=data_archive_dir,
90
+ metadata_archive_dir=metadata_archive_dir,
91
+ # Station argument
92
+ data_source=data_source,
93
+ campaign_name=campaign_name,
94
+ station_name=station_name,
95
+ # Upload options
96
+ platform=platform,
97
+ force=force,
98
+ )