# -*- coding: utf-8 -*-
"""
Created on Mon Apr 19 07:34:52 2021

@author: Yale
"""

import numpy as np
import matplotlib.pyplot as plt
import sys
from scipy.signal import savgol_filter
from scipy import optimize
import os
import csv

plt.close('all')
 
path = r"/Volumes/AMBER1/17Feb2022.sptw/ptu/8uMDDX3X/HDF5s/DDX3X_ATP/DDX3X_ATPoutput/AO"
path = r"/Volumes/AMBER1/17Feb2022.sptw/ptu/8uMDDX3X/HDF5s/DDX3X_ATP/DDX3X_ATPoutput/AO"
#path = r"/Volumes/AMBER1/17Feb2022.sptw/ptu/RNAonly/HDF5s/HDF5soutput/AO"
path = r"/Volumes/AMBER1/09Mar2022.sptw/ptu/RNA/HDF5soutput/AO"
path = r"/Volumes/AMBER1/07Mar2022_1uMX.sptw/ptu/HDF5s/rna/rnaoutput/DL"
path = r"/Volumes/AMBER1/07Mar2022_1uMX.sptw/ptu/HDF5s/1uMDDX3X_ATP/1uMDDX3X_ATPoutput/DL"
#path = r"/Volumes/AMBER1/21Jan2022.sptw/ptu/aniso/AO/X"

