def __init__(self,
                 kwargs_model,
                 kwargs_aperture_list,
                 kwargs_psf_list,
                 kwargs_cosmo,
                 kwargs_numerics=None,
                 analytic_kinematics=False):
        """

        :param kwargs_model: keyword arguments describing the model components
        :param kwargs_aperture_list: list of keyword arguments describing the spectroscopic aperture, see Aperture() class
        :param kwargs_psf_list: list of keyword argument specifying the PSF of the observation
        :param kwargs_cosmo: keyword arguments that define the cosmology in terms of the angular diameter distances involved
        :param kwargs_numerics: numerics keyword arguments - see GalkinModel
        :param analytic_kinematics: bool, if True uses the analytic kinematic model
        """
        GalkinModel.__init__(self,
                             kwargs_model,
                             kwargs_cosmo,
                             kwargs_numerics=kwargs_numerics,
                             analytic_kinematics=analytic_kinematics)
        self._observation_list = []
        self._num_observations = len(kwargs_aperture_list)
        for i in range(self._num_observations):
            self._observation_list.append(
                GalkinObservation(kwargs_aperture=kwargs_aperture_list[i],
                                  kwargs_psf=kwargs_psf_list[i]))
Ejemplo n.º 2
0
    def __init__(self,
                 kwargs_model,
                 kwargs_aperture,
                 kwargs_psf,
                 kwargs_cosmo,
                 kwargs_numerics=None,
                 analytic_kinematics=False):
        """

        :param kwargs_model: keyword arguments describing the model components
        :param kwargs_aperture: keyword arguments describing the spectroscopic aperture, see Aperture() class
        :param kwargs_psf: keyword argument specifying the PSF of the observation
        :param kwargs_cosmo: keyword arguments that define the cosmology in terms of the angular diameter distances
         involved
        :param kwargs_numerics: numerics keyword arguments
        :param analytic_kinematics: bool, if True uses the analytic kinematic model
        """
        GalkinModel.__init__(self,
                             kwargs_model,
                             kwargs_cosmo,
                             kwargs_numerics=kwargs_numerics,
                             analytic_kinematics=analytic_kinematics)
        GalkinObservation.__init__(self,
                                   kwargs_aperture=kwargs_aperture,
                                   kwargs_psf=kwargs_psf)
Ejemplo n.º 3
0
    def test_radius_slope_anisotropy(self):

        kwargs_cosmo = {'d_d': 1000, 'd_s': 1500, 'd_ds': 800}
        kwargs_model = {
            'anisotropy_model': 'OM',
            'mass_profile_list': ['SPP'],
            'light_profile_list': ['HERNQUIST']
        }
        kwargs_numerics = {
            'interpol_grid_num': 1000,
            'log_integration': True,
            'max_integrate': 100,
            'min_integrate': 0.001
        }
        kin_analytic = GalkinModel(kwargs_model,
                                   kwargs_cosmo,
                                   analytic_kinematics=True,
                                   kwargs_numerics=kwargs_numerics)
        r = 1
        theta_E, gamma = 1, 2.
        a_ani = 10
        r_eff = 0.1
        out = kin_analytic.check_df(r,
                                    kwargs_mass={
                                        'theta_E': theta_E,
                                        'gamma': gamma
                                    },
                                    kwargs_light={'r_eff': r_eff},
                                    kwargs_anisotropy={'r_ani': a_ani * r_eff})
        assert out > 0
        print(out)

        kin_numeric = GalkinModel(kwargs_model,
                                  kwargs_cosmo,
                                  analytic_kinematics=False,
                                  kwargs_numerics=kwargs_numerics)
        out_num = kin_numeric.check_df(
            r,
            kwargs_mass=[{
                'theta_E': theta_E,
                'gamma': gamma
            }],
            kwargs_light=[{
                'Rs': r_eff * 0.551,
                'amp': 1
            }],
            kwargs_anisotropy={'r_ani': a_ani * r_eff})
        assert out_num > 1
        npt.assert_almost_equal(out_num / out, 1, decimal=2)

        kin_numeric_default = GalkinModel(kwargs_model,
                                          kwargs_cosmo,
                                          analytic_kinematics=False,
                                          kwargs_numerics=None)