コード例 #1
0
ファイル: __main__.py プロジェクト: zeydabadi/gif_your_nifti
def main():
    """Commandline interface."""
    parser = argparse.ArgumentParser()

    parser.add_argument('filename',
                        metavar='path',
                        nargs='+',
                        help="Path to image. Multiple paths can be provided.")
    parser.add_argument(
        '--mode',
        type=str,
        required=False,
        metavar=cfg.mode,
        default=cfg.mode,
        help="Gif creation mode. Available options are: 'normal', \
        'pseudocolor', 'depth', 'rgb'")
    parser.add_argument('--fps',
                        type=int,
                        required=False,
                        metavar=cfg.fps,
                        default=cfg.fps,
                        help="Frames per second.")
    parser.add_argument('--size',
                        type=float,
                        required=False,
                        metavar=cfg.size,
                        default=cfg.size,
                        help="Image resizing factor.")
    parser.add_argument(
        '--cmap',
        type=str,
        required=False,
        metavar=cfg.cmap,
        default=cfg.cmap,
        help="Color map. Used only in combination with 'pseudocolor' mode.")

    args = parser.parse_args()
    cfg.mode = (args.mode).lower()
    cfg.size = args.size
    cfg.fps = args.fps
    cfg.cmap = args.cmap

    # Welcome message
    welcome_str = '{} {}'.format('gif_your_nifti', __version__)
    welcome_decor = '=' * len(welcome_str)
    print('{}\n{}\n{}'.format(welcome_decor, welcome_str, welcome_decor))

    print('Selections:')
    print('  mode = {}'.format(cfg.mode))
    print('  size = {}'.format(cfg.size))
    print('  fps  = {}'.format(cfg.fps))

    # Determine gif creation mode
    if cfg.mode in ['normal', 'pseudocolor', 'depth']:
        for f in args.filename:
            if cfg.mode == 'normal':
                core.write_gif_normal(f, cfg.size, cfg.fps)
            elif cfg.mode == 'pseudocolor':
                print('  cmap = {}'.format(cfg.cmap))
                core.write_gif_pseudocolor(f, cfg.size, cfg.fps, cfg.cmap)
            elif cfg.mode == 'depth':
                core.write_gif_depth(f, cfg.size, cfg.fps)

    elif cfg.mode == 'rgb':
        if len(args.filename) != 3:
            raise ValueError('RGB mode requires 3 input files.')
        else:
            core.write_gif_rgb(args.filename[0], args.filename[1],
                               args.filename[2], cfg.size, cfg.fps)
    else:
        raise ValueError("Unrecognized mode.")

    print('Finished.')
コード例 #2
0
def main():
    """Commandline interface."""
    parser = argparse.ArgumentParser()

    parser.add_argument('filename',
                        metavar='path',
                        nargs='+',
                        help="Path to image. Multiple paths can be provided.")
    parser.add_argument(
        '--mode',
        type=str,
        required=False,
        metavar=cfg.mode,
        default=cfg.mode,
        help="Gif creation mode. Available options are: 'normal', \
        'pseudocolor', 'depth', 'rgb'")
    parser.add_argument('--fps',
                        type=int,
                        required=False,
                        metavar=cfg.fps,
                        default=cfg.fps,
                        help="Frames per second.")
    parser.add_argument('--size',
                        type=float,
                        required=False,
                        metavar=cfg.size,
                        default=cfg.size,
                        help="Image resizing factor.")
    parser.add_argument(
        '--cmap',
        type=str,
        required=False,
        metavar=cfg.cmap,
        default=cfg.cmap,
        help="Color map. Used only in combination with 'pseudocolor' mode.")
    parser.add_argument('--iso',
                        action='store_true',
                        required=False,
                        default=cfg.iso,
                        help="Resample image to appear isotropic.")
    parser.add_argument(
        '--time',
        type=str,
        required=False,
        metavar='method',
        default=cfg.time,
        help=
        "Gif along time axis using 'coronal', 'sagittal', or the 'horizontal' plane."
    )
    parser.add_argument('--cols',
                        type=int,
                        required=False,
                        metavar='columns',
                        default=cfg.cols,
                        help="Number of columns to use in 4D grid mode.")

    args = parser.parse_args()
    cfg.mode = (args.mode).lower()
    cfg.size = args.size
    cfg.fps = args.fps
    cfg.cmap = args.cmap
    cfg.iso = args.iso
    cfg.time = args.time
    cfg.cols = args.cols
    if 'cols' in vars(args) and 'time' not in vars(args):
        parser.error('Option --cols requires an option for --time')

    # Welcome message
    welcome_str = '{} {}'.format('gif_your_nifti', __version__)
    welcome_decor = '=' * len(welcome_str)
    print('{}\n{}\n{}'.format(welcome_decor, welcome_str, welcome_decor))

    print('Selections:')
    print('  mode = {}'.format(cfg.mode))
    print('  size = {}'.format(cfg.size))
    print('  fps  = {}'.format(cfg.fps))
    print('  iso  = {}'.format(cfg.iso))
    print('  time = {}'.format(cfg.time))
    print('  cols = {}'.format(cfg.cols))

    # Determine gif creation mode
    if cfg.mode in ['normal', 'pseudocolor', 'depth']:
        for f in args.filename:
            if cfg.mode == 'normal':
                core.write_gif_normal(f, cfg.size, cfg.fps, cfg.iso, cfg.time,
                                      cfg.cols)
            elif cfg.mode == 'pseudocolor':
                print('  cmap = {}'.format(cfg.cmap))
                core.write_gif_pseudocolor(f, cfg.size, cfg.fps, cfg.cmap)
            elif cfg.mode == 'depth':
                core.write_gif_depth(f, cfg.size, cfg.fps)

    elif cfg.mode == 'rgb':
        if len(args.filename) != 3:
            raise ValueError('RGB mode requires 3 input files.')
        else:
            core.write_gif_rgb(args.filename[0], args.filename[1],
                               args.filename[2], cfg.size, cfg.fps)
    else:
        raise ValueError("Unrecognized mode.")

    print('Finished.')