path = r"/Volumes/AMBER1/02Mar2022.sptw/ptu/2uMDDX3X/HDF5soutput/AO"
path = r"/Volumes/AMBER1/9Feb2022/ptu/DDX3X/HDF5s/condaactivatepy37-fbcsvs/AO"
path = r"/Volumes/AMBER1/9Feb2022/ptu/DDX3X/HDF5s/condaactivatepy37-fbcsvs/AO/AO/ATP"
path = r"/Volumes/AMBER1/9Feb2022/ptu/DDX3X/HDF5s/condaactivatepy37-fbcsvs/AO"
#path = r"/Volumes/AMBER1/9Feb2022/ptu/DDX3X/HDF5s/condaactivatepy37-fbcsvs/AO"
path = r"/Volumes/AMBER1/02Mar2022.sptw/ptu/2uMDDX3Y/HDF5soutput/AO"
#path = r"/Volumes/AMBER1/07Mar2022_1uMX.sptw/ptu/HDF5s/1uMDDX3x_ATP/1uMDDX3X_ATPoutput/DO"
#path = r"/Volumes/AMBER1/07Mar2022_1uMX.sptw/ptu/HDF5s/1uMDDX3X/1uMDDX3Xoutput/DO"
#path = r"/Volumes/AMBER1/07Mar2022_1uMX.sptw/ptu/HDF5s/rna/rnaoutput/DL"
path = r"/Volumes/AMBER1/09Mar2022.sptw/ptu/1uMDDX3Y/HDF5soutput/DO"
#path = r"/Volumes/AMBER1/09Mar2022.sptw/ptu/RNA/HDF5soutput/DO"
path = r"/Volumes/AMBER1/17Feb2022.sptw/ptu/2uMDDX3X/HDF5s/DDX3X_ATP/DDX3X_ATPoutput/DO"
#path = r"/Volumes/AMBER1/17Feb2022.sptw/ptu/RNAonly/HDF5s/HDF5soutput/DO"
path = r"/Volumes/AMBER1/17Feb2022.sptw/ptu/2uMDDX3X/HDF5s/DDX3X/DDX3Xoutput/DO"
path = r"/Volumes/AMBER1/30Mar2022.sptw/ptu/HDF5soutput/DL"
path = r"/Volumes/AMBER1/05Apr2022.sptw/ptu/2uM_DDX3Y/HDF5soutput/AO"
path = r"/Volumes/AMBER1/05Apr2022.sptw/ptu/2uM_DDX3Y/HDF5soutput/DO"
path = r"/Volumes/AMBER1/07Apr2022.sptw/ptu/HDF5s/RNA/RNAoutput/aniso"
path = r"/Volumes/AMBER1/07Apr2022.sptw/ptu/HDF5s/1uMDDX3Y_ATP/1uMDDX3Y_ATPoutput_2/DO"
path = r"/Volumes/AMBER1/07Apr2022.sptw/ptu/HDF5s/1uMDDX3Y/1uMDDX3Youtput/DL"
path = r"/Volumes/AMBER1/06Apr2022.sptw/ptu/RNA/HDF5soutput/aniso"
path = r"/Volumes/AMBER1/06Apr2022.sptw/ptu/0.5uM_DDX3Y/HDF5s/0.5DDX3Youtput/DO"
path = r"/Volumes/AMBER1/21Jan2022.sptw/ptu/aniso/DO/X"
#path = r"/Volumes/AMBER1/21Jan2022.sptw/ptu/aniso/DO/RNA"
path = r"/Volumes/AMBER1/20Apr2022.sptw/ptu/RNA/HDF5soutput/Aniso"
path = r"/Volumes/AMBER1/20Apr2022.sptw/ptu/4uMDeltaDeltaX_2/HDF5soutput/DO"
path = r"/Volumes/AMBER1/19Apr2022.sptw/ptu/3uM_DDX3Y_1/HDF5soutput/DL"
#path = r"/Volumes/AMBER1/19Apr2022.sptw/ptu/RNA/HDF5soutput/Aniso"
path = r"/Volumes/AMBER1/26Apr2022.sptw/ptu/4uM_ddY/HDF5soutput/DL"
#path = r"/Volumes/AMBER1/26Apr2022.sptw/ptu/RNA/HDF5soutput"
path = r"/Volumes/AMBER1/20Apr2022.sptw/ptu/4uMDeltaDeltaX_2/HDF5soutput/AO"
#path = r"/Volumes/AMBER1/20Apr2022.sptw/ptu/RNA/HDF5soutput/Aniso"
path = r"/Volumes/AMBER1/05Apr2022.sptw/ptu/2uM_DDX3Y/HDF5soutput/AO"
#path = r"/Volumes/AMBER1/05Apr2022.sptw/ptu/RNA/HDF5soutput/Aniso"
path = r"/Volumes/AMBER1/13May_Cells.sptw/ptu/HDF5soutput"
path = r"/Volumes/AMBER1/02Mar2022.sptw/ptu/2uMDDX3X/HDF5soutput/AO"
path = r"/Users/amberyanas/Desktop/HDF5soutput_RNA_052022/aniso"
path = r"/Users/amberyanas/Desktop/HDF5soutput_2uMX_052022/DO"
path = r"/Volumes/AMBER1/27Jan2022.sptw/ptu/hdf5/DO"
path = r"/Volumes/AMBER1/21Jan2022.sptw/ptu/aniso/DO/X"
path = r"/Volumes/AMBER1/24May2022.sptw/ptu/RNA/HDF5soutput/Aniso"
path = r"/Volumes/AMBER1/24May2022.sptw/ptu/1uMY/HDF5soutput/DO"
path = r"/Volumes/AMBER1/25May2022.sptw/ptu/8uMX/HDF5soutput/AO"
#path = r"/Volumes/AMBER1/07Apr2022.sptw/ptu/HDF5s/1uMDDX3Y/1uMDDX3Youtput_latest/Do"
#path = r"/Volumes/AMBER1/17Feb2022.sptw/ptu/8uMDDX3X/HDF5s/DDX3X/DDX3Xoutput/DO"
path = r"/Volumes/AMBER1/16Mar2022.sptw/ptu/RNA/HDF5soutput/aniso"
path = r"/Volumes/AMBER1/16Mar2022.sptw/ptu/8uMDDX3X/HDF5soutput/DO"
path = "/Volumes/AMBER1/17Feb2022.sptw/ptu/8uMDDX3Y/HDF5s/DDX3Y/DDX3Youtput/DO"
path = r"/Volumes/AMBER1/27Apr2022.sptw/ptu/8uMY/HDF5soutput/DO"
path = r"/Volumes/AMBER1/09Mar2022.sptw/ptu/8uMDDX3Y/HDF5soutput/AO"
path = r"/Volumes/AMBER1/17Feb2022.sptw/ptu/8uMDDX3Y/HDF5s/DDX3Y_ATP/DDX3Y_ATPoutput/DO"
path = r"/Volumes/AMBER1/27Apr2022.sptw/ptu/3uMY/HDF5soutput/analysis1/DO"
path = r"/Volumes/AMBER1/26Apr2022.sptw/ptu/6uMY/HDF5soutput/DL"
#path = r"/Volumes/AMBER1/26Apr2022.sptw/ptu/RNA/HDF5soutput/aniso2"
path = r"/Volumes/AMBER1/04May2022.sptw/ptu/HDF5s/RNA/RNAoutput/aniso"
path = r"/Volumes/AMBER1/27Apr2022.sptw/ptu/3uMY/HDF5soutput/analysis1/DO"
path = r"/Volumes/AMBER1/24May2022.sptw/ptu/3uMY_1/HDF5soutput/DO"
path = r"/Volumes/AMBER1/10Mar2022.sptw/ptu/HDF5s/R475G_ATPoutput/DO"
path = r"/Volumes/AMBER1/10Mar2022.sptw/ptu/HDF5soutput/DO_new"
path = r"/Volumes/AMBER1/14Nov2022_nucl.sptw/HDF5s/csvs/aniso/DL"
path = r"/Volumes/AMBER1/08Nov2022_nucl.sptw/HDF5s/csvs/DL"
path = r"/Volumes/AMBER1/01Nov2022_nucl.sptw/HDF5s/csvs/DL"
path = r"/Volumes/AMBER1/01Nov2022_nucl.sptw/HDF5s/csvs/DL"
path = r"/Volumes/AMBER1/01Nov2022_nucl.sptw/HDF5s/csvs/DL/DL"
path = r"/Users/amberyanas/Desktop/DL"
path = r"/Volumes/AMBER1/14Nov2022_nucl.sptw/HDF5s/csvs/DL"
path = r"/Volumes/AMBER1/16Dec2022_nucl.sptw/HDF5s/csvs/Aniso_DL"
path = r"/Volumes/AMBER1/05Jan2023anneal.sptw/HDF5/HDF5s1_NoProtein/csvs/DL/xx"
#path = r"/Volumes/AMBER1/05Jan2023anneal.sptw/HDF5/HDF5s5_MBP2/csvs/DO"
#path = r"/Volumes/AMBER1/05Jan2023anneal.sptw/HDF5/HDF5s8_DDX3Y/csvs/DO"
path = r"/Volumes/AMBER4/26June2023_Mut532.sptw/GroupMeas_4/HDF5s/csvs/DL"
path = r"/Volumes/AMBER4/29June2023_Mut.sptw/GroupMeas_3/HDF5s/csvs/AO"
path = r"/Volumes/AMBER4/28June2023_Mut.sptw/GroupMeas_4/HDF5s/csvs/AO"
path = r"/Volumes/AMBER4/12July2023_Mutant.sptw/GroupMeas_2/HDF5s/csvs/AO"
#path = r"/Volumes/AMBER4/12July2023_Mutant.sptw/HDF5s/csvs/DL"
path = r"/Volumes/AMBER4/13July_2023_Mut.sptw/HDF5s/csvs/AO1"
path = r"/Volumes/AMBER4/13July_2023_Mut.sptw/HDF5s/csvs/AO1"
#path = r"/Volumes/AMBER4/13July_2023_Mut.sptw/HDF5s/csvs/DL"
path = r"/Volumes/AMBER1/02Mar2022.sptw/ptu/2uMDDX3X/HDF5soutput/AO"
path = r"/Volumes/AMBER4/18July2023_TruncMCO.sptw/GroupMeas_18/HDF5s/csvs/DL"
path = r"/Volumes/AMBER4/03Jan2023_WTX.sptw/HDF5s/csvs/AO"
path = r"/Volumes/AMBER4/04Aug2023_E449G.sptw/GroupMeas_4/HDF5s/csvs/DO"
#path = r"/Volumes/AMBER4/04Aug2023_E449G.sptw/HDF5s/csvs/DO"
path = r"/Volumes/AMBER4/02Aug2023_Mut.sptw/HDF5s/csvs/DL"
path = r"/Volumes/AMBER4/02Aug2023_Mut.sptw/GroupMeas_1/HDF5s/csvs/DO"
path = r"/Volumes/AMBER4/23Aug2023_Mut_A497V.sptw/GroupMeas_3/HDF5s/csvs/DO"
#path = r"/Volumes/AMBER4/23Aug2023_Mut_A497V.sptw/HDF5s/csvs/DO"
path = r"/Volumes/AMBER4/22Aug2023_Mut_T275M.sptw/GroupMeas_4/HDF5s/csvs/AO"
path = r"/Volumes/AMBER4/24Aug2023_R351W_Mut.sptw/GroupMeas_1/HDF5s/csvs/DL"
path = r"/Volumes/AMBER4/22Aug2023_Mut_T275M.sptw/GroupMeas_4/HDF5s/csvs_thisone/DL"
path = r"/Volumes/AMBER4/31Aug2023_G325EWT.sptw/GroupMeas_5/HDF5s/csvs/AO"
#  2   4 
path = r"/Volumes/AMBER4/7Sept2023_G325.sptw/GroupMeas_3/HDF5s/csvs/DO"
path = r"/Volumes/AMBER4/18Sept2023_A497V.sptw/HDF5s/csvs/DO"
#path = r"/Volumes/AMBER4/20Sept2023_R351_T275.sptw/GroupMeas_2/HDF5s/csvs/DO"
#path = r"/Volumes/AMBER4/13Sept2023_WT_Mut.sptw/GroupMeas_2/HDF5s/csvs/AO"
path = r"/Volumes/AMBER4/26June2023_Mut532_R534H_L505V.sptw/GroupMeas_4/HDF5s/csvs/AO"
path = r"/Volumes/AMBER4/29June2023_Mut.sptw/GroupMeas_2/HDF5s/csvs/AO"
path = r"/Volumes/AMBER4/22Aug2023_Mut_T275M.sptw/HDF5s/csvs/AO"



