fsl.utils.filetree.utils

class fsl.utils.filetree.utils.Part[source]

Bases: object

Individual part of a template

3 subclasses are defined:

  • Literal: piece of text

  • Required: required variable to fill in (between curly brackets)

  • Optional: part of text containing optional variables (between square brackets)

fill_known(variables) → Sequence[fsl.utils.filetree.utils.Part][source]

Fills in the given variables

optional_variables() → Set[fsl.utils.filetree.utils.Part][source]

Returns all variables in optional parts

required_variables() → Set[fsl.utils.filetree.utils.Part][source]

Returns all required variables

contains_optionals(variables: Set[Part] = None)[source]

Returns True if this part contains the optional variables

append_variables(variables: List[str])[source]

Appends the variables in this part to the provided list in order

class fsl.utils.filetree.utils.Literal(text: str)[source]

Bases: fsl.utils.filetree.utils.Part

class fsl.utils.filetree.utils.Required(var_name, var_formatting=None)[source]

Bases: fsl.utils.filetree.utils.Part

fill_known(variables)[source]

Fills in the given variables

required_variables()[source]

Returns all required variables

append_variables(variables)[source]

Appends the variables in this part to the provided list in order

class fsl.utils.filetree.utils.Optional(sub_template: fsl.utils.filetree.utils.Template)[source]

Bases: fsl.utils.filetree.utils.Part

fill_known(variables)[source]

Fills in the given variables

optional_variables()[source]

Returns all variables in optional parts

contains_optionals(variables=None)[source]

Returns True if this part contains the optional variables

append_variables(variables)[source]

Appends the variables in this part to the provided list in order

class fsl.utils.filetree.utils.Template(parts: Sequence[fsl.utils.filetree.utils.Part])[source]

Bases: object

Splits a template into its constituent parts

classmethod parse(text: str)fsl.utils.filetree.utils.Template[source]

Parses a text template into its constituent parts

Parameters

text – input template as string

Returns

same template split into its parts

optional_variables() → Set[str][source]

Set of optional variables

required_variables() → Set[str][source]

Set of required variables

ordered_variables() → Tuple[str][source]

Sequence of all variables in order (can contain duplicates)

fill_known(variables)fsl.utils.filetree.utils.Template[source]

Fill in the known variables

Any optional parts, where all variables have been filled will be automatically replaced

remove_optionals(optionals=None)fsl.utils.filetree.utils.Template[source]

Removes any optionals containing the provided variables (default: remove all)

resolve(variables) → str[source]

Resolves the template given a set of variables

Parameters

variables – mapping of variable names to values

Returns

cleaned string

get_all(variables, glob_vars=()) → Tuple[Dict[str, str]][source]

Gets all variables for files on disk matching the templates

Parameters
  • variables – (incomplete) mapping of variable names to values

  • glob_vars – sequence of undefined variables that can take any possible values when looking for matches on the disk

optional_subsets() → Iterator[fsl.utils.filetree.utils.Template][source]

Yields template sub-sets with every combination optional variables

extract_variables(filename, known_vars=None)[source]

Extracts the variable values from the filename

Parameters
  • filename – filename

  • known_vars – already known variables

Returns

dictionary from variable names to string representations (unused variables set to None)

fsl.utils.filetree.utils.resolve(template, variables)[source]

Resolves the template given a set of variables

Parameters
  • template – template

  • variables – mapping of variable names to values

Returns

cleaned string

fsl.utils.filetree.utils.get_all(template, variables, glob_vars=())[source]

Gets all variables matching the templates given the variables

Parameters
  • template – template

  • variables – (incomplete) mapping of variable names to values

  • glob_vars – sequence of undefined variables that can take any possible values when looking for matches on the disk If glob_vars contains any defined variables, it will be ignored.

Returns

sequence of variables

fsl.utils.filetree.utils.find_variables(template)[source]

Finds all the variables in the template

Parameters

template – full template

Returns

sequence of variables

fsl.utils.filetree.utils.optional_variables(template)[source]

Finds the variables that can be skipped

Parameters

template – full template

Returns

set of variables that are only present in optional parts of the string

fsl.utils.filetree.utils.extract_variables(template, filename, known_vars=None)[source]

Extracts the variable values from the filename

Parameters
  • template – template matching the given filename

  • filename – filename

  • known_vars – already known variables

Returns

dictionary from variable names to string representations (unused variables set to None)