From 270d8f08fbe6ed24d211037b0e892267b29bf3e6 Mon Sep 17 00:00:00 2001 From: danholdaway Date: Fri, 5 Dec 2025 09:26:44 -0500 Subject: [PATCH 1/6] Add option to override all filters with a global setting --- src/jcb/renderer.py | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/jcb/renderer.py b/src/jcb/renderer.py index 1104e16..61bbd4e 100644 --- a/src/jcb/renderer.py +++ b/src/jcb/renderer.py @@ -240,9 +240,46 @@ def render(self, algorithm): for key in keys_to_remove: del observer[key] + # Option to completely override all filters for a list of observations + # -------------------------------------------------------------------- + if 'replace_obs_filters' in self.template_dict: + + # Get dictionary replace_obs_filters + replace_obs_filters_dict = self.template_dict['replace_obs_filters'] + + # Get list of observations + obs_names = self.template_dict['observations'] + + # Get list of observations that have their filters replaces + obs_to_replace = replace_obs_filters_dict['observations'] + + # New filter dictionary + new_filters = replace_obs_filters_dict.get('override_filters', {}) + + # Loop over the observers and remove the non allowable components + for index, observer in enumerate(observers): + + # Get the obs name based on the list of observations + obs_name = obs_names[index] + + # Check whether to replace filters for this observation + if obs_name not in obs_to_replace: + continue + + # Remove any instance of obs fiters, obs prior filters, obs post filters, obs pre filters + for filter_key in ['obs filters', 'obs prior filters', + 'obs post filters', 'obs pre filters']: + if filter_key in observer: + del observer[filter_key] + + # Set new entry obs filters with the replace dictionary + observer['obs filters'] = new_filters + # Convert the rendered string to a dictionary return jedi_dict +# -------------------------------------------------------------------------------------------------- + def get_obs_engine(self, observation, component, script_input=None): """ Return obs engine based on whether the file exists or not. @@ -280,7 +317,6 @@ def get_obs_engine(self, observation, component, script_input=None): # -------------------------------------------------------------------------------------------------- - def render(template_dict: dict): """ From cbc06ac1a7ae0c26eab1c8329e8091ba0dc111e7 Mon Sep 17 00:00:00 2001 From: danholdaway Date: Fri, 5 Dec 2025 09:52:00 -0500 Subject: [PATCH 2/6] coding norms --- src/jcb/renderer.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/jcb/renderer.py b/src/jcb/renderer.py index 61bbd4e..f4619c7 100644 --- a/src/jcb/renderer.py +++ b/src/jcb/renderer.py @@ -266,9 +266,9 @@ def render(self, algorithm): if obs_name not in obs_to_replace: continue - # Remove any instance of obs fiters, obs prior filters, obs post filters, obs pre filters + # Remove any instance of filters for filter_key in ['obs filters', 'obs prior filters', - 'obs post filters', 'obs pre filters']: + 'obs post filters', 'obs pre filters']: if filter_key in observer: del observer[filter_key] @@ -315,8 +315,10 @@ def get_obs_engine(self, observation, component, script_input=None): f"{obsdatain_filename if obsdatain_filename is not None else 'N/A'}" ) + # -------------------------------------------------------------------------------------------------- + def render(template_dict: dict): """ From 1d3eecadf42b7a38b75a0da74774a7bc750061ea Mon Sep 17 00:00:00 2001 From: danholdaway Date: Fri, 5 Dec 2025 10:00:06 -0500 Subject: [PATCH 3/6] rdas is not complaint with jcb policies --- jcb_clients.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jcb_clients.yaml b/jcb_clients.yaml index b379e57..7894a85 100644 --- a/jcb_clients.yaml +++ b/jcb_clients.yaml @@ -2,6 +2,6 @@ gdas: git_url: noaa-emc/jcb-gdas git_ref: develop -rdas: - git_url: noaa-emc/jcb-rdas - git_ref: develop +#rdas: +# git_url: noaa-emc/jcb-rdas +# git_ref: develop From 4963b5b12b712ddb65dcb47c9830b624a8e59726 Mon Sep 17 00:00:00 2001 From: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Date: Fri, 5 Dec 2025 10:09:01 -0500 Subject: [PATCH 4/6] Update src/jcb/renderer.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/jcb/renderer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jcb/renderer.py b/src/jcb/renderer.py index f4619c7..cc8344b 100644 --- a/src/jcb/renderer.py +++ b/src/jcb/renderer.py @@ -250,7 +250,7 @@ def render(self, algorithm): # Get list of observations obs_names = self.template_dict['observations'] - # Get list of observations that have their filters replaces + # Get list of observations that have their filters replaced obs_to_replace = replace_obs_filters_dict['observations'] # New filter dictionary From 093609e2771c9a1f4646e155d82c56249b24502a Mon Sep 17 00:00:00 2001 From: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Date: Fri, 5 Dec 2025 10:09:16 -0500 Subject: [PATCH 5/6] Update src/jcb/renderer.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/jcb/renderer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jcb/renderer.py b/src/jcb/renderer.py index cc8344b..15bb81c 100644 --- a/src/jcb/renderer.py +++ b/src/jcb/renderer.py @@ -256,7 +256,7 @@ def render(self, algorithm): # New filter dictionary new_filters = replace_obs_filters_dict.get('override_filters', {}) - # Loop over the observers and remove the non allowable components + # Loop over the observers and replace filters for matching observations for index, observer in enumerate(observers): # Get the obs name based on the list of observations From eb2ab6dcbb2fe87e7b51d4e4493c1cc6f9a04024 Mon Sep 17 00:00:00 2001 From: Dan Holdaway <27729500+danholdaway@users.noreply.github.com> Date: Fri, 5 Dec 2025 10:09:31 -0500 Subject: [PATCH 6/6] Update src/jcb/renderer.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/jcb/renderer.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/jcb/renderer.py b/src/jcb/renderer.py index 15bb81c..b78de3c 100644 --- a/src/jcb/renderer.py +++ b/src/jcb/renderer.py @@ -257,11 +257,7 @@ def render(self, algorithm): new_filters = replace_obs_filters_dict.get('override_filters', {}) # Loop over the observers and replace filters for matching observations - for index, observer in enumerate(observers): - - # Get the obs name based on the list of observations - obs_name = obs_names[index] - + for observer, obs_name in zip(observers, obs_names): # Check whether to replace filters for this observation if obs_name not in obs_to_replace: continue