# -*- coding: utf-8 -*-

try:
   import pyfits
except:
   from astropy.io import fits as pyfits
from numpy import *
from matplotlib.pyplot import *
import os
from matplotlib.colors import LogNorm

def plot_wavelength_ft(filename_ref):
    ext_name='WAVE_DATA_FT'
    hdulist_ref = pyfits.open(filename_ref)
    wave_ft_ref = hdulist_ref[ext_name].data[0]    
    figure()    
    baseline=0#"BASE_34_S"
    x_pixels_ref = arange(len(wave_ft_ref[baseline]))
    plot(x_pixels_ref,wave_ft_ref[baseline]*1e6, "o", label = filename_ref.split("/")[-1])#, norm=LogNorm())


plot_wavelength_ft("/data/1/2019-10-17.1/reduced/GRAVITY_PARALLEL_WAVE290_0036_wave.fits")
plot_wavelength_ft("/data/1/2019-10-18/reduced_6pix/GRAVITY_PARALLEL_WAVE291_0080_wave.fits")




def plot_wavelength(waveFiles, refWaveFile):
    
    ext_name='WAVE_FIBRE_SC'
    hdulist_ref = pyfits.open(filename_ref)
    wave_sc_ref = hdulist_ref[ext_name].data[0]
    startx_ref = hdulist_ref[ext_name].header["HIERARCH ESO PRO PROFILE FULLSTARTX"]
    mode =  hdulist_ref['PRIMARY'].header["HIERARCH ESO INS POLA MODE"] + " " + hdulist_ref['PRIMARY'].header["HIERARCH ESO INS SPEC RES"]
    baseline="BASE_34_S"
    figure()    
    subplot(211)
    x_pixels_ref = arange(len(wave_sc_ref[baseline]))+startx_ref
    plot(x_pixels_ref,wave_sc_ref[baseline]*1e6, label = refWaveFile.split("/")[-1])#, norm=LogNorm())

    #for wave in wave_sc:
    #    plot(arange(len(wave))+startx,wave*1e6)#, norm=LogNorm())
    #
    #for wave in wave_sc_ref:
    #    plot(arange(len(wave))+startx_ref,wave*1e6)#, norm=LogNorm())
    for waveFile in waveFiles :
        hdulist = pyfits.open(waveFile)
        wave_sc = hdulist[ext_name].data[0]
        startx = hdulist[ext_name].header["HIERARCH ESO PRO PROFILE FULLSTARTX"]
        
        subplot(211)
        x_pixels = arange(len(wave_sc[baseline]))+startx
        plot(x_pixels,wave_sc[baseline]*1e6, label = waveFile.split("/")[-1])#, norm=LogNorm())
        
        xlabel("x pixels")
        ylabel("wavelength")
        ylim((1.95,2.50))
        legend()
        title("Comparing reference and new wavelength {}".format(mode))
    
        subplot(212)
        plot(wave_sc[baseline][0:-1]*1e6, x_pixels[0:-1]-np.interp(wave_sc[baseline][0:-1], wave_sc_ref[baseline][0:-1], x_pixels_ref[0:-1] ),label = waveFile.split("/")[-1])
        ylabel("pixel shift")
        xlabel("wavelength")
        xlim((1.95,2.50))
        legend()
        
# HIGH SPLIT 
filename_ref = "/data/1/ref_data/reduced/GRAVITY_PARALLEL_WAVE237_0082_wave.fits" # HIGH SPLIT REF
filename = ["/data/1/2019-10-12/reduced/GRAVITY_PARALLEL_WAVE286_0048_wave.fits",
            "/data/1/2019-10-15_1/reduced/GRAVITY_PARALLEL_WAVE288_0042_wave.fits",
            "/data/1/2019-10-16.2/reduced/GRAVITY_PARALLEL_WAVE289_0006_wave.fits",
            "/data/1/2019-10-17.1/reduced/GRAVITY_PARALLEL_WAVE290_0036_wave.fits"]
plot_wavelength(filename, filename_ref)


filename = "/data/1/2019-10-12/reduced/GRAVITY_PARALLEL_WAVE286_0022_wave.fits" # MEDIUM SPLIT 
filename_ref = "/data/1/ref_data/reduced/GRAVITY_PARALLEL_WAVE237_0069_wave.fits" # MEDIUM SPLIT REF
#filename_ref = "/data/1/2019-10-16.1/reduced/GRAVITY_PARALLEL_WAVE289_0069_wave.fits"
filename = "/data/1/2019-10-17.1/reduced/GRAVITY_PARALLEL_WAVE290_0023_wave.fits"
filename = ["/data/1/2019-10-12/reduced/GRAVITY_PARALLEL_WAVE286_0022_wave.fits",
            "/data/1/2019-10-15_1/reduced/GRAVITY_PARALLEL_WAVE288_0029_wave.fits",
            "/data/1/2019-10-16.1/reduced/GRAVITY_PARALLEL_WAVE289_0069_wave.fits",
            "/data/1/2019-10-17.1/reduced/GRAVITY_PARALLEL_WAVE290_0023_wave.fits"]
plot_wavelength(filename, filename_ref)

filename = "/data/1/2019-10-12/reduced/GRAVITY_PARALLEL_WAVE286_0009_wave.fits" # LOW SPLIT
filename_ref = "/data/1/2019-08-19/reduced/GRAVITY_PARALLEL_WAVE232_0092_wave.fits" # LOW SPLIT REF
filename = "/data/1/2019-10-17.1/reduced/GRAVITY_PARALLEL_WAVE290_0010_wave.fits"
filename = ["/data/1/2019-10-12/reduced/GRAVITY_PARALLEL_WAVE286_0009_wave.fits",
            "/data/1/2019-10-15_1/reduced/GRAVITY_PARALLEL_WAVE288_0016_wave.fits",
            "/data/1/2019-10-16.1/reduced/GRAVITY_PARALLEL_WAVE289_0043_wave.fits",
            "/data/1/2019-10-17.1/reduced/GRAVITY_PARALLEL_WAVE290_0010_wave.fits"]
plot_wavelength(filename, filename_ref)

