disdrodb 0.0.21__py3-none-any.whl → 0.1.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 (264) 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 +295 -269
  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 +32 -42
  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 +62 -59
  57. disdrodb/l0/configs/{Thies_LPM → LPM}/l0b_encodings.yml +9 -9
  58. disdrodb/l0/configs/{Thies_LPM → LPM}/raw_data_format.yml +245 -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 +22 -20
  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 +24 -22
  69. disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/l0b_encodings.yml +20 -20
  70. disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/raw_data_format.yml +98 -98
  71. disdrodb/l0/configs/{RD_80 → RD80}/bins_diameter.yml +40 -40
  72. disdrodb/l0/configs/RD80/l0a_encodings.yml +16 -0
  73. disdrodb/l0/configs/{RD_80 → RD80}/l0b_cf_attrs.yml +3 -3
  74. disdrodb/l0/configs/RD80/l0b_encodings.yml +135 -0
  75. disdrodb/l0/configs/{RD_80 → RD80}/raw_data_format.yml +48 -48
  76. disdrodb/l0/l0_reader.py +216 -340
  77. disdrodb/l0/l0a_processing.py +237 -208
  78. disdrodb/l0/l0b_nc_processing.py +227 -80
  79. disdrodb/l0/l0b_processing.py +93 -173
  80. disdrodb/l0/l0c_processing.py +627 -0
  81. disdrodb/l0/readers/{ARM → LPM/ARM}/ARM_LPM.py +36 -58
  82. disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +226 -0
  83. disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +185 -0
  84. disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +183 -0
  85. disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +179 -0
  86. disdrodb/l0/readers/{UK → LPM/UK}/DIVEN.py +14 -35
  87. disdrodb/l0/readers/PARSIVEL/AUSTRALIA/MELBOURNE_2007_PARSIVEL.py +157 -0
  88. disdrodb/l0/readers/PARSIVEL/CHINA/CHONGQING.py +113 -0
  89. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/ARCTIC_2021.py +40 -57
  90. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/COMMON_2011.py +37 -54
  91. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/DAVOS_2009_2011.py +34 -51
  92. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_2009.py +34 -51
  93. disdrodb/l0/readers/{EPFL/PARADISO_2014.py → PARSIVEL/EPFL/EPFL_ROOF_2008.py} +38 -50
  94. disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2010.py +105 -0
  95. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_ROOF_2011.py +34 -51
  96. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_ROOF_2012.py +33 -51
  97. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GENEPI_2007.py +25 -44
  98. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GRAND_ST_BERNARD_2007.py +25 -44
  99. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GRAND_ST_BERNARD_2007_2.py +25 -44
  100. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/HPICONET_2010.py +34 -51
  101. disdrodb/l0/readers/{EPFL/EPFL_ROOF_2010.py → PARSIVEL/EPFL/HYMEX_LTE_SOP2.py} +37 -50
  102. disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP3.py +111 -0
  103. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/HYMEX_LTE_SOP4.py +36 -54
  104. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/LOCARNO_2018.py +34 -52
  105. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/LOCARNO_2019.py +38 -56
  106. disdrodb/l0/readers/PARSIVEL/EPFL/PARADISO_2014.py +105 -0
  107. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/PARSIVEL_2007.py +27 -45
  108. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/PLATO_2019.py +24 -44
  109. disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019.py +140 -0
  110. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/RACLETS_2019_WJF.py +41 -59
  111. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/RIETHOLZBACH_2011.py +34 -51
  112. disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2017.py +117 -0
  113. disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2019.py +137 -0
  114. disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/UNIL_2022.py +42 -55
  115. disdrodb/l0/readers/PARSIVEL/GPM/IFLOODS.py +104 -0
  116. disdrodb/l0/readers/{GPM → PARSIVEL/GPM}/LPVEX.py +29 -48
  117. disdrodb/l0/readers/PARSIVEL/GPM/MC3E.py +184 -0
  118. disdrodb/l0/readers/PARSIVEL/NCAR/CCOPE_2015.py +113 -0
  119. disdrodb/l0/readers/{NCAR/VORTEX_SE_2016_P1.py → PARSIVEL/NCAR/OWLES_MIPS.py} +46 -72
  120. disdrodb/l0/readers/PARSIVEL/NCAR/PECAN_MOBILE.py +125 -0
  121. disdrodb/l0/readers/{NCAR/OWLES_MIPS.py → PARSIVEL/NCAR/PLOWS_MIPS.py} +45 -64
  122. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2009.py +114 -0
  123. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +176 -0
  124. disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +183 -0
  125. disdrodb/l0/readers/{ARM/ARM_LD.py → PARSIVEL2/ARM/ARM_PARSIVEL2.py} +27 -50
  126. disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +163 -0
  127. disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +163 -0
  128. disdrodb/l0/readers/{DENMARK → PARSIVEL2/DENMARK}/EROSION_nc.py +14 -35
  129. disdrodb/l0/readers/PARSIVEL2/FRANCE/SIRTA_PARSIVEL2.py +119 -0
  130. disdrodb/l0/readers/PARSIVEL2/GPM/GCPEX.py +104 -0
  131. disdrodb/l0/readers/PARSIVEL2/GPM/NSSTC.py +176 -0
  132. disdrodb/l0/readers/PARSIVEL2/ITALY/GID_PARSIVEL2.py +32 -0
  133. disdrodb/l0/readers/PARSIVEL2/MEXICO/OH_IIUNAM_nc.py +56 -0
  134. disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_FP3.py +120 -0
  135. disdrodb/l0/readers/{NCAR → PARSIVEL2/NCAR}/PECAN_MIPS.py +45 -64
  136. disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +181 -0
  137. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +160 -0
  138. disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +160 -0
  139. disdrodb/l0/readers/{NCAR/PLOWS_MIPS.py → PARSIVEL2/NCAR/VORTEX_SE_2016_P1.py} +49 -66
  140. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +118 -0
  141. disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +152 -0
  142. disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT.py +166 -0
  143. disdrodb/l0/readers/{NCAR/RELAMPAGO_RD80.py → RD80/BRAZIL/CHUVA_RD80.py} +36 -60
  144. disdrodb/l0/readers/{BRAZIL → RD80/BRAZIL}/GOAMAZON_RD80.py +36 -55
  145. disdrodb/l0/readers/{NCAR → RD80/NCAR}/CINDY_2011_RD80.py +35 -54
  146. disdrodb/l0/readers/{BRAZIL/CHUVA_RD80.py → RD80/NCAR/RELAMPAGO_RD80.py} +40 -54
  147. disdrodb/l0/readers/template_reader_raw_netcdf_data.py +62 -0
  148. disdrodb/l0/readers/{reader_template.py → template_reader_raw_text_data.py} +20 -44
  149. disdrodb/l0/routines.py +885 -581
  150. disdrodb/l0/standards.py +72 -236
  151. disdrodb/l0/template_tools.py +104 -109
  152. disdrodb/l1/__init__.py +17 -0
  153. disdrodb/l1/beard_model.py +716 -0
  154. disdrodb/l1/encoding_attrs.py +620 -0
  155. disdrodb/l1/fall_velocity.py +260 -0
  156. disdrodb/l1/filters.py +192 -0
  157. disdrodb/l1/processing.py +200 -0
  158. disdrodb/l1/resampling.py +236 -0
  159. disdrodb/l1/routines.py +357 -0
  160. disdrodb/l1_env/__init__.py +17 -0
  161. disdrodb/l1_env/routines.py +38 -0
  162. disdrodb/l2/__init__.py +17 -0
  163. disdrodb/l2/empirical_dsd.py +1735 -0
  164. disdrodb/l2/event.py +388 -0
  165. disdrodb/l2/processing.py +519 -0
  166. disdrodb/l2/processing_options.py +213 -0
  167. disdrodb/l2/routines.py +868 -0
  168. disdrodb/metadata/__init__.py +9 -2
  169. disdrodb/metadata/checks.py +165 -118
  170. disdrodb/metadata/download.py +81 -0
  171. disdrodb/metadata/geolocation.py +146 -0
  172. disdrodb/metadata/info.py +20 -13
  173. disdrodb/metadata/manipulation.py +1 -1
  174. disdrodb/metadata/reader.py +59 -8
  175. disdrodb/metadata/search.py +77 -144
  176. disdrodb/metadata/standards.py +7 -8
  177. disdrodb/metadata/writer.py +8 -14
  178. disdrodb/psd/__init__.py +38 -0
  179. disdrodb/psd/fitting.py +2146 -0
  180. disdrodb/psd/models.py +774 -0
  181. disdrodb/routines.py +1176 -0
  182. disdrodb/scattering/__init__.py +28 -0
  183. disdrodb/scattering/axis_ratio.py +344 -0
  184. disdrodb/scattering/routines.py +456 -0
  185. disdrodb/utils/__init__.py +17 -0
  186. disdrodb/utils/attrs.py +208 -0
  187. disdrodb/utils/cli.py +269 -0
  188. disdrodb/utils/compression.py +60 -42
  189. disdrodb/utils/dask.py +62 -0
  190. disdrodb/utils/decorators.py +110 -0
  191. disdrodb/utils/directories.py +107 -46
  192. disdrodb/utils/encoding.py +127 -0
  193. disdrodb/utils/list.py +29 -0
  194. disdrodb/utils/logger.py +168 -46
  195. disdrodb/utils/time.py +657 -0
  196. disdrodb/utils/warnings.py +30 -0
  197. disdrodb/utils/writer.py +57 -0
  198. disdrodb/utils/xarray.py +138 -47
  199. disdrodb/utils/yaml.py +0 -1
  200. disdrodb/viz/__init__.py +17 -0
  201. disdrodb/viz/plots.py +17 -0
  202. disdrodb-0.1.0.dist-info/METADATA +321 -0
  203. disdrodb-0.1.0.dist-info/RECORD +216 -0
  204. {disdrodb-0.0.21.dist-info → disdrodb-0.1.0.dist-info}/WHEEL +1 -1
  205. disdrodb-0.1.0.dist-info/entry_points.txt +30 -0
  206. disdrodb/data_transfer/scripts/disdrodb_download_archive.py +0 -53
  207. disdrodb/data_transfer/scripts/disdrodb_upload_archive.py +0 -57
  208. disdrodb/l0/configs/OTT_Parsivel/l0a_encodings.yml +0 -32
  209. disdrodb/l0/configs/OTT_Parsivel2/l0a_encodings.yml +0 -39
  210. disdrodb/l0/configs/RD_80/l0a_encodings.yml +0 -16
  211. disdrodb/l0/configs/RD_80/l0b_encodings.yml +0 -135
  212. disdrodb/l0/configs/Thies_LPM/l0a_encodings.yml +0 -80
  213. disdrodb/l0/io.py +0 -257
  214. disdrodb/l0/l0_processing.py +0 -1091
  215. disdrodb/l0/readers/AUSTRALIA/MELBOURNE_2007_OTT.py +0 -178
  216. disdrodb/l0/readers/AUSTRALIA/MELBOURNE_2007_THIES.py +0 -247
  217. disdrodb/l0/readers/BRAZIL/CHUVA_LPM.py +0 -204
  218. disdrodb/l0/readers/BRAZIL/CHUVA_OTT.py +0 -183
  219. disdrodb/l0/readers/BRAZIL/GOAMAZON_LPM.py +0 -204
  220. disdrodb/l0/readers/BRAZIL/GOAMAZON_OTT.py +0 -183
  221. disdrodb/l0/readers/CHINA/CHONGQING.py +0 -131
  222. disdrodb/l0/readers/EPFL/EPFL_ROOF_2008.py +0 -128
  223. disdrodb/l0/readers/EPFL/HYMEX_LTE_SOP2.py +0 -127
  224. disdrodb/l0/readers/EPFL/HYMEX_LTE_SOP3.py +0 -129
  225. disdrodb/l0/readers/EPFL/RACLETS_2019.py +0 -158
  226. disdrodb/l0/readers/EPFL/SAMOYLOV_2017.py +0 -136
  227. disdrodb/l0/readers/EPFL/SAMOYLOV_2019.py +0 -158
  228. disdrodb/l0/readers/FRANCE/SIRTA_OTT2.py +0 -138
  229. disdrodb/l0/readers/GPM/GCPEX.py +0 -123
  230. disdrodb/l0/readers/GPM/IFLOODS.py +0 -123
  231. disdrodb/l0/readers/GPM/MC3E.py +0 -123
  232. disdrodb/l0/readers/GPM/NSSTC.py +0 -164
  233. disdrodb/l0/readers/ITALY/GID.py +0 -199
  234. disdrodb/l0/readers/MEXICO/OH_IIUNAM_nc.py +0 -92
  235. disdrodb/l0/readers/NCAR/CCOPE_2015.py +0 -133
  236. disdrodb/l0/readers/NCAR/PECAN_FP3.py +0 -137
  237. disdrodb/l0/readers/NCAR/PECAN_MOBILE.py +0 -144
  238. disdrodb/l0/readers/NCAR/RELAMPAGO_OTT.py +0 -195
  239. disdrodb/l0/readers/NCAR/SNOWIE_PJ.py +0 -172
  240. disdrodb/l0/readers/NCAR/SNOWIE_SB.py +0 -179
  241. disdrodb/l0/readers/NCAR/VORTEX2_2009.py +0 -133
  242. disdrodb/l0/readers/NCAR/VORTEX2_2010.py +0 -188
  243. disdrodb/l0/readers/NCAR/VORTEX2_2010_UF.py +0 -191
  244. disdrodb/l0/readers/NCAR/VORTEX_SE_2016_P2.py +0 -135
  245. disdrodb/l0/readers/NCAR/VORTEX_SE_2016_PIPS.py +0 -170
  246. disdrodb/l0/readers/NETHERLANDS/DELFT.py +0 -187
  247. disdrodb/l0/readers/SPAIN/SBEGUERIA.py +0 -179
  248. disdrodb/l0/scripts/disdrodb_run_l0b_concat.py +0 -93
  249. disdrodb/l0/scripts/disdrodb_run_l0b_concat_station.py +0 -85
  250. disdrodb/utils/netcdf.py +0 -452
  251. disdrodb/utils/scripts.py +0 -102
  252. disdrodb-0.0.21.dist-info/AUTHORS.md +0 -18
  253. disdrodb-0.0.21.dist-info/METADATA +0 -186
  254. disdrodb-0.0.21.dist-info/RECORD +0 -168
  255. disdrodb-0.0.21.dist-info/entry_points.txt +0 -15
  256. /disdrodb/l0/configs/{RD_80 → RD80}/bins_velocity.yml +0 -0
  257. /disdrodb/l0/manuals/{Thies_LPM.pdf → LPM.pdf} +0 -0
  258. /disdrodb/l0/manuals/{ODM_470.pdf → ODM470.pdf} +0 -0
  259. /disdrodb/l0/manuals/{OTT_Parsivel.pdf → PARSIVEL.pdf} +0 -0
  260. /disdrodb/l0/manuals/{OTT_Parsivel2.pdf → PARSIVEL2.pdf} +0 -0
  261. /disdrodb/l0/manuals/{PWS_100.pdf → PWS100.pdf} +0 -0
  262. /disdrodb/l0/manuals/{RD_80.pdf → RD80.pdf} +0 -0
  263. {disdrodb-0.0.21.dist-info → disdrodb-0.1.0.dist-info/licenses}/LICENSE +0 -0
  264. {disdrodb-0.0.21.dist-info → disdrodb-0.1.0.dist-info}/top_level.txt +0 -0
