Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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()
Exemplo n.º 4
0
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
Exemplo n.º 5
0
    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)