#AO G=1.0 T=-4 1.5,5.5 AO G=1.05 T=-4 e =1.7,6 DO T=10 G=1.1 e=2,6 (2/17)
#AO G0.95 T=-4 e=3.2,6.1 DL e=3.1,6.1 DO T=9 G=1 e = 2,6(3/9)
#AO/DL G=1 T=-4 E=2.5,6.5 |DO G=1.05 T=9 e=2.1,6 | DL (3/7)
#AO G=0.98 T=-4 RNA only -6 DO g=1.1 T=19 (1/21)
#AO G=0.1 T=-7 e=3.1,7 DL G=1.019  DO G=1.1 T=14 e=2.6,7   (2/9)
#AO G=1 T=-4 e=2,6 DL e=2,6 DO e=2,6 G=1.05 t=9 (3/2)
#AO G=0.96 T=-4 e=3.2,6.5 1.7,6  DL G=1.05 t=-4 DO G=1 T=9 (3/30)
#AO and DL G=1 T=-4 G=.9 T=9 (4/5) 
#DO T=9 G=0.9 AO G=1 T=-4 (4/7) 
# DO G0.95 T=9 AO G=1 t=-4  (4/6)
#DO t=9 g=0.9 AO G=0.9 T=-4 .... AO t=-9 .... T=17 for DO (4/19) ...
#DO g=0.95 t=9  AO G=.9 T=-4 DL G=.95 (4/20) ... G=1 for DL and AO 
#DO T=9 G=1.05 AO G=1 T-6 e=5.6,9