コード例 #3
0
ファイル: reports.py プロジェクト: ethanhkim/BIDSonym
def gif_defaced(bids_dir, subject_label, session=None, t2w=None):
    """
    Create a gif that loops through slices of the defaced image in
    x,y,z direction.

    Parameters
    ----------
    bids_dir : str
        Path to BIDS root directory.
    subject_label : str
        Label of subject to be plotted (without 'sub-').
    session : str, optional
        If multiple sessions exist, create one gif per session.
    session : bool, optional
        If T2w image exists, create a gif for defaced T2w.
    """

    from bids import BIDSLayout
    from glob import glob
    from os.path import join as opj
    from shutil import move
    import gif_your_nifti.core as gif2nif

    layout = BIDSLayout(bids_dir)

    bidsonym_path = opj(bids_dir, 'sourcedata/bidsonym/sub-%s' % subject_label)

    if session is not None:
        defaced_t1w = layout.get(subject=subject_label,
                                 extension='nii.gz',
                                 suffix='T1w',
                                 return_type='filename',
                                 session=session)
        if t2w is not None:
            defaced_t2w = layout.get(subject=subject_label,
                                     extension='nii.gz',
                                     suffix='T2w',
                                     return_type='filename',
                                     session=session)
    else:
        defaced_t1w = layout.get(subject=subject_label,
                                 extension='nii.gz',
                                 suffix='T1w',
                                 return_type='filename')
        if t2w is not None:
            defaced_t2w = layout.get(subject=subject_label,
                                     extension='nii.gz',
                                     suffix='T2w',
                                     return_type='filename',
                                     session=session)

    for t1_image in defaced_t1w:
        gif2nif.write_gif_normal(t1_image)

    if t2w is not None:
        for t2_image in defaced_t2w:
            gif2nif.write_gif_normal(t2_image)

    if session is not None:
        list_gifs = glob(
            opj(bids_dir, 'sub-%s/ses-%s/anat' % (subject_label, session),
                'sub-%s*.gif' % subject_label))
    else:
        list_gifs = glob(
            opj(bids_dir, 'sub-%s/anat' % subject_label,
                'sub-%s*.gif' % subject_label))

    for gif_nii in list_gifs:
        move(gif_nii, opj(bids_dir, bidsonym_path))
