示例#1
0
class LewisPatchDust(ExtinctionBase):
    """Mixin for a uniform dust distribution fitted from Lewis et al 15 Fig 17.

    The maximum extinction is estimated from a Draine et al 2015 dust map.
    Requires that the brick be known.
    """
    def __init__(self, **kwargs):
        # self.brick = kwargs.pop('brick', 23)
        super(LewisPatchDust, self).__init__(**kwargs)

    def build_extinction(self):
        """Young and old dust at equal here."""
        lewis = LewisDustLaw()
        max_av = lewis.estimate_mean_extinction(self.poly)
        av = np.random.uniform(low=mw_Av(),
                               high=max_av,
                               size=1000)

        self.young_av = ExtinctionDistribution()
        self.young_av.set_samples(av)

        self.old_av = ExtinctionDistribution()
        self.old_av.set_samples(av)

        self.rel_extinction = phat_rel_extinction()
示例#2
0
class LewisBrickDust(ExtinctionBase):
    """Mixin for a uniform dust distribution fitted from Lewis et al 15 Fig 17.

    The maximum extinction is estimated from a Draine et al 2015 dust map.
    Requires that the brick be known.
    """
    def __init__(self, **kwargs):
        self.brick = kwargs.pop('brick', 23)
        super(LewisBrickDust, self).__init__(**kwargs)

    def build_extinction(self):
        """Young and old dust at equal here."""
        # Get the coordinate of the brick
        # brick_fits = phat_brick_path(self.brick, 'F814W')
        # wcs = astropy.io.WCS(brick_fits[0].header)
        # poly = wcs.calc_footprint()
        data = PhatCatalog(self.brick)  # FIXME pretty brick-specific
        poly = data.polygon

        lewis = LewisDustLaw()
        max_av = lewis.estimate_mean_extinction(poly)
        av = np.random.uniform(low=mw_Av(), high=max_av, size=1000)

        self.young_av = ExtinctionDistribution()
        self.young_av.set_samples(av)

        self.old_av = ExtinctionDistribution()
        self.old_av.set_samples(av)

        self.rel_extinction = phat_rel_extinction()
示例#3
0
    def build_extinction(self):
        # Add MW dust screen
        self.young_av = ExtinctionDistribution()
        self.young_av.set_uniform(mw_Av())
        self.old_av = ExtinctionDistribution()
        self.old_av.set_uniform(mw_Av())

        self.rel_extinction = phat_rel_extinction()
示例#4
0
    def build_extinction(self):
        """Young and old dust at equal here."""
        lewis = LewisDustLaw()
        max_av = lewis.estimate_mean_extinction(self.poly)
        av = np.random.uniform(low=mw_Av(), high=max_av, size=1000)

        self.young_av = ExtinctionDistribution()
        self.young_av.set_samples(av)

        self.old_av = ExtinctionDistribution()
        self.old_av.set_samples(av)

        self.rel_extinction = phat_rel_extinction()
示例#5
0
class NoDust(ExtinctionBase):
    """Mixin for no dust."""
    def __init__(self, **kwargs):
        super(NoDust, self).__init__(**kwargs)

    def build_extinction(self):
        # Add MW dust screen
        self.young_av = ExtinctionDistribution()
        self.young_av.set_uniform(mw_Av())
        self.old_av = ExtinctionDistribution()
        self.old_av.set_uniform(mw_Av())

        self.rel_extinction = phat_rel_extinction()
示例#6
0
class PhatGaussianDust(ExtinctionBase):
    """Mixin for Gaussian dust distributions for PHAT filters."""
    def __init__(self, **kwargs):
        self._young_av = kwargs.pop('young_av', 1.0)
        self._old_av = kwargs.pop('old_av', 0.5)
        self._av_sigma_ratio = kwargs.pop('av_sigma_ratio', 0.5)
        super(PhatGaussianDust, self).__init__(**kwargs)

    def build_extinction(self):
        # NOTE includes the E(V
        self.young_av = ExtinctionDistribution()
        if self._young_av > 0.:
            av = np.random.normal(loc=self._young_av,
                                  scale=self._young_av * self._av_sigma_ratio,
                                  size=1000)
            av[av < 0.] = 0.
            self.young_av.set_samples(av + mw_Av())
        else:
            self.young_av.set_samples(np.zeros(1000) + mw_Av())

        self.old_av = ExtinctionDistribution()
        if self._old_av > 0.:
            av = np.random.normal(loc=self._old_av,
                                  scale=self._old_av * self._av_sigma_ratio,
                                  size=1000)
            av[av < 0.] = 0.
            self.old_av.set_samples(av + mw_Av())
        else:
            self.old_av.set_samples(np.zeros(1000) + mw_Av())

        self.rel_extinction = phat_rel_extinction()
