#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Mon Jul 14 03:27:14 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 basin = get_kws_from_argv('basin', 'NA') HU = True if 'HU' in sys.argv else False expnames = """ CTL1990s_cesm2sst7590_tiger3_intelmpi_24_1440PE CTL1990s_cesm2faSST7590_tiger3_intelmpi_24_1440PE CTL1990s_cesm2sst0520_tiger3_intelmpi_24_1440PE CTL1990s_cesm2faSST0520_tiger3_intelmpi_24_1440PE CTL1990s_cesm2sst3550_tiger3_intelmpi_24_1440PE CTL1990s_cesm2faSST3550_tiger3_intelmpi_24_1440PE """.split() dss = [] labels= [] for expname in expnames: label = expname.split('_')[1] #ifile = f'/home/wenchang/HIRAM/work/{expname}/TC/netcdf/tc_counts.TS17.0101-0130.yearly.nc' ifile = f'/home/wenchang/HIRAM/work/{expname}/TC/netcdf/tc_counts.TS17.0101-0150.yearly.nc' #updated by extending to year 150 if HU: ifile = ifile.replace('TS17', 'TS33') ds = xr.open_dataset(ifile) dss.append(ds) labels.append(label) ds = xr.concat(dss, dim=pd.Index(labels, name='expname')) #ds = xr.concat([ds.isel(expname=slice(0,None,2)), ds.isel(expname=slice(1,None,2))], dim=pd.Index(['cesm2', 'cesm2fa'], name='model')) if __name__ == '__main__': from wyconfig import * #my plot settings import seaborn as sns #ds[basin].transpose().to_pandas().boxplot() df = ds[basin].isel(expname=slice(0,None,2)).to_dataframe() sns.violinplot(x='expname', y=basin, data=df) df = ds[basin].isel(expname=slice(1,None,2)).to_dataframe() sns.violinplot(x='expname', y=basin, data=df) #df = ds[basin].to_dataframe() #sns.violinplot(x='expname', y=basin, data=df) ax = plt.gca() ax.set_xticklabels(ax.get_xticklabels(), rotation=30, ha='right') ax.set_xlabel('') ax.set_ylabel(f'{basin} TC #') if HU: ax.set_ylabel(f'{basin} HU #') #savefig if 'savefig' in sys.argv or 's' in sys.argv: if HU: figname = __file__.replace('.py', f'__TS33{basin}.png') else: figname = __file__.replace('.py', f'__TS17{basin}.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()