#####################################################################################
#Code to create non-grid plots for paired objects.
#
#-Run runMODE.py first to create the netCDF files (modify mode_config for MODE sensitivity studies)
#-Run createCSV.py to create a csv of paired objects
#-Run createCSV_simpleobj.py to create a csv of simple objects
#-Run plotting.py to create non-grid plots for paired objects
#-Run plotting_grid.py to create grid plots for paired objects
#-Run plotting_grid_simpleobj.py to create grid plots for simple objects (needs work)
#
#Created in the summer/fall of 2020 by CLC, editted by MJE on 20210601.
#Additional modifications by AJ throughout summer of 2021.
#Further documented by MJE. 20210921.
#
######################################################################################


#!/usr/bin/python
import pygrib
import sys
import subprocess
import string
import gzip
import time
import os
#from netCDF4 import Dataset
import numpy as np
import datetime
import csv
import math
import haversine
import glob
import cartopy.crs as ccrs                   # import projections
import cartopy.feature as cf                 # import features
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as pyplot
mpl.use('Agg') #So plots can be saved in cron
import matplotlib.pyplot as plt
from windrose import WindroseAxes
import matplotlib.cm as cm
import cartopy_maps
import importlib
from scipy.io import netcdf
from netCDF4 import Dataset
from scipy import ndimage
from scipy import stats
from scipy import interpolate
from mpl_toolkits.axes_grid1 import make_axes_locatable
from scipy.ndimage.filters import gaussian_filter

#Load predefined functions
import METConFigGenV100
import METLoadEnsemble
import METPlotEnsemble
importlib.reload(METConFigGenV100)
importlib.reload(METLoadEnsemble)
importlib.reload(METPlotEnsemble)

#######################LIST OF VARIABLES########################################################
FIG_DIR      = 'hpc@vm-lnx-rzdm01:/home/people/hpc/ftp/erickson/lapenta/bar_graphs'
FIG_DIR_ROSE = 'hpc@vm-lnx-rzdm01:/home/people/hpc/ftp/erickson/lapenta/rose'
working_dir  = '/export/hpc-lw-dtbdev5/merickson/code/python/lapenta/work/'
validday     = 1
ero_category = 'SLGT'
################################################################################################

#Define the output file
latlon = working_dir+'latlon_vday'+str(validday)+'_ERO'+ero_category+'.csv'

#initial
lon_mod=[]
lat_mod=[]
lon_obs=[]
lat_obs=[]
date=[]
valid=[]
magnitude=[]
angle=[]
area_obs=[]
area_mod=[]
#jja
lon_mod_jja=[]
lat_mod_jja=[]
lon_obs_jja=[]
lat_obs_jja=[]
date_jja=[]
valid_jja=[]
magnitude_jja=[]
angle_jja=[]
area_obs_jja=[]
area_mod_jja=[]
#son
lon_mod_son=[]
lat_mod_son=[]
lon_obs_son=[]
lat_obs_son=[]
date_son=[]
valid_son=[]
magnitude_son=[]
angle_son=[]
area_obs_son=[]
area_mod_son=[]
#djf
lon_mod_djf=[]
lat_mod_djf=[]
lon_obs_djf=[]
lat_obs_djf=[]
date_djf=[]
valid_djf=[]
magnitude_djf=[]
angle_djf=[]
area_obs_djf=[]
area_mod_djf=[]
#mam
lon_mod_mam=[]
lat_mod_mam=[]
lon_obs_mam=[]
lat_obs_mam=[]
date_mam=[]
valid_mam=[]
magnitude_mam=[]
angle_mam=[]
area_obs_mam=[]
area_mod_mam=[]

target=open(latlon,'r')
alllines=target.readlines()
for line in alllines:
	values=line.strip().split(',')
	date=np.append(date,float(values[0][0:8]))
	valid=np.append(valid,values[1])
	lat_mod=np.append(lat_mod,float(values[2]))
	lon_mod=np.append(lon_mod,float(values[3]))
	area_mod=np.append(area_mod,float(values[4]))
	lat_obs=np.append(lat_obs,float(values[5]))
	lon_obs=np.append(lon_obs,float(values[6]))
	area_obs=np.append(area_obs,float(values[7]))
	magnitude=np.append(magnitude,float(values[8]))
	angle=np.append(angle,float(values[9]))
	#June,July,August
	if np.float(values[0][4:6])==6 or np.float(values[0][4:6])==7 or np.float(values[0][4:6])==8:
		#print('jja')
		#print(values[0][0:8])
		date_jja=np.append(date_jja,float(values[0][0:8]))
		valid_jja=np.append(valid_jja,values[1])
		lat_mod_jja=np.append(lat_mod_jja,float(values[2]))
		lon_mod_jja=np.append(lon_mod_jja,float(values[3]))
		area_mod_jja=np.append(area_mod_jja,float(values[4]))
		lat_obs_jja=np.append(lat_obs_jja,float(values[5]))
		lon_obs_jja=np.append(lon_obs_jja,float(values[6]))
		area_obs_jja=np.append(area_obs_jja,float(values[7]))
		magnitude_jja=np.append(magnitude_jja,float(values[8]))
		angle_jja=np.append(angle_jja,float(values[9]))
	#September,October,November
	elif np.float(values[0][4:6])==9 or np.float(values[0][4:6])==10 or np.float(values[0][4:6])==11:
		#print('son')
		#print(values[0][0:8])
		date_son=np.append(date_son,float(values[0][0:8]))
		valid_son=np.append(valid_son,values[1])
		lat_mod_son=np.append(lat_mod_son,float(values[2]))
		lon_mod_son=np.append(lon_mod_son,float(values[3]))
		area_mod_son=np.append(area_mod_son,float(values[4]))
		lat_obs_son=np.append(lat_obs_son,float(values[5]))
		lon_obs_son=np.append(lon_obs_son,float(values[6]))
		area_obs_son=np.append(area_obs_son,float(values[7]))
		magnitude_son=np.append(magnitude_son,float(values[8]))
		angle_son=np.append(angle_son,float(values[9]))
	#December,Jan,Feb
	elif np.float(values[0][4:6])==12 or np.float(values[0][4:6])==1 or np.float(values[0][4:6])==2:
		#print('djf')
		#print(values[0][0:8])
		date_djf=np.append(date_djf,float(values[0][0:8]))
		valid_djf=np.append(valid_djf,values[1])
		lat_mod_djf=np.append(lat_mod_djf,float(values[2]))
		lon_mod_djf=np.append(lon_mod_djf,float(values[3]))
		area_mod_djf=np.append(area_mod_djf,float(values[4]))
		lat_obs_djf=np.append(lat_obs_djf,float(values[5]))
		lon_obs_djf=np.append(lon_obs_djf,float(values[6]))
		area_obs_djf=np.append(area_obs_djf,float(values[7]))
		magnitude_djf=np.append(magnitude_djf,float(values[8]))
		angle_djf=np.append(angle_djf,float(values[9]))
	#March,April,May
	elif np.float(values[0][4:6])==3 or np.float(values[0][4:6])==4 or np.float(values[0][4:6])==5:
		#print('mam')
		#print(values[0][0:8])
		date_mam=np.append(date_mam,float(values[0][0:8]))
		valid_mam=np.append(valid_mam,values[1])
		lat_mod_mam=np.append(lat_mod_mam,float(values[2]))
		lon_mod_mam=np.append(lon_mod_mam,float(values[3]))
		area_mod_mam=np.append(area_mod_mam,float(values[4]))
		lat_obs_mam=np.append(lat_obs_mam,float(values[5]))
		lon_obs_mam=np.append(lon_obs_mam,float(values[6]))
		area_obs_mam=np.append(area_obs_mam,float(values[7]))
		magnitude_mam=np.append(magnitude_mam,float(values[8]))
		angle_mam=np.append(angle_mam,float(values[9]))

if ero_category=='SLGT':
        bin =  [0,50,100,150,200,250,300,350,400,450,500]
elif ero_category=='MDT':
        bin =  [0,25,50,75,100,125,150,175,200,250,300]
elif ero_category=='HIGH':
        bin = [0,20,40,60,80,100,120,140,160,170,180]

####################################Displacement calculations and plotting######################################################################################
#southern plains jja
date_jja_sp=[]
valid_jja_sp=[]
lon_mod_jja_sp=[]
lat_mod_jja_sp=[]
area_mod_jja_sp=[]
lon_obs_jja_sp=[]
lat_obs_jja_sp=[]
area_obs_jja_sp=[]
magnitude_jja_sp=[]
angle_jja_sp=[]

for ele in range(0,len(date_jja)):
	if lat_obs_jja[ele] > 25 and lat_obs_jja[ele] <= 38 and lon_obs_jja[ele] > -105 and lon_obs_jja[ele] <= -90 \
		and lat_mod_jja[ele] > 25 and lat_mod_jja[ele] <= 38 and lon_mod_jja[ele] > -105 and lon_mod_jja[ele] <= -90: 
	
		date_jja_sp=np.append(date_jja_sp,date_jja[ele])
		valid_jja_sp=np.append(valid_jja_sp,valid_jja[ele])
		lat_mod_jja_sp=np.append(lat_mod_jja_sp,lat_mod_jja[ele])
		lon_mod_jja_sp=np.append(lon_mod_jja_sp,lon_mod_jja[ele])
		area_mod_jja_sp=np.append(area_mod_jja_sp,area_mod_jja[ele])
		lat_obs_jja_sp=np.append(lat_obs_jja_sp,lat_obs_jja[ele])
		lon_obs_jja_sp=np.append(lon_obs_jja_sp,lon_obs_jja[ele])
		area_obs_jja_sp=np.append(area_obs_jja_sp,area_obs_jja[ele])
		magnitude_jja_sp=np.append(magnitude_jja_sp,magnitude_jja[ele])
		angle_jja_sp=np.append(angle_jja_sp,angle_jja[ele])
