diff --git a/fsl/utils/filetree/__init__.py b/fsl/utils/filetree/__init__.py index 9d31383db6c525d926f9eeb5e558f530700a376c..8e0b7add9933f787a8d737928fc54b73a25dbb04 100644 --- a/fsl/utils/filetree/__init__.py +++ b/fsl/utils/filetree/__init__.py @@ -277,4 +277,4 @@ of the short variable names defined in the __author__ = 'Michiel Cottaar <Michiel.Cottaar@ndcn.ox.ac.uk>' from .filetree import FileTree, register_tree, MissingVariable -from .parse import tree_directories +from .parse import tree_directories, list_all_trees diff --git a/fsl/utils/filetree/parse.py b/fsl/utils/filetree/parse.py index c89b381fd38142158f78319c7b070a331bb875a5..11a8f1f221713b775caf35dfbfae7ba2f65102bb 100644 --- a/fsl/utils/filetree/parse.py +++ b/fsl/utils/filetree/parse.py @@ -1,7 +1,8 @@ +import glob import os.path as op from . import filetree from pathlib import PurePath -from typing import Tuple +from typing import Tuple, List import re @@ -26,6 +27,17 @@ def search_tree(name: str) -> str: raise ValueError("No file tree found for %s" % name) +def list_all_trees() -> List[str]: + """Return a list containing paths to all tree files that can be found in + :data:`tree_directories` + """ + trees = [] + for directory in tree_directories: + directory = op.abspath(directory) + trees.extend(glob.glob(op.join(directory, '*.tree'))) + return trees + + def read_line(line: str) -> Tuple[int, PurePath, str]: """ Parses line from the tree file