import time
from pylab import *
from datetime import datetime
import matplotlib.pyplot as plt
import numpy as np
import numpy.ma as ma
from matplotlib.colors import LogNorm
from scipy.optimize import leastsq
from matplotlib import dates as pltdates
import time
import datetime as dates
from datetime import datetime
from datetime import timedelta
import matplotlib.dates as mdates
import os
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 
from matplotlib.backends.backend_pdf import PdfPages

#datearray=[(datetime(year[date],1,1,0)+timedelta(doy[date]-1,sec[date])) for date in range(len(year))]
#pp= PdfPages('contour_relative.pdf')
#  pp.savefig()
#  plt.close()
#pp.close()


# delete old plot
os.system("rm plots/*/event*")


import colormaps as cmaps
plt.register_cmap(name='viridis', cmap=cmaps.viridis)
plt.set_cmap(cmaps.viridis)


def daymontodoy(year,mon,day):
  mydate=dates.datetime(int(year),int(mon),int(day))
  return mydate.strftime("%j")

def doytodaymon(year,doy):
  mydate=dates.datetime(int(year),1,1)+date.timedelta(int(doy)-1)
  return mydate.month,mydate.day

#event, day, mon, year, hour, minute=np.loadtxt("../gle_list_readable_ascii_soho_age.dat", unpack=True)
event,year, mon,day, hour,minute=np.loadtxt("onset_list_readable.txt",unpack=True)


datearray=[(datetime(int(year[date]),int(mon[date]),int(day[date]),int(hour[date]),int(minute[date]))) for date in range(len(year)) ]


execfile("interval.txt")

from matplotlib import cm
colors = [ cm.jet(x) for x in linspace(0,1, len(event) ) ]


file_names = [1 for fn in os.listdir('stopping_spectra/spec_data/event_%03d/'%event[0]) if fn.endswith('.spec')]
number_of_specs=len(file_names)

mymec="w"
for i in range(len(event)):
  print i+1, len(event),event[i]
  if True:  #try:
    ################# stopping spectra
    tevent,tday,tmon,tyear,thour,tminute=event[i], day[i], mon[i], year[i], hour[i], minute[i]
    shour,ehour=thour,thour
    sminute=tminute+mydt1
    eminute=tminute+mydt1+mydt2
    while sminute>=60:
      sminute-=60
      shour+=1
    while eminute>=60:
      eminute-=60
      ehour+=1

    fig=plt.figure(figsize=(11.7,8.3))  #plt.figure()
    plt.title("Event # %03d - %02d.%02d.%04d %02d:%02d-%02d:%02d UT"%(tevent,tday,tmon,tyear,shour,sminute,ehour,eminute))
    folder="stopping_spectra/spec_data/event_%03d/" %tevent
    for i in range(4):
      if i==0:  file="%s/spectrum_e.dat"%folder
      if i==1: file="%s/spectrum_p.dat"%folder
      if i==2: file="%s/spectrum_he.dat"%folder
      if i==3: file="%s/spectrum_rl2.dat"%folder
      data=np.loadtxt(file)
      if i<3:
        y=data[:,1]
        x=data[:,0]
        lerr=data[:,2]
        rerr=data[:,3]
      else:
        x_e,lerr_e,rerr_e,y_e=data[:,0],data[:,1],data[:,2],data[:,3]
        x_ion,lerr_ion,rerr_ion,y_p,y_he=data[:,4],data[:,5],data[:,6],data[:,7],data[:,8]
      if i==0:  plt.errorbar(x, y, xerr=[lerr,rerr],fmt='bo-',label='e (PHA)',mec=mymec)
      if i==1:  plt.errorbar(x, y, xerr=[lerr,rerr],fmt='ro-',label='p (PHA)',mec=mymec)
      if i==2:  plt.errorbar(x/4., y, xerr=[lerr/4.,rerr/4.],fmt='go-',label='he (PHA)',mec=mymec)
      if i==3:  
        plt.errorbar(x_e,y_e,xerr=[lerr_e,rerr_e],fmt='cs-',label='e (RL2)',mec=mymec)
        plt.errorbar(x_ion,y_p,xerr=[lerr_ion,rerr_ion],fmt='ms-',label='p (RL2)',mec=mymec)
        plt.errorbar(x_ion,y_he,xerr=[lerr_ion,rerr_ion],fmt='ys-',label='he (RL2)',mec=mymec)
        #plt.legend(ncol=2)

    ################# penetrating spectra

    file_names2 = sorted((fn for fn in os.listdir('penetrating_spectra/spec_data/event_%03d/.' %tevent) if fn.endswith('.spec')))
    for this_spec in file_names2:
      ene,inte,error=np.loadtxt("penetrating_spectra/spec_data/event_%03d/%s" %(tevent,this_spec),unpack=True)
      this_label=this_spec.split("_")[1]
      this_label=this_label.split(".")[0]
      this_label_time=this_label.split(";")[1].split("-")[0]+" - "+this_label.split(";")[2]
      this_label_doy=this_label.split(";")[0]
      dt=int(this_label.split(";")[2].split(":")[0])-int(this_label.split(";")[1].split("-")[0].split(":")[0])
      label_sh=int(this_label.split(";")[2].split(":")[0])
      if int(this_label.split(";")[2].split(":")[1])>=50: 
        dt+=1
        label_sh+=1
      plot_count=this_spec.split("_")[0]
      this_label="p (penetrating)" 
      sim='o'
      ncolor="k"


      plt.errorbar(ene,inte,ls=sim,color=ncolor,alpha=1,yerr=error,mec=mymec)
      plt.plot(ene,inte,sim,color=ncolor,label=this_label,alpha=1,mec=mymec)



    ################## other plot stuff
    plt.xscale("log")
    plt.yscale("log")
    plt.xlim(0.2,2000)
    plt.ylim(1e-5,1e5)
    plt.xlabel("E / MeV/nuc")
    plt.ylabel("I / $(s\ sr\ cm^2\ MeV/nuc)^{-1}$")
    
    plt.grid()
    plt.legend()  #prop={'size':6})
    plt.savefig("plots/pdfs/event_#%03d.pdf" %tevent)
    plt.savefig("plots/pngs/event_#%03d.png" %tevent)
    plt.close()