#print(lat_obs_jja_sp)
#print(lon_obs_jja_sp)

if len(angle_jja_sp) > 0:
	#windrose plotting jja southern plains
	ax = WindroseAxes.from_ax()
	ax.bar(angle_jja_sp, magnitude_jja_sp, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southern Plains JJA',fontsize=14)
	plt.savefig(working_dir+'rose_jja_sp_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_jja_sp_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)




#southern plains son
date_son_sp=[]
valid_son_sp=[]
lon_mod_son_sp=[]
lat_mod_son_sp=[]
area_mod_son_sp=[]
lon_obs_son_sp=[]
lat_obs_son_sp=[]
area_obs_son_sp=[]
magnitude_son_sp=[]
angle_son_sp=[]

for ele in range(0,len(date_son)):
	if lat_obs_son[ele] > 25 and lat_obs_son[ele] <= 38 and lon_obs_son[ele] > -105 and lon_obs_son[ele] <= -90\
		and  lat_mod_son[ele] > 25 and lat_mod_son[ele] <= 38 and lon_mod_son[ele] > -105 and lon_mod_son[ele] <= -90:

		date_son_sp=np.append(date_son_sp,date_son[ele])
		valid_son_sp=np.append(valid_son_sp,valid_son[ele])
		lat_mod_son_sp=np.append(lat_mod_son_sp,lat_mod_son[ele])
		lon_mod_son_sp=np.append(lon_mod_son_sp,lon_mod_son[ele])
		area_mod_son_sp=np.append(area_mod_son_sp,area_mod_son[ele])
		lat_obs_son_sp=np.append(lat_obs_son_sp,lat_obs_son[ele])
		lon_obs_son_sp=np.append(lon_obs_son_sp,lon_obs_son[ele])
		area_obs_son_sp=np.append(area_obs_son_sp,area_obs_son[ele])
		magnitude_son_sp=np.append(magnitude_son_sp,magnitude_son[ele])
		angle_son_sp=np.append(angle_son_sp,angle_son[ele])


#print(lat_obs_son_sp)
#print(lon_obs_son_sp)

if len(angle_son_sp) > 0:
	#windrose plotting son southern plains
	ax = WindroseAxes.from_ax()
	ax.bar(angle_son_sp, magnitude_son_sp, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southern Plains SON',fontsize=14)
	plt.savefig(working_dir+'rose_son_sp_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_son_sp_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

#southern plains djf
date_djf_sp=[]
valid_djf_sp=[]
lon_mod_djf_sp=[]
lat_mod_djf_sp=[]
area_mod_djf_sp=[]
lon_obs_djf_sp=[]
lat_obs_djf_sp=[]
area_obs_djf_sp=[]
magnitude_djf_sp=[]
angle_djf_sp=[]

for ele in range(0,len(date_djf)):
	if lat_obs_djf[ele] > 25 and lat_obs_djf[ele] <= 38 and lon_obs_djf[ele] > -105 and lon_obs_djf[ele] <= -90\
		and lat_mod_djf[ele] > 25 and lat_mod_djf[ele] <= 38 and lon_mod_djf[ele] > -105 and lon_mod_djf[ele] <= -90:

		date_djf_sp=np.append(date_djf_sp,date_djf[ele])
		valid_djf_sp=np.append(valid_djf_sp,valid_djf[ele])
		lat_mod_djf_sp=np.append(lat_mod_djf_sp,lat_mod_djf[ele])
		lon_mod_djf_sp=np.append(lon_mod_djf_sp,lon_mod_djf[ele])
		area_mod_djf_sp=np.append(area_mod_djf_sp,area_mod_djf[ele])
		lat_obs_djf_sp=np.append(lat_obs_djf_sp,lat_obs_djf[ele])
		lon_obs_djf_sp=np.append(lon_obs_djf_sp,lon_obs_djf[ele])
		area_obs_djf_sp=np.append(area_obs_djf_sp,area_obs_djf[ele])
		magnitude_djf_sp=np.append(magnitude_djf_sp,magnitude_djf[ele])
		angle_djf_sp=np.append(angle_djf_sp,angle_djf[ele])
#print(lat_obs_djf_sp)
#print(lon_obs_djf_sp)

if len(angle_djf_sp) > 0:
	#windrose plotting djf southern plains
	ax = WindroseAxes.from_ax()
	ax.bar(angle_djf_sp, magnitude_djf_sp, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southern Plains DJF',fontsize=14)
	plt.savefig(working_dir+'rose_djf_sp_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_djf_sp_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

#southern plains mam
date_mam_sp=[]
valid_mam_sp=[]
lon_mod_mam_sp=[]
lat_mod_mam_sp=[]
area_mod_mam_sp=[]
lon_obs_mam_sp=[]
lat_obs_mam_sp=[]
area_obs_mam_sp=[]
magnitude_mam_sp=[]
angle_mam_sp=[]

for ele in range(0,len(date_mam)):
	if lat_obs_mam[ele] > 25 and lat_obs_mam[ele] <= 38 and lon_obs_mam[ele] > -105 and lon_obs_mam[ele] <= -90 \
		and lat_mod_mam[ele] > 25 and lat_mod_mam[ele] <= 38 and lon_mod_mam[ele] > -105 and lon_mod_mam[ele] <= -90:
	
		date_mam_sp=np.append(date_mam_sp,date_mam[ele])
		valid_mam_sp=np.append(valid_mam_sp,valid_mam[ele])
		lat_mod_mam_sp=np.append(lat_mod_mam_sp,lat_mod_mam[ele])
		lon_mod_mam_sp=np.append(lon_mod_mam_sp,lon_mod_mam[ele])
		area_mod_mam_sp=np.append(area_mod_mam_sp,area_mod_mam[ele])
		lat_obs_mam_sp=np.append(lat_obs_mam_sp,lat_obs_mam[ele])
		lon_obs_mam_sp=np.append(lon_obs_mam_sp,lon_obs_mam[ele])
		area_obs_mam_sp=np.append(area_obs_mam_sp,area_obs_mam[ele])
		magnitude_mam_sp=np.append(magnitude_mam_sp,magnitude_mam[ele])
		angle_mam_sp=np.append(angle_mam_sp,angle_mam[ele])

if len(angle_mam_sp) > 0:        
	#windrose plotting mam southern plains
	ax = WindroseAxes.from_ax()
	ax.bar(angle_mam_sp, magnitude_mam_sp, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southern Plains MAM',fontsize=14)
	plt.savefig(working_dir+'rose_mam_sp_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_mam_sp_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)


#northern plains jja
date_jja_np=[]
valid_jja_np=[]
lon_mod_jja_np=[]
lat_mod_jja_np=[]
area_mod_jja_np=[]
lon_obs_jja_np=[]
lat_obs_jja_np=[]
area_obs_jja_np=[]
magnitude_jja_np=[]
angle_jja_np=[]

for ele in range(0,len(date_jja)):
        if lat_obs_jja[ele] > 38 and lat_obs_jja[ele] <= 50 and lon_obs_jja[ele] > -105 and lon_obs_jja[ele] <= -90 \
		and lat_mod_jja[ele] > 38 and lat_mod_jja[ele] <= 50 and lon_mod_jja[ele] > -105 and lon_mod_jja[ele] <= -90:
		
                date_jja_np=np.append(date_jja_sp,date_jja[ele])
                valid_jja_np=np.append(valid_jja_np,valid_jja[ele])
                lat_mod_jja_np=np.append(lat_mod_jja_np,lat_mod_jja[ele])
                lon_mod_jja_np=np.append(lon_mod_jja_np,lon_mod_jja[ele])
                area_mod_jja_np=np.append(area_mod_jja_np,area_mod_jja[ele])
                lat_obs_jja_np=np.append(lat_obs_jja_np,lat_obs_jja[ele])
                lon_obs_jja_np=np.append(lon_obs_jja_np,lon_obs_jja[ele])
                area_obs_jja_np=np.append(area_obs_jja_np,area_obs_jja[ele])
                magnitude_jja_np=np.append(magnitude_jja_np,magnitude_jja[ele])
                angle_jja_np=np.append(angle_jja_np,angle_jja[ele])

#print(area_obs_jja_np)
if len(angle_jja_np) > 0:                
	#windrose plotting jja northern plains
	ax = WindroseAxes.from_ax()
	ax.bar(angle_jja_np, magnitude_jja_np, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northern Plains JJA',fontsize=14)
	plt.savefig(working_dir+'rose_jja_np_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_jja_np_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)
                
#northern plains son
date_son_np=[]
valid_son_np=[]
lon_mod_son_np=[]
lat_mod_son_np=[]
area_mod_son_np=[]
lon_obs_son_np=[]
lat_obs_son_np=[]
area_obs_son_np=[]
magnitude_son_np=[]
angle_son_np=[]

for ele in range(0,len(date_son)):
        if lat_obs_son[ele] > 38 and lat_obs_son[ele] <= 50 and lon_obs_son[ele] > -105 and lon_obs_son[ele] <= -90\
		and lat_mod_son[ele] > 38 and lat_mod_son[ele] <= 50 and lon_mod_son[ele] > -105 and lon_mod_son[ele] <= -90:
               
                date_son_np=np.append(date_son_np,date_son[ele])
                valid_son_np=np.append(valid_son_np,valid_son[ele])
                lon_mod_son_np=np.append(lon_mod_son_np,lon_mod_son[ele])
                lat_mod_son_np=np.append(lat_mod_son_np,lat_mod_son[ele])
                area_mod_son_np=np.append(area_mod_son_np,area_mod_son[ele])
                lat_obs_son_np=np.append(lat_obs_son_np,lat_obs_son[ele])
                lon_obs_son_np=np.append(lon_obs_son_np,lon_obs_son[ele])
                area_obs_son_np=np.append(area_obs_son_np,area_obs_son[ele])
                magnitude_son_np=np.append(magnitude_son_np,magnitude_son[ele])
                angle_son_np=np.append(angle_son_np,angle_son[ele])

if len(angle_son_np) > 0:                
	#windrose plotting son northern plains
	ax = WindroseAxes.from_ax()
	ax.bar(angle_son_np, magnitude_son_np, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northern Plains SON',fontsize=14)
	plt.savefig(working_dir+'rose_son_np_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_son_np_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)


#northern plains djf
date_djf_np=[]
valid_djf_np=[]
lon_mod_djf_np=[]
lat_mod_djf_np=[]
area_mod_djf_np=[]
lon_obs_djf_np=[]
lat_obs_djf_np=[]
area_obs_djf_np=[]
magnitude_djf_np=[]
angle_djf_np=[]

for ele in range(0,len(date_djf)):
        if lat_obs_djf[ele] > 38 and lat_obs_djf[ele] <= 50 and lon_obs_djf[ele] > -105 and lon_obs_djf[ele] <= -90\
		and lat_mod_djf[ele] > 38 and lat_mod_djf[ele] <= 50 and lon_mod_djf[ele] > -105 and lon_mod_djf[ele] <= -90:
                
                date_djf_np=np.append(date_djf_np,date_djf[ele])
                valid_djf_np=np.append(valid_djf_np,valid_djf[ele])
                lat_mod_djf_np=np.append(lat_mod_djf_np,lat_mod_djf[ele])
                lon_mod_djf_np=np.append(lon_mod_djf_np,lon_mod_djf[ele])
                area_mod_djf_np=np.append(area_mod_djf_np,area_mod_djf[ele])
                lat_obs_djf_np=np.append(lat_obs_djf_np,lat_obs_djf[ele])
                lon_obs_djf_np=np.append(lon_obs_djf_np,lon_obs_djf[ele])
                area_obs_djf_np=np.append(area_obs_djf_np,area_obs_djf[ele])
                magnitude_djf_np=np.append(magnitude_djf_np,magnitude_djf[ele])
                angle_djf_np=np.append(angle_djf_np,angle_djf[ele])
                
#print(area_mod_djf_np)


if len(angle_djf_np) > 0:                
	#windrose plotting djf northern plains
	ax = WindroseAxes.from_ax()
	ax.bar(angle_djf_np, magnitude_djf_np, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northern Plains DJF',fontsize=14)
	plt.savefig(working_dir+'rose_djf_np_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_djf_np_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)


#northern plains mam
date_mam_np=[]
valid_mam_np=[]
lon_mod_mam_np=[]
lat_mod_mam_np=[]
area_mod_mam_np=[]
lon_obs_mam_np=[]
lat_obs_mam_np=[]
area_obs_mam_np=[]
magnitude_mam_np=[]
angle_mam_np=[]

for ele in range(0,len(date_mam)):
        if lat_obs_mam[ele] > 38 and lat_obs_mam[ele] <= 50 and lon_obs_mam[ele] > -105 and lon_obs_mam[ele] <= -90\
		and lat_mod_mam[ele] > 38 and lat_mod_mam[ele] <= 50 and lon_mod_mam[ele] > -105 and lon_mod_mam[ele] <= -90:

                date_mam_np=np.append(date_mam_np,date_mam[ele])
                valid_mam_np=np.append(valid_mam_np,valid_mam[ele])
                lat_mod_mam_np=np.append(lat_mod_mam_np,lat_mod_mam[ele])
                lon_mod_mam_np=np.append(lon_mod_mam_np,lon_mod_mam[ele])
                area_mod_mam_np=np.append(area_mod_mam_np,area_mod_mam[ele])
                lat_obs_mam_np=np.append(lat_obs_mam_np,lat_obs_mam[ele])
                lon_obs_mam_np=np.append(lon_obs_mam_np,lon_obs_mam[ele])
                area_obs_mam_np=np.append(area_obs_mam_np,area_obs_mam[ele])
                magnitude_mam_np=np.append(magnitude_mam_np,magnitude_mam[ele])
                angle_mam_np=np.append(angle_mam_np,angle_mam[ele])

if len(angle_mam_np) > 0:                
	#windrose plotting mam northern plains
	ax = WindroseAxes.from_ax()
	ax.bar(angle_mam_np, magnitude_mam_np, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northern Plains MAM',fontsize=14)
	plt.savefig(working_dir+'rose_mam_np_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_mam_np_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

                
#southeast jja
date_jja_se=[]
valid_jja_se=[]
lon_mod_jja_se=[]
lat_mod_jja_se=[]
area_mod_jja_se=[]
lon_obs_jja_se=[]
lat_obs_jja_se=[]
area_obs_jja_se=[]
magnitude_jja_se=[]
angle_jja_se=[]

for ele in range(0,len(date_jja)):
        if lat_obs_jja[ele] > 20 and lat_obs_jja[ele] <= 38 and lon_obs_jja[ele] > -90 and lon_obs_jja[ele] <= -75\
		and lat_mod_jja[ele] > 20 and lat_mod_jja[ele] <= 38 and lon_mod_jja[ele] > -90 and lon_mod_jja[ele] <= -75:

                date_jja_se=np.append(date_jja_se,date_jja[ele])
                valid_jja_se=np.append(valid_jja_se,valid_jja[ele])
                lat_mod_jja_se=np.append(lat_mod_jja_se,lat_mod_jja[ele])
                lon_mod_jja_se=np.append(lon_mod_jja_se,lon_mod_jja[ele])
                area_mod_jja_se=np.append(area_mod_jja_se,area_mod_jja[ele])
                lat_obs_jja_se=np.append(lat_obs_jja_se,lat_obs_jja[ele])
                lon_obs_jja_se=np.append(lon_obs_jja_se,lon_obs_jja[ele])
                area_obs_jja_se=np.append(area_obs_jja_se,area_obs_jja[ele])
                magnitude_jja_se=np.append(magnitude_jja_se,magnitude_jja[ele])
                angle_jja_se=np.append(angle_jja_se,angle_jja[ele])

if len(angle_jja_se) > 0:                
	#windrose plotting jja southeast
	ax = WindroseAxes.from_ax()
	ax.bar(angle_jja_se, magnitude_jja_se, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southeast JJA',fontsize=14)
	plt.savefig(working_dir+'rose_jja_se_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_jja_se_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

         
        
#southeast son
date_son_se=[]
valid_son_se=[]
lon_mod_son_se=[]
lat_mod_son_se=[]
area_mod_son_se=[]
lon_obs_son_se=[]
lat_obs_son_se=[]
area_obs_son_se=[]
magnitude_son_se=[]
angle_son_se=[]

for ele in range(0,len(date_son)):
        if lat_obs_son[ele] > 20 and lat_obs_son[ele] <= 38 and lon_obs_son[ele] > -90 and lon_obs_son[ele] <= -75\
		and lat_mod_son[ele] > 20 and lat_mod_son[ele] <= 38 and lon_mod_son[ele] > -90 and lon_mod_son[ele] <= -75:
                
                date_son_se=np.append(date_son_se,date_son[ele])
                valid_son_se=np.append(valid_son_se,valid_son[ele])
                lat_mod_son_se=np.append(lat_mod_son_se,lat_mod_son[ele])
                lon_mod_son_se=np.append(lon_mod_son_se,lon_mod_son[ele])
                area_mod_son_se=np.append(area_mod_son_se,area_mod_son[ele])
                lat_obs_son_se=np.append(lat_obs_son_se,lat_obs_son[ele])
                lon_obs_son_se=np.append(lon_obs_son_se,lon_obs_son[ele])
                area_obs_son_se=np.append(area_obs_son_se,area_obs_son[ele])
                magnitude_son_se=np.append(magnitude_son_se,magnitude_son[ele])
                angle_son_se=np.append(angle_son_se,angle_son[ele])

if len(angle_son_se) > 0:                
	#windrose plotting son southeast
	ax = WindroseAxes.from_ax()
	ax.bar(angle_son_se, magnitude_son_se, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southeast SON',fontsize=14)
	plt.savefig(working_dir+'rose_son_se_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_son_se_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

        
        
#southeast djf
date_djf_se=[]
valid_djf_se=[]
lat_mod_djf_se=[]
lon_mod_djf_se=[]
area_mod_djf_se=[]
lon_obs_djf_se=[]
lat_obs_djf_se=[]
area_obs_djf_se=[]
magnitude_djf_se=[]
angle_djf_se=[]

for ele in range(0,len(date_djf)):
        if lat_obs_djf[ele] > 20 and lat_obs_djf[ele] <= 38 and lon_obs_djf[ele] > -90 and lon_obs_djf[ele] <= -75\
		and lat_mod_djf[ele] > 20 and lat_mod_djf[ele] <= 38 and lon_mod_djf[ele] > -90 and lon_mod_djf[ele] <= -75:
               
                date_djf_se=np.append(date_djf_se,date_djf[ele])
                valid_djf_se=np.append(valid_djf_se,valid_djf[ele])
                lat_mod_djf_se=np.append(lat_mod_djf_se,lat_mod_djf[ele])
                lon_mod_djf_se=np.append(lon_mod_djf_se,lon_mod_djf[ele])
                area_mod_djf_se=np.append(area_mod_djf_se,area_mod_djf[ele])
                lat_obs_djf_se=np.append(lat_obs_djf_se,lat_obs_djf[ele])
                lon_obs_djf_se=np.append(lon_obs_djf_se,lon_obs_djf[ele])
                area_obs_djf_se=np.append(area_obs_djf_se,area_obs_djf[ele])
                magnitude_djf_se=np.append(magnitude_djf_se,magnitude_djf[ele])
                angle_djf_se=np.append(angle_djf_se,angle_djf[ele])

if len(angle_djf_se) > 0:                
	#windrose plotting djf southeast
	ax = WindroseAxes.from_ax()
	ax.bar(angle_djf_se, magnitude_djf_se, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southeast DJF',fontsize=14)
	plt.savefig(working_dir+'rose_djf_se_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_djf_se_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

                
#southeast mam
date_mam_se=[]
valid_mam_se=[]
lon_mod_mam_se=[]
lat_mod_mam_se=[]
area_mod_mam_se=[]
lon_obs_mam_se=[]
lat_obs_mam_se=[]
area_obs_mam_se=[]
magnitude_mam_se=[]
angle_mam_se=[]

for ele in range(0,len(date_mam)):
        if lat_obs_mam[ele] > 20 and lat_obs_mam[ele] <= 38 and lon_obs_mam[ele] > -90 and lon_obs_mam[ele] <= -75\
		 and lat_mod_mam[ele] > 20 and lat_mod_mam[ele] <= 38 and lon_mod_mam[ele] > -90 and lon_mod_mam[ele] <= -75:

                date_mam_se=np.append(date_mam_se,date_mam[ele])
                valid_mam_se=np.append(valid_mam_se,valid_mam[ele])
                lat_mod_mam_se=np.append(lat_mod_mam_se,lat_mod_mam[ele])
                lon_mod_mam_se=np.append(lon_mod_mam_se,lon_mod_mam[ele])
                area_mod_mam_se=np.append(area_mod_mam_se,area_mod_mam[ele])
                lat_obs_mam_se=np.append(lat_obs_mam_se,lat_obs_mam[ele])
                lon_obs_mam_se=np.append(lon_obs_mam_se,lon_obs_mam[ele])
                area_obs_mam_se=np.append(area_obs_mam_se,area_obs_mam[ele])
                magnitude_mam_se=np.append(magnitude_mam_se,magnitude_mam[ele])
                angle_mam_se=np.append(angle_mam_se,angle_mam[ele])

if len(angle_mam_se) > 0:                
	#windrose plotting mam southeast
	ax = WindroseAxes.from_ax()
	ax.bar(angle_mam_se, magnitude_mam_se, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southeast MAM',fontsize=14)
	plt.savefig(working_dir+'rose_mam_se_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_mam_se_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)


#northeast jja
date_jja_ne=[]
valid_jja_ne=[]
lon_mod_jja_ne=[]
lat_mod_jja_ne=[]
area_mod_jja_ne=[]
lon_obs_jja_ne=[]
lat_obs_jja_ne=[]
area_obs_jja_ne=[]
magnitude_jja_ne=[]
angle_jja_ne=[]

for ele in range(0,len(date_jja)):
        if lat_obs_jja[ele] > 38 and lat_obs_jja[ele] <= 50 and lon_obs_jja[ele] > -90 and lon_obs_jja[ele] <= -65\
		and lat_mod_jja[ele] > 38 and lat_mod_jja[ele] <= 50 and lon_mod_jja[ele] > -90 and lon_mod_jja[ele] <= -65:

                date_jja_ne=np.append(date_jja_ne,date_jja[ele])
                valid_jja_ne=np.append(valid_jja_ne,valid_jja[ele])
                lat_mod_jja_ne=np.append(lat_mod_jja_ne,lat_mod_jja[ele])
                lon_mod_jja_ne=np.append(lon_mod_jja_ne,lon_mod_jja[ele])
                area_mod_jja_ne=np.append(area_mod_jja_ne,area_mod_jja[ele])
                lat_obs_jja_ne=np.append(lat_obs_jja_ne,lat_obs_jja[ele])
                lon_obs_jja_ne=np.append(lon_obs_jja_ne,lon_obs_jja[ele])
                area_obs_jja_ne=np.append(area_obs_jja_ne,area_obs_jja[ele])
                magnitude_jja_ne=np.append(magnitude_jja_ne,magnitude_jja[ele])
                angle_jja_ne=np.append(angle_jja_ne,angle_jja[ele])

if len(angle_jja_ne) > 0:                
	#windrose plotting jja northeast
	ax = WindroseAxes.from_ax()
	ax.bar(angle_jja_ne, magnitude_jja_ne, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northeast JJA',fontsize=14)
	plt.savefig(working_dir+'rose_jja_ne_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_jja_ne_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

#northeast son
date_son_ne=[]
valid_son_ne=[]
lon_mod_son_ne=[]
lat_mod_son_ne=[]
area_mod_son_ne=[]
lon_obs_son_ne=[]
lat_obs_son_ne=[]
area_obs_son_ne=[]
magnitude_son_ne=[]
angle_son_ne=[]

for ele in range(0,len(date_son)):
        if lat_obs_son[ele] > 38 and lat_obs_son[ele] <= 50 and lon_obs_son[ele] > -90 and lon_obs_son[ele] <= -65\
		and lat_mod_son[ele] > 38 and lat_mod_son[ele] <= 50 and lon_mod_son[ele] > -90 and lon_mod_son[ele] <= -65:

                date_son_ne=np.append(date_son_ne,date_son[ele])
                valid_son_ne=np.append(valid_son_ne,valid_son[ele])
                lat_mod_son_ne=np.append(lat_mod_son_ne,lat_mod_son[ele])
                lon_mod_son_ne=np.append(lon_mod_son_ne,lon_mod_son[ele])
                area_mod_son_ne=np.append(area_mod_son_ne,area_mod_son[ele])
                lat_obs_son_ne=np.append(lat_obs_son_ne,lat_obs_son[ele])
                lon_obs_son_ne=np.append(lon_obs_son_ne,lon_obs_son[ele])
                area_obs_son_ne=np.append(area_obs_son_ne,area_obs_son[ele])
                magnitude_son_ne=np.append(magnitude_son_ne,magnitude_son[ele])
                angle_son_ne=np.append(angle_son_ne,angle_son[ele])

if len(angle_son_ne) > 0:                
	#windrose plotting son northeast
	ax = WindroseAxes.from_ax()
	ax.bar(angle_son_ne, magnitude_son_ne, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northeast SON',fontsize=14)
	plt.savefig(working_dir+'rose_son_ne_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_son_ne_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

                
#northeast djf
date_djf_ne=[]
valid_djf_ne=[]
lon_mod_djf_ne=[]
lat_mod_djf_ne=[]
area_mod_djf_ne=[]
lon_obs_djf_ne=[]
lat_obs_djf_ne=[]
area_obs_djf_ne=[]
magnitude_djf_ne=[]
angle_djf_ne=[]

for ele in range(0,len(date_djf)):
        if lat_obs_djf[ele] > 38 and lat_obs_djf[ele] <= 50 and lon_obs_djf[ele] > -90 and lon_obs_djf[ele] <= -65\
		and lat_mod_djf[ele] > 38 and lat_mod_djf[ele] <= 50 and lon_mod_djf[ele] > -90 and lon_mod_djf[ele] <= -65:
              
                date_djf_ne=np.append(date_djf_ne,date_djf[ele])
                valid_djf_ne=np.append(valid_djf_ne,valid_djf[ele])
                lat_mod_djf_ne=np.append(lat_mod_djf_ne,lat_mod_djf[ele])
                lon_mod_djf_ne=np.append(lon_mod_djf_ne,lon_mod_djf[ele])
                area_mod_djf_ne=np.append(area_mod_djf_ne,area_mod_djf[ele])
                lat_obs_djf_ne=np.append(lat_obs_djf_ne,lat_obs_djf[ele])
                lon_obs_djf_ne=np.append(lon_obs_djf_ne,lon_obs_djf[ele])
                area_obs_djf_ne=np.append(area_obs_djf_ne,area_obs_djf[ele])
                magnitude_djf_ne=np.append(magnitude_djf_ne,magnitude_djf[ele])
                angle_djf_ne=np.append(angle_djf_ne,angle_djf[ele])
                
if len(angle_djf_ne) > 0:
	#windrose plotting djf northeast
	ax = WindroseAxes.from_ax()
	ax.bar(angle_djf_ne, magnitude_djf_ne, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northeast DJF',fontsize=14)
	plt.savefig(working_dir+'rose_djf_ne_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_djf_ne_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

                
#northeast mam
date_mam_ne=[]
valid_mam_ne=[]
lon_mod_mam_ne=[]
lat_mod_mam_ne=[]
area_mod_mam_ne=[]
lon_obs_mam_ne=[]
lat_obs_mam_ne=[]
area_obs_mam_ne=[]
magnitude_mam_ne=[]
angle_mam_ne=[]

for ele in range(0,len(date_mam)):
        if lat_obs_mam[ele] > 38 and lat_obs_mam[ele] <= 50 and lon_obs_mam[ele] > -90 and lon_obs_mam[ele] <= -65\
		and lat_mod_mam[ele] > 38 and lat_mod_mam[ele] <= 50 and lon_mod_mam[ele] > -90 and lon_mod_mam[ele] <= -65:
               
                date_mam_ne=np.append(date_mam_ne,date_mam[ele])
                valid_mam_ne=np.append(valid_mam_ne,valid_mam[ele])
                lat_mod_mam_ne=np.append(lat_mod_mam_ne,lat_mod_mam[ele])
                lon_mod_mam_ne=np.append(lon_mod_mam_ne,lon_mod_mam[ele])
                area_mod_mam_ne=np.append(area_mod_mam_ne,area_mod_mam[ele])
                lat_obs_mam_ne=np.append(lat_obs_mam_ne,lat_obs_mam[ele])
                lon_obs_mam_ne=np.append(lon_obs_mam_ne,lon_obs_mam[ele])
                area_obs_mam_ne=np.append(area_obs_mam_ne,area_obs_mam[ele])
                magnitude_mam_ne=np.append(magnitude_mam_ne,magnitude_mam[ele])
                angle_mam_ne=np.append(angle_mam_ne,angle_mam[ele])

if len(angle_mam_ne) > 0:                
	#windrose plotting mam northeast
	ax = WindroseAxes.from_ax()
	ax.bar(angle_mam_ne, magnitude_mam_ne, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northeast MAM',fontsize=14)
	plt.savefig(working_dir+'rose_mam_ne_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_mam_ne_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)


#west jja
date_jja_we=[]
valid_jja_we=[]
lon_mod_jja_we=[]
lat_mod_jja_we=[]
area_mod_jja_we=[]
lon_obs_jja_we=[]
lat_obs_jja_we=[]
area_obs_jja_we=[]
magnitude_jja_we=[]
angle_jja_we=[]

for ele in range(0,len(date_jja)):
        if lat_obs_jja[ele] > 30 and lat_obs_jja[ele] <= 50 and lon_obs_jja[ele] > -125 and lon_obs_jja[ele] <= -105\
		and lat_mod_jja[ele] > 30 and lat_mod_jja[ele] <= 50 and lon_mod_jja[ele] > -125 and lon_mod_jja[ele] <= -105:
                
                date_jja_we=np.append(date_jja_we,date_jja[ele])
                valid_jja_we=np.append(valid_jja_we,valid_jja[ele])
                lat_mod_jja_we=np.append(lat_mod_jja_we,lat_mod_jja[ele])
                lon_mod_jja_we=np.append(lon_mod_jja_we,lon_mod_jja[ele])
                area_mod_jja_we=np.append(area_mod_jja_we,area_mod_jja[ele])
                lat_obs_jja_we=np.append(lat_obs_jja_we,lat_obs_jja[ele])
                lon_obs_jja_we=np.append(lon_obs_jja_we,lon_obs_jja[ele])
                area_obs_jja_we=np.append(area_obs_jja_we,area_obs_jja[ele])
                magnitude_jja_we=np.append(magnitude_jja_we,magnitude_jja[ele])
                angle_jja_we=np.append(angle_jja_we,angle_jja[ele])

if len(angle_jja_we) > 0:                
	#windrose plotting jja west
	ax = WindroseAxes.from_ax()
	ax.bar(angle_jja_we, magnitude_jja_we, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Western Region JJA',fontsize=14)
	plt.savefig(working_dir+'rose_jja_we_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_jja_we_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)
       
#west son
date_son_we=[]
valid_son_we=[]
lon_mod_son_we=[]
lat_mod_son_we=[]
area_mod_son_we=[]
lon_obs_son_we=[]
lat_obs_son_we=[]
area_obs_son_we=[]
magnitude_son_we=[]
angle_son_we=[]

for ele in range(0,len(date_son)):
        if lat_obs_son[ele] > 30 and lat_obs_son[ele] <= 50 and lon_obs_son[ele] > -125 and lon_obs_son[ele] <= -105\
		and lat_mod_son[ele] > 30 and lat_mod_son[ele] <= 50 and lon_mod_son[ele] > -125 and lon_mod_son[ele] <= -105:
               
                date_son_we=np.append(date_son_we,date_son[ele])
                valid_son_we=np.append(valid_son_we,valid_son[ele])
                lat_mod_son_we=np.append(lat_mod_son_we,lat_mod_son[ele])
                lon_mod_son_we=np.append(lon_mod_son_we,lon_mod_son[ele])
                area_mod_son_we=np.append(area_mod_son_we,area_mod_son[ele])
                lat_obs_son_we=np.append(lat_obs_son_we,lat_obs_son[ele])
                lon_obs_son_we=np.append(lon_obs_son_we,lon_obs_son[ele])
                area_obs_son_we=np.append(area_obs_son_we,area_obs_son[ele])
                magnitude_son_we=np.append(magnitude_son_we,magnitude_son[ele])
                angle_son_we=np.append(angle_son_we,angle_son[ele])

if len(angle_son_we) > 0:
	#windrose plotting son west
	ax = WindroseAxes.from_ax()
	ax.bar(angle_son_we, magnitude_son_we, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Western Region SON',fontsize=14)
	plt.savefig(working_dir+'rose_son_we_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_son_we_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)
              
                
                
#west djf
date_djf_we=[]
valid_djf_we=[]
lon_mod_djf_we=[]
lat_mod_djf_we=[]
area_mod_djf_we=[]
lon_obs_djf_we=[]
lat_obs_djf_we=[]
area_obs_djf_we=[]
magnitude_djf_we=[]
angle_djf_we=[]

for ele in range(0,len(date_djf)):
        if lat_obs_djf[ele] > 30 and lat_obs_djf[ele] <= 50 and lon_obs_djf[ele] > -125 and lon_obs_djf[ele] <= -105\
		and lat_mod_djf[ele] > 30 and lat_mod_djf[ele] <= 50 and lon_mod_djf[ele] > -125 and lon_mod_djf[ele] <= -105:
                
                date_djf_we=np.append(date_djf_we,date_djf[ele])
                valid_djf_we=np.append(valid_djf_we,valid_djf[ele])
                lat_mod_djf_we=np.append(lat_mod_djf_we,lat_mod_djf[ele])
                lon_mod_djf_we=np.append(lon_mod_djf_we,lon_mod_djf[ele])
                area_mod_djf_we=np.append(area_mod_djf_we,area_mod_djf[ele])
                lat_obs_djf_we=np.append(lat_obs_djf_we,lat_obs_djf[ele])
                lon_obs_djf_we=np.append(lon_obs_djf_we,lon_obs_djf[ele])
                area_obs_djf_we=np.append(area_obs_djf_we,area_obs_djf[ele])
                magnitude_djf_we=np.append(magnitude_djf_we,magnitude_djf[ele])
                angle_djf_we=np.append(angle_djf_we,angle_djf[ele])

if len(angle_djf_we) > 0:
	#windrose plotting djf west
	ax = WindroseAxes.from_ax()
	ax.bar(angle_djf_we, magnitude_djf_we, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Western Region DJF',fontsize=14)
	plt.savefig(working_dir+'rose_djf_we_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_djf_we_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

                
#west mam
date_mam_we=[]
valid_mam_we=[]
lon_mod_mam_we=[]
lat_mod_mam_we=[]
area_mod_mam_we=[]
lon_obs_mam_we=[]
lat_obs_mam_we=[]
area_obs_mam_we=[]
magnitude_mam_we=[]
angle_mam_we=[]

for ele in range(0,len(date_mam)):
        if lat_obs_mam[ele] > 30 and lat_obs_mam[ele] <= 50 and lon_obs_mam[ele] > -125 and lon_obs_mam[ele] <= -105\
		and lat_mod_mam[ele] > 30 and lat_mod_mam[ele] <= 50 and lon_mod_mam[ele] > -125 and lon_mod_mam[ele] <= -105:

                date_mam_we=np.append(date_mam_we,date_mam[ele])
                valid_mam_we=np.append(valid_mam_we,valid_mam[ele])
                lat_mod_mam_we=np.append(lat_mod_mam_we,lat_mod_mam[ele])
                lon_mod_mam_we=np.append(lon_mod_mam_we,lon_mod_mam[ele])
                area_mod_mam_we=np.append(area_mod_mam_we,area_mod_mam[ele])
                lat_obs_mam_we=np.append(lat_obs_mam_we,lat_obs_mam[ele])
                lon_obs_mam_we=np.append(lon_obs_mam_we,lon_obs_mam[ele])
                area_obs_mam_we=np.append(area_obs_mam_we,area_obs_mam[ele])
                magnitude_mam_we=np.append(magnitude_mam_we,magnitude_mam[ele])
                angle_mam_we=np.append(angle_mam_we,angle_mam[ele])

if len(angle_mam_we) > 0:
	#windrose plotting mam west
	ax = WindroseAxes.from_ax()
	ax.bar(angle_mam_we, magnitude_mam_we, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Western Region MAM',fontsize=14)
	plt.savefig(working_dir+'rose_mam_we_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_mam_we_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)



#####################################################windrose plot by region not season##########################################################################

#southern plains
date_sp=[]
valid_sp=[]
lon_mod_sp=[]
lat_mod_sp=[]
area_mod_sp=[]
lon_obs_sp=[]
lat_obs_sp=[]
area_obs_sp=[]
magnitude_sp=[]
angle_sp=[]

for ele in range(0,len(date)):
        if lat_obs[ele] > 25 and lat_obs[ele] <= 38 and lon_obs[ele] > -105 and lon_obs[ele] <= -90 \
                and lat_mod[ele] > 25 and lat_mod[ele] <= 38 and lon_mod[ele] > -105 and lon_mod[ele] <= -90:

                date_sp=np.append(date_sp,date[ele])
                valid_sp=np.append(valid_sp,valid[ele])
                lat_mod_sp=np.append(lat_mod_sp,lat_mod[ele])
                lon_mod_sp=np.append(lon_mod_sp,lon_mod[ele])
                area_mod_sp=np.append(area_mod_sp,area_mod[ele])
                lat_obs_sp=np.append(lat_obs_sp,lat_obs[ele])
                lon_obs_sp=np.append(lon_obs_sp,lon_obs[ele])
                area_obs_sp=np.append(area_obs_sp,area_obs[ele])
                magnitude_sp=np.append(magnitude_sp,magnitude[ele])
                angle_sp=np.append(angle_sp,angle[ele])

if len(angle_sp) > 0:
        #windrose plotting southern plains
        ax = WindroseAxes.from_ax()
        ax.bar(angle_sp, magnitude_sp, bins=bin,blowto=True)
        ax.set_legend()

        plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southern Plains ',fontsize=14)
        plt.savefig(working_dir+'rose_year_sp_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
        plt.close()

        subprocess.call('scp '+working_dir+'/rose_year_sp_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

#northern plains
date_np=[]
valid_np=[]
lon_mod_np=[]
lat_mod_np=[]
area_mod_np=[]
lon_obs_np=[]
lat_obs_np=[]
area_obs_np=[]
magnitude_np=[]
angle_np=[]

for ele in range(0,len(date)):
        if lat_obs[ele] > 38 and lat_obs[ele] <= 50 and lon_obs[ele] > -105 and lon_obs[ele] <= -90 \
                and lat_mod[ele] > 38 and lat_mod[ele] <= 50 and lon_mod[ele] > -105 and lon_mod[ele] <= -90:

                date_np=np.append(date_np,date[ele])
                valid_np=np.append(valid_np,valid[ele])
                lat_mod_np=np.append(lat_mod_np,lat_mod[ele])
                lon_mod_np=np.append(lon_mod_np,lon_mod[ele])
                area_mod_np=np.append(area_mod_np,area_mod[ele])
                lat_obs_np=np.append(lat_obs_np,lat_obs[ele])
                lon_obs_np=np.append(lon_obs_np,lon_obs[ele])
                area_obs_np=np.append(area_obs_np,area_obs[ele])
                magnitude_np=np.append(magnitude_np,magnitude[ele])
                angle_np=np.append(angle_np,angle[ele])

if len(angle_np) > 0:
        #windrose plotting southern plains
        ax = WindroseAxes.from_ax()
        ax.bar(angle_np, magnitude_np, bins=bin,blowto=True)
        ax.set_legend()

        plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northern Plains ',fontsize=14)
        plt.savefig(working_dir+'rose_year_np_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
        plt.close()

        subprocess.call('scp '+working_dir+'/rose_year_np_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

#southeast
date_se=[]
valid_se=[]
lon_mod_se=[]
lat_mod_se=[]
area_mod_se=[]
lon_obs_se=[]
lat_obs_se=[]
area_obs_se=[]
magnitude_se=[]
angle_se=[]

for ele in range(0,len(date)):
        if lat_obs[ele] > 20 and lat_obs[ele] <= 38 and lon_obs[ele] > -90 and lon_obs[ele] <= -75 \
                and lat_mod[ele] > 20 and lat_mod[ele] <= 38 and lon_mod[ele] > -90 and lon_mod[ele] <= -75:

                date_se=np.append(date_se,date[ele])
                valid_se=np.append(valid_se,valid[ele])
                lat_mod_se=np.append(lat_mod_se,lat_mod[ele])
                lon_mod_se=np.append(lon_mod_se,lon_mod[ele])
                area_mod_se=np.append(area_mod_se,area_mod[ele])
                lat_obs_se=np.append(lat_obs_se,lat_obs[ele])
                lon_obs_se=np.append(lon_obs_se,lon_obs[ele])
                area_obs_se=np.append(area_obs_se,area_obs[ele])
                magnitude_se=np.append(magnitude_se,magnitude[ele])
                angle_se=np.append(angle_se,angle[ele])

if len(angle_se) > 0:
        #windrose plotting southeast
        ax = WindroseAxes.from_ax()
        ax.bar(angle_se, magnitude_se, bins=bin,blowto=True)
        ax.set_legend()

        plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Southeast ',fontsize=14)
        plt.savefig(working_dir+'rose_year_se_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
        plt.close()

        subprocess.call('scp '+working_dir+'/rose_year_se_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

#northeast
date_ne=[]
valid_ne=[]
lon_mod_ne=[]
lat_mod_ne=[]
area_mod_ne=[]
lon_obs_ne=[]
lat_obs_ne=[]
area_obs_ne=[]
magnitude_ne=[]
angle_ne=[]

for ele in range(0,len(date)):
        if lat_obs[ele] > 38 and lat_obs[ele] <= 50 and lon_obs[ele] > -90 and lon_obs[ele] <= -65 \
                and lat_mod[ele] > 38 and lat_mod[ele] <= 50 and lon_mod[ele] > -90 and lon_mod[ele] <= -65:

                date_ne=np.append(date_ne,date[ele])
                valid_ne=np.append(valid_ne,valid[ele])
                lat_mod_ne=np.append(lat_mod_ne,lat_mod[ele])
                lon_mod_ne=np.append(lon_mod_ne,lon_mod[ele])
                area_mod_ne=np.append(area_mod_ne,area_mod[ele])
                lat_obs_ne=np.append(lat_obs_ne,lat_obs[ele])
                lon_obs_ne=np.append(lon_obs_ne,lon_obs[ele])
                area_obs_ne=np.append(area_obs_ne,area_obs[ele])
                magnitude_ne=np.append(magnitude_ne,magnitude[ele])
                angle_ne=np.append(angle_ne,angle[ele])

if len(angle_ne) > 0:
        #windrose plotting southern plains
        ax = WindroseAxes.from_ax()
        ax.bar(angle_ne, magnitude_ne, bins=bin,blowto=True)
        ax.set_legend()

        plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' Northeast ',fontsize=14)
        plt.savefig(working_dir+'rose_year_ne_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
        plt.close()

        subprocess.call('scp '+working_dir+'/rose_year_ne_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

#west
date_we=[]
valid_we=[]
lon_mod_we=[]
lat_mod_we=[]
area_mod_we=[]
lon_obs_we=[]
lat_obs_we=[]
area_obs_we=[]
magnitude_we=[]
angle_we=[]

for ele in range(0,len(date)):
        if lat_obs[ele] > 30 and lat_obs[ele] <= 50 and lon_obs[ele] > -125 and lon_obs[ele] <= -105 \
                and lat_mod[ele] > 30 and lat_mod[ele] <= 50 and lon_mod[ele] > -125 and lon_mod[ele] <= -105:

                date_we=np.append(date_we,date[ele])
                valid_we=np.append(valid_we,valid[ele])
                lat_mod_we=np.append(lat_mod_we,lat_mod[ele])
                lon_mod_we=np.append(lon_mod_we,lon_mod[ele])
                area_mod_we=np.append(area_mod_we,area_mod[ele])
                lat_obs_we=np.append(lat_obs_we,lat_obs[ele])
                lon_obs_we=np.append(lon_obs_we,lon_obs[ele])
                area_obs_we=np.append(area_obs_we,area_obs[ele])
                magnitude_we=np.append(magnitude_we,magnitude[ele])
                angle_we=np.append(angle_we,angle[ele])

if len(angle_we) > 0:
        #windrose plotting southern plains
        ax = WindroseAxes.from_ax()
        ax.bar(angle_we, magnitude_we, bins=bin,blowto=True)
        ax.set_legend()

        plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category+' West ',fontsize=14)
        plt.savefig(working_dir+'rose_year_we_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
        plt.close()

        subprocess.call('scp '+working_dir+'/rose_year_we_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

################################################################################################################################################################

#windrose plotting all seasons
#if ero_category=='SLGT':
	#bin =  [0,50,100,150,200,250,300,350,400,450,500]
#elif ero_category=='MDT':
	#bin =  [0,25,50,75,100,125,150,175,200,250,300]
#elif ero_category=='HIGH':
	#bin = [0,20,40,60,80,100,120,140,160,170,180]
ax = WindroseAxes.from_ax()
ax.bar(angle, magnitude, bins=bin,blowto=True)
ax.set_legend()

plt.title('Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category,fontsize=14)
plt.savefig(working_dir+'rose_year_conus_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
plt.close()

subprocess.call('scp '+working_dir+'/rose_year_conus_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

if len(angle_jja) > 0:
	#windrose plotting jja
	ax = WindroseAxes.from_ax()
	ax.bar(angle_jja, magnitude_jja, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Summer Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category,fontsize=14)
	plt.savefig(working_dir+'rose_jja_all_regions_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_jja_all_regions_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

if len(angle_mam) > 0:
	#windrose plotting mam
	ax = WindroseAxes.from_ax()
	ax.bar(angle_mam, magnitude_mam, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Spring Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category,fontsize=14)
	plt.savefig(working_dir+'rose_mam_all_regions_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_mam_all_regions_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

if len(angle_son) > 0:
	#windrose plotting son
	ax = WindroseAxes.from_ax()
	ax.bar(angle_son, magnitude_son, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Autumn Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category,fontsize=14)
	plt.savefig(working_dir+'rose_son_all_regions_'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_son_all_regions_'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

if len(angle_djf) > 0:
	#windrose plotting son
	ax = WindroseAxes.from_ax()
	ax.bar(angle_djf, magnitude_djf, bins=bin,blowto=True)
	ax.set_legend()

	plt.title('Winter Day '+str(validday)+' Rose Plot of ERO Displacement (km) for '+ero_category,fontsize=14)
	plt.savefig(working_dir+'rose_djf_all_regions'+ero_category+'_day'+str(validday)+'.png',bbox_inches='tight',dpi=150)
	plt.close()

	subprocess.call('scp '+working_dir+'/rose_djf_all_regions'+ero_category+'_day'+str(validday)+'.png '+FIG_DIR_ROSE,shell=True)

##################################################magnitude bar graph calculations and plotting##################################################################

#Sample data to create a group bar plot
magnitude_mae = [np.nanmean(magnitude_jja),np.nanmean(magnitude_son),np.nanmean(magnitude_djf),np.nanmean(magnitude_mam)]
magnitude_we_mae = [np.nanmean(magnitude_jja_we),np.nanmean(magnitude_son_we),np.nanmean(magnitude_djf_we),np.nanmean(magnitude_mam_we)]
magnitude_np_mae = [np.nanmean(magnitude_jja_np),np.nanmean(magnitude_son_np),np.nanmean(magnitude_djf_np),np.nanmean(magnitude_mam_np)]
magnitude_sp_mae = [np.nanmean(magnitude_jja_sp),np.nanmean(magnitude_son_sp),np.nanmean(magnitude_djf_sp),np.nanmean(magnitude_mam_sp)]
magnitude_ne_mae = [np.nanmean(magnitude_jja_ne),np.nanmean(magnitude_son_ne),np.nanmean(magnitude_djf_ne),np.nanmean(magnitude_mam_ne)]
magnitude_se_mae = [np.nanmean(magnitude_jja_se),np.nanmean(magnitude_son_se),np.nanmean(magnitude_djf_se),np.nanmean(magnitude_mam_se)]

#Create the plot, note that the first element specifies the number of groups and there is a 0.15 offset with the x-axis
fig = plt.figure(figsize=(8,8))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
plt.bar(np.arange(4)-0.25,magnitude_mae,align='center',width=0.1,color='purple')
plt.bar(np.arange(4)-0.15,magnitude_we_mae,align='center',width=0.1,color='red')
plt.bar(np.arange(4)-0.05,magnitude_np_mae,align='center',width=0.1,color='yellow')
plt.bar(np.arange(4)+0.05,magnitude_sp_mae,align='center',width=0.1,color='green')
plt.bar(np.arange(4)+0.15,magnitude_ne_mae,align='center',width=0.1,color='blue')
plt.bar(np.arange(4)+0.25,magnitude_se_mae,align='center',width=0.1,color='orange') 
#Pass line instances to a legend
line_label=[]
line_str=[];
leg_nam = ['All','Western Region','Northern Plains','Southern Plains','Northeast','Southeast']
colorlist = ["purple","red","yellow","green","blue","orange"]
for x in range(0,len(leg_nam)):
    line_label = np.hstack((line_label, mpl.lines.Line2D(range(1), range(1), color=colorlist[x], linestyle='None', marker='s', markersize=7)))
    line_str   = np.hstack((line_str, leg_nam[x]))
first_legend=plt.legend(line_label, line_str, fontsize=12, numpoints=1, loc=2, framealpha=1)
ax2 = plt.gca().add_artist(first_legend)
#Plot remainder of figure
plt.xticks(np.arange(4), ['JJA','SON','DJF','MAM'],fontsize=14)
plt.xlabel('Seasons',fontsize=14)
plt.ylabel('Displacement (km)',fontsize=14)
plt.title('Average Displacement by Season and Region Day '+str(validday),fontsize=16)
plt.ylim((0,500))
#plt.show()
plt.savefig(working_dir+'Ave_displ_bar_'+ero_category+'_day'+str(validday)+'.png', bbox_inches='tight',dpi=200)
subprocess.call('scp '+working_dir+'/Ave_displ_bar_'+ero_category+'_day'+str(validday)+'.png hpc@vm-lnx-rzdm06:/home/people/hpc/ftp/erickson/lapenta/bar_graphs',shell=True)
plt.close()

#################################################################################################################################################################

#check if area variables are empty; if they are, change them to NaN
if (np.any(area_mod_djf)) == False:
        area_mod_djf = float('nan')
if (np.any(area_obs_djf)) == False:
         area_obs_djf = float('nan')
if (np.any(area_mod_jja)) == False:
         area_mod_jja = float('nan')
if (np.any(area_obs_jja)) == False:
         area_obs_jja = float('nan')
if (np.any(area_mod_son)) == False:
         area_mod_son = float('nan')
if (np.any(area_obs_son)) == False:
         area_obs_son = float('nan')
if (np.any(area_mod_mam)) == False:
         area_mod_mam = float('nan')
if (np.any(area_obs_mam)) == False:
         area_obs_mam = float('nan')
#np
if (np.any(area_mod_djf_np)) == False:
	area_mod_djf_np = float('nan')
if (np.any(area_obs_djf_np)) == False:
         area_obs_djf_np = float('nan')
if (np.any(area_mod_jja_np)) == False:
         area_mod_jja_np = float('nan')
if (np.any(area_obs_jja_np)) == False:
         area_obs_jja_np = float('nan')
if (np.any(area_mod_son_np)) == False:
         area_mod_son_np = float('nan')
if (np.any(area_obs_son_np)) == False:
         area_obs_son_np = float('nan')
if (np.any(area_mod_mam_np)) == False:
         area_mod_mam_np = float('nan')
if (np.any(area_obs_mam_np)) == False:
         area_obs_mam_np = float('nan')
#we
if (np.any(area_mod_djf_we)) == False:
        area_mod_djf_we = float('nan')
if (np.any(area_obs_djf_we)) == False:
         area_obs_djf_we = float('nan')
if (np.any(area_mod_jja_we)) == False:
         area_mod_jja_we = float('nan')
if (np.any(area_obs_jja_we)) == False:
         area_obs_jja_we = float('nan')
if (np.any(area_mod_son_we)) == False:
         area_mod_son_we = float('nan')
if (np.any(area_obs_son_we)) == False:
         area_obs_son_we = float('nan')
if (np.any(area_mod_mam_we)) == False:
         area_mod_mam_we = float('nan')
if (np.any(area_obs_mam_we)) == False:
         area_obs_mam_we = float('nan')
#sp
if (np.any(area_mod_djf_sp)) == False:
        area_mod_djf_sp = float('nan')
if (np.any(area_obs_djf_sp)) == False:
         area_obs_djf_sp = float('nan')
if (np.any(area_mod_jja_sp)) == False:
         area_mod_jja_sp = float('nan')
if (np.any(area_obs_jja_sp)) == False:
         area_obs_jja_sp = float('nan')
if (np.any(area_mod_son_sp)) == False:
         area_mod_son_sp = float('nan')
if (np.any(area_obs_son_sp)) == False:
         area_obs_son_sp = float('nan')
if (np.any(area_mod_mam_sp)) == False:
         area_mod_mam_sp = float('nan')
if (np.any(area_obs_mam_sp)) == False:
         area_obs_mam_sp = float('nan')
#ne
if (np.any(area_mod_djf_ne)) == False:
        area_mod_djf_ne = float('nan')
if (np.any(area_obs_djf_ne)) == False:
         area_obs_djf_ne = float('nan')
if (np.any(area_mod_jja_ne)) == False:
         area_mod_jja_ne = float('nan')
if (np.any(area_obs_jja_ne)) == False:
         area_obs_jja_ne = float('nan')
if (np.any(area_mod_son_ne)) == False:
         area_mod_son_ne = float('nan')
if (np.any(area_obs_son_ne)) == False:
         area_obs_son_ne = float('nan')
if (np.any(area_mod_mam_ne)) == False:
         area_mod_mam_ne = float('nan')
if (np.any(area_obs_mam_ne)) == False:
         area_obs_mam_ne = float('nan')
#se
if (np.any(area_mod_djf_se)) == False:
        area_mod_djf_se = float('nan')
if (np.any(area_obs_djf_se)) == False:
         area_obs_djf_se = float('nan')
if (np.any(area_mod_jja_se)) == False:
         area_mod_jja_se = float('nan')
if (np.any(area_obs_jja_se)) == False:
         area_obs_jja_se = float('nan')
if (np.any(area_mod_son_se)) == False:
         area_mod_son_se = float('nan')
if (np.any(area_obs_son_se)) == False:
         area_obs_son_se = float('nan')
if (np.any(area_mod_mam_se)) == False:
         area_mod_mam_se = float('nan')
if (np.any(area_obs_mam_se)) == False:
         area_obs_mam_se = float('nan')

###########################################Calculate Area Mean Error############################################################################################
area_me = [np.nanmean(area_mod_jja - area_obs_jja),np.nanmean(area_mod_son - area_obs_son),np.nanmean(area_mod_djf - area_obs_djf), \
			np.nanmean(area_mod_mam - area_obs_mam)]
area_we_me = [np.nanmean(area_mod_jja_we - area_obs_jja_we),np.nanmean(area_mod_son_we - area_obs_son_we),np.nanmean(area_mod_djf_we - area_obs_djf_we),\
			np.nanmean(area_mod_mam_we - area_obs_mam_we)]
area_np_me = [np.nanmean(area_mod_jja_np - area_obs_jja_np),np.nanmean(area_mod_son_np - area_obs_son_np),np.nanmean(area_mod_djf_np - area_obs_djf_np),\
			np.nanmean(area_mod_mam_np - area_obs_mam_np)]
area_sp_me = [np.nanmean(area_mod_jja_sp - area_obs_jja_sp),np.nanmean(area_mod_son_sp - area_obs_son_sp),np.nanmean(area_mod_djf_sp - area_obs_djf_sp),\
			np.nanmean(area_mod_mam_sp - area_obs_mam_sp)]
area_ne_me = [np.nanmean(area_mod_jja_ne - area_obs_jja_ne),np.nanmean(area_mod_son_ne - area_obs_son_ne),np.nanmean(area_mod_djf_ne - area_obs_djf_ne),\
			np.nanmean(area_mod_mam_ne - area_obs_mam_ne)]
area_se_me = [np.nanmean(area_mod_jja_se - area_obs_jja_se),np.nanmean(area_mod_son_se - area_obs_son_se),np.nanmean(area_mod_djf_se - area_obs_djf_se),\
			np.nanmean(area_mod_mam_se - area_obs_mam_se)]

#Create the plot, note that the first element specifies the number of groups and there is a 0.15 offset with the x-axis
fig = plt.figure(figsize=(8,8))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
plt.bar(np.arange(4)-0.25,area_me,align='center',width=0.1,color='purple')
plt.bar(np.arange(4)-0.15,area_we_me,align='center',width=0.1,color='red')
plt.bar(np.arange(4)-0.05,area_np_me,align='center',width=0.1,color='yellow')
plt.bar(np.arange(4)+0.05,area_sp_me,align='center',width=0.1,color='green')
plt.bar(np.arange(4)+0.15,area_ne_me,align='center',width=0.1,color='blue')
plt.bar(np.arange(4)+0.25,area_se_me,align='center',width=0.1,color='orange')

#find max value for dynamic y axis
#find_me_max_value = max(area_me, area_we_me, area_np_me, area_sp_me, area_ne_me, area_se_me)
#create_me_max_value = max(find_me_max_value)

#determine where to put the legend
if ero_category=='SLGT':
	loc = 3
	lower_y_axis= -1500
	upper_y_axis= -1 *(lower_y_axis)
if ero_category == 'MDT':
	loc = 2
	lower_y_axis= -2700
	upper_y_axis= -1 *(lower_y_axis)
if ero_category == 'HIGH':
	loc = 2 
	lower_y_axis= -2000
	upper_y_axis= -1 *(lower_y_axis)

#Pass line instances to a legend
line_label=[]
plt.bar(np.arange(4)+0.05,area_sp_me,align='center',width=0.1,color='green')
plt.bar(np.arange(4)+0.15,area_ne_me,align='center',width=0.1,color='blue')
plt.bar(np.arange(4)+0.25,area_se_me,align='center',width=0.1,color='orange')
#Pass line instances to a legend
line_label=[]
line_str=[];
leg_nam = ['All','Western Region','Northern Plains','Southern Plains','Northeast','Southeast']
colorlist = ["purple","red","yellow","green","blue","orange"]
for x in range(0,len(leg_nam)):
    line_label = np.hstack((line_label, mpl.lines.Line2D(range(1), range(1), color=colorlist[x], linestyle='None', marker='s', markersize=7)))
    line_str   = np.hstack((line_str, leg_nam[x]))
first_legend=plt.legend(line_label, line_str, fontsize=12, numpoints=1, loc=loc, framealpha=1)
ax2 = plt.gca().add_artist(first_legend)
#Plot remainder of figure
plt.xticks(np.arange(4), ['JJA','SON','DJF','MAM'],fontsize=14)
plt.xlabel('Seasons',fontsize=14)
plt.ylabel('Area Mean Error',fontsize=14)
plt.title('Area Mean Error by Season and Region Day '+str(validday)+' '+ero_category,fontsize=16)
plt.ylim(lower_y_axis,upper_y_axis)
plt.grid(axis='y')
#plt.show()
plt.savefig(working_dir+'area_mean_error_bar_'+ero_category+'_day'+str(validday)+'.png', bbox_inches='tight',dpi=200)
subprocess.call('scp '+working_dir+'/area_mean_error_bar_'+ero_category+'_day'+str(validday)+'.png hpc@vm-lnx-rzdm06:/home/people/hpc/ftp/erickson/lapenta/bar_graphs',shell=True)
plt.close()

#############################################Calculate Area mean absolute error and plot bar graph###############################################################
#Sample data to create a group bar plot
area_mae = [np.nanmean(abs(area_mod_jja - area_obs_jja)),np.nanmean(abs(area_mod_son - area_obs_son)),np.nanmean(abs(area_mod_djf - area_obs_djf)), \
                        np.nanmean(abs(area_mod_mam - area_obs_mam))]
area_we_mae = [np.nanmean(abs(area_mod_jja_we - area_obs_jja_we)),np.nanmean(abs(area_mod_son_we - area_obs_son_we)),\
			np.nanmean(abs(area_mod_djf_we - area_obs_djf_we)),np.nanmean(abs(area_mod_mam_we - area_obs_mam_we))]
area_np_mae = [np.nanmean(abs(area_mod_jja_np - area_obs_jja_np)),np.nanmean(abs(area_mod_son_np - area_obs_son_np)),\
			np.nanmean(abs(area_mod_djf_np - area_obs_djf_np)),np.nanmean(abs(area_mod_mam_np - area_obs_mam_np))]
area_sp_mae = [np.nanmean(abs(area_mod_jja_sp - area_obs_jja_sp)),np.nanmean(abs(area_mod_son_sp - area_obs_son_sp)),\
			np.nanmean(abs(area_mod_djf_sp - area_obs_djf_sp)),np.nanmean(abs(area_mod_mam_sp - area_obs_mam_sp))]
area_ne_mae = [np.nanmean(abs(area_mod_jja_ne - area_obs_jja_ne)),np.nanmean(abs(area_mod_son_ne - area_obs_son_ne)),\
			np.nanmean(abs(area_mod_djf_ne - area_obs_djf_ne)),np.nanmean(abs(area_mod_mam_ne - area_obs_mam_ne))]
area_se_mae = [np.nanmean(abs(area_mod_jja_se - area_obs_jja_se)),np.nanmean(abs(area_mod_son_se - area_obs_son_se)),\
			np.nanmean(abs(area_mod_djf_se - area_obs_djf_se)),np.nanmean(abs(area_mod_mam_se - area_obs_mam_se))]


#Create the plot, note that the first element specifies the number of groups and there is a 0.15 offset with the x-axis
fig = plt.figure(figsize=(8,8))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
plt.bar(np.arange(4)-0.25,area_mae,align='center',width=0.1,color='purple')
plt.bar(np.arange(4)-0.15,area_we_mae,align='center',width=0.1,color='red')
plt.bar(np.arange(4)-0.05,area_np_mae,align='center',width=0.1,color='yellow')
plt.bar(np.arange(4)+0.05,area_sp_mae,align='center',width=0.1,color='green')
plt.bar(np.arange(4)+0.15,area_ne_mae,align='center',width=0.1,color='blue')
plt.bar(np.arange(4)+0.25,area_se_mae,align='center',width=0.1,color='orange')

#find max value for dynamic y axis
#find_mae_max_value = max(area_mae, area_we_mae, area_np_mae, area_sp_mae, area_ne_mae, area_se_mae)
#create_mae_max_value = max(find_mae_max_value)

#Pass line instances to a legend
line_label=[]
plt.bar(np.arange(4)+0.05,area_sp_mae,align='center',width=0.1,color='green')
plt.bar(np.arange(4)+0.15,area_ne_mae,align='center',width=0.1,color='blue')
plt.bar(np.arange(4)+0.25,area_se_mae,align='center',width=0.1,color='orange')
#Pass line instances to a legend
line_label=[]
line_str=[];
leg_nam = ['All','Western Region','Northern Plains','Southern Plains','Northeast','Southeast']
colorlist = ["purple","red","yellow","green","blue","orange"]
for x in range(0,len(leg_nam)):
    line_label = np.hstack((line_label, mpl.lines.Line2D(range(1), range(1), color=colorlist[x], linestyle='None', marker='s', markersize=7)))
    line_str   = np.hstack((line_str, leg_nam[x]))
first_legend=plt.legend(line_label, line_str, fontsize=12, numpoints=1, loc=2, framealpha=1)
ax2 = plt.gca().add_artist(first_legend)
#Plot remainder of figure
plt.xticks(np.arange(4), ['JJA','SON','DJF','MAM'],fontsize=14)
plt.xlabel('Seasons',fontsize=14)
plt.ylabel('Area Mean Abs Error',fontsize=14)
plt.title('Area Mean Absolute Error by Season and Region Day '+str(validday)+' '+ero_category,fontsize=16)
plt.ylim(0,3000)
plt.grid(axis='y')
#plt.show()
plt.savefig(working_dir+'area_mean_abs_error_bar_'+ero_category+'_day'+str(validday)+'.png', bbox_inches='tight',dpi=200)
subprocess.call('scp '+working_dir+'/area_mean_abs_error_bar_'+ero_category+'_day'+str(validday)+'.png hpc@vm-lnx-rzdm06:/home/people/hpc/ftp/erickson/lapenta/bar_graphs',shell=True)
plt.close()






#.csv writer
#with open('readdata.csv', mode='a') as lines:
	#readdata_lines=csv.writer(lines, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
	#readdata_lines.writerow([str(date),str(valid),str(lat_obs),str(lon_obs),str(magnitude),str(angle)])
