From e28a6784309f98934c60688c25c6563fbb01b2ed Mon Sep 17 00:00:00 2001 From: algol Date: Thu, 16 Jul 2026 14:18:48 +0100 Subject: [PATCH] Injecting distortion cofficients into method --- httomo/cli.py | 26 ++++++++++++------- .../testing/omitted_required_param.yaml | 8 +++--- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/httomo/cli.py b/httomo/cli.py index 2974c9b1d..4f0fad9ce 100644 --- a/httomo/cli.py +++ b/httomo/cli.py @@ -430,7 +430,7 @@ def initialise_output_dir_copy_files_inject_defaults( ) -> None: """This function does the following: - creates output folder - - copies the distortion coefficient file (if provided) + - if distortion coefficient file is provided copies all parameters to yaml pipeline - injects omitted default parameters into the pipeline file - copies the YAML or JSON pipeline file """ @@ -443,12 +443,7 @@ def initialise_output_dir_copy_files_inject_defaults( # If pipeline is a file path, copy it to output directory if isinstance(pipeline, Path): pipeline_conf = yaml_loader(pipeline) - distortion_coeff_path = _get_distortion_coeff_path(pipeline_conf) - if distortion_coeff_path is not None: - shutil.copyfile( - distortion_coeff_path, - Path(httomo.globals.run_out_dir) / "dist_coeff.txt", - ) + _inject_distortion_coeff_values_into_method(pipeline_conf) path_to_pipeline = pipeline path_to_saved_pipeline = Path(httomo.globals.run_out_dir) / pipeline.name # if does_contain_sweep do not inject default parameters due to issue around "sweep" aliases in yaml @@ -489,12 +484,23 @@ def _substitute_omitted_default_values( return pipeline_conf -def _get_distortion_coeff_path(pipeline_conf: PipelineConfig) -> Union[None, Path]: - distortion_coeff_path = None +def _inject_distortion_coeff_values_into_method( + pipeline_conf: PipelineConfig, +) -> PipelineConfig: for method in pipeline_conf: if "distortion_correction" in method["method"]: distortion_coeff_path = method["parameters"]["metadata_path"] - return distortion_coeff_path + if distortion_coeff_path is not None: + # inject values from the text file into parameters of the method + with open(distortion_coeff_path) as f: + xcenter, ycenter, *list_fact = ( + float(line.split()[-1]) for line in f + ) + method["parameters"]["metadata_path"] = None + method["parameters"]["xcenter"] = xcenter + method["parameters"]["ycenter"] = ycenter + method["parameters"]["list_fact"] = list_fact + return pipeline_conf def generate_pipeline( diff --git a/tests/samples/pipeline_template_examples/testing/omitted_required_param.yaml b/tests/samples/pipeline_template_examples/testing/omitted_required_param.yaml index 1ec8f92f6..4cd523684 100644 --- a/tests/samples/pipeline_template_examples/testing/omitted_required_param.yaml +++ b/tests/samples/pipeline_template_examples/testing/omitted_required_param.yaml @@ -4,8 +4,8 @@ data_path: auto image_key_path: auto rotation_angles: auto -- method: distortion_correction_proj_discorpy - module_path: httomolibgpu.prep.alignment +- method: data_resampler + module_path: httomolibgpu.misc.morph parameters: - order: 3 - mode: constant + axis: auto + interpolation: linear \ No newline at end of file