From 4c4fdd2d7627d1393e980e22949dc816f2d49ad4 Mon Sep 17 00:00:00 2001 From: Tom David Mueller Date: Tue, 23 Dec 2025 16:21:39 +0100 Subject: [PATCH] add convenience function for retrieving parameters --- src/workflow/ParameterManager.py | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/workflow/ParameterManager.py b/src/workflow/ParameterManager.py index 4348da7c..e517bfb0 100644 --- a/src/workflow/ParameterManager.py +++ b/src/workflow/ParameterManager.py @@ -98,6 +98,40 @@ def get_parameters_from_json(self) -> dict: st.error("**ERROR**: Attempting to load an invalid JSON parameter file. Reset to defaults.") return {} + def get_topp_parameters(self, tool: str) -> dict: + """ + Get all parameters for a TOPP tool, merging defaults with user values. + + Args: + tool: Name of the TOPP tool (e.g., "CometAdapter") + + Returns: + Dict with parameter names as keys (without tool prefix) and their values. + Returns empty dict if ini file doesn't exist. + """ + ini_path = Path(self.ini_dir, f"{tool}.ini") + if not ini_path.exists(): + return {} + + # Load defaults from ini file + param = poms.Param() + poms.ParamXMLFile().load(str(ini_path), param) + + # Build dict from ini (extract short key names) + prefix = f"{tool}:1:" + full_params = {} + for key in param.keys(): + key_str = key.decode() if isinstance(key, bytes) else str(key) + if prefix in key_str: + short_key = key_str.split(prefix, 1)[1] + full_params[short_key] = param.getValue(key) + + # Override with user-modified values from JSON + user_params = self.get_parameters_from_json().get(tool, {}) + full_params.update(user_params) + + return full_params + def reset_to_default_parameters(self) -> None: """ Resets the parameters to their default values by deleting the custom parameters