示例#1
0
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)
示例#2
0
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)
示例#3
0
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):
示例#4
0
                  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')
示例#5
0
    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'))
示例#6
0
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'],
示例#7
0
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')
示例#9
0
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):
示例#10
0
# -*- 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')))
示例#11
0
# -*- 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')))
示例#12
0
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,
示例#13
0
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
示例#14
0
# -*- 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)
示例#15
0

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'))
示例#16
0
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')