コード例 #4
0
def main():
    """Commandline interface."""
    parser = argparse.ArgumentParser()

    parser.add_argument('filename',
                        metavar='path',
                        nargs='+',
                        help="Path to image. Multiple paths can be provided.")
    parser.add_argument(
        '--mode',
        type=str,
        required=False,
        metavar=cfg.mode,
        default=cfg.mode,
        help="Gif creation mode. Available options are: 'normal', \
        'pseudocolor', 'depth', 'rgb'")
    parser.add_argument('--fps',
                        type=int,
                        required=False,
                        metavar=cfg.fps,
                        default=cfg.fps,
                        help="Frames per second.")
    parser.add_argument('--size',
                        type=float,
                        required=False,
                        metavar=cfg.size,
                        default=cfg.size,
                        help="Image resizing factor.")
    parser.add_argument(
        '--cmap',
        type=str,
        required=False,
        metavar=cfg.cmap,
        default=cfg.cmap,
        help="Color map. Used only in combination with 'pseudocolor' mode.")

    parser.add_argument('--sliceCor',
                        type=int,
                        required=False,
                        metavar=cfg.sliceCor,
                        default=cfg.sliceCor,
                        help="Slice index for Coronal view.")

    parser.add_argument('--sliceSag',
                        type=int,
                        required=False,
                        metavar=cfg.sliceSag,
                        default=cfg.sliceSag,
                        help="Slice index for Sagital view.")

    parser.add_argument('--sliceAx',
                        type=int,
                        required=False,
                        metavar=cfg.sliceAx,
                        default=cfg.sliceAx,
                        help="Slice index for Axial view.")

    parser.add_argument(
        '--slicesOrder',
        type=str,
        required=False,
        metavar=cfg.slicesOrder,
        default='csa',
        help="Order of the three columns cortical, sagital, axial."
        " Can be csa, cas, asc, acs, sac or sca.")

    parser.add_argument('--out_filename',
                        type=str,
                        required=False,
                        default=None,
                        help="Output GIF filename with extension.")

    args = parser.parse_args()
    cfg.mode = (args.mode).lower()
    cfg.size = args.size
    cfg.fps = args.fps
    cfg.cmap = args.cmap

    cfg.slices = [args.sliceCor, args.sliceSag, args.sliceAx]
    cfg.slicesOrder = args.slicesOrder

    # Determine gif creation mode
    if cfg.mode in ['normal', 'pseudocolor', 'depth']:
        for f in args.filename:
            if cfg.mode == 'normal':
                core.write_gif_normal(f, cfg.size, cfg.fps, cfg.slices,
                                      cfg.slicesOrder, args.out_filename)
            elif cfg.mode == 'pseudocolor':
                core.write_gif_pseudocolor(f, cfg.size, cfg.fps, cfg.cmap,
                                           cfg.slices, cfg.slicesOrder,
                                           args.out_filename)
            elif cfg.mode == 'depth':
                core.write_gif_depth(f, cfg.size, cfg.fps, args.out_filename)

    elif cfg.mode == 'rgb':
        if len(args.filename) != 3:
            raise ValueError('RGB mode requires 3 input files.')
        else:
            core.write_gif_rgb(args.filename[0], args.filename[1],
                               args.filename[2], cfg.size, cfg.fps,
                               args.out_filename)
    else:
        raise ValueError("Unrecognized mode.")
コード例 #5
0
ファイル: example_script.py プロジェクト: ranabanik/Nifti2Gif
"""Example usage of gif_your_nifti."""
import gif_your_nifti.core as gif2nif

# filename = 'mni_icbm152_t1_tal_nlin_asym_09c.nii'
filename = r'C:\\Data\\Folder\\Subfolder\\5639\\CT-MRI-5639_MR_norm.nii'

# Create a normal grayscale gif.
gif2nif.write_gif_normal(filename)

# Create a pseudocolored gif.
gif2nif.write_gif_pseudocolor(filename, colormap='plasma')

# Create a depth gif.
gif2nif.write_gif_depth(filename)

# Change the size of gifs.
gif2nif.write_gif_pseudocolor(filename, size=0.5, colormap='cubehelix')
gif2nif.write_gif_pseudocolor(filename, size=0.5, colormap='inferno')
gif2nif.write_gif_pseudocolor(filename, size=0.5, colormap='viridis')

# Create an RGB gif, based on gray matter, white matter and cerebrospinal fluid
# images from MNI template.
filename1 = 'mni_icbm152_gm_tal_nlin_asym_09c.nii'
filename2 = 'mni_icbm152_wm_tal_nlin_asym_09c.nii'
filename3 = 'mni_icbm152_csf_tal_nlin_asym_09c.nii'
gif2nif.write_gif_rgb(filename1, filename2, filename3)