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.
- disdrodb/__init__.py +132 -15
- disdrodb/_config.py +4 -2
- disdrodb/_version.py +9 -4
- disdrodb/api/checks.py +264 -237
- disdrodb/api/configs.py +4 -8
- disdrodb/api/create_directories.py +235 -290
- disdrodb/api/info.py +217 -26
- disdrodb/api/io.py +295 -269
- disdrodb/api/path.py +597 -173
- disdrodb/api/search.py +486 -0
- disdrodb/{metadata/scripts → cli}/disdrodb_check_metadata_archive.py +12 -7
- disdrodb/{utils/pandas.py → cli/disdrodb_data_archive_directory.py} +9 -18
- disdrodb/cli/disdrodb_download_archive.py +86 -0
- disdrodb/cli/disdrodb_download_metadata_archive.py +53 -0
- disdrodb/cli/disdrodb_download_station.py +84 -0
- disdrodb/{api/scripts → cli}/disdrodb_initialize_station.py +22 -10
- disdrodb/cli/disdrodb_metadata_archive_directory.py +32 -0
- disdrodb/{data_transfer/scripts/disdrodb_download_station.py → cli/disdrodb_open_data_archive.py} +22 -22
- disdrodb/cli/disdrodb_open_logs_directory.py +69 -0
- disdrodb/{data_transfer/scripts/disdrodb_upload_station.py → cli/disdrodb_open_metadata_archive.py} +22 -24
- disdrodb/cli/disdrodb_open_metadata_directory.py +71 -0
- disdrodb/cli/disdrodb_open_product_directory.py +74 -0
- disdrodb/cli/disdrodb_open_readers_directory.py +32 -0
- disdrodb/{l0/scripts → cli}/disdrodb_run_l0.py +38 -31
- disdrodb/{l0/scripts → cli}/disdrodb_run_l0_station.py +32 -30
- disdrodb/{l0/scripts → cli}/disdrodb_run_l0a.py +30 -21
- disdrodb/{l0/scripts → cli}/disdrodb_run_l0a_station.py +24 -33
- disdrodb/{l0/scripts → cli}/disdrodb_run_l0b.py +30 -21
- disdrodb/{l0/scripts → cli}/disdrodb_run_l0b_station.py +25 -34
- disdrodb/cli/disdrodb_run_l0c.py +130 -0
- disdrodb/cli/disdrodb_run_l0c_station.py +129 -0
- disdrodb/cli/disdrodb_run_l1.py +122 -0
- disdrodb/cli/disdrodb_run_l1_station.py +121 -0
- disdrodb/cli/disdrodb_run_l2e.py +122 -0
- disdrodb/cli/disdrodb_run_l2e_station.py +122 -0
- disdrodb/cli/disdrodb_run_l2m.py +122 -0
- disdrodb/cli/disdrodb_run_l2m_station.py +122 -0
- disdrodb/cli/disdrodb_upload_archive.py +105 -0
- disdrodb/cli/disdrodb_upload_station.py +98 -0
- disdrodb/configs.py +90 -25
- disdrodb/data_transfer/__init__.py +22 -0
- disdrodb/data_transfer/download_data.py +87 -90
- disdrodb/data_transfer/upload_data.py +64 -37
- disdrodb/data_transfer/zenodo.py +15 -18
- disdrodb/docs.py +1 -1
- disdrodb/issue/__init__.py +17 -4
- disdrodb/issue/checks.py +10 -23
- disdrodb/issue/reader.py +9 -12
- disdrodb/issue/writer.py +14 -17
- disdrodb/l0/__init__.py +17 -26
- disdrodb/l0/check_configs.py +35 -23
- disdrodb/l0/check_standards.py +32 -42
- disdrodb/l0/configs/{Thies_LPM → LPM}/bins_diameter.yml +44 -44
- disdrodb/l0/configs/{Thies_LPM → LPM}/bins_velocity.yml +40 -40
- disdrodb/l0/configs/LPM/l0a_encodings.yml +80 -0
- disdrodb/l0/configs/{Thies_LPM → LPM}/l0b_cf_attrs.yml +62 -59
- disdrodb/l0/configs/{Thies_LPM → LPM}/l0b_encodings.yml +9 -9
- disdrodb/l0/configs/{Thies_LPM → LPM}/raw_data_format.yml +245 -245
- disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/bins_diameter.yml +66 -66
- disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/bins_velocity.yml +64 -64
- disdrodb/l0/configs/PARSIVEL/l0a_encodings.yml +32 -0
- disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/l0b_cf_attrs.yml +22 -20
- disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/l0b_encodings.yml +17 -17
- disdrodb/l0/configs/{OTT_Parsivel → PARSIVEL}/raw_data_format.yml +77 -77
- disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/bins_diameter.yml +64 -64
- disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/bins_velocity.yml +64 -64
- disdrodb/l0/configs/PARSIVEL2/l0a_encodings.yml +39 -0
- disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/l0b_cf_attrs.yml +24 -22
- disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/l0b_encodings.yml +20 -20
- disdrodb/l0/configs/{OTT_Parsivel2 → PARSIVEL2}/raw_data_format.yml +98 -98
- disdrodb/l0/configs/{RD_80 → RD80}/bins_diameter.yml +40 -40
- disdrodb/l0/configs/RD80/l0a_encodings.yml +16 -0
- disdrodb/l0/configs/{RD_80 → RD80}/l0b_cf_attrs.yml +3 -3
- disdrodb/l0/configs/RD80/l0b_encodings.yml +135 -0
- disdrodb/l0/configs/{RD_80 → RD80}/raw_data_format.yml +48 -48
- disdrodb/l0/l0_reader.py +216 -340
- disdrodb/l0/l0a_processing.py +237 -208
- disdrodb/l0/l0b_nc_processing.py +227 -80
- disdrodb/l0/l0b_processing.py +93 -173
- disdrodb/l0/l0c_processing.py +627 -0
- disdrodb/l0/readers/{ARM → LPM/ARM}/ARM_LPM.py +36 -58
- disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +226 -0
- disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +185 -0
- disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +183 -0
- disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +179 -0
- disdrodb/l0/readers/{UK → LPM/UK}/DIVEN.py +14 -35
- disdrodb/l0/readers/PARSIVEL/AUSTRALIA/MELBOURNE_2007_PARSIVEL.py +157 -0
- disdrodb/l0/readers/PARSIVEL/CHINA/CHONGQING.py +113 -0
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/ARCTIC_2021.py +40 -57
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/COMMON_2011.py +37 -54
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/DAVOS_2009_2011.py +34 -51
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_2009.py +34 -51
- disdrodb/l0/readers/{EPFL/PARADISO_2014.py → PARSIVEL/EPFL/EPFL_ROOF_2008.py} +38 -50
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2010.py +105 -0
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_ROOF_2011.py +34 -51
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/EPFL_ROOF_2012.py +33 -51
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GENEPI_2007.py +25 -44
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GRAND_ST_BERNARD_2007.py +25 -44
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/GRAND_ST_BERNARD_2007_2.py +25 -44
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/HPICONET_2010.py +34 -51
- disdrodb/l0/readers/{EPFL/EPFL_ROOF_2010.py → PARSIVEL/EPFL/HYMEX_LTE_SOP2.py} +37 -50
- disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP3.py +111 -0
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/HYMEX_LTE_SOP4.py +36 -54
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/LOCARNO_2018.py +34 -52
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/LOCARNO_2019.py +38 -56
- disdrodb/l0/readers/PARSIVEL/EPFL/PARADISO_2014.py +105 -0
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/PARSIVEL_2007.py +27 -45
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/PLATO_2019.py +24 -44
- disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019.py +140 -0
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/RACLETS_2019_WJF.py +41 -59
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/RIETHOLZBACH_2011.py +34 -51
- disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2017.py +117 -0
- disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2019.py +137 -0
- disdrodb/l0/readers/{EPFL → PARSIVEL/EPFL}/UNIL_2022.py +42 -55
- disdrodb/l0/readers/PARSIVEL/GPM/IFLOODS.py +104 -0
- disdrodb/l0/readers/{GPM → PARSIVEL/GPM}/LPVEX.py +29 -48
- disdrodb/l0/readers/PARSIVEL/GPM/MC3E.py +184 -0
- disdrodb/l0/readers/PARSIVEL/NCAR/CCOPE_2015.py +113 -0
- disdrodb/l0/readers/{NCAR/VORTEX_SE_2016_P1.py → PARSIVEL/NCAR/OWLES_MIPS.py} +46 -72
- disdrodb/l0/readers/PARSIVEL/NCAR/PECAN_MOBILE.py +125 -0
- disdrodb/l0/readers/{NCAR/OWLES_MIPS.py → PARSIVEL/NCAR/PLOWS_MIPS.py} +45 -64
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2009.py +114 -0
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +176 -0
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +183 -0
- disdrodb/l0/readers/{ARM/ARM_LD.py → PARSIVEL2/ARM/ARM_PARSIVEL2.py} +27 -50
- disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +163 -0
- disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +163 -0
- disdrodb/l0/readers/{DENMARK → PARSIVEL2/DENMARK}/EROSION_nc.py +14 -35
- disdrodb/l0/readers/PARSIVEL2/FRANCE/SIRTA_PARSIVEL2.py +119 -0
- disdrodb/l0/readers/PARSIVEL2/GPM/GCPEX.py +104 -0
- disdrodb/l0/readers/PARSIVEL2/GPM/NSSTC.py +176 -0
- disdrodb/l0/readers/PARSIVEL2/ITALY/GID_PARSIVEL2.py +32 -0
- disdrodb/l0/readers/PARSIVEL2/MEXICO/OH_IIUNAM_nc.py +56 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_FP3.py +120 -0
- disdrodb/l0/readers/{NCAR → PARSIVEL2/NCAR}/PECAN_MIPS.py +45 -64
- disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +181 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +160 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +160 -0
- disdrodb/l0/readers/{NCAR/PLOWS_MIPS.py → PARSIVEL2/NCAR/VORTEX_SE_2016_P1.py} +49 -66
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +118 -0
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +152 -0
- disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT.py +166 -0
- disdrodb/l0/readers/{NCAR/RELAMPAGO_RD80.py → RD80/BRAZIL/CHUVA_RD80.py} +36 -60
- disdrodb/l0/readers/{BRAZIL → RD80/BRAZIL}/GOAMAZON_RD80.py +36 -55
- disdrodb/l0/readers/{NCAR → RD80/NCAR}/CINDY_2011_RD80.py +35 -54
- disdrodb/l0/readers/{BRAZIL/CHUVA_RD80.py → RD80/NCAR/RELAMPAGO_RD80.py} +40 -54
- disdrodb/l0/readers/template_reader_raw_netcdf_data.py +62 -0
- disdrodb/l0/readers/{reader_template.py → template_reader_raw_text_data.py} +20 -44
- disdrodb/l0/routines.py +885 -581
- disdrodb/l0/standards.py +72 -236
- disdrodb/l0/template_tools.py +104 -109
- disdrodb/l1/__init__.py +17 -0
- disdrodb/l1/beard_model.py +716 -0
- disdrodb/l1/encoding_attrs.py +620 -0
- disdrodb/l1/fall_velocity.py +260 -0
- disdrodb/l1/filters.py +192 -0
- disdrodb/l1/processing.py +200 -0
- disdrodb/l1/resampling.py +236 -0
- disdrodb/l1/routines.py +357 -0
- disdrodb/l1_env/__init__.py +17 -0
- disdrodb/l1_env/routines.py +38 -0
- disdrodb/l2/__init__.py +17 -0
- disdrodb/l2/empirical_dsd.py +1735 -0
- disdrodb/l2/event.py +388 -0
- disdrodb/l2/processing.py +519 -0
- disdrodb/l2/processing_options.py +213 -0
- disdrodb/l2/routines.py +868 -0
- disdrodb/metadata/__init__.py +9 -2
- disdrodb/metadata/checks.py +165 -118
- disdrodb/metadata/download.py +81 -0
- disdrodb/metadata/geolocation.py +146 -0
- disdrodb/metadata/info.py +20 -13
- disdrodb/metadata/manipulation.py +1 -1
- disdrodb/metadata/reader.py +59 -8
- disdrodb/metadata/search.py +77 -144
- disdrodb/metadata/standards.py +7 -8
- disdrodb/metadata/writer.py +8 -14
- disdrodb/psd/__init__.py +38 -0
- disdrodb/psd/fitting.py +2146 -0
- disdrodb/psd/models.py +774 -0
- disdrodb/routines.py +1176 -0
- disdrodb/scattering/__init__.py +28 -0
- disdrodb/scattering/axis_ratio.py +344 -0
- disdrodb/scattering/routines.py +456 -0
- disdrodb/utils/__init__.py +17 -0
- disdrodb/utils/attrs.py +208 -0
- disdrodb/utils/cli.py +269 -0
- disdrodb/utils/compression.py +60 -42
- disdrodb/utils/dask.py +62 -0
- disdrodb/utils/decorators.py +110 -0
- disdrodb/utils/directories.py +107 -46
- disdrodb/utils/encoding.py +127 -0
- disdrodb/utils/list.py +29 -0
- disdrodb/utils/logger.py +168 -46
- disdrodb/utils/time.py +657 -0
- disdrodb/utils/warnings.py +30 -0
- disdrodb/utils/writer.py +57 -0
- disdrodb/utils/xarray.py +138 -47
- disdrodb/utils/yaml.py +0 -1
- disdrodb/viz/__init__.py +17 -0
- disdrodb/viz/plots.py +17 -0
- disdrodb-0.1.0.dist-info/METADATA +321 -0
- disdrodb-0.1.0.dist-info/RECORD +216 -0
- {disdrodb-0.0.21.dist-info → disdrodb-0.1.0.dist-info}/WHEEL +1 -1
- disdrodb-0.1.0.dist-info/entry_points.txt +30 -0
- disdrodb/data_transfer/scripts/disdrodb_download_archive.py +0 -53
- disdrodb/data_transfer/scripts/disdrodb_upload_archive.py +0 -57
- disdrodb/l0/configs/OTT_Parsivel/l0a_encodings.yml +0 -32
- disdrodb/l0/configs/OTT_Parsivel2/l0a_encodings.yml +0 -39
- disdrodb/l0/configs/RD_80/l0a_encodings.yml +0 -16
- disdrodb/l0/configs/RD_80/l0b_encodings.yml +0 -135
- disdrodb/l0/configs/Thies_LPM/l0a_encodings.yml +0 -80
- disdrodb/l0/io.py +0 -257
- disdrodb/l0/l0_processing.py +0 -1091
- disdrodb/l0/readers/AUSTRALIA/MELBOURNE_2007_OTT.py +0 -178
- disdrodb/l0/readers/AUSTRALIA/MELBOURNE_2007_THIES.py +0 -247
- disdrodb/l0/readers/BRAZIL/CHUVA_LPM.py +0 -204
- disdrodb/l0/readers/BRAZIL/CHUVA_OTT.py +0 -183
- disdrodb/l0/readers/BRAZIL/GOAMAZON_LPM.py +0 -204
- disdrodb/l0/readers/BRAZIL/GOAMAZON_OTT.py +0 -183
- disdrodb/l0/readers/CHINA/CHONGQING.py +0 -131
- disdrodb/l0/readers/EPFL/EPFL_ROOF_2008.py +0 -128
- disdrodb/l0/readers/EPFL/HYMEX_LTE_SOP2.py +0 -127
- disdrodb/l0/readers/EPFL/HYMEX_LTE_SOP3.py +0 -129
- disdrodb/l0/readers/EPFL/RACLETS_2019.py +0 -158
- disdrodb/l0/readers/EPFL/SAMOYLOV_2017.py +0 -136
- disdrodb/l0/readers/EPFL/SAMOYLOV_2019.py +0 -158
- disdrodb/l0/readers/FRANCE/SIRTA_OTT2.py +0 -138
- disdrodb/l0/readers/GPM/GCPEX.py +0 -123
- disdrodb/l0/readers/GPM/IFLOODS.py +0 -123
- disdrodb/l0/readers/GPM/MC3E.py +0 -123
- disdrodb/l0/readers/GPM/NSSTC.py +0 -164
- disdrodb/l0/readers/ITALY/GID.py +0 -199
- disdrodb/l0/readers/MEXICO/OH_IIUNAM_nc.py +0 -92
- disdrodb/l0/readers/NCAR/CCOPE_2015.py +0 -133
- disdrodb/l0/readers/NCAR/PECAN_FP3.py +0 -137
- disdrodb/l0/readers/NCAR/PECAN_MOBILE.py +0 -144
- disdrodb/l0/readers/NCAR/RELAMPAGO_OTT.py +0 -195
- disdrodb/l0/readers/NCAR/SNOWIE_PJ.py +0 -172
- disdrodb/l0/readers/NCAR/SNOWIE_SB.py +0 -179
- disdrodb/l0/readers/NCAR/VORTEX2_2009.py +0 -133
- disdrodb/l0/readers/NCAR/VORTEX2_2010.py +0 -188
- disdrodb/l0/readers/NCAR/VORTEX2_2010_UF.py +0 -191
- disdrodb/l0/readers/NCAR/VORTEX_SE_2016_P2.py +0 -135
- disdrodb/l0/readers/NCAR/VORTEX_SE_2016_PIPS.py +0 -170
- disdrodb/l0/readers/NETHERLANDS/DELFT.py +0 -187
- disdrodb/l0/readers/SPAIN/SBEGUERIA.py +0 -179
- disdrodb/l0/scripts/disdrodb_run_l0b_concat.py +0 -93
- disdrodb/l0/scripts/disdrodb_run_l0b_concat_station.py +0 -85
- disdrodb/utils/netcdf.py +0 -452
- disdrodb/utils/scripts.py +0 -102
- disdrodb-0.0.21.dist-info/AUTHORS.md +0 -18
- disdrodb-0.0.21.dist-info/METADATA +0 -186
- disdrodb-0.0.21.dist-info/RECORD +0 -168
- disdrodb-0.0.21.dist-info/entry_points.txt +0 -15
- /disdrodb/l0/configs/{RD_80 → RD80}/bins_velocity.yml +0 -0
- /disdrodb/l0/manuals/{Thies_LPM.pdf → LPM.pdf} +0 -0
- /disdrodb/l0/manuals/{ODM_470.pdf → ODM470.pdf} +0 -0
- /disdrodb/l0/manuals/{OTT_Parsivel.pdf → PARSIVEL.pdf} +0 -0
- /disdrodb/l0/manuals/{OTT_Parsivel2.pdf → PARSIVEL2.pdf} +0 -0
- /disdrodb/l0/manuals/{PWS_100.pdf → PWS100.pdf} +0 -0
- /disdrodb/l0/manuals/{RD_80.pdf → RD80.pdf} +0 -0
- {disdrodb-0.0.21.dist-info → disdrodb-0.1.0.dist-info/licenses}/LICENSE +0 -0
- {disdrodb-0.0.21.dist-info → disdrodb-0.1.0.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
|
+
)
|