# -*- coding: utf-8 -*-
"""
Created on Tue Jan 16 15:47:46 2024

@author: chuffard
"""

# -*- coding: utf-8 -*-
"""
Created on Wed Dec 13 09:34:42 2023

@author: chuffard
"""

import numpy as np

import pandas as pd

#import spectrum #doesn't want to install...tried everything I can find

import matplotlib.pyplot as plt

#from spectrum import Periodogram, data_cosine

from datetime import datetime

import scipy as SP

import scipy.signal as signal

import seaborn as sns

#import endaq as endaq

import statsmodels.tsa.stattools as sts

from statsmodels.tsa.stattools import acf

import pyflakes as pyf

#import lzip as lz

from pandas import read_csv

from statsmodels.graphics.tsaplots import plot_acf

from statsmodels.graphics.tsaplots import plot_pacf


import ephem

import pygam

import re

import numpy as np
from scipy import stats

from matplotlib.backends.backend_pdf import PdfPages
mako4 = sns.color_palette("rocket", 4)
mako15 = sns.color_palette("rocket", 15)
mako60 = sns.color_palette("rocket", 60)
mako14 = sns.color_palette("rocket", 14)
sdiverging_colors = sns.color_palette("RdBu", 24)
sdiverging_colors80 = sns.color_palette("RdBu", 80)
#This is the time period without the crab

# read in data; use first line as header
Main_Hourly_SES_MARS = pd.read_csv('G:/Analyses/MainSES_fluoro_atn_moon_sun_current.csv', parse_dates=True, index_col="datetime")

#fix weird time zone stuff
for col in Main_Hourly_SES_MARS.select_dtypes(include=['datetime64[ns, UTC]']).columns:
    Main_Hourly_SES_MARS[col] = Main_Hourly_SES_MARS[col].apply(lambda x: x.tz_localize(None))

list(Main_Hourly_SES_MARS.columns)
    
Main_Hourly_SES_MARS["atn"].plot()
Main_Hourly_SES_MARS["detrended690Fluoro"].plot()
Main_Hourly_SES_MARS["Fluoro590"].plot()
Main_Hourly_SES_MARS["Fd6900_atn"].plot()
Main_Hourly_SES_MARS["Fluoro690"].plot()
Main_Hourly_SES_MARS["F590_atn"].plot()
Main_Hourly_SES_MARS["F690_atn"].plot()
Main_Hourly_SES_MARS["Speed_cm_s"].plot()
Main_Hourly_SES_MARS["Heading_degrees"].plot()
Main_Hourly_SES_MARS["Velocity_N_cm_s"].plot()
Main_Hourly_SES_MARS["Velocity_E_cm_s"].plot()
Main_Hourly_SES_MARS["Yaw_degrees"].plot()
Main_Hourly_SES_MARS["Pitch_degrees"].plot()
Main_Hourly_SES_MARS["Roll_degrees"].plot()
Main_Hourly_SES_MARS["Temperature_C"].plot()

atnmean = Main_Hourly_SES_MARS["atn"].mean()
print(atnmean)
n = len(Main_Hourly_SES_MARS["atn"])
df = n-1
print(n)
print(df)
print (df+1)
SE = stats.sem(Main_Hourly_SES_MARS["atn"].dropna())
print(SE)
CIlevel = 0.97
CI97atn = stats.t.interval(CIlevel, df, atnmean, scale = SE)
CIhigh = CI97atn[1]
print(CIhigh)
Main_Hourly_SES_MARS["trigger"] = np.where(Main_Hourly_SES_MARS['atn'] >= CIhigh, 'Trigger', 'Wait')
Main_Hourly_SES_MARS['index'] = Main_Hourly_SES_MARS.index


#running mean 2 days
Main_Hourly_SES_MARS['rolling_atn_144'] = Main_Hourly_SES_MARS['atn'].rolling(144, min_periods=5).mean()

