prior_max = np.array([2, 2, 2]) prior_unif = Uniform(lower=prior_min, upper=prior_max) # Summary Statistics S = syn_obs_stats(x_o['I'], params=params, dt=x_o['dt'], t_on=t_on, t_off=t_off, n_summary=n_summary, summary_stats=2, data=x_o) M = DAPSimulator(x_o['I'], x_o['dt'], -75) s = DAPSummaryStatsMoments(t_on, t_off, n_summary=n_summary) G = Default(model=M, prior=prior_unif, summary=s) # Generator print('S', S) print('G', G.gen(1)) S = np.array([S, S]) # Runing the simulation inf_snpe = SNPE(generator=G, n_components=n_components, n_hiddens=n_hiddens, obs=S, reg_lambda=reg_lambda, pilot_samples=0) logs, tds, posteriors = inf_snpe.run(n_train=[n_samples],
xo_stats = np.load( 'results/31D_experimental/190807_summstats_prep845_082_0044.npz' )['summ_stats'] obs = xo_stats ################################################################################ # Define ss and g # ################################################################################ # Using the 'PrinzStats' here, defined in summstats.py. Inferring the summstats # only between t_burnin and t_burnin+t_window. There are 15 stats. s = netio.create_summstats(params) # create the generator object g = Default(model=mlist[0], prior=prior_norm, summary=s) ################################################################################ # Run inference # ################################################################################ from delfi.inference import APT # create inference object inf_SNPE = APT(generator=g, prior_norm=False, n_hiddens=params.n_hiddens, pilot_samples=pilot_data, obs=obs, verbose=False, density=params.density_type,
params, labels = obs_params(reduced_model=True) # Summary Statistics S = syn_obs_stats(x_o['I'], params=params, dt=x_o['dt'], t_on=t_on, t_off=t_off, n_summary=n_summary, summary_stats=1, data=x_o) M = DAPSimulator(x_o['I'], x_o['dt'], -75) s = DAPSummaryStats(t_on, t_off, n_summary=n_summary) G = Default(model=M, prior=prior_unif, summary=s) # Generator # Runing the simulation # inf_snpe = SNPE(generator=G, n_components=n_components, n_hiddens=n_hiddens, obs=S, # pilot_samples=10, prior_norm=True) inf_snpe = SNPE(generator=G, n_components=n_components, 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,
# Setup Priors prior_min, prior_max, labels = load_prior_ranges(n_params) prior_unif = Uniform(lower=prior_min, upper=prior_max) print(prior_min, prior_max, labels) # Summary Statistics # calcualte summary statistics sum_stats_step = DAPSummaryStatsStepMoments(t_on_step, t_off_step, n_summary=17) sum_stats_mom = DAPSummaryStatsMoments(t_on, t_off, n_summary=17) s_step = sum_stats_step.calc([x_step]) s_ramp = sum_stats_mom.calc([x_o]) dap1 = DAPSimulatorMultiProtocol(I_all, dt_all, -75) G = Default(model=dap1, prior=prior_unif, summary=sum_stats_step) # Generator # Runing the simulation inf_snpe = SNPE(generator=G, n_components=n_components, n_hiddens=n_hiddens, obs=s_step, 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(5e5)) samples_posterior = posteriors[-1].gen(n_samples=int(5e5)) print('posterior:', posteriors[-1].mean)
data=x_o) M = DAPSimulator(x_o['I'], x_o['dt'], -75) if summary_stats_type == 0: s = DAPSummaryStats(t_on, t_off, n_summary=n_summary) elif summary_stats_type == 1: s = DAPSummaryStatsA(t_on, t_off, n_summary=n_summary) elif summary_stats_type == 2: s = DAPSummaryStatsNoAP(t_on, t_off, n_summary=n_summary) else: raise ValueError('Only 0, 1, 2 as an option for summary statistics.') sum_stats = DAPSummaryStatsA(t_on, t_off, n_summary=8) G = Default(model=M, prior=prior, summary=sum_stats) # Generator # Runing the simulation inf_snpe = SNPE(generator=G, n_components=2, n_hiddens=[2], obs=S, pilot_samples=10) logs, tds, posteriors = inf_snpe.run(n_train=[n_samples], n_rounds=n_rounds, monitor=observables) # Analyse results print('prior mean, std', prior.mean, prior.std) print('posterior mean, std', posteriors[-1].mean, posteriors[-1].std)