def test_per_particle(self): _c = minimum_config.format(potential_params=pot_params, particles_params="", satellite_params=sat_params) config = io.read_config(_c) model = si.StreamModel.from_config(config) model.sample_priors() test_path = os.path.join(output_path, "model") if not os.path.exists(test_path): os.mkdir(test_path) # likelihood args t1, t2, dt = model.lnpargs p_gc = model.true_particles.to_frame(galactocentric)._X s_gc = model.true_satellite.to_frame(galactocentric)._X logmass = model.satellite.logmass.truth logmdot = model.satellite.logmdot.truth #true_alpha = model.satellite.alpha.truth true_alpha = 1.4 beta = model.particles.beta.truth tub = model.particles.tub.truth truth_dict = model._decompose_vector(model.truths) group = truth_dict['potential'] for param_name,truths in group.items(): print(param_name) param = model.parameters['potential'][param_name] vals = np.linspace(0.9,1.1,Nfine)*truths pparams = dict() Ls = [] for val in vals: pparams[param_name] = val potential = model._potential_class(**pparams) ln_like = back_integration_likelihood(t1, t2, dt, potential, p_gc, s_gc, logmass, logmdot, beta, true_alpha, tub) Ls.append(ln_like) Ls = np.array(Ls).T fig,ax = plt.subplots(1,1,figsize=(8,8)) for ii,Lvec in enumerate(Ls): ax.plot(vals,Lvec,marker=None,linestyle='-', label=str(ii), alpha=0.5) if param_name == "v_halo": ax.set_ylim(-300,50) ax.axvline(truths) ax.legend(loc='lower right', fontsize=14) fig.savefig(os.path.join(test_path, "per_particle_{}.png".format(param_name))) ######################### # alpha param = model.parameters['satellite']['alpha'] vals = np.linspace(0.5,2.5,Nfine) potential = model._potential_class() Ls = [] for val in vals: ln_like = back_integration_likelihood(t1, t2, dt, potential, p_gc, s_gc, logmass, logmdot, beta, val, tub) Ls.append(ln_like) Ls = np.array(Ls).T fig,ax = plt.subplots(1,1,figsize=(8,8)) for ii,Lvec in enumerate(Ls): ax.plot(vals,Lvec,marker=None,linestyle='-', label=str(ii), alpha=0.5) ax.axvline(true_alpha) ax.legend(loc='lower right', fontsize=14) fig.savefig(os.path.join(test_path, "per_particle_alpha.png")) plt.close('all')
a = time.time() integrator = LeapfrogIntegrator(potential._acceleration_at, np.array(gc[:, :3]), np.array(gc[:, 3:]), args=(gc.shape[0], acc)) t, rs, vs = integrator.run(t1=6200, t2=0, dt=-1) times.append(time.time() - a) print(np.min(times), "seconds per integration") times = [] for ii in range(10): a = time.time() back_integration_likelihood(6200, 0, -1, potential, p_gc, s_gc, 2.5e8, 0.01, particles.tub, 1.5, np.array([-1] * nparticles)) times.append(time.time() - a) print(np.min(times), "seconds per likelihood call") _config = """ name: test data_file: data/observed_particles/2.5e8.hdf5 nparticles: {} potential: class_name: LawMajewski2010 parameters: [q1, qz, phi, v_halo] particles:
for ii in range(10): a = time.time() integrator = LeapfrogIntegrator(potential._acceleration_at, np.array(gc[:,:3]), np.array(gc[:,3:]), args=(gc.shape[0], acc)) t, rs, vs = integrator.run(t1=6200, t2=0, dt=-1) times.append(time.time()-a) print(np.min(times), "seconds per integration") times = [] for ii in range(10): a = time.time() back_integration_likelihood(6200, 0, -1, potential, p_gc, s_gc, 2.5e8, 0.01, particles.tub, 1.5, np.array([-1]*nparticles)) times.append(time.time()-a) print(np.min(times), "seconds per likelihood call") _config = """ name: test data_file: data/observed_particles/2.5e8.hdf5 nparticles: {} potential: class_name: LawMajewski2010 parameters: [q1, qz, phi, v_halo] particles:
def test_per_particle(self): _c = minimum_config.format(potential_params=pot_params, particles_params="", satellite_params=sat_params) config = io.read_config(_c) model = si.StreamModel.from_config(config) model.sample_priors() test_path = os.path.join(output_path, "model") if not os.path.exists(test_path): os.mkdir(test_path) # likelihood args t1, t2, dt = model.lnpargs p_gc = model.true_particles.to_frame(galactocentric)._X s_gc = model.true_satellite.to_frame(galactocentric)._X logmass = model.satellite.logmass.truth logmdot = model.satellite.logmdot.truth #true_alpha = model.satellite.alpha.truth true_alpha = 1.4 beta = model.particles.beta.truth tub = model.particles.tub.truth truth_dict = model._decompose_vector(model.truths) group = truth_dict['potential'] for param_name, truths in group.items(): print(param_name) param = model.parameters['potential'][param_name] vals = np.linspace(0.9, 1.1, Nfine) * truths pparams = dict() Ls = [] for val in vals: pparams[param_name] = val potential = model._potential_class(**pparams) ln_like = back_integration_likelihood(t1, t2, dt, potential, p_gc, s_gc, logmass, logmdot, beta, true_alpha, tub) Ls.append(ln_like) Ls = np.array(Ls).T fig, ax = plt.subplots(1, 1, figsize=(8, 8)) for ii, Lvec in enumerate(Ls): ax.plot(vals, Lvec, marker=None, linestyle='-', label=str(ii), alpha=0.5) if param_name == "v_halo": ax.set_ylim(-300, 50) ax.axvline(truths) ax.legend(loc='lower right', fontsize=14) fig.savefig( os.path.join(test_path, "per_particle_{}.png".format(param_name))) ######################### # alpha param = model.parameters['satellite']['alpha'] vals = np.linspace(0.5, 2.5, Nfine) potential = model._potential_class() Ls = [] for val in vals: ln_like = back_integration_likelihood(t1, t2, dt, potential, p_gc, s_gc, logmass, logmdot, beta, val, tub) Ls.append(ln_like) Ls = np.array(Ls).T fig, ax = plt.subplots(1, 1, figsize=(8, 8)) for ii, Lvec in enumerate(Ls): ax.plot(vals, Lvec, marker=None, linestyle='-', label=str(ii), alpha=0.5) ax.axvline(true_alpha) ax.legend(loc='lower right', fontsize=14) fig.savefig(os.path.join(test_path, "per_particle_alpha.png")) plt.close('all')