Skip to content

Commit d13f7c3

Browse files
ph-kevSbozzolo
authored andcommitted
Add Var._delete_model
1 parent 2b7f3c4 commit d13f7c3

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

src/Leaderboard.jl

+30
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,36 @@ function add_model(rmse_var::RMSEVariable, models::String...)
482482
)
483483
end
484484

485+
"""
486+
_delete_model(rmse_var::RMSEVariable, models::String...)
487+
488+
Delete one or more models named `models` from `rmse_var`.
489+
"""
490+
function _delete_model(rmse_var::RMSEVariable, models::String...)
491+
# Delete model name
492+
mdl_names = model_names(rmse_var)
493+
num_rows = length(mdl_names)
494+
setdiff!(mdl_names, models)
495+
496+
# Delete model
497+
rmses = rmse_var.RMSEs |> copy
498+
indices_to_delete = (rmse_var.model2index[model] for model in models)
499+
rmses = rmse_var.RMSEs[setdiff(1:num_rows, indices_to_delete), :]
500+
501+
# Delete unit for model
502+
units = rmse_var.units |> deepcopy
503+
for name in models
504+
delete!(units, name)
505+
end
506+
return RMSEVariable(
507+
rmse_var.short_name,
508+
mdl_names,
509+
category_names(rmse_var),
510+
rmses,
511+
units,
512+
)
513+
end
514+
485515
"""
486516
_model_name_check(rmse_var::RMSEVariable, model_name)
487517

test/test_Leaderboard.jl

+31
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,37 @@ end
245245
@test all(isnan.(rmse_var[:, "new cat 2"]))
246246
end
247247

248+
@testset "Removing model" begin
249+
csv_file_path = joinpath(@__DIR__, "sample_data/test_csv.csv")
250+
rmse_var = ClimaAnalysis.read_rmses(csv_file_path, "ta")
251+
rmse_var = ClimaAnalysis.add_model(rmse_var, "new model", "new model 2")
252+
rmse_var[2, 5] = 10.0
253+
rmse_var_delete = ClimaAnalysis.Leaderboard._delete_model(
254+
rmse_var,
255+
"ACCESS-CM2",
256+
"new model",
257+
)
258+
@test rmse_var_delete.short_name == "ta"
259+
@test ClimaAnalysis.model_names(rmse_var_delete) ==
260+
["ACCESS-ESM1-5", "new model 2"]
261+
@test ClimaAnalysis.category_names(rmse_var_delete) ==
262+
ClimaAnalysis.category_names(rmse_var)
263+
@test rmse_var_delete[1, :] == rmse_var[2, :]
264+
@test all(isnan.(rmse_var_delete[2, :]))
265+
266+
# Delete all models
267+
rmse_var_delete = ClimaAnalysis.Leaderboard._delete_model(
268+
rmse_var_delete,
269+
"ACCESS-ESM1-5",
270+
"new model 2",
271+
)
272+
@test rmse_var_delete.short_name == "ta"
273+
@test isempty(ClimaAnalysis.model_names(rmse_var_delete))
274+
@test ClimaAnalysis.category_names(rmse_var_delete) ==
275+
ClimaAnalysis.category_names(rmse_var)
276+
@test rmse_var_delete[:, :] |> size == (0, 5)
277+
end
278+
248279
@testset "Adding units" begin
249280
csv_file_path = joinpath(@__DIR__, "sample_data/test_csv.csv")
250281
rmse_var = ClimaAnalysis.read_rmses(csv_file_path, "ta")

0 commit comments

Comments
 (0)