#confidence intervals of running mean
Ratnmean144 = Main_Hourly_SES_MARS["rolling_atn_144"].mean()
print(Ratnmean144)
n144 = len(Main_Hourly_SES_MARS["rolling_atn_144"])
df144 = n-1
print(n144)
print(df144)
print (df144+1)
SEr144 = stats.sem(Main_Hourly_SES_MARS["rolling_atn_144"].dropna())
print(SEr144)
CIlevelr144 = 0.99999
CI97atnr144 = stats.t.interval(CIlevelr144, df144, Ratnmean144, scale = SEr144)
CIhighr144 = CI97atnr144[1]
print(CIhighr144)
Main_Hourly_SES_MARS["trigger144"] = np.where(Main_Hourly_SES_MARS['rolling_atn_144'] >= CIhighr144, 'Trigger', 'Wait')

sns.scatterplot(data=Main_Hourly_SES_MARS, x="index", y="rolling_atn_144", hue="trigger144")
plt.xticks(rotation=45);
plt.show()

#running mean 2 weeks
Main_Hourly_SES_MARS['rolling_atn_1008'] = Main_Hourly_SES_MARS['atn'].rolling(1008, min_periods=300).mean()

#confidence intervals of running mean
Ratnmean1008 = Main_Hourly_SES_MARS["rolling_atn_1008"].mean()
print(Ratnmean1008)
n1008 = len(Main_Hourly_SES_MARS["rolling_atn_1008"])
df1008 = n-1
print(n1008)
print(df1008)
print (df1008+1)
SEr1008 = stats.sem(Main_Hourly_SES_MARS["rolling_atn_1008"].dropna())
print(SEr1008)
CIlevelr1008 = 0.95
CI97atnr1008 = stats.t.interval(CIlevelr1008, df1008, Ratnmean1008, scale = SEr1008)
CIhighr1008 = CI97atnr1008[1]
print(CIhighr144)
Main_Hourly_SES_MARS["trigger1008"] = np.where(Main_Hourly_SES_MARS['rolling_atn_1008'] >= CIhighr144, 'Trigger', 'Wait')

sns.scatterplot(data=Main_Hourly_SES_MARS, x="index", y="rolling_atn_1008", hue="trigger1008")
plt.xticks(rotation=45);
plt.show()

sns.scatterplot(data=Main_Hourly_SES_MARS, x="index", y="atn", hue="trigger1008")
plt.xticks(rotation=45);
plt.show()






#remove infinite values
Main_Hourly_SES_MARS= Main_Hourly_SES_MARS[Main_Hourly_SES_MARS['atn']!= np.inf]
sns.scatterplot( x=Main_Hourly_SES_MARS.index.values, y=Main_Hourly_SES_MARS['atn'], s=20, alpha=0.7, hue=Main_Hourly_SES_MARS['mooninterp'])
plt.xticks(rotation=45);


plt.plot(Main_Hourly_SES_MARS['atn'])
plt.ylabel('attenuance')
plt.xticks(rotation=45);
plt.savefig("attenuance.pdf")

# 'atn',
#  'mooninterp',
#  'hour',
#  'year',
#  'month',
#  'day',
#  'Year-Week',
#  'justdate',
#  'ABSdayssincesolst',
#  'moonbins',
#  'Pred',
#  'tidal_diff',
#  'dayssincesolstice',
#  'NUMdayssincesolst',
#  'sunrisedecimalhour',
#  'sunsetdecimalhour',
#  'sunrise',
#  'sunset',
#  'Fluoro690',
#  'Fluoro590',
#  'detrended690Fluoro',
#  'Fd6900_atn',
#  'F590_atn',
#  'F690_atn',
#  'Speed_cm_s',
#  'Heading_degrees',
#  'Velocity_N_cm_s',
#  'Velocity_E_cm_s',
#  'Yaw_degrees',
#  'Pitch_degrees',
#  'Roll_degrees',
#  'Temperature_C',
#  'atn_LAG7',
#  'Pitch_degrees.1',
#  'DeltaPitch',
#  'DeltaT']






