#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Tue Jul 29 03:40:29 PM EDT 2025 if __name__ == '__main__': import sys,os try: from misc.timer import Timer tt = Timer(f'[{os.getcwd()}] start ' + ' '.join(sys.argv)) except: pass 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 # if __name__ == '__main__': try: tt.check('end import') except: pass # #start from here model = 'AM4.1' levels = [2, 6, 8] daname = 'blk_crb_col' expname = 'CTL1850_tiger3_intel24ifort_openmpi_1536PE' ifile = f'CTL/{daname}_{model}_{expname}_0001-0040_glbmean.nc' da = xr.open_dataarray(ifile) da_bc_ctl = da das_bc = dict() for lev in levels: expname = f'CTL1850_BC_L{lev}_Y0011_tiger3_intel24ifort_openmpi_1536PE' ifile = f'{daname}_{model}_{expname}_0011-0025_glbmean.nc' da = xr.open_dataarray(ifile) das_bc[lev] = da daname = 'qo3_col' expname = 'CTL1850_tiger3_intel24ifort_openmpi_1536PE' ifile = f'CTL/{daname}_{model}_{expname}_0001-0040_glbmean.nc' da = xr.open_dataarray(ifile) da_o3_ctl = da das_o3 = dict() for lev in levels: expname = f'CTL1850_BC_L{lev}_Y0011_tiger3_intel24ifort_openmpi_1536PE' ifile = f'{daname}_{model}_{expname}_0011-0025_glbmean.nc' da = xr.open_dataarray(ifile) das_o3[lev] = da if __name__ == '__main__': from wyconfig import * #my plot settings fig,ax = plt.subplots() for lev in levels: label = f'L{lev}_BC' da_ref = da_bc_ctl.groupby('time.month').mean('time') daa = das_bc[lev].groupby('time.month') - da_ref daa.assign_attrs(units='kg/m^2').plot(label=label) ax2 = ax.twinx() plt.sca(ax2) for lev in levels: label = f'minus L{lev}_O3' da_ref = da_o3_ctl.groupby('time.month').mean('time') daa = das_o3[lev].groupby('time.month') - da_ref (-daa).assign_attrs(units='DU').plot(ls='--', label=label) ax2.grid(False) ax.legend(loc='upper center') ax2.legend(loc='upper right') #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) try: tt.check(f'**Done**') except: pass print() if 'notshowfig' in sys.argv or 'n' in sys.argv: pass else: if 'plt' in globals(): plt.show()