#!/usr/bin/env python # Wenchang Yang (wenchang@princeton.edu) # Wed Apr 9 01:50:48 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 ifile = 'nTS.hurdat2.1851-2024.nc' nTS = xr.open_dataarray(ifile) ifile = 'nTSplus.hurdat2.1851-2024.nc' nTSplus = xr.open_dataarray(ifile) ifile = 'nHU.hurdat2.1851-2024.nc' nHU = xr.open_dataarray(ifile) ifile = 'nMH.hurdat2.1851-2024.nc' nMH = xr.open_dataarray(ifile) ifile = '/tigress/wenchang/data/vecchi2021data/humh_adjusted.nc' ds = xr.open_dataset(ifile) # #hurdat2 TS df = pd.read_csv('https://tigress-web.princeton.edu/~gvecchi/hurdat2_long_adjusted.txt', header=None, sep='\s+') da = xr.DataArray(df.iloc[:,1].values, dims=('year',), coords=(df.iloc[:,0].astype('int'),)) da_hurdat2 = da if __name__ == '__main__': from wyconfig import * #my plot settings fig, ax = plt.subplots(figsize=(8,4)) marker = None if 'MH' in sys.argv: nMH.plot(label='MH', marker=marker, fillstyle='none') ds.MH_raw.plot(label='MH from Vecchi21', ls='--') (ds.MH_raw + ds.dMH.mean('sample')).plot(label='MH adjusted from Vecchi21', lw=0.5) elif 'TS' in sys.argv: nTS.plot(label='TS', marker=marker, fillstyle='none', color='C2', lw=0.5) nTSplus.plot(label='TS2days17', marker=marker, fillstyle='none', color='C0') da_hurdat2.plot(label='TS adjusted from Vecchi', ls='--', color='C1') else: nHU.plot(label='HU', marker=marker, fillstyle='none') ds.HU_raw.plot(label='HU from Vecchi21', ls='--') (ds.HU_raw + ds.dHU.mean('sample')).plot(label='HU adjusted from Vecchi21', lw=0.5) ax.legend(loc='upper left', ncol=3) ax.set_title('HURDAT2 storms') ax.set_ylabel('#') #savefig if 'savefig' in sys.argv or 's' in sys.argv: figname = __file__.replace('.py', f'.png') if 'MH' in sys.argv: figname = figname.replace('.png', f'__MH.png') elif 'TS' in sys.argv: figname = figname.replace('.png', f'__TS.png') else: figname = figname.replace('.png', f'__HU.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()