def all_cases_simple_overview(e): for case in e.events.paper.values: data = case.summary() fig, axlist = plot_overview(data, params=params) plt.legend() plt.tight_layout() sdir = read.ensure_dir(path.join(savedir, 'simple')) fig.savefig(path.join(sdir, case.dtstr('%Y%m%d') + '.eps'), dpi=150)
from scr_snowfall import param_table plt.close('all') plt.ioff() debug = False rholims = (0, 100, 200, 800) #rholims = (0, 150, 300, 800) limslist = sf.limitslist(rholims) n_ranges = len(limslist) separate = False d0_col = 'D_0_gamma' resultspath = '../results/pip2015' paperpath = read.ensure_dir(path.join(resultspath, 'paper')) savepath = path.join(resultspath, 'psd') rhorangestr = '$%s < \\rho \leq %s$' def d0_nw_paper(data, rholimits): rhopairs = sf.limitslist(rholimits) fig, axarr = plt.subplots(nrows=1, ncols=3, dpi=150, figsize=(11, 4), sharex=True, sharey=True, tight_layout=True) for i, (rhomin, rhomax) in enumerate(rhopairs):
right_index=True) # TODO: check duplicates vfits = dict() for rhomin in rholimits[:-1]: pipv = read.PipV(data=vtable.query('rhomin=={0}'.format(rhomin))) vfits[rhomin], std, etc = pipv.pickler('v-d_rho_range', pipv.find_fit, **fitargs) fig, axarr = sf.plot_vfits_rho_intervals(dict2tuple(vfits), limslist, **kws) axarr[0].axis(bnds) for ax in axarr: ax.tick_params(direction='out', top=False) pc = pd.DataFrame(index=rholimits[:-1], columns=['count_all', 'count_hwfm', 'r_sq']) for rhomin in vfits: vfit = vfits[rhomin] pc.loc[rhomin] = vfit.x_unfiltered.size, vfit.x.size, vfit.rsq( filtered=False) pc.loc['total'] = pc.sum() if debug: savepath += '/test' read.ensure_dir(savepath) fname = 'combined' if unfiltered: fname += '_unfiltered' fig.savefig(path.join(savepath, fname + tld)) #fig_fltr.savefig(path.join(savepath, fname + '_d0fltr' + tld)) fig.savefig(path.join(paths['paper'], 'vfits_rho_ranges' + tld)) pc.to_csv(path.join(paths['tables'], 'vfits_stats.csv'), sep='\t')
ax.set_xticks((0.5, 1, 2, 3, 4, 5, 6)) plt.legend() return ax, rho_d0, rho_d0_baecc, rho_d0_1415 def mass_dim(rho_d0, b_v=0.2): a_d0, b_d0 = rho_d0.params a_d0 = a_d0/1000*10**b_d0 beta = b_d0 + 3 alpha = np.pi/6*3.67**b_d0*a_d0*gamma(b_v+4)/gamma(b_v+b_d0+4) return fit.PolFit(params=(alpha, beta), xname='D') data_fltr = param_table(debug=debug) figkws = {'dpi': 150, 'figsize': (5,5)} #fig = plt.figure(**figkws) #ax = plot_d0_rho(data) fig_fltr = plt.figure(**figkws) ax_fltr, rho_d0, rho_d0_baecc, rho_d0_1415 = plot_d0_rho(data_fltr) m_d = mass_dim(rho_d0) m_d_baecc = mass_dim(rho_d0_baecc) m_d_1415 = mass_dim(rho_d0_1415) if debug: savepath += '/test' paperpath = path.join(savepath, 'paper') read.ensure_dir(paperpath) #fig.savefig(path.join(savepath, 'rho_d0_combined.eps')) fig_fltr.savefig(path.join(savepath, 'rho_d0_combined_d0fltr.eps')) fig_fltr.savefig(path.join(paperpath, 'd0_rho.eps')) fig_fltr.savefig(path.join(paperpath, 'd0_rho.png'))
import pandas as pd from os import path import gc pluvio_comb_intervals = 2 dtformat_default = '%d.%m.%y %H:%M' dtformat_snex = '%Y %d %B %H UTC' dtformat_paper = '%Y %b %d %H:%M' #QSTR = 'density<600 & count>800 & b>0' QSTR = 'D_0_gamma>0.6 & intensity>0.2 & count>800 & density==density' rholimits = (0, 100, 200, 1000) #rholimits = (0, 150, 300, 800) resultspath = '../results/pip2015' paperpath = path.join(resultspath, 'paper') paths = {'results': read.ensure_dir(resultspath), 'paper': read.ensure_dir(paperpath), 'tables': read.ensure_dir(path.join(paperpath, 'tables'))} files = {'h5nov14': path.join(read.DATA_DIR, '2014nov1-23.h5'), 'h5w1415': path.join(read.DATA_DIR, 'dec-jan1415.h5'), 'h5baecc': read.H5_PATH, 'cbaecc': 'cases/pip2015.csv', 'c14nov': 'cases/pip2015_nov14.csv', 'c1415': 'cases/pip2015_14-15.csv', 'cbaecc_test': 'cases/pip2015test.csv', 'c1415_test': 'cases/pip2015_14-15test.csv', 'params_cache': path.join(read.CACHE_DIR, 'param_table'+ read.MSGTLD)} def test_events(): return events(casesfile_baecc=files['cbaecc_test'],
plt.close('all') plt.ioff() basepath = '../results/pip2015/vfit' if debug: basepath += '/test' fname = '%Y%m%d_%H%M' date_format = '%d. %m. %Y' time_format = '%H:%M' extent = (0.375, 5, 0.5, 2.5) for c in e.events.paper.values: c.density() # to initialize fits savepath = read.ensure_dir(path.join(basepath, c.dtstr('%Y%m%d'))) fits = c.instr['pipv'].fits.polfit start_time = c.instr['pluvio'].start_time() axlist = [] flist = [] for i, vfit in fits.iteritems(): if vfit.flipped: flipstr = '_flipped' else: flipstr = '' flist.append(plt.figure(dpi=150, figsize=(4,3))) ax = vfit.plot(source_style='hex', unfiltered=True, source_kws={'gridsize': 40, 'extent': extent}) axlist.append(ax) ax.axis(extent) ax.legend(loc='lower right')
data = param_table(e=e, debug=debug) data.index = data.index.droplevel() vdata = read.merge_series(e.pluv_grouper(), e.vel_data()) vtable = pd.merge(vdata, pd.DataFrame(data.rhomin), left_on='group', right_index=True) # TODO: check duplicates vfits = dict() for rhomin in rholimits[:-1]: pipv = read.PipV(data=vtable.query('rhomin=={0}'.format(rhomin))) vfits[rhomin], std, etc = pipv.pickler('v-d_rho_range', pipv.find_fit, **fitargs) fig, axarr = sf.plot_vfits_rho_intervals(dict2tuple(vfits), limslist, **kws) axarr[0].axis(bnds) for ax in axarr: ax.tick_params(direction='out', top=False) pc = pd.DataFrame(index=rholimits[:-1], columns=['count_all', 'count_hwfm', 'r_sq']) for rhomin in vfits: vfit = vfits[rhomin] pc.loc[rhomin] = vfit.x_unfiltered.size, vfit.x.size, vfit.rsq(filtered=False) pc.loc['total'] = pc.sum() if debug: savepath += '/test' read.ensure_dir(savepath) fname = 'combined' if unfiltered: fname += '_unfiltered' fig.savefig(path.join(savepath, fname + tld)) #fig_fltr.savefig(path.join(savepath, fname + '_d0fltr' + tld)) fig.savefig(path.join(paths['paper'], 'vfits_rho_ranges' + tld)) pc.to_csv(path.join(paths['tables'], 'vfits_stats.csv'), sep='\t')
from scr_snowfall import pip2015events, test_events, paths plt.close('all') plt.ioff() debug = False savedir = path.join(paths['results'], 'case_overview') d0_col = 'D_0_gamma' if debug: e = test_events() savedir += '/test' plt.ion() else: e = pip2015events() read.ensure_dir(savedir) def d0fltr(df, limit=0.6, apply=False, colname='d0_fltr'): data = df.copy() data[colname] = data.D_0 < limit if apply: return data[-data[colname]] return data def isnan(var): return var != var def select_rows(data, dtlist):
# -*- coding: utf-8 -*- """ @author: Jussi Tiira """ import snowfall as sf import read import numpy as np import matplotlib.pyplot as plt from os import path dtformat_default = '%d.%m. %H:%M' dtformat_snex = '%Y %d %B %H UTC' e = sf.EventsCollection('cases/pip2015.csv', dtformat_snex) e.autoimport_data(autoshift=False, autobias=False, rule='6min', varinterval=True) #plt.close('all') #plt.ioff() for c in np.append(e.events.pluvio200.values, e.events.pluvio400.values): c.pluvio.shift_periods = -6 c.pluvio.n_combined_intervals = 2 ax = c.plot_vfits_in_density_ranges() savepath = read.ensure_dir( path.join('../results/pip2015/vfits_density_ranges', c.pluvio.name)) plt.savefig(path.join(savepath, c.dtstr('%Y%m%d%H%M.eps')))
# -*- coding: utf-8 -*- """ @author: Jussi Tiira """ import snowfall as sf import read import numpy as np import matplotlib.pyplot as plt from os import path dtformat_default = '%d.%m. %H:%M' dtformat_snex = '%Y %d %B %H UTC' e = sf.EventsCollection('cases/pip2015.csv', dtformat_snex) e.autoimport_data(autoshift=False, autobias=False, rule='6min', varinterval=True) #plt.close('all') #plt.ioff() for c in np.append(e.events.pluvio200.values, e.events.pluvio400.values): c.pluvio.shift_periods = -6 c.pluvio.n_combined_intervals = 2 ax = c.plot_vfits_in_density_ranges() savepath = read.ensure_dir(path.join('../results/pip2015/vfits_density_ranges', c.pluvio.name)) plt.savefig(path.join(savepath, c.dtstr('%Y%m%d%H%M.eps')))
debug = False d0_col = 'D_0_gamma' #sns.set_context('talk') major_size = 8 set_plot_style(**{'xtick.major.size': major_size, 'ytick.major.size': major_size}) plt.close('all') plt.ioff() kwargs = {'kde': True, 'rug': True, 'kde_kws': {'label': 'KDE'}} savedir = path.join(paths['results'], 'hist') if debug: savedir += '/test' read.ensure_dir(savedir) data = param_table(debug=debug) def kde_peak(data, xlim=(-1,1), n_samples=500): kde = gaussian_kde(data) xs = np.linspace(*xlim, num=n_samples) ys = kde(xs) index = np.argmax(ys) return xs[index], ys[index] def split_hist(data, **kws): data = sf.split_index(data, names=('first', 'second')) return plt.hist([data.loc['first'], data.loc['second']], stacked=True,
plt.close('all') plt.ioff() basepath = '../results/pip2015/vfit' if debug: basepath += '/test' fname = '%Y%m%d_%H%M' date_format = '%d. %m. %Y' time_format = '%H:%M' extent = (0.375, 5, 0.5, 2.5) for c in e.events.paper.values: c.density() # to initialize fits savepath = read.ensure_dir(path.join(basepath, c.dtstr('%Y%m%d'))) fits = c.instr['pipv'].fits.polfit start_time = c.instr['pluvio'].start_time() axlist = [] flist = [] for i, vfit in fits.iteritems(): if vfit.flipped: flipstr = '_flipped' else: flipstr = '' flist.append(plt.figure(dpi=150, figsize=(4, 3))) ax = vfit.plot(source_style='hex', unfiltered=True, source_kws={ 'gridsize': 40, 'extent': extent
# -*- coding: utf-8 -*- """ @author: Jussi Tiira """ import read import matplotlib.pyplot as plt from os import path from scr_snowfall import pip2015events #plt.close('all') plt.ion() basepath = read.ensure_dir('../results/pip2015/density') dtfmt = '%Y%m%d' e = pip2015events() rho_label = 'bulk density (kg m$^{-3}$)' t_label = 'time' for c in e.events.paper.values: savepath = basepath rho = c.density() rho.to_csv(path.join(savepath, c.dtstr(dtfmt) + '.csv')) c.instr['pluvio'].tdelta().to_csv(path.join(savepath, 'timedelta_' + c.dtstr(dtfmt) + '.csv')) plt.figure(dpi=120) rho.plot(drawstyle='steps') plt.title(c.dtstr()) plt.xlabel(t_label) plt.ylabel(rho_label)
def mass_dim(rho_d0, b_v=0.2): a_d0, b_d0 = rho_d0.params a_d0 = a_d0 / 1000 * 10**b_d0 beta = b_d0 + 3 alpha = np.pi / 6 * 3.67**b_d0 * a_d0 * gamma(b_v + 4) / gamma(b_v + b_d0 + 4) return fit.PolFit(params=(alpha, beta), xname='D') data_fltr = param_table(debug=debug) figkws = {'dpi': 150, 'figsize': (5, 5)} #fig = plt.figure(**figkws) #ax = plot_d0_rho(data) fig_fltr = plt.figure(**figkws) ax_fltr, rho_d0, rho_d0_baecc, rho_d0_1415 = plot_d0_rho(data_fltr) m_d = mass_dim(rho_d0) m_d_baecc = mass_dim(rho_d0_baecc) m_d_1415 = mass_dim(rho_d0_1415) if debug: savepath += '/test' paperpath = path.join(savepath, 'paper') read.ensure_dir(paperpath) #fig.savefig(path.join(savepath, 'rho_d0_combined.eps')) fig_fltr.savefig(path.join(savepath, 'rho_d0_combined_d0fltr.eps')) fig_fltr.savefig(path.join(paperpath, 'd0_rho.eps')) fig_fltr.savefig(path.join(paperpath, 'd0_rho.png'))
from scr_snowfall import param_table plt.close('all') plt.ioff() debug = False rholims = (0, 100, 200, 800) #rholims = (0, 150, 300, 800) limslist = sf.limitslist(rholims) n_ranges = len(limslist) separate = False d0_col = 'D_0_gamma' resultspath = '../results/pip2015' paperpath = read.ensure_dir(path.join(resultspath, 'paper')) savepath = path.join(resultspath, 'psd') rhorangestr = '$%s < \\rho \leq %s$' def d0_nw_paper(data, rholimits): rhopairs = sf.limitslist(rholimits) fig, axarr = plt.subplots(nrows=1, ncols=3, dpi=150, figsize=(11,4), sharex=True, sharey=True, tight_layout=True) for i, (rhomin, rhomax) in enumerate(rhopairs): limitstr = rhorangestr % (rhomin*read.RHO_SCALE, rhomax*read.RHO_SCALE) ax = axarr[i] datarho = data[data.rhomin==rhomin]#.loc['second'] datarho.plot.scatter(x=d0_col, y='log_nw', c='', ax=axarr[i]) lfit = fit.LinFit(x=datarho[d0_col], y=datarho.log_nw, xname='D_0')