#!/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_rbm/"
output_dir = input_dir + "/writeup/pub_temp/"

namelist = input_dir + "/writeup/scripts/loc_list.csv"
namelist = "/home/disk/rocinante/DATA/temp/chico/hyak/data_ref/tbl.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)


def avg_max_wtryr():
    return

def numdays_abv():
    return

for gcm in gcms:
    print("GCM: {}".format(gcm))
    idir = "{}/*{}*/*/output/seg".format(data_dir, gcm)
    data = sorted(glob("{}/*.seg".format((idir))))
    print(idir)

    for ifile in data:
        print(ifile)

exit()
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.1f")
        
        df_1990s = m.filter_wyear(df, 1980, 2009)
        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.1f")
                edf.to_csv("{}/{}_{}_{}_{}_LowStats.csv".format(odir, loc, gcm, pds, dur_lbl), float_format="%0.1f")

            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.1f")
                edf.to_csv("{}/{}_{}_{}_{}_PeakStats.csv".format(odir, loc, gcm, pds, dur_lbl), float_format="%0.1f")

                
                





        
#    
#28152
#28157
#28175
