#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Fri Mar 3 18:57:00 EST 2023 if __name__ == '__main__': import sys,os from misc.timer import Timer tt = Timer(f'[{os.getcwd()}] start ' + ' '.join(sys.argv)) import sys, os.path, os, glob, datetime import xarray as xr, numpy as np, pandas as pd, matplotlib.pyplot as plt #more imports #from misc import get_kws_from_argv # if __name__ == '__main__': tt.check('end import') # #start from here def func_anom(ifile, ifile_ctl): da = xr.open_dataarray(ifile).mean('time') da0 = xr.open_dataarray(ifile_ctl).mean('time') daa = (da/da0-1)*100 """ #dgmst da = xr.open_dataarray(ifile.replace('precip_', 't_surf_')).mean('time') da0 = xr.open_dataarray(ifile_ctl.replace('precip_', 't_surf_')).mean('time') dgmst = da - da0 daa = daa/dgmst """ daa.attrs['units'] = '%/2xCO2' return daa das = [] models = [] #AM2.1 ifile_ctl = '../AM2.1/precip_AM2.1p1_CTL1990_tigercpu_intelmpi_18_30PE_0101-0150_glbmean.nc' #ifile = '../AM2.1/precip_AM2.1p1_CTL1990_plus2K_tigercpu_intelmpi_18_30PE_0101-0150_glbmean.nc' ifile = '../AM2.1/precip_AM2.1p1_CTL1990_2xCO2_tigercpu_intelmpi_18_30PE_0101-0150_glbmean.nc' model = ifile.split('/')[0] da = func_anom(ifile, ifile_ctl) das.append(da) models.append(model) #AM2.5 ifile_ctl = '../AM2.5/precip_AM2.5_CTL1990s_tigercpu_intelmpi_18_540PE_0101-0200_glbmean.nc' ifile = '../AM2.5/precip_AM2.5_CTL1990s_2xCO2_tigercpu_intelmpi_18_540PE_0101-0150_glbmean.nc' model = ifile.split('/')[0] da = func_anom(ifile, ifile_ctl) das.append(da) models.append(model) #HIRAM ifile_ctl = '../HIRAM/precip_HIRAM_CTL1990s_v201910_tigercpu_intelmpi_18_540PE_0101-0300_glbmean.nc' ifile = '../HIRAM/precip_HIRAM_CTL1990s_v201910_2xCO2_tigercpu_intelmpi_18_540PE_0101-0150_glbmean.nc' model = ifile.split('/')[0] da = func_anom(ifile, ifile_ctl) das.append(da) models.append(model) #AM2.5C360 ifile_ctl = '../AM2.5C360/precip_AM2.5C360_CTL1990s_tigercpu_intelmpi_18_1080PE_0101-0200_glbmean.nc' ifile = '../AM2.5C360/precip_AM2.5C360_CTL1990s_2xCO2_tigercpu_intelmpi_18_1080PE_0101-0150_glbmean.nc' model = ifile.split('/')[0] da = func_anom(ifile, ifile_ctl) das.append(da) models.append(model) #AM2.5 p5xCO2 ifile_ctl = '../AM2.5/precip_AM2.5_CTL1990s_tigercpu_intelmpi_18_540PE_0101-0200_glbmean.nc' ifile = '../AM2.5/precip_AM2.5_CTL1990s_p5xCO2_tigercpu_intelmpi_18_540PE_0101-0150_glbmean.nc' model = ifile.split('/')[0] + '(0.5xCO2)' da = func_anom(ifile, ifile_ctl) * (-1) das.append(da) models.append(model) da = xr.concat(das, dim=pd.Index(models, name='model')) df = da.to_pandas() if __name__ == '__main__': from wyconfig import * #my plot settings fig,ax = plt.subplots() n_models = da.model.size df.plot.bar(rot=0, color=[f'C{ii}' for ii in range(n_models)]) for ii in range(n_models): y = da.isel(model=ii).item() ax.text(ii, y, f'{y:.2f}', va='top', ha='center') ax.axhline(0, color='gray', ls='--') ax.set_ylabel('dprecip [% per 2xCO2]') ax.set_xlabel('') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'.png') if 'overwritefig' in sys.argv or 'o' in sys.argv: wysavefig(figname, overwritefig=True) else: wysavefig(figname) tt.check(f'**Done**') print() if 'notshowfig' in sys.argv or 'n' in sys.argv: pass else: if 'plt' in globals(): plt.show()