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
def gen_model(phase = 'lanina', cc = 0.95, bc = 0.80, quick = True):
    from simpleNIPA import NIPAphase
    from numpy import ravel
    from smapFuncts import sstMap


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

    model = NIPAphase(lcrb_prcp, sst, mei, phaseind[phase])
    model.bootcorr(corrconf = cc, bootconf = bc, quick = quick)
    model.gridCheck(lim = 5, ntim = 3, debug = True)
    model.crossvalpcr()
    return model
Esempio n. 4
0
def violin():
    from data_load import get_lcrb_prcp, get_climate_data
    prcp = get_lcrb_prcp()
    _,_,_, phaseind = get_climate_data()
    cmap = mpl.cm.get_cmap('viridis')
    rgba = [cmap(0.25), cmap(0.7)]

    data = [prcp[phaseind['lanina']], prcp, prcp[phaseind['elnino']]]
    violin_parts = plt.violinplot(data, showmeans = True)
    plt.ylim(0,650)
    plt.xticks(range(1,4),['La Nina', 'All Years', 'El Nino'], fontsize = 18)
    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
Esempio n. 5
0
def timeseries():
    ###Make figure showing which years fall where
    prcp = get_lcrb_prcp()
    sst, slp, mei, phaseind = get_climate_data()
    cmap = mpl.cm.get_cmap('seismic')
    fig, ax = plt.subplots(1, figsize = (12,6))
    ax.plot(prcp, color = 'k', linewidth = 2)
    colors = [cmap(0.2), cmap(0.4), cmap(0.6), cmap(0.8)]
    phases = ['lanina', 'neutneg', 'neutpos', 'elnino']

    for phase, color in zip(phases, colors):
        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.plot(prcp[phaseind[phase]], marker = 'o',
                markersize = 10, color = color, linewidth = 0, label = title)
    plt.legend(loc = 'best')
    ax.set_ylim(0, 650)
    ax.set_xlabel('Years', fontsize = 16, fontweight = 'bold')
    ax.set_ylabel('Total MAMJ Precipitaton, mm', fontsize = 16, fontweight = 'bold')
    fig.savefig(EV['HOME'] + '/Desktop/Feb20Response/images/timeseries')
    return