#!/usr/bin/python

""" Used for making summaries and decisions around tandem runs.
"""
from __future__ import print_function

import argparse
import errno
import numpy as np
import pandas as pd
from scipy.stats import mstats
import psycopg2
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import time
import multiprocessing as mp
from multiprocessing import Pool
from mined_metric.builder.metrics_impl.paranoia_metrics.uncertainty.entity_severity_loader import get_data, plot_distribution

import os

from base.logging import zoox_logger
import logging

log = zoox_logger.ZooxLogger(__name__)

def parse_args():
    parser = argparse.ArgumentParser('Tool for querying redshift for entity severity')

    parser.add_argument('--verbose', '-v',
            action='store_const',
            const=True,
            default=False,
            help='Whether to run in debug mode')

    parser.add_argument('--output-directory', '-o',
            type=str,
            required=True,
            help='Where to store the results')

    return parser.parse_args()


def main():
    plt.style.use('ggplot')
    zoox_logger.configureLogging('entity_severity')
    args = parse_args()

    if args.verbose:
        log.logger.setLevel(logging.DEBUG)

    df = get_data()
    ax = plot_distribution(df)

    try:
        os.makedirs(args.output_directory)
    except OSError as e:
        log.warn(e)

    ax.figure.savefig(os.path.join(args.output_directory, 'distribution.png'))
    data_path = os.path.join(args.output_directory, 'data.csv')
    df.to_csv(data_path)

    log.info('Wrote %d events to %s', len(df), data_path)

    log.info('Worst case event')
    log.info('\n%s',df.iloc[-1])
    log.info('Argus link: %s', df.iloc[-1].argus_link)

if __name__ == "__main__":
       main()

