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
disdrodb/__init__.py
CHANGED
|
@@ -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
|
disdrodb/_config.py
CHANGED
|
@@ -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
|
disdrodb/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.
|
|
32
|
-
__version_tuple__ = version_tuple = (0,
|
|
31
|
+
__version__ = version = '0.3.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 3, 0)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
disdrodb/accessor/__init__.py
CHANGED
|
@@ -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
|
disdrodb/accessor/methods.py
CHANGED
|
@@ -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
|
|
@@ -32,7 +32,7 @@ class DISDRODB_Base_Accessor:
|
|
|
32
32
|
from disdrodb.api.checks import check_time
|
|
33
33
|
|
|
34
34
|
if "time" in self._obj.coords:
|
|
35
|
-
start_time = self._obj["time"].to_numpy()
|
|
35
|
+
start_time = self._obj["time"].to_numpy().min()
|
|
36
36
|
else:
|
|
37
37
|
raise ValueError("Time coordinate not found")
|
|
38
38
|
return check_time(start_time)
|
|
@@ -43,7 +43,7 @@ class DISDRODB_Base_Accessor:
|
|
|
43
43
|
from disdrodb.api.checks import check_time
|
|
44
44
|
|
|
45
45
|
if "time" in self._obj.coords:
|
|
46
|
-
end_time = self._obj["time"].to_numpy()
|
|
46
|
+
end_time = self._obj["time"].to_numpy().max()
|
|
47
47
|
else:
|
|
48
48
|
raise ValueError("Time coordinate not found")
|
|
49
49
|
return check_time(end_time)
|
|
@@ -64,6 +64,13 @@ class DISDRODB_Base_Accessor:
|
|
|
64
64
|
|
|
65
65
|
return get_diameter_bin_edges(self._obj)
|
|
66
66
|
|
|
67
|
+
@property
|
|
68
|
+
def velocity_bin_edges(self):
|
|
69
|
+
"""Return velocity bin edges."""
|
|
70
|
+
from disdrodb.utils.manipulations import get_velocity_bin_edges
|
|
71
|
+
|
|
72
|
+
return get_velocity_bin_edges(self._obj)
|
|
73
|
+
|
|
67
74
|
def regularize(self):
|
|
68
75
|
"""Regularize timesteps."""
|
|
69
76
|
from disdrodb.utils.time import regularize_dataset
|
|
@@ -93,7 +100,13 @@ class DISDRODB_Base_Accessor:
|
|
|
93
100
|
"""Plot spectrum."""
|
|
94
101
|
from disdrodb.viz.plots import plot_spectrum
|
|
95
102
|
|
|
96
|
-
plot_spectrum(self._obj, **kwargs)
|
|
103
|
+
return plot_spectrum(self._obj, **kwargs)
|
|
104
|
+
|
|
105
|
+
def plot_nd(self, **kwargs):
|
|
106
|
+
"""Plot drop number concentration N(D) timeseries."""
|
|
107
|
+
from disdrodb.viz.plots import plot_nd
|
|
108
|
+
|
|
109
|
+
return plot_nd(self._obj, **kwargs)
|
|
97
110
|
|
|
98
111
|
|
|
99
112
|
@xr.register_dataset_accessor("disdrodb")
|
|
@@ -115,17 +128,11 @@ class DISDRODB_Dataset_Accessor(DISDRODB_Base_Accessor):
|
|
|
115
128
|
)
|
|
116
129
|
return ds
|
|
117
130
|
|
|
118
|
-
def plot_nd(self, **kwargs):
|
|
119
|
-
"""Plot drop number concentration N(D) timeseries."""
|
|
120
|
-
from disdrodb.viz.plots import plot_nd
|
|
121
|
-
|
|
122
|
-
plot_nd(self._obj, **kwargs)
|
|
123
|
-
|
|
124
131
|
def plot_raw_and_filtered_spectra(self, **kwargs):
|
|
125
132
|
"""Plot the raw and filtered spectra."""
|
|
126
133
|
from disdrodb.viz.plots import plot_raw_and_filtered_spectra
|
|
127
134
|
|
|
128
|
-
plot_raw_and_filtered_spectra(self._obj, **kwargs)
|
|
135
|
+
return plot_raw_and_filtered_spectra(self._obj, **kwargs)
|
|
129
136
|
|
|
130
137
|
|
|
131
138
|
@xr.register_dataarray_accessor("disdrodb")
|
disdrodb/api/checks.py
CHANGED
|
@@ -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
|
|
@@ -161,7 +159,7 @@ def check_temporal_resolution(temporal_resolution):
|
|
|
161
159
|
if not isinstance(temporal_resolution, str):
|
|
162
160
|
raise TypeError("'temporal_resolution' must be a string.")
|
|
163
161
|
# If correct, the follow should not raise error
|
|
164
|
-
|
|
162
|
+
_ = get_sampling_information(temporal_resolution)
|
|
165
163
|
|
|
166
164
|
|
|
167
165
|
def check_folder_partitioning(folder_partitioning):
|
disdrodb/api/configs.py
CHANGED
|
@@ -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
|
|
@@ -23,7 +21,6 @@
|
|
|
23
21
|
|
|
24
22
|
import logging
|
|
25
23
|
import os
|
|
26
|
-
import shutil
|
|
27
24
|
|
|
28
25
|
from disdrodb.api.checks import (
|
|
29
26
|
check_campaign_name,
|
|
@@ -46,6 +43,7 @@ from disdrodb.api.path import (
|
|
|
46
43
|
from disdrodb.configs import get_data_archive_dir, get_metadata_archive_dir
|
|
47
44
|
from disdrodb.utils.directories import (
|
|
48
45
|
create_directory,
|
|
46
|
+
remove_file_or_directories,
|
|
49
47
|
remove_if_exists,
|
|
50
48
|
)
|
|
51
49
|
|
|
@@ -59,7 +57,7 @@ def ensure_empty_data_dir(data_dir, force):
|
|
|
59
57
|
"""Remove the content of the data_dir directory."""
|
|
60
58
|
# If force=True, remove all the directory content
|
|
61
59
|
if force:
|
|
62
|
-
|
|
60
|
+
remove_file_or_directories(data_dir)
|
|
63
61
|
# Recreate the directory
|
|
64
62
|
create_directory(data_dir)
|
|
65
63
|
else:
|
|
@@ -258,7 +256,7 @@ def create_logs_directory(
|
|
|
258
256
|
|
|
259
257
|
# Ensure empty log directory
|
|
260
258
|
if os.path.isdir(logs_dir):
|
|
261
|
-
|
|
259
|
+
remove_file_or_directories(logs_dir)
|
|
262
260
|
|
|
263
261
|
# Create logs directory
|
|
264
262
|
os.makedirs(logs_dir, exist_ok=True)
|
disdrodb/api/info.py
CHANGED
|
@@ -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
|
disdrodb/api/io.py
CHANGED
|
@@ -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
|
|
@@ -19,7 +17,6 @@
|
|
|
19
17
|
"""Routines to list and open DISDRODB products."""
|
|
20
18
|
import datetime
|
|
21
19
|
import os
|
|
22
|
-
import shutil
|
|
23
20
|
import subprocess
|
|
24
21
|
import sys
|
|
25
22
|
from pathlib import Path
|
|
@@ -41,7 +38,7 @@ from disdrodb.api.path import (
|
|
|
41
38
|
)
|
|
42
39
|
from disdrodb.l0.l0_reader import define_readers_directory
|
|
43
40
|
from disdrodb.utils.dict import extract_product_kwargs
|
|
44
|
-
from disdrodb.utils.directories import list_files
|
|
41
|
+
from disdrodb.utils.directories import list_files, remove_file_or_directories
|
|
45
42
|
from disdrodb.utils.logger import (
|
|
46
43
|
log_info,
|
|
47
44
|
)
|
|
@@ -338,8 +335,11 @@ def open_netcdf_files(
|
|
|
338
335
|
import xarray as xr
|
|
339
336
|
|
|
340
337
|
# Ensure variables is a list
|
|
341
|
-
if variables is not None
|
|
342
|
-
variables
|
|
338
|
+
if variables is not None:
|
|
339
|
+
if isinstance(variables, str):
|
|
340
|
+
variables = [variables]
|
|
341
|
+
variables = np.unique(variables).tolist()
|
|
342
|
+
|
|
343
343
|
# Define preprocessing function for parallel opening
|
|
344
344
|
preprocess = (lambda ds: ds[variables]) if parallel and variables is not None else None
|
|
345
345
|
|
|
@@ -347,6 +347,7 @@ def open_netcdf_files(
|
|
|
347
347
|
ds = xr.open_mfdataset(
|
|
348
348
|
filepaths,
|
|
349
349
|
chunks=chunks,
|
|
350
|
+
data_vars="all",
|
|
350
351
|
combine="nested",
|
|
351
352
|
join="outer",
|
|
352
353
|
concat_dim="time",
|
|
@@ -355,7 +356,7 @@ def open_netcdf_files(
|
|
|
355
356
|
preprocess=preprocess,
|
|
356
357
|
compat="no_conflicts",
|
|
357
358
|
combine_attrs="override",
|
|
358
|
-
coords="different", # maybe minimal?
|
|
359
|
+
coords="different", # maybe minimal? would remove lon/lat/alt?
|
|
359
360
|
decode_timedelta=False,
|
|
360
361
|
cache=False,
|
|
361
362
|
autoclose=True,
|
|
@@ -363,6 +364,7 @@ def open_netcdf_files(
|
|
|
363
364
|
)
|
|
364
365
|
# - Subset variables
|
|
365
366
|
if variables is not None and preprocess is None:
|
|
367
|
+
variables = [var for var in variables if var in ds]
|
|
366
368
|
ds = ds[variables]
|
|
367
369
|
# - Subset time
|
|
368
370
|
if start_time is not None or end_time is not None:
|
|
@@ -475,6 +477,10 @@ def open_dataset(
|
|
|
475
477
|
compute=compute,
|
|
476
478
|
**open_kwargs,
|
|
477
479
|
)
|
|
480
|
+
|
|
481
|
+
# Ensure coordinates in memory
|
|
482
|
+
# for coord in list(ds.coords):
|
|
483
|
+
# ds[coord] = ds[coord].compute()
|
|
478
484
|
return ds
|
|
479
485
|
|
|
480
486
|
|
|
@@ -504,7 +510,7 @@ def remove_product(
|
|
|
504
510
|
**product_kwargs,
|
|
505
511
|
)
|
|
506
512
|
log_info(logger=logger, msg="Removal of {product} files started.", verbose=verbose)
|
|
507
|
-
|
|
513
|
+
remove_file_or_directories(data_dir)
|
|
508
514
|
log_info(logger=logger, msg="Removal of {product} files ended.", verbose=verbose)
|
|
509
515
|
|
|
510
516
|
|
disdrodb/api/path.py
CHANGED
|
@@ -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,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
|
|
@@ -34,7 +34,7 @@ sys.tracebacklimit = 0 # avoid full traceback error if occur
|
|
|
34
34
|
help="Whether to raise error of finish the check",
|
|
35
35
|
)
|
|
36
36
|
def disdrodb_check_metadata_archive(metadata_archive_dir=None, raise_error=True):
|
|
37
|
-
"""
|
|
37
|
+
"""Validate the DISDRODB Metadata Archive."""
|
|
38
38
|
from disdrodb.metadata.checks import check_metadata_archive
|
|
39
39
|
|
|
40
40
|
metadata_archive_dir = parse_archive_dir(metadata_archive_dir)
|
|
@@ -0,0 +1,44 @@
|
|
|
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 check the validity of the DISDRODB products configuration files."""
|
|
18
|
+
import sys
|
|
19
|
+
|
|
20
|
+
import click
|
|
21
|
+
|
|
22
|
+
from disdrodb.utils.cli import parse_empty_string_and_none
|
|
23
|
+
|
|
24
|
+
sys.tracebacklimit = 0 # avoid full traceback error if occur
|
|
25
|
+
|
|
26
|
+
# -------------------------------------------------------------------------.
|
|
27
|
+
# Click Command Line Interface decorator
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
@click.command()
|
|
31
|
+
@click.option(
|
|
32
|
+
"--products_configs_dir",
|
|
33
|
+
type=str,
|
|
34
|
+
show_default=True,
|
|
35
|
+
default=None,
|
|
36
|
+
help="Directory with DISDRODB products configurations files",
|
|
37
|
+
)
|
|
38
|
+
def disdrodb_check_products_options(products_configs_dir):
|
|
39
|
+
"""Validate the DISDRODB products configuration files."""
|
|
40
|
+
from disdrodb.routines.options_validation import validate_products_configurations
|
|
41
|
+
|
|
42
|
+
products_configs_dir = parse_empty_string_and_none(products_configs_dir)
|
|
43
|
+
|
|
44
|
+
validate_products_configurations(products_configs_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
|
|
@@ -59,27 +59,53 @@ def disdrodb_create_summary(
|
|
|
59
59
|
data_archive_dir: Optional[str] = None,
|
|
60
60
|
metadata_archive_dir: Optional[str] = None,
|
|
61
61
|
):
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
If
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
62
|
+
"""Create summary figures and tables for DISDRODB stations.
|
|
63
|
+
|
|
64
|
+
Generates summary visualizations and statistics from DISDRODB L2E data products.
|
|
65
|
+
The DISDRODB L2E files must be available.
|
|
66
|
+
|
|
67
|
+
\b
|
|
68
|
+
Station Selection:
|
|
69
|
+
If no station filters are specified, creates summaries for ALL available stations.
|
|
70
|
+
Use data_sources, campaign_names, and station_names to filter stations.
|
|
71
|
+
Filters work together to narrow down the selection (AND logic).
|
|
72
|
+
|
|
73
|
+
\b
|
|
74
|
+
Processing Options:
|
|
75
|
+
--parallel: Reads files in parallel for faster processing (default: False)
|
|
76
|
+
--temporal_resolution: Temporal resolution of L2E product to use (default: 1MIN)
|
|
77
|
+
Valid temporal resolutions depend on available L2E products.
|
|
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
|
+
# Create summaries for all stations
|
|
88
|
+
disdrodb_create_summary
|
|
89
|
+
|
|
90
|
+
# Create summaries for specific data sources
|
|
91
|
+
disdrodb_create_summary --data_sources 'EPFL NASA'
|
|
92
|
+
|
|
93
|
+
# Create summaries for specific campaigns
|
|
94
|
+
disdrodb_create_summary --campaign_names 'HYMEX_LTE_SOP2 IFLOODS'
|
|
95
|
+
|
|
96
|
+
# Create summaries for specific stations with custom temporal resolution
|
|
97
|
+
disdrodb_create_summary --station_names 'apu01 apu02' --temporal_resolution 5MIN
|
|
98
|
+
|
|
99
|
+
# Create summaries with custom archive directory
|
|
100
|
+
disdrodb_create_summary --data_sources EPFL --data_archive_dir /path/to/DISDRODB
|
|
101
|
+
|
|
102
|
+
\b
|
|
103
|
+
Important Notes:
|
|
104
|
+
- Data source names must be in UPPER CASE
|
|
105
|
+
- Campaign names must be in UPPER CASE
|
|
106
|
+
- To specify multiple values, use space-separated strings in quotes
|
|
107
|
+
- Requires L2E data products to be available for the selected stations
|
|
108
|
+
""" # noqa: D301
|
|
83
109
|
from disdrodb.routines import create_summary
|
|
84
110
|
from disdrodb.utils.dask import close_dask_cluster, initialize_dask_cluster
|
|
85
111
|
|
|
@@ -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
|
|
@@ -55,23 +55,44 @@ def disdrodb_create_summary_station(
|
|
|
55
55
|
# DISDRODB root directories
|
|
56
56
|
data_archive_dir: Optional[str] = None,
|
|
57
57
|
):
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
58
|
+
"""Create summary figures and tables for a specific DISDRODB station.
|
|
59
|
+
|
|
60
|
+
Generates summary visualizations and statistics using the DISDRODB L2E product
|
|
61
|
+
of the specified station.
|
|
62
|
+
|
|
63
|
+
\b
|
|
64
|
+
Station Specification:
|
|
65
|
+
Requires exact specification of data_source, campaign_name, and station_name.
|
|
66
|
+
All three parameters must be provided and are case-sensitive (UPPER CASE required).
|
|
67
|
+
|
|
68
|
+
\b
|
|
69
|
+
Processing Options:
|
|
70
|
+
--parallel: Reads files in parallel for faster processing (default: False)
|
|
71
|
+
--temporal_resolution: Temporal resolution of L2E product to use (default: 1MIN)
|
|
72
|
+
Valid temporal resolutions depend on available L2E products
|
|
73
|
+
|
|
74
|
+
\b
|
|
75
|
+
Archive Directory:
|
|
76
|
+
--data_archive_dir: Custom path to DISDRODB data archive
|
|
77
|
+
If not specified, the path from the active DISDRODB configuration is used
|
|
78
|
+
|
|
79
|
+
\b
|
|
80
|
+
Examples:
|
|
81
|
+
# Create summary for a specific station
|
|
82
|
+
disdrodb_create_summary_station EPFL HYMEX_LTE_SOP2 10
|
|
83
|
+
|
|
84
|
+
# Create summary with custom temporal resolution
|
|
85
|
+
disdrodb_create_summary_station EPFL HYMEX_LTE_SOP2 10 --temporal_resolution 5MIN
|
|
86
|
+
|
|
87
|
+
# Create summary with custom archive directory
|
|
88
|
+
disdrodb_create_summary_station NASA IFLOODS apu01 --data_archive_dir /path/to/DISDRODB
|
|
89
|
+
|
|
90
|
+
\b
|
|
91
|
+
Important Notes:
|
|
92
|
+
- Data source, campaign, and station names must be in UPPER CASE
|
|
93
|
+
- All three station identifiers are required (no wildcards)
|
|
94
|
+
- Requires L2E data products to be available for the specified station
|
|
95
|
+
""" # noqa: D301
|
|
75
96
|
from disdrodb.summary.routines import create_station_summary
|
|
76
97
|
from disdrodb.utils.dask import close_dask_cluster, initialize_dask_cluster
|
|
77
98
|
|
|
@@ -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,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
|
|
@@ -45,29 +45,50 @@ def disdrodb_download_archive(
|
|
|
45
45
|
metadata_archive_dir: Optional[str] = None,
|
|
46
46
|
force: bool = False,
|
|
47
47
|
):
|
|
48
|
-
"""Download DISDRODB stations
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
48
|
+
"""Download raw data for multiple DISDRODB stations 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
|
+
\b
|
|
54
|
+
Station Selection:
|
|
55
|
+
If no station filters are specified, downloads ALL stations.
|
|
56
|
+
Use data_sources, campaign_names, and station_names to filter stations.
|
|
57
|
+
Filters work together to narrow down the selection (AND logic).
|
|
58
|
+
Only stations with a ``disdrodb_data_url`` in their metadata will be downloaded.
|
|
59
|
+
|
|
60
|
+
\b
|
|
61
|
+
Download Behavior:
|
|
62
|
+
For webserver/FTP-hosted data:
|
|
63
|
+
- Incremental downloads: Fetch only new files when they become available
|
|
64
|
+
- Existing files on disk are skipped unless '--force True' is used
|
|
65
|
+
|
|
66
|
+
For repository-hosted data (e.g., Zenodo):
|
|
67
|
+
- Use '--force True' to download new versions when available
|
|
68
|
+
- Without '--force True', download is skipped if data already exists locally
|
|
69
|
+
|
|
70
|
+
\b
|
|
71
|
+
Download Options:
|
|
72
|
+
--force: Removes existing raw data files and forces complete re-download (default: False)
|
|
73
|
+
Warning: All existing station data will be deleted before re-downloading
|
|
74
|
+
|
|
75
|
+
\b
|
|
76
|
+
Archive Directories:
|
|
77
|
+
--data_archive_dir: Custom path to DISDRODB data archive
|
|
78
|
+
--metadata_archive_dir: Custom path to DISDRODB metadata archive
|
|
79
|
+
If not specified, paths from the active DISDRODB configuration are used
|
|
80
|
+
|
|
81
|
+
\b
|
|
82
|
+
Examples:
|
|
83
|
+
# Download all stations with available download URLs
|
|
84
|
+
disdrodb_download_archive
|
|
85
|
+
|
|
86
|
+
# Download all stations from specific data sources
|
|
87
|
+
disdrodb_download_archive --data_sources 'EPFL NASA'
|
|
88
|
+
|
|
89
|
+
# Download specific campaigns and force re-download
|
|
90
|
+
disdrodb_download_archive --campaign_names 'HYMEX_LTE_SOP2 IFLOODS' --force True
|
|
91
|
+
""" # noqa: D301
|
|
71
92
|
from disdrodb.data_transfer.download_data import download_archive
|
|
72
93
|
|
|
73
94
|
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
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
# -----------------------------------------------------------------------------.
|
|
17
17
|
"""Routine to download the DISDRODB Metadata Data Archive."""
|
|
18
18
|
import sys
|
|
19
|
+
from pathlib import Path
|
|
19
20
|
|
|
20
21
|
import click
|
|
21
22
|
|
|
@@ -25,7 +26,7 @@ sys.tracebacklimit = 0 # avoid full traceback error if occur
|
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
@click.command()
|
|
28
|
-
@click.argument("directory_path", metavar="
|
|
29
|
+
@click.argument("directory_path", required=False, metavar="[directory]", type=click.Path())
|
|
29
30
|
@click.option("-f", "--force", type=bool, show_default=True, default=False, help="Force overwriting")
|
|
30
31
|
def disdrodb_download_metadata_archive(
|
|
31
32
|
directory_path,
|
|
@@ -33,21 +34,31 @@ def disdrodb_download_metadata_archive(
|
|
|
33
34
|
):
|
|
34
35
|
"""Download the DISDRODB Metadata Archive to the specified directory.
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
The
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
\b
|
|
38
|
+
Download Options:
|
|
39
|
+
'--force True' removes the existing DISDRODB-METADATA directory and forces re-download.
|
|
40
|
+
The default is --force False. If the DISDRODB-METADATA directory already exists, it raises an error.
|
|
41
|
+
|
|
42
|
+
\b
|
|
43
|
+
Examples:
|
|
44
|
+
# Download metadata archive to current directory
|
|
45
|
+
disdrodb_download_metadata_archive
|
|
46
|
+
|
|
47
|
+
# Download to specific directory
|
|
48
|
+
disdrodb_download_metadata_archive /path/to/directory
|
|
49
|
+
|
|
50
|
+
# Force re-download of existing metadata archive
|
|
51
|
+
disdrodb_download_metadata_archive /path/to/directory --force True
|
|
52
|
+
|
|
53
|
+
\b
|
|
54
|
+
Important Notes:
|
|
55
|
+
- Use --force with caution as it will delete the existing metadata archive
|
|
56
|
+
""" # noqa: D301
|
|
49
57
|
from disdrodb import download_metadata_archive
|
|
50
58
|
|
|
51
|
-
|
|
59
|
+
# Default to current directory if none provided
|
|
60
|
+
directory_path = Path(directory_path or ".").resolve()
|
|
61
|
+
directory_path = parse_archive_dir(str(directory_path))
|
|
52
62
|
|
|
63
|
+
# Download metadata archive
|
|
53
64
|
download_metadata_archive(directory_path, force=force)
|