def different_time_kernel(): mu = 1. st = 1. t = np.linspace(-3, 5, 500) k1 = k_models.kernels.MultivariateNormal([mu], [st]) k2 = k_models.kernels.SpaceTimeNormalReflective([mu], [st]) z1 = k1.pdf(t) z2 = k2.pdf(t) t_refl = t[t<0][::-1] z_refl = k1.pdf(t_refl) import seaborn as sns sns.set_context("paper", font_scale=2.0) plt.figure(figsize=(8, 6)) plt.plot(t, z1, 'k') plt.plot(t, z2, 'r-') plt.plot(-t_refl, z_refl, 'r--') plt.legend(('Normal', 'Reflective')) plt.xlabel('Time (days)') plt.ylabel('Density') c = simulate.MohlerSimulation() c.run() data = c.data max_delta_t = 100 max_delta_d = 1. init_est_params = { 'ct': 10, 'cd': .05, 'frac_bg': 0.5, } ra = pp_models.SeppStochasticNn(data=data, max_delta_d=max_delta_d, max_delta_t=max_delta_t) rb = pp_models.SeppStochasticNnReflected(data=data, max_delta_d=max_delta_d, max_delta_t=max_delta_t) ra.train(niter=20) rb.train(niter=20) t = np.linspace(-10, 60, 500) za = ra.trigger_kde.marginal_pdf(t, dim=0, normed=False) / float(ra.ndata) zb = rb.trigger_kde.marginal_pdf(t, dim=0, normed=False) / float(rb.ndata) w = c.trigger_params['time_decay'] th = c.trigger_params['intensity'] ztrue = th * w * np.exp(-w * t) ztrue[t<0] = 0 plt.figure(figsize=(8, 6)) plt.plot(t, za, 'k-') plt.plot(t, zb, 'r-') plt.plot(t, ztrue, 'k--') plt.legend(('Inferred, normal', 'Inferred, reflective', 'True')) plt.xlabel('Time (days)') plt.ylabel('Density')
def simulation_mohler(): c = simulate.MohlerSimulation() c.run() data = c.data max_delta_t = 100. max_delta_d = 1. initial_est = lambda x, y: estimation.estimator_exp_gaussian(x, y, ct=0.1, cd=0.1) r = pp_models.SeppStochasticNn(data=data, max_delta_d=max_delta_d, max_delta_t=max_delta_t, estimation_function=initial_est) r.train(niter=50) pp_plotting.multiplots(r, c)
def load_results(): n = len(sigmas) sepp = np.empty((n, n), dtype=object) sims = np.empty((n, n), dtype=object) for i in range(n): for j in range(i, n): fn = os.path.join(OUT_DIR, '%.2f_%.2f.pickle' % (sigmas[i], sigmas[j])) sepp[i, j] = models.SeppStochasticNn.from_pickle(fn) c = simulate.MohlerSimulation() c.t_total = 1500 c.bg_params[0]['sigma'] = [1., 1.] c.bg_params[0]['intensity'] = 5 c.trigger_params['sigma'] = [sigmas[i], sigmas[j]] c.run() sims[i, j] = copy.deepcopy(c) return sepp, sims
trigger_kde_kwargs = { 'strict': False, } s0, s1 = np.meshgrid(sigmas, sigmas) try: sepp_obj except NameError: sepp_obj = {} # already started for i in range(s0.size): tt = sorted([s0.flat[i], s1.flat[i]]) if tuple(tt) in sepp_obj: continue c = simulate.MohlerSimulation() c.t_total = t_total c.bg_params[0]['sigma'] = [1., 1.] c.bg_params[0]['intensity'] = 5 c.trigger_sigma = list(tt) init_est = lambda d, t: estimation.estimator_exp_gaussian( d, t, ct=0.1, cd=np.mean(tt)) c.run() data = c.data r = models.SeppStochasticNn(data=data, max_delta_d=max_delta_d, max_delta_t=max_delta_t, estimation_function=init_est, seed=42, bg_kde_kwargs=bg_kde_kwargs, trigger_kde_kwargs=trigger_kde_kwargs)