wavyopen 0.4.1__tar.gz → 0.4.2__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 (250) hide show
  1. {wavyopen-0.4.1 → wavyopen-0.4.2}/.coverage +0 -0
  2. {wavyopen-0.4.1 → wavyopen-0.4.2}/PKG-INFO +1 -1
  3. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_triple_collocation.rst +23 -38
  4. {wavyopen-0.4.1 → wavyopen-0.4.2}/pyproject.toml +1 -1
  5. wavyopen-0.4.2/tests/test_triple_collocation.py +248 -0
  6. wavyopen-0.4.2/wavy/triple_collocation.py +734 -0
  7. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavyopen.egg-info/PKG-INFO +1 -1
  8. wavyopen-0.4.1/tests/test_triple_collocation.py +0 -129
  9. wavyopen-0.4.1/wavy/triple_collocation.py +0 -402
  10. {wavyopen-0.4.1 → wavyopen-0.4.2}/.env.example +0 -0
  11. {wavyopen-0.4.1 → wavyopen-0.4.2}/.github/workflows/lint.yml +0 -0
  12. {wavyopen-0.4.1 → wavyopen-0.4.2}/.github/workflows/python.yml +0 -0
  13. {wavyopen-0.4.1 → wavyopen-0.4.2}/.gitignore +0 -0
  14. {wavyopen-0.4.1 → wavyopen-0.4.2}/.readthedocs.yaml +0 -0
  15. {wavyopen-0.4.1 → wavyopen-0.4.2}/LICENSE +0 -0
  16. {wavyopen-0.4.1 → wavyopen-0.4.2}/README.md +0 -0
  17. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/.gitignore +0 -0
  18. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/Makefile +0 -0
  19. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/conf.py +0 -0
  20. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/credits.rst +0 -0
  21. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_L2_vs_L3.png +0 -0
  22. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_col_insitu.png +0 -0
  23. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_gridder_coll_nov.png +0 -0
  24. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_gridder_coll_rmse.png +0 -0
  25. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_gridder_obs.png +0 -0
  26. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_quicklook_001.png +0 -0
  27. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_quicklook_002.png +0 -0
  28. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_quicklook_003.png +0 -0
  29. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_quicklook_004.png +0 -0
  30. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_quicklook_005.png +0 -0
  31. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_vs_mod_waves.png +0 -0
  32. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_vs_mod_wind.png +0 -0
  33. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_waves.png +0 -0
  34. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_sat_wind.png +0 -0
  35. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_stormtrack.png +0 -0
  36. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_tc_1.png +0 -0
  37. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_tc_2.png +0 -0
  38. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_ts_insitu.png +0 -0
  39. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/docs_fig_ts_sat.png +0 -0
  40. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/ecwamMoz_coll_2023_map.png +0 -0
  41. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/ecwamMoz_coll_2023_sc.png +0 -0
  42. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/ecwamMoz_coll_2023_ts.png +0 -0
  43. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/gallery.rst +0 -0
  44. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/index.rst +0 -0
  45. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/installation.rst +0 -0
  46. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/lm_example.png +0 -0
  47. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/lm_example_coast.png +0 -0
  48. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/lm_example_coast_norway.png +0 -0
  49. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/model_quicklook.png +0 -0
  50. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/mozambique23.rst +0 -0
  51. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/mozambique24.rst +0 -0
  52. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oneocean.rst +0 -0
  53. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_collocated_ts.png +0 -0
  54. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_1.png +0 -0
  55. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_2.png +0 -0
  56. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_3.png +0 -0
  57. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_4.png +0 -0
  58. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_map_despike.png +0 -0
  59. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_map_limits.png +0 -0
  60. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_map_raw.png +0 -0
  61. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_map_smooth.png +0 -0
  62. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_ts_despike.png +0 -0
  63. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_ts_limits.png +0 -0
  64. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_ts_raw.png +0 -0
  65. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_ts_smooth.png +0 -0
  66. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_filters_sat_xtrack.png +0 -0
  67. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_gridding_map.png +0 -0
  68. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_gridding_nb_collocated.png +0 -0
  69. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_gridding_rmsd.png +0 -0
  70. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_insitu.png +0 -0
  71. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_model_map.png +0 -0
  72. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_sat_map.png +0 -0
  73. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/oslo_ws24_sat_ts.png +0 -0
  74. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/quicklook_ts_insitu.png +0 -0
  75. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/rabault_et_al_2022.png +0 -0
  76. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/requirements.txt +0 -0
  77. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/serve.py +0 -0
  78. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials.rst +0 -0
  79. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_ais.rst +0 -0
  80. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_collocmod.rst +0 -0
  81. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_config.rst +0 -0
  82. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_consolidate.rst +0 -0
  83. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_gridder.rst +0 -0
  84. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_insitu.rst +0 -0
  85. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_modelmod.rst +0 -0
  86. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_quicklooks.rst +0 -0
  87. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_sat.rst +0 -0
  88. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_sat_download.rst +0 -0
  89. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_sat_filters.rst +0 -0
  90. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_sat_import.rst +0 -0
  91. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_sat_multi.rst +0 -0
  92. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_sat_regions.rst +0 -0
  93. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_stats.rst +0 -0
  94. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_stormtrack.rst +0 -0
  95. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_validate.rst +0 -0
  96. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/tutorials_wavyQuick.rst +0 -0
  97. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/vietnam21.rst +0 -0
  98. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/vietnam22.rst +0 -0
  99. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/vietnam22_2.rst +0 -0
  100. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/vietnam25.rst +0 -0
  101. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/vietnam_coll_2022_2_map.png +0 -0
  102. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/vietnam_coll_2022_2_sc.png +0 -0
  103. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/vietnam_coll_2022_2_ts.png +0 -0
  104. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/workshop_latest.rst +0 -0
  105. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/workshop_map.png +0 -0
  106. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/workshop_time.png +0 -0
  107. {wavyopen-0.4.1 → wavyopen-0.4.2}/docs/workshops.rst +0 -0
  108. {wavyopen-0.4.1 → wavyopen-0.4.2}/environment.yml +0 -0
  109. {wavyopen-0.4.1 → wavyopen-0.4.2}/setup.cfg +0 -0
  110. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/__init__.py +0 -0
  111. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/conftest.py +0 -0
  112. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0756_20190324_085453_20190324_094523__PEACHI_V2-1.nc +0 -0
  113. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0757_20190324_094523_20190324_103552__PEACHI_V2-1.nc +0 -0
  114. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0758_20190324_103552_20190324_112622__PEACHI_V2-1.nc +0 -0
  115. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0759_20190324_112622_20190324_121651__PEACHI_V2-1.nc +0 -0
  116. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0760_20190324_121651_20190324_130721__PEACHI_V2-1.nc +0 -0
  117. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0761_20190324_130721_20190324_135750__PEACHI_V2-1.nc +0 -0
  118. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0762_20190324_135751_20190324_144820__PEACHI_V2-1.nc +0 -0
  119. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0763_20190324_144820_20190324_153850__PEACHI_V2-1.nc +0 -0
  120. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0764_20190324_153850_20190324_162919__PEACHI_V2-1.nc +0 -0
  121. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0765_20190324_162919_20190324_171948__PEACHI_V2-1.nc +0 -0
  122. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0766_20190324_171950_20190324_181019__PEACHI_V2-1.nc +0 -0
  123. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0767_20190324_181019_20190324_190048__PEACHI_V2-1.nc +0 -0
  124. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0768_20190324_190048_20190324_195118__PEACHI_V2-1.nc +0 -0
  125. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/CCIv3_20Hz/S3A_SGDR_C0042_P0769_20190324_195118_20190324_204148__PEACHI_V2-1.nc +0 -0
  126. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/multi/ESACCI-SEASTATE-L3-SWH-MULTI_1D-20050826-fv01.nc +0 -0
  127. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/multi/ESACCI-SEASTATE-L3-SWH-MULTI_1D-20050828-fv01.nc +0 -0
  128. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T000000_20220201T030000_20220627T133409.nc +0 -0
  129. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T030000_20220201T060000_20220627T133414.nc +0 -0
  130. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T060000_20220201T090000_20220627T133419.nc +0 -0
  131. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T090000_20220201T120000_20220627T133506.nc +0 -0
  132. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T120000_20220201T150000_20220627T133453.nc +0 -0
  133. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T150000_20220201T180000_20220627T133459.nc +0 -0
  134. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T180000_20220201T210000_20220627T133503.nc +0 -0
  135. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220201T210000_20220202T000000_20220627T133543.nc +0 -0
  136. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T000000_20220202T030000_20220627T133539.nc +0 -0
  137. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T030000_20220202T060000_20220627T133550.nc +0 -0
  138. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T060000_20220202T090000_20220627T133545.nc +0 -0
  139. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T090000_20220202T120000_20220627T133627.nc +0 -0
  140. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T120000_20220202T150000_20220627T133630.nc +0 -0
  141. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T150000_20220202T180000_20220627T133628.nc +0 -0
  142. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T180000_20220202T210000_20220627T133630.nc +0 -0
  143. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220202T210000_20220203T000000_20220627T133716.nc +0 -0
  144. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T000000_20220203T030000_20220627T133711.nc +0 -0
  145. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T030000_20220203T060000_20220627T133710.nc +0 -0
  146. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T060000_20220203T090000_20220627T133713.nc +0 -0
  147. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T090000_20220203T120000_20220627T133755.nc +0 -0
  148. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T120000_20220203T150000_20220627T133753.nc +0 -0
  149. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T150000_20220203T180000_20220627T133755.nc +0 -0
  150. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T180000_20220203T210000_20220627T133758.nc +0 -0
  151. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20220203T210000_20220204T000000_20220627T133839.nc +0 -0
  152. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3a/global_vavh_l3_rt_s3a_20230704T180000_20230704T210000_20230705T001501.nc +0 -0
  153. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T000000_20220201T030000_20220630T215237.nc +0 -0
  154. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T030000_20220201T060000_20220630T214527.nc +0 -0
  155. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T060000_20220201T090000_20220630T214537.nc +0 -0
  156. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T090000_20220201T120000_20220630T214910.nc +0 -0
  157. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T120000_20220201T150000_20220630T215128.nc +0 -0
  158. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T150000_20220201T180000_20220630T215045.nc +0 -0
  159. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T180000_20220201T210000_20220630T215105.nc +0 -0
  160. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220201T210000_20220202T000000_20220630T215305.nc +0 -0
  161. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T000000_20220202T030000_20220630T214228.nc +0 -0
  162. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T030000_20220202T060000_20220630T214237.nc +0 -0
  163. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T060000_20220202T090000_20220630T214520.nc +0 -0
  164. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T090000_20220202T120000_20220630T215205.nc +0 -0
  165. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T120000_20220202T150000_20220630T214753.nc +0 -0
  166. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T150000_20220202T180000_20220630T214826.nc +0 -0
  167. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T180000_20220202T210000_20220630T214830.nc +0 -0
  168. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220202T210000_20220203T000000_20220630T214307.nc +0 -0
  169. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T000000_20220203T030000_20220630T214824.nc +0 -0
  170. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T030000_20220203T060000_20220630T214744.nc +0 -0
  171. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T060000_20220203T090000_20220630T214947.nc +0 -0
  172. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T090000_20220203T120000_20220630T214931.nc +0 -0
  173. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T120000_20220203T150000_20220630T214405.nc +0 -0
  174. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T150000_20220203T180000_20220630T214913.nc +0 -0
  175. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T180000_20220203T210000_20220630T214613.nc +0 -0
  176. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/L3/s3b/global_vavh_l3_rt_s3b_20220203T210000_20220204T000000_20220630T215211.nc +0 -0
  177. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/SWIM_L2P/CFO_OP05_SWI_L2PBOX_F_20220226T173014_20220226T174953.nc +0 -0
  178. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/geojson/wci_nn.geojson +0 -0
  179. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/insitu/daily/Draugen/AR_TS_MO_Draugen_20230820.nc +0 -0
  180. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/insitu/daily/Draugen/AR_TS_MO_Draugen_20230821.nc +0 -0
  181. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/insitu/daily/Sulafjorden/AR_TS_MO_A-Sulafjorden_20230820.nc +0 -0
  182. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/insitu/monthly/Draugen/AR_TS_MO_Draugen_202307.nc +0 -0
  183. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/insitu/monthly/Sulafjorden/AR_TS_MO_A-Sulafjorden_202307.nc +0 -0
  184. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/track/Katrina_track.csv +0 -0
  185. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/triple_collocation/Norne_ico.nc +0 -0
  186. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/triple_collocation/Norne_mco.nc +0 -0
  187. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/triple_collocation/Norne_sco.nc +0 -0
  188. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/data/triple_collocation/simulated_t.csv +0 -0
  189. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_aismod.py +0 -0
  190. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_collocmod.py +0 -0
  191. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_config.py +0 -0
  192. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_consolidate.py +0 -0
  193. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_filtermod.py +0 -0
  194. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_gridder.py +0 -0
  195. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_insitumod.py +0 -0
  196. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_modelmod.py +0 -0
  197. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_multiins.py +0 -0
  198. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_multisat.py +0 -0
  199. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_satellite_module.py +0 -0
  200. {wavyopen-0.4.1 → wavyopen-0.4.2}/tests/test_utils.py +0 -0
  201. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/GPfcts.py +0 -0
  202. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/__init__.py +0 -0
  203. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/ais_module.py +0 -0
  204. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/apps/__init__.py +0 -0
  205. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/apps/wavyCFG.py +0 -0
  206. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/apps/wavyDownload.py +0 -0
  207. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/apps/wavyQuick.py +0 -0
  208. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/collocation_module.py +0 -0
  209. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/d22_var_dicts.yaml.default +0 -0
  210. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/insitu_cfg.yaml.default +0 -0
  211. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/insitu_cfg.yaml.minimal +0 -0
  212. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/model_cfg.yaml.default +0 -0
  213. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/model_cfg.yaml.minimal +0 -0
  214. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/quicklook_cfg.yaml.default +0 -0
  215. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/region_cfg.yaml.default +0 -0
  216. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/satellite_cfg.yaml.default +0 -0
  217. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/satellite_cfg.yaml.minimal +0 -0
  218. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/validation_metrics.yaml.default +0 -0
  219. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/variable_def.yaml.default +0 -0
  220. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/config/variables_frost.yaml.default +0 -0
  221. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/consolidate.py +0 -0
  222. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/credentials.py +0 -0
  223. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/filtermod.py +0 -0
  224. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/grid_readers.py +0 -0
  225. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/grid_stats.py +0 -0
  226. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/gridder_module.py +0 -0
  227. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/init_class_insitu.py +0 -0
  228. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/init_class_mod.py +0 -0
  229. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/init_class_sat.py +0 -0
  230. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/insitu_collectors.py +0 -0
  231. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/insitu_module.py +0 -0
  232. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/insitu_readers.py +0 -0
  233. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/model_module.py +0 -0
  234. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/model_readers.py +0 -0
  235. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/multiins.py +0 -0
  236. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/multisat_module.py +0 -0
  237. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/ncmod.py +0 -0
  238. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/quicklookmod.py +0 -0
  239. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/quicklookmod.py.old +0 -0
  240. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/satellite_collectors.py +0 -0
  241. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/satellite_module.py +0 -0
  242. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/satellite_readers.py +0 -0
  243. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/utils.py +0 -0
  244. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/validationmod.py +0 -0
  245. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavy/wconfig.py +0 -0
  246. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavyopen.egg-info/SOURCES.txt +0 -0
  247. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavyopen.egg-info/dependency_links.txt +0 -0
  248. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavyopen.egg-info/entry_points.txt +0 -0
  249. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavyopen.egg-info/requires.txt +0 -0
  250. {wavyopen-0.4.1 → wavyopen-0.4.2}/wavyopen.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wavyopen
