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')
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()