import h5py
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
import matplotlib.colors as colors
import matplotlib.cm as cm
mpl.rcParams.update({'font.size': 22})
mpl.rcParams['figure.figsize'] = 20, 10
plt.rcParams['axes.facecolor'] = 'black'

cmap = colors.LinearSegmentedColormap.from_list('incr_alpha', [(0, (*colors.to_rgb('RdYlBu'),0)), (1, 'RdYlBu')])

year=2022 #2020
month=1 #10
day=17 #6
hour=5 #0
minute=0
second=0

if second==0:
	second+=1

for temp_days in range(31):
    days=temp_days+day
    for temp_hours in range(24-hour):
        hours = hour+temp_hours
        try:
            ib_file = h5py.File(f'{year:04d}_{month:02d}_{days:02d}/icebear_3d_01dB_1000ms_vis_{year:02d}_{month:02d}_{days:02d}_{hours:02d}_prelate_bakker.h5','r')
#            ib_file = h5py.File(f'~/temp-data-dir/brian_level12022_01_17/{year:04d}_{month:02d}_{days:02d}/icebear_3d_01dB_1000ms_vis_{year:02d}_{month:02d}_{days:02d}_{hours:02d}_prelate_bakker_antenna0.h5','r')
        except:
            continue
        print(hours)
        #print(ib_file.keys())

        for temp_minutes in range(60-minute):
            minutes = minute+temp_minutes
            for temp_seconds in range(60-second):
                seconds=(second+temp_seconds)*1000
                
                try:
                    if (ib_file[f'data/{hours:02d}{minutes:02d}{seconds:05d}/data_flag'][:]==True):
                        #example to plot a spectra
                        icebear_time = (hours*60*60+minutes*60+(seconds/1000))/(60*60)
                        logsnr = np.abs(ib_file[f'data/{hours:02d}{minutes:02d}{seconds:05d}/snr_dB'][:])
                        doppler = ib_file[f'data/{hours:02d}{minutes:02d}{seconds:05d}/doppler_shift'][:]
                        range_values = np.abs(ib_file[f'data/{hours:02d}{minutes:02d}{seconds:05d}/rf_distance'][:])
                        xspectra_values = ib_file[f'data/{hours:02d}{minutes:02d}{seconds:05d}/antenna_xspectra'][:]
                        spectra_values = ib_file[f'data/{hours:02d}{minutes:02d}{seconds:05d}/antenna_spectra'][:]

                        #print(len(logsnr))

                        inx = np.where(logsnr>1.0)

                        plt.subplot(2,1,2)
                        plt.scatter(np.ones(len(range_values[inx[0]]))*icebear_time,range_values[inx[0]],c=doppler[inx[0]]*3.03,vmin=-900.0,vmax=900.0,s=3,cmap='jet_r')#,alpha=(logsnr/60+0.5))
                        plt.subplot(2,1,1)
                        plt.scatter(np.ones(len(range_values[inx[0]]))*icebear_time,range_values[inx[0]],c=logsnr[inx[0]],vmin=0.0,vmax=20.0,s=3,cmap='plasma_r')#,alpha=(logsnr/60+0.5))
                except:
                    break
            second=0
        minute=0
    hour=0

    plt.subplot(2,1,2)
    cbar = plt.colorbar()
    cbar.set_label('Doppler (m/s)')
    plt.xlabel('Time (hours)')
    plt.ylabel('RF Distance (km)')
    plt.ylim(0,2500)
    plt.xlim(0,24.0)
    plt.grid()

    plt.subplot(2,1,1)
    cbar = plt.colorbar()
    cbar.set_label('SNR (dB)')
    plt.ylabel('RF Distance (km)')
    plt.title(f'{year:04d}-{month:02d}-{days:02d} ICEBEAR Summary Plot')
    plt.ylim(0,2500)
    plt.xlim(0,24.0)
    plt.grid()

    plt.savefig(f'{year:04d}_{month:02d}_{days:02d}.png')
#    plt.savefig(f'{year:04d}_{month:02d}_{days:02d}_antenna0.png')
    plt.close()
    print('plot saved')