3
- Version: 0.4.1
3
+ Version: 0.4.2
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
@@ -98,17 +98,21 @@ With: :math:`\epsilon_{x} \sim \mathcal{N}(0,0.1)`, :math:`\epsilon_{y} \sim \ma
98
98
  >>> import numpy as np
99
99
  >>> n = len(df)
100
100
  >>> np.random.seed(1)
101
- >>> e_x = np.random.normal(0, 0.01, n)
101
+ >>> e_x = np.random.normal(0, 0.1, n)
102
102
  >>> np.random.seed(5)
103
- >>> e_y = np.random.normal(0, 0.04, n)
103
+ >>> e_y = np.random.normal(0, 0.2, n)
104
104
  >>> np.random.seed(11)
105
- >>> e_z = np.random.normal(0, 0.04, n)
105
+ >>> e_z = np.random.normal(0, 0.2, n)
106
106
 
107
107
  >>> # Generating the simulated measurements
108
108
  >>> df['x'] = df['t'] + e_x
109
109
  >>> df['y'] = a_y*df['t'] + b_y + e_y
110
110
  >>> df['z'] = a_z*df['t'] + b_z + e_z
111
111
 
112
+ >>> # Save data into a dictionary
113
+ >>> data = df[['x', 'y', 'z']].to_dict(orient='list')
114
+
115
+
112
116
  Now we can have a look at the generated measurements:
113
117
 
114
118
  .. code-block:: python3
@@ -116,9 +120,9 @@ Now we can have a look at the generated measurements:
116
120
  >>> import matplotlib.pyplot as plt
117
121
  >>> fig, ax = plt.subplots(1,1,figsize=(12,5))
118
122
  >>> g1 = ax.plot(df['t'], c='black', label='$t$')
119
- >>> g2 = ax.scatter(np.arange(0,n),df['x'], c='#d73027', alpha=0.7, marker='.', label='$x$')
120
- >>> g3 = ax.scatter(np.arange(0,n),df['y'], c='#fc8d59', alpha=0.7, marker='.', label='$y$')
121
- >>> g4 = ax.scatter(np.arange(0,n),df['z'], c='#4575b4', alpha=0.7, marker='.',label='$z$')
123
+ >>> g2 = ax.scatter(np.arange(0,n),data['x'], c='#d73027', alpha=0.7, marker='.', label='$x$')
124
+ >>> g3 = ax.scatter(np.arange(0,n),data['y'], c='#fc8d59', alpha=0.7, marker='.', label='$y$')
125
+ >>> g4 = ax.scatter(np.arange(0,n),data['z'], c='#4575b4', alpha=0.7, marker='.',label='$z$')
122
126
  >>> ax.legend(fontsize=13)
123
127
  >>> plt.show()
124
128
 
@@ -131,9 +135,8 @@ Before applying the Triple Collocation analysis, let us now calibrate :math:`y`
131
135
 
132
136
  >>> import wavy.triple_collocation as tc
133
137
 
134
- >>> df['y^x'], df['z^x'] = tc.calibration(R=df['x'].values,
135
- ... A=df['y'].values,
136
- ... B=df['z'].values)
138
+ >>> data_cal = tc.calibration_triplets_tc(data, ref='x')
139
+
137
140
 
138
141
  Let us look at the series after calibration.
139
142
 
@@ -141,9 +144,9 @@ Let us look at the series after calibration.
141
144
 
142
145
  >>> fig, ax = plt.subplots(1,1,figsize=(12,5))
143
146
  >>> g1 = ax.plot(df['t'], c='black', label='$t$')
144
- >>> g2 = ax.scatter(np.arange(0,n),df['x'], c='#d73027', alpha=0.7, marker='.', label='$x$')
145
- >>> g3 = ax.scatter(np.arange(0,n),df['y^x'], c='#fc8d59', alpha=0.7, marker='.', label='$y^x$')
146
- >>> g4 = ax.scatter(np.arange(0,n),df['z^x'], c='#4575b4', alpha=0.7, marker='.',label='$z^x$')
147
+ >>> g2 = ax.scatter(np.arange(0,n),data_cal['x'], c='#d73027', alpha=0.7, marker='.', label='$x$')
148
+ >>> g3 = ax.scatter(np.arange(0,n),data_cal['y'], c='#fc8d59', alpha=0.7, marker='.', label='$y^x$')
149
+ >>> g4 = ax.scatter(np.arange(0,n),data_cal['z'], c='#4575b4', alpha=0.7, marker='.',label='$z^x$')
147
150
  >>> ax.legend(fontsize=13)
148
151
  >>> plt.show()
149
152
 
@@ -151,42 +154,24 @@ Let us look at the series after calibration.
151
154
  .. image:: ./docs_fig_tc_2.png
152
155
  :scale: 80
153
156
 
154
- Let us first prepare the data, it should take the form of a dictionnary as follows:
155
-
156
- .. code-block:: python3
157
-
158
- >>> data = {'x':df['x'].values,
159
- ... 'y^x':df['y^x'].values,
160
- ... 'z^x':df['z^x'].values}
161
-
162
- or directly if using pandas as in this example:
163
-
164
- .. code-block:: python3
165
-
166
- >>> data = df[['x', 'y^x', 'z^x']].to_dict(orient='list')
167
157
 
168
158
  Then we can run the Triple Collocation analysis. A reference is defined for the metrics that are calculated relatively to one of the three measurements.
169
159
 
170
160
  .. code-block:: python3
171
161
 
172
- >>> ref='x'
173
- >>> tc_results = tc.triple_collocation_validate(data,ref=ref)
162
+ >>> tc_results = tc.triple_collocation(data_cal,ref='x')
174
163
 
175
164
  This returns a dictionary with the results of the Triple Collocation analysis. It can be displayed in a table as follows (the results are rounded to the third decimal by default):
176
165
 
177
166
  .. code-block:: python3
178
167
 
179
- >>> tc.disp_tc_validation(tc_results)
180
-
181
- x y^x z^x
182
- var_est 0.01 0.16 0.024
183
- RMSE 0.098 0.4 0.155
184
- SI 4.658 18.936 7.319
185
- rho 0.981 0.759 0.955
186
- mean 2.114 2.114 2.114
187
- std 0.717 0.815 0.727
188
-
189
- The reference for the SI is: x
168
+ >>> tc_results
169
+
170
+ var rmse si rho mean std
171
+ x 0.010 0.098 0.047 0.981 2.114 0.717
172
+ y 0.160 0.400 0.189 0.759 2.114 0.815
173
+ z 0.024 0.155 0.073 0.955 2.114 0.727
174
+
190
175
 
191
176
  Now we can check the variances of error estimated with Triple collocation are indeed the ones we input when simulating the data.
192
177
  So in theory we had (also rounding to the third decimal):
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "wavyopen"
7
7
  requires-python = ">=3.10"
8
- version = "0.4.1"
8
+ version = "0.4.2"
9
9
  description = "A package for processing/calibrating/validating wave measurements and wave model output."
10
10
  license = "MIT"
11
11
  license-files = ["LICENSE"]
@@ -0,0 +1,248 @@
1
+ import pytest
2
+ from wavy.insitu_module import insitu_class as ic
3
+ from wavy.satellite_module import satellite_class as sc
4
+ from wavy.model_module import model_class as mc
5
+ import xarray as xr
6
+ import wavy.triple_collocation as tc
7
+ import numpy as np
8
+ import pandas as pd
9
+
10
+ def test_triple_collocation(test_data):
11
+
12
+ # Wavy objects
13
+ # Import in-situ data
14
+ ico = ic(sd='2014-01-01',
15
+ ed='2018-12-31',
16
+ nID='history_cmems_NRT',
17
+ name='Norne')
18
+ ico.vars = xr.open_dataset(
19
+ str(test_data/"triple_collocation/Norne_ico.nc")
20
+ )
21
+ # Import satellite data
22
+ sco = sc(sd='2014-01-01',
23
+ ed='2018-12-31',
24
+ nID='CCIv1_L3',
25
+ name='multi')
26
+ sco.vars = xr.open_dataset(
27
+ str(test_data/"triple_collocation/Norne_sco.nc")
28
+ )
29
+ # Import model data
30
+ mco = mc(sd='2014-01-01',
31
+ ed='2018-12-31',
32
+ nID='NORA3_hc_waves')
33
+ mco.vars = xr.open_dataset(
34
+ str(test_data/"triple_collocation/Norne_mco.nc")
35
+ )
36
+ # Create dictionary for triple collocation function
37
+ dict_data = {'insitu': ico, 'satellite': sco, 'model': mco}
38
+ # Apply triple collocation
39
+ ref = 'insitu'
40
+ tc_res = tc.triple_collocation(dict_data, ref=ref)
41
+
42
+ assert isinstance(tc_res, pd.DataFrame)
43
+ assert tc_res.attrs['ref'] in dict_data.keys()
44
+ assert len(tc_res) == 3
45
+ assert len(list(tc_res)) == 6
46
+
47
+ # Simulated data
48
+ n = 1000
49
+ T = [np.sin(0.2 * i) + 1.2 for i in range(n)]
50
+ b_x = 1.1
51
+ b_y = 0.5
52
+ b_z = 1.8
53
+
54
+ np.random.seed(1)
55
+ s_x = 0.1
56
+ e_x = np.random.normal(0, s_x, n)
57
+
58
+ np.random.seed(5)
59
+ s_y = 0.2
60
+ e_y = np.random.normal(0, s_y, n)
61
+
62
+ np.random.seed(11)
63
+ s_z = 0.5
64
+ e_z = np.random.normal(0, s_z, n)
65
+
66
+ X = [b_x * T[i] + e_x[i] for i in range(n)]
67
+ Y = [b_y * T[i] + e_y[i] for i in range(n)]
68
+ Z = [b_z * T[i] + e_z[i] for i in range(n)]
69
+
70
+ dict_data = {'X': X, 'Y': Y, 'Z': Z}
71
+ ref = 'X'
72
+
73
+ tc_res = tc.triple_collocation(dict_data, ref=ref)
74
+
75
+ assert isinstance(tc_res, pd.DataFrame)
76
+ assert tc_res.attrs['ref'] in dict_data.keys()
77
+ assert len(tc_res) == 3
78
+ assert len(list(tc_res)) == 6
79
+
80
+
81
+ def test_calibration_triplets_cdf_matching(test_data):
82
+
83
+ # Wavy objects
84
+ # Import in-situ data
85
+ ico = ic(sd='2014-01-01',
86
+ ed='2018-12-31',
87
+ nID='history_cmems_NRT',
88
+ name='Norne')
89
+ ico.vars = xr.open_dataset(
90
+ str(test_data/"triple_collocation/Norne_ico.nc")
91
+ )
92
+ # Import satellite data
93
+ sco = sc(sd='2014-01-01',
94
+ ed='2018-12-31',
95
+ nID='CCIv1_L3',
96
+ name='multi')
97
+ sco.vars = xr.open_dataset(
98
+ str(test_data/"triple_collocation/Norne_sco.nc")
99
+ )
100
+ # Import model data
101
+ mco = mc(sd='2014-01-01',
102
+ ed='2018-12-31',
103
+ nID='NORA3_hc_waves')
104
+ mco.vars = xr.open_dataset(
105
+ str(test_data/"triple_collocation/Norne_mco.nc")
106
+ )
107
+ # Create dictionary for triple collocation function
108
+ dict_data = {'insitu': ico.vars.Hs.values,
109
+ 'satellite': sco.vars.Hs.values,
110
+ 'model': mco.vars.Hs.values}
111
+ # Apply triple collocation
112
+ ref = 'insitu'
113
+
114
+ data_cal = tc.calibration_triplets_cdf_matching(dict_data,
115
+ ref=ref,
116
+ step=0.04)
117
+
118
+ assert list(dict_data.keys()) == list(data_cal.keys())
119
+
120
+
121
+ def test_calibration_triplets_tc(test_data):
122
+
123
+ # Wavy objects
124
+ # Import in-situ data
125
+ ico = ic(sd='2014-01-01',
126
+ ed='2018-12-31',
127
+ nID='history_cmems_NRT',
128
+ name='Norne')
129
+ ico.vars = xr.open_dataset(
130
+ str(test_data/"triple_collocation/Norne_ico.nc")
131
+ )
132
+ # Import satellite data
133
+ sco = sc(sd='2014-01-01',
134
+ ed='2018-12-31',
135
+ nID='CCIv1_L3',
136
+ name='multi')
137
+ sco.vars = xr.open_dataset(
138
+ str(test_data/"triple_collocation/Norne_sco.nc")
139
+ )
140
+ # Import model data
141
+ mco = mc(sd='2014-01-01',
142
+ ed='2018-12-31',
143
+ nID='NORA3_hc_waves')
144
+ mco.vars = xr.open_dataset(
145
+ str(test_data/"triple_collocation/Norne_mco.nc")
146
+ )
147
+ # Create dictionary for triple collocation function
148
+ dict_data = {'insitu': ico.vars.Hs.values,
149
+ 'satellite': sco.vars.Hs.values,
150
+ 'model': mco.vars.Hs.values}
151
+ # Apply triple collocation
152
+ ref = 'insitu'
153
+
154
+ data_cal = tc.calibration_triplets_tc(dict_data, ref=ref)
155
+
156
+ assert list(dict_data.keys()) == list(data_cal.keys())
157
+
158
+
159
+ def test_least_squares_merging(test_data):
160
+
161
+ # Wavy objects
162
+ # Import in-situ data
163
+ ico = ic(sd='2014-01-01',
164
+ ed='2018-12-31',
165
+ nID='history_cmems_NRT',
166
+ name='Norne')
167
+ ico.vars = xr.open_dataset(
168
+ str(test_data/"triple_collocation/Norne_ico.nc")
169
+ )
170
+ # Import satellite data
171
+ sco = sc(sd='2014-01-01',
172
+ ed='2018-12-31',
173
+ nID='CCIv1_L3',
174
+ name='multi')
175
+ sco.vars = xr.open_dataset(
176
+ str(test_data/"triple_collocation/Norne_sco.nc")
177
+ )
178
+ # Import model data
179
+ mco = mc(sd='2014-01-01',
180
+ ed='2018-12-31',
181
+ nID='NORA3_hc_waves')
182
+ mco.vars = xr.open_dataset(
183
+ str(test_data/"triple_collocation/Norne_mco.nc")
184
+ )
185
+ # Create dictionary for triple collocation function
186
+ dict_data = {'insitu': ico.vars.Hs.values,
187
+ 'satellite': sco.vars.Hs.values,
188
+ 'model': mco.vars.Hs.values}
189
+ # Apply triple collocation
190
+ ref = 'insitu'
191
+
192
+ least_squares_merge = tc.least_squares_merging(dict_data)
193
+
194
+ assert len(least_squares_merge) == len(dict_data['insitu'])
195
+
196
+
197
+ def test_spectra_cco(test_data):
198
+
199
+ assert True
200
+
201
+ def test_integrate_r2(test_data):
202
+
203
+ assert True
204
+
205
+ def test_filter_collocation_distance(test_data):
206
+
207
+ assert True
208
+
209
+ def test_filter_values(test_data):
210
+
211
+ # Wavy objects
212
+ # Import in-situ data
213
+ ico = ic(sd='2014-01-01',
214
+ ed='2018-12-31',
215
+ nID='history_cmems_NRT',
216
+ name='Norne')
217
+ ico.vars = xr.open_dataset(
218
+ str(test_data/"triple_collocation/Norne_ico.nc")
219
+ )
220
+ # Import satellite data
221
+ sco = sc(sd='2014-01-01',
222
+ ed='2018-12-31',
223
+ nID='CCIv1_L3',
224
+ name='multi')
225
+ sco.vars = xr.open_dataset(
226
+ str(test_data/"triple_collocation/Norne_sco.nc")
227
+ )
228
+ # Import model data
229
+ mco = mc(sd='2014-01-01',
230
+ ed='2018-12-31',
231
+ nID='NORA3_hc_waves')
232
+ mco.vars = xr.open_dataset(
233
+ str(test_data/"triple_collocation/Norne_mco.nc")
234
+ )
235
+ # Create dictionary for triple collocation function
236
+ dict_data = {'insitu': ico.vars.Hs.values,
237
+ 'satellite': sco.vars.Hs.values,
238
+ 'model': mco.vars.Hs.values}
239
+ # Apply triple collocation
240
+ ref = 'insitu'
241
+
242
+ data_filtered = tc.filter_values(dict_data, ref_data=ref)
243
+
244
+ assert len(data_filtered['insitu']) <= len(dict_data['insitu'])
245
+
246
+ def test_filter_dynamic_collocation(test_data):
247
+
248
+ assert True