#Try autocorrelation
#from https://machinelearningmastery.com/gentle-introduction-autocorrelation-partial-autocorrelation/
#Trim to period with no big gaps
trimhourly = Main_Hourly_SES_MARS.loc['2023-06-27':'2023-08-14']  

cols_list = trimhourly.columns.tolist()
print(cols_list)
Signal_variable_list = ['atn', 'Fluoro690', 'Fluoro590', 'Fd6900_atn', 'F590_atn', 'F690_atn', 
                        'Speed_cm_s',
                        'Heading_degrees',
                        'Velocity_N_cm_s',
                        'Velocity_E_cm_s',
                        'Yaw_degrees',
                        'Pitch_degrees',
                        'Roll_degrees',
                        'Temperature_C',
                        'DeltaPitch',
                        'DeltaT']

#Gaps are okay
for v in Signal_variable_list:
    plt.close('all')
    plot_acf(trimhourly[v], lags=60,missing = 'conservative')
    plt.title(str(v))
    plt.xlabel('lag (hours)')
    pltname = str(v)+'acf.pdf'
    plt.savefig(pltname)
    

trimhourly.dtypes



SpeedTS = trimhourly[['Speed_cm_s']] 


fs = 1/3600

f, Pxx_spec = signal.welch(SpeedTS['Speed_cm_s'], fs, scaling='spectrum')
plt.figure()
plt.semilogy(f, np.sqrt(Pxx_spec))
plt.xlabel('frequency [Hz]')
plt.ylabel('Linear spectrum [V RMS]')
plt.title('Current speed')
plt.xticks(rotation=45);
plt.show()


dftemp = pd.DataFrame()

#trim to periods with no big gaps 
 
for v in Signal_variable_list:
    plt.close('all')
    dftemp = trimhourly[[v]] 
    dftemp = dftemp.loc['2023-07-18':'2023-08-14'] 
    dftemp[v].plot()
    plt.title(str(v))
    pltnameTS = str(v)+'TS.pdf'
    plt.savefig(pltnameTS)
    f, Pxx_spec = signal.welch(dftemp[v], fs, scaling='spectrum')
    plt.close('all')
    plt.semilogy(f, np.sqrt(Pxx_spec))
    plt.xlabel('frequency [Hz]')
    plt.ylabel('Linear spectrum [V RMS]')
    plt.title(str(v))
    plt.xticks(rotation=45);
    pltname = str(v)+'Welch.pdf'
    plt.savefig(pltname)

       

dftemp = pd.DataFrame()  

print(Signal_variable_list)
#['atn', 'Fluoro690', 'Fluoro590', 'Fd6900_atn', 'F590_atn', 'F690_atn', 'Speed_cm_s', 
#'Heading_degrees', 'Velocity_N_cm_s', 'Velocity_E_cm_s', 'Yaw_degrees', 'Pitch_degrees', 'Roll_degrees', 'Temperature_C']


#Now try to combine the subplots into one figure per variable
looplist = list(enumerate(Signal_variable_list))
print(looplist)

plt.close('all')
plt.figure(figsize = (16,22))
for i in looplist:
    plt.subplot(14,1,i[0]+1)
    variable = i[1]
    print(variable)
    dftemp = trimhourly[[variable]] 
    dftemp = dftemp.loc['2023-07-18':'2023-08-14'] 
    dftemp[variable].plot()
    plt.ylabel(variable)
    plt.tight_layout()
    plt.savefig('Time Series for signal analysis.pdf')



#COMPLETE CASES FROM HERE ON OUT#########
#rfilter to complete cases
Main_Hourly_SES_MARSComplete= Main_Hourly_SES_MARS.loc[Main_Hourly_SES_MARS.notna().all(axis='columns')]


for i in looplist:
    variable = i[1]
    print(variable)
    dftemp = Main_Hourly_SES_MARSComplete.loc['2023-05-10':'2023-08-14'] 
    boxplot = dftemp.boxplot(by='hour',column=variable)
    plt.ylabel(variable)
    plt.tight_layout()
    plt.xticks(rotation=45);
    pltname = str(variable)+'botxplot.pdf'
    plt.savefig(pltname)



