disdrodb 0.2.1__py3-none-any.whl → 0.4.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 +3 -1
- disdrodb/_config.py +2 -3
- disdrodb/_version.py +2 -2
- disdrodb/accessor/__init__.py +2 -1
- disdrodb/accessor/methods.py +10 -9
- disdrodb/api/checks.py +3 -7
- disdrodb/api/configs.py +1 -3
- disdrodb/api/create_directories.py +4 -6
- disdrodb/api/info.py +1 -3
- disdrodb/api/io.py +233 -32
- disdrodb/api/path.py +3 -7
- disdrodb/cli/disdrodb_check_metadata_archive.py +3 -2
- disdrodb/cli/disdrodb_check_products_options.py +45 -0
- disdrodb/cli/disdrodb_create_summary.py +54 -28
- disdrodb/cli/disdrodb_create_summary_station.py +41 -20
- disdrodb/cli/disdrodb_data_archive_directory.py +2 -3
- disdrodb/cli/disdrodb_download_archive.py +50 -30
- disdrodb/cli/disdrodb_download_metadata_archive.py +28 -16
- disdrodb/cli/disdrodb_download_station.py +58 -29
- disdrodb/cli/disdrodb_initialize_station.py +43 -23
- disdrodb/cli/disdrodb_metadata_archive_directory.py +2 -3
- disdrodb/cli/disdrodb_open_data_archive.py +17 -13
- disdrodb/cli/disdrodb_open_logs_directory.py +31 -21
- disdrodb/cli/disdrodb_open_metadata_archive.py +26 -13
- disdrodb/cli/disdrodb_open_metadata_directory.py +34 -23
- disdrodb/cli/disdrodb_open_product_directory.py +39 -23
- disdrodb/cli/disdrodb_open_readers_directory.py +2 -3
- disdrodb/cli/disdrodb_run.py +189 -0
- disdrodb/cli/disdrodb_run_l0.py +61 -70
- disdrodb/cli/disdrodb_run_l0_station.py +50 -55
- disdrodb/cli/disdrodb_run_l0a.py +53 -51
- disdrodb/cli/disdrodb_run_l0a_station.py +41 -40
- disdrodb/cli/disdrodb_run_l0b.py +51 -51
- disdrodb/cli/disdrodb_run_l0b_station.py +40 -39
- disdrodb/cli/disdrodb_run_l0c.py +56 -53
- disdrodb/cli/disdrodb_run_l0c_station.py +44 -41
- disdrodb/cli/disdrodb_run_l1.py +55 -51
- disdrodb/cli/disdrodb_run_l1_station.py +43 -40
- disdrodb/cli/disdrodb_run_l2e.py +56 -51
- disdrodb/cli/disdrodb_run_l2e_station.py +44 -40
- disdrodb/cli/disdrodb_run_l2m.py +55 -51
- disdrodb/cli/disdrodb_run_l2m_station.py +43 -40
- disdrodb/cli/disdrodb_run_station.py +184 -0
- disdrodb/cli/disdrodb_upload_archive.py +51 -42
- disdrodb/cli/disdrodb_upload_station.py +42 -36
- disdrodb/configs.py +20 -16
- disdrodb/constants.py +5 -2
- disdrodb/data_transfer/__init__.py +1 -3
- disdrodb/data_transfer/download_data.py +45 -61
- disdrodb/data_transfer/upload_data.py +7 -11
- disdrodb/data_transfer/zenodo.py +2 -4
- 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 +0 -13
- 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 +16 -2
- disdrodb/fall_velocity/__init__.py +47 -0
- disdrodb/fall_velocity/graupel.py +484 -0
- disdrodb/fall_velocity/hail.py +288 -0
- disdrodb/{l1/fall_velocity.py → fall_velocity/rain.py} +265 -44
- disdrodb/issue/__init__.py +1 -3
- disdrodb/issue/checks.py +2 -3
- disdrodb/issue/reader.py +2 -3
- disdrodb/issue/writer.py +2 -5
- disdrodb/l0/__init__.py +2 -1
- disdrodb/l0/check_configs.py +36 -29
- disdrodb/l0/check_standards.py +1 -4
- disdrodb/l0/configs/LPM/l0a_encodings.yml +17 -17
- disdrodb/l0/configs/LPM/l0b_cf_attrs.yml +55 -55
- disdrodb/l0/configs/LPM/l0b_encodings.yml +17 -17
- disdrodb/l0/configs/LPM/raw_data_format.yml +17 -17
- disdrodb/l0/configs/LPM_V0/l0a_encodings.yml +2 -2
- disdrodb/l0/configs/LPM_V0/l0b_cf_attrs.yml +2 -2
- disdrodb/l0/configs/LPM_V0/l0b_encodings.yml +2 -2
- disdrodb/l0/configs/LPM_V0/raw_data_format.yml +2 -2
- 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/l0_reader.py +2 -3
- disdrodb/l0/l0a_processing.py +6 -8
- disdrodb/l0/l0b_nc_processing.py +3 -6
- disdrodb/l0/l0b_processing.py +2 -16
- disdrodb/l0/l0c_processing.py +29 -12
- disdrodb/l0/readers/LPM/ARM/ARM_LPM.py +2 -1
- disdrodb/l0/readers/LPM/AUSTRALIA/MELBOURNE_2007_LPM.py +18 -18
- disdrodb/l0/readers/LPM/BRAZIL/CHUVA_LPM.py +18 -18
- disdrodb/l0/readers/LPM/BRAZIL/GOAMAZON_LPM.py +18 -18
- disdrodb/l0/readers/LPM/GERMANY/DWD.py +244 -63
- disdrodb/l0/readers/LPM/ITALY/GID_LPM.py +65 -23
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_AQ.py +277 -0
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_PI.py +19 -18
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_T.py +23 -19
- disdrodb/l0/readers/LPM/ITALY/GID_LPM_W.py +19 -21
- disdrodb/l0/readers/LPM/KIT/CHWALA.py +19 -20
- disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_LPM_NC.py +1 -1
- disdrodb/l0/readers/LPM/NETHERLANDS/DELFT_RWANDA_LPM_NC.py +18 -18
- disdrodb/l0/readers/LPM/NORWAY/HAUKELISETER_LPM.py +19 -20
- disdrodb/l0/readers/LPM/NORWAY/NMBU_LPM.py +19 -20
- disdrodb/l0/readers/LPM/SLOVENIA/ARSO.py +19 -20
- disdrodb/l0/readers/LPM/SLOVENIA/UL.py +19 -20
- disdrodb/l0/readers/LPM/SWITZERLAND/INNERERIZ_LPM.py +19 -20
- disdrodb/l0/readers/LPM/UK/DIVEN.py +1 -1
- disdrodb/l0/readers/LPM/UK/WITHWORTH_LPM.py +19 -20
- disdrodb/l0/readers/LPM/USA/CHARLESTON.py +19 -20
- disdrodb/l0/readers/LPM/USA/DEVEX.py +255 -0
- disdrodb/l0/readers/LPM_V0/BELGIUM/ULIEGE.py +3 -5
- disdrodb/l0/readers/LPM_V0/ITALY/GID_LPM_V0.py +4 -3
- disdrodb/l0/readers/ODM470/OCEAN/OCEANRAIN.py +124 -0
- disdrodb/l0/readers/PARSIVEL/AUSTRALIA/MELBOURNE_2007_PARSIVEL.py +1 -1
- disdrodb/l0/readers/PARSIVEL/BASQUECOUNTRY/EUSKALMET_OTT.py +2 -1
- disdrodb/l0/readers/PARSIVEL/CHINA/CHONGQING.py +2 -3
- disdrodb/l0/readers/PARSIVEL/EPFL/ARCTIC_2021.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/COMMON_2011.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/DAVOS_2009_2011.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_2009.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2008.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2010.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2011.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/EPFL_ROOF_2012.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/GENEPI_2007.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/GRAND_ST_BERNARD_2007.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/GRAND_ST_BERNARD_2007_2.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/HPICONET_2010.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP2.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP3.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/HYMEX_LTE_SOP4.py +2 -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 +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/PARSIVEL_2007.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/PLATO_2019.py +1 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/RACLETS_2019_WJF.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/RIETHOLZBACH_2011.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2017.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/SAMOYLOV_2019.py +2 -1
- disdrodb/l0/readers/PARSIVEL/EPFL/UNIL_2022.py +2 -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 +1 -1
- disdrodb/l0/readers/PARSIVEL/NASA/MC3E.py +1 -1
- 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 +2 -1
- disdrodb/l0/readers/PARSIVEL2/ARM/ARM_PARSIVEL2.py +2 -1
- disdrodb/l0/readers/PARSIVEL2/BASQUECOUNTRY/EUSKALMET_OTT2.py +2 -1
- disdrodb/l0/readers/PARSIVEL2/BELGIUM/ILVO.py +2 -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 +2 -1
- disdrodb/l0/readers/PARSIVEL2/DENMARK/EROSION_raw.py +2 -1
- disdrodb/l0/readers/PARSIVEL2/FINLAND/FMI_PARSIVEL2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/FRANCE/ENPC_PARSIVEL2.py +2 -3
- disdrodb/l0/readers/PARSIVEL2/FRANCE/OSUG.py +2 -2
- 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 +6 -3
- disdrodb/l0/readers/PARSIVEL2/JAPAN/PRECIP.py +1 -1
- 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/KOREA/ICEPOP_UCLM.py +126 -0
- disdrodb/l0/readers/PARSIVEL2/MEXICO/OH_IIUNAM_nc.py +2 -1
- disdrodb/l0/readers/PARSIVEL2/MPI/BCO_PARSIVEL2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/MPI/BOWTIE.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NASA/APU.py +3 -1
- disdrodb/l0/readers/PARSIVEL2/NASA/NSSTC.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/FARM_PARSIVEL2.py +2 -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 +2 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/PERILS_PIPS.py +2 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/RELAMPAGO_PARSIVEL2.py +1 -1
- 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 +2 -3
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_P2.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NCAR/VORTEX_SE_2016_PIPS.py +2 -1
- disdrodb/l0/readers/PARSIVEL2/NETHERLANDS/DELFT_NC.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/NORWAY/UIB.py +10 -2
- disdrodb/l0/readers/PARSIVEL2/PHILIPPINES/PAGASA.py +2 -3
- 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 +2 -3
- disdrodb/l0/readers/PARSIVEL2/SPAIN/LIAISE.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/SWEDEN/SMHI.py +2 -1
- disdrodb/l0/readers/PARSIVEL2/USA/CSU.py +1 -1
- disdrodb/l0/readers/PARSIVEL2/USA/CW3E.py +2 -1
- disdrodb/l0/readers/PWS100/AUSTRIA/HOAL.py +2 -3
- disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100.py +2 -3
- disdrodb/l0/readers/PWS100/FRANCE/ENPC_PWS100_SIRTA.py +2 -1
- disdrodb/l0/readers/RD80/BRAZIL/ATTO_RD80.py +1 -3
- 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 +2 -3
- disdrodb/l0/readers/SWS250/BELGIUM/KMI.py +2 -3
- disdrodb/l0/readers/template_reader_raw_netcdf_data.py +2 -3
- disdrodb/l0/readers/template_reader_raw_text_data.py +2 -3
- disdrodb/l0/standards.py +4 -5
- disdrodb/l0/template_tools.py +7 -11
- disdrodb/l1/__init__.py +2 -1
- disdrodb/l1/classification.py +914 -0
- disdrodb/l1/processing.py +36 -106
- disdrodb/l1/resampling.py +13 -3
- disdrodb/l1_env/__init__.py +1 -1
- disdrodb/l1_env/routines.py +7 -6
- disdrodb/l2/__init__.py +2 -1
- disdrodb/l2/empirical_dsd.py +58 -31
- disdrodb/l2/processing.py +327 -61
- disdrodb/metadata/checks.py +10 -13
- disdrodb/metadata/download.py +5 -4
- disdrodb/metadata/geolocation.py +3 -4
- disdrodb/metadata/info.py +3 -5
- disdrodb/metadata/manipulation.py +1 -3
- disdrodb/metadata/reader.py +1 -3
- disdrodb/metadata/search.py +1 -4
- disdrodb/metadata/standards.py +1 -3
- disdrodb/metadata/writer.py +1 -3
- disdrodb/physics/__init__.py +17 -0
- disdrodb/physics/atmosphere.py +273 -0
- disdrodb/physics/water.py +131 -0
- disdrodb/physics/wrappers.py +63 -0
- disdrodb/psd/__init__.py +1 -2
- disdrodb/psd/fitting.py +23 -9
- disdrodb/psd/models.py +2 -1
- disdrodb/routines/__init__.py +6 -1
- disdrodb/routines/l0.py +39 -25
- disdrodb/routines/l1.py +23 -16
- disdrodb/routines/l2.py +12 -9
- disdrodb/routines/options.py +117 -73
- disdrodb/routines/options_validation.py +728 -0
- disdrodb/routines/wrappers.py +460 -40
- disdrodb/scattering/__init__.py +1 -2
- disdrodb/scattering/axis_ratio.py +6 -6
- disdrodb/scattering/permittivity.py +9 -8
- disdrodb/scattering/routines.py +33 -15
- disdrodb/summary/__init__.py +1 -1
- disdrodb/summary/routines.py +95 -30
- disdrodb/utils/__init__.py +1 -1
- disdrodb/utils/archiving.py +18 -10
- disdrodb/utils/attrs.py +7 -5
- disdrodb/utils/cli.py +8 -10
- disdrodb/utils/compression.py +10 -13
- disdrodb/utils/coords.py +45 -0
- disdrodb/utils/dask.py +7 -5
- disdrodb/utils/dataframe.py +5 -6
- disdrodb/utils/decorators.py +3 -4
- disdrodb/utils/dict.py +1 -1
- disdrodb/utils/directories.py +5 -7
- disdrodb/utils/encoding.py +4 -5
- disdrodb/utils/event.py +1 -1
- disdrodb/utils/list.py +1 -3
- disdrodb/utils/logger.py +1 -3
- disdrodb/utils/manipulations.py +175 -4
- disdrodb/utils/pydantic.py +81 -0
- disdrodb/utils/routines.py +2 -3
- disdrodb/utils/subsetting.py +1 -1
- disdrodb/utils/time.py +6 -4
- disdrodb/utils/warnings.py +2 -3
- disdrodb/utils/writer.py +5 -3
- disdrodb/utils/xarray.py +31 -3
- disdrodb/utils/yaml.py +1 -3
- disdrodb/viz/__init__.py +1 -1
- disdrodb/viz/plots.py +193 -18
- {disdrodb-0.2.1.dist-info → disdrodb-0.4.0.dist-info}/METADATA +5 -4
- disdrodb-0.4.0.dist-info/RECORD +361 -0
- {disdrodb-0.2.1.dist-info → disdrodb-0.4.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/LPM_V0/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 -662
- disdrodb/l1/filters.py +0 -205
- disdrodb-0.2.1.dist-info/RECORD +0 -329
- {disdrodb-0.2.1.dist-info → disdrodb-0.4.0.dist-info}/WHEEL +0 -0
- {disdrodb-0.2.1.dist-info → disdrodb-0.4.0.dist-info}/licenses/LICENSE +0 -0
- {disdrodb-0.2.1.dist-info → disdrodb-0.4.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
|
|
@@ -23,7 +21,6 @@ import os
|
|
|
23
21
|
import shutil
|
|
24
22
|
import subprocess
|
|
25
23
|
import urllib.parse
|
|
26
|
-
from typing import Optional, Union
|
|
27
24
|
|
|
28
25
|
import click
|
|
29
26
|
import pooch
|
|
@@ -33,7 +30,7 @@ from disdrodb.api.path import define_metadata_filepath, define_station_dir
|
|
|
33
30
|
from disdrodb.configs import get_data_archive_dir, get_metadata_archive_dir
|
|
34
31
|
from disdrodb.metadata import get_list_metadata
|
|
35
32
|
from disdrodb.utils.compression import unzip_file
|
|
36
|
-
from disdrodb.utils.directories import is_empty_directory
|
|
33
|
+
from disdrodb.utils.directories import is_empty_directory, remove_file_or_directories
|
|
37
34
|
from disdrodb.utils.yaml import read_yaml
|
|
38
35
|
|
|
39
36
|
|
|
@@ -99,12 +96,12 @@ def click_download_options(function: object):
|
|
|
99
96
|
|
|
100
97
|
|
|
101
98
|
def download_archive(
|
|
102
|
-
data_sources:
|
|
103
|
-
campaign_names:
|
|
104
|
-
station_names:
|
|
99
|
+
data_sources: str | list[str] | None = None,
|
|
100
|
+
campaign_names: str | list[str] | None = None,
|
|
101
|
+
station_names: str | list[str] | None = None,
|
|
105
102
|
force: bool = False,
|
|
106
|
-
data_archive_dir:
|
|
107
|
-
metadata_archive_dir:
|
|
103
|
+
data_archive_dir: str | None = None,
|
|
104
|
+
metadata_archive_dir: str | None = None,
|
|
108
105
|
):
|
|
109
106
|
"""Download DISDRODB stations with the ``disdrodb_data_url`` in the metadata.
|
|
110
107
|
|
|
@@ -123,7 +120,7 @@ def download_archive(
|
|
|
123
120
|
If not provided (``None``), all stations will be downloaded.
|
|
124
121
|
The default value is ``station_name=None``.
|
|
125
122
|
force : bool, optional
|
|
126
|
-
If ``True``,
|
|
123
|
+
If ``True``, delete existing files and re-download raw data files.
|
|
127
124
|
The default value is ``False``.
|
|
128
125
|
data_archive_dir : str (optional)
|
|
129
126
|
DISDRODB Data Archive directory. Format: ``<...>/DISDRODB``.
|
|
@@ -167,7 +164,8 @@ def download_archive(
|
|
|
167
164
|
force=force,
|
|
168
165
|
)
|
|
169
166
|
except Exception as e:
|
|
170
|
-
|
|
167
|
+
msg = e.args[0] if e.args else str(e)
|
|
168
|
+
print(f" - Download error: {msg}")
|
|
171
169
|
print(" ")
|
|
172
170
|
|
|
173
171
|
|
|
@@ -176,8 +174,8 @@ def download_station(
|
|
|
176
174
|
campaign_name: str,
|
|
177
175
|
station_name: str,
|
|
178
176
|
force: bool = False,
|
|
179
|
-
data_archive_dir:
|
|
180
|
-
metadata_archive_dir:
|
|
177
|
+
data_archive_dir: str | None = None,
|
|
178
|
+
metadata_archive_dir: str | None = None,
|
|
181
179
|
) -> None:
|
|
182
180
|
"""
|
|
183
181
|
Download data of a single DISDRODB station from the DISDRODB remote repository.
|
|
@@ -196,7 +194,7 @@ def download_station(
|
|
|
196
194
|
The base directory of DISDRODB, expected in the format ``<...>/DISDRODB``.
|
|
197
195
|
If not specified, the path specified in the DISDRODB active configuration will be used.
|
|
198
196
|
force: bool, optional
|
|
199
|
-
If ``True``,
|
|
197
|
+
If ``True``, remove existing data and re-download.
|
|
200
198
|
The default value is ``False``.
|
|
201
199
|
data_archive_dir : str (optional)
|
|
202
200
|
DISDRODB Data Archive directory. Format: ``<...>/DISDRODB``.
|
|
@@ -240,7 +238,7 @@ def check_consistent_station_name(metadata_filepath, station_name):
|
|
|
240
238
|
|
|
241
239
|
|
|
242
240
|
def download_station_data(metadata_filepath: str, data_archive_dir: str, force: bool = False, verbose=True) -> None:
|
|
243
|
-
"""Download and unzip the station data
|
|
241
|
+
"""Download and unzip the station data.
|
|
244
242
|
|
|
245
243
|
Parameters
|
|
246
244
|
----------
|
|
@@ -270,26 +268,34 @@ def download_station_data(metadata_filepath: str, data_archive_dir: str, force:
|
|
|
270
268
|
product="RAW",
|
|
271
269
|
)
|
|
272
270
|
# Check DISDRODB data url
|
|
273
|
-
disdrodb_data_url = metadata_dict.get("disdrodb_data_url",
|
|
271
|
+
disdrodb_data_url = metadata_dict.get("disdrodb_data_url", "")
|
|
272
|
+
if disdrodb_data_url == "":
|
|
273
|
+
raise ValueError(f"{campaign_name} {station_name} station data are not yet publicly available.")
|
|
274
274
|
if not _is_valid_disdrodb_data_url(disdrodb_data_url):
|
|
275
275
|
raise ValueError(f"Invalid disdrodb_data_url '{disdrodb_data_url}' for station {station_name}")
|
|
276
276
|
|
|
277
|
+
# Remove existing station directory if force=True
|
|
278
|
+
if force and os.path.exists(station_dir):
|
|
279
|
+
print(f" - Removing existing station data at {station_dir}.")
|
|
280
|
+
remove_file_or_directories(station_dir)
|
|
281
|
+
|
|
277
282
|
# Download files
|
|
278
283
|
# - Option 1: Download ZIP file containing all station raw data
|
|
279
|
-
|
|
280
|
-
|
|
284
|
+
zip_repos = ["https://zenodo.org/", "https://cloudnet.fmi.fi/", "https://data.dtu.dk/"]
|
|
285
|
+
if any(disdrodb_data_url.startswith(repo) for repo in zip_repos):
|
|
286
|
+
download_zip_file(url=disdrodb_data_url, dst_dir=station_dir)
|
|
281
287
|
|
|
282
288
|
# - Option 2: Recursive download from a web server via HTTP or HTTPS.
|
|
283
289
|
elif disdrodb_data_url.startswith("http"):
|
|
284
|
-
download_web_server_data(url=disdrodb_data_url, dst_dir=station_dir,
|
|
290
|
+
download_web_server_data(url=disdrodb_data_url, dst_dir=station_dir, verbose=verbose)
|
|
285
291
|
# - Retry to be more sure that all data have been downloaded
|
|
286
|
-
download_web_server_data(url=disdrodb_data_url, dst_dir=station_dir,
|
|
292
|
+
download_web_server_data(url=disdrodb_data_url, dst_dir=station_dir, verbose=verbose)
|
|
287
293
|
|
|
288
294
|
# - Option 3: Recursive download from a ftp server
|
|
289
295
|
elif disdrodb_data_url.startswith("ftp"):
|
|
290
|
-
download_ftp_server_data(url=disdrodb_data_url, dst_dir=station_dir,
|
|
296
|
+
download_ftp_server_data(url=disdrodb_data_url, dst_dir=station_dir, verbose=verbose)
|
|
291
297
|
# - Retry to be more sure that all data have been downloaded
|
|
292
|
-
download_ftp_server_data(url=disdrodb_data_url, dst_dir=station_dir,
|
|
298
|
+
download_ftp_server_data(url=disdrodb_data_url, dst_dir=station_dir, verbose=verbose)
|
|
293
299
|
|
|
294
300
|
else:
|
|
295
301
|
raise NotImplementedError(f"Open a GitHub Issue to enable the download of data from {disdrodb_data_url}.")
|
|
@@ -299,7 +305,7 @@ def download_station_data(metadata_filepath: str, data_archive_dir: str, force:
|
|
|
299
305
|
#### Download from Web Server via HTTP or HTTPS
|
|
300
306
|
|
|
301
307
|
|
|
302
|
-
def download_web_server_data(url: str, dst_dir: str,
|
|
308
|
+
def download_web_server_data(url: str, dst_dir: str, verbose=True) -> None:
|
|
303
309
|
"""Download data from a web server via HTTP or HTTPS.
|
|
304
310
|
|
|
305
311
|
Use the system's wget command to recursively download all files and subdirectories
|
|
@@ -317,9 +323,6 @@ def download_web_server_data(url: str, dst_dir: str, force=True, verbose=True) -
|
|
|
317
323
|
HTTPS URL pointing to webserver folder. Example: "https://ruisdael.citg.tudelft.nl/parsivel/PAR001_Cabauw/"
|
|
318
324
|
dst_dir : str
|
|
319
325
|
Local directory where to download the file (DISDRODB station data directory).
|
|
320
|
-
force : bool, optional
|
|
321
|
-
If ``True``, re-download new/updated files (skip unchanged ones).
|
|
322
|
-
If ``False``, keep existing files untouched.
|
|
323
326
|
verbose : bool, optional
|
|
324
327
|
Print wget output (default is True).
|
|
325
328
|
"""
|
|
@@ -336,7 +339,7 @@ def download_web_server_data(url: str, dst_dir: str, force=True, verbose=True) -
|
|
|
336
339
|
os.makedirs(dst_dir, exist_ok=True)
|
|
337
340
|
|
|
338
341
|
# 5. Build wget command
|
|
339
|
-
cmd = build_webserver_wget_command(url, cut_dirs=cut_dirs, dst_dir=dst_dir,
|
|
342
|
+
cmd = build_webserver_wget_command(url, cut_dirs=cut_dirs, dst_dir=dst_dir, verbose=verbose)
|
|
340
343
|
|
|
341
344
|
# 6. Run wget command
|
|
342
345
|
try:
|
|
@@ -375,7 +378,7 @@ def compute_cut_dirs(url: str) -> int:
|
|
|
375
378
|
return len(segments)
|
|
376
379
|
|
|
377
380
|
|
|
378
|
-
def build_webserver_wget_command(url: str, cut_dirs: int, dst_dir: str,
|
|
381
|
+
def build_webserver_wget_command(url: str, cut_dirs: int, dst_dir: str, verbose: bool) -> list[str]:
|
|
379
382
|
"""Construct the wget command list for subprocess.run.
|
|
380
383
|
|
|
381
384
|
Notes
|
|
@@ -400,9 +403,9 @@ def build_webserver_wget_command(url: str, cut_dirs: int, dst_dir: str, force: b
|
|
|
400
403
|
"--reject",
|
|
401
404
|
"index.html*", # avoid to download Apache autoindex index.html
|
|
402
405
|
f"--cut-dirs={cut_dirs}",
|
|
406
|
+
# Downloads just new data without re-downloading existing files
|
|
407
|
+
"--timestamping", # -N
|
|
403
408
|
]
|
|
404
|
-
if force:
|
|
405
|
-
cmd.append("--timestamping") # -N
|
|
406
409
|
|
|
407
410
|
# Define source and destination directory
|
|
408
411
|
cmd += [
|
|
@@ -421,7 +424,6 @@ def build_ftp_server_wget_command(
|
|
|
421
424
|
url: str,
|
|
422
425
|
cut_dirs: int,
|
|
423
426
|
dst_dir: str,
|
|
424
|
-
force: bool,
|
|
425
427
|
verbose: bool,
|
|
426
428
|
) -> list[str]:
|
|
427
429
|
"""Construct the wget command list for FTP recursive download.
|
|
@@ -434,9 +436,6 @@ def build_ftp_server_wget_command(
|
|
|
434
436
|
Number of leading path components to strip.
|
|
435
437
|
dst_dir : str
|
|
436
438
|
Local destination directory.
|
|
437
|
-
force : bool
|
|
438
|
-
If True, re-download newer files (--timestamping).
|
|
439
|
-
If False, keep existing files untouched (--no-clobber).
|
|
440
439
|
verbose : bool
|
|
441
440
|
If False, suppress wget output (-q).
|
|
442
441
|
"""
|
|
@@ -450,14 +449,7 @@ def build_ftp_server_wget_command(
|
|
|
450
449
|
"-np", # no parent --> don't ascend to higher-level dirs
|
|
451
450
|
"-nH", # no host dirs --> avoid creating ftp.example.com/ locally
|
|
452
451
|
f"--cut-dirs={cut_dirs}", # strip N leading path components
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
if force:
|
|
456
|
-
cmd.append("--timestamping") # download if remote file is newer
|
|
457
|
-
else:
|
|
458
|
-
cmd.append("--no-clobber") # skip files that already exist
|
|
459
|
-
|
|
460
|
-
cmd += [
|
|
452
|
+
"--timestamping", # download if remote file is newer
|
|
461
453
|
"-P", # specify local destination directory
|
|
462
454
|
dst_dir,
|
|
463
455
|
f"ftp://anonymous:disdrodb@{url}", # target FTP URL
|
|
@@ -465,7 +457,7 @@ def build_ftp_server_wget_command(
|
|
|
465
457
|
return cmd
|
|
466
458
|
|
|
467
459
|
|
|
468
|
-
def download_ftp_server_data(url: str, dst_dir: str,
|
|
460
|
+
def download_ftp_server_data(url: str, dst_dir: str, verbose: bool = True) -> None:
|
|
469
461
|
"""Download data from an FTP server with anonymous login.
|
|
470
462
|
|
|
471
463
|
Parameters
|
|
@@ -474,9 +466,6 @@ def download_ftp_server_data(url: str, dst_dir: str, force: bool = False, verbos
|
|
|
474
466
|
FTP server URL pointing to a folder. Example: "ftp://ftp.example.com/path/to/data/"
|
|
475
467
|
dst_dir : str
|
|
476
468
|
Local directory where to download the file (DISDRODB station data directory).
|
|
477
|
-
force : bool, optional
|
|
478
|
-
If ``True``, re-download new/updated files (skip unchanged ones).
|
|
479
|
-
If ``False``, keep existing files untouched.
|
|
480
469
|
verbose : bool, optional
|
|
481
470
|
Print wget output (default is True).
|
|
482
471
|
"""
|
|
@@ -496,7 +485,6 @@ def download_ftp_server_data(url: str, dst_dir: str, force: bool = False, verbos
|
|
|
496
485
|
url,
|
|
497
486
|
cut_dirs=cut_dirs,
|
|
498
487
|
dst_dir=dst_dir,
|
|
499
|
-
force=force,
|
|
500
488
|
verbose=verbose,
|
|
501
489
|
)
|
|
502
490
|
# Run wget
|
|
@@ -515,15 +503,15 @@ def download_ftp_server_data(url: str, dst_dir: str, force: bool = False, verbos
|
|
|
515
503
|
#### Download from Zenodo
|
|
516
504
|
|
|
517
505
|
|
|
518
|
-
def download_zip_file(url, dst_dir
|
|
506
|
+
def download_zip_file(url, dst_dir):
|
|
519
507
|
"""Download zip file from zenodo and extract station raw data."""
|
|
520
508
|
# Download zip file
|
|
521
|
-
zip_filepath = _download_file_from_url(url, dst_dir=dst_dir
|
|
509
|
+
zip_filepath = _download_file_from_url(url, dst_dir=dst_dir)
|
|
522
510
|
# Extract the stations files from the downloaded station.zip file
|
|
523
511
|
_extract_station_files(zip_filepath, station_dir=dst_dir)
|
|
524
512
|
|
|
525
513
|
|
|
526
|
-
def _download_file_from_url(url: str, dst_dir: str
|
|
514
|
+
def _download_file_from_url(url: str, dst_dir: str) -> str:
|
|
527
515
|
"""Download station zip file into the DISDRODB station data directory.
|
|
528
516
|
|
|
529
517
|
Parameters
|
|
@@ -532,8 +520,6 @@ def _download_file_from_url(url: str, dst_dir: str, force: bool = False) -> str:
|
|
|
532
520
|
URL of the file to download.
|
|
533
521
|
dst_dir : str
|
|
534
522
|
Local directory where to download the file (DISDRODB station data directory).
|
|
535
|
-
force : bool, optional
|
|
536
|
-
Overwrite the raw data file if already existing. The default value is ``False``.
|
|
537
523
|
|
|
538
524
|
Returns
|
|
539
525
|
-------
|
|
@@ -544,16 +530,14 @@ def _download_file_from_url(url: str, dst_dir: str, force: bool = False) -> str:
|
|
|
544
530
|
"""
|
|
545
531
|
dst_filename = os.path.basename(dst_dir) + ".zip"
|
|
546
532
|
dst_filepath = os.path.join(dst_dir, dst_filename)
|
|
533
|
+
# Ensure destination directory exists and is empty
|
|
547
534
|
os.makedirs(dst_dir, exist_ok=True)
|
|
548
535
|
if not is_empty_directory(dst_dir):
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
f"There are already raw files within the DISDRODB Data Archive at {dst_dir}. Download is suspended. "
|
|
555
|
-
"Use force=True to force the download and overwrite existing raw files.",
|
|
556
|
-
)
|
|
536
|
+
raise ValueError(
|
|
537
|
+
"ZIP archive download is aborted."
|
|
538
|
+
f"There are already raw files within the DISDRODB Data Archive at {dst_dir}."
|
|
539
|
+
"Use force=True if you wish to remove existing files and redownload the station archive.",
|
|
540
|
+
)
|
|
557
541
|
|
|
558
542
|
os.makedirs(dst_dir, exist_ok=True)
|
|
559
543
|
|
|
@@ -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
|
|
@@ -18,8 +16,6 @@
|
|
|
18
16
|
# -----------------------------------------------------------------------------.
|
|
19
17
|
"""Routines to upload data to the DISDRODB Decentralized Data Archive."""
|
|
20
18
|
|
|
21
|
-
from typing import Optional
|
|
22
|
-
|
|
23
19
|
import click
|
|
24
20
|
|
|
25
21
|
from disdrodb.api.path import define_metadata_filepath
|
|
@@ -125,10 +121,10 @@ def upload_station(
|
|
|
125
121
|
data_source: str,
|
|
126
122
|
campaign_name: str,
|
|
127
123
|
station_name: str,
|
|
128
|
-
platform:
|
|
124
|
+
platform: str | None = "sandbox.zenodo",
|
|
129
125
|
force: bool = False,
|
|
130
|
-
data_archive_dir:
|
|
131
|
-
metadata_archive_dir:
|
|
126
|
+
data_archive_dir: str | None = None,
|
|
127
|
+
metadata_archive_dir: str | None = None,
|
|
132
128
|
) -> None:
|
|
133
129
|
"""
|
|
134
130
|
Upload data from a single DISDRODB station on a remote repository.
|
|
@@ -191,10 +187,10 @@ def upload_station(
|
|
|
191
187
|
|
|
192
188
|
|
|
193
189
|
def upload_archive(
|
|
194
|
-
platform:
|
|
190
|
+
platform: str | None = None,
|
|
195
191
|
force: bool = False,
|
|
196
|
-
data_archive_dir:
|
|
197
|
-
metadata_archive_dir:
|
|
192
|
+
data_archive_dir: str | None = None,
|
|
193
|
+
metadata_archive_dir: str | None = None,
|
|
198
194
|
**fields_kwargs,
|
|
199
195
|
) -> None:
|
|
200
196
|
"""Find all stations containing local data and upload them to a remote repository.
|
disdrodb/data_transfer/zenodo.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
|
|
@@ -162,7 +160,7 @@ def _define_creators_list(metadata):
|
|
|
162
160
|
|
|
163
161
|
# Create info dictionary of each author
|
|
164
162
|
list_creator_dict = []
|
|
165
|
-
for name, identifier, affiliation in zip(list_names, list_identifier, list_affiliation):
|
|
163
|
+
for name, identifier, affiliation in zip(list_names, list_identifier, list_affiliation, strict=True):
|
|
166
164
|
creator_dict = {}
|
|
167
165
|
creator_dict["name"] = name.strip()
|
|
168
166
|
creator_dict["orcid"] = identifier.strip()
|
disdrodb/docs.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
|
|
@@ -67,6 +67,36 @@ sample_interval:
|
|
|
67
67
|
long_name: Sampling interval
|
|
68
68
|
description: Sampling interval in seconds.
|
|
69
69
|
unit: s
|
|
70
|
+
n_particles:
|
|
71
|
+
long_name: "number of particles"
|
|
72
|
+
standard_name: "number_of_particles"
|
|
73
|
+
units: "1"
|
|
74
|
+
description: "Total count of hydrometeor particles."
|
|
75
|
+
valid_min: 0
|
|
76
|
+
n_low_density_graupel:
|
|
77
|
+
long_name: "number of low-density graupel particles"
|
|
78
|
+
standard_name: "number_of_graupel_particles"
|
|
79
|
+
units: "1"
|
|
80
|
+
description: "Count of low-density (<400 kg/m3) graupel particles."
|
|
81
|
+
valid_min: 0
|
|
82
|
+
n_high_density_graupel:
|
|
83
|
+
long_name: "number of high-density graupel particles"
|
|
84
|
+
standard_name: "number_of_graupel_particles"
|
|
85
|
+
units: "1"
|
|
86
|
+
description: "Count of high-density (>400 kg/m3) graupel particles."
|
|
87
|
+
valid_min: 0
|
|
88
|
+
n_small_hail:
|
|
89
|
+
long_name: "number of small hail particles"
|
|
90
|
+
standard_name: "number_of_small_hail_particles"
|
|
91
|
+
units: "1"
|
|
92
|
+
description: "Count of hail particles smaller than 8 mm in diameter."
|
|
93
|
+
valid_min: 0
|
|
94
|
+
n_large_hail:
|
|
95
|
+
long_name: "number of large hail particles"
|
|
96
|
+
standard_name: "number_of_large_hail_particles"
|
|
97
|
+
units: "1"
|
|
98
|
+
description: "Count of hail particles larger than 8 mm in diameter."
|
|
99
|
+
valid_min: 0
|
|
70
100
|
drop_number:
|
|
71
101
|
description: Counts of drops per diameter and velocity class
|
|
72
102
|
long_name: Drop counts per diameter and velocity class
|
|
@@ -259,8 +289,12 @@ RHOHV:
|
|
|
259
289
|
reflectivity
|
|
260
290
|
long_name: Copolarized Correlation Coefficient
|
|
261
291
|
units: ""
|
|
262
|
-
|
|
263
|
-
description: Linear depolarization ratio
|
|
292
|
+
LDRH:
|
|
293
|
+
description: Linear depolarization ratio at horizontal polarization
|
|
294
|
+
long_name: Linear Depolarization Ratio
|
|
295
|
+
units: dB
|
|
296
|
+
LDRV:
|
|
297
|
+
description: Linear depolarization ratio at vertical polarization
|
|
264
298
|
long_name: Linear Depolarization Ratio
|
|
265
299
|
units: dB
|
|
266
300
|
KDP:
|
|
@@ -337,3 +371,19 @@ KLDiv:
|
|
|
337
371
|
description: A distance measure of how the modelled distribution diverges from the observed N(D) one.
|
|
338
372
|
units: ""
|
|
339
373
|
valid_range: [0, inf]
|
|
374
|
+
air_temperature:
|
|
375
|
+
description: "Air temperature in degrees Celsius (C)"
|
|
376
|
+
long_name: Air temperature
|
|
377
|
+
units: "degC"
|
|
378
|
+
relative_humidity:
|
|
379
|
+
description: "Relative humidity in percent (%)"
|
|
380
|
+
long_name: Relative humidity
|
|
381
|
+
units: "%"
|
|
382
|
+
wind_speed:
|
|
383
|
+
description: "Wind speed in m/s"
|
|
384
|
+
long_name: Wind speed
|
|
385
|
+
units: "m/s"
|
|
386
|
+
wind_direction:
|
|
387
|
+
description: "Wind direction in degrees (0-360)"
|
|
388
|
+
long_name: Wind direction
|
|
389
|
+
units: "degrees"
|
|
@@ -373,7 +373,14 @@ DELTAHV:
|
|
|
373
373
|
shuffle: true
|
|
374
374
|
fletcher32: false
|
|
375
375
|
contiguous: false
|
|
376
|
-
|
|
376
|
+
LDRH:
|
|
377
|
+
dtype: float32
|
|
378
|
+
zlib: true
|
|
379
|
+
complevel: 3
|
|
380
|
+
shuffle: true
|
|
381
|
+
fletcher32: false
|
|
382
|
+
contiguous: false
|
|
383
|
+
LDRV:
|
|
377
384
|
dtype: float32
|
|
378
385
|
zlib: true
|
|
379
386
|
complevel: 3
|
|
@@ -471,3 +478,40 @@ KLDiv:
|
|
|
471
478
|
shuffle: true
|
|
472
479
|
fletcher32: false
|
|
473
480
|
contiguous: false
|
|
481
|
+
air_temperature:
|
|
482
|
+
dtype: uint16
|
|
483
|
+
scale_factor: 0.1
|
|
484
|
+
add_offset: -99.9
|
|
485
|
+
zlib: true
|
|
486
|
+
complevel: 3
|
|
487
|
+
shuffle: true
|
|
488
|
+
fletcher32: false
|
|
489
|
+
contiguous: false
|
|
490
|
+
_FillValue: 65535
|
|
491
|
+
relative_humidity:
|
|
492
|
+
dtype: uint16
|
|
493
|
+
scale_factor: 0.01
|
|
494
|
+
zlib: true
|
|
495
|
+
complevel: 3
|
|
496
|
+
shuffle: true
|
|
497
|
+
fletcher32: false
|
|
498
|
+
contiguous: false
|
|
499
|
+
_FillValue: 65535
|
|
500
|
+
wind_speed:
|
|
501
|
+
dtype: uint16
|
|
502
|
+
scale_factor: 0.1
|
|
503
|
+
add_offset: -99.9
|
|
504
|
+
zlib: true
|
|
505
|
+
complevel: 3
|
|
506
|
+
shuffle: true
|
|
507
|
+
fletcher32: false
|
|
508
|
+
contiguous: false
|
|
509
|
+
_FillValue: 65535
|
|
510
|
+
wind_direction:
|
|
511
|
+
dtype: uint16
|
|
512
|
+
zlib: true
|
|
513
|
+
complevel: 3
|
|
514
|
+
shuffle: true
|
|
515
|
+
fletcher32: false
|
|
516
|
+
contiguous: false
|
|
517
|
+
_FillValue: 65535
|
|
@@ -4,16 +4,3 @@ archive_options:
|
|
|
4
4
|
strategy_options:
|
|
5
5
|
freq: day
|
|
6
6
|
folder_partitioning: "year"
|
|
7
|
-
product_options:
|
|
8
|
-
fall_velocity_model: "Beard1976"
|
|
9
|
-
minimum_diameter: 0
|
|
10
|
-
maximum_diameter: 10
|
|
11
|
-
minimum_velocity: 0
|
|
12
|
-
maximum_velocity: 12
|
|
13
|
-
above_velocity_fraction: 0.5
|
|
14
|
-
above_velocity_tolerance: null
|
|
15
|
-
below_velocity_fraction: 0.5
|
|
16
|
-
below_velocity_tolerance: null
|
|
17
|
-
small_diameter_threshold: 1
|
|
18
|
-
small_velocity_threshold: 2.5
|
|
19
|
-
maintain_smallest_drops: True
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
radar_enabled: True
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
temporal_resolutions: ["1MIN", "5MIN", "10MIN"]
|
|
2
|
+
archive_options:
|
|
3
|
+
strategy: time_block
|
|
4
|
+
strategy_options:
|
|
5
|
+
freq: month
|
|
6
|
+
folder_partitioning: ""
|
|
7
|
+
product_options:
|
|
8
|
+
compute_spectra: False
|
|
9
|
+
compute_percentage_contribution: False
|
|
10
|
+
minimum_ndrops: 1
|
|
11
|
+
minimum_nbins: 1
|
|
12
|
+
minimum_rain_rate: 0.01
|
|
13
|
+
fall_velocity_model: "Beard1976"
|
|
14
|
+
minimum_diameter: 0.375
|
|
15
|
+
maximum_diameter: 10
|
|
16
|
+
minimum_velocity: 0
|
|
17
|
+
maximum_velocity: 12
|
|
18
|
+
keep_mixed_precipitation: False
|
|
19
|
+
above_velocity_fraction: null
|
|
20
|
+
above_velocity_tolerance: 3
|
|
21
|
+
below_velocity_fraction: null
|
|
22
|
+
below_velocity_tolerance: 3
|
|
23
|
+
maintain_drops_smaller_than: 1
|
|
24
|
+
maintain_drops_slower_than: 2.5
|
|
25
|
+
maintain_smallest_drops: True
|
|
26
|
+
remove_splashing_drops: True
|
|
27
|
+
radar_enabled: False
|
|
28
|
+
radar_options:
|
|
29
|
+
frequency: ["S", "C", "X", "Ku", "K", "Ka", "W"]
|
|
30
|
+
num_points: 1024
|
|
31
|
+
diameter_max: 10
|
|
32
|
+
canting_angle_std: 7
|
|
33
|
+
axis_ratio_model: Thurai2007
|
|
34
|
+
permittivity_model: Turner2016
|
|
35
|
+
water_temperature: 10
|
|
36
|
+
elevation_angle: 0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
radar_enabled: True
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
temporal_resolutions: ["1MIN", "5MIN", "10MIN"]
|
|
2
|
+
archive_options:
|
|
3
|
+
strategy: time_block
|
|
4
|
+
strategy_options:
|
|
5
|
+
freq: month
|
|
6
|
+
folder_partitioning: ""
|
|
7
|
+
product_options:
|
|
8
|
+
compute_spectra: False
|
|
9
|
+
compute_percentage_contribution: False
|
|
10
|
+
minimum_ndrops: 1
|
|
11
|
+
minimum_nbins: 1
|
|
12
|
+
minimum_rain_rate: 0.01
|
|
13
|
+
fall_velocity_model: "Beard1976"
|
|
14
|
+
minimum_diameter: 0.375
|
|
15
|
+
maximum_diameter: 10
|
|
16
|
+
minimum_velocity: 0
|
|
17
|
+
maximum_velocity: 12
|
|
18
|
+
keep_mixed_precipitation: False
|
|
19
|
+
above_velocity_fraction: null
|
|
20
|
+
above_velocity_tolerance: 3
|
|
21
|
+
below_velocity_fraction: null
|
|
22
|
+
below_velocity_tolerance: 3
|
|
23
|
+
maintain_drops_smaller_than: 1
|
|
24
|
+
maintain_drops_slower_than: 2.5
|
|
25
|
+
maintain_smallest_drops: True
|
|
26
|
+
remove_splashing_drops: True
|
|
27
|
+
radar_enabled: False
|
|
28
|
+
radar_options:
|
|
29
|
+
frequency: ["S", "C", "X", "Ku", "K", "Ka", "W"]
|
|
30
|
+
num_points: 1024
|
|
31
|
+
diameter_max: 10
|
|
32
|
+
canting_angle_std: 7
|
|
33
|
+
axis_ratio_model: Thurai2007
|
|
34
|
+
permittivity_model: Turner2016
|
|
35
|
+
water_temperature: 10
|
|
36
|
+
elevation_angle: 0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
radar_enabled: True
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
temporal_resolutions: ["1MIN", "5MIN", "10MIN", "ROLL1MIN"]
|
|
2
|
+
archive_options:
|
|
3
|
+
strategy: time_block
|
|
4
|
+
strategy_options:
|
|
5
|
+
freq: month
|
|
6
|
+
folder_partitioning: ""
|
|
7
|
+
product_options:
|
|
8
|
+
compute_spectra: False
|
|
9
|
+
compute_percentage_contribution: False
|
|
10
|
+
minimum_ndrops: 1
|
|
11
|
+
minimum_nbins: 1
|
|
12
|
+
minimum_rain_rate: 0.01
|
|
13
|
+
fall_velocity_model: "Beard1976"
|
|
14
|
+
minimum_diameter: 0.4
|
|
15
|
+
maximum_diameter: 10
|
|
16
|
+
minimum_velocity: 0
|
|
17
|
+
maximum_velocity: 12
|
|
18
|
+
keep_mixed_precipitation: False
|
|
19
|
+
above_velocity_fraction: null
|
|
20
|
+
above_velocity_tolerance: 3
|
|
21
|
+
below_velocity_fraction: null
|
|
22
|
+
below_velocity_tolerance: 3
|
|
23
|
+
maintain_drops_smaller_than: 1
|
|
24
|
+
maintain_drops_slower_than: 2.5
|
|
25
|
+
maintain_smallest_drops: True
|
|
26
|
+
remove_splashing_drops: True
|
|
27
|
+
radar_enabled: False
|
|
28
|
+
radar_options:
|
|
29
|
+
frequency: ["S", "C", "X", "Ku", "K", "Ka", "W"]
|
|
30
|
+
num_points: 1024
|
|
31
|
+
diameter_max: 10
|
|
32
|
+
canting_angle_std: 7
|
|
33
|
+
axis_ratio_model: Thurai2007
|
|
34
|
+
permittivity_model: Turner2016
|
|
35
|
+
water_temperature: 10
|
|
36
|
+
elevation_angle: 0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
radar_enabled: True
|