From 827b38cf9d949fa2ebea675afd96f4a5785d83d4 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Thu, 28 Sep 2023 10:46:26 -0400 Subject: [PATCH] Make "Used" to contain only unique values and sort them --- bids_prov/afni/afni_parser.py | 3 +++ bids_prov/fsl/fsl_parser.py | 3 +++ bids_prov/spm/spm_parser.py | 3 +++ 3 files changed, 9 insertions(+) diff --git a/bids_prov/afni/afni_parser.py b/bids_prov/afni/afni_parser.py index 6e1415216..0980f05e1 100644 --- a/bids_prov/afni/afni_parser.py +++ b/bids_prov/afni/afni_parser.py @@ -219,6 +219,9 @@ def build_records(commands_bloc: list, agent_id: str, verbose: bool = False): else: activity["Used"].append(existing_input["@id"]) + # Order does not matter and then makes sense to include only unique values + activity["Used"] = sorted(set(activity["Used"])) + for output_path in outputs: records["Entities"].append( { diff --git a/bids_prov/fsl/fsl_parser.py b/bids_prov/fsl/fsl_parser.py index d9ddaa454..0da509751 100644 --- a/bids_prov/fsl/fsl_parser.py +++ b/bids_prov/fsl/fsl_parser.py @@ -502,6 +502,9 @@ def build_records(groups: Mapping[str, List[str]], agent_id: str): else: a["Used"].append(existing_input["@id"]) + # Order does not matter and then makes sense to include only unique values + a["Used"] = sorted(set(a["Used"])) + for output_path in outputs: # output_name = output_path.replace("/", "_") # TODO records["Entities"].append( diff --git a/bids_prov/spm/spm_parser.py b/bids_prov/spm/spm_parser.py index d6580f493..7306192cb 100644 --- a/bids_prov/spm/spm_parser.py +++ b/bids_prov/spm/spm_parser.py @@ -381,6 +381,9 @@ def get_records(task_groups: dict, agent_id: str, verbose=False) -> dict: param_value = right_ if not right_.startswith("[") else right_.replace(" ", ", ") params[param_name] = param_value # example : [4 2] becomes [4, 2] + # Order does not matter and then makes sense to include only unique values + activity["Used"] = sorted(set(activity["Used"])) + if params: activity["Parameters"] = params