#plot by hour of day
hourly_Fluoro690atn = Main_Hourly_SES_MARSComplete[['hour', 'F690_atn']] 
hourly_Fluoro690atn= hourly_Fluoro690atn.loc[hourly_Fluoro690atn.notna().all(axis='columns')]
boxplot = hourly_Fluoro690atn.boxplot(by='hour')
plt.xticks(rotation=45);
plt.yscale('log')
#why is this slightly different in the midnight-2 am hours from the last one?
plt.savefig('F690_atnboxplot.pdf')


#plot by hour of day
hourly_Fluoro590atn = Main_Hourly_SES_MARSComplete[['hour', 'F590_atn']] 
hourly_Fluoro590atn= hourly_Fluoro590atn.loc[hourly_Fluoro590atn.notna().all(axis='columns')]
boxplot = hourly_Fluoro590atn.boxplot(by='hour')
plt.xticks(rotation=45);
plt.yscale('log')
#why is this slightly different in the midnight-2 am hours from the last one?
plt.savefig('F590_atnboxplot.pdf')



plt.figure(figsize = (16,22))
for i in looplist:
    plt.subplot(14,1,i[0]+1)
    variable = i[1]
    print(variable)
    dftemp = Main_Hourly_SES_MARSComplete.loc['2023-05-10':'2023-08-14'] 
    sns.relplot(data=dftemp, x="hour", y=variable, kind="line")
    plt.ylabel(variable)
    plt.tight_layout()
    plt.xticks(rotation=45);
    pltname = str(variable)+'ribbon.pdf'
    plt.savefig(pltname)





# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="atn", kind="line")
# plt.savefig('atn by 24 hour ribbon.pdf')

# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="Pred", kind="line")
# plt.savefig('tidal height by 24 hour ribbon.pdf')

# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="tidal_diff", kind="line")
# plt.savefig('tidal_diff by 24 hour ribbon.pdf')

# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="Fluoro590", kind="line")
# plt.savefig('Fluoro590 by 24 hour ribbon.pdf')

# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="Fluoro690", kind="line")
# plt.savefig('Fluoro690 by 24 hour ribbon.pdf')


# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="detrended690Fluoro", kind="line")
# plt.savefig('detrended690Fluoro by 24 hour ribbon.pdf')

# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="Fd6900_atn", kind="line")
# plt.savefig('Fd690_atn by 24 hour ribbon.pdf')

# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="F590_atn", kind="line")
# plt.savefig('F590_atn by 24 hour ribbon.pdf')

# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="F690_atn", kind="line")
# plt.savefig('F690_atn by 24 hour ribbon.pdf')

# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="F590_atn", kind="line")
# plt.savefig('F590_atn by 24 hour ribbon.pdf')


# sns.relplot(data=Main_Hourly_SES_MARSComplete, x="hour", y="Speed", kind="line")
# plt.savefig('Speed by 24 hour ribbon.pdf')



ax1 = Main_Hourly_SES_MARSComplete.plot(kind='scatter', x="Speed_cm_s", y="atn" ,color='b', alpha = 0.3,figsize=(10, 3))    
#ax2 = Main_Hourly_SES_MARSComplete.plot(kind='scatter', x="Speed_cm_s", y="atn_LAG7", color='g', ax=ax1, alpha = 0.3,figsize=(10, 3))    
plt.savefig('lag is green unlagged atn is blue.pdf')


#technicaolly works but looks terrible
# fig, (ax1, ax2, ax3) = plt.subplots(1, 3, subplot_kw=dict(projection='polar'))
# ax1.plot(Main_Hourly_SES_MARSComplete['hour'], Main_Hourly_SES_MARSComplete['atn'])
# ax2.plot(Main_Hourly_SES_MARSComplete['hour'], Main_Hourly_SES_MARSComplete['Pred'])
# ax3.plot(Main_Hourly_SES_MARSComplete['hour'],Main_Hourly_SES_MARSComplete['tidal_diff'])
# plt.show()

