From 6ad7d5ee9245b0f86ebfe5c5fcf19a305cf8d5ec Mon Sep 17 00:00:00 2001 From: Julia Sloan Date: Wed, 12 Feb 2025 16:42:56 -0800 Subject: [PATCH] fix longitude_name call in latlon masking --- src/Var.jl | 4 ++-- test/test_Var.jl | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Var.jl b/src/Var.jl index baa44ba..26c74e0 100644 --- a/src/Var.jl +++ b/src/Var.jl @@ -1782,8 +1782,8 @@ function make_lonlat_mask( # Reshape data for broadcasting lon_idx = input_var.dim2index[longitude_name(input_var)] lat_idx = input_var.dim2index[latitude_name(input_var)] - lon_length = input_var.dims[longitude_name(mask_var)] |> length - lat_length = input_var.dims[latitude_name(mask_var)] |> length + lon_length = input_var.dims[longitude_name(input_var)] |> length + lat_length = input_var.dims[latitude_name(input_var)] |> length if lon_idx > lat_idx mask_arr = transpose(mask_arr) end diff --git a/test/test_Var.jl b/test/test_Var.jl index a131e9e..0d9086d 100644 --- a/test/test_Var.jl +++ b/test/test_Var.jl @@ -602,7 +602,7 @@ end @test xy_avg.attributes["long_name"] == "hi averaged horizontally over x (0.0 to 180.0km) and y (0.0 to 90.0km)" - # Setup to test average_lat and average_lon + # Setup to test average_lat and average_lon long = 0.0:180.0 |> collect lat = 0.0:90.0 |> collect time = 0.0:10.0 |> collect @@ -1837,6 +1837,17 @@ end var1 = mask_fn(ones_var) @test var1.data[1] == 0.0 + # Check with a different longitude name + ones_var = ClimaAnalysis.remake( + ones_var, + dims = OrderedDict(["latitude" => lat, "longitude" => lon]), + dim_attributes = OrderedDict(["longitude" => Dict("units" => "deg")]), + ) + # ones_var.dims = OrderedDict(["latitude" => lat, "longitude" => lon]) + # ones_var.dim_attributes = OrderedDict(["longitude" => Dict("units" => "deg")]) + var1 = mask_fn(ones_var) + @test var1.data[1] == 0.0 + # Error handling lat = collect(range(-89.5, 89.5, 180)) data = ones(length(lat))