Skip to content

Commit 06ba9f2

Browse files
committed
fixing coord name issue (lev/pfull) with openmars in marsformat
1 parent 63010d7 commit 06ba9f2

1 file changed

Lines changed: 14 additions & 9 deletions

File tree

bin/MarsFormat.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -810,31 +810,36 @@ def main():
810810
DS = DS.isel(**{model.dim_phalf: slice(None, None, -1)})
811811
print(f"{Red}NOTE: all variables flipped along vertical dimension. "
812812
f"Top of the atmosphere is now index = 0")
813-
814-
# Reorder dimensions
815-
print(f"{Cyan} Transposing variable dimensions to match order "
816-
f"expected in CAP")
813+
817814
# Reorder dimensions - transpose each variable individually
818815
print(f"{Cyan} Transposing variable dimensions to match order "
819816
f"expected in CAP")
820817

821818
# Define the desired dimension order
822819
dim_order = [model.dim_time, model.dim_pfull, model.dim_lat, model.dim_lon]
823820

821+
# Collect all transposed variables before modifying dataset
822+
transposed_vars = {}
823+
824824
# Transpose each data variable individually based on its actual dimensions
825-
for var in DS.data_vars:
826-
var_dims = list(DS[var].dims)
825+
for var_name in list(DS.data_vars.keys()): # Use list() to avoid iteration issues
826+
var = DS[var_name]
827+
var_dims = list(var.dims)
828+
827829
# Build desired order using only dimensions this variable actually has
828830
desired_order = [d for d in dim_order if d in var_dims]
829831
# Add any dimensions not in our standard list
830832
for d in var_dims:
831833
if d not in desired_order:
832834
desired_order.append(d)
835+
833836
# Only transpose if order needs changing
834837
if var_dims != desired_order:
835-
DS[var] = DS[var].transpose(*desired_order)
836-
# DS = DS.transpose(model.dim_time, model.dim_pfull, model.dim_lat,
837-
# model.dim_lon, ...)
838+
transposed_vars[var_name] = var.transpose(*desired_order)
839+
840+
# Apply all transpositions at once
841+
for var_name, transposed_var in transposed_vars.items():
842+
DS[var_name] = transposed_var
838843

839844
# Change longitude from -180-179 to 0-360
840845
if min(DS[model.dim_lon]) < 0:

0 commit comments

Comments
 (0)