Example #1
0
def lcrb_mam(phase = 'elnino'):
    from pandas import Series
    alldivDF, sst, mei, phaseind, slp = seasonal_setup('MAM', phase, n = 20)
    index = alldivDF['Texas-06'].index
    fp = '/Users/bz/Desktop/LCRB_MAMJ.tsv'
    clim_data = Series(data = np.loadtxt(fp), index = index)
    nipa = NIPAphase(clim_data, sst, mei, phaseind)
    nipa.bootcorr(ntim = 1000, corrconf = 0.95, bootconf = 0.90)
    sstMap(nipa); plt.show()
    return nipa
def gen_sst_maps(base_fp = EV['HOME'] + '/Desktop/lcrb_sst/'):
    from simpleNIPA import NIPAphase
    from numpy import ravel
    from smapFuncts import sstMap

    lcrb_prcp = get_lcrb_prcp()
    sst, slp, mei, phaseind = get_climate_data()

    models = {}

    for bootconf in [1.0]:
        for corrconf in [.99]:
            fig, axes = plt.subplots(nrows = 3, ncols = 2, figsize = (12, 12))
            for phase, ax in zip(phaseind, ravel(axes)):
                print 'Starting %s, %.2f, %.2f' % (phase, corrconf, bootconf)
                model = NIPAphase(lcrb_prcp, sst, mei, phaseind[phase])
                model.bootcorr(corrconf = corrconf, bootconf = bootconf, quick = True)
                model.gridCheck(lim = 6)
                model.crossvalpcr()
                if not model.flags['noSST']:
                    fig, ax, m = sstMap(model, fig = fig, ax = ax)
                    ax.set_title('%s, %.2f, %i' % (phase, model.correlation, model.n_post_grid))
                else:
                    print '%s has no significant SST'
                models[phase] = model
                fp = base_fp + '%i_%i_shift' % (int(corrconf * 100), int(bootconf*100))
            fig.savefig(fp); plt.close(fig)
    return models
def neutpos(ocn = 'Pac'):
    phase = 'neutpos'
    print fp+'/'+phase

    if isfile(fp+'/'+phase):
        f = open(fp+'/'+phase)
        model = pickle.load(f)
    else:
        model = gen_model(phase = phase)
        f = open(fp+'/'+phase, 'w')
        pickle.dump(model, f)
    _, _, _, phaseind = get_climate_data()
    fig = plt.figure(figsize = (12,8)); axes = {}
    years = model.clim_data.index.year

    axes['eofmap'] = fig.add_axes([0.05,0.05,0.4,0.4])
    axes['sstmap'] = fig.add_axes([0.05,0.55,0.4,0.4])

    axes['sstpc'] = fig.add_axes([0.55,0.725,0.4,0.2])
    axes['eofpc'] = fig.add_axes([0.55,0.1,0.4,0.2])

    axes['scat'] = fig.add_axes([0.645, 0.35, 0.225, 0.3])

    fig, axes['sstmap'], m = sstMap(model, fig = fig, cmap = cm.inferno, ax = axes['sstmap'])
    if ocn == 'Pac':
        region = ['Pacific']; eof = '1'; title = 'Pacific EOF-2'
        switch = False
    if ocn == 'Atl':
        region = ['Atlantic']; eof = '3'; title = 'Atlantic EOF-4'
        switch = False

    final, lats, lons, pcs, prcp = combine_oceans(regions = region)
    fig, axes['eofmap'], m = create_full_map_combined(final, lats, lons,
                                                        eof = eof,
                                                        fig = fig,
                                                        ax = axes['eofmap'],
                                                        switch = switch)


    sstpc = model.crossvalpcr(xval = False)
    sstpc = sstpc/abs(sstpc).max()

    eofpc = pcs[0][phaseind[phase]]
    eofpc = eofpc/abs(eofpc).max()
    axes['sstpc'].plot(sstpc)
    axes['eofpc'].plot(eofpc)
    axes['scat'].scatter(sstpc, eofpc)

    axes['sstmap'].set_title('NIPA Correlation Map')
    axes['eofmap'].set_title(title)
    idx = range(0, len(years),4)
    axes['sstpc'].set_xticks(idx)
    axes['sstpc'].set_xticklabels(years[idx])
    axes['eofpc'].set_xticks(idx)
    axes['eofpc'].set_xticklabels(years[idx])

    fig.suptitle('Phase: Neutral Positive')

    return fig, axes
