#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import logging

from optparse import OptionParser
from pprint import pformat

from nipy.labs import compute_mask_files

import pyhrf
from pyhrf.tools import non_existent_file

logger = logging.getLogger(__name__)

usage = 'usage: %%prog [options] 4D_BOLD_FILE '
description = 'Compute a mask'

parser = OptionParser(usage=usage, description=description)

minArgs = 1
maxArgs = -1

parser.add_option('-o', '--output', dest='outFile', default=None,
                  help='Output file for the mask, default is "mask.nii"')

parser.add_option('-v', '--verbose', dest='verbose', metavar='VERBOSELEVEL',
                  type='int', default=0,
                  help=pformat(pyhrf.verbose_levels))

parser.add_option('-c', '--cc', dest='cc', metavar='BOOLEAN',
                  type='int', default=1,
                  help="Keep only the largest connected component")


parser.add_option('-m', '--min-frac', dest='min_frac', metavar='FLOAT',
                  type='float', default=.4,
                  help="Lower fraction of the histogram to be discarded.")

parser.add_option('-M', '--max-frac', dest='max_frac', metavar='FLOAT',
                  type='float', default=.9,
                  help="Upper fraction of the histogram to be discarded.")


(options, args) = parser.parse_args()

# pyhrf.verbose.set_verbosity(options.verbose)
pyhrf.logger.setLevel(options.verbose)

bold_file = args[0]
if options.outFile is None:
    options.outFile = non_existent_file('./mask.nii')

logger.info('Save result to %s', options.outFile)
mask_array = compute_mask_files(bold_file, options.outFile, False,
                                options.min_frac, options.max_frac,
                                cc=options.cc)
