inf_snpe = SNPE(generator=G, n_components=n_components, n_hiddens=n_hiddens, obs=S,
                # reg_lambda=reg_lambda, pilot_samples=0, prior_norm=True)
                reg_lambda=reg_lambda, pilot_samples=0)

logs, tds, posteriors = inf_snpe.run(n_train=[n_samples], n_rounds=n_rounds,
                                     proposal=prior_unif)


# Analyse results
samples_prior = prior_unif.gen(n_samples=int(5e5))
samples_posterior = posteriors[-1].gen(n_samples=int(5e5))

print('posterior:', posteriors[-1].mean)


x_post = syn_obs_data(I, dt, posteriors[-1].mean)
idx = np.arange(0, len(x_o['data']))
rmse = np.linalg.norm(x_o['data'] - x_post['data']) / len(x_o['data'])

print('RMSE:', rmse)

simulation, axes = plt.subplots(2, 1, figsize=(16,14))
axes[0].plot(idx, x_o['I'], c='g', label='goal')
axes[0].plot(idx, x_post['I'], label='posterior')
axes[0].set_title('current')
axes[0].legend()

axes[1].step(idx, x_o['data'], c='g', label='goal')
axes[1].step(idx, x_post['data'], label='posterior')
axes[1].set_title('Voltage trace')
axes[1].legend()
    obs=S,
    # reg_lambda=reg_lambda, pilot_samples=0, prior_norm=True)
    reg_lambda=reg_lambda,
    pilot_samples=0)

logs, tds, posteriors = inf_snpe.run(n_train=[n_samples],
                                     n_rounds=n_rounds,
                                     proposal=prior_unif)

# Analyse results
samples_prior = prior_unif.gen(n_samples=int(5e5))
samples_posterior = posteriors[-1].gen(n_samples=int(5e5))

print('posterior:', posteriors[-1].mean)

x_post = syn_obs_data(I, dt, posteriors[-1].mean)
x_post_step = syn_obs_data(Istep, dt_step, posteriors[-1].mean)

idx = np.arange(0, len(x_o['data']))

# Create Plots
simulation, axes = plt.subplots(3, 1, figsize=(16, 14))
axes[0].plot(idx, x_o['I'], c='g', label='goal')
axes[0].plot(idx, x_post['I'], label='posterior')
axes[0].set_title('current')
axes[0].legend()

axes[1].plot(idx, x_o['data'], c='g', label='goal')
axes[1].plot(idx, x_post['data'], c='b', label='posterior')
axes[1].plot(idx, U, c='pink', label='best fit')
axes[1].set_title('Voltage trace')
Exemplo n.º 3
0
                obs=S,
                reg_lambda=reg_lambda,
                pilot_samples=0)

logs, tds, posteriors = inf_snpe.run(n_train=[n_samples],
                                     n_rounds=n_rounds,
                                     proposal=prior_unif,
                                     monitor=observables)

# Analyse results
samples_prior = prior_unif.gen(n_samples=int(1e5))
samples_posterior = posteriors[-1].gen(n_samples=int(1e5))

print('posterior:', posteriors[-1].mean)

x_post = syn_obs_data(I, dt, posteriors[-1].mean)
x_post_ramp = syn_obs_data(I_ramp, dt_ramp, posteriors[-1].mean)

idx = np.arange(0, len(x_o['data']))

# Create Plots
simulation, axes = plt.subplots(3, 1, figsize=(16, 14))
axes[0].plot(idx, x_o['I'], c='g', label='goal')
axes[0].plot(idx, x_post['I'], label='posterior')
axes[0].set_title('current')
axes[0].legend()

axes[1].step(idx, x_o['data'], c='g', label='goal')
axes[1].step(idx, x_post['data'], c='b', label='posterior')
axes[1].plot(idx, U, c='pink', label='best fit')
axes[1].set_title('Voltage trace')
                n_hiddens=n_hiddens,
                obs=S,
                pilot_samples=10,
                prior_norm=True)

logs, tds, posteriors = inf_snpe.run(n_train=[n_samples],
                                     n_rounds=n_rounds,
                                     proposal=prior_unif,
                                     monitor=observables)

# Analyse results
samples_prior = prior_unif.gen(n_samples=int(5e5))
samples_posterior = posteriors[-1].gen(n_samples=int(5e5))

# Plots
x_post = syn_obs_data(i_inj[0], dt, posteriors[-1].mean)
idx = np.arange(0, len(x_o['data']))

simulation, axes = plt.subplots(2, 1, figsize=(16, 14))
axes[0].plot(idx, x_o['I'], c='g', label='goal')
axes[0].plot(idx, x_post['I'], label='posterior')
axes[0].set_title('current')
axes[0].legend()

axes[1].step(idx, x_o['data'], c='g', label='goal')
axes[1].step(idx, x_post['data'], label='posterior')
axes[1].set_title('Voltage trace')
axes[1].legend()

hl = int(len(labels) / 2)
distr_comb, axes = plt.subplots(hl, 2, figsize=(20, 16))

# generate data format for SNPE
x_o =  {'data': v,
        'time': t,
        'dt': t[1]-t[0],
        'I': i_inj[0]}

sum_stats_dict = DAPSummaryStatsDict(t_on, t_off, n_summary=8)
sum_stats = DAPSummaryStats(t_on, t_off, n_summary=8)

print('summary stats:', sum_stats_dict.calc([x_o]))
print('summary stats A:', sum_stats.calc([x_o]), '\n')

# Print summary statistics for alternative values
params, labels = obs_params()
x_1 = syn_obs_data(i_inj[0], 0.01, params)

print('summary stats:', sum_stats.calc([x_1]))
print('summary stats A:', sum_stats.calc([x_1]), '\n')

# plot voltage trace
fig, ax = plt.subplots(ncols=1, nrows=1, figsize=(20, 10));
ax.grid()
ax.set_ylabel('V (mV)')
ax.set_xlabel('t (ms)')
ax.plot(x_1['time'], x_1['data'], label='DAP');
plt.plot()

# plt.show()