def lanina():
    phase = 'lanina'
    print fp+'/'+phase

    if isfile(fp+'/'+phase):
        f = open(fp+'/'+phase)
        model = pickle.load(f)
    else:
        model = gen_model(phase = phase)
        f = open(fp+'/'+phase, 'w')
        pickle.dump(model, f)

    _, _, _, phaseind = get_climate_data()
    fig = plt.figure(figsize = (12,8)); axes = {}
    years = model.clim_data.index.year

    axes['eofmap'] = fig.add_axes([0.05,0.05,0.4,0.4])
    axes['sstmap'] = fig.add_axes([0.05,0.55,0.4,0.4])

    axes['sstpc'] = fig.add_axes([0.55,0.725,0.4,0.2])
    axes['eofpc'] = fig.add_axes([0.55,0.1,0.4,0.2])

    axes['scat'] = fig.add_axes([0.645, 0.35, 0.225, 0.3])

    fig, axes['sstmap'], m = sstMap(model, fig = fig, cmap = cm.inferno, ax = axes['sstmap'])

    final, lats, lons, pcs, prcp = combine_oceans(regions = ['Pacific'])
    fig, axes['eofmap'], m = create_full_map_combined(final, lats, lons,
                                                        eof = '0',
                                                        fig = fig,
                                                        ax = axes['eofmap'])
    sstpc = model.crossvalpcr(xval = False)
    sstpc = sstpc/abs(sstpc).max()

    eofpc = pcs[0][phaseind[phase]]
    eofpc = eofpc/abs(eofpc).max()
    axes['sstpc'].plot(sstpc)
    axes['eofpc'].plot(eofpc)
    axes['scat'].scatter(sstpc, eofpc)
    axes['scat'].axis([-1.1, 0, -1.1, 0])
    axes['sstmap'].set_title('NIPA Correlation Map')
    axes['eofmap'].set_title('Pacific EOF-1')
    idx = range(0, len(years),2)
    axes['sstpc'].set_xticks(idx)
    axes['sstpc'].set_xticklabels(years[idx])
    axes['eofpc'].set_xticks(idx)
    axes['eofpc'].set_xticklabels(years[idx])


    fig.suptitle('Phase: La Nina')

    return fig, axes
Example #5
0
def division_sstmaps():
    results = []
    for phase, n_yrs in [('elnino', 30)]:
        alldivDF, sst, mei, phaseind, slp = seasonal_setup(season = 'DJF', phase = phase, n = n_yrs)
        div = 'Missouri-04'
        nipa = NIPAphase(alldivDF[div], sst, mei, phaseind)
        nipa.bootcorr(ntim = 1000, corrconf = 0.95, bootconf = 0.90)
        nipa.gridCheck(lim = 6, debug = True)
        nipa.crossvalpcr()
        nipa.categorize()
        nipa.categorize(hindcast = True)
        fp = base_fp + '%s_%s_DJF_sst' % (div, phase)
        fig, ax, m = sstMap(nipa)
        fig.savefig(fp)
        plt.close(fig)
        results.append(nipa)
    return
Example #6
0
def sstmaps2():
    from data_load import gen_models
    from smapFuncts import sstMap, texDat
    fig, axes = plt.subplots(2,2,figsize = (16,12))
    models = gen_models(cc = 0.95, quick = True)

    for phase, ax in zip(['lanina', 'neutneg', 'neutpos', 'elnino'], axes.ravel()):
        print phase
        fig, ax, m = sstMap(models[phase], cmap = mpl.cm.inferno, fig = fig, ax = ax)
        fig, ax, m = texDat(fig = fig, ax = ax, m = m)
        if phase == 'lanina': title = 'La Nina'
        if phase == 'elnino': title = 'El Nino'
        if phase == 'neutpos': title = 'Neutral-Positive'
        if phase == 'neutneg': title = 'Neutral-Negative'
        ax.set_title(title, fontsize = 18, fontweight = 'bold')
    fig.savefig('/Users/bz/Desktop/Feb20Response/images/sst_corr')
    plt.close(fig)
    return