#AO T=-6 G.98 DO T=17/19 G=1.1 (1/27)
#DO=T=8 G=1.09 AO T=-7 G=1.05 (5/24) used t-6 for AO
#DO T=8 G=0.9, AO T=-7 or -6 G=1.13 (5/25)
# DO T=9 G=.1.05 AO T=-4 G=1 to 1.05 (DL) (3/16)
# DO T=9 G=1.00 AO T=-4 G=1 to 1.05 (DL) (4/27)
# DO T=9 G=0.90 AO T=-4 G=1.0 (4/26)
#DO T=9 G=.88 AO T=-4 G=1  (5/4)

# AO G=1 T=-4 DO T=9 G=1.1

# DL T=-18  E=5.7,10 G=1 (Nov8)
# DL T=-18  E=2.2,6 G=.95 (Nov1)
# (Dec16) G=.7 T=-7

#010523
#AO T=-12 g=.6 DL T = -12 G = 0.62 DO g=1 t=15

 # (6/27) 
 #AO G=0.9 T=-17
 #DL G=0.9 T=-17
 #DO G=1.1 T=16
 
 # (6/29) 
 #AO G=0.85 T=-10
 #DL G=0.9 T=-10
 #DO G=0.95 T=8
 
  # (6/28) 
 #AO G=0.85 T=-10
 #DL G=0.9 T=-10
 #DO G=0.9 T=9
 
 
 #(7/12)
 #AO G=0.83 T=-10
 #DL G=0.9 T=-9
 #DO G=0.9 T=15
 
 #(7/13)
 #AO G=0.9 T=-10
 #DL G=0.8 T=-9
 #DO G=1.1 T=30
 
 #7/18
 #DL G=1 T=-8
 
 #1/3/23
 #AO G=.7 T=-11 E=8.7,13
 #AO 560: G=.65 T=-11 E=8.2,13 
 
  # #(8/2)
 #AO G=0.85 T=-8
 #DL G= T=
 #DO G=0.9 T=10
 
 # #(8/4)
 #AO G=0.85 T=-9
 #DL G= T=
 #DO G=0.9 T=10
 
 # #(8/23) / 8/24 / 8/31
 #AO G=0.8 T=-8
 #DL G=0.85 T=-8
 #DO G=0.9 T=10
 
  # #(8/22)
 #AO G=0.8 T=-7
 #DL G=0.85 T=-7
 #DO G=0.9 T=10
 
  # 9/7 #9/13 9/18 9/20
 #AO G=0.8 T=-7
 #DL G=0.8 1.4 T=-7 -18
 #DO G=0.9 T=10  4.2,8
 