minsunrise = Main_Hourly_SES_MARSComplete['sunrisedecimalhour'].min()
maxsunrise = Main_Hourly_SES_MARSComplete['sunrisedecimalhour'].max()
minsunset = Main_Hourly_SES_MARSComplete['sunsetdecimalhour'].min()
maxsunset = Main_Hourly_SES_MARSComplete['sunsetdecimalhour'].max()

fig, axes = plt.subplots(9, 1, figsize=(10, 10))
for ax in axes:
    ax.axvspan(minsunrise, maxsunrise, color=sns.xkcd_rgb['grey'], alpha=0.5)
    ax.axvspan(minsunset, maxsunset,  color=sns.xkcd_rgb['grey'], alpha=0.5)
sns.lineplot(ax=axes[0], x="hour", y="atn", data=Main_Hourly_SES_MARSComplete)
sns.lineplot(ax=axes[1], x="hour", y="Speed_cm_s", data=Main_Hourly_SES_MARSComplete)
sns.lineplot(ax=axes[2], x="hour", y="Velocity_N_cm_s", data=Main_Hourly_SES_MARSComplete)
sns.lineplot(ax=axes[8], x="hour", y="Heading_degrees", data=Main_Hourly_SES_MARSComplete)
sns.lineplot(ax=axes[3], x="hour", y="Fluoro690", data=Main_Hourly_SES_MARSComplete)
sns.lineplot(ax=axes[4], x="hour", y="Fluoro590", data=Main_Hourly_SES_MARSComplete)
sns.lineplot(ax=axes[5], x="hour", y="F690_atn", data=Main_Hourly_SES_MARSComplete)
sns.lineplot(ax=axes[6], x="hour", y="F590_atn", data=Main_Hourly_SES_MARSComplete)
sns.lineplot(ax=axes[7], x="hour", y="Temperature_C", data=Main_Hourly_SES_MARSComplete)
axes[0].set(xlabel=None)
axes[1].set(xlabel=None)
axes[0].set(ylabel="attenuance")
axes[1].set(ylabel="current speed")
axes[2].set(ylabel='northing')
axes[3].set(ylabel="detrended 690 fluorescence")
axes[4].set(ylabel='590 fluorescence')
axes[5].set(ylabel="690 fluorescence/atn")
axes[6].set(ylabel='590 fluorescence/atn')
axes[7].set(ylabel='Temperature')
axes[8].set(ylabel='heading')
plt.savefig('24 hour ribbon.pdf')



# # a = sns.lineplot(data=useatnmoonphaseCRAB, 
# #              x="hour", 
# #              y="atn", 
# #              hue = 'Year-Week',
# #              palette = mako14, ci = None, ax=ax[0])
# fig, axes = plt.subplots(3, 1, figsize=(10, 10))
# for ax in axes:
#     ax.axvspan(minsunrise, maxsunrise, color=sns.xkcd_rgb['grey'], alpha=0.5)
#     ax.axvspan(minsunset, maxsunset,  color=sns.xkcd_rgb['grey'], alpha=0.5)
# sns.lineplot(ax=axes[0], x="hour", y="atn", data=Main_Hourly_SES_MARSComplete, hue = 'NUMdayssincesolst',palette = 'RdBu')
# sns.lineplot(ax=axes[1], x="hour", y="Pred", data=Main_Hourly_SES_MARSComplete, hue = 'NUMdayssincesolst',palette = 'RdBu')
# sns.lineplot(ax=axes[2], x="hour", y="tidal_diff", data=Main_Hourly_SES_MARSComplete, hue = 'NUMdayssincesolst',palette = 'RdBu')
# axes[0].get_legend().remove()
# axes[1].get_legend().remove()
# axes[0].set(xlabel=None)
# axes[1].set(xlabel=None)
# #sns.move_legend(axes[2], "lower center")
# plt.legend(bbox_to_anchor =(0.5,-0.3), loc='lower center',mode = "expand", ncol = 4)
# plt.tight_layout()
# plt.savefig('24 hour by days from solstice.pdf')

