From 9d43638a03dcdb8f1aa265f3206279c58f3857e0 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Wed, 1 Oct 2025 15:00:26 +0000 Subject: [PATCH 1/8] break out ens and parametric bkgerr stats --- ush/python/pygfs/task/marine_bmat.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index c9707a47469..bd4ebf97e65 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -214,10 +214,19 @@ def finalize(self: Task) -> None: # TODO(AFE) the two renames are to accomodate yaml settings in var task, which should changed # ocean diag B - os.rename(os.path.join(self.task_config.DATAstaticb, f"ocn.bkgerr_stddev.incr.{self.task_config.MARINE_WINDOW_END_ISO}.nc"), - os.path.join(self.task_config.DATAstaticb, f"ocn.bkgerr_stddev.nc")) - os.rename(os.path.join(self.task_config.DATAstaticb, f"ice.bkgerr_stddev.incr.{self.task_config.MARINE_WINDOW_END_ISO}.nc"), - os.path.join(self.task_config.DATAstaticb, f"ice.bkgerr_stddev.nc")) + os.rename(os.path.join(self.task_config.DATAstaticb, + f"ocn.bkgerr_parametric_stddev.incr.{self.task_config.MARINE_WINDOW_END_ISO}.nc"), + os.path.join(self.task_config.DATAstaticb, f"ocn.bkgerr_parametric_stddev.nc")) + os.rename(os.path.join(self.task_config.DATAstaticb, + f"ice.bkgerr_parametric_stddev.incr.{self.task_config.MARINE_WINDOW_END_ISO}.nc"), + os.path.join(self.task_config.DATAstaticb, f"ice.bkgerr_parametric_stddev.nc")) + if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: + os.rename(os.path.join(self.task_config.DATAstaticb, + f"ocn.bkgerr_ens_stddev.incr.{self.task_config.MARINE_WINDOW_BEGIN_ISO}.nc"), + os.path.join(self.task_config.DATAstaticb, f"ocn.bkgerr_ens_stddev.nc")) + os.rename(os.path.join(self.task_config.DATAstaticb, + f"ice.bkgerr_ens_stddev.incr.{self.task_config.MARINE_WINDOW_BEGIN_ISO}.nc"), + os.path.join(self.task_config.DATAstaticb, f"ice.bkgerr_ens_stddev.nc")) # Save output files to COM logger.info(f"Copy files to ROTDIR") From 25fa1e07932c3bca747de7877963b00159bba263 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Wed, 1 Oct 2025 15:19:12 +0000 Subject: [PATCH 2/8] archiving --- parm/archive/gdasocean_analysis.yaml.j2 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/parm/archive/gdasocean_analysis.yaml.j2 b/parm/archive/gdasocean_analysis.yaml.j2 index 16ae947d645..dd2bcbce0b4 100644 --- a/parm/archive/gdasocean_analysis.yaml.j2 +++ b/parm/archive/gdasocean_analysis.yaml.j2 @@ -18,8 +18,8 @@ gdasocean_analysis: {% endfor %} # static background error - - '{{ COMIN_OCEAN_BMATRIX | relpath(ROTDIR) }}/{{ head }}ocean.bkgerr_ens_stddev.nc' - - '{{ COMIN_ICE_BMATRIX | relpath(ROTDIR) }}/{{ head }}ice.bkgerr_ens_stddev.nc' + - '{{ COMIN_OCEAN_BMATRIX | relpath(ROTDIR) }}/{{ head }}ocean.bkgerr_parametric_stddev.nc' + - '{{ COMIN_ICE_BMATRIX | relpath(ROTDIR) }}/{{ head }}ice.bkgerr_parametric_stddev.nc' # ensemble background error {% if NMEM_ENS > 2 %} @@ -27,6 +27,8 @@ gdasocean_analysis: - '{{ COMIN_OCEAN_BMATRIX | relpath(ROTDIR) }}/{{ head }}ocean.ens_weights.nc' - '{{ COMIN_OCEAN_BMATRIX | relpath(ROTDIR) }}/{{ head }}ocean.recentering_error.nc' - '{{ COMIN_ICE_BMATRIX | relpath(ROTDIR) }}/{{ head }}ice.recentering_error.nc' + - '{{ COMIN_OCEAN_BMATRIX | relpath(ROTDIR) }}/{{ head }}ocean.bkgerr_ens_stddev.nc' + - '{{ COMIN_ICE_BMATRIX | relpath(ROTDIR) }}/{{ head }}ice.bkgerr_ens_stddev.nc' {% for diag_type in ["ssh_steric_stddev", "ssh_unbal_stddev", "ssh_total_stddev", "steric_explained_variance"] %} - '{{ COMIN_OCEAN_BMATRIX | relpath(ROTDIR) }}/{{ head }}ocean.{{ diag_type }}.nc' {% endfor %} @@ -37,4 +39,4 @@ gdasocean_analysis: optional: # obs space diags - '{{ COMIN_OCEAN_ANALYSIS | relpath(ROTDIR) }}/diags/{{ head }}ocn.*.stats.csv' - - '{{ COMIN_OCEAN_ANALYSIS | relpath(ROTDIR) }}/diags/*.nc4' \ No newline at end of file + - '{{ COMIN_OCEAN_ANALYSIS | relpath(ROTDIR) }}/diags/*.nc4' From 1f30a6251df6159d3d0406701a1b0af73aca8827 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Thu, 2 Oct 2025 16:44:49 +0000 Subject: [PATCH 3/8] update gdasapp hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index 77f286df1e6..f7cc00dd58a 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit 77f286df1e640551ec23b0909adf71fd5f2c57e5 +Subproject commit f7cc00dd58a21c7f6ada81824ecc5433997a71e4 From 516911cb3f1a6792075eed9a785d3839dddfc933 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Thu, 2 Oct 2025 17:05:04 +0000 Subject: [PATCH 4/8] change comment --- ush/python/pygfs/task/marine_bmat.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index bd4ebf97e65..c97acabdd21 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -212,7 +212,7 @@ def finalize(self: Task) -> None: None """ - # TODO(AFE) the two renames are to accomodate yaml settings in var task, which should changed + # TODO(AFE) the following should probably be a jinja template # ocean diag B os.rename(os.path.join(self.task_config.DATAstaticb, f"ocn.bkgerr_parametric_stddev.incr.{self.task_config.MARINE_WINDOW_END_ISO}.nc"), From 59bd32dd50519781ae091bcdeb9dd17569c8e2a4 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Thu, 2 Oct 2025 19:13:59 +0000 Subject: [PATCH 5/8] update gdasapp hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index f7cc00dd58a..eea6c10bd34 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit f7cc00dd58a21c7f6ada81824ecc5433997a71e4 +Subproject commit eea6c10bd349ca05a4119e2287bf35604eb6cc37 From 1782240559ee23ae264e4df7c3d64234019e9b73 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 3 Oct 2025 15:37:59 +0000 Subject: [PATCH 6/8] jinjafy renaming --- dev/parm/config/gfs/config.marinebmat | 1 + ush/python/pygfs/task/marine_bmat.py | 18 +++--------------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/dev/parm/config/gfs/config.marinebmat b/dev/parm/config/gfs/config.marinebmat index a62d96ab113..6ab92953cce 100644 --- a/dev/parm/config/gfs/config.marinebmat +++ b/dev/parm/config/gfs/config.marinebmat @@ -10,5 +10,6 @@ source "${EXPDIR}/config.resources" marinebmat export JEDI_CONFIG_YAML="${PARMgfs}/gdas/marine/marine_bmat_jedi_config.yaml.j2" export SAVE_YAML="${PARMgfs}/gdas/marine/marine_bmat_save.yaml.j2" +export COPY_BMAT_BKGERR_YAML="${PARMgfs}/gdas/marine/marine_bmat_copy_bkgerr.yaml.j2" echo "END: config.marinebmat" diff --git a/ush/python/pygfs/task/marine_bmat.py b/ush/python/pygfs/task/marine_bmat.py index c97acabdd21..ab32fc88bdf 100644 --- a/ush/python/pygfs/task/marine_bmat.py +++ b/ush/python/pygfs/task/marine_bmat.py @@ -212,21 +212,9 @@ def finalize(self: Task) -> None: None """ - # TODO(AFE) the following should probably be a jinja template - # ocean diag B - os.rename(os.path.join(self.task_config.DATAstaticb, - f"ocn.bkgerr_parametric_stddev.incr.{self.task_config.MARINE_WINDOW_END_ISO}.nc"), - os.path.join(self.task_config.DATAstaticb, f"ocn.bkgerr_parametric_stddev.nc")) - os.rename(os.path.join(self.task_config.DATAstaticb, - f"ice.bkgerr_parametric_stddev.incr.{self.task_config.MARINE_WINDOW_END_ISO}.nc"), - os.path.join(self.task_config.DATAstaticb, f"ice.bkgerr_parametric_stddev.nc")) - if self.task_config.DOHYBVAR_OCN == "YES" or self.task_config.NMEM_ENS >= 2: - os.rename(os.path.join(self.task_config.DATAstaticb, - f"ocn.bkgerr_ens_stddev.incr.{self.task_config.MARINE_WINDOW_BEGIN_ISO}.nc"), - os.path.join(self.task_config.DATAstaticb, f"ocn.bkgerr_ens_stddev.nc")) - os.rename(os.path.join(self.task_config.DATAstaticb, - f"ice.bkgerr_ens_stddev.incr.{self.task_config.MARINE_WINDOW_BEGIN_ISO}.nc"), - os.path.join(self.task_config.DATAstaticb, f"ice.bkgerr_ens_stddev.nc")) + logger.info(f"Copying background error files to new filenames") + bkgerr_list = parse_j2yaml(self.task_config.COPY_BMAT_BKGERR_YAML, self.task_config) + FileHandler(bkgerr_list).sync() # Save output files to COM logger.info(f"Copy files to ROTDIR") From a1fe0db8f8885b4fd99b99da1f9a7fe0d0115d7b Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 3 Oct 2025 17:06:55 +0000 Subject: [PATCH 7/8] changed ens to parametric --- parm/archive/gfsocean_analysis.yaml.j2 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parm/archive/gfsocean_analysis.yaml.j2 b/parm/archive/gfsocean_analysis.yaml.j2 index adca377104b..8bfef48b108 100644 --- a/parm/archive/gfsocean_analysis.yaml.j2 +++ b/parm/archive/gfsocean_analysis.yaml.j2 @@ -19,8 +19,8 @@ gfsocean_analysis: {% endfor %} # static background error - - '{{ COMIN_OCEAN_BMATRIX | relpath(ROTDIR) }}/{{ head }}ocean.bkgerr_ens_stddev.nc' - - '{{ COMIN_ICE_BMATRIX | relpath(ROTDIR) }}/{{ head }}ice.bkgerr_ens_stddev.nc' + - '{{ COMIN_OCEAN_BMATRIX | relpath(ROTDIR) }}/{{ head }}ocean.bkgerr_parametric_stddev.nc' + - '{{ COMIN_ICE_BMATRIX | relpath(ROTDIR) }}/{{ head }}ice.bkgerr_parametric_stddev.nc' # runtime configs - '{{ COMIN_CONF | relpath(ROTDIR) }}/*.yaml' From 33fee7215460fb80c99eea693e47c2fd9359cfa9 Mon Sep 17 00:00:00 2001 From: AndrewEichmann-NOAA Date: Fri, 3 Oct 2025 17:09:45 +0000 Subject: [PATCH 8/8] updating gdasapp hash --- sorc/gdas.cd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sorc/gdas.cd b/sorc/gdas.cd index eea6c10bd34..fe812db8d8a 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit eea6c10bd349ca05a4119e2287bf35604eb6cc37 +Subproject commit fe812db8d8aa9a91f97ae1c97c212aad4b095c4f