Пример #1
0
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')
Пример #2
0
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)