#moon phase bins for coloring that line plot
bins = [0, .25, .5, .75, 1]
Main_Hourly_SES_MARSComplete['moonbins'] = pd.cut(Main_Hourly_SES_MARSComplete['mooninterp'], bins)

mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="atn", 
             hue = 'moonbins',
             palette = mako4)
plt.legend(loc=(1.04, 0))
plt.savefig('atn by 24 hour no crab one panel moon bins CI.pdf')

mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="atn", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('atn by 24 hour no crab one panel moon bins CI none.pdf')

mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="detrended690Fluoro", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('detrended690Fluoro by 24 hour no crab one panel moon bins CI none.pdf')

mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="Fluoro590", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('Fluoro590 by 24 hour no crab one panel moon bins CI none.pdf')

mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="Fd6900_atn", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('Fd6900_atn by 24 hour no crab one panel moon bins CI none.pdf')

mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="F590_atn", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('F590_atn by 24 hour no crab one panel moon bins CI none.pdf')



sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="atn", 
             hue = 'Year-Week',
             palette = mako14, ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('atn by 24 hour no crab one panel.pdf', bbox_inches='tight')


mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="F690_atn", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('F690_atn by 24 hour no crab one panel moon bins CI none.pdf')

mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="hour", 
             y="Fluoro690", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('Fluoro690 by 24 hour no crab one panel moon bins CI none.pdf')


mako4 = sns.color_palette("rocket", 4)
sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="Temperature_C", 
             y="atn", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('atn by current speed no crab one panel moon bins CI none.pdf')

#does atn lag current speed


#CONTOUR MAPS
plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["Temperature_C"],palette = 'rocket')
plt.title('temp by hour and lunar illumination ')
plt.xlabel('hour')
plt.colorbar()
plt.ylabel('lunar illumination')
plt.savefig('temp by 24 hour.pdf')


plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["Speed_cm_s"], Main_Hourly_SES_MARSComplete["Temperature_C"],palette = 'rocket')
plt.title('temp by hour and lunar speed ')
plt.xlabel('hour')
plt.colorbar()
plt.ylabel('speed')
plt.savefig('temp by 24 hour speed.pdf')


#CONTOUR MAPS
plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["atn"],palette = 'rocket')
plt.title('Attenuance by hour and lunar illumination ')
plt.xlabel('hour')
plt.colorbar()
plt.ylabel('lunar illumination')
plt.savefig('atn by 24 hour.pdf')


plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["Speed_cm_s"], Main_Hourly_SES_MARSComplete["atn"],palette = 'rocket')
plt.title('atn by lunar illumination and current speed')
plt.colorbar()
plt.ylabel('current speed')
plt.xlabel('lunar illumination')
plt.savefig('atn by current speed and moon .pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["Speed_cm_s"], Main_Hourly_SES_MARSComplete["atn"])
plt.palette = 'rocket'
plt.colorbar()
plt.title('atn by lunar illumination and current speed')
plt.ylabel('current speed')
plt.xlabel('hour')
plt.savefig('atn by current speed and moon .pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["detrended690Fluoro"],palette = 'rocket')
plt.title('detrended690Fluoro by hour and lunar illumination ')
plt.xlabel('hour')
plt.ylabel('lunar illumination')
plt.savefig('detrended690Fluoro by 24 hour.pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["Fluoro590"],palette = 'rocket')
plt.title('Fluoro590 by hour and lunar illumination ')
plt.xlabel('hour')
plt.ylabel('lunar illumination')
plt.savefig('Fluoro590 by 24 hour.pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["Fd6900_atn"],palette = 'rocket')
plt.title('Fd6900_atn by hour and lunar illumination ')
plt.xlabel('hour')
plt.ylabel('lunar illumination')
plt.savefig('Fd6900_atn by 24 hour.pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["F590_atn"],palette = 'rocket')
plt.title('F590_atn by hour and lunar illumination ')
plt.xlabel('hour')
plt.ylabel('lunar illumination')
plt.savefig('F590_atn by 24 hour.pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["Fluoro690"],palette = 'rocket')
plt.title('Fluoro690 by hour and lunar illumination ')
plt.xlabel('hour')
plt.ylabel('lunar illumination')
plt.savefig('Fluoro690 by 24 hour.pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["F690_atn"],palette = 'rocket')
plt.title('F690_atn by hour and lunar illumination ')
plt.xlabel('hour')
plt.ylabel('lunar illumination')
plt.savefig('F690_atn by 24 hour.pdf')


plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["tidal_diff"],palette = 'rocket')
plt.title('tidal_diff by hour and lunar illumination ')
plt.xlabel('hour')
plt.ylabel('lunar illumination')
plt.savefig('tidal_diff by 24 hour.pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["tidal_diff"], Main_Hourly_SES_MARSComplete["Fluoro690"],palette = 'rocket')
plt.title('Fluoro690 by hour and tidal_diff ')
plt.xlabel('mooninterp')
plt.ylabel('tidal_diff')
plt.savefig('Fluoro690 by mooninterp.pdf')


# #four dimensions tenary plots
# #make arrays out of the data

#these are a mess. tried triplot but didn't get it to work


# A = np.array(Main_Hourly_SES_MARSComplete["mooninterp"])
# B = np.array(Main_Hourly_SES_MARSComplete["Speed_cm_s"])
# C = np.array(Main_Hourly_SES_MARSComplete["hour"])
# Z = np.array(Main_Hourly_SES_MARSComplete["atn"])

# from mpl_toolkits.mplot3d import Axes3D
# import matplotlib.pyplot as plt

# fig = plt.figure()
# ax = fig.add_subplot(111, projection='3d')

# sp = ax.scatter(A,C,B, s=20, c=Z)
# plt.colorbar(sp)


# # Import libraries
# from mpl_toolkits.mplot3d import Axes3D  
# import matplotlib.pyplot as plt  
# import numpy as np  
 
 
# # Creating radii and angles
# r = np.linspace(0.125, 1.0, 100)  
# a = np.linspace(0, 2 * np.pi, 
#                 100,
#                 endpoint = False)  
   
# # Repeating all angles for every radius  
# a = np.repeat(a[..., np.newaxis], 100, axis = 1)  
   
# # Creating dataset
# # x = np.append(0, (r * np.cos(a)))  
# # y = np.append(0, (r * np.sin(a)))    
# # z = (np.sin(x ** 4) + np.cos(y ** 4)) 
   
# # Creating figure
# fig = plt.figure(figsize =(16, 9))  
# ax = plt.axes(projection ='3d')  
 
# # Creating color map
# my_cmap = plt.get_cmap('hot')
   
# # Creating plot
# trisurf = ax.plot_trisurf(B, C, Z,
#                          cmap = my_cmap,
#                          linewidth = 0.2, 
#                          antialiased = True,
#                          edgecolor = 'grey')  
# fig.colorbar(trisurf, ax = ax, shrink = 0.5, aspect = 5)
# ax.set_title('Tri-Surface plot')
 
# # Adding labels
# ax.set_xlabel('surrent speed', fontweight ='bold') 
# ax.set_ylabel('hour', fontweight ='bold') 
# ax.set_zlabel('attenuance', fontweight ='bold')
     
# # show plot
# plt.show()



















cols_list = Main_Hourly_SES_MARSComplete.columns.tolist()
print(cols_list)
plot_variable_list = ['atn','Fluoro690', 'Fluoro590', 'F590_atn', 'F690_atn']

for v in plot_variable_list:
    plt.close('all')
    plt.tricontourf(Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["tidal_diff"], Main_Hourly_SES_MARSComplete[v],palette = 'rocket')
    plt.title(str(v))
    plt.xlabel('mooninterp')
    plt.ylabel('tidal_diff')
    pltname = str(v)+'.pdf'
    print(pltname)
    plt.savefig(pltname)


sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="atn", 
             y="Fluoro690", 
             hue = 'moonbins',
             palette = mako4,
             ci = None)
plt.legend(loc=(1.04, 0))
plt.savefig('F690 by atn moon bins CI none.pdf')

sns.lineplot(data=Main_Hourly_SES_MARSComplete, 
             x="atn", 
             y="Fluoro690", 
             hue = 'moonbins',
             palette = mako4)
plt.legend(loc=(1.04, 0))
plt.savefig('F690 by atn moon bins CI.pdf')

sns.scatterplot(x="atn", y="Fluoro690", hue = 'moonbins', data=Main_Hourly_SES_MARSComplete, alpha = 0.3)
sns.lmplot(x="atn", y="Fluoro690", hue="moonbins", data=Main_Hourly_SES_MARSComplete)

ax = sns.lmplot(x="atn", y="Fluoro690", hue = 'moonbins', data=Main_Hourly_SES_MARSComplete, ci=False, palette = mako4,
                 scatter_kws=dict(alpha=0.2, s=30),
                 line_kws=dict(alpha=0.7, linewidth=3))

plt.savefig('F690 by atn moon bins scatter.pdf')

plt.close('all')
plt.tricontourf(Main_Hourly_SES_MARSComplete["mooninterp"], Main_Hourly_SES_MARSComplete["atn"], Main_Hourly_SES_MARSComplete["Fluoro690"],palette = 'rocket')
plt.title('Fluoro690 by atn and moon')
plt.xlabel('mooninterp')
plt.ylabel('atn')
plt.savefig('Fluoro690 by atn mooninterp.pdf')

# plt.close('all')
# plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["Pred"], Main_Hourly_SES_MARSComplete["atn"],palette = 'rocket')
# plt.title('Attenuance by hour and tidal height')
# plt.xlabel('hour')
# plt.ylabel('tidal height (m)')
# plt.savefig('atn by 24 hour tidal height.pdf')


# plt.close('all')
# plt.tricontourf(Main_Hourly_SES_MARSComplete["hour"], Main_Hourly_SES_MARSComplete["tidal_diff"], Main_Hourly_SES_MARSComplete["atn"],palette = 'rocket')
# plt.title('Attenuance by hour and tidal_diff (m/h)')
# plt.xlabel('hour')
# plt.ylabel('tidal_diff (m/h)')
# plt.savefig('atn by 24 hour tidal_diff .pdf')

#did GAM in R because it's sooo much easier and more reliable. Internet agrees with me
#visualize data
# fig, axes = plt.subplots(4, 1, figsize=(10, 10))
# sns.scatterplot(ax=axes[0], x="mooninterp", y="atn", data=Main_Hourly_SES_MARSComplete, alpha = 0.3)
# sns.scatterplot(ax=axes[1], x="Pred", y="atn", data=Main_Hourly_SES_MARSComplete, alpha = 0.3)
# sns.scatterplot(ax=axes[2], x="tidal_diff", y="atn", data=Main_Hourly_SES_MARSComplete, alpha = 0.3)
# sns.scatterplot(ax=axes[3], x="hour", y="atn", data=Main_Hourly_SES_MARSComplete, alpha = 0.3)
# axes[0].set(ylabel="attenuance")
# axes[1].set(ylabel="attenuance")
# axes[2].set(ylabel="attenuance")
# axes[3].set(ylabel="attenuance")
# axes[0].set(xlabel="lunar illumination")
# axes[3].set(xlabel="hour")
# axes[1].set(xlabel="tidal height (m)")
# axes[2].set(xlabel='change in tidal height (m/h)')
# plt.savefig('gam scatter.pdf', bbox_inches='tight')

#Trim to period w prior to crab clog
examplehourly = trimhourly.loc['2023-07-14':'2023-08-14']  

#nocrabhourly
sns.relplot(data=examplehourly, x="datetime", y="atn", kind="line")
plt.title('no crab bot plots atn by hourone month example.pdf')
plt.xticks(rotation=45);
plt.savefig('one month example.pdf')


sns.scatterplot(x="Temperature_C", y="atn", data=Main_Hourly_SES_MARSComplete, alpha = 0.3)
