colm-openbench 3.0.0__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 (745) hide show
  1. colm_openbench-3.0.0/.gitignore +75 -0
  2. colm_openbench-3.0.0/CHANGELOG.md +334 -0
  3. colm_openbench-3.0.0/LICENSE +21 -0
  4. colm_openbench-3.0.0/PKG-INFO +713 -0
  5. colm_openbench-3.0.0/README.md +647 -0
  6. colm_openbench-3.0.0/pyproject.toml +207 -0
  7. colm_openbench-3.0.0/src/openbench/CONVENTIONS.md +43 -0
  8. colm_openbench-3.0.0/src/openbench/__init__.py +7 -0
  9. colm_openbench-3.0.0/src/openbench/__main__.py +5 -0
  10. colm_openbench-3.0.0/src/openbench/cli/__init__.py +1 -0
  11. colm_openbench-3.0.0/src/openbench/cli/_display.py +85 -0
  12. colm_openbench-3.0.0/src/openbench/cli/_names.py +53 -0
  13. colm_openbench-3.0.0/src/openbench/cli/_optimize.py +85 -0
  14. colm_openbench-3.0.0/src/openbench/cli/_options.py +61 -0
  15. colm_openbench-3.0.0/src/openbench/cli/_parsing.py +198 -0
  16. colm_openbench-3.0.0/src/openbench/cli/_profile_rescue.py +806 -0
  17. colm_openbench-3.0.0/src/openbench/cli/_ref_commands.py +165 -0
  18. colm_openbench-3.0.0/src/openbench/cli/_reference_errors.py +20 -0
  19. colm_openbench-3.0.0/src/openbench/cli/_register.py +371 -0
  20. colm_openbench-3.0.0/src/openbench/cli/_scan.py +292 -0
  21. colm_openbench-3.0.0/src/openbench/cli/_scan_support.py +115 -0
  22. colm_openbench-3.0.0/src/openbench/cli/_simulation_validation.py +37 -0
  23. colm_openbench-3.0.0/src/openbench/cli/_wizard.py +79 -0
  24. colm_openbench-3.0.0/src/openbench/cli/cache.py +66 -0
  25. colm_openbench-3.0.0/src/openbench/cli/check.py +795 -0
  26. colm_openbench-3.0.0/src/openbench/cli/data.py +376 -0
  27. colm_openbench-3.0.0/src/openbench/cli/gui.py +25 -0
  28. colm_openbench-3.0.0/src/openbench/cli/init_cmd.py +1688 -0
  29. colm_openbench-3.0.0/src/openbench/cli/main.py +75 -0
  30. colm_openbench-3.0.0/src/openbench/cli/migrate.py +35 -0
  31. colm_openbench-3.0.0/src/openbench/cli/model.py +1147 -0
  32. colm_openbench-3.0.0/src/openbench/cli/registry_cmd.py +133 -0
  33. colm_openbench-3.0.0/src/openbench/cli/run.py +445 -0
  34. colm_openbench-3.0.0/src/openbench/cli/sim.py +744 -0
  35. colm_openbench-3.0.0/src/openbench/cli/smoke.py +349 -0
  36. colm_openbench-3.0.0/src/openbench/config/__init__.py +30 -0
  37. colm_openbench-3.0.0/src/openbench/config/adapter.py +1231 -0
  38. colm_openbench-3.0.0/src/openbench/config/loader.py +1180 -0
  39. colm_openbench-3.0.0/src/openbench/config/migration.py +532 -0
  40. colm_openbench-3.0.0/src/openbench/config/provenance.py +5 -0
  41. colm_openbench-3.0.0/src/openbench/config/resolver.py +412 -0
  42. colm_openbench-3.0.0/src/openbench/config/runtime_info.py +919 -0
  43. colm_openbench-3.0.0/src/openbench/config/schema.py +181 -0
  44. colm_openbench-3.0.0/src/openbench/config/user_settings.py +80 -0
  45. colm_openbench-3.0.0/src/openbench/core/__init__.py +46 -0
  46. colm_openbench-3.0.0/src/openbench/core/_comparison_basic.py +198 -0
  47. colm_openbench-3.0.0/src/openbench/core/_comparison_common.py +100 -0
  48. colm_openbench-3.0.0/src/openbench/core/_comparison_diagrams.py +12 -0
  49. colm_openbench-3.0.0/src/openbench/core/_comparison_diff.py +11 -0
  50. colm_openbench-3.0.0/src/openbench/core/_comparison_diff_grid.py +172 -0
  51. colm_openbench-3.0.0/src/openbench/core/_comparison_diff_plot.py +82 -0
  52. colm_openbench-3.0.0/src/openbench/core/_comparison_diff_station.py +264 -0
  53. colm_openbench-3.0.0/src/openbench/core/_comparison_distributions.py +472 -0
  54. colm_openbench-3.0.0/src/openbench/core/_comparison_heatmap.py +80 -0
  55. colm_openbench-3.0.0/src/openbench/core/_comparison_helpers.py +241 -0
  56. colm_openbench-3.0.0/src/openbench/core/_comparison_parallel.py +246 -0
  57. colm_openbench-3.0.0/src/openbench/core/_comparison_portrait.py +11 -0
  58. colm_openbench-3.0.0/src/openbench/core/_comparison_portrait_calculations.py +127 -0
  59. colm_openbench-3.0.0/src/openbench/core/_comparison_portrait_seasonal.py +461 -0
  60. colm_openbench-3.0.0/src/openbench/core/_comparison_relative.py +297 -0
  61. colm_openbench-3.0.0/src/openbench/core/_comparison_smpi.py +305 -0
  62. colm_openbench-3.0.0/src/openbench/core/_comparison_tail.py +411 -0
  63. colm_openbench-3.0.0/src/openbench/core/_comparison_target.py +279 -0
  64. colm_openbench-3.0.0/src/openbench/core/_comparison_taylor.py +397 -0
  65. colm_openbench-3.0.0/src/openbench/core/_visualization_bridge.py +23 -0
  66. colm_openbench-3.0.0/src/openbench/core/appendix_methods.py +318 -0
  67. colm_openbench-3.0.0/src/openbench/core/climatezone_groupby.py +528 -0
  68. colm_openbench-3.0.0/src/openbench/core/comparison.py +142 -0
  69. colm_openbench-3.0.0/src/openbench/core/evaluation.py +916 -0
  70. colm_openbench-3.0.0/src/openbench/core/landcover_groupby.py +870 -0
  71. colm_openbench-3.0.0/src/openbench/core/metrics.py +1526 -0
  72. colm_openbench-3.0.0/src/openbench/core/registry.py +194 -0
  73. colm_openbench-3.0.0/src/openbench/core/scores.py +254 -0
  74. colm_openbench-3.0.0/src/openbench/core/statistics/Mod_Statistics.py +726 -0
  75. colm_openbench-3.0.0/src/openbench/core/statistics/__init__.py +79 -0
  76. colm_openbench-3.0.0/src/openbench/core/statistics/base.py +18 -0
  77. colm_openbench-3.0.0/src/openbench/core/statistics/stat_Basic.py +63 -0
  78. colm_openbench-3.0.0/src/openbench/core/statistics/stat_False_Discovery_Rate.py +120 -0
  79. colm_openbench-3.0.0/src/openbench/core/statistics/stat_anova.py +277 -0
  80. colm_openbench-3.0.0/src/openbench/core/statistics/stat_autocorrelation.py +47 -0
  81. colm_openbench-3.0.0/src/openbench/core/statistics/stat_correlation.py +40 -0
  82. colm_openbench-3.0.0/src/openbench/core/statistics/stat_covariance.py +19 -0
  83. colm_openbench-3.0.0/src/openbench/core/statistics/stat_diff.py +14 -0
  84. colm_openbench-3.0.0/src/openbench/core/statistics/stat_functional_response.py +96 -0
  85. colm_openbench-3.0.0/src/openbench/core/statistics/stat_hellinger_distance.py +92 -0
  86. colm_openbench-3.0.0/src/openbench/core/statistics/stat_mann_kendall_trend_test.py +179 -0
  87. colm_openbench-3.0.0/src/openbench/core/statistics/stat_partial_least_squares_regression.py +219 -0
  88. colm_openbench-3.0.0/src/openbench/core/statistics/stat_resample.py +26 -0
  89. colm_openbench-3.0.0/src/openbench/core/statistics/stat_rolling.py +24 -0
  90. colm_openbench-3.0.0/src/openbench/core/statistics/stat_standard_deviation.py +16 -0
  91. colm_openbench-3.0.0/src/openbench/core/statistics/stat_three_cornered_hat.py +217 -0
  92. colm_openbench-3.0.0/src/openbench/core/statistics/stat_variance.py +14 -0
  93. colm_openbench-3.0.0/src/openbench/core/statistics/stat_z_score.py +42 -0
  94. colm_openbench-3.0.0/src/openbench/data/__init__.py +1 -0
  95. colm_openbench-3.0.0/src/openbench/data/_processing_base.py +12 -0
  96. colm_openbench-3.0.0/src/openbench/data/_processing_config.py +495 -0
  97. colm_openbench-3.0.0/src/openbench/data/_processing_grid.py +20 -0
  98. colm_openbench-3.0.0/src/openbench/data/_processing_grid_core.py +300 -0
  99. colm_openbench-3.0.0/src/openbench/data/_processing_grid_regrid.py +220 -0
  100. colm_openbench-3.0.0/src/openbench/data/_processing_selection.py +554 -0
  101. colm_openbench-3.0.0/src/openbench/data/_processing_station.py +12 -0
  102. colm_openbench-3.0.0/src/openbench/data/_processing_station_core.py +407 -0
  103. colm_openbench-3.0.0/src/openbench/data/_processing_station_extract.py +157 -0
  104. colm_openbench-3.0.0/src/openbench/data/_processing_time.py +13 -0
  105. colm_openbench-3.0.0/src/openbench/data/_processing_time_adjustments.py +146 -0
  106. colm_openbench-3.0.0/src/openbench/data/_processing_time_core.py +259 -0
  107. colm_openbench-3.0.0/src/openbench/data/_processing_time_integrity.py +227 -0
  108. colm_openbench-3.0.0/src/openbench/data/_processing_transforms.py +271 -0
  109. colm_openbench-3.0.0/src/openbench/data/_processing_utils.py +148 -0
  110. colm_openbench-3.0.0/src/openbench/data/_processing_yearly.py +252 -0
  111. colm_openbench-3.0.0/src/openbench/data/_system_resources.py +265 -0
  112. colm_openbench-3.0.0/src/openbench/data/cache.py +849 -0
  113. colm_openbench-3.0.0/src/openbench/data/climatology.py +514 -0
  114. colm_openbench-3.0.0/src/openbench/data/compute.py +258 -0
  115. colm_openbench-3.0.0/src/openbench/data/coordinates.py +218 -0
  116. colm_openbench-3.0.0/src/openbench/data/custom/CH4_FluxnetANN_filter.py +108 -0
  117. colm_openbench-3.0.0/src/openbench/data/custom/GEBA_filter.py +118 -0
  118. colm_openbench-3.0.0/src/openbench/data/custom/HydroWeb_filter.py +169 -0
  119. colm_openbench-3.0.0/src/openbench/data/custom/LAI_Yuan2011_filter.py +93 -0
  120. colm_openbench-3.0.0/src/openbench/data/custom/ResOpsUS_filter.py +97 -0
  121. colm_openbench-3.0.0/src/openbench/data/custom/__init__.py +88 -0
  122. colm_openbench-3.0.0/src/openbench/data/fignml/ANOVA.yaml +32 -0
  123. colm_openbench-3.0.0/src/openbench/data/fignml/Basic.yaml +37 -0
  124. colm_openbench-3.0.0/src/openbench/data/fignml/CZ_groupby_source.yaml +32 -0
  125. colm_openbench-3.0.0/src/openbench/data/fignml/Correlation.yaml +33 -0
  126. colm_openbench-3.0.0/src/openbench/data/fignml/Diff_Plot.yaml +37 -0
  127. colm_openbench-3.0.0/src/openbench/data/fignml/False_Discovery_Rate.yaml +2 -0
  128. colm_openbench-3.0.0/src/openbench/data/fignml/Functional_Response.yaml +34 -0
  129. colm_openbench-3.0.0/src/openbench/data/fignml/HeatMap_source.yaml +31 -0
  130. colm_openbench-3.0.0/src/openbench/data/fignml/Hellinger_Distance.yaml +33 -0
  131. colm_openbench-3.0.0/src/openbench/data/fignml/IGBP_groupby_source.yaml +33 -0
  132. colm_openbench-3.0.0/src/openbench/data/fignml/Kernel_Density_Estimate.yaml +30 -0
  133. colm_openbench-3.0.0/src/openbench/data/fignml/Mann_Kendall_Trend_Test.yaml +38 -0
  134. colm_openbench-3.0.0/src/openbench/data/fignml/PFT_groupby_source.yaml +33 -0
  135. colm_openbench-3.0.0/src/openbench/data/fignml/Parallel_Coordinates.yaml +29 -0
  136. colm_openbench-3.0.0/src/openbench/data/fignml/Partial_Least_Squares_Regression.yaml +33 -0
  137. colm_openbench-3.0.0/src/openbench/data/fignml/Portrait_Plot_seasonal.yaml +39 -0
  138. colm_openbench-3.0.0/src/openbench/data/fignml/RadarMap.yaml +21 -0
  139. colm_openbench-3.0.0/src/openbench/data/fignml/Relative_Score.yaml +38 -0
  140. colm_openbench-3.0.0/src/openbench/data/fignml/Ridgeline_Plot.yaml +20 -0
  141. colm_openbench-3.0.0/src/openbench/data/fignml/Single_Model_Performance_Index.yaml +25 -0
  142. colm_openbench-3.0.0/src/openbench/data/fignml/Standard_Deviation.yaml +33 -0
  143. colm_openbench-3.0.0/src/openbench/data/fignml/Target_Diagram.yaml +26 -0
  144. colm_openbench-3.0.0/src/openbench/data/fignml/Taylor_Diagram.yaml +41 -0
  145. colm_openbench-3.0.0/src/openbench/data/fignml/Three_Cornered_Hat.yaml +32 -0
  146. colm_openbench-3.0.0/src/openbench/data/fignml/Whisker_Plot.yaml +54 -0
  147. colm_openbench-3.0.0/src/openbench/data/fignml/Z_Score.yaml +32 -0
  148. colm_openbench-3.0.0/src/openbench/data/fignml/__init__.py +9 -0
  149. colm_openbench-3.0.0/src/openbench/data/fignml/figlib.yaml +39 -0
  150. colm_openbench-3.0.0/src/openbench/data/fignml/make_geo_plot_index.yaml +35 -0
  151. colm_openbench-3.0.0/src/openbench/data/fignml/make_stn_plot_index.yaml +33 -0
  152. colm_openbench-3.0.0/src/openbench/data/fignml/plot_stn.yaml +29 -0
  153. colm_openbench-3.0.0/src/openbench/data/processing.py +64 -0
  154. colm_openbench-3.0.0/src/openbench/data/registry/__init__.py +16 -0
  155. colm_openbench-3.0.0/src/openbench/data/registry/_filename_dates.py +123 -0
  156. colm_openbench-3.0.0/src/openbench/data/registry/converter.py +152 -0
  157. colm_openbench-3.0.0/src/openbench/data/registry/manager.py +1155 -0
  158. colm_openbench-3.0.0/src/openbench/data/registry/model_catalog.yaml +3562 -0
  159. colm_openbench-3.0.0/src/openbench/data/registry/overlay_audit.py +314 -0
  160. colm_openbench-3.0.0/src/openbench/data/registry/reference_catalog.yaml +3602 -0
  161. colm_openbench-3.0.0/src/openbench/data/registry/reference_profiles.yaml +1574 -0
  162. colm_openbench-3.0.0/src/openbench/data/registry/scanner.py +3465 -0
  163. colm_openbench-3.0.0/src/openbench/data/registry/schema.py +190 -0
  164. colm_openbench-3.0.0/src/openbench/data/registry/station_lists/CH4_FluxnetANN.csv +2 -0
  165. colm_openbench-3.0.0/src/openbench/data/registry/station_lists/GEBA.csv +2 -0
  166. colm_openbench-3.0.0/src/openbench/data/registry/station_lists/GLEAM_Hybird.csv +91 -0
  167. colm_openbench-3.0.0/src/openbench/data/registry/station_lists/LAI_Yuan2011.csv +3 -0
  168. colm_openbench-3.0.0/src/openbench/data/registry/station_lists/ResOpsUS.csv +679 -0
  169. colm_openbench-3.0.0/src/openbench/data/registry/station_lists/Xu_et_al2025.csv +367 -0
  170. colm_openbench-3.0.0/src/openbench/data/regrid/__about__.py +1 -0
  171. colm_openbench-3.0.0/src/openbench/data/regrid/__init__.py +5 -0
  172. colm_openbench-3.0.0/src/openbench/data/regrid/methods/__init__.py +3 -0
  173. colm_openbench-3.0.0/src/openbench/data/regrid/methods/_shared.py +105 -0
  174. colm_openbench-3.0.0/src/openbench/data/regrid/methods/conservative.py +650 -0
  175. colm_openbench-3.0.0/src/openbench/data/regrid/methods/flox_reduce.py +179 -0
  176. colm_openbench-3.0.0/src/openbench/data/regrid/methods/interp.py +52 -0
  177. colm_openbench-3.0.0/src/openbench/data/regrid/regrid.py +314 -0
  178. colm_openbench-3.0.0/src/openbench/data/regrid/regrid_wgs84.py +132 -0
  179. colm_openbench-3.0.0/src/openbench/data/regrid/utils.py +454 -0
  180. colm_openbench-3.0.0/src/openbench/data/regrid/xesmf_cache.py +151 -0
  181. colm_openbench-3.0.0/src/openbench/data/sim_scanner.py +1738 -0
  182. colm_openbench-3.0.0/src/openbench/data/station_matcher.py +452 -0
  183. colm_openbench-3.0.0/src/openbench/data/station_missing.py +56 -0
  184. colm_openbench-3.0.0/src/openbench/data/station_scanner.py +591 -0
  185. colm_openbench-3.0.0/src/openbench/data/time_utils.py +384 -0
  186. colm_openbench-3.0.0/src/openbench/data/unit.py +319 -0
  187. colm_openbench-3.0.0/src/openbench/dataset/Climate_zone.nc +0 -0
  188. colm_openbench-3.0.0/src/openbench/dataset/IGBP.nc +0 -0
  189. colm_openbench-3.0.0/src/openbench/dataset/PFT.nc +0 -0
  190. colm_openbench-3.0.0/src/openbench/dataset/smoke/initial_test.tar.gz +0 -0
  191. colm_openbench-3.0.0/src/openbench/dataset/smoke/openbench-smoke.yaml +87 -0
  192. colm_openbench-3.0.0/src/openbench/gui/__init__.py +22 -0
  193. colm_openbench-3.0.0/src/openbench/gui/app.py +68 -0
  194. colm_openbench-3.0.0/src/openbench/gui/config_manager.py +1802 -0
  195. colm_openbench-3.0.0/src/openbench/gui/controller.py +467 -0
  196. colm_openbench-3.0.0/src/openbench/gui/data_validator.py +947 -0
  197. colm_openbench-3.0.0/src/openbench/gui/dialogs/__init__.py +4 -0
  198. colm_openbench-3.0.0/src/openbench/gui/dialogs/data_discovery.py +221 -0
  199. colm_openbench-3.0.0/src/openbench/gui/dialogs/scan_confirm.py +170 -0
  200. colm_openbench-3.0.0/src/openbench/gui/localization.py +552 -0
  201. colm_openbench-3.0.0/src/openbench/gui/main_window.py +1406 -0
  202. colm_openbench-3.0.0/src/openbench/gui/pages/__init__.py +32 -0
  203. colm_openbench-3.0.0/src/openbench/gui/pages/_scan_worker.py +572 -0
  204. colm_openbench-3.0.0/src/openbench/gui/pages/base_page.py +129 -0
  205. colm_openbench-3.0.0/src/openbench/gui/pages/page_comparisons.py +58 -0
  206. colm_openbench-3.0.0/src/openbench/gui/pages/page_evaluation.py +143 -0
  207. colm_openbench-3.0.0/src/openbench/gui/pages/page_general.py +998 -0
  208. colm_openbench-3.0.0/src/openbench/gui/pages/page_metrics.py +57 -0
  209. colm_openbench-3.0.0/src/openbench/gui/pages/page_preview.py +1061 -0
  210. colm_openbench-3.0.0/src/openbench/gui/pages/page_ref_data.py +1204 -0
  211. colm_openbench-3.0.0/src/openbench/gui/pages/page_registry.py +1305 -0
  212. colm_openbench-3.0.0/src/openbench/gui/pages/page_run_monitor.py +811 -0
  213. colm_openbench-3.0.0/src/openbench/gui/pages/page_runtime.py +1237 -0
  214. colm_openbench-3.0.0/src/openbench/gui/pages/page_scores.py +57 -0
  215. colm_openbench-3.0.0/src/openbench/gui/pages/page_sim_data.py +1627 -0
  216. colm_openbench-3.0.0/src/openbench/gui/pages/page_statistics.py +52 -0
  217. colm_openbench-3.0.0/src/openbench/gui/path_utils.py +873 -0
  218. colm_openbench-3.0.0/src/openbench/gui/progress_parser.py +224 -0
  219. colm_openbench-3.0.0/src/openbench/gui/remote_python.py +147 -0
  220. colm_openbench-3.0.0/src/openbench/gui/remote_registry.py +332 -0
  221. colm_openbench-3.0.0/src/openbench/gui/remote_runner.py +791 -0
  222. colm_openbench-3.0.0/src/openbench/gui/runner.py +601 -0
  223. colm_openbench-3.0.0/src/openbench/gui/styles/checkmark.png +0 -0
  224. colm_openbench-3.0.0/src/openbench/gui/styles/checkmark.svg +3 -0
  225. colm_openbench-3.0.0/src/openbench/gui/styles/openbench-logo.png +0 -0
  226. colm_openbench-3.0.0/src/openbench/gui/styles/theme.qss +273 -0
  227. colm_openbench-3.0.0/src/openbench/gui/validation.py +257 -0
  228. colm_openbench-3.0.0/src/openbench/gui/widgets/__init__.py +28 -0
  229. colm_openbench-3.0.0/src/openbench/gui/widgets/_ssh_worker.py +226 -0
  230. colm_openbench-3.0.0/src/openbench/gui/widgets/_task_worker.py +71 -0
  231. colm_openbench-3.0.0/src/openbench/gui/widgets/checkbox_group.py +173 -0
  232. colm_openbench-3.0.0/src/openbench/gui/widgets/model_definition_editor.py +376 -0
  233. colm_openbench-3.0.0/src/openbench/gui/widgets/nc_importer.py +362 -0
  234. colm_openbench-3.0.0/src/openbench/gui/widgets/no_scroll_widgets.py +31 -0
  235. colm_openbench-3.0.0/src/openbench/gui/widgets/path_completer.py +123 -0
  236. colm_openbench-3.0.0/src/openbench/gui/widgets/path_selector.py +258 -0
  237. colm_openbench-3.0.0/src/openbench/gui/widgets/progress_dashboard.py +363 -0
  238. colm_openbench-3.0.0/src/openbench/gui/widgets/remote_config.py +2696 -0
  239. colm_openbench-3.0.0/src/openbench/gui/widgets/sync_status.py +183 -0
  240. colm_openbench-3.0.0/src/openbench/gui/widgets/validation_dialog.py +284 -0
  241. colm_openbench-3.0.0/src/openbench/gui/widgets/variable_editor.py +323 -0
  242. colm_openbench-3.0.0/src/openbench/gui/widgets/yaml_preview.py +127 -0
  243. colm_openbench-3.0.0/src/openbench/remote/__init__.py +15 -0
  244. colm_openbench-3.0.0/src/openbench/remote/connections.py +158 -0
  245. colm_openbench-3.0.0/src/openbench/remote/credentials.py +297 -0
  246. colm_openbench-3.0.0/src/openbench/remote/ssh.py +1206 -0
  247. colm_openbench-3.0.0/src/openbench/remote/storage.py +222 -0
  248. colm_openbench-3.0.0/src/openbench/remote/sync.py +725 -0
  249. colm_openbench-3.0.0/src/openbench/runner/__init__.py +1 -0
  250. colm_openbench-3.0.0/src/openbench/runner/cache.py +202 -0
  251. colm_openbench-3.0.0/src/openbench/runner/cache_state.py +71 -0
  252. colm_openbench-3.0.0/src/openbench/runner/config_preflight.py +61 -0
  253. colm_openbench-3.0.0/src/openbench/runner/context.py +65 -0
  254. colm_openbench-3.0.0/src/openbench/runner/dask_runtime.py +307 -0
  255. colm_openbench-3.0.0/src/openbench/runner/evaluation_dispatch.py +154 -0
  256. colm_openbench-3.0.0/src/openbench/runner/hashing.py +589 -0
  257. colm_openbench-3.0.0/src/openbench/runner/local.py +453 -0
  258. colm_openbench-3.0.0/src/openbench/runner/masking.py +211 -0
  259. colm_openbench-3.0.0/src/openbench/runner/orchestration.py +498 -0
  260. colm_openbench-3.0.0/src/openbench/runner/pair_ref.py +143 -0
  261. colm_openbench-3.0.0/src/openbench/runner/postprocessing.py +419 -0
  262. colm_openbench-3.0.0/src/openbench/runner/preflight.py +470 -0
  263. colm_openbench-3.0.0/src/openbench/runner/preflight_facade.py +113 -0
  264. colm_openbench-3.0.0/src/openbench/runner/preprocessing.py +442 -0
  265. colm_openbench-3.0.0/src/openbench/runner/progress_events.py +51 -0
  266. colm_openbench-3.0.0/src/openbench/runner/task_execution.py +196 -0
  267. colm_openbench-3.0.0/src/openbench/runner/task_planning.py +114 -0
  268. colm_openbench-3.0.0/src/openbench/util/__init__.py +1 -0
  269. colm_openbench-3.0.0/src/openbench/util/converttype.py +45 -0
  270. colm_openbench-3.0.0/src/openbench/util/dataset_loader.py +732 -0
  271. colm_openbench-3.0.0/src/openbench/util/exceptions.py +387 -0
  272. colm_openbench-3.0.0/src/openbench/util/filenames.py +173 -0
  273. colm_openbench-3.0.0/src/openbench/util/interfaces.py +245 -0
  274. colm_openbench-3.0.0/src/openbench/util/logging_system.py +567 -0
  275. colm_openbench-3.0.0/src/openbench/util/names.py +197 -0
  276. colm_openbench-3.0.0/src/openbench/util/netcdf.py +249 -0
  277. colm_openbench-3.0.0/src/openbench/util/output.py +605 -0
  278. colm_openbench-3.0.0/src/openbench/util/parallel.py +768 -0
  279. colm_openbench-3.0.0/src/openbench/util/report.py +2339 -0
  280. colm_openbench-3.0.0/src/openbench/util/static_datasets.py +63 -0
  281. colm_openbench-3.0.0/src/openbench/visualization/Fig_ANOVA.py +201 -0
  282. colm_openbench-3.0.0/src/openbench/visualization/Fig_Basic_Plot.py +884 -0
  283. colm_openbench-3.0.0/src/openbench/visualization/Fig_Correlation.py +131 -0
  284. colm_openbench-3.0.0/src/openbench/visualization/Fig_Diff_Plot.py +547 -0
  285. colm_openbench-3.0.0/src/openbench/visualization/Fig_Functional_Response.py +162 -0
  286. colm_openbench-3.0.0/src/openbench/visualization/Fig_Hellinger_Distance.py +177 -0
  287. colm_openbench-3.0.0/src/openbench/visualization/Fig_LC_based_heat_map.py +567 -0
  288. colm_openbench-3.0.0/src/openbench/visualization/Fig_Mann_Kendall_Trend_Test.py +206 -0
  289. colm_openbench-3.0.0/src/openbench/visualization/Fig_Partial_Least_Squares_Regression.py +226 -0
  290. colm_openbench-3.0.0/src/openbench/visualization/Fig_Relative_Score.py +397 -0
  291. colm_openbench-3.0.0/src/openbench/visualization/Fig_Ridgeline_Plot.py +199 -0
  292. colm_openbench-3.0.0/src/openbench/visualization/Fig_Single_Model_Performance_Index.py +363 -0
  293. colm_openbench-3.0.0/src/openbench/visualization/Fig_Standard_Deviation.py +174 -0
  294. colm_openbench-3.0.0/src/openbench/visualization/Fig_Three_Cornered_Hat.py +229 -0
  295. colm_openbench-3.0.0/src/openbench/visualization/Fig_Whisker_Plot.py +235 -0
  296. colm_openbench-3.0.0/src/openbench/visualization/Fig_geo_plot_index.py +152 -0
  297. colm_openbench-3.0.0/src/openbench/visualization/Fig_heatmap.py +196 -0
  298. colm_openbench-3.0.0/src/openbench/visualization/Fig_kernel_density_estimate.py +206 -0
  299. colm_openbench-3.0.0/src/openbench/visualization/Fig_parallel_coordinates.py +899 -0
  300. colm_openbench-3.0.0/src/openbench/visualization/Fig_portrait_plot_seasonal.py +1363 -0
  301. colm_openbench-3.0.0/src/openbench/visualization/Fig_radarmap.py +161 -0
  302. colm_openbench-3.0.0/src/openbench/visualization/Fig_stn_plot_index.py +193 -0
  303. colm_openbench-3.0.0/src/openbench/visualization/Fig_target_diagram.py +1826 -0
  304. colm_openbench-3.0.0/src/openbench/visualization/Fig_taylor_diagram.py +2475 -0
  305. colm_openbench-3.0.0/src/openbench/visualization/Fig_toolbox.py +335 -0
  306. colm_openbench-3.0.0/src/openbench/visualization/Mod_Only_Drawing.py +15 -0
  307. colm_openbench-3.0.0/src/openbench/visualization/__init__.py +88 -0
  308. colm_openbench-3.0.0/src/openbench/visualization/_combinations.py +78 -0
  309. colm_openbench-3.0.0/src/openbench/visualization/_diagram_sampling.py +91 -0
  310. colm_openbench-3.0.0/src/openbench/visualization/_diagram_utils.py +234 -0
  311. colm_openbench-3.0.0/src/openbench/visualization/_downsample.py +122 -0
  312. colm_openbench-3.0.0/src/openbench/visualization/_figure_io.py +39 -0
  313. colm_openbench-3.0.0/src/openbench/visualization/_filenames.py +5 -0
  314. colm_openbench-3.0.0/src/openbench/visualization/_rc_isolation.py +72 -0
  315. colm_openbench-3.0.0/src/openbench/visualization/_sampling.py +71 -0
  316. colm_openbench-3.0.0/src/openbench/visualization/_validation.py +38 -0
  317. colm_openbench-3.0.0/src/openbench/visualization/cmaps/LICENSE +675 -0
  318. colm_openbench-3.0.0/src/openbench/visualization/cmaps/__init__.py +5 -0
  319. colm_openbench-3.0.0/src/openbench/visualization/cmaps/_version.py +2 -0
  320. colm_openbench-3.0.0/src/openbench/visualization/cmaps/cmaps.py +6281 -0
  321. colm_openbench-3.0.0/src/openbench/visualization/cmaps/cmaps.template +86 -0
  322. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormap.py +58 -0
  323. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/3gauss.rgb +256 -0
  324. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/3saw.rgb +256 -0
  325. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BkBlAqGrYeOrReViWh200.rgb +202 -0
  326. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlAqGrWh2YeOrReVi22.rgb +24 -0
  327. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlAqGrYeOrRe.rgb +102 -0
  328. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlAqGrYeOrReVi200.rgb +202 -0
  329. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlGrYeOrReVi200.rgb +202 -0
  330. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlRe.rgb +98 -0
  331. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlWhRe.rgb +103 -0
  332. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlueDarkOrange18.rgb +25 -0
  333. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlueDarkRed18.rgb +25 -0
  334. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlueGreen14.rgb +21 -0
  335. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlueRed.rgb +253 -0
  336. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlueRedGray.rgb +254 -0
  337. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlueWhiteOrangeRed.rgb +256 -0
  338. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BlueYellowRed.rgb +256 -0
  339. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/BrownBlue12.rgb +19 -0
  340. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/CBR_coldhot.rgb +13 -0
  341. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/CBR_drywet.rgb +13 -0
  342. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/CBR_set3.rgb +14 -0
  343. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/CBR_wet.rgb +13 -0
  344. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/Cat12.rgb +19 -0
  345. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/Copyright +6 -0
  346. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GHRSST_anomaly.rgb +44 -0
  347. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_cool.rgb +12 -0
  348. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_copper.rgb +52 -0
  349. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_drywet.rgb +62 -0
  350. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_gebco.rgb +72 -0
  351. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_globe.rgb +258 -0
  352. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_gray.rgb +12 -0
  353. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_haxby.rgb +34 -0
  354. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_hot.rgb +102 -0
  355. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_jet.rgb +258 -0
  356. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_nighttime.rgb +22 -0
  357. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_no_green.rgb +18 -0
  358. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_ocean.rgb +82 -0
  359. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_paired.rgb +14 -0
  360. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_panoply.rgb +18 -0
  361. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_polar.rgb +22 -0
  362. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_red2green.rgb +22 -0
  363. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_relief.rgb +258 -0
  364. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_relief_oceanonly.rgb +162 -0
  365. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_seis.rgb +258 -0
  366. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_split.rgb +42 -0
  367. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_topo.rgb +258 -0
  368. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_wysiwyg.rgb +22 -0
  369. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GMT_wysiwygcont.rgb +202 -0
  370. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GSFC_landsat_udf_density.rgb +13 -0
  371. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GrayWhiteGray.rgb +256 -0
  372. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GreenMagenta16.rgb +23 -0
  373. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/GreenYellow.rgb +253 -0
  374. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Accent.rgb +130 -0
  375. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Blues.rgb +130 -0
  376. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_BrBG.rgb +130 -0
  377. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_BuGn.rgb +130 -0
  378. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_BuPu.rgb +130 -0
  379. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Dark2.rgb +130 -0
  380. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_GnBu.rgb +130 -0
  381. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Greens.rgb +130 -0
  382. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Greys.rgb +130 -0
  383. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_OrRd.rgb +130 -0
  384. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Oranges.rgb +130 -0
  385. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_PRGn.rgb +130 -0
  386. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Paired.rgb +130 -0
  387. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Pastel1.rgb +130 -0
  388. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Pastel2.rgb +130 -0
  389. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_PiYG.rgb +130 -0
  390. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_PuBu.rgb +130 -0
  391. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_PuBuGn.rgb +130 -0
  392. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_PuOr.rgb +130 -0
  393. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_PuRd.rgb +130 -0
  394. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Purples.rgb +130 -0
  395. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_RdBu.rgb +130 -0
  396. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_RdGy.rgb +130 -0
  397. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_RdPu.rgb +130 -0
  398. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_RdYlBu.rgb +130 -0
  399. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_RdYlGn.rgb +130 -0
  400. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Reds.rgb +130 -0
  401. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Set1.rgb +130 -0
  402. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Set2.rgb +130 -0
  403. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Set3.rgb +130 -0
  404. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_Spectral.rgb +130 -0
  405. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_StepSeq.rgb +130 -0
  406. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_YlGn.rgb +130 -0
  407. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_YlGnBu.rgb +130 -0
  408. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_YlOrBr.rgb +130 -0
  409. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_YlOrRd.rgb +130 -0
  410. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_afmhot.rgb +130 -0
  411. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_autumn.rgb +130 -0
  412. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_bone.rgb +130 -0
  413. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_brg.rgb +130 -0
  414. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_bwr.rgb +130 -0
  415. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_cool.rgb +130 -0
  416. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_coolwarm.rgb +130 -0
  417. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_copper.rgb +130 -0
  418. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_cubehelix.rgb +130 -0
  419. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_flag.rgb +130 -0
  420. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gist_earth.rgb +130 -0
  421. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gist_gray.rgb +130 -0
  422. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gist_heat.rgb +130 -0
  423. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gist_ncar.rgb +130 -0
  424. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gist_rainbow.rgb +130 -0
  425. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gist_stern.rgb +130 -0
  426. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gist_yarg.rgb +130 -0
  427. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gnuplot.rgb +130 -0
  428. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_gnuplot2.rgb +130 -0
  429. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_hot.rgb +130 -0
  430. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_hsv.rgb +130 -0
  431. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_jet.rgb +130 -0
  432. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_ocean.rgb +130 -0
  433. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_pink.rgb +130 -0
  434. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_prism.rgb +130 -0
  435. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_rainbow.rgb +130 -0
  436. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_s3pcpn.rgb +130 -0
  437. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_s3pcpn_l.rgb +130 -0
  438. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_seismic.rgb +130 -0
  439. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_spring.rgb +130 -0
  440. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_sstanom.rgb +130 -0
  441. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_summer.rgb +130 -0
  442. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_terrain.rgb +130 -0
  443. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_viridis.rgb +258 -0
  444. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/MPL_winter.rgb +130 -0
  445. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_banded.rgb +258 -0
  446. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_blu_red.rgb +258 -0
  447. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_blue_red.rgb +258 -0
  448. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_bright.rgb +258 -0
  449. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_gebco.rgb +26 -0
  450. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_jaisnd.rgb +258 -0
  451. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_jet.rgb +258 -0
  452. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_manga.rgb +258 -0
  453. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_rainbow2.rgb +258 -0
  454. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NCV_roullet.rgb +258 -0
  455. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NEO_div_vegetation_a.rgb +258 -0
  456. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NEO_div_vegetation_b.rgb +258 -0
  457. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NEO_div_vegetation_c.rgb +258 -0
  458. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NEO_modis_ndvi.rgb +258 -0
  459. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NMCRef.rgb +18 -0
  460. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NMCVel.rgb +19 -0
  461. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/NOC_ndvi.rgb +255 -0
  462. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/OceanLakeLandSnow.rgb +256 -0
  463. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/SVG_Gallet13.rgb +222 -0
  464. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/SVG_Lindaa06.rgb +222 -0
  465. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/SVG_Lindaa07.rgb +222 -0
  466. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/SVG_bhw3_22.rgb +222 -0
  467. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/SVG_es_landscape_79.rgb +222 -0
  468. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/SVG_feb_sunrise.rgb +222 -0
  469. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/SVG_foggy_sunrise.rgb +222 -0
  470. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/SVG_fs2006.rgb +222 -0
  471. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/StepSeq25.rgb +32 -0
  472. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/UKM_hadcrut.rgb +14 -0
  473. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/ViBlGrWhYeOrRe.rgb +103 -0
  474. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/WhBlGrYeRe.rgb +102 -0
  475. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/WhBlReWh.rgb +103 -0
  476. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/WhViBlGrYeOrRe.rgb +103 -0
  477. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/WhViBlGrYeOrReWh.rgb +103 -0
  478. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/WhiteBlue.rgb +256 -0
  479. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/WhiteBlueGreenYellowRed.rgb +256 -0
  480. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/WhiteGreen.rgb +256 -0
  481. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/WhiteYellowOrangeRed.rgb +256 -0
  482. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/amwg.rgb +18 -0
  483. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/amwg256.rgb +256 -0
  484. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/amwg_blueyellowred.rgb +18 -0
  485. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cb_9step.rgb +80 -0
  486. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cb_rainbow.rgb +243 -0
  487. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cb_rainbow_inv.rgb +243 -0
  488. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/circular_0.rgb +20 -0
  489. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/circular_1.rgb +14 -0
  490. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/circular_2.rgb +26 -0
  491. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cividis.rgb +258 -0
  492. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_algae.rgb +258 -0
  493. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_amp.rgb +258 -0
  494. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_balance.rgb +258 -0
  495. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_curl.rgb +258 -0
  496. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_deep.rgb +258 -0
  497. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_delta.rgb +258 -0
  498. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_dense.rgb +258 -0
  499. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_gray.rgb +258 -0
  500. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_haline.rgb +258 -0
  501. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_ice.rgb +258 -0
  502. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_matter.rgb +258 -0
  503. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_oxy.rgb +258 -0
  504. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_phase.rgb +258 -0
  505. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_solar.rgb +258 -0
  506. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_speed.rgb +258 -0
  507. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_tempo.rgb +258 -0
  508. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_thermal.rgb +258 -0
  509. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmocean_turbid.rgb +258 -0
  510. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmp_b2r.rgb +66 -0
  511. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmp_flux.rgb +24 -0
  512. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cmp_haxby.rgb +66 -0
  513. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cosam.rgb +12 -0
  514. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cosam12.rgb +14 -0
  515. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/cyclic.rgb +8 -0
  516. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/default.rgb +36 -0
  517. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/detail.rgb +256 -0
  518. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/draw_cmap.ncl +23 -0
  519. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/drought_severity.rgb +9 -0
  520. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/example.rgb +115 -0
  521. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/extrema.rgb +256 -0
  522. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/grads_default.rgb +18 -0
  523. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/grads_rainbow.rgb +17 -0
  524. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/gscyclic.rgb +8 -0
  525. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/gsdtol.rgb +33 -0
  526. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/gsltod.rgb +33 -0
  527. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/gui_default.rgb +26 -0
  528. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/helix.rgb +256 -0
  529. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/helix1.rgb +256 -0
  530. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/hlu_default.rgb +36 -0
  531. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/hotcold_18lev.rgb +25 -0
  532. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/hotcolr_19lev.rgb +26 -0
  533. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/hotres.rgb +256 -0
  534. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/lithology.rgb +215 -0
  535. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/matlab_hot.rgb +66 -0
  536. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/matlab_hsv.rgb +66 -0
  537. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/matlab_jet.rgb +66 -0
  538. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/matlab_lines.rgb +66 -0
  539. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/mch_default.rgb +21 -0
  540. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/ncl_default.rgb +257 -0
  541. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/ncview_default.rgb +256 -0
  542. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/nice_gfdl.rgb +227 -0
  543. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/nrl_sirkes.rgb +22 -0
  544. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/nrl_sirkes_nowhite.rgb +20 -0
  545. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/perc2_9lev.rgb +16 -0
  546. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/percent_11lev.rgb +18 -0
  547. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/posneg_1.rgb +21 -0
  548. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/posneg_2.rgb +22 -0
  549. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/prcp_1.rgb +19 -0
  550. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/prcp_2.rgb +14 -0
  551. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/prcp_3.rgb +25 -0
  552. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/precip2_15lev.rgb +22 -0
  553. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/precip2_17lev.rgb +24 -0
  554. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/precip3_16lev.rgb +23 -0
  555. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/precip4_11lev.rgb +18 -0
  556. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/precip4_diff_19lev.rgb +26 -0
  557. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/precip_11lev.rgb +18 -0
  558. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/precip_diff_12lev.rgb +19 -0
  559. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/precip_diff_1lev.rgb +8 -0
  560. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/psgcap.rgb +240 -0
  561. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/radar.rgb +17 -0
  562. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/radar_1.rgb +26 -0
  563. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/rainbow+gray.rgb +240 -0
  564. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/rainbow+white+gray.rgb +241 -0
  565. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/rainbow+white.rgb +240 -0
  566. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/rainbow.rgb +191 -0
  567. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/rh_19lev.rgb +26 -0
  568. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/seaice_1.rgb +15 -0
  569. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/seaice_2.rgb +16 -0
  570. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/so4_21.rgb +24 -0
  571. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/so4_23.rgb +26 -0
  572. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/spread_15lev.rgb +22 -0
  573. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/srip_reanalysis.rgb +21 -0
  574. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/sunshine_9lev.rgb +16 -0
  575. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/sunshine_diff_12lev.rgb +19 -0
  576. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/t2m_29lev.rgb +36 -0
  577. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/tbrAvg1.rgb +102 -0
  578. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/tbrStd1.rgb +103 -0
  579. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/tbrVar1.rgb +103 -0
  580. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/tbr_240-300.rgb +202 -0
  581. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/tbr_stdev_0-30.rgb +202 -0
  582. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/tbr_var_0-500.rgb +202 -0
  583. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/temp1.rgb +63 -0
  584. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/temp_19lev.rgb +26 -0
  585. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/temp_diff_18lev.rgb +25 -0
  586. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/temp_diff_1lev.rgb +8 -0
  587. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/testcmap.rgb +203 -0
  588. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/thelix.rgb +258 -0
  589. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/topo_15lev.rgb +22 -0
  590. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/uniform.rgb +175 -0
  591. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/vegetation_ClarkU.rgb +258 -0
  592. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/vegetation_modis.rgb +23 -0
  593. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/wgne15.rgb +17 -0
  594. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/wh-bl-gr-ye-re.rgb +202 -0
  595. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/wind_17lev.rgb +24 -0
  596. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/ncar_ncl/wxpEnIR.rgb +102 -0
  597. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/Carbone42.rgb +44 -0
  598. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/NMCRef.rgb +18 -0
  599. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/NMCVel2.rgb +17 -0
  600. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/NWSRef.rgb +17 -0
  601. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/NWSSPW.rgb +9 -0
  602. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/NWSVel.rgb +17 -0
  603. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/TopoGray.rgb +9 -0
  604. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/TwoClass.rgb +4 -0
  605. colm_openbench-3.0.0/src/openbench/visualization/cmaps/colormaps/self_defined/mask.rgb +4 -0
  606. colm_openbench-3.0.0/src/openbench/visualization/only_drawing.py +1903 -0
  607. colm_openbench-3.0.0/tests/__init__.py +1 -0
  608. colm_openbench-3.0.0/tests/conftest.py +62 -0
  609. colm_openbench-3.0.0/tests/gui_fakes.py +49 -0
  610. colm_openbench-3.0.0/tests/test_architecture_cleanup.py +207 -0
  611. colm_openbench-3.0.0/tests/test_architecture_cli.py +83 -0
  612. colm_openbench-3.0.0/tests/test_architecture_core.py +167 -0
  613. colm_openbench-3.0.0/tests/test_architecture_data.py +98 -0
  614. colm_openbench-3.0.0/tests/test_architecture_runner.py +160 -0
  615. colm_openbench-3.0.0/tests/test_audit_bugfixes.py +704 -0
  616. colm_openbench-3.0.0/tests/test_benchmark_script.py +36 -0
  617. colm_openbench-3.0.0/tests/test_build_artifacts.py +239 -0
  618. colm_openbench-3.0.0/tests/test_cable_support.py +81 -0
  619. colm_openbench-3.0.0/tests/test_cache_regressions.py +42 -0
  620. colm_openbench-3.0.0/tests/test_case_insensitive_names.py +216 -0
  621. colm_openbench-3.0.0/tests/test_cli_check_preflight.py +1193 -0
  622. colm_openbench-3.0.0/tests/test_cli_integration.py +227 -0
  623. colm_openbench-3.0.0/tests/test_cli_model_management.py +1086 -0
  624. colm_openbench-3.0.0/tests/test_cli_sim_scan.py +785 -0
  625. colm_openbench-3.0.0/tests/test_cli_stubs.py +6641 -0
  626. colm_openbench-3.0.0/tests/test_climatology_weighting.py +69 -0
  627. colm_openbench-3.0.0/tests/test_compute.py +166 -0
  628. colm_openbench-3.0.0/tests/test_config/__init__.py +1 -0
  629. colm_openbench-3.0.0/tests/test_config/fixtures/full.yaml +48 -0
  630. colm_openbench-3.0.0/tests/test_config/fixtures/invalid_years.yaml +15 -0
  631. colm_openbench-3.0.0/tests/test_config/fixtures/minimal.yaml +16 -0
  632. colm_openbench-3.0.0/tests/test_config/fixtures/missing_project.yaml +10 -0
  633. colm_openbench-3.0.0/tests/test_config/fixtures/old_json/main.json +44 -0
  634. colm_openbench-3.0.0/tests/test_config/fixtures/old_json/ref.json +10 -0
  635. colm_openbench-3.0.0/tests/test_config/fixtures/old_json/ref_def/GLEAM.json +19 -0
  636. colm_openbench-3.0.0/tests/test_config/fixtures/old_json/sim.json +9 -0
  637. colm_openbench-3.0.0/tests/test_config/fixtures/old_json/sim_def/case1.json +24 -0
  638. colm_openbench-3.0.0/tests/test_config/fixtures/with_defaults.yaml +31 -0
  639. colm_openbench-3.0.0/tests/test_config/test_adapter.py +1078 -0
  640. colm_openbench-3.0.0/tests/test_config/test_adapter_namelists.py +555 -0
  641. colm_openbench-3.0.0/tests/test_config/test_loader.py +814 -0
  642. colm_openbench-3.0.0/tests/test_config/test_migration.py +572 -0
  643. colm_openbench-3.0.0/tests/test_config/test_schema.py +137 -0
  644. colm_openbench-3.0.0/tests/test_config/test_variable_aliases.py +116 -0
  645. colm_openbench-3.0.0/tests/test_converttype_precision.py +19 -0
  646. colm_openbench-3.0.0/tests/test_core/__init__.py +1 -0
  647. colm_openbench-3.0.0/tests/test_core/test_appendix_methods.py +111 -0
  648. colm_openbench-3.0.0/tests/test_core/test_appendix_metrics.py +196 -0
  649. colm_openbench-3.0.0/tests/test_core/test_appendix_registry.py +38 -0
  650. colm_openbench-3.0.0/tests/test_core/test_appendix_trend.py +85 -0
  651. colm_openbench-3.0.0/tests/test_core/test_metrics.py +424 -0
  652. colm_openbench-3.0.0/tests/test_core/test_scores.py +188 -0
  653. colm_openbench-3.0.0/tests/test_core/test_statistics.py +238 -0
  654. colm_openbench-3.0.0/tests/test_custom_filters.py +97 -0
  655. colm_openbench-3.0.0/tests/test_data_pipeline_validation.py +59 -0
  656. colm_openbench-3.0.0/tests/test_dead_code_cleanup.py +166 -0
  657. colm_openbench-3.0.0/tests/test_e3sm_land_support.py +82 -0
  658. colm_openbench-3.0.0/tests/test_ecland_support.py +95 -0
  659. colm_openbench-3.0.0/tests/test_flat_var_resolution.py +85 -0
  660. colm_openbench-3.0.0/tests/test_groupby_heatmap_layout.py +213 -0
  661. colm_openbench-3.0.0/tests/test_groupby_metadata.py +186 -0
  662. colm_openbench-3.0.0/tests/test_groupby_regressions.py +71 -0
  663. colm_openbench-3.0.0/tests/test_gui_async_lifecycle.py +521 -0
  664. colm_openbench-3.0.0/tests/test_gui_config_manager.py +690 -0
  665. colm_openbench-3.0.0/tests/test_gui_controller_paths.py +543 -0
  666. colm_openbench-3.0.0/tests/test_gui_data_discovery.py +49 -0
  667. colm_openbench-3.0.0/tests/test_gui_evaluation_runner.py +350 -0
  668. colm_openbench-3.0.0/tests/test_gui_general_confirmation.py +29 -0
  669. colm_openbench-3.0.0/tests/test_gui_legacy_cleanup.py +92 -0
  670. colm_openbench-3.0.0/tests/test_gui_localization.py +147 -0
  671. colm_openbench-3.0.0/tests/test_gui_page_preview_remote.py +846 -0
  672. colm_openbench-3.0.0/tests/test_gui_page_run_monitor_remote.py +448 -0
  673. colm_openbench-3.0.0/tests/test_gui_qapp_lifecycle.py +53 -0
  674. colm_openbench-3.0.0/tests/test_gui_remote_registry.py +556 -0
  675. colm_openbench-3.0.0/tests/test_gui_remote_scanner_workflow.py +1908 -0
  676. colm_openbench-3.0.0/tests/test_gui_runtime_paths.py +675 -0
  677. colm_openbench-3.0.0/tests/test_gui_save_preserves_fields.py +834 -0
  678. colm_openbench-3.0.0/tests/test_gui_scan_alignment_fixes.py +1015 -0
  679. colm_openbench-3.0.0/tests/test_gui_sim_data.py +1004 -0
  680. colm_openbench-3.0.0/tests/test_gui_variable_migration.py +176 -0
  681. colm_openbench-3.0.0/tests/test_gui_variable_selection.py +166 -0
  682. colm_openbench-3.0.0/tests/test_gui_wizard_order.py +22 -0
  683. colm_openbench-3.0.0/tests/test_lm4_support.py +84 -0
  684. colm_openbench-3.0.0/tests/test_metric_score_core_regressions.py +432 -0
  685. colm_openbench-3.0.0/tests/test_netcdf_lifecycle_atomic.py +434 -0
  686. colm_openbench-3.0.0/tests/test_no_file_path_regression.py +98 -0
  687. colm_openbench-3.0.0/tests/test_orchidee_support.py +128 -0
  688. colm_openbench-3.0.0/tests/test_output_manager.py +83 -0
  689. colm_openbench-3.0.0/tests/test_pair_ref_copy_on_write.py +183 -0
  690. colm_openbench-3.0.0/tests/test_parallel.py +38 -0
  691. colm_openbench-3.0.0/tests/test_performance_optimizations.py +576 -0
  692. colm_openbench-3.0.0/tests/test_processing_frequency_normalization.py +17 -0
  693. colm_openbench-3.0.0/tests/test_processing_registry_cache.py +671 -0
  694. colm_openbench-3.0.0/tests/test_processing_time_missing.py +60 -0
  695. colm_openbench-3.0.0/tests/test_processing_yearly_memory.py +139 -0
  696. colm_openbench-3.0.0/tests/test_progress_dashboard.py +217 -0
  697. colm_openbench-3.0.0/tests/test_progress_parser.py +233 -0
  698. colm_openbench-3.0.0/tests/test_registry/__init__.py +1 -0
  699. colm_openbench-3.0.0/tests/test_registry/test_converter.py +31 -0
  700. colm_openbench-3.0.0/tests/test_registry/test_manager.py +1269 -0
  701. colm_openbench-3.0.0/tests/test_registry/test_resolver.py +796 -0
  702. colm_openbench-3.0.0/tests/test_registry/test_scanner_registration.py +4432 -0
  703. colm_openbench-3.0.0/tests/test_registry/test_scanner_tim_res.py +201 -0
  704. colm_openbench-3.0.0/tests/test_registry/test_schema.py +106 -0
  705. colm_openbench-3.0.0/tests/test_registry/test_variable_aliases.py +140 -0
  706. colm_openbench-3.0.0/tests/test_registry_overlay_audit.py +125 -0
  707. colm_openbench-3.0.0/tests/test_registry_reference_regressions.py +265 -0
  708. colm_openbench-3.0.0/tests/test_regrid_weight_cache.py +648 -0
  709. colm_openbench-3.0.0/tests/test_release_metadata.py +57 -0
  710. colm_openbench-3.0.0/tests/test_remote_credentials.py +98 -0
  711. colm_openbench-3.0.0/tests/test_remote_file_browser.py +371 -0
  712. colm_openbench-3.0.0/tests/test_remote_install_worker.py +2395 -0
  713. colm_openbench-3.0.0/tests/test_remote_runner.py +624 -0
  714. colm_openbench-3.0.0/tests/test_remote_shell_quoting.py +199 -0
  715. colm_openbench-3.0.0/tests/test_remote_ssh.py +457 -0
  716. colm_openbench-3.0.0/tests/test_remote_storage.py +34 -0
  717. colm_openbench-3.0.0/tests/test_remote_sync.py +1057 -0
  718. colm_openbench-3.0.0/tests/test_report_groupby_paths.py +785 -0
  719. colm_openbench-3.0.0/tests/test_runner/__init__.py +0 -0
  720. colm_openbench-3.0.0/tests/test_runner/test_audit_regressions.py +180 -0
  721. colm_openbench-3.0.0/tests/test_runner/test_cache.py +420 -0
  722. colm_openbench-3.0.0/tests/test_runner/test_local.py +9347 -0
  723. colm_openbench-3.0.0/tests/test_science_audit_regressions.py +367 -0
  724. colm_openbench-3.0.0/tests/test_sim_scanner.py +885 -0
  725. colm_openbench-3.0.0/tests/test_smoke.py +133 -0
  726. colm_openbench-3.0.0/tests/test_smoke_cli.py +156 -0
  727. colm_openbench-3.0.0/tests/test_ssh_execute_stream.py +274 -0
  728. colm_openbench-3.0.0/tests/test_station_matcher.py +377 -0
  729. colm_openbench-3.0.0/tests/test_station_scanner.py +686 -0
  730. colm_openbench-3.0.0/tests/test_system_resources.py +75 -0
  731. colm_openbench-3.0.0/tests/test_tier_b_regressions.py +543 -0
  732. colm_openbench-3.0.0/tests/test_time_climatology_p1.py +96 -0
  733. colm_openbench-3.0.0/tests/test_time_utils.py +72 -0
  734. colm_openbench-3.0.0/tests/test_unit.py +281 -0
  735. colm_openbench-3.0.0/tests/test_visualization_combinations.py +47 -0
  736. colm_openbench-3.0.0/tests/test_visualization_diagram_sampling.py +155 -0
  737. colm_openbench-3.0.0/tests/test_visualization_downsample.py +180 -0
  738. colm_openbench-3.0.0/tests/test_visualization_failure_propagation.py +719 -0
  739. colm_openbench-3.0.0/tests/test_visualization_filenames.py +278 -0
  740. colm_openbench-3.0.0/tests/test_visualization_global_state.py +307 -0
  741. colm_openbench-3.0.0/tests/test_visualization_option_isolation.py +64 -0
  742. colm_openbench-3.0.0/tests/test_visualization_option_parsing.py +149 -0
  743. colm_openbench-3.0.0/tests/test_visualization_sampling.py +238 -0
  744. colm_openbench-3.0.0/tests/test_visualization_units.py +9 -0
  745. colm_openbench-3.0.0/tests/test_zip_safe_resources.py +218 -0
