#!/usr/bin/python3
import pandas as pd
import numpy as np
from glob import glob
import os
import metrics as m
import sys


input_dir = "/home/disk/rocinante/DATA/temp/chico/hyak"
data_dir = input_dir + "/data_atmos/"
output_dir = input_dir + "/writeup/pub_stream/"
namelist = input_dir + "/writeup/scripts/loc_list.csv"

pdurs = [("1hour", 1), ("1day", 24)]
ldurs = [("1day", 24), ("7day", 168)]

gcms = [sys.argv[1]]
gcms = [ os.path.basename(i) for i in gcms]

#gcms = [ "_".join(os.path.basename(i).split('_')[0:2]) for i in gcms ]

ldf = pd.read_csv(namelist)

for gcm in gcms:
    print("GCM: {}".format(gcm))
    idir = "{}/*{}*/".format(data_dir, gcm)
    data = sorted(glob("{}/*.hour".format((idir))))
    
    for ifile in data:
        loc = os.path.basename(ifile).split('.hour')[0]
        loc2 = ldf[ldf.loc1==loc]['loc2']
        if loc2.empty:
            print("Location {} - name not found.".format(loc))
            continue
        else:
            loc = loc2.values[0]
            print(loc)

        odir = "{}/{}/".format(output_dir, loc)
        os.makedirs(odir, exist_ok=True)


        df = m.read_data(ifile)
        df = m.filter_wyear(df, 1970, 2099)
        df.columns = ["Flow"]
        df.index.name = "DATE"
        df.to_csv("{}/{}_{}_Timeseries.csv".format(odir, loc, gcm), float_format="%0.2f")
        
        df_1990s = m.filter_wyear(df, 1981, 2010)
        df_2050s = m.filter_wyear(df, 2040, 2069)
        df_2080s = m.filter_wyear(df, 2070, 2099)
        dfs = [("1990s", df_1990s), ("2050s", df_2050s), ("2080s", df_2080s)]        
        
        for (pds, cdf) in dfs:
            
            print("\tCalculate Lows: ", pds)
            for (dur_lbl, dur) in ldurs:
                # Calculte lows
                pdf = m.calc_low(cdf, dur)
                
                # Calculate extremes
                #edf = m.use_bootstrap(pdf, m.calc_extremes)
                edf = m.calc_extremes(pdf, [2, 10], False)
                
                wyrs = pdf.index.year + (pdf.index.month > 9)
                pdf.insert(0, "WYEAR", wyrs)
                pdf.to_csv("{}/{}_{}_{}_{}_LowFlows.csv".format(odir, loc, gcm, pds, dur_lbl), float_format="%0.2f")
                edf.to_csv("{}/{}_{}_{}_{}_LowStats.csv".format(odir, loc, gcm, pds, dur_lbl), float_format="%0.2f")
                
            print("\tCalculate Peaks: ", pds)
            for (dur_lbl, dur) in pdurs:
                # Calculte peaks
                pdf = m.calc_peak(cdf, dur)
                
                # Calculate extremes
                #edf = m.use_bootstrap(pdf, m.calc_extremes)
                edf = m.calc_extremes(pdf, [2,5,10,25,100], True)
                
                wyrs = pdf.index.year + (pdf.index.month > 9)
                pdf.insert(0, "WYEAR", wyrs)
                pdf.to_csv("{}/{}_{}_{}_{}_PeakFlows.csv".format(odir, loc, gcm, pds, dur_lbl), float_format="%0.2f")
                edf.to_csv("{}/{}_{}_{}_{}_PeakStats.csv".format(odir, loc, gcm, pds, dur_lbl), float_format="%0.2f")        

            print("\tCalculate Monthly Avg: ", pds)
            madf = m.calc_monthlyavg(cdf)
            madf.to_csv()
            madf.to_csv("{}/{}_{}_{}_MonthlyAvg.csv".format(odir, loc, gcm, pds), float_format="%0.2f")
        
    
    exit()

        
#    
#28152
#28157
#28175
