wavyopen 0.4.4__tar.gz → 0.4.6__tar.gz
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.
- {wavyopen-0.4.4 → wavyopen-0.4.6}/.coverage +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/.github/workflows/lint.yml +1 -1
- {wavyopen-0.4.4 → wavyopen-0.4.6}/.github/workflows/python.yml +4 -4
- {wavyopen-0.4.4 → wavyopen-0.4.6}/PKG-INFO +2 -2
- wavyopen-0.4.6/docs/explore_retrieval.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/installation.rst +6 -1
- wavyopen-0.4.6/docs/ipynb_find_env.png +0 -0
- wavyopen-0.4.6/docs/mozambique25.rst +169 -0
- wavyopen-0.4.6/docs/mozambique_example_global_ipynb.png +0 -0
- wavyopen-0.4.6/docs/mozambique_example_global_ipynb_crop.png +0 -0
- wavyopen-0.4.6/docs/mozambique_example_region_ipynb_crop.png +0 -0
- wavyopen-0.4.6/docs/tanzania25.rst +169 -0
- wavyopen-0.4.6/docs/tanzania_example_global_ipynb.png +0 -0
- wavyopen-0.4.6/docs/tanzania_example_global_ipynb_crop.png +0 -0
- wavyopen-0.4.6/docs/tanzania_example_regional_ipynb_crop.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_WEkEO.rst +10 -4
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/workshops.rst +2 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/environment.yml +1 -1
- {wavyopen-0.4.4 → wavyopen-0.4.6}/pyproject.toml +11 -2
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_filtermod.py +55 -3
- wavyopen-0.4.6/tests/test_multisat.py +27 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/ais_module.py +2 -2
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/collocation_module.py +12 -7
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/filtermod.py +61 -28
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/insitu_module.py +14 -8
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/insitu_readers.py +40 -29
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/multisat_module.py +10 -5
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/ncmod.py +72 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/quicklookmod.py +19 -9
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/satellite_module.py +27 -18
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/satellite_readers.py +41 -26
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/utils.py +36 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/wconfig.py +7 -7
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/PKG-INFO +2 -2
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/SOURCES.txt +10 -0
- wavyopen-0.4.4/tests/test_multisat.py +0 -9
- {wavyopen-0.4.4 → wavyopen-0.4.6}/.env.example +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/.gitignore +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/.readthedocs.yaml +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/LICENSE +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/README.md +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/.gitignore +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/Makefile +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/conf.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/credits.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_L2_vs_L3.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_col_insitu.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_gridder_coll_nov.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_gridder_coll_rmse.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_gridder_obs.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_001.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_002.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_003.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_004.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_005.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_vs_mod_waves.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_vs_mod_wind.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_waves.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_wind.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_stormtrack.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_tc_1.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_tc_2.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_ts_insitu.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_ts_sat.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/ecwamMoz_coll_2023_map.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/ecwamMoz_coll_2023_sc.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/ecwamMoz_coll_2023_ts.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/gallery.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/index.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/lm_example.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/lm_example_coast.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/lm_example_coast_norway.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/model_quicklook.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/mozambique23.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/mozambique24.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oneocean.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_collocated_ts.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_1.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_2.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_3.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_4.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_map_despike.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_map_limits.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_map_raw.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_map_smooth.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_ts_despike.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_ts_limits.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_ts_raw.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_ts_smooth.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_xtrack.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_gridding_map.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_gridding_nb_collocated.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_gridding_rmsd.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_insitu.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_model_map.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_sat_map.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_sat_ts.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/quicklook_ts_insitu.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/rabault_et_al_2022.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/requirements.txt +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/serve.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_ais.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_collocmod.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_config.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_consolidate.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_gridder.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_insitu.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_modelmod.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_quicklooks.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_download.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_filters.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_import.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_multi.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_regions.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_stats.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_stormtrack.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_triple_collocation.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_validate.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_wavyQuick.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam21.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam22.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam22_2.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam25.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam_coll_2022_2_map.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam_coll_2022_2_sc.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam_coll_2022_2_ts.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/wavy_WEkEO_example.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/workshop_latest.rst +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/workshop_map.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/workshop_time.png +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/setup.cfg +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/__init__.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/conftest.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0756_20190324_085453_20190324_094523__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0757_20190324_094523_20190324_103552__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0758_20190324_103552_20190324_112622__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0759_20190324_112622_20190324_121651__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0760_20190324_121651_20190324_130721__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0761_20190324_130721_20190324_135750__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0762_20190324_135751_20190324_144820__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0763_20190324_144820_20190324_153850__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0764_20190324_153850_20190324_162919__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0765_20190324_162919_20190324_171948__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0766_20190324_171950_20190324_181019__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0767_20190324_181019_20190324_190048__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0768_20190324_190048_20190324_195118__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0769_20190324_195118_20190324_204148__PEACHI_V2-1.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/multi/ESACCI-SEASTATE-L3-SWH-MULTI_1D-20050826-fv01.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/multi/ESACCI-SEASTATE-L3-SWH-MULTI_1D-20050828-fv01.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T000000_20220201T030000_20220627T133409.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T030000_20220201T060000_20220627T133414.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T060000_20220201T090000_20220627T133419.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T090000_20220201T120000_20220627T133506.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T120000_20220201T150000_20220627T133453.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T150000_20220201T180000_20220627T133459.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T180000_20220201T210000_20220627T133503.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T210000_20220202T000000_20220627T133543.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T000000_20220202T030000_20220627T133539.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T030000_20220202T060000_20220627T133550.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T060000_20220202T090000_20220627T133545.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T090000_20220202T120000_20220627T133627.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T120000_20220202T150000_20220627T133630.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T150000_20220202T180000_20220627T133628.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T180000_20220202T210000_20220627T133630.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T210000_20220203T000000_20220627T133716.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T000000_20220203T030000_20220627T133711.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T030000_20220203T060000_20220627T133710.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T060000_20220203T090000_20220627T133713.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T090000_20220203T120000_20220627T133755.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T120000_20220203T150000_20220627T133753.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T150000_20220203T180000_20220627T133755.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T180000_20220203T210000_20220627T133758.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T210000_20220204T000000_20220627T133839.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20230704T180000_20230704T210000_20230705T001501.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T000000_20220201T030000_20220630T215237.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T030000_20220201T060000_20220630T214527.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T060000_20220201T090000_20220630T214537.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T090000_20220201T120000_20220630T214910.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T120000_20220201T150000_20220630T215128.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T150000_20220201T180000_20220630T215045.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T180000_20220201T210000_20220630T215105.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T210000_20220202T000000_20220630T215305.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T000000_20220202T030000_20220630T214228.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T030000_20220202T060000_20220630T214237.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T060000_20220202T090000_20220630T214520.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T090000_20220202T120000_20220630T215205.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T120000_20220202T150000_20220630T214753.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T150000_20220202T180000_20220630T214826.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T180000_20220202T210000_20220630T214830.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T210000_20220203T000000_20220630T214307.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T000000_20220203T030000_20220630T214824.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T030000_20220203T060000_20220630T214744.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T060000_20220203T090000_20220630T214947.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T090000_20220203T120000_20220630T214931.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T120000_20220203T150000_20220630T214405.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T150000_20220203T180000_20220630T214913.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T180000_20220203T210000_20220630T214613.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T210000_20220204T000000_20220630T215211.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/SWIM_L2P/CFO_OP05_SWI_L2PBOX_F_20220226T173014_20220226T174953.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/geojson/wci_nn.geojson +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/daily/Draugen/AR_TS_MO_Draugen_20230820.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/daily/Draugen/AR_TS_MO_Draugen_20230821.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/daily/Sulafjorden/AR_TS_MO_A-Sulafjorden_20230820.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/monthly/Draugen/AR_TS_MO_Draugen_202307.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/monthly/Sulafjorden/AR_TS_MO_A-Sulafjorden_202307.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/track/Katrina_track.csv +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/triple_collocation/Norne_ico.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/triple_collocation/Norne_mco.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/triple_collocation/Norne_sco.nc +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/triple_collocation/simulated_t.csv +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_aismod.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_collocmod.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_config.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_consolidate.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_gridder.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_insitumod.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_modelmod.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_multiins.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_satellite_module.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_triple_collocation.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_utils.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/GPfcts.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/__init__.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/apps/__init__.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/apps/wavyCFG.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/apps/wavyDownload.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/apps/wavyQuick.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/d22_var_dicts.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/insitu_cfg.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/insitu_cfg.yaml.minimal +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/model_cfg.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/model_cfg.yaml.minimal +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/quicklook_cfg.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/region_cfg.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/satellite_cfg.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/satellite_cfg.yaml.minimal +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/validation_metrics.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/variable_def.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/variables_frost.yaml.default +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/consolidate.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/credentials.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/grid_readers.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/grid_stats.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/gridder_module.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/init_class_insitu.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/init_class_mod.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/init_class_sat.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/insitu_collectors.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/model_module.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/model_readers.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/multiins.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/quicklookmod.py.old +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/satellite_collectors.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/triple_collocation.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/validationmod.py +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/dependency_links.txt +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/entry_points.txt +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/requires.txt +0 -0
- {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/top_level.txt +0 -0
|
Binary file
|
|
@@ -18,7 +18,7 @@ jobs:
|
|
|
18
18
|
strategy:
|
|
19
19
|
matrix:
|
|
20
20
|
os: ["ubuntu", "macos"]
|
|
21
|
-
python-version: ['3.
|
|
21
|
+
python-version: ['3.12', '3.14']
|
|
22
22
|
env:
|
|
23
23
|
COVERALLS_REPO_TOKEN: xIILGI4RaHRkMSqLgZN8taBLNMaMNrBzD
|
|
24
24
|
steps:
|
|
@@ -37,7 +37,7 @@ jobs:
|
|
|
37
37
|
pytest --junitxml=test-results/junit.xml --cov=wavy -v --log-cli-level=debug -m 'not need_credentials'
|
|
38
38
|
|
|
39
39
|
- name: Upload to Coveralls
|
|
40
|
-
if: matrix.python-version == '3.
|
|
40
|
+
if: matrix.python-version == '3.14' && matrix.os == 'ubuntu'
|
|
41
41
|
run: |
|
|
42
42
|
conda activate test
|
|
43
43
|
coveralls
|
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
python -m build -vv
|
|
50
50
|
|
|
51
51
|
- name: Upload wheels
|
|
52
|
-
if: matrix.python-version == '3.
|
|
52
|
+
if: matrix.python-version == '3.14' && matrix.os == 'ubuntu'
|
|
53
53
|
uses: actions/upload-artifact@v4
|
|
54
54
|
with:
|
|
55
55
|
name: wheels
|
|
@@ -66,7 +66,7 @@ jobs:
|
|
|
66
66
|
name: wheels
|
|
67
67
|
- uses: conda-incubator/setup-miniconda@v3
|
|
68
68
|
with:
|
|
69
|
-
python-version: '3.
|
|
69
|
+
python-version: '3.14'
|
|
70
70
|
miniforge-version: latest
|
|
71
71
|
miniforge-variant: Miniforge3
|
|
72
72
|
- name: Publish to PyPi
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wavyopen
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.6
|
|
4
4
|
Summary: A package for processing/calibrating/validating wave measurements and wave model output.
|
|
5
5
|
Author-email: Patrik Bohlinger <patrikb@met.no>
|
|
6
6
|
License-Expression: MIT
|
|
7
|
-
Requires-Python: >=3.
|
|
7
|
+
Requires-Python: >=3.12
|
|
8
8
|
License-File: LICENSE
|
|
9
9
|
Requires-Dist: matplotlib>=3.5
|
|
10
10
|
Requires-Dist: numpy>=1.20
|
|
Binary file
|
|
@@ -2,7 +2,7 @@ Installation and setup
|
|
|
2
2
|
======================
|
|
3
3
|
|
|
4
4
|
Installation for regular use
|
|
5
|
-
|
|
5
|
+
----------------------------
|
|
6
6
|
For regular use **wavy** wavy can simply be installed via pip, conda, or mamba by installing the wavyopen package. So please choose between the following options:
|
|
7
7
|
|
|
8
8
|
|
|
@@ -34,6 +34,11 @@ When activated, you can use wavyopen in any directory of your computer. In case
|
|
|
34
34
|
|
|
35
35
|
All code examples and tutorials will assume that you have installed wavy using conda or mamba. In case you still have, from older installations or the development installation described below, environmental variables in e.g. your .bashrc that attribute paths for wavy, please remove them before you follow the installation procedure above.
|
|
36
36
|
|
|
37
|
+
Installation for WEkEO
|
|
38
|
+
----------------------
|
|
39
|
+
Please refer to the tutorial on WEkEO [:ref:`wekeo-label`].
|
|
40
|
+
|
|
41
|
+
|
|
37
42
|
Installation for development
|
|
38
43
|
----------------------------
|
|
39
44
|
Installing **wavy** can be done via conda. The steps are as follows:
|
|
Binary file
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
Mozambique WEkEO workshop 2025
|
|
2
|
+
==============================
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
**wavy** installation on WEkEO
|
|
6
|
+
#################################
|
|
7
|
+
WEkEO (wekeo.copernicus.eu) provides a workspace where you can run scripts and Jupyter notebooks on a cloud for free. As such WEkEO is a great platform to try out **wavy** in a lightweight context. Here are some quick instructions on how to install **wavy** on WEkEO:
|
|
8
|
+
|
|
9
|
+
Open a new command window on your WEkEO workspace and install python environment for wavyopen (with a python version >3.10 & <3.14):
|
|
10
|
+
|
|
11
|
+
.. code-block:: bash
|
|
12
|
+
|
|
13
|
+
mamba create --name wavyopen python=3.12 --channel conda-forge
|
|
14
|
+
conda activate wavyopen
|
|
15
|
+
mamba install wavyopen
|
|
16
|
+
|
|
17
|
+
.. note::
|
|
18
|
+
|
|
19
|
+
For some reason on WEkEO you need to use **conda activate wavyopen**
|
|
20
|
+
instead of **mamba activate wavyopen**.
|
|
21
|
+
|
|
22
|
+
Install jupiter kernel:
|
|
23
|
+
|
|
24
|
+
.. code-block:: bash
|
|
25
|
+
|
|
26
|
+
mamba install -n wavyopen ipykernel
|
|
27
|
+
|
|
28
|
+
Add it to jupyter:
|
|
29
|
+
|
|
30
|
+
.. code-block:: bash
|
|
31
|
+
|
|
32
|
+
python -m ipykernel install --user --name wavyopen --display-name "Python (wavyopen)"
|
|
33
|
+
|
|
34
|
+
Restart JupyterLab Kernel List and refresh your JupyterLab tab in WEkEO.
|
|
35
|
+
Go to Kernel → Change Kernel, and you should see Python (wavyopen) in the list. Choose that one.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
**wavy** config files and environment
|
|
39
|
+
########################################
|
|
40
|
+
|
|
41
|
+
Working with **wavy** can be done in many ways but since one often has multiple, independent projects, it may make sense to follow a general workflow of creating a project directory, specifying your environment variables, preparing config files, creating scripts/notebooks. Let's go through each of these steps together:
|
|
42
|
+
|
|
43
|
+
Create a project directory:
|
|
44
|
+
|
|
45
|
+
.. code::
|
|
46
|
+
|
|
47
|
+
mkdir ~/test_wavy
|
|
48
|
+
mkdir -p ~/test_wavy/config
|
|
49
|
+
mkdir -p ~/test_wavy/scripts
|
|
50
|
+
mkdir -p ~/test_wavy/data
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
You can now almost proceed as usual but a minor hack needs to be made for setting your environmental variables in the invisible dot-file *.env* which is needed e.g. for the copernicus marine toolbox or to indicate the path to your config directory. To create an .env-file at the project root directory, first create a file called something visible like *envvis*.
|
|
54
|
+
|
|
55
|
+
.. code::
|
|
56
|
+
|
|
57
|
+
cd ~/test_wavy
|
|
58
|
+
touch envvis
|
|
59
|
+
|
|
60
|
+
Open the file and put in all information **wavy** needs like the path to your config directory:
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
.. code-block:: bash
|
|
64
|
+
|
|
65
|
+
WAVY_CONFIG=
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
For the use of copernicusmarine for e.g. downloading satellite data use:
|
|
69
|
+
|
|
70
|
+
.. code-block:: bash
|
|
71
|
+
|
|
72
|
+
COPERNICUSMARINE_SERVICE_USERNAME=
|
|
73
|
+
COPERNICUSMARINE_SERVICE_PASSWORD=
|
|
74
|
+
|
|
75
|
+
Then cp your envvis to .env, i.e.
|
|
76
|
+
|
|
77
|
+
.. code-block:: bash
|
|
78
|
+
|
|
79
|
+
cp envvis .env
|
|
80
|
+
|
|
81
|
+
to establish the invisible .env-file and voilà, everything should be in place.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
Downloading data satellite data
|
|
85
|
+
##################################
|
|
86
|
+
|
|
87
|
+
You will need to ammend your config scripts to efficiently use **wavy**. First you need to retrieve them. To do so activate wavyopen to use the command line wavy scripts:
|
|
88
|
+
|
|
89
|
+
.. code-block:: bash
|
|
90
|
+
|
|
91
|
+
conda activate wavyopen
|
|
92
|
+
|
|
93
|
+
For this tutorial we will need a config file for satellite retrieval and one for defining the regions. So go ahead and get them with:
|
|
94
|
+
|
|
95
|
+
.. code-block:: bash
|
|
96
|
+
|
|
97
|
+
cd ~/test_wavy/config
|
|
98
|
+
wavyCFG --help
|
|
99
|
+
wavyCFG --path ./. --f satellite_cfg.yaml --t minimal
|
|
100
|
+
wavyCFG --path ./. --f region_cfg.yaml --t default
|
|
101
|
+
|
|
102
|
+
Open satellite_cfg.yaml and ammend the paths for downloading (trgt_tmplt) and for wavy_input (src_tmplt). In my case the config file then looks like:
|
|
103
|
+
|
|
104
|
+
.. code-block:: yaml
|
|
105
|
+
|
|
106
|
+
cmems_L3_NRT:
|
|
107
|
+
name: {s3a: s3a, s3b: s3b, c2: c2, j3: j3, h2b: h2b, h2c: h2c, al: al, cfo: cfo, s6a: s6a, swon: swon}
|
|
108
|
+
download:
|
|
109
|
+
copernicus:
|
|
110
|
+
dataset_id: cmems_obs-wave_glo_phy-swh_nrt_name-l3_PT1S
|
|
111
|
+
trgt_tmplt: '/home/jovyan/projects/test_wavy/data/sat/L3/name'
|
|
112
|
+
path_date_incr_unit: m
|
|
113
|
+
path_date_incr: 1
|
|
114
|
+
strsub: [name]
|
|
115
|
+
server: nrt.cmems-du.eu
|
|
116
|
+
time_incr: h
|
|
117
|
+
wavy_input:
|
|
118
|
+
src_tmplt: '/home/jovyan/projects/test_wavy/data/sat/L3/name'
|
|
119
|
+
fl_tmplt: null
|
|
120
|
+
strsub: [name]
|
|
121
|
+
path_date_incr_unit: m
|
|
122
|
+
path_date_incr: 1
|
|
123
|
+
reader: read_local_ncfiles
|
|
124
|
+
collector: get_remote_files_copernicusmarine
|
|
125
|
+
vardef: {Hs: VAVH, U: WIND_SPEED}
|
|
126
|
+
coords: null
|
|
127
|
+
misc: {processing_level: null, provider: null, obs_type: null}
|
|
128
|
+
tags: null
|
|
129
|
+
|
|
130
|
+
**wavy** can now download satellite data executing in your command line. For a specific satellite mission you can use e.g.:
|
|
131
|
+
|
|
132
|
+
.. code-block:: bash
|
|
133
|
+
|
|
134
|
+
wavyDownload --sd 20250101 --ed 20250103 --nID cmems_L3_NRT --name s3a
|
|
135
|
+
|
|
136
|
+
or for all available missions:
|
|
137
|
+
|
|
138
|
+
.. code-block:: bash
|
|
139
|
+
|
|
140
|
+
wavyDownload --sd 20250101 --ed 20250103 --nID cmems_L3_NRT --name all
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
Process satellite data
|
|
144
|
+
######################
|
|
145
|
+
Now, you can start preparing python scripts or notebooks reading, processing, and plotting your data. This may look like:
|
|
146
|
+
|
|
147
|
+
.. image:: ./mozambique_example_global_ipynb_crop.png
|
|
148
|
+
|
|
149
|
+
Since **wavy** is quite verbose I added the line *%%capture captured_output* on top of some cells. If you like you can remove it to see what is going on under the hood. You can also introduce your custom region in region_cfg.yaml, for Mozambique choose e.g.:
|
|
150
|
+
|
|
151
|
+
.. code-block:: yaml
|
|
152
|
+
|
|
153
|
+
rect:
|
|
154
|
+
mozambique: {llcrnrlon: 28.3, llcrnrlat: -27.8, urcrnrlon: 46, urcrnrlat: -10}
|
|
155
|
+
|
|
156
|
+
Applied to the notebook this looks like:
|
|
157
|
+
|
|
158
|
+
.. image:: ./mozambique_example_region_ipynb_crop.png
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
The data you retrieved is stored in the respective objects *sco* and *mso*. You can explore the content by e.g.:
|
|
162
|
+
|
|
163
|
+
.. image:: ./explore_retrieval.png
|
|
164
|
+
|
|
165
|
+
.. note::
|
|
166
|
+
|
|
167
|
+
For some reason on WEkEO you sometimes loose the name for your conda environment. In this case, type **conda env list** to find the environment you would like to use and activate it. An example is below:
|
|
168
|
+
|
|
169
|
+
.. image:: ./ipynb_find_env.png
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
Tanzania WEkEO workshop 2025
|
|
2
|
+
============================
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
**wavy** installation on WEkEO
|
|
6
|
+
#################################
|
|
7
|
+
WEkEO (wekeo.copernicus.eu) provides a workspace where you can run scripts and Jupyter notebooks on a cloud for free. As such WEkEO is a great platform to try out **wavy** in a lightweight context. Here are some quick instructions on how to install **wavy** on WEkEO:
|
|
8
|
+
|
|
9
|
+
Open a new command window on your WEkEO workspace and install python environment for wavyopen (with a python version >3.10 & <3.14):
|
|
10
|
+
|
|
11
|
+
.. code-block:: bash
|
|
12
|
+
|
|
13
|
+
mamba create --name wavyopen python=3.12 --channel conda-forge
|
|
14
|
+
conda activate wavyopen
|
|
15
|
+
mamba install wavyopen
|
|
16
|
+
|
|
17
|
+
.. note::
|
|
18
|
+
|
|
19
|
+
For some reason on WEkEO you need to use **conda activate wavyopen**
|
|
20
|
+
instead of **mamba activate wavyopen**.
|
|
21
|
+
|
|
22
|
+
Install jupiter kernel:
|
|
23
|
+
|
|
24
|
+
.. code-block:: bash
|
|
25
|
+
|
|
26
|
+
mamba install -n wavyopen ipykernel
|
|
27
|
+
|
|
28
|
+
Add it to jupyter:
|
|
29
|
+
|
|
30
|
+
.. code-block:: bash
|
|
31
|
+
|
|
32
|
+
python -m ipykernel install --user --name wavyopen --display-name "Python (wavyopen)"
|
|
33
|
+
|
|
34
|
+
Restart JupyterLab Kernel List and refresh your JupyterLab tab in WEkEO.
|
|
35
|
+
Go to Kernel → Change Kernel, and you should see Python (wavyopen) in the list. Choose that one.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
**wavy** config files and environment
|
|
39
|
+
########################################
|
|
40
|
+
|
|
41
|
+
Working with **wavy** can be done in many ways but since one often has multiple, independent projects, it may make sense to follow a general workflow of creating a project directory, specifying your environment variables, preparing config files, creating scripts/notebooks. Let's go through each of these steps together:
|
|
42
|
+
|
|
43
|
+
Create a project directory:
|
|
44
|
+
|
|
45
|
+
.. code::
|
|
46
|
+
|
|
47
|
+
mkdir ~/test_wavy
|
|
48
|
+
mkdir -p ~/test_wavy/config
|
|
49
|
+
mkdir -p ~/test_wavy/scripts
|
|
50
|
+
mkdir -p ~/test_wavy/data
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
You can now almost proceed as usual but a minor hack needs to be made for setting your environmental variables in the invisible dot-file *.env* which is needed e.g. for the copernicus marine toolbox or to indicate the path to your config directory. To create an .env-file at the project root directory, first create a file called something visible like *envvis*.
|
|
54
|
+
|
|
55
|
+
.. code::
|
|
56
|
+
|
|
57
|
+
cd ~/test_wavy
|
|
58
|
+
touch envvis
|
|
59
|
+
|
|
60
|
+
Open the file and put in all information **wavy** needs like the path to your config directory:
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
.. code-block:: bash
|
|
64
|
+
|
|
65
|
+
WAVY_CONFIG=
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
For the use of copernicusmarine for e.g. downloading satellite data use:
|
|
69
|
+
|
|
70
|
+
.. code-block:: bash
|
|
71
|
+
|
|
72
|
+
COPERNICUSMARINE_SERVICE_USERNAME=
|
|
73
|
+
COPERNICUSMARINE_SERVICE_PASSWORD=
|
|
74
|
+
|
|
75
|
+
Then cp your envvis to .env, i.e.
|
|
76
|
+
|
|
77
|
+
.. code-block:: bash
|
|
78
|
+
|
|
79
|
+
cp envvis .env
|
|
80
|
+
|
|
81
|
+
to establish the invisible .env-file and voilà, everything should be in place.
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
Downloading data satellite data
|
|
85
|
+
##################################
|
|
86
|
+
|
|
87
|
+
You will need to ammend your config scripts to efficiently use **wavy**. First you need to retrieve them. To do so activate wavyopen to use the command line wavy scripts:
|
|
88
|
+
|
|
89
|
+
.. code-block:: bash
|
|
90
|
+
|
|
91
|
+
conda activate wavyopen
|
|
92
|
+
|
|
93
|
+
For this tutorial we will need a config file for satellite retrieval and one for defining the regions. So go ahead and get them with:
|
|
94
|
+
|
|
95
|
+
.. code-block:: bash
|
|
96
|
+
|
|
97
|
+
cd ~/test_wavy/config
|
|
98
|
+
wavyCFG --help
|
|
99
|
+
wavyCFG --path ./. --f satellite_cfg.yaml --t minimal
|
|
100
|
+
wavyCFG --path ./. --f region_cfg.yaml --t default
|
|
101
|
+
|
|
102
|
+
Open satellite_cfg.yaml and ammend the paths for downloading (trgt_tmplt) and for wavy_input (src_tmplt). In my case the config file then looks like:
|
|
103
|
+
|
|
104
|
+
.. code-block:: yaml
|
|
105
|
+
|
|
106
|
+
cmems_L3_NRT:
|
|
107
|
+
name: {s3a: s3a, s3b: s3b, c2: c2, j3: j3, h2b: h2b, h2c: h2c, al: al, cfo: cfo, s6a: s6a, swon: swon}
|
|
108
|
+
download:
|
|
109
|
+
copernicus:
|
|
110
|
+
dataset_id: cmems_obs-wave_glo_phy-swh_nrt_name-l3_PT1S
|
|
111
|
+
trgt_tmplt: '/home/jovyan/projects/test_wavy/data/sat/L3/name'
|
|
112
|
+
path_date_incr_unit: m
|
|
113
|
+
path_date_incr: 1
|
|
114
|
+
strsub: [name]
|
|
115
|
+
server: nrt.cmems-du.eu
|
|
116
|
+
time_incr: h
|
|
117
|
+
wavy_input:
|
|
118
|
+
src_tmplt: '/home/jovyan/projects/test_wavy/data/sat/L3/name'
|
|
119
|
+
fl_tmplt: null
|
|
120
|
+
strsub: [name]
|
|
121
|
+
path_date_incr_unit: m
|
|
122
|
+
path_date_incr: 1
|
|
123
|
+
reader: read_local_ncfiles
|
|
124
|
+
collector: get_remote_files_copernicusmarine
|
|
125
|
+
vardef: {Hs: VAVH, U: WIND_SPEED}
|
|
126
|
+
coords: null
|
|
127
|
+
misc: {processing_level: null, provider: null, obs_type: null}
|
|
128
|
+
tags: null
|
|
129
|
+
|
|
130
|
+
**wavy** can now download satellite data executing in your command line. For a specific satellite mission you can use e.g.:
|
|
131
|
+
|
|
132
|
+
.. code-block:: bash
|
|
133
|
+
|
|
134
|
+
wavyDownload --sd 20250101 --ed 20250103 --nID cmems_L3_NRT --name s3a
|
|
135
|
+
|
|
136
|
+
or for all available missions:
|
|
137
|
+
|
|
138
|
+
.. code-block:: bash
|
|
139
|
+
|
|
140
|
+
wavyDownload --sd 20250101 --ed 20250103 --nID cmems_L3_NRT --name all
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
Process satellite data
|
|
144
|
+
######################
|
|
145
|
+
Now, you can start preparing python scripts or notebooks reading, processing, and plotting your data. This may look like:
|
|
146
|
+
|
|
147
|
+
.. image:: ./tanzania_example_global_ipynb_crop.png
|
|
148
|
+
|
|
149
|
+
Since **wavy** is quite verbose I added the line *%%capture captured_output* on top of some cells. If you like you can remove it to see what is going on under the hood. You can also introduce your custom region in region_cfg.yaml, for Tanzania choose e.g.:
|
|
150
|
+
|
|
151
|
+
.. code-block:: yaml
|
|
152
|
+
|
|
153
|
+
rect:
|
|
154
|
+
tanzania: {llcrnrlon: 38.0, llcrnrlat: -15.0, urcrnrlon: 50, urcrnrlat: 0}
|
|
155
|
+
|
|
156
|
+
Applied to the notebook this looks like:
|
|
157
|
+
|
|
158
|
+
.. image:: ./tanzania_example_regional_ipynb_crop.png
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
The data you retrieved is stored in the respective objects *sco* and *mso*. You can explore the content by e.g.:
|
|
162
|
+
|
|
163
|
+
.. image:: ./explore_retrieval.png
|
|
164
|
+
|
|
165
|
+
.. note::
|
|
166
|
+
|
|
167
|
+
For some reason on WEkEO you sometimes loose the name for your conda environment. In this case, type **conda env list** to find the environment you would like to use and activate it. An example is below:
|
|
168
|
+
|
|
169
|
+
.. image:: ./ipynb_find_env.png
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
.. _wekeo-label:
|
|
1
2
|
**wavy** on WEkEO
|
|
2
3
|
#################
|
|
3
4
|
|
|
4
|
-
WEkEO (wekeo.copernicus.eu) provides a workspace where you can run scripts and Jupyter notebooks on a cloud for free. As such WEkEO is a great platform to try out wavy in a lightweight context. Here are some quick instructions on how to install **wavy** on WEkEO:
|
|
5
|
+
WEkEO (wekeo.copernicus.eu) provides a workspace where you can run scripts and Jupyter notebooks on a cloud for free. As such WEkEO is a great platform to try out **wavy** in a lightweight context. Here are some quick instructions on how to install **wavy** on WEkEO:
|
|
5
6
|
|
|
6
|
-
Open a new command window on your WEkEO workspace and install python environment for wavyopen:
|
|
7
|
+
Open a new command window on your WEkEO workspace and install python environment for wavyopen (with a python version >3.10 & <3.14):
|
|
7
8
|
|
|
8
9
|
.. code-block:: bash
|
|
9
10
|
|
|
10
|
-
mamba create --name wavyopen --channel
|
|
11
|
+
mamba create --name wavyopen python=3.12 --channel conda-forge
|
|
11
12
|
conda activate wavyopen
|
|
12
13
|
mamba install wavyopen
|
|
13
14
|
|
|
@@ -29,7 +30,7 @@ Add it to jupyter:
|
|
|
29
30
|
python -m ipykernel install --user --name wavyopen --display-name "Python (wavyopen)"
|
|
30
31
|
|
|
31
32
|
Restart JupyterLab Kernel List and refresh your JupyterLab tab in WEkEO.
|
|
32
|
-
Go to Kernel → Change Kernel, and you should see Python (wavyopen) in the list.
|
|
33
|
+
Go to Kernel → Change Kernel, and you should see Python (wavyopen) in the list, choose this one.
|
|
33
34
|
|
|
34
35
|
Create a project directory and the usual setup with config, data, and scripts. Now, you can almost proceed as usual but a minor hack needs to be made for the invisible dot-files.
|
|
35
36
|
|
|
@@ -112,3 +113,8 @@ In the Jupyter notebook on WEkEO it may be beneficial to tune down the quite ver
|
|
|
112
113
|
.. code-block:: bash
|
|
113
114
|
|
|
114
115
|
%%capture captured_output
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
.. note::
|
|
119
|
+
|
|
120
|
+
For some reason on WEkEO the wavyopen conda environment looses its name and you cannot activate simply by **conda activate wavyopen**. In this case please query the conda environments and activate the correct one without a name like:
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "wavyopen"
|
|
7
|
-
requires-python = ">=3.
|
|
8
|
-
version = "0.4.
|
|
7
|
+
requires-python = ">=3.12"
|
|
8
|
+
version = "0.4.6"
|
|
9
9
|
description = "A package for processing/calibrating/validating wave measurements and wave model output."
|
|
10
10
|
license = "MIT"
|
|
11
11
|
license-files = ["LICENSE"]
|
|
@@ -62,3 +62,12 @@ extension-pkg-whitelist="netCDF4,numpy,scipy,roaring_landmask"
|
|
|
62
62
|
disable = "all"
|
|
63
63
|
enable = "F,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,unused-wildcard-import,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode,E0001,E0011,E0012,E0100,E0101,E0102,E0103,E0104,E0105,E0107,E0108,E0110,E0111,E0112,E0113,E0114,E0115,E0116,E0117,E0118,E0202,E0203,E0211,E0213,E0236,E0237,E0238,E0239,E0240,E0241,E0301,E0302,E0303,E0401,E0402,E0601,E0602,E0603,E0604,E0611,E0632,E0633,E0701,E0702,E0703,E0704,E0710,E0711,E0712,E1003,E1101,E1102,E1111,E1120,E1121,E1123,E1124,E1125,E1126,E1127,E1128,E1129,E1130,E1131,E1132,E1133,E1134,E1135,E1137,E1138,E1139,E1200,E1201,E1205,E1206,E1300,E1301,E1302,E1303,E1304,E1305,E1306,E1310,E1700,E1701"
|
|
64
64
|
|
|
65
|
+
[tool.setuptools.packages.find]
|
|
66
|
+
include = ["wavy"]
|
|
67
|
+
|
|
68
|
+
[tool.setuptools]
|
|
69
|
+
include-package-data = true
|
|
70
|
+
|
|
71
|
+
[tool.setuptools.package-data]
|
|
72
|
+
"your_package_name" = ["config/*.yaml*"] # Include all .py files in the config directory
|
|
73
|
+
|
|
@@ -4,9 +4,7 @@ import yaml
|
|
|
4
4
|
import numpy as np
|
|
5
5
|
import os
|
|
6
6
|
from copy import deepcopy
|
|
7
|
-
from wavy
|
|
8
|
-
from wavy.satellite_module import satellite_class as sc
|
|
9
|
-
|
|
7
|
+
from wavy import ic, sc, ms
|
|
10
8
|
|
|
11
9
|
def test_filter_runmean(test_data):
|
|
12
10
|
varalias = 'Hs' # default
|
|
@@ -144,3 +142,57 @@ def test_filter_distance_to_coast(test_data):
|
|
|
144
142
|
assert len(flst) >= 47
|
|
145
143
|
assert type(sco.vars == 'xarray.core.dataset.Dataset')
|
|
146
144
|
assert not 'error' in vars(sco).keys()
|
|
145
|
+
|
|
146
|
+
def test_filter_landMask_ms(test_data):
|
|
147
|
+
sd = "2022-2-1 12"
|
|
148
|
+
ed = "2022-2-1 12"
|
|
149
|
+
name = ['s3a','s3b']
|
|
150
|
+
varalias = 'Hs'
|
|
151
|
+
|
|
152
|
+
# init multisat_object
|
|
153
|
+
mso = ms(sd=sd,
|
|
154
|
+
ed=ed,
|
|
155
|
+
name=name,
|
|
156
|
+
varalias = varalias,
|
|
157
|
+
path = [str(test_data/"L3/s3a"),
|
|
158
|
+
str(test_data/"L3/s3b")])
|
|
159
|
+
# read data
|
|
160
|
+
mso = mso.filter_landMask()
|
|
161
|
+
assert mso.__class__.__name__ == 'multisat_class'
|
|
162
|
+
# compare number of available variables
|
|
163
|
+
vlst = list(vars(mso).keys())
|
|
164
|
+
assert len(vlst) == 18
|
|
165
|
+
# compare number of available functions
|
|
166
|
+
dlst = dir(mso)
|
|
167
|
+
flst = [n for n in dlst if n not in vlst if '__' not in n]
|
|
168
|
+
assert len(flst) >= 27
|
|
169
|
+
assert type(mso.vars == 'xarray.core.dataset.Dataset')
|
|
170
|
+
assert not 'error' in vars(mso).keys()
|
|
171
|
+
|
|
172
|
+
def test_filter_distance_to_coast_ms(test_data):
|
|
173
|
+
sd = "2022-2-1 12"
|
|
174
|
+
ed = "2022-2-1 12"
|
|
175
|
+
name = ['s3a','s3b']
|
|
176
|
+
varalias = 'Hs'
|
|
177
|
+
|
|
178
|
+
# init multisat_object
|
|
179
|
+
mso = ms(sd=sd,
|
|
180
|
+
ed=ed,
|
|
181
|
+
name=name,
|
|
182
|
+
varalias = varalias,
|
|
183
|
+
path = [str(test_data/"L3/s3a"),
|
|
184
|
+
str(test_data/"L3/s3b")])
|
|
185
|
+
# read data
|
|
186
|
+
mso = mso.filter_distance_to_coast(llim=50000, ulim=1000000)
|
|
187
|
+
assert mso.__class__.__name__ == 'multisat_class'
|
|
188
|
+
# compare number of available variables
|
|
189
|
+
vlst = list(vars(mso).keys())
|
|
190
|
+
assert len(vlst) == 17
|
|
191
|
+
# compare number of available functions
|
|
192
|
+
dlst = dir(mso)
|
|
193
|
+
flst = [n for n in dlst if n not in vlst if '__' not in n]
|
|
194
|
+
assert len(flst) >= 27
|
|
195
|
+
assert type(mso.vars == 'xarray.core.dataset.Dataset')
|
|
196
|
+
assert not 'error' in vars(mso).keys()
|
|
197
|
+
|
|
198
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from wavy import ms
|
|
3
|
+
|
|
4
|
+
def test_multisat(test_data):
|
|
5
|
+
sd = "2022-2-1 12"
|
|
6
|
+
ed = "2022-2-1 12"
|
|
7
|
+
name = ['s3a','s3b']
|
|
8
|
+
varalias = 'Hs'
|
|
9
|
+
|
|
10
|
+
# init multisat_object
|
|
11
|
+
mso = ms(sd=sd,
|
|
12
|
+
ed=ed,
|
|
13
|
+
name=name,
|
|
14
|
+
varalias = varalias,
|
|
15
|
+
path = [str(test_data/"L3/s3a"),
|
|
16
|
+
str(test_data/"L3/s3b")])
|
|
17
|
+
# read data
|
|
18
|
+
assert mso.__class__.__name__ == 'multisat_class'
|
|
19
|
+
# compare number of available variables
|
|
20
|
+
vlst = list(vars(mso).keys())
|
|
21
|
+
assert len(vlst) == 17
|
|
22
|
+
# compare number of available functions
|
|
23
|
+
dlst = dir(mso)
|
|
24
|
+
flst = [n for n in dlst if n not in vlst if '__' not in n]
|
|
25
|
+
assert len(flst) >= 27
|
|
26
|
+
assert type(mso.vars == 'xarray.core.dataset.Dataset')
|
|
27
|
+
assert not 'error' in vars(mso).keys()
|
|
@@ -46,7 +46,7 @@ def get_AIS_data(bbox, sd=None, ed=None, minspeed=0.5):
|
|
|
46
46
|
data = "-d '" + str(dict_data).replace("'", '"') + "'"
|
|
47
47
|
|
|
48
48
|
curl_request = curl_com + url_req + head_1 + head_2 + head_3 + data
|
|
49
|
-
|
|
49
|
+
|
|
50
50
|
# get result content of curl request
|
|
51
51
|
stream = os.popen(curl_request)
|
|
52
52
|
output = stream.read()
|
|
@@ -56,7 +56,7 @@ def get_AIS_data(bbox, sd=None, ed=None, minspeed=0.5):
|
|
|
56
56
|
data=dict_output["data"],
|
|
57
57
|
columns=["mmsi", "datetime", "lon",
|
|
58
58
|
"lat", "x1", "x2", "x3", "x4",
|
|
59
|
-
"x5", "x6"])
|
|
59
|
+
"x5", "x6", "x7", "x8"])
|
|
60
60
|
|
|
61
61
|
# Get ship info
|
|
62
62
|
unique_mmsi = [int(mm) for mm in df_request["mmsi"].unique()]
|
|
@@ -258,14 +258,19 @@ class collocation_class(qls):
|
|
|
258
258
|
'''
|
|
259
259
|
|
|
260
260
|
def __init__(self, oco=None, model=None, poi=None,
|
|
261
|
-
distlim=None, leadtime=None, **kwargs):
|
|
261
|
+
distlim=None, leadtime=None, varalias=None, **kwargs):
|
|
262
262
|
print('# ----- ')
|
|
263
263
|
print(" ### Initializing collocation_class object ###")
|
|
264
264
|
print(" ")
|
|
265
265
|
# make clones to prevent overwriting
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
266
|
+
if varalias==None:
|
|
267
|
+
if isinstance(oco.varalias,str):
|
|
268
|
+
varalias = oco.varalias
|
|
269
|
+
else:
|
|
270
|
+
varalias = oco.varalias[0]
|
|
271
|
+
self.varalias = varalias
|
|
272
|
+
self.varalias_obs = varalias
|
|
273
|
+
self.varalias_mod = kwargs.get('varalias_mod', varalias)
|
|
269
274
|
self.model = model
|
|
270
275
|
self.leadtime = leadtime
|
|
271
276
|
self.oco = oco
|
|
@@ -274,7 +279,7 @@ class collocation_class(qls):
|
|
|
274
279
|
self.obstype = str(type(oco))[8:-2]
|
|
275
280
|
self.stdvarname = oco.stdvarname
|
|
276
281
|
self.region = oco.region
|
|
277
|
-
self.units = variable_def[
|
|
282
|
+
self.units = variable_def[varalias].get('units')
|
|
278
283
|
self.sd = oco.sd
|
|
279
284
|
self.ed = oco.ed
|
|
280
285
|
self.twin = kwargs.get('twin', oco.twin)
|
|
@@ -529,8 +534,8 @@ class collocation_class(qls):
|
|
|
529
534
|
tmp_dict['time'] = self.oco.vars['time'].values[idx]
|
|
530
535
|
tmp_dict['lats'] = self.oco.vars['lats'].values[idx]
|
|
531
536
|
tmp_dict['lons'] = self.oco.vars['lons'].values[idx]
|
|
532
|
-
tmp_dict[self.
|
|
533
|
-
self.oco.vars[self.
|
|
537
|
+
tmp_dict[self.varalias] = \
|
|
538
|
+
self.oco.vars[self.varalias].values[idx]
|
|
534
539
|
mco = mc(sd=fc_date[i], ed=fc_date[i], nID=self.model,
|
|
535
540
|
leadtime=self.leadtime, varalias=self.varalias_mod,
|
|
536
541
|
**kwargs)
|