disdrodb 0.2.0__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- disdrodb/__init__.py +1 -1
- disdrodb/_config.py +1 -3
- disdrodb/_version.py +2 -2
- disdrodb/accessor/__init__.py +1 -1
- disdrodb/accessor/methods.py +18 -11
- disdrodb/api/checks.py +2 -4
- disdrodb/api/configs.py +1 -3
- disdrodb/api/create_directories.py +4 -6
- disdrodb/api/info.py +1 -3
- disdrodb/api/io.py +15 -9
- disdrodb/api/path.py +1 -3
- disdrodb/cli/disdrodb_check_metadata_archive.py +2 -2
- disdrodb/cli/disdrodb_check_products_options.py +44 -0
- disdrodb/cli/disdrodb_create_summary.py +48 -22
- disdrodb/cli/disdrodb_create_summary_station.py +39 -18
- disdrodb/cli/disdrodb_data_archive_directory.py +1 -3
- disdrodb/cli/disdrodb_download_archive.py +45 -24
- disdrodb/cli/disdrodb_download_metadata_archive.py +27 -16
- disdrodb/cli/disdrodb_download_station.py +56 -26
- disdrodb/cli/disdrodb_initialize_station.py +40 -20
- disdrodb/cli/disdrodb_metadata_archive_directory.py +1 -3
- disdrodb/cli/disdrodb_open_data_archive.py +16 -11
- disdrodb/cli/disdrodb_open_logs_directory.py +29 -18
- disdrodb/cli/disdrodb_open_metadata_archive.py +25 -11
- disdrodb/cli/disdrodb_open_metadata_directory.py +32 -20
- disdrodb/cli/disdrodb_open_product_directory.py +38 -21
- disdrodb/cli/disdrodb_open_readers_directory.py +1 -3
- disdrodb/cli/disdrodb_run.py +189 -0
- disdrodb/cli/disdrodb_run_l0.py +55 -64
- disdrodb/cli/disdrodb_run_l0_station.py +47 -52
- disdrodb/cli/disdrodb_run_l0a.py +47 -45
- disdrodb/cli/disdrodb_run_l0a_station.py +38 -37
- disdrodb/cli/disdrodb_run_l0b.py +45 -45
- disdrodb/cli/disdrodb_run_l0b_station.py +37 -36
- disdrodb/cli/disdrodb_run_l0c.py +50 -47
- disdrodb/cli/disdrodb_run_l0c_station.py +41 -38
- disdrodb/cli/disdrodb_run_l1.py +49 -45
- disdrodb/cli/disdrodb_run_l1_station.py +40 -37
- disdrodb/cli/disdrodb_run_l2e.py +50 -45
- disdrodb/cli/disdrodb_run_l2e_station.py +41 -37
- disdrodb/cli/disdrodb_run_l2m.py +49 -45
- disdrodb/cli/disdrodb_run_l2m_station.py +40 -37
- disdrodb/cli/disdrodb_run_station.py +184 -0
- disdrodb/cli/disdrodb_upload_archive.py +45 -35
- disdrodb/cli/disdrodb_upload_station.py +39 -32
- disdrodb/configs.py +13 -8
- disdrodb/constants.py +4 -2
- disdrodb/data_transfer/__init__.py +1 -3
- disdrodb/data_transfer/download_data.py +38 -54
- disdrodb/data_transfer/upload_data.py +1 -3
- disdrodb/data_transfer/zenodo.py +1 -3
- disdrodb/docs.py +1 -3
- disdrodb/etc/configs/attributes.yaml +52 -2
- disdrodb/etc/configs/encodings.yaml +45 -1
- disdrodb/etc/products/L0C/ODM470/global.yaml +5 -0
- disdrodb/etc/products/L0C/global.yaml +5 -0
- disdrodb/etc/products/L1/ODM470/global.yaml +6 -0
- disdrodb/etc/products/L1/global.yaml +1 -14
- disdrodb/etc/products/L2E/LPM/1MIN.yaml +1 -0
- disdrodb/etc/products/L2E/LPM/global.yaml +36 -0
- disdrodb/etc/products/L2E/LPM_V0/1MIN.yaml +1 -0
- disdrodb/etc/products/L2E/LPM_V0/global.yaml +36 -0
- disdrodb/etc/products/L2E/ODM470/1MIN.yaml +1 -0
- disdrodb/etc/products/L2E/ODM470/global.yaml +36 -0
- disdrodb/etc/products/L2E/PARSIVEL/1MIN.yaml +1 -0
- disdrodb/etc/products/L2E/PARSIVEL/global.yaml +36 -0
- disdrodb/etc/products/L2E/PARSIVEL2/1MIN.yaml +1 -0
- disdrodb/etc/products/L2E/PARSIVEL2/global.yaml +36 -0
- disdrodb/etc/products/L2E/PWS100/1MIN.yaml +1 -0
- disdrodb/etc/products/L2E/PWS100/global.yaml +36 -0
- disdrodb/etc/products/L2E/RD80/1MIN.yaml +19 -0
- disdrodb/etc/products/L2E/SWS250/1MIN.yaml +19 -0
- disdrodb/etc/products/L2E/global.yaml +17 -3
- disdrodb/etc/products/L2M/global.yaml +1 -1
- disdrodb/fall_velocity/__init__.py +46 -0
- disdrodb/fall_velocity/graupel.py +483 -0
- disdrodb/fall_velocity/hail.py +287 -0
- disdrodb/{l1/fall_velocity.py → fall_velocity/rain.py} +265 -50
- disdrodb/issue/__init__.py +1 -3
- disdrodb/issue/checks.py +3 -5
- disdrodb/issue/reader.py +1 -3
- disdrodb/issue/writer.py +1 -3
- disdrodb/l0/__init__.py +1 -1
- disdrodb/l0/check_configs.py +26 -17
- disdrodb/l0/check_standards.py +1 -3
- disdrodb/l0/configs/LPM/l0a_encodings.yml +0 -1
- disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +0 -4
- disdrodb/l0/configs/LPM/l0b_encodings.yml +9 -9
- disdrodb/l0/configs/LPM/raw_data_format.yml +11 -11
- disdrodb/l0/configs/LPM_V0/bins_diameter.yml +103 -0
- disdrodb/l0/configs/LPM_V0/bins_velocity.yml +103 -0
- disdrodb/l0/configs/LPM_V0/l0a_encodings.yml +45 -0
- disdrodb/l0/configs/LPM_V0/l0b_cf_attrs.yml +180 -0
- disdrodb/l0/configs/LPM_V0/l0b_encodings.yml +410 -0
- disdrodb/l0/configs/LPM_V0/raw_data_format.yml +474 -0
- disdrodb/l0/configs/ODM470/bins_diameter.yml +643 -0
- disdrodb/l0/configs/ODM470/bins_velocity.yml +0 -0
- disdrodb/l0/configs/ODM470/l0a_encodings.yml +11 -0
- disdrodb/l0/configs/ODM470/l0b_cf_attrs.yml +46 -0
- disdrodb/l0/configs/ODM470/l0b_encodings.yml +106 -0
- disdrodb/l0/configs/ODM470/raw_data_format.yml +111 -0
- disdrodb/l0/configs/PARSIVEL/l0b_cf_attrs.yml +1 -1
- disdrodb/l0/configs/PARSIVEL/raw_data_format.yml +8 -8
- disdrodb/l0/configs/PARSIVEL2/raw_data_format.yml +9 -9
- disdrodb/l0/l0_reader.py +1 -3
- disdrodb/l0/l0a_processing.py +7 -5
- disdrodb/l0/l0b_nc_processing.py +2 -4
- disdrodb/l0/l0b_processing.py +27 -22
- disdrodb/l0/l0c_processing.py +37 -11
- disdrodb/l0/manuals/LPM_V0.pdf +0 -0
- disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +1 -1
- disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +1 -1
- disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +1 -1
- disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +1 -1
- disdrodb/l0/readers/LPM/GERMANY/DWD.py +190 -12
- disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +63 -14
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_PI.py +279 -0
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_T.py +279 -0
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_W.py +3 -5
- disdrodb/l0/readers/LPM/KIT/CHWALA.py +1 -3
- disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_LPM_NC.py +1 -1
- disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_RWANDA_LPM_NC.py +103 -0
- disdrodb/l0/readers/LPM/NORWAY/HAUKELISETER_LPM.py +214 -0
- disdrodb/l0/readers/LPM/NORWAY/NMBU_LPM.py +206 -0
- disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +1 -3
- disdrodb/l0/readers/LPM/SLOVENIA/UL.py +1 -3
- disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +1 -3
- disdrodb/l0/readers/LPM/UK/DIVEN.py +1 -1
- disdrodb/l0/readers/LPM/UK/WITHWORTH_LPM.py +217 -0
- disdrodb/l0/readers/LPM/USA/CHARLESTON.py +227 -0
- disdrodb/l0/readers/{LPM → LPM_V0}/BELGIUM/ULIEGE.py +34 -52
- disdrodb/l0/readers/LPM_V0/ITALY/GID_LPM_V0.py +240 -0
- disdrodb/l0/readers/ODM470/OCEAN/OCEANRAIN.py +123 -0
- disdrodb/l0/readers/PARSIVEL/AUSTRALIA/MELBOURNE_2007_PARSIVEL.py +1 -1
- disdrodb/l0/readers/PARSIVEL/BASQUECOUNTRY/EUSKALMET_OTT.py +1 -1
- disdrodb/l0/readers/PARSIVEL/CHINA/CHONGQING.py +1 -3
- disdrodb/l0/readers/PARSIVEL/EPFL/ARCTIC_2021.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/COMMON_2011.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/DAVOS_2009_2011.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_2009.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2008.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2010.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2011.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2012.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/GENEPI_2007.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/GRAND_ST_BERNARD_2007.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/GRAND_ST_BERNARD_2007_2.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/HPICONET_2010.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP2.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP3.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP4.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/LOCARNO_2018.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/LOCARNO_2019.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/PARADISO_2014.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/PARSIVEL_2007.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/PLATO_2019.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019_WJF.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/RIETHOLZBACH_2011.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2017.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2019.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/UNIL_2022.py +1 -1
- disdrodb/l0/readers/PARSIVEL/JAPAN/JMA.py +1 -1
- disdrodb/l0/readers/PARSIVEL/KOREA/ICEPOP_MSC.py +159 -0
- disdrodb/l0/readers/PARSIVEL/NASA/LPVEX.py +26 -14
- disdrodb/l0/readers/PARSIVEL/NASA/MC3E.py +2 -2
- disdrodb/l0/readers/PARSIVEL/NCAR/CCOPE_2015.py +1 -1
- disdrodb/l0/readers/PARSIVEL/NCAR/OWLES_MIPS.py +1 -1
- disdrodb/l0/readers/PARSIVEL/NCAR/PECAN_MOBILE.py +1 -1
- disdrodb/l0/readers/PARSIVEL/NCAR/PLOWS_MIPS.py +1 -1
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2009.py +1 -1
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010.py +1 -3
- disdrodb/l0/readers/PARSIVEL/NCAR/VORTEX2_2010_UF.py +1 -3
- disdrodb/l0/readers/PARSIVEL/SLOVENIA/UL.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/ARM/ARM_PARSIVEL2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/BASQUECOUNTRY/EUSKALMET_OTT2.py +2 -2
- disdrodb/l0/readers/PARSIVEL2/BELGIUM/ILVO.py +1 -3
- disdrodb/l0/readers/PARSIVEL2/BRAZIL/CHUVA_PARSIVEL2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/BRAZIL/GOAMAZON_PARSIVEL2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/CANADA/UQAM_NC.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/DENMARK/DTU.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_nc.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_raw.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/FRANCE/ENPC_PARSIVEL2.py +1 -3
- disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/FRANCE/SIRTA_PARSIVEL2.py +1 -3
- disdrodb/l0/readers/PARSIVEL2/GREECE/NOA.py +4 -3
- disdrodb/l0/readers/PARSIVEL2/ITALY/GID_PARSIVEL2.py +1 -3
- disdrodb/l0/readers/PARSIVEL2/ITALY/HYDROX.py +5 -3
- disdrodb/l0/readers/PARSIVEL2/JAPAN/PRECIP.py +155 -0
- disdrodb/l0/readers/PARSIVEL2/KIT/BURKINA_FASO.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/KIT/TEAMX.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/KOREA/ICEPOP_MSC.py +161 -0
- disdrodb/l0/readers/PARSIVEL2/{NASA/GCPEX.py → KOREA/ICEPOP_UCLM.py} +51 -31
- disdrodb/l0/readers/PARSIVEL2/MEXICO/OH_IIUNAM_nc.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/MPI/BCO_PARSIVEL2.py +15 -8
- disdrodb/l0/readers/PARSIVEL2/MPI/BOWTIE.py +9 -4
- disdrodb/l0/readers/PARSIVEL2/NASA/APU.py +31 -6
- disdrodb/l0/readers/PARSIVEL2/NASA/NSSTC.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_FP3.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/PECAN_MIPS.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_MIPS.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_PIPS.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +2 -2
- disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_PJ.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/SNOWIE_SB.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P1.py +1 -3
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT_NC.py +1 -1
- disdrodb/l0/readers/{PARSIVEL/NASA/PIERS.py → PARSIVEL2/NORWAY/UIB.py} +65 -31
- disdrodb/l0/readers/PARSIVEL2/PHILIPPINES/PAGASA.py +7 -6
- disdrodb/l0/readers/PARSIVEL2/SPAIN/CENER.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/SPAIN/CR1000DL.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/SPAIN/GRANADA.py +1 -3
- disdrodb/l0/readers/PARSIVEL2/SPAIN/LIAISE.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/SWEDEN/SMHI.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/USA/CSU.py +138 -0
- disdrodb/l0/readers/PARSIVEL2/USA/CW3E.py +49 -22
- disdrodb/l0/readers/PWS100/AUSTRIA/HOAL.py +1 -3
- disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100.py +1 -3
- disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100_SIRTA.py +1 -1
- disdrodb/l0/readers/{PARSIVEL/NASA/IFLOODS.py → RD80/BRAZIL/ATTO_RD80.py} +50 -36
- disdrodb/l0/readers/RD80/BRAZIL/CHUVA_RD80.py +1 -3
- disdrodb/l0/readers/RD80/BRAZIL/GOAMAZON_RD80.py +1 -3
- disdrodb/l0/readers/RD80/NCAR/CINDY_2011_RD80.py +1 -3
- disdrodb/l0/readers/RD80/NCAR/RELAMPAGO_RD80.py +1 -3
- disdrodb/l0/readers/RD80/NOAA/PSL_RD80.py +1 -3
- disdrodb/l0/readers/{SW250 → SWS250}/BELGIUM/KMI.py +2 -4
- disdrodb/l0/readers/template_reader_raw_netcdf_data.py +1 -3
- disdrodb/l0/readers/template_reader_raw_text_data.py +1 -3
- disdrodb/l0/standards.py +4 -5
- disdrodb/l0/template_tools.py +1 -3
- disdrodb/l1/__init__.py +1 -1
- disdrodb/l1/classification.py +913 -0
- disdrodb/l1/processing.py +36 -106
- disdrodb/l1/resampling.py +8 -3
- disdrodb/l1_env/__init__.py +1 -1
- disdrodb/l1_env/routines.py +6 -6
- disdrodb/l2/__init__.py +1 -1
- disdrodb/l2/empirical_dsd.py +61 -31
- disdrodb/l2/processing.py +327 -62
- disdrodb/metadata/checks.py +1 -3
- disdrodb/metadata/download.py +4 -4
- disdrodb/metadata/geolocation.py +1 -3
- disdrodb/metadata/info.py +1 -3
- disdrodb/metadata/manipulation.py +1 -3
- disdrodb/metadata/reader.py +1 -3
- disdrodb/metadata/search.py +1 -3
- disdrodb/metadata/standards.py +1 -3
- disdrodb/metadata/writer.py +1 -3
- disdrodb/physics/__init__.py +17 -0
- disdrodb/physics/atmosphere.py +272 -0
- disdrodb/physics/water.py +130 -0
- disdrodb/physics/wrappers.py +62 -0
- disdrodb/psd/__init__.py +1 -1
- disdrodb/psd/fitting.py +22 -9
- disdrodb/psd/models.py +1 -1
- disdrodb/routines/__init__.py +5 -1
- disdrodb/routines/l0.py +28 -18
- disdrodb/routines/l1.py +8 -6
- disdrodb/routines/l2.py +8 -4
- disdrodb/routines/options.py +116 -71
- disdrodb/routines/options_validation.py +728 -0
- disdrodb/routines/wrappers.py +431 -11
- disdrodb/scattering/__init__.py +1 -1
- disdrodb/scattering/axis_ratio.py +9 -6
- disdrodb/scattering/permittivity.py +8 -8
- disdrodb/scattering/routines.py +32 -14
- disdrodb/summary/__init__.py +1 -1
- disdrodb/summary/routines.py +146 -86
- disdrodb/utils/__init__.py +1 -1
- disdrodb/utils/archiving.py +16 -9
- disdrodb/utils/attrs.py +4 -3
- disdrodb/utils/cli.py +8 -10
- disdrodb/utils/compression.py +13 -13
- disdrodb/utils/dask.py +33 -14
- disdrodb/utils/dataframe.py +1 -3
- disdrodb/utils/decorators.py +1 -3
- disdrodb/utils/dict.py +1 -1
- disdrodb/utils/directories.py +3 -5
- disdrodb/utils/encoding.py +2 -4
- disdrodb/utils/event.py +1 -1
- disdrodb/utils/list.py +1 -3
- disdrodb/utils/logger.py +1 -3
- disdrodb/utils/manipulations.py +182 -6
- disdrodb/utils/pydantic.py +80 -0
- disdrodb/utils/routines.py +1 -3
- disdrodb/utils/subsetting.py +1 -1
- disdrodb/utils/time.py +3 -2
- disdrodb/utils/warnings.py +1 -3
- disdrodb/utils/writer.py +1 -3
- disdrodb/utils/xarray.py +30 -3
- disdrodb/utils/yaml.py +1 -3
- disdrodb/viz/__init__.py +1 -1
- disdrodb/viz/plots.py +197 -21
- {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/METADATA +2 -2
- disdrodb-0.3.0.dist-info/RECORD +358 -0
- {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/entry_points.txt +3 -0
- disdrodb/etc/products/L1/1MIN.yaml +0 -13
- disdrodb/etc/products/L1/LPM/1MIN.yaml +0 -13
- disdrodb/etc/products/L1/PARSIVEL/1MIN.yaml +0 -13
- disdrodb/etc/products/L1/PARSIVEL2/1MIN.yaml +0 -13
- disdrodb/etc/products/L1/PWS100/1MIN.yaml +0 -13
- disdrodb/etc/products/L1/RD80/1MIN.yaml +0 -13
- disdrodb/etc/products/L1/SWS250/1MIN.yaml +0 -13
- disdrodb/etc/products/L2M/10MIN.yaml +0 -12
- disdrodb/l1/beard_model.py +0 -618
- disdrodb/l1/filters.py +0 -203
- disdrodb-0.2.0.dist-info/RECORD +0 -312
- {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/WHEEL +0 -0
- {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/licenses/LICENSE +0 -0
- {disdrodb-0.2.0.dist-info → disdrodb-0.3.0.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
1
|
# -----------------------------------------------------------------------------.
|
|
4
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
5
3
|
#
|
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -47,29 +45,61 @@ def disdrodb_download_station(
|
|
|
47
45
|
metadata_archive_dir: Optional[str] = None,
|
|
48
46
|
force: bool = False,
|
|
49
47
|
):
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
48
|
+
"""Download raw data of a single station from the DISDRODB Decentralized Data Archive.
|
|
49
|
+
|
|
50
|
+
It downloads station raw data files and stores them in the local DISDRODB Data Archive.
|
|
51
|
+
The data are organized by data_source, campaign_name, and station_name.
|
|
52
|
+
|
|
53
|
+
For stations data hosted on FTP/webservers, recursive calls of
|
|
54
|
+
this command allows to fetch and download just the new data when becomes available.
|
|
55
|
+
|
|
56
|
+
For stations data hosted on data repository such as Zenodo in ZIP archives,
|
|
57
|
+
if a new version becomes available, you must set force=True to download the new version.
|
|
58
|
+
|
|
59
|
+
\b
|
|
60
|
+
Station Specification:
|
|
61
|
+
Requires exact specification of data_source, campaign_name, and station_name.
|
|
62
|
+
All three parameters must be provided and are case-sensitive (UPPER CASE required).
|
|
63
|
+
|
|
64
|
+
\b
|
|
65
|
+
Download Behavior:
|
|
66
|
+
For webserver/FTP-hosted data:
|
|
67
|
+
- Incremental downloads: Fetch only new files when they become available
|
|
68
|
+
- Existing files on disk are skipped unless --force is used
|
|
69
|
+
|
|
70
|
+
For repository-hosted data (e.g., Zenodo):
|
|
71
|
+
- Use --force to download new versions when available
|
|
72
|
+
- Without --force, download is skipped if data already exists locally
|
|
73
|
+
|
|
74
|
+
\b
|
|
75
|
+
Download Options:
|
|
76
|
+
--force: Removes existing raw data files and forces complete re-download (default: False)
|
|
77
|
+
WARNING: All existing station data will be deleted before re-downloading.
|
|
78
|
+
|
|
79
|
+
\b
|
|
80
|
+
Archive Directories:
|
|
81
|
+
--data_archive_dir: Custom path to DISDRODB data archive
|
|
82
|
+
--metadata_archive_dir: Custom path to DISDRODB metadata archive
|
|
83
|
+
If not specified, paths from the active DISDRODB configuration are used
|
|
84
|
+
|
|
85
|
+
\b
|
|
86
|
+
Examples:
|
|
87
|
+
# Download data for a single station
|
|
88
|
+
disdrodb_download_station EPFL HYMEX_LTE_SOP2 10
|
|
89
|
+
|
|
90
|
+
# Force re-download of existing data
|
|
91
|
+
disdrodb_download_station EPFL HYMEX_LTE_SOP2 10 --force True
|
|
92
|
+
|
|
93
|
+
# Download with custom archive directory
|
|
94
|
+
disdrodb_download_station NASA IFLOODS apu01 --data_archive_dir /path/to/DISDRODB
|
|
95
|
+
|
|
96
|
+
\b
|
|
97
|
+
Important Notes:
|
|
98
|
+
- Data source, campaign, and station names must be UPPER CASE
|
|
99
|
+
- All three station identifiers are required (no wildcards)
|
|
100
|
+
- Downloaded files are placed in <data_archive_dir>/Raw/<data_source>/<campaign_name>/<station_name>/
|
|
101
|
+
- Use --force with caution as it will remove data on disk before starting to re-download them.
|
|
102
|
+
""" # noqa: D301
|
|
73
103
|
from disdrodb.data_transfer.download_data import download_station
|
|
74
104
|
|
|
75
105
|
data_archive_dir = parse_archive_dir(data_archive_dir)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# -----------------------------------------------------------------------------.
|
|
2
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
3
3
|
#
|
|
4
4
|
# This program is free software: you can redistribute it and/or modify
|
|
5
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -46,25 +46,45 @@ def disdrodb_initialize_station(
|
|
|
46
46
|
data_archive_dir: Optional[str] = None,
|
|
47
47
|
metadata_archive_dir: Optional[str] = None,
|
|
48
48
|
):
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
49
|
+
"""Initialize the DISDRODB directory structure for a new station.
|
|
50
|
+
|
|
51
|
+
Creates the required directory structure and default YAML configuration files
|
|
52
|
+
for a new station in both the DISDRODB Data and Metadata archives.
|
|
53
|
+
|
|
54
|
+
\b
|
|
55
|
+
Station Specification:
|
|
56
|
+
Requires exact specification of data_source, campaign_name, and station_name.
|
|
57
|
+
All three parameters must be provided and are case-sensitive (UPPER CASE required).
|
|
58
|
+
|
|
59
|
+
\b
|
|
60
|
+
Created Structure:
|
|
61
|
+
Data Archive:
|
|
62
|
+
- Data directory for the station where to place the raw data files
|
|
63
|
+
|
|
64
|
+
Metadata Archive:
|
|
65
|
+
- Station metadata YAML file (template)
|
|
66
|
+
- Station issue YAML file (template)
|
|
67
|
+
|
|
68
|
+
\b
|
|
69
|
+
Archive Directories:
|
|
70
|
+
--data_archive_dir: Custom path to DISDRODB data archive
|
|
71
|
+
--metadata_archive_dir: Custom path to DISDRODB metadata archive
|
|
72
|
+
If not specified, paths from the active DISDRODB configuration are used
|
|
73
|
+
|
|
74
|
+
\b
|
|
75
|
+
Examples:
|
|
76
|
+
# Initialize a new station with default configuration
|
|
77
|
+
disdrodb_initialize_station DATA_SOURCE CAMPAIGN_NAME STATION_NAME
|
|
78
|
+
|
|
79
|
+
# Initialize with custom archive directories
|
|
80
|
+
disdrodb_initialize_station DATA_SOURCE CAMPAIGN_NAME STATION_NAME --data_archive_dir /path/to/DISDRODB
|
|
81
|
+
|
|
82
|
+
\b
|
|
83
|
+
Important Notes:
|
|
84
|
+
- Data source, campaign, and station names must be in UPPER CASE
|
|
85
|
+
- All three station identifiers are required (no wildcards)
|
|
86
|
+
- Creates template YAML files that need to be manually filled in
|
|
87
|
+
""" # noqa: D301
|
|
68
88
|
from disdrodb.api.create_directories import create_initial_station_structure
|
|
69
89
|
|
|
70
90
|
data_archive_dir = parse_archive_dir(data_archive_dir)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
1
|
# -----------------------------------------------------------------------------.
|
|
4
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
5
3
|
#
|
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
1
|
# -----------------------------------------------------------------------------.
|
|
4
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
5
3
|
#
|
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -36,14 +34,21 @@ sys.tracebacklimit = 0 # avoid full traceback error if occur
|
|
|
36
34
|
def disdrodb_open_data_archive(
|
|
37
35
|
data_archive_dir: Optional[str] = None,
|
|
38
36
|
):
|
|
39
|
-
"""Open the DISDRODB Data Archive.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
"""Open the DISDRODB Data Archive directory in the system file explorer.
|
|
38
|
+
|
|
39
|
+
\b
|
|
40
|
+
Archive Directory:
|
|
41
|
+
--data_archive_dir: Custom path to DISDRODB data archive
|
|
42
|
+
If not specified, the path from the active DISDRODB configuration is used
|
|
43
|
+
|
|
44
|
+
\b
|
|
45
|
+
Examples:
|
|
46
|
+
# Open the data archive from active configuration
|
|
47
|
+
disdrodb_open_data_archive
|
|
48
|
+
|
|
49
|
+
# Open a custom data archive directory
|
|
50
|
+
disdrodb_open_data_archive --data_archive_dir /path/to/DISDRODB
|
|
51
|
+
""" # noqa: D301
|
|
47
52
|
from disdrodb.api.io import open_data_archive
|
|
48
53
|
|
|
49
54
|
data_archive_dir = parse_archive_dir(data_archive_dir)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
1
|
# -----------------------------------------------------------------------------.
|
|
4
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
5
3
|
#
|
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -41,22 +39,35 @@ def disdrodb_open_logs_directory(
|
|
|
41
39
|
station_name: Optional[str] = None,
|
|
42
40
|
data_archive_dir: Optional[str] = None,
|
|
43
41
|
):
|
|
44
|
-
"""Open the DISDRODB Data Archive logs directory
|
|
42
|
+
"""Open the DISDRODB Data Archive station logs directory in the system file explorer.
|
|
43
|
+
|
|
44
|
+
It allows to easily browse processing logs and error reports.
|
|
45
|
+
|
|
46
|
+
\b
|
|
47
|
+
Station Specification:
|
|
48
|
+
Requires data_source and campaign_name (UPPER CASE required).
|
|
49
|
+
station_name is optional.
|
|
50
|
+
|
|
51
|
+
\b
|
|
52
|
+
Archive Directory:
|
|
53
|
+
--data_archive_dir: Custom path to DISDRODB data archive
|
|
54
|
+
If not specified, the path from the active DISDRODB configuration is used
|
|
55
|
+
|
|
56
|
+
\b
|
|
57
|
+
Examples:
|
|
58
|
+
# Open logs directory for a specific station
|
|
59
|
+
disdrodb_open_logs_directory EPFL HYMEX_LTE_SOP2 10
|
|
60
|
+
|
|
61
|
+
# Open logs directory for an entire campaign
|
|
62
|
+
disdrodb_open_logs_directory NASA IFLOODS
|
|
63
|
+
|
|
64
|
+
# Open with custom data archive directory
|
|
65
|
+
disdrodb_open_logs_directory EPFL HYMEX_LTE_SOP2 10 --data_archive_dir /path/to/DISDRODB
|
|
45
66
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
the name of the country (for campaigns or sensor networks within a single country).
|
|
51
|
-
Must be provided in UPPER CASE.
|
|
52
|
-
campaign_name : str
|
|
53
|
-
The name of the campaign. Must be provided in UPPER CASE.
|
|
54
|
-
station_name : str
|
|
55
|
-
The name of the station.
|
|
56
|
-
data_archive_dir : str, optional
|
|
57
|
-
The base directory of DISDRODB, expected in the format ``<...>/DISDRODB``.
|
|
58
|
-
If not specified, the path specified in the DISDRODB active configuration will be used.
|
|
59
|
-
"""
|
|
67
|
+
\b
|
|
68
|
+
Important Notes:
|
|
69
|
+
- Data source and campaign names must be in UPPER CASE
|
|
70
|
+
""" # noqa: D301
|
|
60
71
|
from disdrodb.api.io import open_logs_directory
|
|
61
72
|
|
|
62
73
|
data_archive_dir = parse_archive_dir(data_archive_dir)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
1
|
# -----------------------------------------------------------------------------.
|
|
4
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
5
3
|
#
|
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -36,14 +34,30 @@ sys.tracebacklimit = 0 # avoid full traceback error if occur
|
|
|
36
34
|
def disdrodb_open_metadata_archive(
|
|
37
35
|
metadata_archive_dir: Optional[str] = None,
|
|
38
36
|
):
|
|
39
|
-
"""Open the DISDRODB Metadata Archive.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
37
|
+
"""Open the DISDRODB Metadata Archive directory in the system file explorer.
|
|
38
|
+
|
|
39
|
+
Opens the metadata archive directory using the system's default file manager,
|
|
40
|
+
allowing you to browse station metadata files and YAML configurations.
|
|
41
|
+
|
|
42
|
+
\b
|
|
43
|
+
Archive Directory:
|
|
44
|
+
--metadata_archive_dir: Custom path to DISDRODB metadata archive
|
|
45
|
+
If not specified, the path from the active DISDRODB configuration is used
|
|
46
|
+
|
|
47
|
+
\b
|
|
48
|
+
Examples:
|
|
49
|
+
# Open the metadata archive from active configuration
|
|
50
|
+
disdrodb_open_metadata_archive
|
|
51
|
+
|
|
52
|
+
# Open a custom metadata archive directory
|
|
53
|
+
disdrodb_open_metadata_archive --metadata_archive_dir /path/to/DISDRODB-METADATA/DISDRODB
|
|
54
|
+
|
|
55
|
+
\b
|
|
56
|
+
Important Notes:
|
|
57
|
+
- Opens the directory in your system's default file manager
|
|
58
|
+
- The metadata archive contains station YAML files and issue reports
|
|
59
|
+
- Useful for manual inspection and verification of station metadata
|
|
60
|
+
""" # noqa: D301
|
|
47
61
|
from disdrodb.api.io import open_metadata_archive
|
|
48
62
|
|
|
49
63
|
metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
1
|
# -----------------------------------------------------------------------------.
|
|
4
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
5
3
|
#
|
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -41,24 +39,38 @@ def disdrodb_open_metadata_directory(
|
|
|
41
39
|
station_name: Optional[str] = None,
|
|
42
40
|
metadata_archive_dir: Optional[str] = None,
|
|
43
41
|
):
|
|
44
|
-
"""Open the DISDRODB
|
|
42
|
+
"""Open the DISDRODB Metadata Archive directory of a station in the system file explorer.
|
|
43
|
+
|
|
44
|
+
The command allows to easily browse stations metadata YAML files.
|
|
45
|
+
|
|
46
|
+
\b
|
|
47
|
+
Station Specification:
|
|
48
|
+
Requires data_source and campaign_name (UPPER CASE required).
|
|
49
|
+
station_name is optional.
|
|
50
|
+
|
|
51
|
+
\b
|
|
52
|
+
Archive Directory:
|
|
53
|
+
--metadata_archive_dir: Custom path to DISDRODB Metadata Archive
|
|
54
|
+
If not specified, the path from the active DISDRODB configuration is used
|
|
55
|
+
|
|
56
|
+
\b
|
|
57
|
+
Examples:
|
|
58
|
+
# Open metadata directory for a specific station
|
|
59
|
+
disdrodb_open_metadata_directory EPFL HYMEX_LTE_SOP2 10
|
|
60
|
+
|
|
61
|
+
# Open metadata directory for a specific station
|
|
62
|
+
disdrodb_open_metadata_directory NASA IFLOODS
|
|
63
|
+
|
|
64
|
+
# Open with custom metadata archive directory
|
|
65
|
+
disdrodb_open_metadata_directory EPFL HYMEX_LTE_SOP2 --metadata_archive_dir /path/to/DISDRODB-METADATA/DISDRODB
|
|
45
66
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
The name of the campaign. Must be provided in UPPER CASE.
|
|
54
|
-
station_name : str
|
|
55
|
-
The name of the station.
|
|
56
|
-
metadata_archive_dir : str, optional
|
|
57
|
-
The directory path where the DISDRODB Metadata Archive is located.
|
|
58
|
-
The directory path must end with ``<...>/DISDRODB``.
|
|
59
|
-
If ``None``, it uses the ``metadata_archive_dir`` path specified
|
|
60
|
-
in the DISDRODB active configuration.
|
|
61
|
-
"""
|
|
67
|
+
\b
|
|
68
|
+
Important Notes:
|
|
69
|
+
- Data source and campaign names must be in UPPER CASE
|
|
70
|
+
- Opens the directory in your system's default file manager
|
|
71
|
+
- Useful for manual inspection and editing of station metadata YAML files
|
|
72
|
+
- If station_name is omitted, opens the campaign-level metadata directory
|
|
73
|
+
""" # noqa: D301
|
|
62
74
|
from disdrodb.api.io import open_metadata_directory
|
|
63
75
|
|
|
64
76
|
metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
1
|
# -----------------------------------------------------------------------------.
|
|
4
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
5
3
|
#
|
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -43,24 +41,43 @@ def disdrodb_open_product_directory(
|
|
|
43
41
|
station_name: str,
|
|
44
42
|
data_archive_dir: Optional[str] = None,
|
|
45
43
|
):
|
|
46
|
-
"""Open the DISDRODB Data Archive
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
44
|
+
"""Open the DISDRODB Data Archive station product directory in the system file explorer.
|
|
45
|
+
|
|
46
|
+
Opens the data archive directory for a specific product level (RAW, L0A, L0B, etc.)
|
|
47
|
+
of a station using the system's default file manager, allowing you to browse
|
|
48
|
+
the data files.
|
|
49
|
+
|
|
50
|
+
\b
|
|
51
|
+
Station Specification:
|
|
52
|
+
Requires exact specification of product, data_source, campaign_name, and station_name.
|
|
53
|
+
All parameters must be provided and are case-sensitive (UPPER CASE required).
|
|
54
|
+
|
|
55
|
+
\b
|
|
56
|
+
Product Levels:
|
|
57
|
+
Valid products: RAW, L0A, L0B, L0C, L1, L2E, L2M
|
|
58
|
+
Specify the product level you want to browse
|
|
59
|
+
|
|
60
|
+
\b
|
|
61
|
+
Archive Directory:
|
|
62
|
+
--data_archive_dir: Custom path to DISDRODB data archive
|
|
63
|
+
If not specified, the path from the active DISDRODB configuration is used
|
|
64
|
+
|
|
65
|
+
\b
|
|
66
|
+
Examples:
|
|
67
|
+
# Open Raw data directory for a station
|
|
68
|
+
disdrodb_open_product_directory RAW EPFL HYMEX_LTE_SOP2 10
|
|
69
|
+
|
|
70
|
+
# Open L0B product directory
|
|
71
|
+
disdrodb_open_product_directory L0B NASA IFLOODS apu01
|
|
72
|
+
|
|
73
|
+
# Open L2M directory with custom archive path
|
|
74
|
+
disdrodb_open_product_directory L2M EPFL HYMEX_LTE_SOP2 10 --data_archive_dir /path/to/DISDRODB
|
|
75
|
+
|
|
76
|
+
\b
|
|
77
|
+
Important Notes:
|
|
78
|
+
- Product name must be valid: RAW, L0A, L0B, L0C, L1, L2E, or L2M
|
|
79
|
+
- Data source, campaign, and station names must be in UPPER CASE
|
|
80
|
+
""" # noqa: D301
|
|
64
81
|
from disdrodb.api.io import open_product_directory
|
|
65
82
|
|
|
66
83
|
data_archive_dir = parse_archive_dir(data_archive_dir)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
1
|
# -----------------------------------------------------------------------------.
|
|
4
|
-
# Copyright (c) 2021-
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
5
3
|
#
|
|
6
4
|
# This program is free software: you can redistribute it and/or modify
|
|
7
5
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# -----------------------------------------------------------------------------.
|
|
2
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
3
|
+
#
|
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
|
7
|
+
# (at your option) any later version.
|
|
8
|
+
#
|
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
12
|
+
# GNU General Public License for more details.
|
|
13
|
+
#
|
|
14
|
+
# You should have received a copy of the GNU General Public License
|
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
# -----------------------------------------------------------------------------.
|
|
17
|
+
"""Script to launch DISDRODB products generation for the entire DISDRODB Archive."""
|
|
18
|
+
import sys
|
|
19
|
+
from typing import Optional
|
|
20
|
+
|
|
21
|
+
import click
|
|
22
|
+
|
|
23
|
+
from disdrodb.utils.cli import (
|
|
24
|
+
click_data_archive_dir_option,
|
|
25
|
+
click_l0_archive_options,
|
|
26
|
+
click_metadata_archive_dir_option,
|
|
27
|
+
click_processing_options,
|
|
28
|
+
click_stations_options,
|
|
29
|
+
parse_archive_dir,
|
|
30
|
+
parse_arg_to_list,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
sys.tracebacklimit = 0 # avoid full traceback error if occur
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@click.command()
|
|
37
|
+
@click_stations_options
|
|
38
|
+
@click_l0_archive_options
|
|
39
|
+
@click.option(
|
|
40
|
+
"-l1",
|
|
41
|
+
"--l1_processing",
|
|
42
|
+
type=bool,
|
|
43
|
+
show_default=True,
|
|
44
|
+
default=True,
|
|
45
|
+
help="Run L1 processing",
|
|
46
|
+
)
|
|
47
|
+
@click.option(
|
|
48
|
+
"-l2e",
|
|
49
|
+
"--l2e_processing",
|
|
50
|
+
type=bool,
|
|
51
|
+
show_default=True,
|
|
52
|
+
default=True,
|
|
53
|
+
help="Run L2E processing",
|
|
54
|
+
)
|
|
55
|
+
@click.option(
|
|
56
|
+
"-l2m",
|
|
57
|
+
"--l2m_processing",
|
|
58
|
+
type=bool,
|
|
59
|
+
show_default=True,
|
|
60
|
+
default=True,
|
|
61
|
+
help="Run L2M processing.",
|
|
62
|
+
)
|
|
63
|
+
@click_processing_options
|
|
64
|
+
@click_data_archive_dir_option
|
|
65
|
+
@click_metadata_archive_dir_option
|
|
66
|
+
def disdrodb_run(
|
|
67
|
+
# Stations options
|
|
68
|
+
data_sources: Optional[str] = None,
|
|
69
|
+
campaign_names: Optional[str] = None,
|
|
70
|
+
station_names: Optional[str] = None,
|
|
71
|
+
# L0 archive options
|
|
72
|
+
l0a_processing: bool = True,
|
|
73
|
+
l0b_processing: bool = True,
|
|
74
|
+
l0c_processing: bool = True,
|
|
75
|
+
remove_l0a: bool = False,
|
|
76
|
+
remove_l0b: bool = False,
|
|
77
|
+
# Higher level processing options
|
|
78
|
+
l1_processing: bool = True,
|
|
79
|
+
l2e_processing: bool = True,
|
|
80
|
+
l2m_processing: bool = True,
|
|
81
|
+
# Processing options
|
|
82
|
+
force: bool = False,
|
|
83
|
+
verbose: bool = True,
|
|
84
|
+
parallel: bool = True,
|
|
85
|
+
debugging_mode: bool = False,
|
|
86
|
+
# DISDRODB root directories
|
|
87
|
+
data_archive_dir: Optional[str] = None,
|
|
88
|
+
metadata_archive_dir: Optional[str] = None,
|
|
89
|
+
):
|
|
90
|
+
"""Run the complete processing of DISDRODB stations.
|
|
91
|
+
|
|
92
|
+
This function allows to launch the complete processing of many DISDRODB stations with a single command.
|
|
93
|
+
From the list of all available DISDRODB stations, it runs the processing of the
|
|
94
|
+
stations matching the provided data_sources, campaign_names and station_names.
|
|
95
|
+
|
|
96
|
+
\b
|
|
97
|
+
Processing Levels:
|
|
98
|
+
L0A: Raw data converted to DISDRODB standardized Apache Parquet format
|
|
99
|
+
L0B: L0A data converted to DISDRODB standardized netCDF4 format
|
|
100
|
+
L0C: Apply time QC and consolidate L0B data into (by default daily) netCDF files.
|
|
101
|
+
L1: Temporally resample L0C data to standard intervals (1-60 minutes), apply QC algorithms
|
|
102
|
+
and determine precipitation phase and hydrometeors types.
|
|
103
|
+
L2E: Compute empirical integral DSD variables (e.g., rain rate, liquid water content)
|
|
104
|
+
L2M: Fit parametric DSD models and compute model-based integral DSD variables
|
|
105
|
+
|
|
106
|
+
\b
|
|
107
|
+
Station Selection:
|
|
108
|
+
If no station filters are specified, processes ALL available stations.
|
|
109
|
+
Use data_sources, campaign_names, and station_names to filter stations.
|
|
110
|
+
Filters work together to narrow down the selection (AND logic).
|
|
111
|
+
|
|
112
|
+
\b
|
|
113
|
+
Performance Options:
|
|
114
|
+
--parallel: Uses multiple processes for faster processing (default: True)
|
|
115
|
+
If parallel processing is enabled, each process will use a single thread
|
|
116
|
+
to avoid issues with the HDF/netCDF library.
|
|
117
|
+
The DASK_NUM_WORKERS environment variable controls the number of processes
|
|
118
|
+
to use.A sensible default is automatically set by the software.
|
|
119
|
+
--debugging_mode: Processes only a subset of data for testing
|
|
120
|
+
--force: Overwrites existing output files (default: False)
|
|
121
|
+
|
|
122
|
+
\b
|
|
123
|
+
Examples:
|
|
124
|
+
# Process all stations with full processing chain
|
|
125
|
+
disdrodb_run
|
|
126
|
+
|
|
127
|
+
# Process specific data sources, skip L0A and L2M
|
|
128
|
+
disdrodb_run --data_sources 'USA EPFL' --l0a_processing False --l2m_processing False
|
|
129
|
+
|
|
130
|
+
# Process specific campaigns with debugging mode
|
|
131
|
+
disdrodb_run --campaign_names 'DELFT IMPACTS' --debugging_mode True
|
|
132
|
+
|
|
133
|
+
# Process specific stations with custom number of workers
|
|
134
|
+
DASK_NUM_WORKERS=8 disdrodb_run --data_sources 'NASA' --station_names 'apu01 apu02'
|
|
135
|
+
|
|
136
|
+
# Force overwrite existing files, verbose output
|
|
137
|
+
disdrodb_run --data_sources 'EPFL' --force True --verbose True
|
|
138
|
+
|
|
139
|
+
\b
|
|
140
|
+
Data Management:
|
|
141
|
+
--remove_l0a: Delete L0A files after L0B processing (saves disk space)
|
|
142
|
+
--remove_l0b: Delete L0B files after L0C processing (saves disk space)
|
|
143
|
+
Use with caution - removed files cannot be recovered without reprocessing
|
|
144
|
+
|
|
145
|
+
\b
|
|
146
|
+
Important Notes:
|
|
147
|
+
- Data source names must be UPPER CASE
|
|
148
|
+
- Campaign names must be UPPER CASE
|
|
149
|
+
- To specify multiple values, use space-separated strings in quotes
|
|
150
|
+
- Processing chain: L0A → L0B → L0C → L1 → L2E → L2M
|
|
151
|
+
- You can skip early or late processing levels, but not intermediate ones
|
|
152
|
+
- Processing validates chain consistency and will raise errors for gaps
|
|
153
|
+
- Large datasets may require significant disk space and processing time
|
|
154
|
+
- Use --debugging_mode for initial testing with reduced data volumes
|
|
155
|
+
""" # noqa: D301
|
|
156
|
+
from disdrodb.routines import run
|
|
157
|
+
|
|
158
|
+
# Parse data_sources, campaign_names and station arguments
|
|
159
|
+
data_archive_dir = parse_archive_dir(data_archive_dir)
|
|
160
|
+
metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
|
|
161
|
+
data_sources = parse_arg_to_list(data_sources)
|
|
162
|
+
campaign_names = parse_arg_to_list(campaign_names)
|
|
163
|
+
station_names = parse_arg_to_list(station_names)
|
|
164
|
+
|
|
165
|
+
# Run processing
|
|
166
|
+
run(
|
|
167
|
+
# DISDRODB root directories
|
|
168
|
+
data_archive_dir=data_archive_dir,
|
|
169
|
+
metadata_archive_dir=metadata_archive_dir,
|
|
170
|
+
# Stations options
|
|
171
|
+
data_sources=data_sources,
|
|
172
|
+
campaign_names=campaign_names,
|
|
173
|
+
station_names=station_names,
|
|
174
|
+
# L0 archive options
|
|
175
|
+
l0a_processing=l0a_processing,
|
|
176
|
+
l0b_processing=l0b_processing,
|
|
177
|
+
l0c_processing=l0c_processing,
|
|
178
|
+
remove_l0a=remove_l0a,
|
|
179
|
+
remove_l0b=remove_l0b,
|
|
180
|
+
# Higher level processing options
|
|
181
|
+
l1_processing=l1_processing,
|
|
182
|
+
l2e_processing=l2e_processing,
|
|
183
|
+
l2m_processing=l2m_processing,
|
|
184
|
+
# Processing options
|
|
185
|
+
force=force,
|
|
186
|
+
verbose=verbose,
|
|
187
|
+
debugging_mode=debugging_mode,
|
|
188
|
+
parallel=parallel,
|
|
189
|
+
)
|