Source code for AFQ.tasks.utils
from AFQ.utils.path import drop_extension
import os.path as op
import inspect
__all__ = ["get_fname", "with_name", "get_base_fname"]
[docs]def get_base_fname(output_dir, dwi_data_file):
# setup up path and base file name for outputs
# remove suffix and desc from dwi data file name
used_key_list = ["desc", "space", "to", "from"]
dwi_dfile_no_ext = op.join(
output_dir,
drop_extension(op.basename(dwi_data_file)))
fname = op.dirname(dwi_dfile_no_ext) + "/"
for key_val_pair in op.basename(dwi_dfile_no_ext).split("_"):
if "-" in key_val_pair:
key = key_val_pair.split("-")[0]
if key not in used_key_list:
fname = fname + key_val_pair + "_"
fname = fname[:-1]
return fname
[docs]def get_fname(base_fname, suffix,
tracking_params=None, segmentation_params=None):
fname = base_fname
if tracking_params is not None and 'odf_model' in tracking_params:
odf_model = tracking_params['odf_model']
directions = tracking_params['directions']
fname = fname + (
f'_coordsys-RASMM_trkmethod-{directions+odf_model}'
)
if segmentation_params is not None and 'seg_algo' in segmentation_params:
seg_algo = segmentation_params['seg_algo']
fname = fname + f"_recogmethod-{seg_algo}"
return fname + suffix
# Turn list of tasks into dictionary with names for each task
[docs]def with_name(task_list):
return {f"{task.function.__name__}_res": task for task in task_list}
def get_default_args(func):
return {
k: v.default
for k, v in inspect.signature(func).parameters.items()
if v.default is not inspect.Parameter.empty
}
def str_to_desc(string):
return string.replace("-", "").replace("_", "").replace(" ", "")