# -*- coding: utf-8 -*-
"""
Apr 03 2025
Very messy data folder; going one by one, I guess...

"""

import matplotlib.pyplot as plt
from numpy import asarray,fromfile,zeros
from os import chdir

date = "20250411"
chdir("/data/CITB/TV4/"+date)
roi = [1500,2000]

## Spectral cal "by eye" from methane absorption features
xx = asarray(range(513))*0.7+2034

shape = [513,3072]
bck = fromfile(date+" Spectralon",dtype='f4').reshape(shape)
drk = fromfile(date+" DARK",dtype='f4').reshape(shape)
bck -= drk

bgk = zeros(513)
for i in range(1700,1900):
    bgk += bck[:,i]
    
bgk /= 200

def parseafile(file):
    spc1 = fromfile(date+" "+file,dtype='f4').reshape(shape)
    img = spc1-drk

    spc = zeros(513)
    for i in range(1700,1900):
        spc += img[:,i]

    spc /= 200

    pa = plt.figure()
    plt.xlabel("Detector column"); plt.ylabel("spectral row")
    plt.imshow(img,interpolation=None,filternorm=False)
    #plt.clim(0,400); 
    k = img.reshape(shape[0]*shape[1]); k.sort()
    plt.clim(0,k[-100]); plt.xlim(roi); plt.colorbar()
    plt.title("data minus darks")
    plt.show()
    pa.savefig(date+' '+file+' bright.png')

# spectrum 'relative' to background
    sprel = spc/bgk
    p3=plt.figure();plt.plot(xx,sprel,linewidth=.5)
    plt.xlabel(r"$\lambda$[nm]"); plt.ylabel("relative brightness")
    plt.title(file+", relative to spectralon")
    plt.show()
    p3.savefig(date+' '+file+' spcnrm.png')
    
    io = open(date+" CITB "+file+".csv",mode="w")
    for i in range(1,513): 
        print("%6.3f, %6.3f" % (xx[i],sprel[i]),file=io)
    io.close()

files = ["Hectorite","Hectorite 2","Montmorillonite","Montmorillonite 2",\
         "Montmorillonite pebbles","Kaolinite small rock","Bastnaesite",\
         "Buddingtonite","SA Ca-1 Hectorite A","SA Ca-1 Hectorite B",\
             "SA Ca-1 SepNev", "SapCa","Robs Kaolinite"]
    
for f in files:
    parseafile(f)

bck = fromfile(date+" DSP Ge Spectralon",dtype='f4').reshape(shape)
drk = fromfile(date+" DSP Ge DARK",dtype='f4').reshape(shape)
bck -= drk

bgk = zeros(513)
for i in range(1700,1900):
    bgk += bck[:,i]
    
bgk /= 200

files = ["DSP Ge SapCa","DSP Ge SepNev","DSP Ge SA Ca-1 Hectorite powder A",\
         "DSP Ge SA Ca-1 Hectorite powder B","DSP Ge Bastnaesite with mask",\
         "DSP Ge Robs Kaolinite","DSP Ge AlphaWipe cloth"]

for f in files:
    parseafile(f)