示例#7
0
    def build_extinction(self):
        # NOTE includes MW extinction from __init__
        self.young_av = ExtinctionDistribution()
        self.young_av.set_samples(
            np.random.uniform(low=self._young_av,
                              high=self._young_av + self._young_dav,
                              size=1000))

        self.old_av = ExtinctionDistribution()
        self.old_av.set_samples(
            np.random.uniform(low=self._old_av,
                              high=self._old_av + self._old_dav,
                              size=1000))

        self.rel_extinction = phat_rel_extinction()
示例#8
0
    def build_extinction(self):
        """Young and old dust at equal here."""
        lewis = LewisDustLaw()
        max_av = lewis.estimate_mean_extinction(self.poly)
        av = np.random.uniform(low=mw_Av(),
                               high=max_av,
                               size=1000)

        self.young_av = ExtinctionDistribution()
        self.young_av.set_samples(av)

        self.old_av = ExtinctionDistribution()
        self.old_av.set_samples(av)

        self.rel_extinction = phat_rel_extinction()
示例#9
0
    def build_extinction(self):
        """Young and old dust at equal here."""
        # Get the coordinate of the brick
        # brick_fits = phat_brick_path(self.brick, 'F814W')
        # wcs = astropy.io.WCS(brick_fits[0].header)
        # poly = wcs.calc_footprint()
        data = PhatCatalog(self.brick)  # FIXME pretty brick-specific
        poly = data.polygon

        lewis = LewisDustLaw()
        max_av = lewis.estimate_mean_extinction(poly)
        av = np.random.uniform(low=mw_Av(), high=max_av, size=1000)

        self.young_av = ExtinctionDistribution()
        self.young_av.set_samples(av)

        self.old_av = ExtinctionDistribution()
        self.old_av.set_samples(av)

        self.rel_extinction = phat_rel_extinction()
示例#10
0
class LewisPatchDust(ExtinctionBase):
    """Mixin for a uniform dust distribution fitted from Lewis et al 15 Fig 17.

    The maximum extinction is estimated from a Draine et al 2015 dust map.
    Requires that the brick be known.
    """
    def __init__(self, **kwargs):
        # self.brick = kwargs.pop('brick', 23)
        super(LewisPatchDust, self).__init__(**kwargs)

    def build_extinction(self):
        """Young and old dust at equal here."""
        lewis = LewisDustLaw()
        max_av = lewis.estimate_mean_extinction(self.poly)
        av = np.random.uniform(low=mw_Av(), high=max_av, size=1000)

        self.young_av = ExtinctionDistribution()
        self.young_av.set_samples(av)

        self.old_av = ExtinctionDistribution()
        self.old_av.set_samples(av)

        self.rel_extinction = phat_rel_extinction()
示例#11
0
    def build_extinction(self):
        # NOTE includes the E(V
        self.young_av = ExtinctionDistribution()
        if self._young_av > 0.:
            av = np.random.normal(loc=self._young_av,
                                  scale=self._young_av * self._av_sigma_ratio,
                                  size=1000)
            av[av < 0.] = 0.
            self.young_av.set_samples(av + mw_Av())
        else:
            self.young_av.set_samples(np.zeros(1000) + mw_Av())

        self.old_av = ExtinctionDistribution()
        if self._old_av > 0.:
            av = np.random.normal(loc=self._old_av,
                                  scale=self._old_av * self._av_sigma_ratio,
                                  size=1000)
            av[av < 0.] = 0.
            self.old_av.set_samples(av + mw_Av())
        else:
            self.old_av.set_samples(np.zeros(1000) + mw_Av())

        self.rel_extinction = phat_rel_extinction()
示例#12
0
class PhatStepDust(ExtinctionBase):
    """Mixin for Uniform dust distributions for PHAT filters."""
    def __init__(self, **kwargs):
        self._young_av = kwargs.pop('young_av', 0.0) + mw_Av()
        self._old_av = kwargs.pop('old_av', 0.0) + mw_Av()
        self._young_dav = kwargs.pop('young_dav', 1.0)
        self._old_dav = kwargs.pop('old_dav', 1.0)
        super(PhatStepDust, self).__init__(**kwargs)

    def build_extinction(self):
        # NOTE includes MW extinction from __init__
        self.young_av = ExtinctionDistribution()
        self.young_av.set_samples(
            np.random.uniform(low=self._young_av,
                              high=self._young_av + self._young_dav,
                              size=1000))

        self.old_av = ExtinctionDistribution()
        self.old_av.set_samples(
            np.random.uniform(low=self._old_av,
                              high=self._old_av + self._old_dav,
                              size=1000))

        self.rel_extinction = phat_rel_extinction()