@@ -0,0 +1,75 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ *.egg
7
+ dist/
8
+ build/
9
+ .eggs/
10
+
11
+ # Virtual environments
12
+ .venv/
13
+ venv/
14
+ env/
15
+
16
+ # IDE
17
+ .vscode/
18
+ .idea/
19
+ *.swp
20
+ *.swo
21
+
22
+ # OS
23
+ .DS_Store
24
+ Thumbs.db
25
+
26
+ # Project
27
+ output/
28
+ output_station_smoke/
29
+ logs/
30
+ *.nc
31
+ *.nc4
32
+ # Exception: ship the standard classification masks (IGBP/PFT/Köppen) with the
33
+ # package. They are compressed integer masks (~1.1 MB total) consumed by the
34
+ # *_groupby evaluation paths via openbench.util.static_datasets. Users can still
35
+ # override them via $OPENBENCH_DATASET_DIR or ./dataset/.
36
+ !src/openbench/dataset/
37
+ !src/openbench/dataset/*.nc
38
+ cache/
39
+ .pytest_cache/
40
+ .ruff_cache/
41
+ htmlcov/
42
+ .coverage
43
+
44
+ # Registry runtime scratch (atomic-write backup + advisory lock files,
45
+ # created next to reference_catalog.yaml / model_catalog.yaml).
46
+ *.bak
47
+ *.lock
48
+ *.tmp
49
+
50
+ OpenBench-wei/
51
+ openbench-wizard/
52
+ bk/
53
+
54
+ test_data/
55
+ .worktrees/
56
+
57
+ # Local/generated tests and planning artifacts
58
+ docs/performance-benchmark.md
59
+ tests/manual/test_script_entrypoints.py
60
+
61
+ # Personal/local test configs
62
+ test_real.yaml
63
+ test_wei.yaml
64
+ test_wei2.yaml
65
+ test_wei_full.yaml
66
+ test_cross_dtype.yaml
67
+ test_river.yaml
68
+ test_lu_stn.yaml
69
+ openbench_full_options.yaml
70
+ outputs/
71
+ openbench_init_*.yaml
72
+ /test_*.yaml
73
+
74
+ docs/superpowers/
75
+ /培训课件
@@ -0,0 +1,334 @@
1
+ # Changelog
2
+
3
+ ## [3.0.0] - 2026-09-11
4
+
5
+ First stable 3.0 release, including the main-branch fixes validated across Linux,
6
+ macOS and Windows on Python 3.10–3.12. The opt-in uncertainty-aware pipeline
7
+ remains on its separate development branch.
8
+
9
+ ### Fixed
10
+ - Shared grid preprocessing no longer depends on which reference is evaluated
11
+ first; per-pair masked references survive cache reuse and post-processing errors.
12
+ - Statistics respect preprocessed units, finite observations and coordinate
13
+ alignment; ANOVA, PLSR and Three-Cornered Hat receive the correct source layout.
14
+ - Non-Gregorian monthly conversions, computed reference variables and mixed
15
+ flat/resolution-specific reference directories retain their intended data.
16
+ - Remote configuration changes apply atomically without retaining another
17
+ host's passwords; recursive deletes clear matching cached and pending files.
18
+
19
+ ### Maintenance
20
+ - Remove obsolete processing scaffolding and consolidate calendar and saved
21
+ credential handling without removing public compatibility entry points.
22
+ - Share wheel/sdist resource checks between CI and publishing, require explicitly
23
+ selected artifacts to exist, and document fresh-build release verification.
24
+ - Remove redundant comments and duplicate test scaffolding while retaining
25
+ meaningful scientific documentation and deterministic regression coverage.
26
+ - Align the Conda recipe with the stable PyPI version and verify its dependency,
27
+ command-line and bundled-data installation contracts.
28
+
29
+ ## [3.0.0b16] - 2026-08-31
30
+
31
+ Beta release over 3.0.0b15 for remote workflow reliability, expanded evaluation
32
+ methods, and complete output packaging.
33
+
34
+ ### Added
35
+ - Evaluation-guide appendix metrics and methods, including deterministic,
36
+ categorical, uncertainty, trend, and distribution diagnostics.
37
+ - Live remote CPU and memory monitoring tied to the active OpenBench process.
38
+
39
+ ### Changed
40
+ - Index of Agreement is available through the metric workflow.
41
+ - Generated figures are published under the advertised top-level `figures/`
42
+ directory while existing metric, comparison, and report paths remain valid.
43
+
44
+ ### Fixed
45
+ - Remote installation, Conda environment creation, SSH host selection, output
46
+ paths, project confirmation, and local/remote dataset discovery.
47
+ - Remote progress now waits for the real evaluation process across jump hosts
48
+ instead of reporting premature success or completion.
49
+ - Legacy flat reference layouts, CLM multi-stream file prefixes, and simulation
50
+ data scanning now preserve the files selected by the user.
51
+ - Appendix NetCDF execution, GUI/Qt CI stability, and repository formatting.
52
+
53
+ ## [3.0.0b15] - 2026-08-26
54
+
55
+ Beta release over 3.0.0b14 for GUI/runtime reliability, truthful reporting,
56
+ station evaluation fixes, and preprocessing performance.
57
+
58
+ ### Added
59
+ - Content-addressed xESMF weight caching to reuse identical regridding weights.
60
+ - GUI progress events and bounded report summaries for safer long-running local
61
+ and remote evaluations.
62
+
63
+ ### Changed
64
+ - Local Dask evaluation avoids distributed NetCDF/HDF5 worker writes and keeps
65
+ scanned simulation case cards readable.
66
+ - Shared preprocessing, reference masking, MFM component work, and multi-model
67
+ comparisons reuse expensive intermediate work where results are equivalent.
68
+
69
+ ### Fixed
70
+ - GUI local and remote workflows now fail truthfully instead of silently falling
71
+ back, stalling, or running on the wrong target.
72
+ - Reference and simulation scanning preserve requested datasets, station lists,
73
+ paths, and inline metadata more reliably.
74
+ - Time alignment, finite-observation masks, singleton conservative regrids, and
75
+ station missing-value handling no longer silently alter scientific results.
76
+ - Large NetCDF/CSV reports remain bounded and avoid fabricated or incomplete
77
+ summaries.
78
+ - Windows path normalization, environment discovery, CPU quota handling, and CI
79
+ formatting stability.
80
+ - Station evaluation process updates from PRs #167 and #170.
81
+
82
+ ## [3.0.0b14] - 2026-08-22
83
+
84
+ Beta release over 3.0.0b13 for actionable GUI preflight diagnostics.
85
+
86
+ ### Fixed
87
+ - GUI configuration-check failures now include the complete CLI check output,
88
+ so validation details are not hidden by the final summary lines.
89
+
90
+ ## [3.0.0b13] - 2026-08-22
91
+
92
+ Beta release over 3.0.0b12 for safer configuration, registration, and GUI
93
+ workflows.
94
+
95
+ ### Added
96
+ - Chinese/English GUI switching with immediate page retranslation.
97
+ - Back navigation throughout interactive CLI setup and registration wizards.
98
+
99
+ ### Changed
100
+ - GUI evaluations now run the same CLI preflight check before execution.
101
+ - Reference rescans distinguish new and registered datasets, default to new
102
+ entries, and enrich only explicitly selected registered datasets.
103
+ - CLI registration accepts quoted whitespace-containing units in named
104
+ `key=value` variable specifications and provides actionable shell guidance.
105
+
106
+ ### Fixed
107
+ - CLI and GUI preflight reject evaluations whose configured years do not
108
+ overlap the available data period.
109
+ - Reference rescans preserve manual catalog corrections and keep remote refresh
110
+ work responsive and narrowly targeted.
111
+ - Multi-step CLI back navigation retains previously entered values across
112
+ variables and empty intermediate steps.
113
+ - Cross-platform CI behavior for paths, generated artifacts, and GUI tests.
114
+
115
+ ## [3.0.0b12] - 2026-08-18
116
+
117
+ Beta release over 3.0.0b11 for reliable generated station configuration.
118
+
119
+ ### Fixed
120
+ - `openbench init` and `openbench sim scan` now write absolute station
121
+ `fulllist` paths so generated YAML works from any current directory.
122
+
123
+ ## [3.0.0b11] - 2026-08-13
124
+
125
+ Beta release over 3.0.0b10 for GUI dataset discovery, registry coverage, and
126
+ statistical evaluation correctness.
127
+
128
+ ### Added
129
+ - Expanded Crop reference catalog coverage and CoLM2024 model metadata.
130
+ - Run-manifest and configuration-key validation for more reproducible runs.
131
+
132
+ ### Changed
133
+ - GUI simulation scans retain per-case grid/station metadata and prepare station
134
+ lists before local preview/export.
135
+ - SMPI remains available through its dedicated comparison workflow instead of
136
+ the single-value metric selector.
137
+
138
+ ### Fixed
139
+ - GUI navigation now persists edits, registered reference paths are no longer
140
+ overwritten by scan roots, and simulation discovery follows the selected run.
141
+ - Reference station-list resolution, Streamflow catalog entries, units, and
142
+ registry behavior were corrected.
143
+ - Mann-Kendall handles tied short series, categorical kappa rejects continuous
144
+ inputs, and SMPI bootstrap intervals are consistent for NumPy and Dask data.
145
+
146
+ ## [3.0.0b10] - 2026-07-18
147
+
148
+ Beta release over 3.0.0b9 for station-reference routing correctness.
149
+
150
+ ### Changed
151
+ - Renamed the active configuration runtime module from `legacy_processors.py`
152
+ to `runtime_info.py` to reflect that it remains on the main execution path.
153
+
154
+ ### Fixed
155
+ - Non-Streamflow station references no longer enter the discharge/CaMA-specific
156
+ `station_matching` engine.
157
+ - Reference scans remove stale non-Streamflow matching blocks and generate
158
+ portable station-list catalogs instead.
159
+
160
+ ## [3.0.0b9] - 2026-07-16
161
+
162
+ Beta release over 3.0.0b8 for registry coverage and CI stability.
163
+
164
+ ### Changed
165
+ - Station fulllists generated by scans are stored under `OPENBENCH_HOME`,
166
+ allowing shared reference roots to remain read-only.
167
+ - Expanded bundled model and reference metadata.
168
+
169
+ ### Fixed
170
+ - Compute validation now accepts keyword arguments such as `isel(lake=0)`.
171
+ - Restored required station-matching metadata and removed incomplete generated
172
+ station catalog entries.
173
+ - Simulation scanning retains the TE `Albedo` compatibility key.
174
+ - NetCDF evaluation writes no longer retain lazy references to closed source
175
+ datasets.
176
+ - Ruff formatting for the FFT component metric.
177
+
178
+ ## [3.0.0b8] - 2026-07-08
179
+
180
+ Patch release over 3.0.0b7 for model coverage, audit fixes, and CI stability.
181
+
182
+ ### Added
183
+ - Bundled ECLand and LM4 model profiles and aliases.
184
+
185
+ ### Fixed
186
+ - Station simulation scanning now loads merged NetCDF sources before writing the
187
+ target file, avoiding platform-sensitive HDF5/netCDF CI hangs.
188
+ - Hardened audit fixes for compute sandboxing, remote uploads, registry locking,
189
+ station lists, time decoding, station matching, and unit conversions.
190
+
191
+ ## [3.0.0b7] - 2026-06-11
192
+
193
+ Patch release over 3.0.0b6 for GUI selection behavior.
194
+
195
+ ### Fixed
196
+ - Multi-resolution reference selection now allows lower-frequency variants such
197
+ as LowRes/Month instead of forcing the highest-frequency available variant.
198
+ - Simulation dataset scanning no longer auto-selects every model-profile
199
+ variable or expands the user's Evaluation Variables selection in the preview.
200
+
201
+ ## [3.0.0b6] - 2026-06-11
202
+
203
+ Patch release over 3.0.0b5 for GUI wizard flow alignment.
204
+
205
+ ### Changed
206
+ - GUI setup now follows the CLI/config order: choose Evaluation Variables first,
207
+ then configure reference datasets and simulation datasets for those variables.
208
+
209
+ ## [3.0.0b5] - 2026-06-11
210
+
211
+ Patch release over 3.0.0b4 for GUI reference selection and remote SSH hardening.
212
+
213
+ ### Fixed
214
+ - Multi-resolution reference selection no longer crashes when the dialog is
215
+ populated from registry `ReferenceDataset` entries, which do not carry the
216
+ scan-only `file_count` field.
217
+ - SSH output streaming falls back to short polling when `select.select()`
218
+ rejects Paramiko-like channels on platforms such as Windows.
219
+
220
+ ## [3.0.0b4] - 2026-06-11
221
+
222
+ Remote-workflow hardening release: the GUI's remote mode was reworked end to
223
+ end (responsive SSH layer + three review rounds over it).
224
+
225
+ ### Fixed
226
+ - Conda activation on remote hosts uses the POSIX `.` command — the `source`
227
+ bashism broke every conda-env remote flow on hosts whose `/bin/sh` is
228
+ dash/ash (commands are wrapped in `sh -c` for csh/tcsh login shells)
229
+ - Remote paths starting with `~` (including the documented `~/OpenBench`
230
+ default) now expand to `$HOME` everywhere a path reaches the remote shell:
231
+ the evaluation run command, pip dependency step, conda create, the
232
+ OpenBench install check, the sync engine, scanners, validators, NML/model
233
+ editors and file browsers. Bare `shlex.quote` turned them into literal-`~`
234
+ paths that no remote shell resolves
235
+ - Remote dataset scanning trusts the inspection results shipped from the
236
+ remote host instead of coincidentally same-named local directories
237
+ (wrong-machine inspection on shared mounts), and station fulllists are
238
+ generated remotely for `stn` references
239
+ - A dropped SSH session is reported as "Connection Lost" instead of the
240
+ misleading "Remote directory not found"
241
+ - The remote scan bootstrap `expanduser()`s the checkout path so a plain-git
242
+ `~/OpenBench` install is importable even without the pip step
243
+
244
+ ### Changed
245
+ - Every SSH call made from the GUI thread now routes through a responsive
246
+ worker layer: the window keeps painting during connects, scans and
247
+ installs; long installs stream output into Esc-guarded progress dialogs;
248
+ scans and installs are cancellable mid-command
249
+ - Remote installs run `pip install -e` for dependencies (the old
250
+ requirements.yml flow targeted a file that no longer exists)
251
+ - Browse start-path resolution and symlink-target classification each probe
252
+ the remote host in a single compound round trip (was up to N serial
253
+ round trips per click)
254
+ - The Runtime page's local git install/update streams through a worker
255
+ thread with a stoppable subprocess (no more event-loop pumping)
256
+
257
+ ## [3.0.0b3] - 2026-06-09
258
+
259
+ ### Changed
260
+ - `pip install colm-openbench` is now fully featured by default: statistics
261
+ (scikit-learn, statsmodels), plotting (seaborn), legacy migration (f90nml)
262
+ and HTML reports ship in the base install. Only `[gui]` (PySide6), `[remote]`
263
+ (paramiko) and `[report]` (xhtml2pdf — needs system cairo) remain optional;
264
+ `[all]` = gui + remote + report.
265
+
266
+ ### Added
267
+ - Reference datasets: `Rodai2025_NPP` (station NPP) and lake stations
268
+ `G_REALM_LakeLevel`, `GLAST_LakeSurfaceWaterTemperature`, `ReaLSAT_LakeArea`
269
+ - 30-minute (half-hour) time-resolution detection
270
+
271
+ ### Docs
272
+ - User's Guide (CN+EN): climatology added to the `tim_res` field table; a
273
+ multi-model `simulation` example; `timezone` flagged as not-yet-implemented;
274
+ default `io`/`dask` sub-blocks shown; detailed cases for unresolvable
275
+ reference profiles and `sim scan` model inference
276
+
277
+ ## [3.0.0b2] - 2026-06-09
278
+
279
+ Bug-fix and hardening release over 3.0.0b1 (deep code review + full cross-platform CI).
280
+
281
+ ### Fixed
282
+ - Target diagram plotted total RMSE on the uRMSD axis; now passes centered CRMSD so
283
+ points satisfy RMSD² = bias² + uRMSD² (with an invariant guard)
284
+ - `absolute_percent_bias` normalizes by `|Σo|` so a negative observed sum no longer yields a negative APB
285
+ - ANOVA default `analysis_type` corrected to `oneway` (was the non-accepted `one-way`)
286
+ - `br2` uses `|slope|` (Krause 2005), keeping it in `[0, r²]` for negative slopes
287
+ - SMPI grid path applies area weights and uses a consistent bootstrap dimension
288
+ - Taylor grid summary computes std/correlation/CRMSD over one pairwise finite mask
289
+ - NetCDF writes are serialized with a lock (netCDF4/HDF5 is not thread-safe) — fixes a segfault
290
+ - Registry catalog writes hold a cross-process lock; `delete_reference` writes a tombstone
291
+ - Config rejects non-mapping `project`/`evaluation`/`simulation` sections with a clean error
292
+ - Cross-platform path handling (POSIX paths in catalogs/configs; Windows file reads)
293
+
294
+ ### Changed
295
+ - Version is a single source of truth (`__init__.__version__`, hatchling dynamic)
296
+ - The full test suite (84 files) now runs on CI across Linux/macOS/Windows
297
+
298
+ ### Added
299
+ - 30-minute (half-hour) time-resolution detection
300
+ - Expanded reference dataset metadata; `CITATION.cff`
301
+
302
+ ## [3.0.0b1] - 2026-06-07
303
+
304
+ First public beta of the 3.0 line. APIs and config schema may still change
305
+ before the 3.0.0 final release.
306
+
307
+ ### Added
308
+ - Unified package structure (`src/openbench/`) merging OpenBench-wei and openbench-wizard
309
+ - Single YAML configuration file (`openbench.yaml`) replacing 4-6 file setup
310
+ - Data registry with 101 reference datasets (69 grid + 32 station)
311
+ - 22 model profiles (CoLM2024, CLM5, NoahMP5, ERA5-Land, …)
312
+ - Bundled IGBP / PFT / Köppen classification masks for group-by analysis
313
+ - CLI commands: `run`, `check`, `init`, `ref`, `sim`, `model`, `migrate`, `cache`, `gui`, `version`
314
+ - Interactive config generator (`openbench init`)
315
+ - Config migration tool (`openbench migrate`) for old JSON/NML formats
316
+ - `_defaults` merge support for simulation configs
317
+ - `!include` tag support in YAML configs
318
+ - Three time alignment strategies: intersection, per_pair, strict
319
+ - Config adapter bridging new and legacy evaluation engine formats
320
+ - SSH remote execution infrastructure (requires `openbench[remote]`)
321
+ - GUI wizard (requires `openbench[gui]`)
322
+ - Optional extras: `[gui]`, `[remote]`, `[report]`, `[all]`
323
+ - GitHub Actions CI (lint + test matrix)
324
+ - 70+ tests covering config, registry, metrics, scores, CLI
325
+
326
+ ### Changed
327
+ - Build system: hatchling (was setuptools/manual)
328
+ - Config format: YAML only (JSON and Fortran NML deprecated)
329
+ - Package name: `colm-openbench` on PyPI
330
+ - Python requirement: >=3.10
331
+
332
+ ### Migration
333
+ - Use `openbench migrate old-config.json -o openbench.yaml` to convert existing configs
334
+ - Evaluation results are numerically identical to v2.0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023-2026 Zhongwang Wei, CoLM-SYSU
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.