###########################           
            
def gfn():       # Get file names from directory
    file_list=os.listdir(path)
#    print (file_list)
    return file_list

############################

def Anis(t, A, rTau, B):
    return A*np.exp(-t/rTau) + B


############################


allfile_list = gfn()
file_list = []
six = []
print ("# of files: ", len(allfile_list))
for kf in range(len(allfile_list)):
    print (kf+1, allfile_list[kf])
    if ('SavedData' in allfile_list[kf]):
        break
    elif ('csv' in allfile_list[kf]):
        file_list.append(allfile_list[kf])
print ("\n# of csv trace files: ", len(file_list))
   
#Col = 1
autoG = 1
G = 1
tSftPar = 0
tSftPer = 8
tSfti = 0   #unless it's entered to adjust previous two shift parameters
fbeg = 300         #for Tail fitting    #200 300
fend = 400                              #300 400
expFbeg = 52 #multiply ny 32 ps  #52
expFend = 171                   #171
kf = 0


while (1):
       
    tL = []
    Per00L = []
    Par00L = []


    filename = file_list[kf]
#    print (' ')
#    print (kf, filename)

    with open(path + r"/" + filename, newline='') as csvfile:
        fContents = csv.reader(csvfile, delimiter=' ', quotechar='|')

        k = 0
        for row in fContents:
#            print (k)
#            if (k != 0):
#                print (row)
#            else:
          if (len(row) > 1):
#              print ("OK", row)
              tL.append(float(row[0].replace(',', '')))
              Per00L.append(int(row[3].replace(',', '')))
              Par00L.append(int(row[1].replace(',', '')))
          else:
              dFN = row       #data file name
              print (dFN)
#            k += 1     

    print ("Data file nema: ",dFN[0])

    tp = np.array(tL)
    Per00 = np.array(Per00L)    
    Par00 = np.array(Par00L)    

    if (tSftPer != 0):
        Per00[:-tSftPer] =  Per00[tSftPer:] 
    if (tSftPar != 0):
        Par00[:-tSftPar] =  Par00[tSftPar:] 

    nLines = len(tp)
    print ("\nNumber of data lines:", nLines)    

    nLines = nLines-3-tSftPar-tSftPer
    BLIb = int(0.8*nLines)
    BLIe = nLines-25
    