Example #7
0
def sstmaps():
    from data_load import gen_models
    from smapFuncts import sstMap, texDat
    fig, ax = plt.subplots(1,1,figsize = (4,3))
    models = gen_models(cc = 0.95, quick = True)

    for phase in ['allyears']:#,'lanina', 'neutneg', 'neutpos', 'elnino']:
        print phase
        fig, ax = plt.subplots(1,1,figsize = (8,4))
        fig, ax, m = sstMap(models[phase], cmap = mpl.cm.inferno, fig = fig, ax = ax)
        fig, ax, m = texDat(fig = fig, ax = ax, m = m)
        if phase == 'allyears':
            title = 'All Years'
            ax.add_patch(mpl.patches.Rectangle((0.30, 0.5),
                                                0.2, 0.2,
                                                fill = False))
        if phase == 'lanina': title = 'La Nina'
        if phase == 'elnino': title = 'El Nino'
        if phase == 'neutpos': title = 'Neutral-Positive'
        if phase == 'neutneg': title = 'Neutral-Negative'
        ax.set_title(title, fontsize = 18, fontweight = 'bold')
        fig.savefig('/Users/bz/Desktop/Feb20Response/images/aysst')
        plt.close(fig)
    return
Example #8
0
    plt.title('MAMJ Precipitation in LCRB by Phase', fontsize = 22,
                fontweight = 'bold')

    for feature in ['cbars', 'cmins', 'cmeans', 'cmaxes']:
        violin_parts[feature].set_color('black')
    for pc, color in zip(violin_parts['bodies'], [cmap(0), cmap(0.75), cmap(0.4)]):
        pc.set_facecolor(color)
    plt.ylabel('Precipitation, mm', fontweight='bold')
    plt.savefig(EV['HOME'] + '/Desktop/Feb20Response/images/violin')
    return

if __name__ == '__main__':
    from climdiv_data import *
    from simpleNIPA import *
    from smapFuncts import sstMap
    kwgroups = create_kwgroups(debug = True, climdiv_startyr = 1921, n_yrs = 90, \
    	climdiv_months = [9, 10, 11], n_mon_sst = 3, sst_lag = 3, n_mon_slp = 2, \
    	slp_lag = 2, n_mon_mei = 3, mei_lag = 3, filin = EV['PRCP'])

    div = 'Mississippi-05'
    alldivDF, sst, mei, phaseind, _, _ = get_data(kwgroups)
    clim_data = alldivDF[div]
    model = NIPAphase(clim_data, sst, mei, phaseind['lanina'])
    model.bootcorr(corrconf = 0.9, bootconf = 0.8, quick = True)
    model.gridCheck(lim = 5, debug = True)
    print model.n_pre_grid, model.n_post_grid
    model.crossvalpcr()
    fig, ax, m = sstMap(model)
    fig.suptitle(div + ', ' + str(model.correlation))
    fig.savefig(EV['HOME'] + '/Desktop/CodePresentation/images/MS')
Example #9
0
    f.close()
    return


alldivDF, sst, mei, phaseind, slp, clim_data = seasonal_setup()
x = pd.Series()
clim_data = alldivDF["Texas-06"]  # + alldivDF['Texas-02'] )/2
# print '# yrs in phase %s is %i' % (phase, (phaseind[phase]).sum())
# clim_data = alldivDF['Texas-06']
for phase in ["lanina", "neutneg", "neutpos", "elnino"]:
    nipa = NIPAphase(clim_data, sst, mei, phaseind[phase])
    nipa.bootcorr(corrconf=0.95, bootconf=0.9, ntim=200)
    nipa.crossvalpcr()
    if not nipa.flags["noSST"]:
        line = "%s,%.2f,%i\n" % (phase, nipa.correlation, nipa.n_pre_grid)
        sstMap(nipa)
        plt.show()
    else:
        line = "%s,%f,%f\n" % (phase, np.nan, np.nan)
    print line

# x = x.sort_index()
# print np.corrcoef(x, clim_data)[0,1]
#
# def categorize(data, ncat = 3):
#     from pandas import Series
#     from numpy import sort
#     x = sort(data)
#     n = len(x)
#     upper = x[((2 * n) / ncat) - 1]
#     lower = x[(n / ncat) - 1]