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.
Files changed (261) hide show
  1. {wavyopen-0.4.4 → wavyopen-0.4.6}/.coverage +0 -0
  2. {wavyopen-0.4.4 → wavyopen-0.4.6}/.github/workflows/lint.yml +1 -1
  3. {wavyopen-0.4.4 → wavyopen-0.4.6}/.github/workflows/python.yml +4 -4
  4. {wavyopen-0.4.4 → wavyopen-0.4.6}/PKG-INFO +2 -2
  5. wavyopen-0.4.6/docs/explore_retrieval.png +0 -0
  6. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/installation.rst +6 -1
  7. wavyopen-0.4.6/docs/ipynb_find_env.png +0 -0
  8. wavyopen-0.4.6/docs/mozambique25.rst +169 -0
  9. wavyopen-0.4.6/docs/mozambique_example_global_ipynb.png +0 -0
  10. wavyopen-0.4.6/docs/mozambique_example_global_ipynb_crop.png +0 -0
  11. wavyopen-0.4.6/docs/mozambique_example_region_ipynb_crop.png +0 -0
  12. wavyopen-0.4.6/docs/tanzania25.rst +169 -0
  13. wavyopen-0.4.6/docs/tanzania_example_global_ipynb.png +0 -0
  14. wavyopen-0.4.6/docs/tanzania_example_global_ipynb_crop.png +0 -0
  15. wavyopen-0.4.6/docs/tanzania_example_regional_ipynb_crop.png +0 -0
  16. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_WEkEO.rst +10 -4
  17. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/workshops.rst +2 -0
  18. {wavyopen-0.4.4 → wavyopen-0.4.6}/environment.yml +1 -1
  19. {wavyopen-0.4.4 → wavyopen-0.4.6}/pyproject.toml +11 -2
  20. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_filtermod.py +55 -3
  21. wavyopen-0.4.6/tests/test_multisat.py +27 -0
  22. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/ais_module.py +2 -2
  23. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/collocation_module.py +12 -7
  24. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/filtermod.py +61 -28
  25. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/insitu_module.py +14 -8
  26. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/insitu_readers.py +40 -29
  27. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/multisat_module.py +10 -5
  28. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/ncmod.py +72 -0
  29. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/quicklookmod.py +19 -9
  30. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/satellite_module.py +27 -18
  31. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/satellite_readers.py +41 -26
  32. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/utils.py +36 -0
  33. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/wconfig.py +7 -7
  34. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/PKG-INFO +2 -2
  35. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/SOURCES.txt +10 -0
  36. wavyopen-0.4.4/tests/test_multisat.py +0 -9
  37. {wavyopen-0.4.4 → wavyopen-0.4.6}/.env.example +0 -0
  38. {wavyopen-0.4.4 → wavyopen-0.4.6}/.gitignore +0 -0
  39. {wavyopen-0.4.4 → wavyopen-0.4.6}/.readthedocs.yaml +0 -0
  40. {wavyopen-0.4.4 → wavyopen-0.4.6}/LICENSE +0 -0
  41. {wavyopen-0.4.4 → wavyopen-0.4.6}/README.md +0 -0
  42. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/.gitignore +0 -0
  43. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/Makefile +0 -0
  44. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/conf.py +0 -0
  45. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/credits.rst +0 -0
  46. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_L2_vs_L3.png +0 -0
  47. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_col_insitu.png +0 -0
  48. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_gridder_coll_nov.png +0 -0
  49. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_gridder_coll_rmse.png +0 -0
  50. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_gridder_obs.png +0 -0
  51. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_001.png +0 -0
  52. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_002.png +0 -0
  53. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_003.png +0 -0
  54. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_004.png +0 -0
  55. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_quicklook_005.png +0 -0
  56. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_vs_mod_waves.png +0 -0
  57. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_vs_mod_wind.png +0 -0
  58. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_waves.png +0 -0
  59. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_sat_wind.png +0 -0
  60. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_stormtrack.png +0 -0
  61. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_tc_1.png +0 -0
  62. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_tc_2.png +0 -0
  63. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_ts_insitu.png +0 -0
  64. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/docs_fig_ts_sat.png +0 -0
  65. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/ecwamMoz_coll_2023_map.png +0 -0
  66. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/ecwamMoz_coll_2023_sc.png +0 -0
  67. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/ecwamMoz_coll_2023_ts.png +0 -0
  68. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/gallery.rst +0 -0
  69. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/index.rst +0 -0
  70. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/lm_example.png +0 -0
  71. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/lm_example_coast.png +0 -0
  72. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/lm_example_coast_norway.png +0 -0
  73. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/model_quicklook.png +0 -0
  74. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/mozambique23.rst +0 -0
  75. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/mozambique24.rst +0 -0
  76. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oneocean.rst +0 -0
  77. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_collocated_ts.png +0 -0
  78. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_1.png +0 -0
  79. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_2.png +0 -0
  80. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_3.png +0 -0
  81. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_4.png +0 -0
  82. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_map_despike.png +0 -0
  83. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_map_limits.png +0 -0
  84. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_map_raw.png +0 -0
  85. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_map_smooth.png +0 -0
  86. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_ts_despike.png +0 -0
  87. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_ts_limits.png +0 -0
  88. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_ts_raw.png +0 -0
  89. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_ts_smooth.png +0 -0
  90. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_filters_sat_xtrack.png +0 -0
  91. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_gridding_map.png +0 -0
  92. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_gridding_nb_collocated.png +0 -0
  93. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_gridding_rmsd.png +0 -0
  94. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_insitu.png +0 -0
  95. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_model_map.png +0 -0
  96. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_sat_map.png +0 -0
  97. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/oslo_ws24_sat_ts.png +0 -0
  98. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/quicklook_ts_insitu.png +0 -0
  99. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/rabault_et_al_2022.png +0 -0
  100. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/requirements.txt +0 -0
  101. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/serve.py +0 -0
  102. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials.rst +0 -0
  103. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_ais.rst +0 -0
  104. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_collocmod.rst +0 -0
  105. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_config.rst +0 -0
  106. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_consolidate.rst +0 -0
  107. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_gridder.rst +0 -0
  108. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_insitu.rst +0 -0
  109. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_modelmod.rst +0 -0
  110. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_quicklooks.rst +0 -0
  111. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat.rst +0 -0
  112. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_download.rst +0 -0
  113. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_filters.rst +0 -0
  114. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_import.rst +0 -0
  115. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_multi.rst +0 -0
  116. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_sat_regions.rst +0 -0
  117. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_stats.rst +0 -0
  118. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_stormtrack.rst +0 -0
  119. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_triple_collocation.rst +0 -0
  120. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_validate.rst +0 -0
  121. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/tutorials_wavyQuick.rst +0 -0
  122. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam21.rst +0 -0
  123. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam22.rst +0 -0
  124. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam22_2.rst +0 -0
  125. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam25.rst +0 -0
  126. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam_coll_2022_2_map.png +0 -0
  127. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam_coll_2022_2_sc.png +0 -0
  128. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/vietnam_coll_2022_2_ts.png +0 -0
  129. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/wavy_WEkEO_example.png +0 -0
  130. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/workshop_latest.rst +0 -0
  131. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/workshop_map.png +0 -0
  132. {wavyopen-0.4.4 → wavyopen-0.4.6}/docs/workshop_time.png +0 -0
  133. {wavyopen-0.4.4 → wavyopen-0.4.6}/setup.cfg +0 -0
  134. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/__init__.py +0 -0
  135. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/conftest.py +0 -0
  136. {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
  137. {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
  138. {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
  139. {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
  140. {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
  141. {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
  142. {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
  143. {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
  144. {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
  145. {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
  146. {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
  147. {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
  148. {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
  149. {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
  150. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/multi/ESACCI-SEASTATE-L3-SWH-MULTI_1D-20050826-fv01.nc +0 -0
  151. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/multi/ESACCI-SEASTATE-L3-SWH-MULTI_1D-20050828-fv01.nc +0 -0
  152. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T000000_20220201T030000_20220627T133409.nc +0 -0
  153. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T030000_20220201T060000_20220627T133414.nc +0 -0
  154. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T060000_20220201T090000_20220627T133419.nc +0 -0
  155. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T090000_20220201T120000_20220627T133506.nc +0 -0
  156. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T120000_20220201T150000_20220627T133453.nc +0 -0
  157. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T150000_20220201T180000_20220627T133459.nc +0 -0
  158. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T180000_20220201T210000_20220627T133503.nc +0 -0
  159. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T210000_20220202T000000_20220627T133543.nc +0 -0
  160. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T000000_20220202T030000_20220627T133539.nc +0 -0
  161. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T030000_20220202T060000_20220627T133550.nc +0 -0
  162. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T060000_20220202T090000_20220627T133545.nc +0 -0
  163. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T090000_20220202T120000_20220627T133627.nc +0 -0
  164. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T120000_20220202T150000_20220627T133630.nc +0 -0
  165. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T150000_20220202T180000_20220627T133628.nc +0 -0
  166. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T180000_20220202T210000_20220627T133630.nc +0 -0
  167. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T210000_20220203T000000_20220627T133716.nc +0 -0
  168. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T000000_20220203T030000_20220627T133711.nc +0 -0
  169. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T030000_20220203T060000_20220627T133710.nc +0 -0
  170. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T060000_20220203T090000_20220627T133713.nc +0 -0
  171. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T090000_20220203T120000_20220627T133755.nc +0 -0
  172. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T120000_20220203T150000_20220627T133753.nc +0 -0
  173. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T150000_20220203T180000_20220627T133755.nc +0 -0
  174. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T180000_20220203T210000_20220627T133758.nc +0 -0
  175. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T210000_20220204T000000_20220627T133839.nc +0 -0
  176. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20230704T180000_20230704T210000_20230705T001501.nc +0 -0
  177. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T000000_20220201T030000_20220630T215237.nc +0 -0
  178. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T030000_20220201T060000_20220630T214527.nc +0 -0
  179. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T060000_20220201T090000_20220630T214537.nc +0 -0
  180. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T090000_20220201T120000_20220630T214910.nc +0 -0
  181. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T120000_20220201T150000_20220630T215128.nc +0 -0
  182. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T150000_20220201T180000_20220630T215045.nc +0 -0
  183. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T180000_20220201T210000_20220630T215105.nc +0 -0
  184. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T210000_20220202T000000_20220630T215305.nc +0 -0
  185. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T000000_20220202T030000_20220630T214228.nc +0 -0
  186. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T030000_20220202T060000_20220630T214237.nc +0 -0
  187. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T060000_20220202T090000_20220630T214520.nc +0 -0
  188. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T090000_20220202T120000_20220630T215205.nc +0 -0
  189. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T120000_20220202T150000_20220630T214753.nc +0 -0
  190. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T150000_20220202T180000_20220630T214826.nc +0 -0
  191. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T180000_20220202T210000_20220630T214830.nc +0 -0
  192. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T210000_20220203T000000_20220630T214307.nc +0 -0
  193. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T000000_20220203T030000_20220630T214824.nc +0 -0
  194. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T030000_20220203T060000_20220630T214744.nc +0 -0
  195. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T060000_20220203T090000_20220630T214947.nc +0 -0
  196. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T090000_20220203T120000_20220630T214931.nc +0 -0
  197. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T120000_20220203T150000_20220630T214405.nc +0 -0
  198. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T150000_20220203T180000_20220630T214913.nc +0 -0
  199. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T180000_20220203T210000_20220630T214613.nc +0 -0
  200. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T210000_20220204T000000_20220630T215211.nc +0 -0
  201. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/SWIM_L2P/CFO_OP05_SWI_L2PBOX_F_20220226T173014_20220226T174953.nc +0 -0
  202. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/geojson/wci_nn.geojson +0 -0
  203. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/daily/Draugen/AR_TS_MO_Draugen_20230820.nc +0 -0
  204. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/daily/Draugen/AR_TS_MO_Draugen_20230821.nc +0 -0
  205. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/daily/Sulafjorden/AR_TS_MO_A-Sulafjorden_20230820.nc +0 -0
  206. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/monthly/Draugen/AR_TS_MO_Draugen_202307.nc +0 -0
  207. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/insitu/monthly/Sulafjorden/AR_TS_MO_A-Sulafjorden_202307.nc +0 -0
  208. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/track/Katrina_track.csv +0 -0
  209. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/triple_collocation/Norne_ico.nc +0 -0
  210. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/triple_collocation/Norne_mco.nc +0 -0
  211. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/triple_collocation/Norne_sco.nc +0 -0
  212. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/data/triple_collocation/simulated_t.csv +0 -0
  213. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_aismod.py +0 -0
  214. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_collocmod.py +0 -0
  215. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_config.py +0 -0
  216. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_consolidate.py +0 -0
  217. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_gridder.py +0 -0
  218. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_insitumod.py +0 -0
  219. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_modelmod.py +0 -0
  220. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_multiins.py +0 -0
  221. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_satellite_module.py +0 -0
  222. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_triple_collocation.py +0 -0
  223. {wavyopen-0.4.4 → wavyopen-0.4.6}/tests/test_utils.py +0 -0
  224. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/GPfcts.py +0 -0
  225. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/__init__.py +0 -0
  226. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/apps/__init__.py +0 -0
  227. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/apps/wavyCFG.py +0 -0
  228. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/apps/wavyDownload.py +0 -0
  229. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/apps/wavyQuick.py +0 -0
  230. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/d22_var_dicts.yaml.default +0 -0
  231. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/insitu_cfg.yaml.default +0 -0
  232. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/insitu_cfg.yaml.minimal +0 -0
  233. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/model_cfg.yaml.default +0 -0
  234. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/model_cfg.yaml.minimal +0 -0
  235. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/quicklook_cfg.yaml.default +0 -0
  236. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/region_cfg.yaml.default +0 -0
  237. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/satellite_cfg.yaml.default +0 -0
  238. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/satellite_cfg.yaml.minimal +0 -0
  239. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/validation_metrics.yaml.default +0 -0
  240. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/variable_def.yaml.default +0 -0
  241. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/config/variables_frost.yaml.default +0 -0
  242. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/consolidate.py +0 -0
  243. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/credentials.py +0 -0
  244. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/grid_readers.py +0 -0
  245. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/grid_stats.py +0 -0
  246. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/gridder_module.py +0 -0
  247. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/init_class_insitu.py +0 -0
  248. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/init_class_mod.py +0 -0
  249. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/init_class_sat.py +0 -0
  250. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/insitu_collectors.py +0 -0
  251. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/model_module.py +0 -0
  252. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/model_readers.py +0 -0
  253. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/multiins.py +0 -0
  254. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/quicklookmod.py.old +0 -0
  255. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/satellite_collectors.py +0 -0
  256. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/triple_collocation.py +0 -0
  257. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavy/validationmod.py +0 -0
  258. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/dependency_links.txt +0 -0
  259. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/entry_points.txt +0 -0
  260. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/requires.txt +0 -0
  261. {wavyopen-0.4.4 → wavyopen-0.4.6}/wavyopen.egg-info/top_level.txt +0 -0
@@ -12,7 +12,7 @@ jobs:
12
12
  strategy:
13
13
  matrix:
14
14
  os: [ "ubuntu" ]
15
- python-version: [ '3.10' ]
15
+ python-version: [ '3.14' ]
16
16
  steps:
17
17
  - uses: actions/checkout@v4
18
18
  - uses: conda-incubator/setup-miniconda@v3
@@ -18,7 +18,7 @@ jobs:
18
18
  strategy:
19
19
  matrix:
20
20
  os: ["ubuntu", "macos"]
21
- python-version: ['3.10', '3.11']
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.11' && matrix.os == 'ubuntu'
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.11' && matrix.os == 'ubuntu'
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.11'
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.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.10
7
+ Requires-Python: >=3.12
8
8
  License-File: LICENSE
9
9
  Requires-Dist: matplotlib>=3.5
10
10
  Requires-Dist: numpy>=1.20
@@ -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
@@ -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
@@ -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=conda-forge
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:
@@ -17,3 +17,5 @@ Workshops and show cases
17
17
  vietnam25
18
18
  mozambique23
19
19
  mozambique24
20
+ mozambique25
21
+ tanzania25
@@ -2,7 +2,7 @@ name: wavy
2
2
  channels:
3
3
  - conda-forge
4
4
  dependencies:
5
- - python>=3.10
5
+ - python>=3.12
6
6
  - matplotlib>=3.5
7
7
  - numpy>=1.20
8
8
  - scipy>=1.9
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "wavyopen"
7
- requires-python = ">=3.10"
8
- version = "0.4.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.insitu_module import insitu_class as ic
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
- self.varalias = oco.varalias
267
- self.varalias_obs = oco.varalias
268
- self.varalias_mod = kwargs.get('varalias', oco.varalias)
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[self.varalias].get('units')
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.oco.varalias] = \
533
- self.oco.vars[self.oco.varalias].values[idx]
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)