# Savitzky-Golay filter
    Per0 = savgol_filter(Per00, 31, 2)    
    Par0 = savgol_filter(Par00, 31, 2) 
    
#    title = '%d, %d, Cond: %s' % (Col, Col+2, D[0][Col-1][:-11])  
    title = filename  
    print(title) 
    
    BLIbt = max(BLIb, 0)
    BLIet = min(BLIe, nLines-20)
    
    print ("BLIbt, BLIet:", BLIbt, BLIet)
            
    PerBL = np.mean(Per0[BLIbt:BLIet])
    ParBL = np.mean(Par0[BLIbt:BLIet])    
    print ("Backgrounds: %6.2f, %6.2f" % (ParBL, PerBL))

    Par = Par0 - ParBL
    Per = Per0 - PerBL
    Par000 = Par00 - ParBL
    Per000 = Per00 - PerBL
    
    fig1, (sb1, sb2, sb3, sb4) = plt.subplots(4, figsize=(6, 10))
    tText = str(kf+1) + ": " + filename 
    fig1.suptitle(tText, fontsize=14)   
#    plot1 = plt.figure(1, figsize=(6,4 ))
#   Bin width = 0.032  
    bW = 0.032  
    t = bW*(tp - tp[0])
    
    sb1.semilogy(t, Per000, 'o', c = 'grey', markersize = 0.5)
    sb1.semilogy(t, Par000, 'o', c = 'grey', markersize = 0.5)
    sb1.semilogy(5*t, Per00, 'o', c = 'grey', markersize = 0.5)
    sb1.semilogy(5*t, Par00, 'o', c = 'grey', markersize = 0.5)
    
    sb1.semilogy(t, Per, 'ob', markersize = 1)
    sb1.semilogy(t, Par, 'or', markersize = 1)
    sb1.semilogy(5*t, Per, 'ob', markersize = 1)
    sb1.semilogy(5*t, Par, 'or', markersize = 1)
    #sb1.semilogy([t[BLIbt], t[BLIbt]], [1,100], 'lime')
    #sb1.semilogy([t[BLIet], t[BLIet]], [1,100], 'lime')
#    print ("Plot cursor, ", BLIbt, BLIet)
    sb1.set_ylim(0.1, max(Par)*2)
    sb1.set_xlim(-0.02*max(t), 1.02*max(t)) 

    sb1.grid(True)
#    sb1.set_xlabel('Time (bins)', fontsize=16)
    sb1.set_ylabel('Intensity', fontsize=14)
    sb1.set_title(title, fontsize=10)
#    plt.show()
        
    rRaw = (Par - G*Per)/(Par + 2*G*Per)
    
#    fbeg = 320
#    fend = 600
    
#    plot2 = plt.figure(2)
    sb2.plot(t, rRaw, 'or', markersize = 1)
    #sb2.plot([t[fbeg], t[fbeg]], [-0.05,0.05], 'lime')
    #sb2.plot([t[fend], t[fend]], [-0.05,0.05], 'lime')

    sb2.set_ylim(-0.1, 0.5) 
    sb2.set_xlim(0, t[400]) 
    sb2.grid(True)
#    sb2.set_xlabel('Time (bins)', fontsize=16)
    sb2.set_ylabel('Anisotropy', fontsize=14)
#    sb2.suptitle(title, fontsize=13)
#    sb2.show()
    
    lnPar = np.log(Par[fbeg:fend])
    lnPer = np.log(Per[fbeg:fend])
    slpPar, intPar = np.polyfit(t[fbeg:fend], lnPar, 1)
    slpPer, intPer = np.polyfit(t[fbeg:fend], lnPer, 1)
    try:
        tauPar = -1/slpPar
    except:
        tauPar = 1
    try:
        tauPer = -1/slpPer
    except:
        tauPer = 1
#    print ("Slopes: %6.3f, %6.3f" % (slpPar, slpPer))
    print ("Lifetimes: %6.3f, %6.3f" % (tauPar, tauPer))
       
    if (autoG == 1):
        G = np.mean(Par[fbeg:fend]/Per[fbeg:fend])
    
