Create and save an ANTsPy plot for every image matching a given regular
    expression in a directory, optionally recursively. This is a good function
    for quick visualize exploration of all of images in a directory 
    
    ANTsR function: N/A

    Arguments
    ---------
    directory : string
        directory in which to search for images and plot them

    recursive : boolean
        If true, this function will search through all directories under 
        the given directory recursively to make plots.
        If false, this function will only create plots for images in the
        given directory

    regex : string
        regular expression used to filter out certain filenames or suffixes

    save_prefix : string
        sub-string that will be appended to the beginning of all saved plot filenames. 
        Default is to add nothing.

    save_suffix : string
        sub-string that will be appended to the end of all saved plot filenames. 
        Default is add nothing.

    kwargs : keyword arguments
        any additional arguments to pass onto the `ants.plot` function.
        e.g. overlay, alpha, cmap, etc. See `ants.plot` for more options.

    Example
    -------
    >>> import ants
    >>> ants.plot_directory(directory='~/desktop/testdir',
                            recursive=False, regex='*')

def plot_directory(directory, recursive=False, regex='*', 
    save_prefix='', save_suffix='', axis=None, **kwargs):
    """
    Create and save an ANTsPy plot for every image matching a given regular
    expression in a directory, optionally recursively. This is a good function
    for quick visualize exploration of all of images in a directory 
    
    ANTsR function: N/A

    Arguments
    ---------
    directory : string
        directory in which to search for images and plot them

    recursive : boolean
        If true, this function will search through all directories under 
        the given directory recursively to make plots.
        If false, this function will only create plots for images in the
        given directory

    regex : string
        regular expression used to filter out certain filenames or suffixes

    save_prefix : string
        sub-string that will be appended to the beginning of all saved plot filenames. 
        Default is to add nothing.

    save_suffix : string
        sub-string that will be appended to the end of all saved plot filenames. 
        Default is add nothing.

    kwargs : keyword arguments
        any additional arguments to pass onto the `ants.plot` function.
        e.g. overlay, alpha, cmap, etc. See `ants.plot` for more options.

    Example
    -------
    >>> import ants
    >>> ants.plot_directory(directory='~/desktop/testdir',
                            recursive=False, regex='*')
    """
    def has_acceptable_suffix(fname):
        suffixes = {'.nii.gz'}
        return sum([fname.endswith(sx) for sx in suffixes]) > 0

    if directory.startswith('~'):
        directory = os.path.expanduser(directory)

    if not os.path.isdir(directory):
        raise ValueError('directory %s does not exist!' % directory)

    for root, dirnames, fnames in os.walk(directory):
        for fname in fnames:
            if fnmatch.fnmatch(fname, regex) and has_acceptable_suffix(fname):
                load_fname = os.path.join(root, fname)
                fname = fname.replace('.'.join(fname.split('.')[1:]), 'png')
                fname = fname.replace('.png', '%s.png' % save_suffix)
                fname = '%s%s' % (save_prefix, fname)
                save_fname = os.path.join(root, fname)
                img = iio2.image_read(load_fname)

                if axis is None:
                    axis_range = [i for i in range(img.dimension)]
                else:
                    axis_range = axis if isinstance(axis,(list,tuple)) else [axis]

                if img.dimension > 2:
                    for axis_idx in axis_range:
                        filename = save_fname.replace('.png', '_axis%i.png' % axis_idx)
                        ncol = int(math.sqrt(img.shape[axis_idx]))
                        plot(img, axis=axis_idx, nslices=img.shape[axis_idx], ncol=ncol,
                             filename=filename, **kwargs)
                else:
                    filename = save_fname
                    plot(img, filename=filename, **kwargs)