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

from optparse import OptionParser

import pyhrf
from pyhrf import xmlio
from pyhrf.ui.glm_ui import GLMAnalyser
from pyhrf.ui.treatment import *  # FIXME: wildcard import
from pyhrf.paradigm import *  # FIXME: wildcard import

usage = 'usage: %%prog [options]'

description = 'Manage parametrization of a GLM'\
              'treatment of fMRI data: build a template parameter file in ' \
              'xml format.'
if pyhrf.__usemode__ == pyhrf.DEVEL:
    description += 'Several models are available, see --help.'

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

# TODO: provide FIR, hderiv, etc ...
# modelChoice = []
# helpOnModels= ['Available models::']
# for modelLabel, modelDef in availableModels.items():
#     modelChoice.append(modelLabel)
#     helpOnModels.append(modelLabel+': '+modelDef['doc'])
# helpOnModels.append('  ~default~: '+defaultModel)
# helpOnModels = string.join(helpOnModels, '  *')

# parser.add_option('-l','--model', type='choice', choices=modelChoice,
#                   metavar='STRING',
#                   default=defaultModel, help=helpOnModels)

parser.add_option('-o', '--output-cfg-file', metavar='XMLFILE', dest='cfgFile',
                  default='./glm.xml',
                  help='XML file to store parameters')

parser.add_option('-C', '--contrasts', dest='contrasts', metavar='BOOL',
                  default=False, action='store_true',
                  help='Include default contrasts')


# parser.add_option('-n','--nb-iteration', dest='nbIterations', default=None,
#                   metavar='INT', type='int',
#                   help='Set up the number of iterations')

append_common_treatment_options(parser)

# parser.add_option('-C','--contrasts', dest='contrasts', metavar='BOOL',
#                   default=False, action='store_true',
#                   help='Include default contrasts')

(options, args) = parser.parse_args()
# pyhrf.verbose.set_verbosity(options.verbose)
pyhrf.logger.setLevel(options.verbose)

if options.contrasts:
    contrasts = eval('pyhrf.paradigm.default_contrasts_%s' % options.paradigm)
else:
    contrasts = {'dummy_contrast_example': '3*audio - video/3'}


analyser = GLMAnalyser(contrasts=contrasts)

# print 'options:', options
fdata = parse_data_options(options)

treatment = FMRITreatment(analyser=analyser, fmri_data=fdata)

sXml = xmlio.to_xml(treatment, label='glm_treatment')
fOut = open(options.cfgFile, 'w')
fOut.write(sXml)
fOut.close()
