From e2bfd0d94fdf7c109e60354e709e163ed058fd68 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Wed, 16 Jan 2019 08:26:37 +0000 Subject: [PATCH] ENH: New convnience function to list all known trees --- fsl/utils/filetree/__init__.py | 2 +- fsl/utils/filetree/parse.py | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/fsl/utils/filetree/__init__.py b/fsl/utils/filetree/__init__.py index 9d31383db..8e0b7add9 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 c89b381fd..11a8f1f22 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 -- GitLab