@@ -15,23 +15,20 @@
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  # -----------------------------------------------------------------------------.
18
- from disdrodb.l0 import run_l0a
18
+ import pandas as pd
19
+
19
20
  from disdrodb.l0.l0_reader import is_documented_by, reader_generic_docstring
21
+ from disdrodb.l0.l0a_processing import read_raw_text_file
20
22
 
21
23
 
22
24
  @is_documented_by(reader_generic_docstring)
23
25
  def reader(
24
- raw_dir,
25
- processed_dir,
26
- station_name,
27
- # Processing options
28
- force=False,
29
- verbose=False,
30
- parallel=False,
31
- debugging_mode=False,
26
+ filepath,
27
+ logger=None,
32
28
  ):
29
+ """Reader."""
33
30
  ##------------------------------------------------------------------------.
34
- #### - Define column names
31
+ #### Define column names
35
32
  column_names = [
36
33
  "id",
37
34
  "latitude",
@@ -60,7 +57,7 @@ def reader(
60
57
  ]
61
58
 
62
59
  ##------------------------------------------------------------------------.
63
- #### - Define reader options
60
+ #### Define reader options
64
61
  reader_kwargs = {}
65
62
  # - Define delimiter
66
63
  reader_kwargs["delimiter"] = ","
@@ -76,50 +73,35 @@ def reader(
76
73
  # - Available: gzip, bz2, zip
77
74
  reader_kwargs["compression"] = "infer"
78
75
  # - Strings to recognize as NA/NaN and replace with standard NA flags
79
- # - Already included: ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’,
80
- # ‘-NaN’, ‘-nan’, 1.#IND’, 1.#QNAN’, ‘<NA>’, N/A’,
81
- # NA’, NULL’, NaN’, n/a’, nan’, null
76
+ # - Already included: '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN',
77
+ # '-NaN', '-nan', '1.#IND', '1.#QNAN', '<NA>', 'N/A',
78
+ # 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null'
82
79
  reader_kwargs["na_values"] = ["na", "", "error"]
83
80
 
84
81
  ##------------------------------------------------------------------------.
85
- #### - Define dataframe sanitizer function for L0 processing
86
- def df_sanitizer_fun(df):
87
- # - Import pandas
88
- import pandas as pd
89
-
90
- # - Convert time column to datetime with resolution in seconds
91
- df["time"] = pd.to_datetime(df["time"], format="%d-%m-%Y %H:%M:%S", errors="coerce")
92
-
93
- # - Drop columns not agreeing with DISDRODB L0 standards
94
- columns_to_drop = [
95
- "id",
96
- "datalogger_voltage",
97
- "datalogger_temperature",
98
- "datalogger_error",
99
- "latitude",
100
- "longitude",
101
- ]
102
- df = df.drop(columns=columns_to_drop)
103
- return df
104
-
105
- ##------------------------------------------------------------------------.
106
- #### - Define glob pattern to search data files within <raw_dir>/data/<station_name>
107
- glob_patterns = "*.dat*"
108
-
109
- ####----------------------------------------------------------------------.
110
- #### - Create L0A products
111
- run_l0a(
112
- raw_dir=raw_dir,
113
- processed_dir=processed_dir,
114
- station_name=station_name,
115
- # Custom arguments of the reader for L0A processing
116
- glob_patterns=glob_patterns,
82
+ #### Read the data
83
+ df = read_raw_text_file(
84
+ filepath=filepath,
117
85
  column_names=column_names,
118
86
  reader_kwargs=reader_kwargs,
119
- df_sanitizer_fun=df_sanitizer_fun,
120
- # Processing options
121
- force=force,
122
- verbose=verbose,
123
- parallel=parallel,
124
- debugging_mode=debugging_mode,
87
+ logger=logger,
125
88
  )
89
+
90
+ ##------------------------------------------------------------------------.
91
+ #### Adapt the dataframe to adhere to DISDRODB L0 standards
92
+ # Convert time column to datetime with resolution in seconds
93
+ df["time"] = pd.to_datetime(df["time"], format="%d-%m-%Y %H:%M:%S", errors="coerce")
94
+
95
+ # Drop columns not agreeing with DISDRODB L0 standards
96
+ columns_to_drop = [
97
+ "id",
98
+ "datalogger_voltage",
99
+ "datalogger_temperature",
100
+ "datalogger_error",
101
+ "latitude",
102
+ "longitude",
103
+ ]
104
+ df = df.drop(columns=columns_to_drop)
105
+
106
+ # Return the dataframe adhering to DISDRODB L0 standards
107
+ return df
@@ -15,23 +15,20 @@
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  # -----------------------------------------------------------------------------.
18
- from disdrodb.l0 import run_l0a
18
+ import pandas as pd
19
+
19
20
  from disdrodb.l0.l0_reader import is_documented_by, reader_generic_docstring
21
+ from disdrodb.l0.l0a_processing import read_raw_text_file
20
22
 
21
23
 
22
24
  @is_documented_by(reader_generic_docstring)
23
25
  def reader(
24
- raw_dir,
25
- processed_dir,
26
- station_name,
27
- # Processing options
28
- force=False,
29
- verbose=False,
30
- parallel=False,
31
- debugging_mode=False,
26
+ filepath,
27
+ logger=None,
32
28
  ):
29
+ """Reader."""
33
30
  ##------------------------------------------------------------------------.
34
- #### - Define column names
31
+ #### Define column names
35
32
  column_names = [
36
33
  "id",
37
34
  "latitude",
@@ -59,7 +56,7 @@ def reader(
59
56
  ]
60
57
 
61
58
  ##------------------------------------------------------------------------.
62
- #### - Define reader options
59
+ #### Define reader options
63
60
  reader_kwargs = {}
64
61
  # - Define delimiter
65
62
  reader_kwargs["delimiter"] = ";"
@@ -75,55 +72,40 @@ def reader(
75
72
  # - Available: gzip, bz2, zip
76
73
  reader_kwargs["compression"] = "infer"
77
74
  # - Strings to recognize as NA/NaN and replace with standard NA flags
78
- # - Already included: ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’,
79
- # ‘-NaN’, ‘-nan’, 1.#IND’, 1.#QNAN’, ‘<NA>’, N/A’,
80
- # NA’, NULL’, NaN’, n/a’, nan’, null
75
+ # - Already included: '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN',
76
+ # '-NaN', '-nan', '1.#IND', '1.#QNAN', '<NA>', 'N/A',
77
+ # 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null'
81
78
  reader_kwargs["na_values"] = ["na", "", "error"]
82
79
 
83
80
  ##------------------------------------------------------------------------.
84
- #### - Define dataframe sanitizer function for L0 processing
85
- def df_sanitizer_fun(df):
86
- # - Import pandas
87
- import pandas as pd
88
-
89
- # - Convert time column to datetime with resolution in seconds
90
- df["time"] = pd.to_datetime(df["time"], format="%d-%m-%Y %H:%M:%S", errors="coerce")
81
+ #### Read the data
82
+ df = read_raw_text_file(
83
+ filepath=filepath,
84
+ column_names=column_names,
85
+ reader_kwargs=reader_kwargs,
86
+ logger=logger,
87
+ )
91
88
 
92
- # - Split TO_BE_SPLITTED columns
93
- df_splitted = df["TO_BE_SPLITTED"].str.split(",", expand=True, n=1)
94
- df_splitted.columns = ["datalogger_voltage", "rainfall_rate_32bit"]
95
- df["rainfall_rate_32bit"] = df_splitted["rainfall_rate_32bit"]
89
+ ##------------------------------------------------------------------------.
90
+ #### Adapt the dataframe to adhere to DISDRODB L0 standards
91
+ # Convert time column to datetime with resolution in seconds
92
+ df["time"] = pd.to_datetime(df["time"], format="%d-%m-%Y %H:%M:%S", errors="coerce")
96
93
 
97
- # - Drop columns not agreeing with DISDRODB L0 standards
98
- columns_to_drop = [
99
- "id",
100
- "TO_BE_SPLITTED",
101
- "datalogger_temperature",
102
- "datalogger_error",
103
- "latitude",
104
- "longitude",
105
- ]
106
- df = df.drop(columns=columns_to_drop)
107
- return df
94
+ # - Split TO_BE_SPLITTED columns
95
+ df_splitted = df["TO_BE_SPLITTED"].str.split(",", expand=True, n=1)
96
+ df_splitted.columns = ["datalogger_voltage", "rainfall_rate_32bit"]
97
+ df["rainfall_rate_32bit"] = df_splitted["rainfall_rate_32bit"]
108
98
 
109
- ##------------------------------------------------------------------------.
110
- #### - Define glob pattern to search data files within <raw_dir>/data/<station_name>
111
- glob_patterns = "*/*/*.dat*" # YYYY/MM/...
99
+ # Drop columns not agreeing with DISDRODB L0 standards
100
+ columns_to_drop = [
101
+ "id",
102
+ "TO_BE_SPLITTED",
103
+ "datalogger_temperature",
104
+ "datalogger_error",
105
+ "latitude",
106
+ "longitude",
107
+ ]
108
+ df = df.drop(columns=columns_to_drop)
112
109
 
113
- ####----------------------------------------------------------------------.
114
- #### - Create L0A products
115
- run_l0a(
116
- raw_dir=raw_dir,
117
- processed_dir=processed_dir,
118
- station_name=station_name,
119
- # Custom arguments of the reader for L0A processing
120
- glob_patterns=glob_patterns,
121
- column_names=column_names,
122
- reader_kwargs=reader_kwargs,
123
- df_sanitizer_fun=df_sanitizer_fun,
124
- # Processing options
125
- force=force,
126
- verbose=verbose,
127
- parallel=parallel,
128
- debugging_mode=debugging_mode,
129
- )
110
+ # Return the dataframe adhering to DISDRODB L0 standards
111
+ return df
@@ -0,0 +1,105 @@
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
+ """Reader for PARADISO 2014 campaign."""
19
+ import pandas as pd
20
+
21
+ from disdrodb.l0.l0_reader import is_documented_by, reader_generic_docstring
22
+ from disdrodb.l0.l0a_processing import read_raw_text_file
23
+
24
+
25
+ @is_documented_by(reader_generic_docstring)
26
+ def reader(
27
+ filepath,
28
+ logger=None,
29
+ ):
30
+ """Reader."""
31
+ ##------------------------------------------------------------------------.
32
+ #### Define column names
33
+ column_names = [
34
+ "time",
35
+ "id",
36
+ "datalogger_temperature",
37
+ "datalogger_voltage",
38
+ "rainfall_rate_32bit",
39
+ "rainfall_accumulated_32bit",
40
+ "weather_code_synop_4680",
41
+ "weather_code_synop_4677",
42
+ "reflectivity_32bit",
43
+ "mor_visibility",
44
+ "laser_amplitude",
45
+ "number_particles",
46
+ "sensor_temperature",
47
+ "sensor_heating_current",
48
+ "sensor_battery_voltage",
49
+ "sensor_status",
50
+ "rainfall_amount_absolute_32bit",
51
+ "datalogger_debug",
52
+ "raw_drop_concentration",
53
+ "raw_drop_average_velocity",
54
+ "raw_drop_number",
55
+ "datalogger_error",
56
+ ]
57
+
58
+ ##------------------------------------------------------------------------.
59
+ #### Define reader options
60
+ reader_kwargs = {}
61
+ # - Define delimiter
62
+ reader_kwargs["delimiter"] = ","
63
+ # - Avoid first column to become df index
64
+ reader_kwargs["index_col"] = False
65
+ # - Define behaviour when encountering bad lines
66
+ reader_kwargs["on_bad_lines"] = "skip"
67
+ # - Define reader engine
68
+ # - C engine is faster
69
+ # - Python engine is more feature-complete
70
+ reader_kwargs["engine"] = "python"
71
+ # - Define on-the-fly decompression of on-disk data
72
+ # - Available: gzip, bz2, zip
73
+ reader_kwargs["compression"] = "infer"
74
+ # - Strings to recognize as NA/NaN and replace with standard NA flags
75
+ # - Already included: '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN',
76
+ # '-NaN', '-nan', '1.#IND', '1.#QNAN', '<NA>', 'N/A',
77
+ # 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null'
78
+ reader_kwargs["na_values"] = ["na", "", "error"]
79
+
80
+ ##------------------------------------------------------------------------.
81
+ #### Read the data
82
+ df = read_raw_text_file(
83
+ filepath=filepath,
84
+ column_names=column_names,
85
+ reader_kwargs=reader_kwargs,
86
+ logger=logger,
87
+ )
88
+
89
+ ##------------------------------------------------------------------------.
90
+ #### Adapt the dataframe to adhere to DISDRODB L0 standards
91
+ # Convert time column to datetime
92
+ df["time"] = pd.to_datetime(df["time"], format="%Y-%m-%d %H:%M:%S", errors="coerce")
93
+
94
+ # Drop columns not agreeing with DISDRODB L0 standards
95
+ columns_to_drop = [
96
+ "id",
97
+ "datalogger_voltage",
98
+ "datalogger_temperature",
99
+ "datalogger_debug",
100
+ "datalogger_error",
101
+ ]
102
+ df = df.drop(columns=columns_to_drop)
103
+
104
+ # Return the dataframe adhering to DISDRODB L0 standards
105
+ return df
@@ -15,23 +15,21 @@
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  # -----------------------------------------------------------------------------.
18
- from disdrodb.l0 import run_l0a
18
+ """Reader for PARSIVEL 2007 campaign."""
19
+ import pandas as pd
20
+
19
21
  from disdrodb.l0.l0_reader import is_documented_by, reader_generic_docstring
22
+ from disdrodb.l0.l0a_processing import read_raw_text_file
20
23
 
21
24
 
22
25
  @is_documented_by(reader_generic_docstring)
23
26
  def reader(
24
- raw_dir,
25
- processed_dir,
26
- station_name,
27
- # Processing options
28
- force=False,
29
- verbose=False,
30
- parallel=False,
31
- debugging_mode=False,
27
+ filepath,
28
+ logger=None,
32
29
  ):
30
+ """Reader."""
33
31
  ##------------------------------------------------------------------------.
34
- #### - Define column names
32
+ #### Define column names
35
33
  column_names = [
36
34
  "time",
37
35
  "id",
@@ -55,7 +53,7 @@ def reader(
55
53
  ]
56
54
 
57
55
  ##------------------------------------------------------------------------.
58
- #### - Define reader options
56
+ #### Define reader options
59
57
  reader_kwargs = {}
60
58
  # - Define delimiter
61
59
  reader_kwargs["delimiter"] = ","
@@ -75,43 +73,27 @@ def reader(
75
73
  # - Available: gzip, bz2, zip
76
74
  reader_kwargs["compression"] = "gzip"
77
75
  # - Strings to recognize as NA/NaN and replace with standard NA flags
78
- # - Already included: ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’,
79
- # ‘-NaN’, ‘-nan’, 1.#IND’, 1.#QNAN’, ‘<NA>’, N/A’,
80
- # NA’, NULL’, NaN’, n/a’, nan’, null
76
+ # - Already included: '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN',
77
+ # '-NaN', '-nan', '1.#IND', '1.#QNAN', '<NA>', 'N/A',
78
+ # 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null'
81
79
  reader_kwargs["na_values"] = ["na", "", "error", "-.-", " NA"]
82
80
 
83
81
  ##------------------------------------------------------------------------.
84
- #### - Define dataframe sanitizer function for L0 processing
85
- def df_sanitizer_fun(df):
86
- # - Import pandas
87
- import pandas as pd
88
-
89
- # - Convert time column to datetime
90
- df["time"] = pd.to_datetime(df["time"], format="%Y-%m-%d %H:%M:%S", errors="coerce")
91
-
92
- # - Drop columns not agreeing with DISDRODB L0 standards
93
- df = df.drop(columns=["datalogger_error", "id"])
94
-
95
- return df
96
-
97
- ##------------------------------------------------------------------------.
98
- #### - Define glob pattern to search data files in <raw_dir>/data/<station_name>
99
- glob_patterns = "*.dat*"
100
-
101
- ####----------------------------------------------------------------------.
102
- #### - Create L0A products
103
- run_l0a(
104
- raw_dir=raw_dir,
105
- processed_dir=processed_dir,
106
- station_name=station_name,
107
- # Custom arguments of the reader for L0A processing
108
- glob_patterns=glob_patterns,
82
+ #### Read the data
83
+ df = read_raw_text_file(
84
+ filepath=filepath,
109
85
  column_names=column_names,
110
86
  reader_kwargs=reader_kwargs,
111
- df_sanitizer_fun=df_sanitizer_fun,
112
- # Processing options
113
- force=force,
114
- verbose=verbose,
115
- parallel=parallel,
116
- debugging_mode=debugging_mode,
87
+ logger=logger,
117
88
  )
89
+
90
+ ##------------------------------------------------------------------------.
91
+ #### Adapt the dataframe to adhere to DISDRODB L0 standards
92
+ # Convert time column to datetime
93
+ df["time"] = pd.to_datetime(df["time"], format="%Y-%m-%d %H:%M:%S", errors="coerce")
94
+
95
+ # Drop columns not agreeing with DISDRODB L0 standards
96
+ df = df.drop(columns=["datalogger_error", "id"])
97
+
98
+ # Return the dataframe adhering to DISDRODB L0 standards
99
+ return df
@@ -15,23 +15,20 @@
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  # -----------------------------------------------------------------------------.
18
- from disdrodb.l0 import run_l0a
18
+ import pandas as pd
19
+
19
20
  from disdrodb.l0.l0_reader import is_documented_by, reader_generic_docstring
21
+ from disdrodb.l0.l0a_processing import read_raw_text_file
20
22
 
21
23
 
22
24
  @is_documented_by(reader_generic_docstring)
23
25
  def reader(
24
- raw_dir,
25
- processed_dir,
26
- station_name,
27
- # Processing options
28
- force=False,
29
- verbose=False,
30
- parallel=False,
31
- debugging_mode=False,
26
+ filepath,
27
+ logger=None,
32
28
  ):
29
+ """Reader."""
33
30
  ##------------------------------------------------------------------------.
34
- #### - Define column names
31
+ #### Define column names
35
32
  column_names = [
36
33
  "date",
37
34
  "time",
@@ -52,7 +49,7 @@ def reader(
52
49
  ]
53
50
 
54
51
  ##------------------------------------------------------------------------.
55
- #### - Define reader options
52
+ #### Define reader options
56
53
  reader_kwargs = {}
57
54
  # - Define encoding
58
55
  reader_kwargs["encoding"] = "latin-1"
@@ -71,42 +68,25 @@ def reader(
71
68
  # - Available: gzip, bz2, zip
72
69
  reader_kwargs["compression"] = "infer"
73
70
  # - Strings to recognize as NA/NaN and replace with standard NA flags
74
- # - Already included: ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’,
75
- # ‘-NaN’, ‘-nan’, 1.#IND’, 1.#QNAN’, ‘<NA>’, N/A’,
76
- # NA’, NULL’, NaN’, n/a’, nan’, null
71
+ # - Already included: '#N/A', '#N/A N/A', '#NA', '-1.#IND', '-1.#QNAN',
72
+ # '-NaN', '-nan', '1.#IND', '1.#QNAN', '<NA>', 'N/A',
73
+ # 'NA', 'NULL', 'NaN', 'n/a', 'nan', 'null'
77
74
  reader_kwargs["na_values"] = ["na", "", "error", "NA", "-.-"]
78
75
 
79
76
  ##------------------------------------------------------------------------.
80
- #### - Define dataframe sanitizer function for L0 processing
81
- def df_sanitizer_fun(df):
82
- # - Import pandas
83
- import pandas as pd
84
-
85
- # - Define 'time' datetime column
86
- df["time"] = pd.to_datetime(df["date"] + df["time"], format="%Y%m%d%H:%M:%S")
87
-
88
- # - Drop columns not agreeing with DISDRODB L0 standards
89
- df = df.drop(columns=["date"])
90
- return df
91
-
92
- ##------------------------------------------------------------------------.
93
- #### - Define glob pattern to search data files in <raw_dir>/data/<station_name>
94
- glob_patterns = "*.MIS*"
95
-
96
- ####----------------------------------------------------------------------.
97
- #### - Create L0A products
98
- run_l0a(
99
- raw_dir=raw_dir,
100
- processed_dir=processed_dir,
101
- station_name=station_name,
102
- # Custom arguments of the reader for L0A processing
103
- glob_patterns=glob_patterns,
77
+ #### Read the data
78
+ df = read_raw_text_file(
79
+ filepath=filepath,
104
80
  column_names=column_names,
105
81
  reader_kwargs=reader_kwargs,
106
- df_sanitizer_fun=df_sanitizer_fun,
107
- # Processing options
108
- force=force,
109
- verbose=verbose,
110
- parallel=parallel,
111
- debugging_mode=debugging_mode,
82
+ logger=logger,
112
83
  )
84
+
85
+ ##------------------------------------------------------------------------.
86
+ #### Adapt the dataframe to adhere to DISDRODB L0 standards
87
+ # - Define 'time' datetime column
88
+ df["time"] = pd.to_datetime(df["date"] + df["time"], format="%Y%m%d%H:%M:%S")
89
+
90
+ # Drop columns not agreeing with DISDRODB L0 standards
91
+ df = df.drop(columns=["date"])
92
+ return df