#!/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"

forc_file = "data_47.59737_-122.73183"
pnnl_dir = "/home/disk/tsuga2/jswon11/workdir/2019_03_kitsap-dhsvm/forcs/PTscale_p20_dzshift/"
wrf_dir = "/home/disk/rocinante/DATA/temp/WRF/BIA-WRF-forcing/forc_bc/"
out_dir = "/home/disk/rocinante/DATA/temp/chico/hyak/writeup/climate/"
out_dir = "{}/{}".format(out_dir, forc_file)

def read_data(ifile):
    df = pd.read_csv(ifile, header=None, sep=' ')
    df.columns = ['Date', 'temp', 'wind', 'rh', 'sw', 'lw', 'prec']
    df.index = pd.to_datetime(df.Date, format='%m/%d/%Y-%H:%M:%S')
    df = df[['temp', 'prec']]
    df['prec'] = df.prec * 1000
    return df

def process_file(ifile, gcm, out_dir):
    df  = read_data(ifile)
    hT = ['Temp (C)']
    hP = ['Precip (mm)']
    
    # Save hourly timeseries
    out = '{}/{}_Temp_Hourly_Timeseries.csv'.format(out_dir, gcm)
    df[['temp']].to_csv(out, header=hT, float_format='%.2f')
    print(out)
    out = '{}/{}_Prec_Hourly_Timeseries.csv'.format(out_dir, gcm)
    df[['prec']].to_csv(out, header=hP, float_format='%.2f')
    print(out)

    mdf = df.resample('1M').mean()
    out = '{}/{}_Temp_Monthly_Timeseries.csv'.format(out_dir, gcm)
    mdf[['temp']].to_csv(out, header=hT, float_format='%.2f', date_format='%Y-%m')
    print(out)
    mdf = df.resample('1M').sum()
    out = '{}/{}_Prec_Monthly_Timeseries.csv'.format(out_dir, gcm)
    mdf[['prec']].to_csv(out, header=hP, float_format='%.2f', date_format='%Y-%m')
    print(out)
    
    df = df[['prec']]
    pdf = m.calc_peak(df, 1)
    edf = m.calc_extremes(pdf, [2,5,10,25,100], True)
    out = '{}/{}_Prec_1Hour_PeakStats.csv'.format(out_dir, gcm)
    edf = edf[['dist0']]
    edf.to_csv(out, header=hP, float_format='%.2f')
    print(out)
    
    pdf = m.calc_peak(df, 24)
    edf = m.calc_extremes(pdf, [2,5,10,25,100], True)
    out = '{}/{}_Prec_1Day_PeakStats.csv'.format(out_dir, gcm)
    edf = edf[['dist0']]
    edf.to_csv(out, header=hP, float_format='%.2f')
    print(out)
    
    

# operate on gcms
data = sorted(glob('{}/*RCP*'.format(wrf_dir)))
for d in data:
    gcm = os.path.basename(d)    
    ifile = "{}/{}".format(d, forc_file)
    process_file(ifile, gcm, out_dir)
    
# operate on pnnl
ifile = "{}/{}".format(pnnl_dir, forc_file)
process_file(ifile, 'pnnl', out_dir)



