Source code for unravel.voxel_stats.match_files

#!/usr/bin/env python3

"""
Use ``vstats_match_files`` or ``match_files`` from UNRAVEL to match files and print the order.

Note:
    - This is useful for noting group order in ``vstats``.

Usage:
------
    vstats_match_files [-i path/<asterisk>.nii.gz or glob pattern(s) to match] [-idx] [-v]
"""

from pathlib import Path
from rich import print
from rich.traceback import install

from unravel.core.help_formatter import RichArgumentParser, SuppressMetavar, SM
from unravel.core.config import Configuration
from unravel.core.utils import log_command, match_files, verbose_start_msg, verbose_end_msg


[docs] def parse_args(): parser = RichArgumentParser(formatter_class=SuppressMetavar, add_help=False, docstring=__doc__) opts = parser.add_argument_group('Optional arguments') opts.add_argument('-i', '--input', help="path/*.nii.gz for input images or glob pattern(s) to match. Default: '*.nii.gz'", nargs='*', default=['*.nii.gz'], action=SM) opts.add_argument('-idx', '--index', help='Print the index of each matched file. Default: False', action='store_true', default=False) general = parser.add_argument_group('General arguments') general.add_argument('-v', '--verbose', help='Increase verbosity. Default: False', default=False, action='store_true') return parser.parse_args()
[docs] @log_command def main(): install() args = parse_args() Configuration.verbose = args.verbose verbose_start_msg() images = match_files(args.input) print("\nMatched files in this order:\n") if args.index: for i, image in enumerate(images): print(f"{i}: {image.name}") else: for image in images: print(f"{image.name}") verbose_end_msg()
if __name__ == '__main__': main()