示例#1
0
    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')
示例#2
0
    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:
示例#3
0
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:
示例#4
0
    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')