Source code for unravel.image_tools.unique_intensities

#!/usr/bin/env python3

"""
Use ``img_unique`` (``unique``) from UNRAVEL to print a list of unique intensities greater than 0.

Usage for printing all non-zero intensities:
--------------------------------------------
    img_unique -i path/image [-v]

Usage for printing the number of voxels for each intensity that is present:
---------------------------------------------------------------------------
    img_unique -i path/image -s [-v]

Usage for printing unique intensities w/ a min cluster size > 100 voxels:
-------------------------------------------------------------------------
    img_unique -i path/image -min 100 [-v]
"""

import nibabel as nib
import numpy as np
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.img_io import load_3D_img
from unravel.core.img_tools import label_IDs
from unravel.core.utils import log_command, verbose_start_msg, verbose_end_msg


[docs] def parse_args(): parser = RichArgumentParser(formatter_class=SuppressMetavar, add_help=False, docstring=__doc__) reqs = parser.add_argument_group('Required arguments') reqs.add_argument('-i', '--input', help='path/image', required=True, action=SM) opts = parser.add_argument_group('Optional arguments') opts.add_argument('-min', '--min_size', help='Min label size in voxels (Default: 1)', default=1, action=SM, type=int) opts.add_argument('-s', '--print_sizes', help='Print label IDs and sizes. Default: False', default=False, action='store_true') general = parser.add_argument_group('General arguments') general.add_argument('-v', '--verbose', help='Increase verbosity. Default: False', action='store_true', default=False) return parser.parse_args()
[docs] @log_command def main(): install() args = parse_args() Configuration.verbose = args.verbose verbose_start_msg() # Print unique intensities in image img = load_3D_img(args.input, verbose=args.verbose) uniq_intensities = label_IDs(img, min_voxel_count=args.min_size, print_IDs=True, print_sizes=args.print_sizes) verbose_end_msg()
if __name__ == '__main__': main()