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
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
precipitation_rate:
|
|
2
|
+
dtype: float32
|
|
3
|
+
zlib: true
|
|
4
|
+
complevel: 3
|
|
5
|
+
shuffle: true
|
|
6
|
+
fletcher32: false
|
|
7
|
+
contiguous: false
|
|
8
|
+
chunksizes: 43200
|
|
9
|
+
precip_flag:
|
|
10
|
+
dtype: int8
|
|
11
|
+
zlib: true
|
|
12
|
+
complevel: 3
|
|
13
|
+
shuffle: true
|
|
14
|
+
fletcher32: false
|
|
15
|
+
contiguous: false
|
|
16
|
+
chunksizes: 43200
|
|
17
|
+
_FillValue: 127
|
|
18
|
+
reference_voltage:
|
|
19
|
+
dtype: float32
|
|
20
|
+
zlib: true
|
|
21
|
+
complevel: 3
|
|
22
|
+
shuffle: true
|
|
23
|
+
fletcher32: false
|
|
24
|
+
contiguous: false
|
|
25
|
+
chunksizes: 43200
|
|
26
|
+
weather_code_synop_4677:
|
|
27
|
+
dtype: uint8
|
|
28
|
+
zlib: true
|
|
29
|
+
complevel: 3
|
|
30
|
+
shuffle: true
|
|
31
|
+
fletcher32: false
|
|
32
|
+
contiguous: false
|
|
33
|
+
chunksizes: 5000
|
|
34
|
+
_FillValue: 255
|
|
35
|
+
relative_wind_speed:
|
|
36
|
+
dtype: uint16
|
|
37
|
+
scale_factor: 0.1
|
|
38
|
+
add_offset: -99.9
|
|
39
|
+
zlib: true
|
|
40
|
+
complevel: 3
|
|
41
|
+
shuffle: true
|
|
42
|
+
fletcher32: false
|
|
43
|
+
contiguous: false
|
|
44
|
+
_FillValue: 65535
|
|
45
|
+
chunksizes: 43200
|
|
46
|
+
relative_wind_direction:
|
|
47
|
+
dtype: uint16
|
|
48
|
+
zlib: true
|
|
49
|
+
complevel: 3
|
|
50
|
+
shuffle: true
|
|
51
|
+
fletcher32: false
|
|
52
|
+
contiguous: false
|
|
53
|
+
_FillValue: 65535
|
|
54
|
+
chunksizes: 43200
|
|
55
|
+
raw_drop_number:
|
|
56
|
+
dtype: uint16
|
|
57
|
+
zlib: true
|
|
58
|
+
complevel: 3
|
|
59
|
+
shuffle: true
|
|
60
|
+
fletcher32: false
|
|
61
|
+
contiguous: false
|
|
62
|
+
_FillValue: 65535
|
|
63
|
+
chunksizes:
|
|
64
|
+
- 43200
|
|
65
|
+
- 128
|
|
66
|
+
air_temperature:
|
|
67
|
+
dtype: uint16
|
|
68
|
+
scale_factor: 0.1
|
|
69
|
+
add_offset: -99.9
|
|
70
|
+
zlib: true
|
|
71
|
+
complevel: 3
|
|
72
|
+
shuffle: true
|
|
73
|
+
fletcher32: false
|
|
74
|
+
contiguous: false
|
|
75
|
+
_FillValue: 65535
|
|
76
|
+
chunksizes: 43200
|
|
77
|
+
relative_humidity:
|
|
78
|
+
dtype: uint16
|
|
79
|
+
scale_factor: 0.01
|
|
80
|
+
zlib: true
|
|
81
|
+
complevel: 3
|
|
82
|
+
shuffle: true
|
|
83
|
+
fletcher32: false
|
|
84
|
+
contiguous: false
|
|
85
|
+
_FillValue: 65535
|
|
86
|
+
chunksizes: 43200
|
|
87
|
+
wind_speed:
|
|
88
|
+
dtype: uint16
|
|
89
|
+
scale_factor: 0.1
|
|
90
|
+
add_offset: -99.9
|
|
91
|
+
zlib: true
|
|
92
|
+
complevel: 3
|
|
93
|
+
shuffle: true
|
|
94
|
+
fletcher32: false
|
|
95
|
+
contiguous: false
|
|
96
|
+
_FillValue: 65535
|
|
97
|
+
chunksizes: 43200
|
|
98
|
+
wind_direction:
|
|
99
|
+
dtype: uint16
|
|
100
|
+
zlib: true
|
|
101
|
+
complevel: 3
|
|
102
|
+
shuffle: true
|
|
103
|
+
fletcher32: false
|
|
104
|
+
contiguous: false
|
|
105
|
+
_FillValue: 65535
|
|
106
|
+
chunksizes: 43200
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
precipitation_rate:
|
|
2
|
+
n_digits: 6
|
|
3
|
+
n_characters: 7
|
|
4
|
+
n_decimals: 3
|
|
5
|
+
n_naturals: 3
|
|
6
|
+
data_range:
|
|
7
|
+
- 0.0
|
|
8
|
+
- 999.999
|
|
9
|
+
nan_flags: null
|
|
10
|
+
field_number: "1"
|
|
11
|
+
reference_voltage:
|
|
12
|
+
n_digits: 6
|
|
13
|
+
n_characters: 7
|
|
14
|
+
n_decimals: 3
|
|
15
|
+
n_naturals: 3
|
|
16
|
+
data_range:
|
|
17
|
+
- 0.0
|
|
18
|
+
- 5.5
|
|
19
|
+
nan_flags: null
|
|
20
|
+
field_number: "2"
|
|
21
|
+
relative_wind_speed:
|
|
22
|
+
n_digits: 6
|
|
23
|
+
n_characters: 7
|
|
24
|
+
n_decimals: 3
|
|
25
|
+
n_naturals: 3
|
|
26
|
+
data_range:
|
|
27
|
+
- 0.0
|
|
28
|
+
- 100
|
|
29
|
+
nan_flags: null
|
|
30
|
+
field_number: "3"
|
|
31
|
+
relative_wind_direction:
|
|
32
|
+
n_digits: 6
|
|
33
|
+
n_characters: 7
|
|
34
|
+
n_decimals: 3
|
|
35
|
+
n_naturals: 3
|
|
36
|
+
data_range:
|
|
37
|
+
- 0.0
|
|
38
|
+
- 360
|
|
39
|
+
nan_flags: null
|
|
40
|
+
field_number: "4"
|
|
41
|
+
precip_flag:
|
|
42
|
+
n_digits: 1
|
|
43
|
+
n_characters: 1
|
|
44
|
+
n_decimals: 0
|
|
45
|
+
n_naturals: 0
|
|
46
|
+
data_range:
|
|
47
|
+
- -1
|
|
48
|
+
- 5
|
|
49
|
+
nan_flags: null
|
|
50
|
+
field_number: "5"
|
|
51
|
+
weather_code_synop_4677:
|
|
52
|
+
n_digits: 2
|
|
53
|
+
n_characters: 2
|
|
54
|
+
n_decimals: 0
|
|
55
|
+
n_naturals: 2
|
|
56
|
+
data_range:
|
|
57
|
+
- 0
|
|
58
|
+
- 90
|
|
59
|
+
nan_flags: null
|
|
60
|
+
field_number: "6"
|
|
61
|
+
raw_drop_number:
|
|
62
|
+
n_digits: 1317
|
|
63
|
+
n_characters: 1756
|
|
64
|
+
n_decimals: 1317
|
|
65
|
+
n_naturals: 0
|
|
66
|
+
data_range: null
|
|
67
|
+
nan_flags: null
|
|
68
|
+
dimension_order:
|
|
69
|
+
- diameter_bin_center
|
|
70
|
+
n_values: 128
|
|
71
|
+
field_number: "81"
|
|
72
|
+
air_temperature:
|
|
73
|
+
n_digits: 4
|
|
74
|
+
n_characters: 5
|
|
75
|
+
n_decimals: 1
|
|
76
|
+
n_naturals: 2
|
|
77
|
+
data_range:
|
|
78
|
+
- -40
|
|
79
|
+
- 70
|
|
80
|
+
nan_flags: 99999
|
|
81
|
+
field_number: "521"
|
|
82
|
+
relative_humidity:
|
|
83
|
+
n_digits: 5
|
|
84
|
+
n_characters: 5
|
|
85
|
+
n_decimals: 0
|
|
86
|
+
n_naturals: 5
|
|
87
|
+
data_range:
|
|
88
|
+
- 0
|
|
89
|
+
- 99999
|
|
90
|
+
nan_flags: 99999
|
|
91
|
+
field_number: "522"
|
|
92
|
+
wind_speed:
|
|
93
|
+
n_digits: 3
|
|
94
|
+
n_characters: 4
|
|
95
|
+
n_decimals: 1
|
|
96
|
+
n_naturals: 2
|
|
97
|
+
data_range:
|
|
98
|
+
- 0
|
|
99
|
+
- 60
|
|
100
|
+
nan_flags: null
|
|
101
|
+
field_number: "523"
|
|
102
|
+
wind_direction:
|
|
103
|
+
n_digits: 3
|
|
104
|
+
n_characters: 3
|
|
105
|
+
n_decimals: 0
|
|
106
|
+
n_naturals: 3
|
|
107
|
+
data_range:
|
|
108
|
+
- 0
|
|
109
|
+
- 360
|
|
110
|
+
nan_flags: 999
|
|
111
|
+
field_number: "524"
|
|
@@ -121,7 +121,7 @@ reflectivity_16bit:
|
|
|
121
121
|
raw_drop_concentration:
|
|
122
122
|
description: Particle number concentrations per diameter class
|
|
123
123
|
long_name: Raw drop concentration
|
|
124
|
-
units: 1/(m3*mm)
|
|
124
|
+
units: log10 1/(m3*mm)
|
|
125
125
|
raw_drop_average_velocity:
|
|
126
126
|
description: Average particle velocities for each diameter class
|
|
127
127
|
long_name: Raw drop average velocity
|
disdrodb/l0/l0_reader.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
|
|
@@ -17,6 +15,7 @@
|
|
|
17
15
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
18
16
|
# -----------------------------------------------------------------------------.
|
|
19
17
|
"""Define DISDRODB L0 readers routines."""
|
|
18
|
+
|
|
20
19
|
import inspect
|
|
21
20
|
import logging
|
|
22
21
|
import os
|
disdrodb/l0/l0a_processing.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
|
|
@@ -20,11 +18,9 @@
|
|
|
20
18
|
|
|
21
19
|
import logging
|
|
22
20
|
import os
|
|
23
|
-
from typing import Union
|
|
24
21
|
|
|
25
22
|
import numpy as np
|
|
26
23
|
import pandas as pd
|
|
27
|
-
import pyarrow.parquet as pq
|
|
28
24
|
|
|
29
25
|
from disdrodb.l0.check_standards import check_l0a_column_names, check_l0a_standards
|
|
30
26
|
from disdrodb.l0.l0b_processing import infer_split_str
|
|
@@ -771,7 +767,7 @@ def concatenate_dataframe(list_df: list, logger=None, verbose: bool = False) ->
|
|
|
771
767
|
|
|
772
768
|
|
|
773
769
|
def read_l0a_dataframe(
|
|
774
|
-
filepaths:
|
|
770
|
+
filepaths: str | list,
|
|
775
771
|
debugging_mode: bool = False,
|
|
776
772
|
) -> pd.DataFrame:
|
|
777
773
|
"""Read DISDRODB L0A Apache Parquet file(s).
|
|
@@ -792,6 +788,8 @@ def read_l0a_dataframe(
|
|
|
792
788
|
L0A Dataframe.
|
|
793
789
|
|
|
794
790
|
"""
|
|
791
|
+
from disdrodb.api.io import open_parquet_files
|
|
792
|
+
|
|
795
793
|
# ----------------------------------------
|
|
796
794
|
# Check filepaths validity
|
|
797
795
|
if not isinstance(filepaths, (list, str)):
|
|
@@ -808,7 +806,7 @@ def read_l0a_dataframe(
|
|
|
808
806
|
|
|
809
807
|
# ---------------------------------------------------
|
|
810
808
|
# Define the list of dataframe
|
|
811
|
-
df =
|
|
809
|
+
df = open_parquet_files(filepaths, use_threads=False)
|
|
812
810
|
|
|
813
811
|
# Reduce rows
|
|
814
812
|
if debugging_mode:
|
|
@@ -834,7 +832,7 @@ def read_l0a_dataframe(
|
|
|
834
832
|
|
|
835
833
|
|
|
836
834
|
def generate_l0a(
|
|
837
|
-
filepaths:
|
|
835
|
+
filepaths: list | str,
|
|
838
836
|
reader,
|
|
839
837
|
sensor_name,
|
|
840
838
|
issue_dict=None,
|
disdrodb/l0/l0b_nc_processing.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
|
"""Functions to process DISDRODB raw netCDF files into DISDRODB L0B netCDF files."""
|
|
20
18
|
|
|
21
19
|
import logging
|
|
22
|
-
from typing import Union
|
|
23
20
|
|
|
24
21
|
import numpy as np
|
|
25
22
|
|
|
@@ -50,7 +47,7 @@ def _check_dict_names_validity(dict_names, sensor_name):
|
|
|
50
47
|
keys = np.array(list(dict_names.keys()))
|
|
51
48
|
values = np.array(list(dict_names.values()))
|
|
52
49
|
# Get invalid keys
|
|
53
|
-
invalid_keys = keys[np.isin(values, valid_names, invert=True)]
|
|
50
|
+
invalid_keys = keys[np.isin(values, valid_names, invert=True)].tolist()
|
|
54
51
|
if len(invalid_keys) > 0:
|
|
55
52
|
# Report invalid keys and raise error
|
|
56
53
|
invalid_dict = {k: dict_names[k] for k in invalid_keys}
|
|
@@ -536,7 +533,7 @@ def open_raw_netcdf_file(
|
|
|
536
533
|
|
|
537
534
|
|
|
538
535
|
def generate_l0b_from_nc(
|
|
539
|
-
filepaths:
|
|
536
|
+
filepaths: list | str,
|
|
540
537
|
reader,
|
|
541
538
|
sensor_name,
|
|
542
539
|
metadata,
|
disdrodb/l0/l0b_processing.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
|
|
@@ -42,6 +40,7 @@ from disdrodb.utils.attrs import (
|
|
|
42
40
|
set_coordinate_attributes,
|
|
43
41
|
set_disdrodb_attrs,
|
|
44
42
|
)
|
|
43
|
+
from disdrodb.utils.coords import add_dataset_crs_coords
|
|
45
44
|
from disdrodb.utils.encoding import set_encodings
|
|
46
45
|
from disdrodb.utils.logger import log_info
|
|
47
46
|
from disdrodb.utils.time import ensure_sorted_by_time
|
|
@@ -393,19 +392,6 @@ def set_variable_attributes(ds: xr.Dataset, sensor_name: str) -> xr.Dataset:
|
|
|
393
392
|
return ds
|
|
394
393
|
|
|
395
394
|
|
|
396
|
-
def add_dataset_crs_coords(ds):
|
|
397
|
-
"""Add the CRS coordinate to the xr.Dataset."""
|
|
398
|
-
# TODO: define CF-compliant CRS !
|
|
399
|
-
# - CF compliant
|
|
400
|
-
# - wkt
|
|
401
|
-
# - add grid_mapping name
|
|
402
|
-
# -->
|
|
403
|
-
# attrs["EPSG"] = 4326
|
|
404
|
-
# attrs["proj4_string"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
|
|
405
|
-
ds = ds.assign_coords({"crs": ["WGS84"]})
|
|
406
|
-
return ds
|
|
407
|
-
|
|
408
|
-
|
|
409
395
|
####--------------------------------------------------------------------------.
|
|
410
396
|
#### L0B Raw DataFrame Preprocessing
|
|
411
397
|
|
disdrodb/l0/l0c_processing.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
|
|
@@ -17,6 +15,7 @@
|
|
|
17
15
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
18
16
|
# -----------------------------------------------------------------------------.
|
|
19
17
|
"""Functions to process DISDRODB L0B files into DISDRODB L0C netCDF files."""
|
|
18
|
+
|
|
20
19
|
import logging
|
|
21
20
|
|
|
22
21
|
import numpy as np
|
|
@@ -52,7 +51,7 @@ def drop_timesteps_with_invalid_sample_interval(ds, measurement_intervals, verbo
|
|
|
52
51
|
# Log information for each invalid timestep
|
|
53
52
|
invalid_timesteps = pd.to_datetime(timesteps[indices_invalid_sample_interval]).strftime("%Y-%m-%d %H:%M:%S")
|
|
54
53
|
invalid_sample_intervals = sample_interval[indices_invalid_sample_interval]
|
|
55
|
-
for tt, ss in zip(invalid_timesteps, invalid_sample_intervals):
|
|
54
|
+
for tt, ss in zip(invalid_timesteps, invalid_sample_intervals, strict=True):
|
|
56
55
|
msg = f"Unexpected sampling interval ({ss} s) at {tt}. The measurement has been dropped."
|
|
57
56
|
log_warning(logger=logger, msg=msg, verbose=verbose)
|
|
58
57
|
# Remove timesteps with invalid sample intervals
|
|
@@ -340,6 +339,20 @@ def get_problematic_timestep_indices(timesteps, sample_interval):
|
|
|
340
339
|
return idx_previous_missing, idx_next_missing, idx_isolated_missing
|
|
341
340
|
|
|
342
341
|
|
|
342
|
+
def nearest_expected_times(times, expected_times):
|
|
343
|
+
"""Return index of nearest expected time."""
|
|
344
|
+
# both must be sorted ascending
|
|
345
|
+
idx = np.searchsorted(expected_times, times)
|
|
346
|
+
idx = np.clip(idx, 1, len(expected_times) - 1)
|
|
347
|
+
|
|
348
|
+
# Compare distance to the previous vs next expected time
|
|
349
|
+
prev = expected_times[idx - 1]
|
|
350
|
+
next_ = expected_times[idx]
|
|
351
|
+
choose_next = (times - prev) > (next_ - times)
|
|
352
|
+
nearest = np.where(choose_next, next_, prev)
|
|
353
|
+
return nearest
|
|
354
|
+
|
|
355
|
+
|
|
343
356
|
def regularize_timesteps(ds, sample_interval, robust=False, add_quality_flag=True, logger=None, verbose=True):
|
|
344
357
|
"""Ensure timesteps match with the sample_interval.
|
|
345
358
|
|
|
@@ -364,13 +377,16 @@ def regularize_timesteps(ds, sample_interval, robust=False, add_quality_flag=Tru
|
|
|
364
377
|
times = times.to_numpy(dtype="M8[s]")
|
|
365
378
|
expected_times = expected_times.to_numpy(dtype="M8[s]")
|
|
366
379
|
|
|
380
|
+
# Vectorized mapping of observed times → nearest expected times
|
|
381
|
+
adjusted_times = nearest_expected_times(times, expected_times)
|
|
382
|
+
|
|
367
383
|
# Map original times to the nearest expected times
|
|
368
|
-
# Calculate the difference between original times and expected times
|
|
369
|
-
time_deltas = np.abs(times - expected_times[:, None]).astype(int)
|
|
384
|
+
# # Calculate the difference between original times and expected times
|
|
385
|
+
# time_deltas = np.abs(times - expected_times[:, None]).astype(int)
|
|
370
386
|
|
|
371
|
-
# Find the index of the closest expected time for each original time
|
|
372
|
-
nearest_indices = np.argmin(time_deltas, axis=0)
|
|
373
|
-
adjusted_times = expected_times[nearest_indices]
|
|
387
|
+
# # Find the index of the closest expected time for each original time
|
|
388
|
+
# nearest_indices = np.argmin(time_deltas, axis=0)
|
|
389
|
+
# adjusted_times = expected_times[nearest_indices]
|
|
374
390
|
|
|
375
391
|
# Check for duplicates in adjusted times
|
|
376
392
|
unique_times, counts = np.unique(adjusted_times, return_counts=True)
|
|
@@ -466,10 +482,10 @@ def regularize_timesteps(ds, sample_interval, robust=False, add_quality_flag=Tru
|
|
|
466
482
|
# qc_flag[-1] = 0
|
|
467
483
|
|
|
468
484
|
# Add time quality flag variable
|
|
469
|
-
ds["
|
|
485
|
+
ds["qc_time"] = xr.DataArray(qc_flag, dims="time")
|
|
470
486
|
|
|
471
|
-
# Add CF attributes for
|
|
472
|
-
ds["
|
|
487
|
+
# Add CF attributes for qc_time
|
|
488
|
+
ds["qc_time"].attrs = {
|
|
473
489
|
"long_name": "time quality flag",
|
|
474
490
|
"standard_name": "status_flag",
|
|
475
491
|
"units": "1",
|
|
@@ -587,6 +603,7 @@ def _finalize_l0c_dataset(ds, sample_interval, sensor_name, verbose=True, logger
|
|
|
587
603
|
ds = add_sample_interval(ds, sample_interval=sample_interval)
|
|
588
604
|
|
|
589
605
|
# Regularize timesteps (for trailing seconds)
|
|
606
|
+
# --> This remove time encoding
|
|
590
607
|
ds = regularize_timesteps(
|
|
591
608
|
ds,
|
|
592
609
|
sample_interval=sample_interval,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -----------------------------------------------------------------------------.
|
|
3
|
-
# Copyright (c) 2021-
|
|
3
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
4
4
|
#
|
|
5
5
|
# This program is free software: you can redistribute it and/or modify
|
|
6
6
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
17
|
# -----------------------------------------------------------------------------.
|
|
18
18
|
"""Reader for ARM Thies LPM sensor."""
|
|
19
|
+
|
|
19
20
|
from disdrodb.l0.l0_reader import is_documented_by, reader_generic_docstring
|
|
20
21
|
from disdrodb.l0.l0b_nc_processing import open_raw_netcdf_file, replace_custom_nan_flags, standardize_raw_dataset
|
|
21
22
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -----------------------------------------------------------------------------.
|
|
3
|
-
# Copyright (c) 2021-
|
|
3
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
4
4
|
#
|
|
5
5
|
# This program is free software: you can redistribute it and/or modify
|
|
6
6
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -176,23 +176,23 @@ def reader(
|
|
|
176
176
|
"number_particles_no_hydrometeor",
|
|
177
177
|
"number_particles_no_hydrometeor_internal_data",
|
|
178
178
|
"number_particles_unknown_classification",
|
|
179
|
-
"
|
|
180
|
-
"
|
|
181
|
-
"
|
|
182
|
-
"
|
|
183
|
-
"
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
"
|
|
190
|
-
"
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
"
|
|
194
|
-
"
|
|
195
|
-
"
|
|
179
|
+
"total_gross_volume_unknown_classification",
|
|
180
|
+
"number_particles_hail",
|
|
181
|
+
"total_gross_volume_hail",
|
|
182
|
+
"number_particles_solid_precipitation",
|
|
183
|
+
"total_gross_volume_solid_precipitation",
|
|
184
|
+
"number_particles_large_pellet",
|
|
185
|
+
"total_gross_volume_large_pellet",
|
|
186
|
+
"number_particles_small_pellet",
|
|
187
|
+
"total_gross_volume_small_pellet",
|
|
188
|
+
"number_particles_snowgrain",
|
|
189
|
+
"total_gross_volume_snowgrain",
|
|
190
|
+
"number_particles_rain",
|
|
191
|
+
"total_gross_volume_rain",
|
|
192
|
+
"number_particles_small_rain",
|
|
193
|
+
"total_gross_volume_small_rain",
|
|
194
|
+
"number_particles_drizzle",
|
|
195
|
+
"total_gross_volume_drizzle",
|
|
196
196
|
"number_particles_class_9",
|
|
197
197
|
"number_particles_class_9_internal_data",
|
|
198
198
|
"TO_BE_FURTHER_PROCESSED",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -----------------------------------------------------------------------------.
|
|
3
|
-
# Copyright (c) 2021-
|
|
3
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
4
4
|
#
|
|
5
5
|
# This program is free software: you can redistribute it and/or modify
|
|
6
6
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -135,23 +135,23 @@ def reader(
|
|
|
135
135
|
"number_particles_no_hydrometeor",
|
|
136
136
|
"number_particles_no_hydrometeor_internal_data",
|
|
137
137
|
"number_particles_unknown_classification",
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
-
"
|
|
148
|
-
"
|
|
149
|
-
"
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
"
|
|
138
|
+
"total_gross_volume_unknown_classification",
|
|
139
|
+
"number_particles_hail",
|
|
140
|
+
"total_gross_volume_hail",
|
|
141
|
+
"number_particles_solid_precipitation",
|
|
142
|
+
"total_gross_volume_solid_precipitation",
|
|
143
|
+
"number_particles_large_pellet",
|
|
144
|
+
"total_gross_volume_large_pellet",
|
|
145
|
+
"number_particles_small_pellet",
|
|
146
|
+
"total_gross_volume_small_pellet",
|
|
147
|
+
"number_particles_snowgrain",
|
|
148
|
+
"total_gross_volume_snowgrain",
|
|
149
|
+
"number_particles_rain",
|
|
150
|
+
"total_gross_volume_rain",
|
|
151
|
+
"number_particles_small_rain",
|
|
152
|
+
"total_gross_volume_small_rain",
|
|
153
|
+
"number_particles_drizzle",
|
|
154
|
+
"total_gross_volume_drizzle",
|
|
155
155
|
"number_particles_class_9",
|
|
156
156
|
"number_particles_class_9_internal_data",
|
|
157
157
|
"raw_drop_number",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -----------------------------------------------------------------------------.
|
|
3
|
-
# Copyright (c) 2021-
|
|
3
|
+
# Copyright (c) 2021-2026 DISDRODB developers
|
|
4
4
|
#
|
|
5
5
|
# This program is free software: you can redistribute it and/or modify
|
|
6
6
|
# it under the terms of the GNU General Public License as published by
|
|
@@ -135,23 +135,23 @@ def reader(
|
|
|
135
135
|
"number_particles_no_hydrometeor",
|
|
136
136
|
"number_particles_no_hydrometeor_internal_data",
|
|
137
137
|
"number_particles_unknown_classification",
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"
|
|
141
|
-
"
|
|
142
|
-
"
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"
|
|
146
|
-
"
|
|
147
|
-
"
|
|
148
|
-
"
|
|
149
|
-
"
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
"
|
|
138
|
+
"total_gross_volume_unknown_classification",
|
|
139
|
+
"number_particles_hail",
|
|
140
|
+
"total_gross_volume_hail",
|
|
141
|
+
"number_particles_solid_precipitation",
|
|
142
|
+
"total_gross_volume_solid_precipitation",
|
|
143
|
+
"number_particles_large_pellet",
|
|
144
|
+
"total_gross_volume_large_pellet",
|
|
145
|
+
"number_particles_small_pellet",
|
|
146
|
+
"total_gross_volume_small_pellet",
|
|
147
|
+
"number_particles_snowgrain",
|
|
148
|
+
"total_gross_volume_snowgrain",
|
|
149
|
+
"number_particles_rain",
|
|
150
|
+
"total_gross_volume_rain",
|
|
151
|
+
"number_particles_small_rain",
|
|
152
|
+
"total_gross_volume_small_rain",
|
|
153
|
+
"number_particles_drizzle",
|
|
154
|
+
"total_gross_volume_drizzle",
|
|
155
155
|
"number_particles_class_9",
|
|
156
156
|
"number_particles_class_9_internal_data",
|
|
157
157
|
"raw_drop_number",
|