def compare_eddypro(): epname = qcio.get_filename_dialog(title='Choose an EddyPro full output file') ofname = qcio.get_filename_dialog(title='Choose an L3 output file') ds_ep = qcio.read_eddypro_full(epname) ds_of = qcio.nc_read_series(ofname) dt_ep = ds_ep.series['DateTime']['Data'] dt_of = ds_of.series['DateTime']['Data'] start_datetime = max([dt_ep[0],dt_of[0]]) end_datetime = min([dt_ep[-1],dt_of[-1]]) si_of = qcutils.GetDateIndex(dt_of, str(start_datetime), ts=30, default=0, match='exact') ei_of = qcutils.GetDateIndex(dt_of, str(end_datetime), ts=30, default=len(dt_of), match='exact') si_ep = qcutils.GetDateIndex(dt_ep, str(start_datetime), ts=30, default=0, match='exact') ei_ep = qcutils.GetDateIndex(dt_ep, str(end_datetime), ts=30, default=len(dt_ep), match='exact') us_of = qcutils.GetVariableAsDictionary(ds_of,'ustar',si=si_of,ei=ei_of) us_ep = qcutils.GetVariableAsDictionary(ds_ep,'ustar',si=si_ep,ei=ei_ep) Fh_of = qcutils.GetVariableAsDictionary(ds_of,'Fh',si=si_of,ei=ei_of) Fh_ep = qcutils.GetVariableAsDictionary(ds_ep,'Fh',si=si_ep,ei=ei_ep) Fe_of = qcutils.GetVariableAsDictionary(ds_of,'Fe',si=si_of,ei=ei_of) Fe_ep = qcutils.GetVariableAsDictionary(ds_ep,'Fe',si=si_ep,ei=ei_ep) Fc_of = qcutils.GetVariableAsDictionary(ds_of,'Fc',si=si_of,ei=ei_of) Fc_ep = qcutils.GetVariableAsDictionary(ds_ep,'Fc',si=si_ep,ei=ei_ep) # copy the range check values from the OFQC attributes to the EP attributes for of, ep in zip([us_of, Fh_of, Fe_of, Fc_of], [us_ep, Fh_ep, Fe_ep, Fc_ep]): for item in ["rangecheck_upper", "rangecheck_lower"]: if item in of["Attr"]: ep["Attr"][item] = of["Attr"][item] # apply QC to the EddyPro data qcck.ApplyRangeCheckToVariable(us_ep) qcck.ApplyRangeCheckToVariable(Fc_ep) qcck.ApplyRangeCheckToVariable(Fe_ep) qcck.ApplyRangeCheckToVariable(Fh_ep) # plot the comparison plt.ion() fig = plt.figure(1,figsize=(8,8)) qcplot.xyplot(us_ep["Data"],us_of["Data"],sub=[2,2,1],regr=2,xlabel='u*_EP (m/s)',ylabel='u*_OF (m/s)') qcplot.xyplot(Fh_ep["Data"],Fh_of["Data"],sub=[2,2,2],regr=2,xlabel='Fh_EP (W/m2)',ylabel='Fh_OF (W/m2)') qcplot.xyplot(Fe_ep["Data"],Fe_of["Data"],sub=[2,2,3],regr=2,xlabel='Fe_EP (W/m2)',ylabel='Fe_OF (W/m2)') qcplot.xyplot(Fc_ep["Data"],Fc_of["Data"],sub=[2,2,4],regr=2,xlabel='Fc_EP (umol/m2/s)',ylabel='Fc_OF (umol/m2/s)') plt.tight_layout() plt.draw() plt.ioff()
def compare_eddypro(): epname = qcio.get_filename_dialog(title='Choose an EddyPro full output file') ofname = qcio.get_filename_dialog(title='Choose an L3 output file') ds_ep = qcio.read_eddypro_full(epname) ds_of = qcio.nc_read_series(ofname) dt_ep = ds_ep.series['DateTime']['Data'] dt_of = ds_of.series['DateTime']['Data'] si = dt_of.index(dt_ep[0]) ei = dt_of.index(dt_ep[-1]) us_of,f,a = qcutils.GetSeriesasMA(ds_of,'ustar',si=si,ei=ei) us_ep,f,a = qcutils.GetSeriesasMA(ds_ep,'ustar') Fh_of,f,a = qcutils.GetSeriesasMA(ds_of,'Fh',si=si,ei=ei) Fh_ep,f,a = qcutils.GetSeriesasMA(ds_ep,'Fh') Fe_of,f,a = qcutils.GetSeriesasMA(ds_of,'Fe',si=si,ei=ei) Fe_ep,f,a = qcutils.GetSeriesasMA(ds_ep,'Fe') Fc_of,f,a = qcutils.GetSeriesasMA(ds_of,'Fc',si=si,ei=ei) Fc_ep,f,a = qcutils.GetSeriesasMA(ds_ep,'Fc') us_of.mask = numpy.ma.mask_or(us_of.mask,us_ep.mask) us_ep.mask = numpy.ma.mask_or(us_of.mask,us_ep.mask) Fh_of.mask = numpy.ma.mask_or(Fh_of.mask,Fh_ep.mask) Fh_ep.mask = numpy.ma.mask_or(Fh_of.mask,Fh_ep.mask) Fe_of.mask = numpy.ma.mask_or(Fe_of.mask,Fe_ep.mask) Fe_ep.mask = numpy.ma.mask_or(Fe_of.mask,Fe_ep.mask) Fc_of.mask = numpy.ma.mask_or(Fc_of.mask,Fc_ep.mask) Fc_ep.mask = numpy.ma.mask_or(Fc_of.mask,Fc_ep.mask) plt.ion() fig = plt.figure(1,figsize=(8,8)) qcplot.xyplot(us_ep,us_of,sub=[2,2,1],regr=1,xlabel='u*_EP (m/s)',ylabel='u*_OF (m/s)') qcplot.xyplot(Fh_ep,Fh_of,sub=[2,2,2],regr=1,xlabel='Fh_EP (W/m2)',ylabel='Fh_OF (W/m2)') qcplot.xyplot(Fe_ep,Fe_of,sub=[2,2,3],regr=1,xlabel='Fe_EP (W/m2)',ylabel='Fe_OF (W/m2)') qcplot.xyplot(Fc_ep,Fc_of,sub=[2,2,4],regr=1,xlabel='Fc_EP (umol/m2/s)',ylabel='Fc_OF (umol/m2/s)') plt.tight_layout() plt.draw() plt.ioff()
def compare_eddypro(): epname = qcio.get_filename_dialog( title='Choose an EddyPro full output file') ofname = qcio.get_filename_dialog(title='Choose an L3 output file') ds_ep = qcio.read_eddypro_full(epname) ds_of = qcio.nc_read_series(ofname) dt_ep = ds_ep.series['DateTime']['Data'] dt_of = ds_of.series['DateTime']['Data'] start_datetime = max([dt_ep[0], dt_of[0]]) end_datetime = min([dt_ep[-1], dt_of[-1]]) si_of = qcutils.GetDateIndex(dt_of, str(start_datetime), ts=30, default=0, match='exact') ei_of = qcutils.GetDateIndex(dt_of, str(end_datetime), ts=30, default=len(dt_of), match='exact') si_ep = qcutils.GetDateIndex(dt_ep, str(start_datetime), ts=30, default=0, match='exact') ei_ep = qcutils.GetDateIndex(dt_ep, str(end_datetime), ts=30, default=len(dt_ep), match='exact') us_of = qcutils.GetVariableAsDictionary(ds_of, 'ustar', si=si_of, ei=ei_of) us_ep = qcutils.GetVariableAsDictionary(ds_ep, 'ustar', si=si_ep, ei=ei_ep) Fh_of = qcutils.GetVariableAsDictionary(ds_of, 'Fh', si=si_of, ei=ei_of) Fh_ep = qcutils.GetVariableAsDictionary(ds_ep, 'Fh', si=si_ep, ei=ei_ep) Fe_of = qcutils.GetVariableAsDictionary(ds_of, 'Fe', si=si_of, ei=ei_of) Fe_ep = qcutils.GetVariableAsDictionary(ds_ep, 'Fe', si=si_ep, ei=ei_ep) Fc_of = qcutils.GetVariableAsDictionary(ds_of, 'Fc', si=si_of, ei=ei_of) Fc_ep = qcutils.GetVariableAsDictionary(ds_ep, 'Fc', si=si_ep, ei=ei_ep) # copy the range check values from the OFQC attributes to the EP attributes for of, ep in zip([us_of, Fh_of, Fe_of, Fc_of], [us_ep, Fh_ep, Fe_ep, Fc_ep]): for item in ["rangecheck_upper", "rangecheck_lower"]: if item in of["Attr"]: ep["Attr"][item] = of["Attr"][item] # apply QC to the EddyPro data qcck.ApplyRangeCheckToVariable(us_ep) qcck.ApplyRangeCheckToVariable(Fc_ep) qcck.ApplyRangeCheckToVariable(Fe_ep) qcck.ApplyRangeCheckToVariable(Fh_ep) # plot the comparison plt.ion() fig = plt.figure(1, figsize=(8, 8)) qcplot.xyplot(us_ep["Data"], us_of["Data"], sub=[2, 2, 1], regr=2, xlabel='u*_EP (m/s)', ylabel='u*_OF (m/s)') qcplot.xyplot(Fh_ep["Data"], Fh_of["Data"], sub=[2, 2, 2], regr=2, xlabel='Fh_EP (W/m2)', ylabel='Fh_OF (W/m2)') qcplot.xyplot(Fe_ep["Data"], Fe_of["Data"], sub=[2, 2, 3], regr=2, xlabel='Fe_EP (W/m2)', ylabel='Fe_OF (W/m2)') qcplot.xyplot(Fc_ep["Data"], Fc_of["Data"], sub=[2, 2, 4], regr=2, xlabel='Fc_EP (umol/m2/s)', ylabel='Fc_OF (umol/m2/s)') plt.tight_layout() plt.draw() plt.ioff()
j = 0 for i in [1,2,3,4,5,6,7,8,9,10,11,12]: j = j + 1 index = numpy.where(month_30min_1d==i)[0] if len(index)!=0: y = ah_HMP1_30min_1d[index] x = ah_7500_30min_1d[index] if j in [1,2,3,4,5,6,7,8,9]: xlabel = None else: xlabel = '7500 (g/m3)' if j in [2,3,5,6,8,9,11,12]: ylabel = None else: ylabel = 'HMP (g/m3)' qcplot.xyplot(x,y,sub=[4,3,j],regr=2,title=MnthList[i-1],xlabel=xlabel,ylabel=ylabel) plt.tight_layout() # daily regressions slope = numpy.ones(ndays) offset = numpy.zeros(ndays) correl = numpy.ones(ndays) number = numpy.zeros(ndays) for i in range(0,ndays-1): x = ah_7500_30min_2d[i,:] y = ah_HMP1_30min_2d[i,:] x_nm = numpy.ma.compressed(x) x_nm = sm.add_constant(x_nm,prepend=False) y_nm = numpy.ma.compressed(y) if len(y_nm)>1: resrlm = sm.RLM(y_nm,x_nm,M=sm.robust.norms.TukeyBiweight()).fit() coefs = resrlm.params
index = numpy.where(month_30min_1d == i)[0] if len(index) != 0: y = ah_HMP1_30min_1d[index] x = ah_7500_30min_1d[index] if j in [1, 2, 3, 4, 5, 6, 7, 8, 9]: xlabel = None else: xlabel = '7500 (g/m3)' if j in [2, 3, 5, 6, 8, 9, 11, 12]: ylabel = None else: ylabel = 'HMP (g/m3)' qcplot.xyplot(x, y, sub=[4, 3, j], regr=2, title=MnthList[i - 1], xlabel=xlabel, ylabel=ylabel) plt.tight_layout() # daily regressions slope = numpy.ones(ndays) offset = numpy.zeros(ndays) correl = numpy.ones(ndays) number = numpy.zeros(ndays) for i in range(0, ndays - 1): x = ah_7500_30min_2d[i, :] y = ah_HMP1_30min_2d[i, :] x_nm = numpy.ma.compressed(x) x_nm = sm.add_constant(x_nm, prepend=False) y_nm = numpy.ma.compressed(y)