import logging
logging.basicConfig(level=logging.WARNING)
import CtdHexTrans as ctdtrans
from datetime import datetime, timedelta
import scipy.io as sio
import xarray as xr
import numpy as np
import seawater.eos80 as sw
import seawater




coffset = 1.7

ctd = ctdtrans.CtdHex2mat('201710/20171004_A1.hex')

# parse some header stuff
for l in ctd['headinfo'].splitlines():
    if (l.find('** Lon') == 0):
        lon, minute = (l.split(':')[1]).split(' ')
        ctd['lon'] = -float(lon) - float(minute)/60.
    if (l.find('** Lat') == 0):
        lat, minute = (l.split(':')[1]).split(' ')
        ctd['lat'] = float(lat) - float(minute)/60.
    if (l.find('** Sta') == 0):
        ctd['id'] = l.split(':')[1]
    if (l.find('* cast') == 0 ):
        timest = l[11:28]
        ctd['time'] = datetime.strptime(timest, '%d %b %Y %H:%M')
        ctd['matlabtime'] = ctdtrans.datetime2matlab(ctd['time'])

#
# get salt and pden...
ctd['c0'] = ctd['c']
N = len(ctd['c'])
ctd['c'] = np.interp(np.arange(N)-coffset, np.arange(N), ctd['c0'])
ctd['sal'] = sw.salt(ctd['c'] * 10. / seawater.constants.c3515,
        ctd['t'], ctd['p'])
ctd['pden']=sw.dens(ctd['sal'], ctd['t'], ctd['p'])

ctd = ctdtrans.getO2(ctd,'v1');
ctd = ctdtrans.getFlu(ctd,'v2');
ctd = ctdtrans.getPar(ctd,'v3');

ds = xr.Dataset(
    {
    'cond': (['scan'], ctd['c'], {'units':'S/m', 'offset': '{} scans'.format(coffset)}),
    'cond0': (['scan'], ctd['c0'], {'units':'S/m'}),
    'temp': (['scan'],ctd['t'], {'units':'deg C'}),
    'pres': (['scan'],ctd['p'], {'units':'dbar'}),
    'O2':  (['scan'],ctd['O2'], {'units':'mmol/kg'}),
    'O2sat':  (['scan'],ctd['O2sat'], {'units':'percent saturation'}),
    'Par':  (['scan'],ctd['Par'], {'units':'E/m^2'}),
    'Flu':  (['scan'],ctd['Flu'], {'units':'Flu'}),
    'sal':  (['scan'],ctd['sal'], {'units':'psu'}),
    'pden':  (['scan'],ctd['pden'], {'units':'kg/m^2'}),
    'time': ctd['time'],
    'lat':ctd['lat'],
    'lon':ctd['lon'],
    'id':ctd['id']
    },
    coords={'scan': (['scan'], np.arange(len(ctd['c'])))},
    attrs={            'header':ctd['headinfo']}
)
ds.to_netcdf('Test.nc')

ctdout = ctd.copy()
ctdout.pop('time')
ctdout.pop('matlabtime')
ctdout['time'] = ctd['matlabtime']

sio.savemat('Test.mat', ctdout, format='5')

print(ctd['lon'])
print(ctd['lat'])
print(ctd['time'])
print(ctd['matlabtime'])
