# -*- coding: utf-8 -*-
"""
Created on Sat Oct  9 20:54:20 2021

@author: ChungWeberPC_19
"""
#import sleepy_revision_HA
import sleepy
import matplotlib.pylab as plt
import seaborn as sns
import os
import re
import sys
import numpy as np
import pandas as pd
import pingouin as pg
import random
import scipy.stats as stats

random.seed(2309)
plt.ion()

mathr=20
csv_path = r'D:\POA Excitation\Processed Recordings'

recalc = True
psave = False
nboot = 10000

ppath = r'D:\POA Excitation\Processed Recordings'
group='5sec_eyfp'
pre=200
post=200
recordings=sleepy.load_dose_recordings(ppath, 'vglut chr2 final.txt')[1][group]


# for all experiments calculate the bootstrap distribution and average mouse values;
# save them in folder csv_path
if recalc:
 
        _,_,df_mouse, df_stats = sleepy.laser_brainstate_bootstrap_withMA(ppath, recordings,pre, post, nboots=nboot, bootstrap_mode=0, ma_thr=mathr)
        
        label = os.path.split(ppath)[1] 
        df_mouse.to_csv(os.path.join(csv_path, 'df_mouse_%s.csv'%label), index=False)
        df_stats.to_csv(os.path.join(csv_path, 'df_boots_%s.csv'%label), index=False)
        print('Done with experiment %s.' % label)

sleepy.set_fontsize(16)
sleepy.set_fontarial()
df_stats_all = pd.DataFrame()
df_mouse_all = pd.DataFrame()

label = os.path.split(ppath)[1] 

df_mouse = pd.read_csv(os.path.join(csv_path, 'df_mouse_%s.csv'%label))
df_stats = pd.read_csv(os.path.join(csv_path, 'df_boots_%s.csv'%label))

print(df_mouse)

df_mouse=df_mouse[df_mouse.laser != 'diff']
print(df_mouse)
df_mouse=df_mouse[df_mouse.state != 'ratio']
print(df_mouse)

dfplot_orig=pd.melt(df_mouse, id_vars=['mouse', 'laser','state'], value_vars='perc')
dfplot_orig['group']=group
dfplot_orig.to_csv(os.path.join(csv_path, str(group) + '.csv'), index=False)

difflist=[]
states=['Wake', 'NREM', 'REM', 'MA']
for s in states:
        
    dfplot=dfplot_orig[dfplot_orig.state==s]
   
    compgroups=dfplot.mouse.unique()
   
    for m in compgroups:
       
        mousevalues=dfplot[dfplot.mouse==m]
        nolase=mousevalues[mousevalues.laser=='no']['value']
        yeslase=mousevalues[mousevalues.laser=='yes']['value']
        difference=yeslase.subtract(nolase.values)
       
        diff_df=pd.DataFrame()
        
        diff_df['difference']=difference
        diff_df['mouse']=m
        diff_df['state']=s
        difflist.append(diff_df)
    dotcolors=['black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black','black']
    indmousecolor=sns.set_palette(sns.color_palette(dotcolors))
        
    ax=sns.relplot(x='laser', y='value', hue='mouse', kind='line',sort=False ,palette=indmousecolor, linewidth=0.5, aspect=0.7,data=dfplot)  #plots each mouse separately

    colors=['lightgray', 'lightblue']
    mycolors=sns.set_palette(colors)
    ax=sns.barplot(data=dfplot,x='laser', y='value',palette=mycolors,  ci=68, errwidth=0.5, capsize=0.05)
    ax.set(ylim=[0,80])
    ax.set_title(s)
    plt.show()
    statistics=stats.ttest_rel(dfplot[dfplot.laser=='no']['value'], dfplot[dfplot.laser=='yes']['value'])
    print( 'Stats for ' + str(s) + ':  '+ str(statistics))
    statistics=pg.ttest(dfplot[dfplot.laser=='no']['value'],dfplot[dfplot.laser=='yes']['value'], paired=True )
    print( 'Stats for ' + str(s) + ': ')

    pg.print_table(statistics)
   
dataframe_diff=pd.concat(difflist)
print(dataframe_diff[dataframe_diff.state=='Wake'].sem())

