#!python
from __future__ import division
import os
import sys
import argparse
import logging
import unittest
from PyDAIR.seq.IgSeq import IgSeq
from PyDAIR.io.PyDAIRIO import *
from PyDAIR.utils.PyDAIRUtils import *
from PyDAIR.utils.PyDAIRArgs import *
from PyDAIR.app.PyDAIRAPP import *
from PyDAIR.stats.PyDAIRStats import *
from PyDAIR.plot.PyDAIRPlot import *

logging.basicConfig(level = logging.INFO, format = '%(levelname)-8s %(message)s')



def main(args):
    population_estimation = args.population_estimation
    
    pydair_files  = args.input[0]
    sample_names = args.name[0]
    
    logging.info('[1/3] Read data files.')
    pydair_args = PyDAIRStatsArgs(sample_names, pydair_files,
                                contain_ambiguous_D = args.contain_ambiguous_D,
                                contain_stopcodon = args.contain_stopcodon,
                                output_prefix = args.output,
                                figure_format = args.figure_format)
    pydairapp = PyDAIRAPPStats(pydair_args)
    
    logging.info('[2/3] Write statistical data.')
    pydairapp.write_freq()
    pydairapp.write_cdr3_len_freq()
    
    logging.info('[3/3] Finishing...')
    


def parse_args():
    parser = argparse.ArgumentParser(description = 'pydair')
    
    ## general parameters
    parser.add_argument('-i', '--input', help = 'Input PyDAIR files. Multiple files should be separated by a blank.', nargs = '*', action = 'append', required = True)
    parser.add_argument('-n', '--name',  help = 'Sample names for each PyDAIR file. Multiple names should be separated by a blank.', nargs= '*', action = 'append', required = True)
    parser.add_argument('-o', '--output', help = 'Path to save to anaysis results.', required = True)
    parser.add_argument('--contain_ambiguous_D', help = 'Contain data that has ambiguous D genes.', action = 'store_true')
    parser.add_argument('--contain_stopcodon',   help = 'Contain data that has stop codon.',        action = 'store_true')
    parser.add_argument('--figure_format',   help = 'Figure format.', default = 'png')
    parser.add_argument('--population_estimation', help = 'Perform sampling-resampling study and rarefaction study.', action = 'store_true')
    
    parser.set_defaults(contain_ambiguous_D   = False)
    parser.set_defaults(contain_stopcodon     = False)
    parser.set_defaults(population_estimation = False)

    # start main function
    args = parser.parse_args()
    return args



if __name__ == '__main__':
    desc = '''
    PyDAIR (BLAST for analyzing IgH sequence)
                                         ______
                             <><        /      \  /
                O        <><           / O      \/
              O            <><         \        /\\
        _    o  ___                     \______/  \\
       /o\/    /o  \/         O O     __
       \_/\    \___/\           O   \/ o\\
             _            __   O    /\__/      __
            /o\/        \/ o\ o               /o \/
            \_/\        /\__/     ><>         \__/\\

'''
    print(desc)
    args = parse_args()
    main(args)






