#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 19 14:27:33 2017

@author: jfiser

create daily plot of riometer data
"""
import sys,os
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as md
from matplotlib.ticker import FormatStrFormatter
#import matplotlib.cbook as cbook
from read_file import *
import datetime as dt
from matplotlib import rcParams
rcParams.update({'figure.autolayout': True})

#----------------------------------------------------------------
path='/mnt/saver2/Recv_33Mhz/'  #path to data archive
printpath='/home/jifi/Pictures/riometer/'
N=1500  #width of the window for moving average, should be odd
c1=0.001888 #calibration: dBm=c1*y+c2
c2=-182.824
#----------------------------------------------------------------

year=int(sys.argv[1])
month=int(sys.argv[2])
day=int(sys.argv[3])
y0=float(sys.argv[4])
y1=float(sys.argv[5])
#year=2018
#month=1
#day=1
d=dt.date(year,month,day)
pathf=os.path.join(path,d.strftime("%Y"),d.strftime("%Y.%m"),d.strftime("%y%m%d"))+".ba1"
data=read_file(pathf,0.04,0)
if data:
    t=data[0]
    y=c1*data[1]+c2
    x=[None]*len(t)
    xav=[None]*1440
    av=np.zeros(1440)
    for i in range(len(t)):
        hour=int(t[i]/60/60)
        if hour>23:
            break
        minute=int((t[i]-hour*60*60)/60)
        second=int(t[i]-hour*60*60-minute*60)
        milisec=int(((t[i]-hour*60*60-minute*60)%1)*1000)
        x[i]=dt.datetime(year,month,day,hour,minute,second,milisec)
        ind=int(hour*60+minute)
        if av[ind]==0:
            av[ind]=y[i]
        else:
            av[ind]=np.mean([av[ind],y[i]])
        xav[ind]=dt.datetime(year,month,day,hour,minute,0)
        lasti=i
    y=y[0:lasti]
    x=x[0:lasti]
    yc=np.convolve(y, np.ones((N,))/N, mode='valid')
    y=yc
    if N%2:
        x=x[N//2:-N//2]
    else:
        x=x[N//2-1:-N//2]
#   x=xav
#   y=av
    fig,ax=plt.subplots(1,1,dpi=300)
    ax.plot(x,y)
    xformatter=md.DateFormatter("%H:%M")
    xlocator=md.HourLocator(interval=3)
    xlocator_minor=md.HourLocator(interval=1)
    ax.set_xlim(dt.datetime(year,month,day,0,0,0),dt.datetime(year,month,day,0,0,0)+dt.timedelta(days=1))
    ax.set_ylim(y0,y1)
    ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))
    ax.xaxis.set_major_locator(xlocator)
    ax.xaxis.set_minor_locator(xlocator_minor)
    ax.xaxis.set_major_formatter(xformatter)
    plt.title(d.strftime("%Y-%m-%d"))
    plt.grid(which='both')
    plt.xlabel("time (UT)")
    plt.ylabel("dBm")
    plt.savefig(os.path.join(printpath,d.strftime("%Y"),d.strftime("%y%m%d")+".png"))