fsl.utils.filetree.query
This module contains the FileTreeQuery class, which can be used to
search for files in a directory described by a FileTree. A
FileTreeQuery object returns Match objects which each represent a
file that is described by the FileTree, and which is present in the
directory.
The following utility functions, used by the FileTreeQuery class, are also
defined in this module:
Scans the directory of the given |
|
Identifies the |
- class fsl.utils.filetree.query.FileTreeQuery(tree)[source]
Bases:
objectThe
FileTreeQueryclass uses aFileTreeto search a directory for files which match a specific query.A
FileTreeQueryscans the contents of a directory which is described by aFileTree, and identifies all file types (a.k.a. templates or short names) that are present, and the values of variables within each short name that are present. Thequery()method can be used to retrieve files which match a specific template, and variable values.The
query()method returns a collection ofMatchobjects, each of which represents one file which matches the query.Example usage:
>>> from fsl.utils.filetree import FileTree, FileTreeQuery >>> tree = FileTree.read('bids_raw', './my_bids_data') >>> query = FileTreeQuery(tree) >>> query.axes('anat_image') ['acq', 'ext', 'modality', 'participant', 'rec', 'run_index', 'session'] >>> query.variables('anat_image') {'acq': [None], 'ext': ['.nii.gz'], 'modality': ['T1w', 'T2w'], 'participant': ['01', '02', '03'], 'rec': [None], 'run_index': [None, '01', '02', '03'], 'session': [None]} >>> query.query('anat_image', participant='01') [Match(./my_bids_data/sub-01/anat/sub-01_T1w.nii.gz), Match(./my_bids_data/sub-01/anat/sub-01_T2w.nii.gz)]
Matches for templates contained within sub-trees are referred to by constructing a hierarchical path from the sub-tree template name(s), and the template name - see the
Match.full_name()method.- __init__(tree)[source]
Create a
FileTreeQuery. The contents of the tree directory are scanned via thescan()function, which may take some time for large data sets.- Parameters:
tree – The
FileTreeobject
- axes(template) List[str][source]
Returns a list containing the names of variables present in files of the given
templatetype, in the same order of the axes ofMatcharrays that are returned by thequery()method.
- variables(template=None) Dict[str, List][source]
Return a dict of
{variable : [values]}mappings. This dict describes all variables and their possible values in the tree.If a
templateis specified, only variables which are present in files of thattemplatetype are returned.
- property templates: List[str]
Returns a list containing all templates of the
FileTreethat are present in the directory.
- query(template, asarray=False, **variables)[source]
Search for files of the given
template, which match the specifiedvariables. All hits are returned for variables that are unspecified.- Parameters:
All other arguments are assumed to be
variable=valuepairs, used to restrict which matches are returned. All values are returned for variables that are not specified, or variables which are given a value of'*'.- Returns:
A list of
Matchobjects, (or anumpy.arrayifasarray=True).
- __dict__ = mappingproxy({'__module__': 'fsl.utils.filetree.query', '__doc__': "The ``FileTreeQuery`` class uses a :class:`.FileTree` to search\n a directory for files which match a specific query.\n\n A ``FileTreeQuery`` scans the contents of a directory which is described\n by a :class:`.FileTree`, and identifies all file types (a.k.a. *templates*\n or *short names*) that are present, and the values of variables within each\n short name that are present. The :meth:`query` method can be used to\n retrieve files which match a specific template, and variable values.\n\n The :meth:`query` method returns a collection of :class:`Match` objects,\n each of which represents one file which matches the query.\n\n Example usage::\n\n >>> from fsl.utils.filetree import FileTree, FileTreeQuery\n\n >>> tree = FileTree.read('bids_raw', './my_bids_data')\n >>> query = FileTreeQuery(tree)\n\n >>> query.axes('anat_image')\n ['acq', 'ext', 'modality', 'participant', 'rec', 'run_index',\n 'session']\n\n >>> query.variables('anat_image')\n {'acq': [None],\n 'ext': ['.nii.gz'],\n 'modality': ['T1w', 'T2w'],\n 'participant': ['01', '02', '03'],\n 'rec': [None],\n 'run_index': [None, '01', '02', '03'],\n 'session': [None]}\n\n >>> query.query('anat_image', participant='01')\n [Match(./my_bids_data/sub-01/anat/sub-01_T1w.nii.gz),\n Match(./my_bids_data/sub-01/anat/sub-01_T2w.nii.gz)]\n\n\n Matches for templates contained within sub-trees are referred to by\n constructing a hierarchical path from the sub-tree template name(s),\n and the template name - see the :meth:`Match.full_name` method.\n ", '__init__': <function FileTreeQuery.__init__>, 'axes': <function FileTreeQuery.axes>, 'variables': <function FileTreeQuery.variables>, 'tree': <property object>, 'templates': <property object>, 'query': <function FileTreeQuery.query>, '__dict__': <attribute '__dict__' of 'FileTreeQuery' objects>, '__weakref__': <attribute '__weakref__' of 'FileTreeQuery' objects>, '__annotations__': {}})
- __module__ = 'fsl.utils.filetree.query'
- __weakref__
list of weak references to the object (if defined)
- class fsl.utils.filetree.query.Match(filename, template, tree, variables)[source]
Bases:
objectA
Matchobject represents a file with a name matching a template in aFileTree. Thescan()function andFileTree.query()method both returnMatchobjects.- __init__(filename, template, tree, variables)[source]
Create a
Matchobject. All arguments are added as attributes.- Parameters:
filename – name of existing file
template – template identifier
tree –
FileTreewhich contains thisMatchvariables – Dictionary of
{variable : value}mappings containing all variables present in the file name.
- property filename
- property template
- property full_name
The
full_nameof aMatchis a combination of thetemplate(i.e. the matched template), and the name(s) of the relevantFileTreeobjects.It allows one to unamiguously identify the location of a
Matchin aFileTreehierarchy, where the sameshort_namemay be used in different sub-trees.
- property tree
- property variables
- __dict__ = mappingproxy({'__module__': 'fsl.utils.filetree.query', '__doc__': 'A ``Match`` object represents a file with a name matching a template in\n a ``FileTree``. The :func:`scan` function and :meth:`FileTree.query`\n method both return ``Match`` objects.\n ', '__init__': <function Match.__init__>, 'filename': <property object>, 'template': <property object>, 'full_name': <property object>, 'tree': <property object>, 'variables': <property object>, '__eq__': <function Match.__eq__>, '__lt__': <function Match.__lt__>, '__repr__': <function Match.__repr__>, '__str__': <function Match.__str__>, '__dict__': <attribute '__dict__' of 'Match' objects>, '__weakref__': <attribute '__weakref__' of 'Match' objects>, '__hash__': None, '__gt__': <function _gt_from_lt>, '__le__': <function _le_from_lt>, '__ge__': <function _ge_from_lt>, '__annotations__': {}})
- __ge__(other, NotImplemented=NotImplemented)
Return a >= b. Computed by @total_ordering from (not a < b).
- __gt__(other, NotImplemented=NotImplemented)
Return a > b. Computed by @total_ordering from (not a < b) and (a != b).
- __hash__ = None
- __le__(other, NotImplemented=NotImplemented)
Return a <= b. Computed by @total_ordering from (a < b) or (a == b).
- __module__ = 'fsl.utils.filetree.query'
- __weakref__
list of weak references to the object (if defined)
- fsl.utils.filetree.query.scan(tree: FileTree) List[Match][source]
Scans the directory of the given
FileTreeto find all files which match a tree template.
- fsl.utils.filetree.query.allVariables(tree: FileTree, matches: List[Match]) Tuple[Dict[str, List], Dict[str, List]][source]
Identifies the
FileTreevariables which are actually represented in files in the directory.- Parameters:
filetree – The
FileTreeobjectmatches – list of
Matchobjects (e.g. as returned byscan())
- Returns:
a tuple containing two dicts:
A dict of
{ variable : [values] }mappings containing all variables and their possible values present in the given list ofMatchobjects.A dict of
{ full_name : [variables] }mappings, containing the variables which are relevant to each template.