from fuzzywuzzy import fuzz
import shapefile
import dbhydro_util

#--load the attributes of the structure shapefile
shapename = '..\\_gis\\shapes\\sw_structures'
shapes, records = shapefile.load_as_dict(shapename)

#--get a list of stage records
stg_dir = 'SW\\STG\\'
stg_files = os.listdir(stg_dir)

#--build a list of unique station names
station_names = []
for f in stg_files:
    fdict = dbhydro_util.parse_fname(f)
    sname = fdict['STATION']
    if '_' in sname:
        sname = sname.split('_')[0]
    if sname not in station_names:
        station_names.append(sname)

#--find all the records for each structure
shape_dbhydro_names = []
for system, name in zip(records['system'], records['name']):
    if system == 1:
        #--strip out the hyphen
        name = name.replace('-', '')

        match = None
        #--try for a staight-up match
    if s not in g_sites:
        g_sites.append(s)
        g_str_num.append([snum])
    else:
        idx = g_sites.index(s)
        if snum not in g_str_num[idx]:
            g_str_num[idx].append(snum)

#--for each gate structure
og_dir = 'processed\\SW\\GATE_daily\\'
for g, g_str in zip(g_sites, g_str_num):
    #--find the records for this gate
    for gg_str in g_str:
        this_gate_files, this_gate_info = [], []
        for f in gate_files:
            fdict = dbu.parse_fname(f)
            if fdict['site'] == g and fdict['strnum'] == gg_str:
                this_gate_files.append(f)
                this_gate_info.append(fdict)
        #print this_gate_files
        p_series = []
        for gf, gi in zip(this_gate_files, this_gate_info):
            if gi['dtype'].upper() == 'BK':
                series, flg = dbu.load_series(g_dir + gf)
                series = dbu.interp_breakpoint(series, flg)
                p_series.append(
                    pandas.TimeSeries(series[:, 1], index=series[:, 0]))
            else:
                #raise TypeError,'Only use breakpoint data for gate openings'
                print 'non break point record - skipping'
        g_sites.append(s)
        g_str_num.append([snum])
    else:
        idx = g_sites.index(s)
        if snum not in g_str_num[idx]:
            g_str_num[idx].append(snum)
                 
       
#--for each gate structure
og_dir = 'processed\\SW\\GATE_daily\\'
for g,g_str in zip(g_sites,g_str_num):
    #--find the records for this gate    
    for gg_str in g_str:
        this_gate_files,this_gate_info = [],[]
        for f in gate_files:
            fdict = dbu.parse_fname(f)            
            if fdict['site'] == g and fdict['strnum'] == gg_str:
                this_gate_files.append(f)
                this_gate_info.append(fdict)
        #print this_gate_files
        p_series = []
        for gf,gi in zip(this_gate_files,this_gate_info):       
            if gi['dtype'].upper() == 'BK':
                series,flg = dbu.load_series(g_dir+gf)            
                series = dbu.interp_breakpoint(series,flg)
                p_series.append(pandas.TimeSeries(series[:,1],index=series[:,0]))
            else:
                #raise TypeError,'Only use breakpoint data for gate openings'                
                print 'non break point record - skipping'
        
        #--create a full record
import os
import pandas
import dbhydro_util

#--load the record for each valid dbkey
data_dir = 'RAIN\\RAIN\\'
data_files = os.listdir(data_dir)
rain_files = []
rain_existing_dbkeys = []

for df in data_files:
    df_dict = dbhydro_util.load_header(data_dir + df)
    fname_dict = dbhydro_util.parse_fname(data_dir + df)
    if df_dict['FQ'] == 'BK':
        dbhydro_util.interp_precip_pandas(data_dir + df)
        break
import os
import pandas
import dbhydro_util


# --load the record for each valid dbkey
data_dir = "RAIN\\RAIN\\"
data_files = os.listdir(data_dir)
rain_files = []
rain_existing_dbkeys = []

for df in data_files:
    df_dict = dbhydro_util.load_header(data_dir + df)
    fname_dict = dbhydro_util.parse_fname(data_dir + df)
    if df_dict["FQ"] == "BK":
        dbhydro_util.interp_precip_pandas(data_dir + df)
        break
df_dir = 'stage_dfs_navd\\'
smp_dir = 'stage_smp_navd\\'
ngvd_2_navd = -1.5
#--load the attributes of the structure shapefile
shapename = '..\\_gis\\shapes\\sw_structures'
records = shapefile.load_as_dict(shapename,attrib_name_list=['system','struct_num','dbhydro'],loadShapes=False)

#--get a list of stage records
stg_dir = 'SW\\STG\\'
stg_files = os.listdir(stg_dir)

#--build a list of station names
rec_attribs = []
for f in stg_files:
    fdict = dbhydro_util.parse_fname(f)    
    rec_attribs.append(fdict)

#--find all the records for each primary structure, headwater only
wl_stats = ['DA','BK','DWR','INST','FWM','MEAN']
for system,name in zip(records['system'],records['dbhydro']):
    if system == 1 and name != None:
        match_h,match_t = [],[]
        for i,rec in enumerate(rec_attribs):
            station = rec['STATION']
            if '_' in station:
                station = station.split('_')[0]
            if station.lower() == name.lower() and rec['STAT'] in wl_stats:
                if rec['STATION'].lower().endswith('h'):
                    match_h.append(rec)
                if rec['STATION'].lower().endswith('t'):