#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Tue Mar 28 19:47:00 EDT 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 wython = '/tigress/wenchang/wython' if wython not in sys.path: sys.path.append(wython); print('added to python path:', wython) #from misc import get_kws_from_argv import xlinregress # if __name__ == '__main__': tt.check('end import') # #start from here #dT daname = 't_surf' #norm_by_glbmean = False #True ifile = """ t_surf_FLOR_co2x4_CTL1860_tigercpu_intelmpi_18_576PE_0101-0250_zonalmean.nc t_surf_FLOR_co2xp5_CTL1860_tigercpu_intelmpi_18_576PE_0101-0600_zonalmean.nc t_surf_FLOR_co2xp25_CTL1860_tigercpu_intelmpi_18_576PE_0101-0250_zonalmean.nc t_surf_FLOR_p2p0sol_CTL1860_tigercpu_intelmpi_18_576PE_0101-0400_zonalmean.nc t_surf_FLOR_p6p0sol_CTL1860_tigercpu_intelmpi_18_576PE_0101-0600_zonalmean.nc t_surf_FLOR_m2p0sol_CTL1860_tigercpu_intelmpi_18_576PE_0101-0400_zonalmean.nc t_surf_FLOR_m6p0sol_CTL1860_tigercpu_intelmpi_18_576PE_0101-0597_zonalmean.nc t_surf_FLOR_co2x2_CTL1860_tigercpu_intelmpi_18_576PE_0101-0600_zonalmean.nc """.split()[-1] ifile_ctl = 't_surf_FLOR_CTL1860_newdiag_tigercpu_intelmpi_18_576PE_0101-0200_zonalmean.nc' ifile = ifile.replace('t_surf', daname) ifile_ctl = ifile_ctl.replace('t_surf', daname) da = xr.open_dataarray(ifile).load().groupby('time.year').mean('time') da_ctl = xr.open_dataarray(ifile_ctl).load().groupby('time.year').mean('time') daa = da - da_ctl.mean('year') dT = daa """ if norm_by_glbmean: wgt = np.cos(daa.lat/180*np.pi) daa_glbmean = daa.weighted(wgt).mean('lat') daa = daa/daa_glbmean """ #dN ifile_N = '../netrad_toa_FLOR_co2x2_CTL1860_tigercpu_intelmpi_18_576PE_0101-0600_glbmean.nc' print(f'{ifile_N =}') ifile_N_ctl = glob.glob(ifile_N.replace('_co2x2_CTL1860', '_CTL1860_newdiag').replace('0101-0600', '????-????'))[0] print(f'{ifile_N_ctl =}') dN = xr.open_dataarray(ifile_N).groupby('time.year').mean('time') \ - xr.open_dataarray(ifile_N_ctl).groupby('time.year').mean('time').sel(year=slice(101,200)).mean('year') #years 1-20 yearspan = slice(0,20) reg = dT.isel(year=yearspan).linregress.on(dN.isel(year=yearspan), dim='year') b = reg.slope b1 = b #print(f'{b1 =}') #years 21-150 yearspan = slice(20,150) reg = dT.isel(year=yearspan).linregress.on(dN.isel(year=yearspan), dim='year') b = reg.slope b2 = b #print(f'{b2 =}') if __name__ == '__main__': from wyconfig import * #my plot settings fig,ax = plt.subplots() (-b1).plot(label='dT/dN over years 1-20 (b1, K/W/m^2)') (-b2).plot(label='dT/dN over years 21-150 (b2, K/W/m^2)') #(b2/b1).plot(label='b2/b1') ax.legend() ax.set_xticks(range(-90,91,15)) #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()