From 292f73afe1bd8e8b2801a15dd1d7284a2ccebd80 Mon Sep 17 00:00:00 2001 From: sgpearse Date: Mon, 6 Jul 2026 11:03:14 -0600 Subject: [PATCH 1/2] Rename land_sea_mask.nc to land_mask.nc --- makani/models/model_package.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makani/models/model_package.py b/makani/models/model_package.py index 5d04bb96..4e63c026 100644 --- a/makani/models/model_package.py +++ b/makani/models/model_package.py @@ -48,7 +48,7 @@ class LocalPackage: MEANS_FILE = "global_means.npy" STDS_FILE = "global_stds.npy" OROGRAPHY_FILE = "orography.nc" - LANDMASK_FILE = "land_sea_mask.nc" + LANDMASK_FILE = "land_mask.nc" SOILTYPE_FILE = "soil_type.nc" def __init__(self, root): From d24e6d52f95f0b010af4dce48a8fdf02b3f218f7 Mon Sep 17 00:00:00 2001 From: Thorsten Kurth Date: Mon, 6 Jul 2026 23:54:12 -0700 Subject: [PATCH 2/2] Normalize static/normalization file names in save_model_package save_model_package copied files into the package using the source basename, while LocalPackage reads them back via hardcoded constants (LANDMASK_FILE, OROGRAPHY_FILE, etc.). Any source file not named exactly like the constant produced a package that failed to load. Write the files under the canonical LocalPackage names so save/load stay consistent regardless of source filenames on a given system. Co-Authored-By: Claude Opus 4.8 (1M context) --- makani/models/model_package.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/makani/models/model_package.py b/makani/models/model_package.py index 4e63c026..b695bc88 100644 --- a/makani/models/model_package.py +++ b/makani/models/model_package.py @@ -184,24 +184,27 @@ def save_model_package(params): msg = json.dumps(params.to_dict(), indent=4, sort_keys=True) f.write(msg) + # copy static data into the package under the canonical file names expected + # by LocalPackage, so packages are self-consistent regardless of how the + # source files happen to be named on a given system if params.get("add_orography", False): - shutil.copy(params.orography_path, os.path.join(params.experiment_dir, os.path.basename(params.orography_path))) + shutil.copy(params.orography_path, os.path.join(params.experiment_dir, LocalPackage.OROGRAPHY_FILE)) if params.get("add_landmask", False): - shutil.copy(params.landmask_path, os.path.join(params.experiment_dir, os.path.basename(params.landmask_path))) + shutil.copy(params.landmask_path, os.path.join(params.experiment_dir, LocalPackage.LANDMASK_FILE)) if params.get("add_soiltype", False): - shutil.copy(params.soiltype_path, os.path.join(params.experiment_dir, os.path.basename(params.soiltype_path))) + shutil.copy(params.soiltype_path, os.path.join(params.experiment_dir, LocalPackage.SOILTYPE_FILE)) - # always save out all normalization files + # always save out all normalization files under their canonical names if params.get("global_means_path", None) is not None: - shutil.copy(params.global_means_path, os.path.join(params.experiment_dir, os.path.basename(params.global_means_path))) + shutil.copy(params.global_means_path, os.path.join(params.experiment_dir, LocalPackage.MEANS_FILE)) if params.get("global_stds_path", None) is not None: - shutil.copy(params.global_stds_path, os.path.join(params.experiment_dir, os.path.basename(params.global_stds_path))) + shutil.copy(params.global_stds_path, os.path.join(params.experiment_dir, LocalPackage.STDS_FILE)) if params.get("min_path", None) is not None: - shutil.copy(params.min_path, os.path.join(params.experiment_dir, os.path.basename(params.min_path))) + shutil.copy(params.min_path, os.path.join(params.experiment_dir, LocalPackage.MINS_FILE)) if params.get("max_path", None) is not None: - shutil.copy(params.max_path, os.path.join(params.experiment_dir, os.path.basename(params.max_path))) + shutil.copy(params.max_path, os.path.join(params.experiment_dir, LocalPackage.MAXS_FILE)) # write out earth2mip metadata.json fcn_mip_data = {