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
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
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
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
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')
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]