#!/usr/bin/env python ############################################################################### ## This script calculates verification stats for the NPJ phase diagram ## ## such as average error, POD, and Reliability Diagram ## ############################################################################### import matplotlib as mpl mpl.use('pdf') import matplotlib.pyplot as plt import matplotlib.lines as mlines import time import datetime import netCDF4 from numpy import * from pylab import * ##################### Read in verification text files ########################### ##### Average Distance Error of GEFS ensemble members ##### filin1 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/avedist_gefs.out' avedist_gefs = [] avedist_gefs_extend = [] avedist_gefs_retract = [] avedist_gefs_poleward = [] avedist_gefs_equator = [] avedist_gefs_origin = [] count = 0 file = open(filin1, "r") totlines = file.readlines() for line in totlines : avedist_gefs.append([]) words = line.split(',') for i in range(10) : avedist_gefs[count].append(float(words[i])) count = count + 1 ###### Distance Error of GEFS Mean ############ filin1 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/dist_gefsmean.out' dist_gefsmean = [] dist_gefsmean_extend = [] dist_gefsmean_retract = [] dist_gefsmean_poleward = [] dist_gefsmean_equator = [] dist_gefsmean_origin = [] count = 0 file = open(filin1, "r") totlines = file.readlines() for line in totlines : dist_gefsmean.append([]) words = line.split(',') for i in range(10) : dist_gefsmean[count].append(float(words[i])) count = count + 1 ###### Distance Error of GFS Deterministic Forecast ############ filin1 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/dist_gfs.out' dist_gfs = [] dist_gfs_extend = [] dist_gfs_retract = [] dist_gfs_poleward = [] dist_gfs_equator = [] dist_gfs_origin = [] count = 0 file = open(filin1, "r") totlines = file.readlines() for line in totlines : dist_gfs.append([]) words = line.split(',') for i in range(10) : dist_gfs[count].append(float(words[i])) count = count + 1 ###### GEFS Probability of Detection ############ filin1 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/pod.out' pod = [] pod_extend = [] pod_retract = [] pod_poleward = [] pod_equator = [] pod_origin = [] count = 0 file = open(filin1, "r") totlines = file.readlines() for line in totlines : pod.append([]) words = line.split(',') for i in range(10) : pod[count].append(float(words[i])) count = count + 1 ############# Calculate GEFS mean error depending upon verification regime ####################### allct = 0 null = 0 extendverf = 0 retractverf = 0 polewardverf = 0 equatorverf = 0 originverf = 0 gefs_verify = [] verif_gefs_extend = [] verif_gefs_retract = [] verif_gefs_poleward = [] verif_gefs_equator = [] verif_gefs_origin = [] for t in range(len(dist_gefsmean)) : if (t <= 8) : null = null + 1 else : gefs_verify.append([]) gefs_verify[allct].append(dist_gefsmean[t][0]) for f in range(9) : gefs_verify[allct].append(dist_gefsmean[t-(9-f)][9-f]) allct = allct + 1 for t in range(len(gefs_verify)) : if (gefs_verify[t][0] == 1) : verif_gefs_extend.append(gefs_verify[t]) extendverf = extendverf + 1 if (gefs_verify[t][0] == 2) : verif_gefs_retract.append(gefs_verify[t]) retractverf = retractverf + 1 if (gefs_verify[t][0] == 3) : verif_gefs_poleward.append(gefs_verify[t]) polewardverf = polewardverf + 1 if (gefs_verify[t][0] == 4) : verif_gefs_equator.append(gefs_verify[t]) equatorverf = equatorverf + 1 if (gefs_verify[t][0] == 5) : verif_gefs_origin.append(gefs_verify[t]) originverf = originverf + 1 gefsverfFull = [] gefsverfExtend = [] gefsverfRetract = [] gefsverfPoleward = [] gefsverfEquator = [] gefsverfOrigin = [] for t in range(9) : sum = 0 if ( len(gefs_verify) == 0 ) : gefsverfFull.append(0.) else : for i in range(len(gefs_verify)) : sum = sum + gefs_verify[i][t+1] gefsverfFull.append(sum/len(gefs_verify)) sum = 0 if ( len(verif_gefs_extend) == 0 ) : gefsverfExtend.append(0.) else : for i in range(len(verif_gefs_extend)) : sum = sum + verif_gefs_extend[i][t+1] gefsverfExtend.append(sum/len(verif_gefs_extend)) sum = 0 if ( len(verif_gefs_retract) == 0 ) : gefsverfRetract.append(0.) else : for i in range(len(verif_gefs_retract)) : sum = sum + verif_gefs_retract[i][t+1] gefsverfRetract.append(sum/len(verif_gefs_retract)) sum = 0 if ( len(verif_gefs_poleward) == 0 ) : gefsverfPoleward.append(0.) else : for i in range(len(verif_gefs_poleward)) : sum = sum + verif_gefs_poleward[i][t+1] gefsverfPoleward.append(sum/len(verif_gefs_poleward)) sum = 0 if ( len(verif_gefs_equator) == 0 ) : gefsverfEquator.append(0.) else : for i in range(len(verif_gefs_equator)) : sum = sum + verif_gefs_equator[i][t+1] gefsverfEquator.append(sum/len(verif_gefs_equator)) sum = 0 if ( len(verif_gefs_origin) == 0 ) : gefsverfOrigin.append(0.) else : for i in range(len(verif_gefs_origin)) : sum = sum + verif_gefs_origin[i][t+1] gefsverfOrigin.append(sum/len(verif_gefs_origin)) gefsverfFull.append(0.) gefsverfExtend.append(0.) gefsverfRetract.append(0.) gefsverfPoleward.append(0.) gefsverfEquator.append(0.) gefsverfOrigin.append(0.) ############ Indicate the days characterized by a certain jet regime for timeseries ############# extendct = 0 retractct = 0 polewardct = 0 equatorct = 0 originct = 0 regime = [] for t in range(len(avedist_gefs)) : if (avedist_gefs[t][0] == 1) : regime.append(1) avedist_gefs_extend.append(avedist_gefs[t]) dist_gefsmean_extend.append(dist_gefsmean[t]) dist_gfs_extend.append(dist_gfs[t]) pod_extend.append(pod[t]) extendct = extendct + 1 if (avedist_gefs[t][0] == 2) : regime.append(2) avedist_gefs_retract.append(avedist_gefs[t]) dist_gefsmean_retract.append(dist_gefsmean[t]) dist_gfs_retract.append(dist_gfs[t]) pod_retract.append(pod[t]) retractct = retractct + 1 if (avedist_gefs[t][0] == 3) : regime.append(3) avedist_gefs_poleward.append(avedist_gefs[t]) dist_gefsmean_poleward.append(dist_gefsmean[t]) dist_gfs_poleward.append(dist_gfs[t]) pod_poleward.append(pod[t]) polewardct = polewardct + 1 if (avedist_gefs[t][0] == 4) : regime.append(4) avedist_gefs_equator.append(avedist_gefs[t]) dist_gefsmean_equator.append(dist_gefsmean[t]) dist_gfs_equator.append(dist_gfs[t]) pod_equator.append(pod[t]) equatorct = equatorct + 1 if (avedist_gefs[t][0] == 5) : regime.append(5) avedist_gefs_origin.append(avedist_gefs[t]) dist_gefsmean_origin.append(dist_gefsmean[t]) dist_gfs_origin.append(dist_gfs[t]) pod_origin.append(pod[t]) originct = originct + 1 #################### Calculate Mean of Error Values by Jet Regime ############################## avedistFull = [0] avedistExtend = [0] avedistRetract = [0] avedistPoleward = [0] avedistEquator = [0] avedistOrigin = [0] for t in range(9) : sum = 0 if ( len(avedist_gefs) == 0 ) : avedistFull.append(0.) else : for i in range(len(avedist_gefs)) : sum = sum + avedist_gefs[i][t+1] avedistFull.append(sum/len(avedist_gefs)) sum = 0 if ( len(avedist_gefs_extend) == 0 ) : avedistExtend.append(0.) else : for i in range(len(avedist_gefs_extend)) : sum = sum + avedist_gefs_extend[i][t+1] avedistExtend.append(sum/len(avedist_gefs_extend)) sum = 0 if ( len(avedist_gefs_retract) == 0 ) : avedistRetract.append(0.) else : for i in range(len(avedist_gefs_retract)) : sum = sum + avedist_gefs_retract[i][t+1] avedistRetract.append(sum/len(avedist_gefs_retract)) sum = 0 if ( len(avedist_gefs_poleward) == 0 ) : avedistPoleward.append(0.) else : for i in range(len(avedist_gefs_poleward)) : sum = sum + avedist_gefs_poleward[i][t+1] avedistPoleward.append(sum/len(avedist_gefs_poleward)) sum = 0 if ( len(avedist_gefs_equator) == 0 ) : avedistEquator.append(0.) else : for i in range(len(avedist_gefs_equator)) : sum = sum + avedist_gefs_equator[i][t+1] avedistEquator.append(sum/len(avedist_gefs_equator)) sum = 0 if ( len(avedist_gefs_origin) == 0 ) : avedistOrigin.append(0.) else : for i in range(len(avedist_gefs_origin)) : sum = sum + avedist_gefs_origin[i][t+1] avedistOrigin.append(sum/len(avedist_gefs_origin)) gefsdistFull = [0] gefsdistExtend = [0] gefsdistRetract = [0] gefsdistPoleward = [0] gefsdistEquator = [0] gefsdistOrigin = [0] for t in range(9) : sum = 0 if ( len(dist_gefsmean) == 0 ) : gefsdistFull.append(0.) else : for i in range(len(dist_gefsmean)) : sum = sum + dist_gefsmean[i][t+1] gefsdistFull.append(sum/len(dist_gefsmean)) sum = 0 if ( len(dist_gefsmean_extend) == 0 ) : gefsdistExtend.append(0.) else : for i in range(len(dist_gefsmean_extend)) : sum = sum + dist_gefsmean_extend[i][t+1] gefsdistExtend.append(sum/len(dist_gefsmean_extend)) sum = 0 if ( len(dist_gefsmean_retract) == 0 ) : gefsdistRetract.append(0.) else : for i in range(len(dist_gefsmean_retract)) : sum = sum + dist_gefsmean_retract[i][t+1] gefsdistRetract.append(sum/len(dist_gefsmean_retract)) sum = 0 if ( len(dist_gefsmean_poleward) == 0 ) : gefsdistPoleward.append(0.) else : for i in range(len(dist_gefsmean_poleward)) : sum = sum + dist_gefsmean_poleward[i][t+1] gefsdistPoleward.append(sum/len(dist_gefsmean_poleward)) sum = 0 if ( len(dist_gefsmean_equator) == 0 ) : gefsdistEquator.append(0.) else : for i in range(len(dist_gefsmean_equator)) : sum = sum + dist_gefsmean_equator[i][t+1] gefsdistEquator.append(sum/len(dist_gefsmean_equator)) sum = 0 if ( len(dist_gefsmean_origin) == 0 ) : gefsdistOrigin.append(0.) else : for i in range(len(dist_gefsmean_origin)) : sum = sum + dist_gefsmean_origin[i][t+1] gefsdistOrigin.append(sum/len(dist_gefsmean_origin)) gfsdistFull = [0] gfsdistExtend = [0] gfsdistRetract = [0] gfsdistPoleward = [0] gfsdistEquator = [0] gfsdistOrigin = [0] for t in range(9) : sum = 0 if ( len(dist_gfs) == 0 ) : gfsdistFull.append(0.) else : for i in range(len(dist_gfs)) : sum = sum + dist_gfs[i][t+1] gfsdistFull.append(sum/len(dist_gfs)) sum = 0 if ( len(dist_gfs_extend) == 0 ) : gfsdistExtend.append(0.) else : for i in range(len(dist_gfs_extend)) : sum = sum + dist_gfs_extend[i][t+1] gfsdistExtend.append(sum/len(dist_gfs_extend)) sum = 0 if ( len(dist_gfs_retract) == 0 ) : gfsdistRetract.append(0.) else : for i in range(len(dist_gfs_retract)) : sum = sum + dist_gfs_retract[i][t+1] gfsdistRetract.append(sum/len(dist_gfs_retract)) sum = 0 if ( len(dist_gfs_poleward) == 0 ) : gfsdistPoleward.append(0.) else : for i in range(len(dist_gfs_poleward)) : sum = sum + dist_gfs_poleward[i][t+1] gfsdistPoleward.append(sum/len(dist_gfs_poleward)) sum = 0 if ( len(dist_gfs_equator) == 0 ) : gfsdistEquator.append(0.) else : for i in range(len(dist_gfs_equator)) : sum = sum + dist_gfs_equator[i][t+1] gfsdistEquator.append(sum/len(dist_gfs_equator)) sum = 0 if ( len(dist_gfs_origin) == 0 ) : gfsdistOrigin.append(0.) else : for i in range(len(dist_gfs_origin)) : sum = sum + dist_gfs_origin[i][t+1] gfsdistOrigin.append(sum/len(dist_gfs_origin)) podFull = [1] podExtend = [1] podRetract = [1] podPoleward = [1] podEquator = [1] podOrigin = [1] for t in range(9) : sum = 0 if ( len(pod) == 0 ) : podFull.append(0.) else : for i in range(len(pod)) : sum = sum + pod[i][t+1] podFull.append(sum/len(pod)) sum = 0 if ( len(pod_extend) == 0 ) : podExtend.append(0.) else : for i in range(len(pod_extend)) : sum = sum + pod_extend[i][t+1] podExtend.append(sum/len(pod_extend)) sum = 0 if ( len(pod_retract) == 0 ) : podRetract.append(0.) else : for i in range(len(pod_retract)) : sum = sum + pod_retract[i][t+1] podRetract.append(sum/len(pod_retract)) sum = 0 if ( len(pod_poleward) == 0 ) : podPoleward.append(0.) else : for i in range(len(pod_poleward)) : sum = sum + pod_poleward[i][t+1] podPoleward.append(sum/len(pod_poleward)) sum = 0 if ( len(pod_equator) == 0 ) : podEquator.append(0.) else : for i in range(len(pod_equator)) : sum = sum + pod_equator[i][t+1] podEquator.append(sum/len(pod_equator)) sum = 0 if ( len(pod_origin) == 0 ) : podOrigin.append(0.) else : for i in range(len(pod_origin)) : sum = sum + pod_origin[i][t+1] podOrigin.append(sum/len(pod_origin)) ######################### Divide stats by month ######################################## sepct = 0 octct = 0 novct = 0 decct = 0 janct = 0 febct = 0 marct = 0 aprct = 0 mayct = 0 sep_avedist = [] sep_gefsmean = [] sep_gfsdist = [] sep_pod = [] oct_avedist = [] oct_gefsmean = [] oct_gfsdist = [] oct_pod = [] nov_avedist = [] nov_gefsmean = [] nov_gfsdist = [] nov_pod = [] dec_avedist = [] dec_gefsmean = [] dec_gfsdist = [] dec_pod = [] jan_avedist = [] jan_gefsmean = [] jan_gfsdist = [] jan_pod = [] feb_avedist = [] feb_gefsmean = [] feb_gfsdist = [] feb_pod = [] mar_avedist = [] mar_gefsmean = [] mar_gfsdist = [] mar_pod = [] apr_avedist = [] apr_gefsmean = [] apr_gfsdist = [] apr_pod = [] may_avedist = [] may_gefsmean = [] may_gfsdist = [] may_pod = [] for t in range(len(avedist_gefs)) : if t < 30 : sep_avedist.append(avedist_gefs[t]) sep_gefsmean.append(dist_gefsmean[t]) sep_gfsdist.append(dist_gfs[t]) sep_pod.append(pod[t]) sepct = sepct + 1 if t >= 30 and t < 61 : oct_avedist.append(avedist_gefs[t]) oct_gefsmean.append(dist_gefsmean[t]) oct_gfsdist.append(dist_gfs[t]) oct_pod.append(pod[t]) octct = octct + 1 if t >= 61 and t < 91 : nov_avedist.append(avedist_gefs[t]) nov_gefsmean.append(dist_gefsmean[t]) nov_gfsdist.append(dist_gfs[t]) nov_pod.append(pod[t]) novct = novct + 1 if t >= 91 and t < 122 : dec_avedist.append(avedist_gefs[t]) dec_gefsmean.append(dist_gefsmean[t]) dec_gfsdist.append(dist_gfs[t]) dec_pod.append(pod[t]) decct = decct + 1 if t >= 122 and t < 153 : jan_avedist.append(avedist_gefs[t]) jan_gefsmean.append(dist_gefsmean[t]) jan_gfsdist.append(dist_gfs[t]) jan_pod.append(pod[t]) janct = janct + 1 if t >= 153 and t < 181 : feb_avedist.append(avedist_gefs[t]) feb_gefsmean.append(dist_gefsmean[t]) feb_gfsdist.append(dist_gfs[t]) feb_pod.append(pod[t]) febct = febct + 1 if t >= 181 and t < 212 : mar_avedist.append(avedist_gefs[t]) mar_gefsmean.append(dist_gefsmean[t]) mar_gfsdist.append(dist_gfs[t]) mar_pod.append(pod[t]) marct = marct + 1 if t >= 212 and t < 242 : apr_avedist.append(avedist_gefs[t]) apr_gefsmean.append(dist_gefsmean[t]) apr_gfsdist.append(dist_gfs[t]) apr_pod.append(pod[t]) aprct = aprct + 1 if t >= 242 : may_avedist.append(avedist_gefs[t]) may_gefsmean.append(dist_gefsmean[t]) may_gfsdist.append(dist_gfs[t]) may_pod.append(pod[t]) mayct = mayct + 1 ########################### Calculate Mean Error Stats by Month ################################ sepAvedist = [0] sepGEFSmean = [0] sepGFSdist = [0] sepPOD = [1] octAvedist = [0] octGEFSmean = [0] octGFSdist = [0] octPOD = [1] novAvedist = [0] novGEFSmean = [0] novGFSdist = [0] novPOD = [1] decAvedist = [0] decGEFSmean = [0] decGFSdist = [0] decPOD = [1] janAvedist = [0] janGEFSmean = [0] janGFSdist = [0] janPOD = [1] febAvedist = [0] febGEFSmean = [0] febGFSdist = [0] febPOD = [1] marAvedist = [0] marGEFSmean = [0] marGFSdist = [0] marPOD = [1] aprAvedist = [0] aprGEFSmean = [0] aprGFSdist = [0] aprPOD = [1] mayAvedist = [0] mayGEFSmean = [0] mayGFSdist = [0] mayPOD = [1] for t in range(9) : sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(sep_avedist) == 0) : sepAvedist.append(0.) sepGEFSmean.append(0.) sepGFSdist.append(0.) sepPOD.append(0.) else : for i in range(len(sep_avedist)) : sum1 = sum1 + sep_avedist[i][t+1] sum2 = sum2 + sep_gefsmean[i][t+1] sum3 = sum3 + sep_gfsdist[i][t+1] sum4 = sum4 + sep_pod[i][t+1] sepAvedist.append(sum1/len(sep_avedist)) sepGEFSmean.append(sum2/len(sep_avedist)) sepGFSdist.append(sum3/len(sep_avedist)) sepPOD.append(sum4/len(sep_avedist)) sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(oct_avedist) == 0) : octAvedist.append(0.) octGEFSmean.append(0.) octGFSdist.append(0.) octPOD.append(0.) else : for i in range(len(oct_avedist)) : sum1 = sum1 + oct_avedist[i][t+1] sum2 = sum2 + oct_gefsmean[i][t+1] sum3 = sum3 + oct_gfsdist[i][t+1] sum4 = sum4 + oct_pod[i][t+1] octAvedist.append(sum1/len(oct_avedist)) octGEFSmean.append(sum2/len(oct_avedist)) octGFSdist.append(sum3/len(oct_avedist)) octPOD.append(sum4/len(oct_avedist)) sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(nov_avedist) == 0) : novAvedist.append(0.) novGEFSmean.append(0.) novGFSdist.append(0.) novPOD.append(0.) else : for i in range(len(nov_avedist)) : sum1 = sum1 + nov_avedist[i][t+1] sum2 = sum2 + nov_gefsmean[i][t+1] sum3 = sum3 + nov_gfsdist[i][t+1] sum4 = sum4 + nov_pod[i][t+1] novAvedist.append(sum1/len(nov_avedist)) novGEFSmean.append(sum2/len(nov_avedist)) novGFSdist.append(sum3/len(nov_avedist)) novPOD.append(sum4/len(nov_avedist)) sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(dec_avedist) == 0) : decAvedist.append(0.) decGEFSmean.append(0.) decGFSdist.append(0.) decPOD.append(0.) else : for i in range(len(dec_avedist)) : sum1 = sum1 + dec_avedist[i][t+1] sum2 = sum2 + dec_gefsmean[i][t+1] sum3 = sum3 + dec_gfsdist[i][t+1] sum4 = sum4 + dec_pod[i][t+1] decAvedist.append(sum1/len(dec_avedist)) decGEFSmean.append(sum2/len(dec_avedist)) decGFSdist.append(sum3/len(dec_avedist)) decPOD.append(sum4/len(dec_avedist)) sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(jan_avedist) == 0) : janAvedist.append(0.) janGEFSmean.append(0.) janGFSdist.append(0.) janPOD.append(0.) else : for i in range(len(jan_avedist)) : sum1 = sum1 + jan_avedist[i][t+1] sum2 = sum2 + jan_gefsmean[i][t+1] sum3 = sum3 + jan_gfsdist[i][t+1] sum4 = sum4 + jan_pod[i][t+1] janAvedist.append(sum1/len(jan_avedist)) janGEFSmean.append(sum2/len(jan_avedist)) janGFSdist.append(sum3/len(jan_avedist)) janPOD.append(sum4/len(jan_avedist)) sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(feb_avedist) == 0) : febAvedist.append(0.) febGEFSmean.append(0.) febGFSdist.append(0.) febPOD.append(0.) else : for i in range(len(feb_avedist)) : sum1 = sum1 + feb_avedist[i][t+1] sum2 = sum2 + feb_gefsmean[i][t+1] sum3 = sum3 + feb_gfsdist[i][t+1] sum4 = sum4 + feb_pod[i][t+1] febAvedist.append(sum1/len(feb_avedist)) febGEFSmean.append(sum2/len(feb_avedist)) febGFSdist.append(sum3/len(feb_avedist)) febPOD.append(sum4/len(feb_avedist)) sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(mar_avedist) == 0) : marAvedist.append(0.) marGEFSmean.append(0.) marGFSdist.append(0.) marPOD.append(0.) else : for i in range(len(mar_avedist)) : sum1 = sum1 + mar_avedist[i][t+1] sum2 = sum2 + mar_gefsmean[i][t+1] sum3 = sum3 + mar_gfsdist[i][t+1] sum4 = sum4 + mar_pod[i][t+1] marAvedist.append(sum1/len(mar_avedist)) marGEFSmean.append(sum2/len(mar_avedist)) marGFSdist.append(sum3/len(mar_avedist)) marPOD.append(sum4/len(mar_avedist)) sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(apr_avedist) == 0) : aprAvedist.append(0.) aprGEFSmean.append(0.) aprGFSdist.append(0.) aprPOD.append(0.) else : for i in range(len(apr_avedist)) : sum1 = sum1 + apr_avedist[i][t+1] sum2 = sum2 + apr_gefsmean[i][t+1] sum3 = sum3 + apr_gfsdist[i][t+1] sum4 = sum4 + apr_pod[i][t+1] aprAvedist.append(sum1/len(apr_avedist)) aprGEFSmean.append(sum2/len(apr_avedist)) aprGFSdist.append(sum3/len(apr_avedist)) aprPOD.append(sum4/len(apr_avedist)) sum1 = 0 sum2 = 0 sum3 = 0 sum4 = 0 if (len(may_avedist) == 0) : mayAvedist.append(0.) mayGEFSmean.append(0.) mayGFSdist.append(0.) mayPOD.append(0.) else : for i in range(len(may_avedist)) : sum1 = sum1 + may_avedist[i][t+1] sum2 = sum2 + may_gefsmean[i][t+1] sum3 = sum3 + may_gfsdist[i][t+1] sum4 = sum4 + may_pod[i][t+1] mayAvedist.append(sum1/len(may_avedist)) mayGEFSmean.append(sum2/len(may_avedist)) mayGFSdist.append(sum3/len(may_avedist)) mayPOD.append(sum4/len(may_avedist)) ############################ Generate plots by jet regime ############################ fhour = [0,24,48,72,96,120,144,168,192,216] ##### Average GEFS Ensemble Member Error ####### plt.figure(1) p1 = plt.plot(fhour,avedistFull,'k',linewidth=5) p2 = plt.plot(fhour,avedistExtend,'m',linewidth=3) p3 = plt.plot(fhour,avedistRetract,'g',linewidth=3) p4 = plt.plot(fhour,avedistPoleward,'b',linewidth=3) p5 = plt.plot(fhour,avedistEquator,'r',linewidth=3) p6 = plt.plot(fhour,avedistOrigin,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Mean (N= '+str(len(avedist_gefs))+')',linestyle='None') ext = mlines.Line2D([], [], color='m',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Extend (N= '+str(len(avedist_gefs_extend))+')',linestyle='None') ret = mlines.Line2D([], [], color='g',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Retract (N= '+str(len(avedist_gefs_retract))+')',linestyle='None') pol = mlines.Line2D([], [], color='b',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Poleward (N= '+str(len(avedist_gefs_poleward))+')',linestyle='None') equ = mlines.Line2D([], [], color='r',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Equator (N= '+str(len(avedist_gefs_equator))+')',linestyle='None') ori = mlines.Line2D([], [], color='c',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Origin (N= '+str(len(avedist_gefs_origin))+')',linestyle='None') plt.legend(handles=[mean,ext,ret,pol,equ,ori],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0, 1.25]) plt.xticks(fhour) plt.yticks([0,0.25,0.50,0.75,1.00,1.25]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Average Error (PC Units)',fontsize=12,fontweight='bold') titl = plt.title('Average GEFS Ensemble Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gefsenserror_regime.pdf') plt.show() ###### Average GEFS Ensemble Mean Error ###### plt.figure(2) p1 = plt.plot(fhour,gefsdistFull,'k',linewidth=5) p2 = plt.plot(fhour,gefsdistExtend,'m',linewidth=3) p3 = plt.plot(fhour,gefsdistRetract,'g',linewidth=3) p4 = plt.plot(fhour,gefsdistPoleward,'b',linewidth=3) p5 = plt.plot(fhour,gefsdistEquator,'r',linewidth=3) p6 = plt.plot(fhour,gefsdistOrigin,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Mean (N= '+str(len(dist_gefsmean))+')',linestyle='None') ext = mlines.Line2D([], [], color='m',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Extend (N= '+str(len(dist_gefsmean_extend))+')',linestyle='None') ret = mlines.Line2D([], [], color='g',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Retract (N= '+str(len(dist_gefsmean_retract))+')',linestyle='None') pol = mlines.Line2D([], [], color='b',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Poleward (N= '+str(len(dist_gefsmean_poleward))+')',linestyle='None') equ = mlines.Line2D([], [], color='r',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Equator (N= '+str(len(dist_gefsmean_equator))+')',linestyle='None') ori = mlines.Line2D([], [], color='c',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Origin (N= '+str(len(dist_gefsmean_origin))+')',linestyle='None') plt.legend(handles=[mean,ext,ret,pol,equ,ori],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0, 1.25]) plt.xticks(fhour) plt.yticks([0,0.25,0.50,0.75,1.00,1.25]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Average Error (PC Units)',fontsize=12,fontweight='bold') titl = plt.title('Average GEFS Mean Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gefsmeanerror_regime.pdf') plt.show() ###### Average GEFS Ensemble Mean Error by Verification Regime ###### plt.figure(14) p1 = plt.plot(vhour,gefsverfFull,'k',linewidth=5) p2 = plt.plot(vhour,gefsverfExtend,'m',linewidth=3) p3 = plt.plot(vhour,gefsverfRetract,'g',linewidth=3) p4 = plt.plot(vhour,gefsverfPoleward,'b',linewidth=3) p5 = plt.plot(vhour,gefsverfEquator,'r',linewidth=3) p6 = plt.plot(vhour,gefsverfOrigin,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Mean (N= '+str(len(gefs_verify))+')',linestyle='None') ext = mlines.Line2D([], [], color='m',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Extend (N= '+str(len(verif_gefs_extend))+')',linestyle='None') ret = mlines.Line2D([], [], color='g',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Retract (N= '+str(len(verif_gefs_retract))+')',linestyle='None') pol = mlines.Line2D([], [], color='b',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Poleward (N= '+str(len(verif_gefs_poleward))+')',linestyle='None') equ = mlines.Line2D([], [], color='r',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Equator (N= '+str(len(verif_gefs_equator))+')',linestyle='None') ori = mlines.Line2D([], [], color='c',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Origin (N= '+str(len(verif_gefs_origin))+')',linestyle='None') plt.legend(handles=[mean,ext,ret,pol,equ,ori],loc=1,fontsize=10,numpoints=1) axes = plt.axis([-216, 0, 0, 1.25]) plt.xticks(vhour) plt.yticks([0,0.25,0.50,0.75,1.00,1.25]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Average Error (PC Units)',fontsize=12,fontweight='bold') titl = plt.title('Average GEFS Verif Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gefsveriferror_regime.pdf') plt.show() ###### Average GFS Deterministic Error ###### plt.figure(3) p1 = plt.plot(fhour,gfsdistFull,'k',linewidth=5) p2 = plt.plot(fhour,gfsdistExtend,'m',linewidth=3) p3 = plt.plot(fhour,gfsdistRetract,'g',linewidth=3) p4 = plt.plot(fhour,gfsdistPoleward,'b',linewidth=3) p5 = plt.plot(fhour,gfsdistEquator,'r',linewidth=3) p6 = plt.plot(fhour,gfsdistOrigin,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Mean (N= '+str(len(dist_gfs))+')',linestyle='None') ext = mlines.Line2D([], [], color='m',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Extend (N= '+str(len(dist_gfs_extend))+')',linestyle='None') ret = mlines.Line2D([], [], color='g',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Retract (N= '+str(len(dist_gfs_retract))+')',linestyle='None') pol = mlines.Line2D([], [], color='b',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Poleward (N= '+str(len(dist_gfs_poleward))+')',linestyle='None') equ = mlines.Line2D([], [], color='r',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Equator (N= '+str(len(dist_gfs_equator))+')',linestyle='None') ori = mlines.Line2D([], [], color='c',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Origin (N= '+str(len(dist_gfs_origin))+')',linestyle='None') plt.legend(handles=[mean,ext,ret,pol,equ,ori],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0, 1.25]) plt.xticks(fhour) plt.yticks([0,0.25,0.50,0.75,1.00,1.25]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Average Error (PC Units)',fontsize=12,fontweight='bold') titl = plt.title('Average GFS Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gfserror_regime.pdf') plt.show() ###### Probability of Detection ###### plt.figure(4) p1 = plt.plot(fhour,podFull,'k',linewidth=5) p2 = plt.plot(fhour,podExtend,'m',linewidth=3) p3 = plt.plot(fhour,podRetract,'g',linewidth=3) p4 = plt.plot(fhour,podPoleward,'b',linewidth=3) p5 = plt.plot(fhour,podEquator,'r',linewidth=3) p6 = plt.plot(fhour,podOrigin,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Mean (N= '+str(len(pod))+')',linestyle='None') ext = mlines.Line2D([], [], color='m',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Extend (N= '+str(len(pod_extend))+')',linestyle='None') ret = mlines.Line2D([], [], color='g',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Retract (N= '+str(len(pod_retract))+')',linestyle='None') pol = mlines.Line2D([], [], color='b',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Poleward (N= '+str(len(pod_poleward))+')',linestyle='None') equ = mlines.Line2D([], [], color='r',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Equator (N= '+str(len(pod_equator))+')',linestyle='None') ori = mlines.Line2D([], [], color='c',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Origin (N= '+str(len(pod_origin))+')',linestyle='None') plt.legend(handles=[mean,ext,ret,pol,equ,ori],loc=3,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0.6, 1.01]) plt.xticks(fhour) plt.yticks([0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1.00]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Probability of Detection',fontsize=12,fontweight='bold') titl = plt.title('GEFS POD Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gefspod_regime.pdf') plt.show() ######################### Generate plots by month ################################## ##### Average GEFS Ensemble Member Error ####### plt.figure(5) p1 = plt.plot(fhour,avedistFull,'k',linewidth=5) p2 = plt.plot(fhour,sepAvedist,'r',linewidth=3) p3 = plt.plot(fhour,octAvedist,'r--',linewidth=3) p4 = plt.plot(fhour,novAvedist,'b',linewidth=3) p5 = plt.plot(fhour,decAvedist,'b--',linewidth=3) p6 = plt.plot(fhour,janAvedist,'g',linewidth=3) p7 = plt.plot(fhour,febAvedist,'g--',linewidth=3) p8 = plt.plot(fhour,marAvedist,'m',linewidth=3) p9 = plt.plot(fhour,aprAvedist,'m--',linewidth=3) p10 = plt.plot(fhour,mayAvedist,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',label='Mean (N= '+str(len(avedist_gefs))+')',linewidth=5) sep = mlines.Line2D([], [], color='r',label='September (N= '+str(len(sep_avedist))+')',linewidth=3) oct = mlines.Line2D([], [], color='r',label='October (N= '+str(len(oct_avedist))+')',linewidth=3,linestyle='--') nov = mlines.Line2D([], [], color='b',label='November (N= '+str(len(nov_avedist))+')',linewidth=3) dec = mlines.Line2D([], [], color='b',label='December (N= '+str(len(dec_avedist))+')',linewidth=3,linestyle='--') jan = mlines.Line2D([], [], color='g',label='January (N= '+str(len(jan_avedist))+')',linewidth=3) feb = mlines.Line2D([], [], color='g',label='February (N= '+str(len(feb_avedist))+')',linewidth=3,linestyle='--') mar = mlines.Line2D([], [], color='m',label='March (N= '+str(len(mar_avedist))+')',linewidth=3) apr = mlines.Line2D([], [], color='m',label='April (N= '+str(len(apr_avedist))+')',linewidth=3,linestyle='--') may = mlines.Line2D([], [], color='c',label='May (N= '+str(len(may_avedist))+')',linewidth=3) plt.legend(handles=[mean,sep,oct,nov,dec,jan,feb,mar,apr,may],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0, 1.25]) plt.xticks(fhour) plt.yticks([0,0.25,0.50,0.75,1.00,1.25]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Average Error (PC Units)',fontsize=12,fontweight='bold') titl = plt.title('Average GEFS Ensemble Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gefsenserror_month.pdf') plt.show() ##### Average GEFS Ensemble Mean Error ####### plt.figure(6) p1 = plt.plot(fhour,gefsdistFull,'k',linewidth=5) p2 = plt.plot(fhour,sepGEFSmean,'r',linewidth=3) p3 = plt.plot(fhour,octGEFSmean,'r--',linewidth=3) p4 = plt.plot(fhour,novGEFSmean,'b',linewidth=3) p5 = plt.plot(fhour,decGEFSmean,'b--',linewidth=3) p6 = plt.plot(fhour,janGEFSmean,'g',linewidth=3) p7 = plt.plot(fhour,febGEFSmean,'g--',linewidth=3) p8 = plt.plot(fhour,marGEFSmean,'m',linewidth=3) p9 = plt.plot(fhour,aprGEFSmean,'m--',linewidth=3) p10 = plt.plot(fhour,mayGEFSmean,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',label='Mean (N= '+str(len(avedist_gefs))+')',linewidth=5) sep = mlines.Line2D([], [], color='r',label='September (N= '+str(len(sep_avedist))+')',linewidth=3) oct = mlines.Line2D([], [], color='r',label='October (N= '+str(len(oct_avedist))+')',linewidth=3,linestyle='--') nov = mlines.Line2D([], [], color='b',label='November (N= '+str(len(nov_avedist))+')',linewidth=3) dec = mlines.Line2D([], [], color='b',label='December (N= '+str(len(dec_avedist))+')',linewidth=3,linestyle='--') jan = mlines.Line2D([], [], color='g',label='January (N= '+str(len(jan_avedist))+')',linewidth=3) feb = mlines.Line2D([], [], color='g',label='February (N= '+str(len(feb_avedist))+')',linewidth=3,linestyle='--') mar = mlines.Line2D([], [], color='m',label='March (N= '+str(len(mar_avedist))+')',linewidth=3) apr = mlines.Line2D([], [], color='m',label='April (N= '+str(len(apr_avedist))+')',linewidth=3,linestyle='--') may = mlines.Line2D([], [], color='c',label='May (N= '+str(len(may_avedist))+')',linewidth=3) plt.legend(handles=[mean,sep,oct,nov,dec,jan,feb,mar,apr,may],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0, 1.25]) plt.xticks(fhour) plt.yticks([0,0.25,0.50,0.75,1.00,1.25]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Average Error (PC Units)',fontsize=12,fontweight='bold') titl = plt.title('Average GEFS Mean Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gefsmeanerror_month.pdf') plt.show() ##### Average GFS Deterministic Error ####### plt.figure(7) p1 = plt.plot(fhour,gfsdistFull,'k',linewidth=5) p2 = plt.plot(fhour,sepGFSdist,'r',linewidth=3) p3 = plt.plot(fhour,octGFSdist,'r--',linewidth=3) p4 = plt.plot(fhour,novGFSdist,'b',linewidth=3) p5 = plt.plot(fhour,decGFSdist,'b--',linewidth=3) p6 = plt.plot(fhour,janGFSdist,'g',linewidth=3) p7 = plt.plot(fhour,febGFSdist,'g--',linewidth=3) p8 = plt.plot(fhour,marGFSdist,'m',linewidth=3) p9 = plt.plot(fhour,aprGFSdist,'m--',linewidth=3) p10 = plt.plot(fhour,mayGFSdist,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',label='Mean (N= '+str(len(avedist_gefs))+')',linewidth=5) sep = mlines.Line2D([], [], color='r',label='September (N= '+str(len(sep_avedist))+')',linewidth=3) oct = mlines.Line2D([], [], color='r',label='October (N= '+str(len(oct_avedist))+')',linewidth=3,linestyle='--') nov = mlines.Line2D([], [], color='b',label='November (N= '+str(len(nov_avedist))+')',linewidth=3) dec = mlines.Line2D([], [], color='b',label='December (N= '+str(len(dec_avedist))+')',linewidth=3,linestyle='--') jan = mlines.Line2D([], [], color='g',label='January (N= '+str(len(jan_avedist))+')',linewidth=3) feb = mlines.Line2D([], [], color='g',label='February (N= '+str(len(feb_avedist))+')',linewidth=3,linestyle='--') mar = mlines.Line2D([], [], color='m',label='March (N= '+str(len(mar_avedist))+')',linewidth=3) apr = mlines.Line2D([], [], color='m',label='April (N= '+str(len(apr_avedist))+')',linewidth=3,linestyle='--') may = mlines.Line2D([], [], color='c',label='May (N= '+str(len(may_avedist))+')',linewidth=3) plt.legend(handles=[mean,sep,oct,nov,dec,jan,feb,mar,apr,may],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0, 1.25]) plt.xticks(fhour) plt.yticks([0,0.25,0.50,0.75,1.00,1.25]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Average Error (PC Units)',fontsize=12,fontweight='bold') titl = plt.title('Average GFS Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gfserror_month.pdf') plt.show() ##### Probability of Detection ####### plt.figure(8) p1 = plt.plot(fhour,podFull,'k',linewidth=5) p2 = plt.plot(fhour,sepPOD,'r',linewidth=3) p3 = plt.plot(fhour,octPOD,'r--',linewidth=3) p4 = plt.plot(fhour,novPOD,'b',linewidth=3) p5 = plt.plot(fhour,decPOD,'b--',linewidth=3) p6 = plt.plot(fhour,janPOD,'g',linewidth=3) p7 = plt.plot(fhour,febPOD,'g--',linewidth=3) p8 = plt.plot(fhour,marPOD,'m',linewidth=3) p9 = plt.plot(fhour,aprPOD,'m--',linewidth=3) p10 = plt.plot(fhour,mayPOD,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',label='Mean (N= '+str(len(avedist_gefs))+')',linewidth=5) sep = mlines.Line2D([], [], color='r',label='September (N= '+str(len(sep_avedist))+')',linewidth=3) oct = mlines.Line2D([], [], color='r',label='October (N= '+str(len(oct_avedist))+')',linewidth=3,linestyle='--') nov = mlines.Line2D([], [], color='b',label='November (N= '+str(len(nov_avedist))+')',linewidth=3) dec = mlines.Line2D([], [], color='b',label='December (N= '+str(len(dec_avedist))+')',linewidth=3,linestyle='--') jan = mlines.Line2D([], [], color='g',label='January (N= '+str(len(jan_avedist))+')',linewidth=3) feb = mlines.Line2D([], [], color='g',label='February (N= '+str(len(feb_avedist))+')',linewidth=3,linestyle='--') mar = mlines.Line2D([], [], color='m',label='March (N= '+str(len(mar_avedist))+')',linewidth=3) apr = mlines.Line2D([], [], color='m',label='April (N= '+str(len(apr_avedist))+')',linewidth=3,linestyle='--') may = mlines.Line2D([], [], color='c',label='May (N= '+str(len(may_avedist))+')',linewidth=3) plt.legend(handles=[mean,sep,oct,nov,dec,jan,feb,mar,apr,may],loc=3,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0.60, 1.01]) plt.xticks(fhour) plt.yticks([0.60,0.65,0.70,0.75,0.80,0.85,0.90,0.95,1.00]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Probability of Detection',fontsize=12,fontweight='bold') titl = plt.title('GEFS POD Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gefspod_month.pdf') plt.show() ################################# Generate timeseries ########################################### ###### GEFS Ensemble Mean Timeseries ##### dates = linspace(1,len(dist_gefsmean),len(dist_gefsmean)) D1timeseries = [] D2timeseries = [] D3timeseries = [] D4timeseries = [] D5timeseries = [] D6timeseries = [] D7timeseries = [] D8timeseries = [] D9timeseries = [] for i in range(len(dist_gefsmean)) : D1timeseries.append(dist_gefsmean[i][0]) D2timeseries.append(dist_gefsmean[i][1]) D3timeseries.append(dist_gefsmean[i][2]) D4timeseries.append(dist_gefsmean[i][3]) D5timeseries.append(dist_gefsmean[i][4]) D6timeseries.append(dist_gefsmean[i][5]) D7timeseries.append(dist_gefsmean[i][6]) D8timeseries.append(dist_gefsmean[i][7]) D9timeseries.append(dist_gefsmean[i][8]) plt.figure(9) #p1 = plt.plot(dates,D1timeseries,'k',linewidth=3) #p2 = plt.plot(dates,D2timeseries,'k',linewidth=3) #p3 = plt.plot(dates,D3timeseries,'k',linewidth=3) #p4 = plt.plot(dates,D4timeseries,'k',linewidth=3) #p5 = plt.plot(dates,D5timeseries,'k',linewidth=3) #p6 = plt.plot(dates,D6timeseries,'k',linewidth=3) #p7 = plt.plot(dates,D7timeseries,'k',linewidth=3) #p8 = plt.plot(dates,D8timeseries,'k',linewidth=3) p9 = plt.plot(dates,D9timeseries,'k',linewidth=3) p11 = plt.plot([30.5,30.5],[0,2.5],'c',linewidth=3) ## block off the individual months ## p12 = plt.plot([61.5,61.5],[0,2.5],'c',linewidth=3) p13 = plt.plot([91.5,91.5],[0,2.5],'c',linewidth=3) p14 = plt.plot([122.5,122.5],[0,2.5],'c',linewidth=3) p15 = plt.plot([153.5,153.5],[0,2.5],'c',linewidth=3) p16 = plt.plot([182.5,182.5],[0,2.5],'c',linewidth=3) p17 = plt.plot([212.5,212.5],[0,2.5],'c',linewidth=3) p18 = plt.plot([242.5,242.5],[0,2.5],'c',linewidth=3) for i in range(len(dates)): if regime[i] == 1 : p10 = plt.plot(dates[i],1.5,'mo',markersize=10,markerfacecolor='m',markeredgewidth=1,markeredgecolor='k') if regime[i] == 2 : p10 = plt.plot(dates[i],1.5,'go',markersize=10,markerfacecolor='g',markeredgewidth=1,markeredgecolor='k') if regime[i] == 3 : p10 = plt.plot(dates[i],1.5,'bo',markersize=10,markerfacecolor='b',markeredgewidth=1,markeredgecolor='k') if regime[i] == 4 : p10 = plt.plot(dates[i],1.5,'ro',markersize=10,markerfacecolor='r',markeredgewidth=1,markeredgecolor='k') if regime[i] == 5 : p10 = plt.plot(dates[i],1.5,'co',markersize=10,markerfacecolor='c',markeredgewidth=1,markeredgecolor='k') D1 = mlines.Line2D([], [], color='k',label='D1',linewidth=3) D2 = mlines.Line2D([], [], color='k',label='D2',linewidth=3) D3 = mlines.Line2D([], [], color='k',label='D3',linewidth=3) D4 = mlines.Line2D([], [], color='k',label='D4',linewidth=3) D5 = mlines.Line2D([], [], color='k',label='D5',linewidth=3) D6 = mlines.Line2D([], [], color='k',label='D6',linewidth=3) D7 = mlines.Line2D([], [], color='k',label='D7',linewidth=3) D8 = mlines.Line2D([], [], color='k',label='D8',linewidth=3) D9 = mlines.Line2D([], [], color='k',label='D9',linewidth=3) plt.legend(handles=[D9],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 273, 0, 2.5]) plt.yticks([0.25,0.50,0.75,1.0,1.25,1.50,1.75,2.00,2.25,2.50]) xlab = plt.xlabel('Forecasts Since Sept. 1, 2017',fontsize=12,fontweight='bold') ylab = plt.ylabel('Error (PC Units)',fontsize=12,fontweight='bold') plt.text(15,2.25,'Sep',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(45,2.25,'Oct',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(75,2.25,'Nov',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(105,2.25,'Dec',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(136,2.25,'Jan',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(166,2.25,'Feb',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(195,2.25,'Mar',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(226,2.25,'Apr',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(256,2.25,'May',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') titl = plt.title('GEFS Mean Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gefserror_timeseries_D9.pdf') plt.show() ##### GFS Deterministic Timeseries ###### dates = linspace(1,len(dist_gfs),len(dist_gfs)) D1timeseries = [] D2timeseries = [] D3timeseries = [] D4timeseries = [] D5timeseries = [] D6timeseries = [] D7timeseries = [] D8timeseries = [] D9timeseries = [] for i in range(len(dist_gefsmean)) : D1timeseries.append(dist_gfs[i][0]) D2timeseries.append(dist_gfs[i][1]) D3timeseries.append(dist_gfs[i][2]) D4timeseries.append(dist_gfs[i][3]) D5timeseries.append(dist_gfs[i][4]) D6timeseries.append(dist_gfs[i][5]) D7timeseries.append(dist_gfs[i][6]) D8timeseries.append(dist_gfs[i][7]) D9timeseries.append(dist_gfs[i][8]) plt.figure(10) #p1 = plt.plot(dates,D1timeseries,'k',linewidth=3) #p2 = plt.plot(dates,D2timeseries,'k',linewidth=3) #p3 = plt.plot(dates,D3timeseries,'k',linewidth=3) #p4 = plt.plot(dates,D4timeseries,'k',linewidth=3) #p5 = plt.plot(dates,D5timeseries,'k',linewidth=3) #p6 = plt.plot(dates,D6timeseries,'k',linewidth=3) #p7 = plt.plot(dates,D7timeseries,'k',linewidth=3) #p8 = plt.plot(dates,D8timeseries,'k',linewidth=3) p9 = plt.plot(dates,D9timeseries,'k',linewidth=3) p11 = plt.plot([30.5,30.5],[0,2.5],'c',linewidth=3) ## block off the individual months ## p12 = plt.plot([61.5,61.5],[0,2.5],'c',linewidth=3) p13 = plt.plot([91.5,91.5],[0,2.5],'c',linewidth=3) p14 = plt.plot([122.5,122.5],[0,2.5],'c',linewidth=3) p15 = plt.plot([153.5,153.5],[0,2.5],'c',linewidth=3) p16 = plt.plot([182.5,182.5],[0,2.5],'c',linewidth=3) p17 = plt.plot([212.5,212.5],[0,2.5],'c',linewidth=3) p18 = plt.plot([242.5,242.5],[0,2.5],'c',linewidth=3) for i in range(len(dates)): if regime[i] == 1 : p10 = plt.plot(dates[i],1.5,'mo',markersize=10,markerfacecolor='m',markeredgewidth=1,markeredgecolor='k') if regime[i] == 2 : p10 = plt.plot(dates[i],1.5,'go',markersize=10,markerfacecolor='g',markeredgewidth=1,markeredgecolor='k') if regime[i] == 3 : p10 = plt.plot(dates[i],1.5,'bo',markersize=10,markerfacecolor='b',markeredgewidth=1,markeredgecolor='k') if regime[i] == 4 : p10 = plt.plot(dates[i],1.5,'ro',markersize=10,markerfacecolor='r',markeredgewidth=1,markeredgecolor='k') if regime[i] == 5 : p10 = plt.plot(dates[i],1.5,'co',markersize=10,markerfacecolor='c',markeredgewidth=1,markeredgecolor='k') D1 = mlines.Line2D([], [], color='k',label='D1',linewidth=3) D2 = mlines.Line2D([], [], color='k',label='D2',linewidth=3) D3 = mlines.Line2D([], [], color='k',label='D3',linewidth=3) D4 = mlines.Line2D([], [], color='k',label='D4',linewidth=3) D5 = mlines.Line2D([], [], color='k',label='D5',linewidth=3) D6 = mlines.Line2D([], [], color='k',label='D6',linewidth=3) D7 = mlines.Line2D([], [], color='k',label='D7',linewidth=3) D8 = mlines.Line2D([], [], color='k',label='D8',linewidth=3) D9 = mlines.Line2D([], [], color='k',label='D9',linewidth=3) plt.legend(handles=[D9],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 273, 0, 2.5]) plt.yticks([0.25,0.50,0.75,1.0,1.25,1.50,1.75,2.00,2.25,2.50]) xlab = plt.xlabel('Forecasts Since Sept. 1, 2017',fontsize=12,fontweight='bold') ylab = plt.ylabel('Error (PC Units)',fontsize=12,fontweight='bold') plt.text(15,2.25,'Sep',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(45,2.25,'Oct',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(75,2.25,'Nov',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(105,2.25,'Dec',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(136,2.25,'Jan',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(166,2.25,'Feb',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(195,2.25,'Mar',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(226,2.25,'Apr',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') plt.text(256,2.25,'May',fontsize=14,fontweight='bold',color='r',horizontalalignment='center',verticalalignment='center') titl = plt.title('GFS Error Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('gfserror_timeseries_D9.pdf') plt.show() ########################## Create Reliability Diagram ################################## filin1 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D1probct.out' filin2 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D2probct.out' filin3 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D3probct.out' filin4 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D4probct.out' filin5 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D5probct.out' filin6 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D6probct.out' filin7 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D7probct.out' filin8 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D8probct.out' filin9 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D9probct.out' filin1b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D1probhit.out' filin2b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D2probhit.out' filin3b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D3probhit.out' filin4b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D4probhit.out' filin5b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D5probhit.out' filin6b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D6probhit.out' filin7b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D7probhit.out' filin8b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D8probhit.out' filin9b = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D9probhit.out' ####### Forecast count files ######## D1probct = [] count = 0 file = open(filin1, "r") totlines = file.readlines() for line in totlines : D1probct.append([]) words = line.split(',') for i in range(13) : D1probct[count].append(float(words[i])) count = count + 1 D2probct = [] count = 0 file = open(filin2, "r") totlines = file.readlines() for line in totlines : D2probct.append([]) words = line.split(',') for i in range(13) : D2probct[count].append(float(words[i])) count = count + 1 D3probct = [] count = 0 file = open(filin3, "r") totlines = file.readlines() for line in totlines : D3probct.append([]) words = line.split(',') for i in range(13) : D3probct[count].append(float(words[i])) count = count + 1 D4probct = [] count = 0 file = open(filin4, "r") totlines = file.readlines() for line in totlines : D4probct.append([]) words = line.split(',') for i in range(13) : D4probct[count].append(float(words[i])) count = count + 1 D5probct = [] count = 0 file = open(filin5, "r") totlines = file.readlines() for line in totlines : D5probct.append([]) words = line.split(',') for i in range(13) : D5probct[count].append(float(words[i])) count = count + 1 D6probct = [] count = 0 file = open(filin6, "r") totlines = file.readlines() for line in totlines : D6probct.append([]) words = line.split(',') for i in range(13) : D6probct[count].append(float(words[i])) count = count + 1 D7probct = [] count = 0 file = open(filin7, "r") totlines = file.readlines() for line in totlines : D7probct.append([]) words = line.split(',') for i in range(13) : D7probct[count].append(float(words[i])) count = count + 1 D8probct = [] count = 0 file = open(filin8, "r") totlines = file.readlines() for line in totlines : D8probct.append([]) words = line.split(',') for i in range(13) : D8probct[count].append(float(words[i])) count = count + 1 D9probct = [] count = 0 file = open(filin9, "r") totlines = file.readlines() for line in totlines : D9probct.append([]) words = line.split(',') for i in range(13) : D9probct[count].append(float(words[i])) count = count + 1 ###### Hit Files ####### D1hit = [] count = 0 file = open(filin1b, "r") totlines = file.readlines() for line in totlines : D1hit.append([]) words = line.split(',') for i in range(13) : D1hit[count].append(float(words[i])) count = count + 1 D2hit = [] count = 0 file = open(filin2b, "r") totlines = file.readlines() for line in totlines : D2hit.append([]) words = line.split(',') for i in range(13) : D2hit[count].append(float(words[i])) count = count + 1 D3hit = [] count = 0 file = open(filin3b, "r") totlines = file.readlines() for line in totlines : D3hit.append([]) words = line.split(',') for i in range(13) : D3hit[count].append(float(words[i])) count = count + 1 D4hit = [] count = 0 file = open(filin4b, "r") totlines = file.readlines() for line in totlines : D4hit.append([]) words = line.split(',') for i in range(13) : D4hit[count].append(float(words[i])) count = count + 1 D5hit = [] count = 0 file = open(filin5b, "r") totlines = file.readlines() for line in totlines : D5hit.append([]) words = line.split(',') for i in range(13) : D5hit[count].append(float(words[i])) count = count + 1 D6hit = [] count = 0 file = open(filin6b, "r") totlines = file.readlines() for line in totlines : D6hit.append([]) words = line.split(',') for i in range(13) : D6hit[count].append(float(words[i])) count = count + 1 D7hit = [] count = 0 file = open(filin7b, "r") totlines = file.readlines() for line in totlines : D7hit.append([]) words = line.split(',') for i in range(13) : D7hit[count].append(float(words[i])) count = count + 1 D8hit = [] count = 0 file = open(filin8b, "r") totlines = file.readlines() for line in totlines : D8hit.append([]) words = line.split(',') for i in range(13) : D8hit[count].append(float(words[i])) count = count + 1 D9hit = [] count = 0 file = open(filin9b, "r") totlines = file.readlines() for line in totlines : D9hit.append([]) words = line.split(',') for i in range(13) : D9hit[count].append(float(words[i])) count = count + 1 ############################# Tally percentages ########################### D1count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D2count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D3count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D4count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D5count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D6count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D7count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D8count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D9count_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D1hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D2hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D3hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D4hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D5hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D6hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D7hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D8hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] D9hit_sum = [0,0,0,0,0,0,0,0,0,0,0,0] for i in range(len(D1probct)) : for d in range(12) : D1count_sum[d] = D1count_sum[d] + D1probct[i][d+1] D2count_sum[d] = D2count_sum[d] + D2probct[i][d+1] D3count_sum[d] = D3count_sum[d] + D3probct[i][d+1] D4count_sum[d] = D4count_sum[d] + D4probct[i][d+1] D5count_sum[d] = D5count_sum[d] + D5probct[i][d+1] D6count_sum[d] = D6count_sum[d] + D6probct[i][d+1] D7count_sum[d] = D7count_sum[d] + D7probct[i][d+1] D8count_sum[d] = D8count_sum[d] + D8probct[i][d+1] D9count_sum[d] = D9count_sum[d] + D9probct[i][d+1] D1hit_sum[d] = D1hit_sum[d] + D1hit[i][d+1] D2hit_sum[d] = D2hit_sum[d] + D2hit[i][d+1] D3hit_sum[d] = D3hit_sum[d] + D3hit[i][d+1] D4hit_sum[d] = D4hit_sum[d] + D4hit[i][d+1] D5hit_sum[d] = D5hit_sum[d] + D5hit[i][d+1] D6hit_sum[d] = D6hit_sum[d] + D6hit[i][d+1] D7hit_sum[d] = D7hit_sum[d] + D7hit[i][d+1] D8hit_sum[d] = D8hit_sum[d] + D8hit[i][d+1] D9hit_sum[d] = D9hit_sum[d] + D9hit[i][d+1] Allhit_sum = [] Allcount_sum = [] for d in range(12) : Allhit_sum.append(D1hit_sum[d] + D2hit_sum[d] + D3hit_sum[d] + D4hit_sum[d] + D5hit_sum[d] + D6hit_sum[d] + D7hit_sum[d] + D8hit_sum[d] + D9hit_sum[d] ) Allcount_sum.append(D1count_sum[d] + D2count_sum[d] + D3count_sum[d] + D4count_sum[d] + D5count_sum[d] + D6count_sum[d] + D7count_sum[d] + D8count_sum[d] + D9count_sum[d] ) D1per = [] D2per = [] D3per = [] D4per = [] D5per = [] D6per = [] D7per = [] D8per = [] D9per = [] Allper = [] for d in range(12) : if D1count_sum[d] == 0 : D1per.append(0.) else : D1per.append(D1hit_sum[d]/D1count_sum[d]*100) if D2count_sum[d] == 0 : D2per.append(0.) else : D2per.append(D2hit_sum[d]/D2count_sum[d]*100) if D3count_sum[d] == 0 : D3per.append(0.) else : D3per.append(D3hit_sum[d]/D3count_sum[d]*100) if D4count_sum[d] == 0 : D4per.append(0.) else : D4per.append(D4hit_sum[d]/D4count_sum[d]*100) if D5count_sum[d] == 0 : D5per.append(0.) else : D5per.append(D5hit_sum[d]/D5count_sum[d]*100) if D6count_sum[d] == 0 : D6per.append(0.) else : D6per.append(D6hit_sum[d]/D6count_sum[d]*100) if D7count_sum[d] == 0 : D7per.append(0.) else : D7per.append(D7hit_sum[d]/D7count_sum[d]*100) if D8count_sum[d] == 0 : D8per.append(0.) else : D8per.append(D8hit_sum[d]/D8count_sum[d]*100) if D9count_sum[d] == 0 : D9per.append(0.) else : D9per.append(D9hit_sum[d]/D9count_sum[d]*100) Allper.append(Allhit_sum[d]/Allcount_sum[d]*100) ################## Generate Reliability plot ######################### percent = [0,5,15,25,35,45,55,65,75,85,95,100] plt.figure(11) p10 = plt.plot(percent,percent,'g',linewidth=5) p1 = plt.plot(percent,D1per,'k',linewidth=3) ; p2 = plt.plot(percent,D2per,'r',linewidth=3) ; p3 = plt.plot(percent,D3per,'b',linewidth=3) ; p4 = plt.plot(percent,D4per,'k',linewidth=2) ; p5 = plt.plot(percent,D5per,'r',linewidth=2) ; p6 = plt.plot(percent,D6per,'b',linewidth=2) ; p7 = plt.plot(percent,D7per,'k',linewidth=1) ; p8 = plt.plot(percent,D8per,'r',linewidth=1) ; p9 = plt.plot(percent,D9per,'b',linewidth=1) ; p11 = plt.plot(percent,Allper,'m',linewidth=4) ; D1 = mlines.Line2D([], [], color='k',label='D1',linewidth=3) D2 = mlines.Line2D([], [], color='r',label='D2',linewidth=3) D3 = mlines.Line2D([], [], color='b',label='D3',linewidth=3) D4 = mlines.Line2D([], [], color='k',label='D4',linewidth=2) D5 = mlines.Line2D([], [], color='r',label='D5',linewidth=2) D6 = mlines.Line2D([], [], color='b',label='D6',linewidth=2) D7 = mlines.Line2D([], [], color='k',label='D7',linewidth=1) D8 = mlines.Line2D([], [], color='r',label='D8',linewidth=1) D9 = mlines.Line2D([], [], color='b',label='D9',linewidth=1) All = mlines.Line2D([], [], color='m',label='All',linewidth=4) plt.legend(handles=[D1,D2,D3,D4,D5,D6,D7,D8,D9,All],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 100, 0, 100]) plt.xticks([0,10,20,30,40,50,60,70,80,90,100]) plt.yticks([0,10,20,30,40,50,60,70,80,90,100]) xlab = plt.xlabel('Forecast Percentage (%)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Event Occurrence (%)',fontsize=12,fontweight='bold') titl = plt.title('GEFS Reliability Diagram Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('Reliability Diagram.pdf') plt.show() ################# False Alarm Ratio Statistics for Jet Regime Prediction ######################### ###### GFS Forecast Regime Files ####### filin1 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D1fcastreg_gfs.out' filin2 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D2fcastreg_gfs.out' filin3 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D3fcastreg_gfs.out' filin4 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D4fcastreg_gfs.out' filin5 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D5fcastreg_gfs.out' filin6 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D6fcastreg_gfs.out' filin7 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D7fcastreg_gfs.out' filin8 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D8fcastreg_gfs.out' filin9 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D9fcastreg_gfs.out' D1fcastreg_gfs = [] D1fcastreg_gfs_extend = [] D1fcastreg_gfs_retract = [] D1fcastreg_gfs_poleward = [] D1fcastreg_gfs_equator = [] D1fcastreg_gfs_origin = [] count = 0 file = open(filin1, "r") totlines = file.readlines() for line in totlines : D1fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D1fcastreg_gfs[count].append(float(words[i])) count = count + 1 D2fcastreg_gfs = [] D2fcastreg_gfs_extend = [] D2fcastreg_gfs_retract = [] D2fcastreg_gfs_poleward = [] D2fcastreg_gfs_equator = [] D2fcastreg_gfs_origin = [] count = 0 file = open(filin2, "r") totlines = file.readlines() for line in totlines : D2fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D2fcastreg_gfs[count].append(float(words[i])) count = count + 1 D3fcastreg_gfs = [] D3fcastreg_gfs_extend = [] D3fcastreg_gfs_retract = [] D3fcastreg_gfs_poleward = [] D3fcastreg_gfs_equator = [] D3fcastreg_gfs_origin = [] count = 0 file = open(filin3, "r") totlines = file.readlines() for line in totlines : D3fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D3fcastreg_gfs[count].append(float(words[i])) count = count + 1 D4fcastreg_gfs = [] D4fcastreg_gfs_extend = [] D4fcastreg_gfs_retract = [] D4fcastreg_gfs_poleward = [] D4fcastreg_gfs_equator = [] D4fcastreg_gfs_origin = [] count = 0 file = open(filin4, "r") totlines = file.readlines() for line in totlines : D4fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D4fcastreg_gfs[count].append(float(words[i])) count = count + 1 D5fcastreg_gfs = [] D5fcastreg_gfs_extend = [] D5fcastreg_gfs_retract = [] D5fcastreg_gfs_poleward = [] D5fcastreg_gfs_equator = [] D5fcastreg_gfs_origin = [] count = 0 file = open(filin5, "r") totlines = file.readlines() for line in totlines : D5fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D5fcastreg_gfs[count].append(float(words[i])) count = count + 1 D6fcastreg_gfs = [] D6fcastreg_gfs_extend = [] D6fcastreg_gfs_retract = [] D6fcastreg_gfs_poleward = [] D6fcastreg_gfs_equator = [] D6fcastreg_gfs_origin = [] count = 0 file = open(filin6, "r") totlines = file.readlines() for line in totlines : D6fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D6fcastreg_gfs[count].append(float(words[i])) count = count + 1 D7fcastreg_gfs = [] D7fcastreg_gfs_extend = [] D7fcastreg_gfs_retract = [] D7fcastreg_gfs_poleward = [] D7fcastreg_gfs_equator = [] D7fcastreg_gfs_origin = [] count = 0 file = open(filin7, "r") totlines = file.readlines() for line in totlines : D7fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D7fcastreg_gfs[count].append(float(words[i])) count = count + 1 D8fcastreg_gfs = [] D8fcastreg_gfs_extend = [] D8fcastreg_gfs_retract = [] D8fcastreg_gfs_poleward = [] D8fcastreg_gfs_equator = [] D8fcastreg_gfs_origin = [] count = 0 file = open(filin8, "r") totlines = file.readlines() for line in totlines : D8fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D8fcastreg_gfs[count].append(float(words[i])) count = count + 1 D9fcastreg_gfs = [] D9fcastreg_gfs_extend = [] D9fcastreg_gfs_retract = [] D9fcastreg_gfs_poleward = [] D9fcastreg_gfs_equator = [] D9fcastreg_gfs_origin = [] count = 0 file = open(filin9, "r") totlines = file.readlines() for line in totlines : D9fcastreg_gfs.append([]) words = line.split(',') for i in range(6) : D9fcastreg_gfs[count].append(float(words[i])) count = count + 1 ###### GEFS Forecast Regime Files ####### filin1 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D1fcastreg_gefs.out' filin2 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D2fcastreg_gefs.out' filin3 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D3fcastreg_gefs.out' filin4 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D4fcastreg_gefs.out' filin5 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D5fcastreg_gefs.out' filin6 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D6fcastreg_gefs.out' filin7 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D7fcastreg_gefs.out' filin8 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D8fcastreg_gefs.out' filin9 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D9fcastreg_gefs.out' D1fcastreg_gefs = [] D1fcastreg_gefs_extend = [] D1fcastreg_gefs_retract = [] D1fcastreg_gefs_poleward = [] D1fcastreg_gefs_equator = [] D1fcastreg_gefs_origin = [] count = 0 file = open(filin1, "r") totlines = file.readlines() for line in totlines : D1fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D1fcastreg_gefs[count].append(float(words[i])) count = count + 1 D2fcastreg_gefs = [] D2fcastreg_gefs_extend = [] D2fcastreg_gefs_retract = [] D2fcastreg_gefs_poleward = [] D2fcastreg_gefs_equator = [] D2fcastreg_gefs_origin = [] count = 0 file = open(filin2, "r") totlines = file.readlines() for line in totlines : D2fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D2fcastreg_gefs[count].append(float(words[i])) count = count + 1 D3fcastreg_gefs = [] D3fcastreg_gefs_extend = [] D3fcastreg_gefs_retract = [] D3fcastreg_gefs_poleward = [] D3fcastreg_gefs_equator = [] D3fcastreg_gefs_origin = [] count = 0 file = open(filin3, "r") totlines = file.readlines() for line in totlines : D3fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D3fcastreg_gefs[count].append(float(words[i])) count = count + 1 D4fcastreg_gefs = [] D4fcastreg_gefs_extend = [] D4fcastreg_gefs_retract = [] D4fcastreg_gefs_poleward = [] D4fcastreg_gefs_equator = [] D4fcastreg_gefs_origin = [] count = 0 file = open(filin4, "r") totlines = file.readlines() for line in totlines : D4fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D4fcastreg_gefs[count].append(float(words[i])) count = count + 1 D5fcastreg_gefs = [] D5fcastreg_gefs_extend = [] D5fcastreg_gefs_retract = [] D5fcastreg_gefs_poleward = [] D5fcastreg_gefs_equator = [] D5fcastreg_gefs_origin = [] count = 0 file = open(filin5, "r") totlines = file.readlines() for line in totlines : D5fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D5fcastreg_gefs[count].append(float(words[i])) count = count + 1 D6fcastreg_gefs = [] D6fcastreg_gefs_extend = [] D6fcastreg_gefs_retract = [] D6fcastreg_gefs_poleward = [] D6fcastreg_gefs_equator = [] D6fcastreg_gefs_origin = [] count = 0 file = open(filin6, "r") totlines = file.readlines() for line in totlines : D6fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D6fcastreg_gefs[count].append(float(words[i])) count = count + 1 D7fcastreg_gefs = [] D7fcastreg_gefs_extend = [] D7fcastreg_gefs_retract = [] D7fcastreg_gefs_poleward = [] D7fcastreg_gefs_equator = [] D7fcastreg_gefs_origin = [] count = 0 file = open(filin7, "r") totlines = file.readlines() for line in totlines : D7fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D7fcastreg_gefs[count].append(float(words[i])) count = count + 1 D8fcastreg_gefs = [] D8fcastreg_gefs_extend = [] D8fcastreg_gefs_retract = [] D8fcastreg_gefs_poleward = [] D8fcastreg_gefs_equator = [] D8fcastreg_gefs_origin = [] count = 0 file = open(filin8, "r") totlines = file.readlines() for line in totlines : D8fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D8fcastreg_gefs[count].append(float(words[i])) count = count + 1 D9fcastreg_gefs = [] D9fcastreg_gefs_extend = [] D9fcastreg_gefs_retract = [] D9fcastreg_gefs_poleward = [] D9fcastreg_gefs_equator = [] D9fcastreg_gefs_origin = [] count = 0 file = open(filin9, "r") totlines = file.readlines() for line in totlines : D9fcastreg_gefs.append([]) words = line.split(',') for i in range(6) : D9fcastreg_gefs[count].append(float(words[i])) count = count + 1 ###### Verification Regime Files ####### filin1 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D1verifreg.out' filin2 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D2verifreg.out' filin3 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D3verifreg.out' filin4 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D4verifreg.out' filin5 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D5verifreg.out' filin6 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D6verifreg.out' filin7 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D7verifreg.out' filin8 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D8verifreg.out' filin9 = '/nfs/lb13/aw732728/tigge/jetclimo/wpc_npj_files/D9verifreg.out' D1verifreg = [] D1verifreg_extend = [] D1verifreg_retract = [] D1verifreg_poleward = [] D1verifreg_equator = [] D1verifreg_origin = [] count = 0 file = open(filin1, "r") totlines = file.readlines() for line in totlines : D1verifreg.append([]) words = line.split(',') for i in range(6) : D1verifreg[count].append(float(words[i])) count = count + 1 D2verifreg = [] D2verifreg_extend = [] D2verifreg_retract = [] D2verifreg_poleward = [] D2verifreg_equator = [] D2verifreg_origin = [] count = 0 file = open(filin2, "r") totlines = file.readlines() for line in totlines : D2verifreg.append([]) words = line.split(',') for i in range(6) : D2verifreg[count].append(float(words[i])) count = count + 1 D3verifreg = [] D3verifreg_extend = [] D3verifreg_retract = [] D3verifreg_poleward = [] D3verifreg_equator = [] D3verifreg_origin = [] count = 0 file = open(filin3, "r") totlines = file.readlines() for line in totlines : D3verifreg.append([]) words = line.split(',') for i in range(6) : D3verifreg[count].append(float(words[i])) count = count + 1 D4verifreg = [] D4verifreg_extend = [] D4verifreg_retract = [] D4verifreg_poleward = [] D4verifreg_equator = [] D4verifreg_origin = [] count = 0 file = open(filin4, "r") totlines = file.readlines() for line in totlines : D4verifreg.append([]) words = line.split(',') for i in range(6) : D4verifreg[count].append(float(words[i])) count = count + 1 D5verifreg = [] D5verifreg_extend = [] D5verifreg_retract = [] D5verifreg_poleward = [] D5verifreg_equator = [] D5verifreg_origin = [] count = 0 file = open(filin5, "r") totlines = file.readlines() for line in totlines : D5verifreg.append([]) words = line.split(',') for i in range(6) : D5verifreg[count].append(float(words[i])) count = count + 1 D6verifreg = [] D6verifreg_extend = [] D6verifreg_retract = [] D6verifreg_poleward = [] D6verifreg_equator = [] D6verifreg_origin = [] count = 0 file = open(filin6, "r") totlines = file.readlines() for line in totlines : D6verifreg.append([]) words = line.split(',') for i in range(6) : D6verifreg[count].append(float(words[i])) count = count + 1 D7verifreg = [] D7verifreg_extend = [] D7verifreg_retract = [] D7verifreg_poleward = [] D7verifreg_equator = [] D7verifreg_origin = [] count = 0 file = open(filin7, "r") totlines = file.readlines() for line in totlines : D7verifreg.append([]) words = line.split(',') for i in range(6) : D7verifreg[count].append(float(words[i])) count = count + 1 D8verifreg = [] D8verifreg_extend = [] D8verifreg_retract = [] D8verifreg_poleward = [] D8verifreg_equator = [] D8verifreg_origin = [] count = 0 file = open(filin8, "r") totlines = file.readlines() for line in totlines : D8verifreg.append([]) words = line.split(',') for i in range(6) : D8verifreg[count].append(float(words[i])) count = count + 1 D9verifreg = [] D9verifreg_extend = [] D9verifreg_retract = [] D9verifreg_poleward = [] D9verifreg_equator = [] D9verifreg_origin = [] count = 0 file = open(filin9, "r") totlines = file.readlines() for line in totlines : D9verifreg.append([]) words = line.split(',') for i in range(6) : D9verifreg[count].append(float(words[i])) count = count + 1 ####################### Split Data by Jet Regime ########################### extendct = 0 retractct = 0 polewardct = 0 equatorct = 0 originct = 0 for t in range(len(D1verifreg)) : if (D1verifreg[t][0] == 1) : D1verifreg_extend.append(D1verifreg[t]) D2verifreg_extend.append(D2verifreg[t]) D3verifreg_extend.append(D3verifreg[t]) D4verifreg_extend.append(D4verifreg[t]) D5verifreg_extend.append(D5verifreg[t]) D6verifreg_extend.append(D6verifreg[t]) D7verifreg_extend.append(D7verifreg[t]) D8verifreg_extend.append(D8verifreg[t]) D9verifreg_extend.append(D9verifreg[t]) D1fcastreg_gfs_extend.append(D1fcastreg_gfs[t]) D2fcastreg_gfs_extend.append(D2fcastreg_gfs[t]) D3fcastreg_gfs_extend.append(D3fcastreg_gfs[t]) D4fcastreg_gfs_extend.append(D4fcastreg_gfs[t]) D5fcastreg_gfs_extend.append(D5fcastreg_gfs[t]) D6fcastreg_gfs_extend.append(D6fcastreg_gfs[t]) D7fcastreg_gfs_extend.append(D7fcastreg_gfs[t]) D8fcastreg_gfs_extend.append(D8fcastreg_gfs[t]) D9fcastreg_gfs_extend.append(D9fcastreg_gfs[t]) D1fcastreg_gefs_extend.append(D1fcastreg_gefs[t]) D2fcastreg_gefs_extend.append(D2fcastreg_gefs[t]) D3fcastreg_gefs_extend.append(D3fcastreg_gefs[t]) D4fcastreg_gefs_extend.append(D4fcastreg_gefs[t]) D5fcastreg_gefs_extend.append(D5fcastreg_gefs[t]) D6fcastreg_gefs_extend.append(D6fcastreg_gefs[t]) D7fcastreg_gefs_extend.append(D7fcastreg_gefs[t]) D8fcastreg_gefs_extend.append(D8fcastreg_gefs[t]) D9fcastreg_gefs_extend.append(D9fcastreg_gefs[t]) extendct = extendct + 1 if (D1verifreg[t][0] == 2) : D1verifreg_retract.append(D1verifreg[t]) D2verifreg_retract.append(D2verifreg[t]) D3verifreg_retract.append(D3verifreg[t]) D4verifreg_retract.append(D4verifreg[t]) D5verifreg_retract.append(D5verifreg[t]) D6verifreg_retract.append(D6verifreg[t]) D7verifreg_retract.append(D7verifreg[t]) D8verifreg_retract.append(D8verifreg[t]) D9verifreg_retract.append(D9verifreg[t]) D1fcastreg_gfs_retract.append(D1fcastreg_gfs[t]) D2fcastreg_gfs_retract.append(D2fcastreg_gfs[t]) D3fcastreg_gfs_retract.append(D3fcastreg_gfs[t]) D4fcastreg_gfs_retract.append(D4fcastreg_gfs[t]) D5fcastreg_gfs_retract.append(D5fcastreg_gfs[t]) D6fcastreg_gfs_retract.append(D6fcastreg_gfs[t]) D7fcastreg_gfs_retract.append(D7fcastreg_gfs[t]) D8fcastreg_gfs_retract.append(D8fcastreg_gfs[t]) D9fcastreg_gfs_retract.append(D9fcastreg_gfs[t]) D1fcastreg_gefs_retract.append(D1fcastreg_gefs[t]) D2fcastreg_gefs_retract.append(D2fcastreg_gefs[t]) D3fcastreg_gefs_retract.append(D3fcastreg_gefs[t]) D4fcastreg_gefs_retract.append(D4fcastreg_gefs[t]) D5fcastreg_gefs_retract.append(D5fcastreg_gefs[t]) D6fcastreg_gefs_retract.append(D6fcastreg_gefs[t]) D7fcastreg_gefs_retract.append(D7fcastreg_gefs[t]) D8fcastreg_gefs_retract.append(D8fcastreg_gefs[t]) D9fcastreg_gefs_retract.append(D9fcastreg_gefs[t]) retractct = retractct + 1 if (D1verifreg[t][0] == 3) : D1verifreg_poleward.append(D1verifreg[t]) D2verifreg_poleward.append(D2verifreg[t]) D3verifreg_poleward.append(D3verifreg[t]) D4verifreg_poleward.append(D4verifreg[t]) D5verifreg_poleward.append(D5verifreg[t]) D6verifreg_poleward.append(D6verifreg[t]) D7verifreg_poleward.append(D7verifreg[t]) D8verifreg_poleward.append(D8verifreg[t]) D9verifreg_poleward.append(D9verifreg[t]) D1fcastreg_gfs_poleward.append(D1fcastreg_gfs[t]) D2fcastreg_gfs_poleward.append(D2fcastreg_gfs[t]) D3fcastreg_gfs_poleward.append(D3fcastreg_gfs[t]) D4fcastreg_gfs_poleward.append(D4fcastreg_gfs[t]) D5fcastreg_gfs_poleward.append(D5fcastreg_gfs[t]) D6fcastreg_gfs_poleward.append(D6fcastreg_gfs[t]) D7fcastreg_gfs_poleward.append(D7fcastreg_gfs[t]) D8fcastreg_gfs_poleward.append(D8fcastreg_gfs[t]) D9fcastreg_gfs_poleward.append(D9fcastreg_gfs[t]) D1fcastreg_gefs_poleward.append(D1fcastreg_gefs[t]) D2fcastreg_gefs_poleward.append(D2fcastreg_gefs[t]) D3fcastreg_gefs_poleward.append(D3fcastreg_gefs[t]) D4fcastreg_gefs_poleward.append(D4fcastreg_gefs[t]) D5fcastreg_gefs_poleward.append(D5fcastreg_gefs[t]) D6fcastreg_gefs_poleward.append(D6fcastreg_gefs[t]) D7fcastreg_gefs_poleward.append(D7fcastreg_gefs[t]) D8fcastreg_gefs_poleward.append(D8fcastreg_gefs[t]) D9fcastreg_gefs_poleward.append(D9fcastreg_gefs[t]) polewardct = polewardct + 1 if (D1verifreg[t][0] == 4) : D1verifreg_equator.append(D1verifreg[t]) D2verifreg_equator.append(D2verifreg[t]) D3verifreg_equator.append(D3verifreg[t]) D4verifreg_equator.append(D4verifreg[t]) D5verifreg_equator.append(D5verifreg[t]) D6verifreg_equator.append(D6verifreg[t]) D7verifreg_equator.append(D7verifreg[t]) D8verifreg_equator.append(D8verifreg[t]) D9verifreg_equator.append(D9verifreg[t]) D1fcastreg_gfs_equator.append(D1fcastreg_gfs[t]) D2fcastreg_gfs_equator.append(D2fcastreg_gfs[t]) D3fcastreg_gfs_equator.append(D3fcastreg_gfs[t]) D4fcastreg_gfs_equator.append(D4fcastreg_gfs[t]) D5fcastreg_gfs_equator.append(D5fcastreg_gfs[t]) D6fcastreg_gfs_equator.append(D6fcastreg_gfs[t]) D7fcastreg_gfs_equator.append(D7fcastreg_gfs[t]) D8fcastreg_gfs_equator.append(D8fcastreg_gfs[t]) D9fcastreg_gfs_equator.append(D9fcastreg_gfs[t]) D1fcastreg_gefs_equator.append(D1fcastreg_gefs[t]) D2fcastreg_gefs_equator.append(D2fcastreg_gefs[t]) D3fcastreg_gefs_equator.append(D3fcastreg_gefs[t]) D4fcastreg_gefs_equator.append(D4fcastreg_gefs[t]) D5fcastreg_gefs_equator.append(D5fcastreg_gefs[t]) D6fcastreg_gefs_equator.append(D6fcastreg_gefs[t]) D7fcastreg_gefs_equator.append(D7fcastreg_gefs[t]) D8fcastreg_gefs_equator.append(D8fcastreg_gefs[t]) D9fcastreg_gefs_equator.append(D9fcastreg_gefs[t]) equatorct = equatorct + 1 if (D1verifreg[t][0] == 5) : D1verifreg_origin.append(D1verifreg[t]) D2verifreg_origin.append(D2verifreg[t]) D3verifreg_origin.append(D3verifreg[t]) D4verifreg_origin.append(D4verifreg[t]) D5verifreg_origin.append(D5verifreg[t]) D6verifreg_origin.append(D6verifreg[t]) D7verifreg_origin.append(D7verifreg[t]) D8verifreg_origin.append(D8verifreg[t]) D9verifreg_origin.append(D9verifreg[t]) D1fcastreg_gfs_origin.append(D1fcastreg_gfs[t]) D2fcastreg_gfs_origin.append(D2fcastreg_gfs[t]) D3fcastreg_gfs_origin.append(D3fcastreg_gfs[t]) D4fcastreg_gfs_origin.append(D4fcastreg_gfs[t]) D5fcastreg_gfs_origin.append(D5fcastreg_gfs[t]) D6fcastreg_gfs_origin.append(D6fcastreg_gfs[t]) D7fcastreg_gfs_origin.append(D7fcastreg_gfs[t]) D8fcastreg_gfs_origin.append(D8fcastreg_gfs[t]) D9fcastreg_gfs_origin.append(D9fcastreg_gfs[t]) D1fcastreg_gefs_origin.append(D1fcastreg_gefs[t]) D2fcastreg_gefs_origin.append(D2fcastreg_gefs[t]) D3fcastreg_gefs_origin.append(D3fcastreg_gefs[t]) D4fcastreg_gefs_origin.append(D4fcastreg_gefs[t]) D5fcastreg_gefs_origin.append(D5fcastreg_gefs[t]) D6fcastreg_gefs_origin.append(D6fcastreg_gefs[t]) D7fcastreg_gefs_origin.append(D7fcastreg_gefs[t]) D8fcastreg_gefs_origin.append(D8fcastreg_gefs[t]) D9fcastreg_gefs_origin.append(D9fcastreg_gefs[t]) originct = originct + 1 ################### Calculate False Alarm information ######################## regime_hit_gfs = [0,0,0,0,0,0,0,0,0] regime_hit_gfs_extend = [0,0,0,0,0,0,0,0,0] regime_hit_gfs_retract = [0,0,0,0,0,0,0,0,0] regime_hit_gfs_poleward = [0,0,0,0,0,0,0,0,0] regime_hit_gfs_equator = [0,0,0,0,0,0,0,0,0] regime_hit_gfs_origin = [0,0,0,0,0,0,0,0,0] regime_miss_gfs = [0,0,0,0,0,0,0,0,0] regime_miss_gfs_extend = [0,0,0,0,0,0,0,0,0] regime_miss_gfs_retract = [0,0,0,0,0,0,0,0,0] regime_miss_gfs_poleward = [0,0,0,0,0,0,0,0,0] regime_miss_gfs_equator = [0,0,0,0,0,0,0,0,0] regime_miss_gfs_origin = [0,0,0,0,0,0,0,0,0] regime_hit_gefs = [0,0,0,0,0,0,0,0,0] regime_hit_gefs_extend = [0,0,0,0,0,0,0,0,0] regime_hit_gefs_retract = [0,0,0,0,0,0,0,0,0] regime_hit_gefs_poleward = [0,0,0,0,0,0,0,0,0] regime_hit_gefs_equator = [0,0,0,0,0,0,0,0,0] regime_hit_gefs_origin = [0,0,0,0,0,0,0,0,0] regime_miss_gefs = [0,0,0,0,0,0,0,0,0] regime_miss_gefs_extend = [0,0,0,0,0,0,0,0,0] regime_miss_gefs_retract = [0,0,0,0,0,0,0,0,0] regime_miss_gefs_poleward = [0,0,0,0,0,0,0,0,0] regime_miss_gefs_equator = [0,0,0,0,0,0,0,0,0] regime_miss_gefs_origin = [0,0,0,0,0,0,0,0,0] for t in range(len(D1verifreg)) : count_gfs = [0,0,0,0,0,0,0,0,0] count_gefs = [0,0,0,0,0,0,0,0,0] for i in range(5) : if (D1fcastreg_gfs[t][i+1] == D1verifreg[t][i+1]) : count_gfs[0] = count_gfs[0] + 1 if (D2fcastreg_gfs[t][i+1] == D2verifreg[t][i+1]) : count_gfs[1] = count_gfs[1] + 1 if (D3fcastreg_gfs[t][i+1] == D3verifreg[t][i+1]) : count_gfs[2] = count_gfs[2] + 1 if (D4fcastreg_gfs[t][i+1] == D4verifreg[t][i+1]) : count_gfs[3] = count_gfs[3] + 1 if (D5fcastreg_gfs[t][i+1] == D5verifreg[t][i+1]) : count_gfs[4] = count_gfs[4] + 1 if (D6fcastreg_gfs[t][i+1] == D6verifreg[t][i+1]) : count_gfs[5] = count_gfs[5] + 1 if (D7fcastreg_gfs[t][i+1] == D7verifreg[t][i+1]) : count_gfs[6] = count_gfs[6] + 1 if (D8fcastreg_gfs[t][i+1] == D8verifreg[t][i+1]) : count_gfs[7] = count_gfs[7] + 1 if (D9fcastreg_gfs[t][i+1] == D9verifreg[t][i+1]) : count_gfs[8] = count_gfs[8] + 1 if (D1fcastreg_gefs[t][i+1] == D1verifreg[t][i+1]) : count_gefs[0] = count_gefs[0] + 1 if (D2fcastreg_gefs[t][i+1] == D2verifreg[t][i+1]) : count_gefs[1] = count_gefs[1] + 1 if (D3fcastreg_gefs[t][i+1] == D3verifreg[t][i+1]) : count_gefs[2] = count_gefs[2] + 1 if (D4fcastreg_gefs[t][i+1] == D4verifreg[t][i+1]) : count_gefs[3] = count_gefs[3] + 1 if (D5fcastreg_gefs[t][i+1] == D5verifreg[t][i+1]) : count_gefs[4] = count_gefs[4] + 1 if (D6fcastreg_gefs[t][i+1] == D6verifreg[t][i+1]) : count_gefs[5] = count_gefs[5] + 1 if (D7fcastreg_gefs[t][i+1] == D7verifreg[t][i+1]) : count_gefs[6] = count_gefs[6] + 1 if (D8fcastreg_gefs[t][i+1] == D8verifreg[t][i+1]) : count_gefs[7] = count_gefs[7] + 1 if (D9fcastreg_gefs[t][i+1] == D9verifreg[t][i+1]) : count_gefs[8] = count_gefs[8] + 1 for i in range(9) : if (count_gfs[i] == 5) : regime_hit_gfs[i] = regime_hit_gfs[i] + 1 else : regime_miss_gfs[i] = regime_miss_gfs[i] + 1 if (count_gefs[i] == 5) : regime_hit_gefs[i] = regime_hit_gefs[i] + 1 else : regime_miss_gefs[i] = regime_miss_gefs[i] + 1 for t in range(len(D1verifreg_extend)) : count_gfs = [0,0,0,0,0,0,0,0,0] count_gefs = [0,0,0,0,0,0,0,0,0] for i in range(5) : if (D1fcastreg_gfs_extend[t][i+1] == D1verifreg_extend[t][i+1]) : count_gfs[0] = count_gfs[0] + 1 if (D2fcastreg_gfs_extend[t][i+1] == D2verifreg_extend[t][i+1]) : count_gfs[1] = count_gfs[1] + 1 if (D3fcastreg_gfs_extend[t][i+1] == D3verifreg_extend[t][i+1]) : count_gfs[2] = count_gfs[2] + 1 if (D4fcastreg_gfs_extend[t][i+1] == D4verifreg_extend[t][i+1]) : count_gfs[3] = count_gfs[3] + 1 if (D5fcastreg_gfs_extend[t][i+1] == D5verifreg_extend[t][i+1]) : count_gfs[4] = count_gfs[4] + 1 if (D6fcastreg_gfs_extend[t][i+1] == D6verifreg_extend[t][i+1]) : count_gfs[5] = count_gfs[5] + 1 if (D7fcastreg_gfs_extend[t][i+1] == D7verifreg_extend[t][i+1]) : count_gfs[6] = count_gfs[6] + 1 if (D8fcastreg_gfs_extend[t][i+1] == D8verifreg_extend[t][i+1]) : count_gfs[7] = count_gfs[7] + 1 if (D9fcastreg_gfs_extend[t][i+1] == D9verifreg_extend[t][i+1]) : count_gfs[8] = count_gfs[8] + 1 if (D1fcastreg_gefs_extend[t][i+1] == D1verifreg_extend[t][i+1]) : count_gefs[0] = count_gefs[0] + 1 if (D2fcastreg_gefs_extend[t][i+1] == D2verifreg_extend[t][i+1]) : count_gefs[1] = count_gefs[1] + 1 if (D3fcastreg_gefs_extend[t][i+1] == D3verifreg_extend[t][i+1]) : count_gefs[2] = count_gefs[2] + 1 if (D4fcastreg_gefs_extend[t][i+1] == D4verifreg_extend[t][i+1]) : count_gefs[3] = count_gefs[3] + 1 if (D5fcastreg_gefs_extend[t][i+1] == D5verifreg_extend[t][i+1]) : count_gefs[4] = count_gefs[4] + 1 if (D6fcastreg_gefs_extend[t][i+1] == D6verifreg_extend[t][i+1]) : count_gefs[5] = count_gefs[5] + 1 if (D7fcastreg_gefs_extend[t][i+1] == D7verifreg_extend[t][i+1]) : count_gefs[6] = count_gefs[6] + 1 if (D8fcastreg_gefs_extend[t][i+1] == D8verifreg_extend[t][i+1]) : count_gefs[7] = count_gefs[7] + 1 if (D9fcastreg_gefs_extend[t][i+1] == D9verifreg_extend[t][i+1]) : count_gefs[8] = count_gefs[8] + 1 for i in range(9) : if (count_gfs[i] == 5) : regime_hit_gfs_extend[i] = regime_hit_gfs_extend[i] + 1 else : regime_miss_gfs_extend[i] = regime_miss_gfs_extend[i] + 1 if (count_gefs[i] == 5) : regime_hit_gefs_extend[i] = regime_hit_gefs_extend[i] + 1 else : regime_miss_gefs_extend[i] = regime_miss_gefs_extend[i] + 1 for t in range(len(D1verifreg_retract)) : count_gfs = [0,0,0,0,0,0,0,0,0] count_gefs = [0,0,0,0,0,0,0,0,0] for i in range(5) : if (D1fcastreg_gfs_retract[t][i+1] == D1verifreg_retract[t][i+1]) : count_gfs[0] = count_gfs[0] + 1 if (D2fcastreg_gfs_retract[t][i+1] == D2verifreg_retract[t][i+1]) : count_gfs[1] = count_gfs[1] + 1 if (D3fcastreg_gfs_retract[t][i+1] == D3verifreg_retract[t][i+1]) : count_gfs[2] = count_gfs[2] + 1 if (D4fcastreg_gfs_retract[t][i+1] == D4verifreg_retract[t][i+1]) : count_gfs[3] = count_gfs[3] + 1 if (D5fcastreg_gfs_retract[t][i+1] == D5verifreg_retract[t][i+1]) : count_gfs[4] = count_gfs[4] + 1 if (D6fcastreg_gfs_retract[t][i+1] == D6verifreg_retract[t][i+1]) : count_gfs[5] = count_gfs[5] + 1 if (D7fcastreg_gfs_retract[t][i+1] == D7verifreg_retract[t][i+1]) : count_gfs[6] = count_gfs[6] + 1 if (D8fcastreg_gfs_retract[t][i+1] == D8verifreg_retract[t][i+1]) : count_gfs[7] = count_gfs[7] + 1 if (D9fcastreg_gfs_retract[t][i+1] == D9verifreg_retract[t][i+1]) : count_gfs[8] = count_gfs[8] + 1 if (D1fcastreg_gefs_retract[t][i+1] == D1verifreg_retract[t][i+1]) : count_gefs[0] = count_gefs[0] + 1 if (D2fcastreg_gefs_retract[t][i+1] == D2verifreg_retract[t][i+1]) : count_gefs[1] = count_gefs[1] + 1 if (D3fcastreg_gefs_retract[t][i+1] == D3verifreg_retract[t][i+1]) : count_gefs[2] = count_gefs[2] + 1 if (D4fcastreg_gefs_retract[t][i+1] == D4verifreg_retract[t][i+1]) : count_gefs[3] = count_gefs[3] + 1 if (D5fcastreg_gefs_retract[t][i+1] == D5verifreg_retract[t][i+1]) : count_gefs[4] = count_gefs[4] + 1 if (D6fcastreg_gefs_retract[t][i+1] == D6verifreg_retract[t][i+1]) : count_gefs[5] = count_gefs[5] + 1 if (D7fcastreg_gefs_retract[t][i+1] == D7verifreg_retract[t][i+1]) : count_gefs[6] = count_gefs[6] + 1 if (D8fcastreg_gefs_retract[t][i+1] == D8verifreg_retract[t][i+1]) : count_gefs[7] = count_gefs[7] + 1 if (D9fcastreg_gefs_retract[t][i+1] == D9verifreg_retract[t][i+1]) : count_gefs[8] = count_gefs[8] + 1 for i in range(9) : if (count_gfs[i] == 5) : regime_hit_gfs_retract[i] = regime_hit_gfs_retract[i] + 1 else : regime_miss_gfs_retract[i] = regime_miss_gfs_retract[i] + 1 if (count_gefs[i] == 5) : regime_hit_gefs_retract[i] = regime_hit_gefs_retract[i] + 1 else : regime_miss_gefs_retract[i] = regime_miss_gefs_retract[i] + 1 for t in range(len(D1verifreg_poleward)) : count_gfs = [0,0,0,0,0,0,0,0,0] count_gefs = [0,0,0,0,0,0,0,0,0] for i in range(5) : if (D1fcastreg_gfs_poleward[t][i+1] == D1verifreg_poleward[t][i+1]) : count_gfs[0] = count_gfs[0] + 1 if (D2fcastreg_gfs_poleward[t][i+1] == D2verifreg_poleward[t][i+1]) : count_gfs[1] = count_gfs[1] + 1 if (D3fcastreg_gfs_poleward[t][i+1] == D3verifreg_poleward[t][i+1]) : count_gfs[2] = count_gfs[2] + 1 if (D4fcastreg_gfs_poleward[t][i+1] == D4verifreg_poleward[t][i+1]) : count_gfs[3] = count_gfs[3] + 1 if (D5fcastreg_gfs_poleward[t][i+1] == D5verifreg_poleward[t][i+1]) : count_gfs[4] = count_gfs[4] + 1 if (D6fcastreg_gfs_poleward[t][i+1] == D6verifreg_poleward[t][i+1]) : count_gfs[5] = count_gfs[5] + 1 if (D7fcastreg_gfs_poleward[t][i+1] == D7verifreg_poleward[t][i+1]) : count_gfs[6] = count_gfs[6] + 1 if (D8fcastreg_gfs_poleward[t][i+1] == D8verifreg_poleward[t][i+1]) : count_gfs[7] = count_gfs[7] + 1 if (D9fcastreg_gfs_poleward[t][i+1] == D9verifreg_poleward[t][i+1]) : count_gfs[8] = count_gfs[8] + 1 if (D1fcastreg_gefs_poleward[t][i+1] == D1verifreg_poleward[t][i+1]) : count_gefs[0] = count_gefs[0] + 1 if (D2fcastreg_gefs_poleward[t][i+1] == D2verifreg_poleward[t][i+1]) : count_gefs[1] = count_gefs[1] + 1 if (D3fcastreg_gefs_poleward[t][i+1] == D3verifreg_poleward[t][i+1]) : count_gefs[2] = count_gefs[2] + 1 if (D4fcastreg_gefs_poleward[t][i+1] == D4verifreg_poleward[t][i+1]) : count_gefs[3] = count_gefs[3] + 1 if (D5fcastreg_gefs_poleward[t][i+1] == D5verifreg_poleward[t][i+1]) : count_gefs[4] = count_gefs[4] + 1 if (D6fcastreg_gefs_poleward[t][i+1] == D6verifreg_poleward[t][i+1]) : count_gefs[5] = count_gefs[5] + 1 if (D7fcastreg_gefs_poleward[t][i+1] == D7verifreg_poleward[t][i+1]) : count_gefs[6] = count_gefs[6] + 1 if (D8fcastreg_gefs_poleward[t][i+1] == D8verifreg_poleward[t][i+1]) : count_gefs[7] = count_gefs[7] + 1 if (D9fcastreg_gefs_poleward[t][i+1] == D9verifreg_poleward[t][i+1]) : count_gefs[8] = count_gefs[8] + 1 for i in range(9) : if (count_gfs[i] == 5) : regime_hit_gfs_poleward[i] = regime_hit_gfs_poleward[i] + 1 else : regime_miss_gfs_poleward[i] = regime_miss_gfs_poleward[i] + 1 if (count_gefs[i] == 5) : regime_hit_gefs_poleward[i] = regime_hit_gefs_poleward[i] + 1 else : regime_miss_gefs_poleward[i] = regime_miss_gefs_poleward[i] + 1 for t in range(len(D1verifreg_equator)) : count_gfs = [0,0,0,0,0,0,0,0,0] count_gefs = [0,0,0,0,0,0,0,0,0] for i in range(5) : if (D1fcastreg_gfs_equator[t][i+1] == D1verifreg_equator[t][i+1]) : count_gfs[0] = count_gfs[0] + 1 if (D2fcastreg_gfs_equator[t][i+1] == D2verifreg_equator[t][i+1]) : count_gfs[1] = count_gfs[1] + 1 if (D3fcastreg_gfs_equator[t][i+1] == D3verifreg_equator[t][i+1]) : count_gfs[2] = count_gfs[2] + 1 if (D4fcastreg_gfs_equator[t][i+1] == D4verifreg_equator[t][i+1]) : count_gfs[3] = count_gfs[3] + 1 if (D5fcastreg_gfs_equator[t][i+1] == D5verifreg_equator[t][i+1]) : count_gfs[4] = count_gfs[4] + 1 if (D6fcastreg_gfs_equator[t][i+1] == D6verifreg_equator[t][i+1]) : count_gfs[5] = count_gfs[5] + 1 if (D7fcastreg_gfs_equator[t][i+1] == D7verifreg_equator[t][i+1]) : count_gfs[6] = count_gfs[6] + 1 if (D8fcastreg_gfs_equator[t][i+1] == D8verifreg_equator[t][i+1]) : count_gfs[7] = count_gfs[7] + 1 if (D9fcastreg_gfs_equator[t][i+1] == D9verifreg_equator[t][i+1]) : count_gfs[8] = count_gfs[8] + 1 if (D1fcastreg_gefs_equator[t][i+1] == D1verifreg_equator[t][i+1]) : count_gefs[0] = count_gefs[0] + 1 if (D2fcastreg_gefs_equator[t][i+1] == D2verifreg_equator[t][i+1]) : count_gefs[1] = count_gefs[1] + 1 if (D3fcastreg_gefs_equator[t][i+1] == D3verifreg_equator[t][i+1]) : count_gefs[2] = count_gefs[2] + 1 if (D4fcastreg_gefs_equator[t][i+1] == D4verifreg_equator[t][i+1]) : count_gefs[3] = count_gefs[3] + 1 if (D5fcastreg_gefs_equator[t][i+1] == D5verifreg_equator[t][i+1]) : count_gefs[4] = count_gefs[4] + 1 if (D6fcastreg_gefs_equator[t][i+1] == D6verifreg_equator[t][i+1]) : count_gefs[5] = count_gefs[5] + 1 if (D7fcastreg_gefs_equator[t][i+1] == D7verifreg_equator[t][i+1]) : count_gefs[6] = count_gefs[6] + 1 if (D8fcastreg_gefs_equator[t][i+1] == D8verifreg_equator[t][i+1]) : count_gefs[7] = count_gefs[7] + 1 if (D9fcastreg_gefs_equator[t][i+1] == D9verifreg_equator[t][i+1]) : count_gefs[8] = count_gefs[8] + 1 for i in range(9) : if (count_gfs[i] == 5) : regime_hit_gfs_equator[i] = regime_hit_gfs_equator[i] + 1 else : regime_miss_gfs_equator[i] = regime_miss_gfs_equator[i] + 1 if (count_gefs[i] == 5) : regime_hit_gefs_equator[i] = regime_hit_gefs_equator[i] + 1 else : regime_miss_gefs_equator[i] = regime_miss_gefs_equator[i] + 1 for t in range(len(D1verifreg_origin)) : count_gfs = [0,0,0,0,0,0,0,0,0] count_gefs = [0,0,0,0,0,0,0,0,0] for i in range(5) : if (D1fcastreg_gfs_origin[t][i+1] == D1verifreg_origin[t][i+1]) : count_gfs[0] = count_gfs[0] + 1 if (D2fcastreg_gfs_origin[t][i+1] == D2verifreg_origin[t][i+1]) : count_gfs[1] = count_gfs[1] + 1 if (D3fcastreg_gfs_origin[t][i+1] == D3verifreg_origin[t][i+1]) : count_gfs[2] = count_gfs[2] + 1 if (D4fcastreg_gfs_origin[t][i+1] == D4verifreg_origin[t][i+1]) : count_gfs[3] = count_gfs[3] + 1 if (D5fcastreg_gfs_origin[t][i+1] == D5verifreg_origin[t][i+1]) : count_gfs[4] = count_gfs[4] + 1 if (D6fcastreg_gfs_origin[t][i+1] == D6verifreg_origin[t][i+1]) : count_gfs[5] = count_gfs[5] + 1 if (D7fcastreg_gfs_origin[t][i+1] == D7verifreg_origin[t][i+1]) : count_gfs[6] = count_gfs[6] + 1 if (D8fcastreg_gfs_origin[t][i+1] == D8verifreg_origin[t][i+1]) : count_gfs[7] = count_gfs[7] + 1 if (D9fcastreg_gfs_origin[t][i+1] == D9verifreg_origin[t][i+1]) : count_gfs[8] = count_gfs[8] + 1 if (D1fcastreg_gefs_origin[t][i+1] == D1verifreg_origin[t][i+1]) : count_gefs[0] = count_gefs[0] + 1 if (D2fcastreg_gefs_origin[t][i+1] == D2verifreg_origin[t][i+1]) : count_gefs[1] = count_gefs[1] + 1 if (D3fcastreg_gefs_origin[t][i+1] == D3verifreg_origin[t][i+1]) : count_gefs[2] = count_gefs[2] + 1 if (D4fcastreg_gefs_origin[t][i+1] == D4verifreg_origin[t][i+1]) : count_gefs[3] = count_gefs[3] + 1 if (D5fcastreg_gefs_origin[t][i+1] == D5verifreg_origin[t][i+1]) : count_gefs[4] = count_gefs[4] + 1 if (D6fcastreg_gefs_origin[t][i+1] == D6verifreg_origin[t][i+1]) : count_gefs[5] = count_gefs[5] + 1 if (D7fcastreg_gefs_origin[t][i+1] == D7verifreg_origin[t][i+1]) : count_gefs[6] = count_gefs[6] + 1 if (D8fcastreg_gefs_origin[t][i+1] == D8verifreg_origin[t][i+1]) : count_gefs[7] = count_gefs[7] + 1 if (D9fcastreg_gefs_origin[t][i+1] == D9verifreg_origin[t][i+1]) : count_gefs[8] = count_gefs[8] + 1 for i in range(9) : if (count_gfs[i] == 5) : regime_hit_gfs_origin[i] = regime_hit_gfs_origin[i] + 1 else : regime_miss_gfs_origin[i] = regime_miss_gfs_origin[i] + 1 if (count_gefs[i] == 5) : regime_hit_gefs_origin[i] = regime_hit_gefs_origin[i] + 1 else : regime_miss_gefs_origin[i] = regime_miss_gefs_origin[i] + 1 ################ Calculate Statistics and Plot ################################ ###### GFS Deterministic Regime Error ###### far_gfs = [0] far_gfs_extend = [0] far_gfs_retract = [0] far_gfs_poleward = [0] far_gfs_equator = [0] far_gfs_origin = [0] for i in range(9) : if (regime_miss_gfs[i] + regime_hit_gfs[i] == 0) : far_gfs.append(0.) else : far_gfs.append((regime_miss_gfs[i]/(regime_hit_gfs[i]+regime_miss_gfs[i]))) if (regime_miss_gfs_extend[i] + regime_hit_gfs_extend[i] == 0 ) : far_gfs_extend.append(0.) else : far_gfs_extend.append((regime_miss_gfs_extend[i]/(regime_hit_gfs_extend[i]+regime_miss_gfs_extend[i]))) if (regime_miss_gfs_retract[i] + regime_hit_gfs_retract[i] == 0 ) : far_gfs_retract.append(0.) else : far_gfs_retract.append((regime_miss_gfs_retract[i]/(regime_hit_gfs_retract[i]+regime_miss_gfs_retract[i]))) if (regime_miss_gfs_poleward[i] + regime_hit_gfs_poleward[i] == 0 ) : far_gfs_poleward.append(0.) else : far_gfs_poleward.append((regime_miss_gfs_poleward[i]/(regime_hit_gfs_poleward[i]+regime_miss_gfs_poleward[i]))) if (regime_miss_gfs_equator[i] + regime_hit_gfs_equator[i] == 0 ) : far_gfs_equator.append(0.) else : far_gfs_equator.append((regime_miss_gfs_equator[i]/(regime_hit_gfs_equator[i]+regime_miss_gfs_equator[i]))) if (regime_miss_gfs_origin[i] + regime_hit_gfs_origin[i] == 0 ) : far_gfs_origin.append(0.) else : far_gfs_origin.append((regime_miss_gfs_origin[i]/(regime_hit_gfs_origin[i]+regime_miss_gfs_origin[i]))) plt.figure(12) p1 = plt.plot(fhour,far_gfs,'k',linewidth=5) p2 = plt.plot(fhour,far_gfs_extend,'m',linewidth=3) p3 = plt.plot(fhour,far_gfs_retract,'g',linewidth=3) p4 = plt.plot(fhour,far_gfs_poleward,'b',linewidth=3) p5 = plt.plot(fhour,far_gfs_equator,'r',linewidth=3) p6 = plt.plot(fhour,far_gfs_origin,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Mean (N= '+str(len(D1verifreg))+')',linestyle='None') ext = mlines.Line2D([], [], color='m',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Extend (N= '+str(len(D1verifreg_extend))+')',linestyle='None') ret = mlines.Line2D([], [], color='g',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Retract (N= '+str(len(D1verifreg_retract))+')',linestyle='None') pol = mlines.Line2D([], [], color='b',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Poleward (N= '+str(len(D1verifreg_poleward))+')',linestyle='None') equ = mlines.Line2D([], [], color='r',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Equator (N= '+str(len(D1verifreg_equator))+')',linestyle='None') ori = mlines.Line2D([], [], color='c',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Origin (N= '+str(len(D1verifreg_origin))+')',linestyle='None') plt.legend(handles=[mean,ext,ret,pol,equ,ori],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 216, -0.25, 1.01]) plt.xticks(fhour) plt.yticks([0,0.25,0.50,0.75,1.00]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Regime False Alarm Ratio',fontsize=12,fontweight='bold') titl = plt.title('GFS Regime False Alarm Ratio Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('fargfs_regime.pdf') plt.show() ###### GEFS Ensemble Mean Regime Error ###### far_gefs = [0] far_gefs_extend = [0] far_gefs_retract = [0] far_gefs_poleward = [0] far_gefs_equator = [0] far_gefs_origin = [0] for i in range(9) : if (regime_miss_gefs[i] + regime_hit_gefs[i] == 0) : far_gefs.append(0.) else : far_gefs.append((regime_miss_gefs[i]/(regime_hit_gefs[i]+regime_miss_gefs[i]))) if (regime_miss_gefs_extend[i] + regime_hit_gefs_extend[i] == 0 ) : far_gefs_extend.append(0.) else : far_gefs_extend.append((regime_miss_gefs_extend[i]/(regime_hit_gefs_extend[i]+regime_miss_gefs_extend[i]))) if (regime_miss_gefs_retract[i] + regime_hit_gefs_retract[i] == 0 ) : far_gefs_retract.append(0.) else : far_gefs_retract.append((regime_miss_gefs_retract[i]/(regime_hit_gefs_retract[i]+regime_miss_gefs_retract[i]))) if (regime_miss_gefs_poleward[i] + regime_hit_gefs_poleward[i] == 0 ) : far_gefs_poleward.append(0.) else : far_gefs_poleward.append((regime_miss_gefs_poleward[i]/(regime_hit_gefs_poleward[i]+regime_miss_gefs_poleward[i]))) if (regime_miss_gefs_equator[i] + regime_hit_gefs_equator[i] == 0 ) : far_gefs_equator.append(0.) else : far_gefs_equator.append((regime_miss_gefs_equator[i]/(regime_hit_gefs_equator[i]+regime_miss_gefs_equator[i]))) if (regime_miss_gefs_origin[i] + regime_hit_gefs_origin[i] == 0 ) : far_gefs_origin.append(0.) else : far_gefs_origin.append((regime_miss_gefs_origin[i]/(regime_hit_gefs_origin[i]+regime_miss_gefs_origin[i]))) plt.figure(13) p1 = plt.plot(fhour,far_gefs,'k',linewidth=5) p2 = plt.plot(fhour,far_gefs_extend,'m',linewidth=3) p3 = plt.plot(fhour,far_gefs_retract,'g',linewidth=3) p4 = plt.plot(fhour,far_gefs_poleward,'b',linewidth=3) p5 = plt.plot(fhour,far_gefs_equator,'r',linewidth=3) p6 = plt.plot(fhour,far_gefs_origin,'c',linewidth=3) mean = mlines.Line2D([], [], color='k',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Mean (N= '+str(len(D1verifreg))+')',linestyle='None') ext = mlines.Line2D([], [], color='m',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Extend (N= '+str(len(D1verifreg_extend))+')',linestyle='None') ret = mlines.Line2D([], [], color='g',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Retract (N= '+str(len(D1verifreg_retract))+')',linestyle='None') pol = mlines.Line2D([], [], color='b',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Poleward (N= '+str(len(D1verifreg_poleward))+')',linestyle='None') equ = mlines.Line2D([], [], color='r',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Equator (N= '+str(len(D1verifreg_equator))+')',linestyle='None') ori = mlines.Line2D([], [], color='c',marker='o',markersize=8,markeredgewidth=1.5,markeredgecolor='k',label='Origin (N= '+str(len(D1verifreg_origin))+')',linestyle='None') plt.legend(handles=[mean,ext,ret,pol,equ,ori],loc=2,fontsize=10,numpoints=1) axes = plt.axis([0, 216, 0, 1.01]) plt.xticks(fhour) plt.yticks([0,0.25,0.50,0.75,1.00]) xlab = plt.xlabel('Forecast Hour (h)',fontsize=12,fontweight='bold') ylab = plt.ylabel('Regime False Alarm Ratio',fontsize=12,fontweight='bold') titl = plt.title('GEFS Mean Regime False Alarm Ratio Sept 1 2018-May 31 2019',fontsize=14,fontweight='bold') plt.grid(True) #plt.savefig('fargefs_regime.pdf') plt.show()