#    print(G)
    
    r = (Par - G*Per)/(Par + 2*G*Per)
    r000 = (Par000 - G*Per000)/(Par000 + 2*G*Per000)
    
#    print (np.mean(r[fbeg:fend]))
    
    
#    plot3 = plt.figure(3)
    sb3.semilogy(t, G*Per000, 'o', c = 'grey', markersize = 0.5)
    sb3.semilogy(t, Par000, 'o', c = 'grey', markersize = 0.5)
    sb3.semilogy(t, G*Per, 'ob', markersize = 1)
    sb3.semilogy(t, Par, 'or', markersize = 1)
    #sb3.semilogy([t[fbeg], t[fbeg]], [15,1000], 'lime')
    #sb3.semilogy([t[fend], t[fend]], [15,1000], 'lime')
    
    sb3.grid(True) 
#    sb3.set_xlabel('Time (bins)', fontsize=16)
    sb3.set_ylabel('Intensity', fontsize=14)
    sb3.set_xlim(0, t[400]) ### originl 0,400
    sb3.set_ylim(0.1, max(Par)*2)
#    sb3.suptitle(title, fontsize=13)
#    sb3.show()
    
    
    Tot = (Par + 2*G*Per) 
    
    rAv = np.sum((r[:]*(Tot[:]))/(np.sum(Tot[:])))
    
#    print (rAv)
#    print ("Condition: " , D[0][Col-1])

    A = 0.1
    rTau = 1
    B = 0.1
    AnisF = np.zeros(nLines)
    
    alpha = optimize.curve_fit(Anis, xdata = t[expFbeg:expFend]-t[expFbeg], 
      ydata = r[expFbeg:expFend], p0 = (A, rTau, B))[0]
      
    A = alpha[0]
    rTau = alpha[1]
    B = alpha[2]

    print("A, rTau, B = %.3f, %.3f, %.3f" % (A, rTau, B))

#    for k in range(int(t[expFbeg]), int(t[expFend])):
    
    for k in range(expFbeg, expFend):
        AnisF[k] = Anis(t[k]-t[expFbeg], A, rTau, B)
    
#    plot4 = plt.figure(4)
    sb4.plot(t, r000, 'o', c = 'grey', markersize = 0.5)
    sb4.plot(t, r, 'or', markersize = 1)
    #sb4.plot([t[expFbeg], t[expFbeg]], [0,0.25], 'm')
    #sb4.plot([t[expFend], t[expFend]], [-0.09,0.2], 'm')
    #sb4.plot([t[fbeg], t[fbeg]], [-0.05,0.05], 'lime')
    #sb4.plot([t[fend], t[fend]], [-0.05,0.05], 'lime')
    
    sb4.plot(t[expFbeg:expFend], AnisF[expFbeg:expFend], '-', 
             color = 'deepskyblue', markersize = 0.3)
    
    sb4.set_ylim(-0.1, 0.45) 
    sb4.set_xlim(0, t[400]) ### originl 0,400
    sb4.grid(True)
    sb4.set_xlabel('Time (ns)', fontsize=16)
    sb4.set_ylabel('Anisotropy', fontsize=14)
#    sb4.suptitle(title, fontsize=13)
  
    dOut = ('G: %5.3f, rAv: %8.5f\nTaus: %5.3f, %5.3f ns\n %.3f, %.3f, %.3f' \
            % (G, rAv, tauPar, tauPer, A, rTau, B))
    print (dOut)
    props = dict(boxstyle='round', facecolor='powderblue', alpha=1)
    #    props = dict(boxstyle='round', facecolor=(0,0,0,0), alpha=0.5, )
    #    place a text box in upper left in axes coords
  #  sb4.text(t[65], 0.65, dOut, fontsize=13, verticalalignment='center_baseline', bbox=props) #PUTMEBACK #UNDO
#    sb4.show()
    plt.show()
    plt.pause(0.6)      

        
    g = input("CR, (B)ack, (G)factor, (S)ave, (T)race shift, (I)ntvlBL, (F)itTail, (E)xpftIntvl, (Q)uit: ") 

    if ((g == "b") or (g == "B")):
        kf -= 2
#        print ("in b command kf = ", kf)
        if (kf < -1):
            kf = len(file_list) -2
                
    if g == "s" or g == "S": 
        print ('Saving Data')
        fo = open(path + r"/" + 'SavedData.csv', 'a')
        textstr = ('%s, %d, %5.3f, %8.5f, %5.3f, %5.3f, %.3f, %.3f, %.3f, %d, %d, %d\n' \
                   % (filename, kf+1, G, rAv, tauPar, tauPer, A, rTau, B, tSfti, expFbeg, expFend))
        print ("Condition, Column, G, rAv, tauPar, tauPer, A, rTau, B, tSfti, expFbeg, expFend")
        print (textstr)
        fo.write(textstr)
        fo.close() 

    if g == "t" or g == "T": 
        i = input("Type Trace shift (-30 < 0 < 30) bins: ")
        tSfti = int(i)
        if (tSfti > 30):
            tSfti = 30                     
        if (tSfti < -30):
            tSfti = -30
        if (tSfti > 0):
            tSftPar = tSfti
            tSftPer = 0
        else:
            tSftPer = -tSfti
            tSftPar = 0
#        Col -= 4 
        kf -= 1   

    if g == "i" or g == "I": 
        i = input("Type interval for BG (0 < I < %.2f), (0 < I < %.2f) ns: " %(0.001*nLines/bW, 0.001*nLines/bW))
        iSpl = i.split(',')
        print (iSpl)
        try:
            BLIb = int(float(iSpl[0])/bW)
        except:
            print ("E1")
            BLIb = int(0.8*nLines)
        try:
            BLIe = int(float(iSpl[1])/bW)
        except:
            print ("E2")
            BLIe = int(nLines-1)
        if (BLIe > nLines-1):
            BLIe = nLines-1
        if (BLIb < 0):
            BLIb = 0
            
        print ("Baseline interval: ", t[BLIb], t[BLIe], BLIb, BLIe)    
#        Col -= 4    
        kf -= 1   

    if g == "f" or g == "F": 
        i = input("Type intvl for Tail Fit (0 < F < %d), (0 < F < %d) ns: " %
           (0.001*nLines/bW, 0.001*nLines/bW))
        iSpl = i.split(',')
        print (iSpl)
        try:
            fbeg = int(float(iSpl[0])/bW)
        except:
            fbeg = int(0.1*nLines)
        try:
            fend = int(float(iSpl[1])/bW)
        except:
            fend = int(0.2*nLines)
        if (fend > nLines-20):
            fend = nLines-20
        if (fbeg < 0):
            fbeg = 0
        print ("Tailfit interval: %.2f, %.2f, %d, %d" % 
               (t[fbeg], t[fend], fbeg, fend))    

    #       Col -= 4   
        kf -= 1   
        
    if g == "e" or g == "E": 
        i = input("Type intvl for Exp Fit of r decay (0 < E < %d), (0 < E < %d) ns: " %(0.001*nLines/bW, 0.001*nLines/bW))
        iSpl = i.split(',')
        print (iSpl)
        try:
            expFbeg = int(float(iSpl[0])/bW)
        except:
            expFbeg = 50
        try:
            expFend = int(float(iSpl[1])/bW)
        except:
            expFend = int(0.75*nLines)
        if (expFend > nLines-20):
            expFend = nLines-20
        if (expFbeg < 0):
            expFbeg = 0
        print ("Expfit interval: %.2f, %.2f, %d, %d" % 
               (t[expFbeg], t[expFend], expFbeg, expFend))    

    #       Col -= 4   
        kf -= 1   


    if g == "g" or g == "G": 
        i = input("Type G (0 for auto): ")
        if (float(i) == 0):
            autoG = 1                     
        else:
            G = float(i)
            autoG = 0
#        Col -= 4    
        kf -= 1   
                            
    if g == "q" or g == "Q":
        plt.close("all")
#        print ('Ending i =', i)
        sys.exit()

    kf += 1
    print ("kf = ", kf)
    if (kf > len(file_list)-1):
        kf = 0
    plt.close('all')
        
