示例#1
0
文件: model.py 项目: Samreay/Barry
    def set_cosmology(self, c, load_pregen=True):
        z = c["z"]
        if self.param_dict.get("f") is not None:
            f = Omega_m_z(self.get_default("om"), z)**0.55
            self.set_default("f", f)
            self.logger.info(
                f"Setting default growth rate of structure to f={f:0.5f}")

        if self.cosmology != c:
            mnu = c.get("mnu", 0.0)
            c["mnu"] = mnu
            self.set_default("om", c["om"])
            if "om" in self.fix_params:
                self.camb = getCambGenerator(
                    om_resolution=1,
                    h0=c["h0"],
                    ob=c["ob"],
                    redshift=c["z"],
                    ns=c["ns"],
                    mnu=c["mnu"],
                    recon_smoothing_scale=c["reconsmoothscale"],
                )
                self.camb.omch2s = [
                    (self.get_default("om") - c["ob"]) * c["h0"]**2
                ]

            else:
                self.camb = getCambGenerator(
                    h0=c["h0"],
                    ob=c["ob"],
                    redshift=c["z"],
                    ns=c["ns"],
                    mnu=c["mnu"],
                    recon_smoothing_scale=c["reconsmoothscale"])
            self.pregen_path = os.path.abspath(
                os.path.join(self.data_location, self.get_unique_cosmo_name()))
            self.cosmology = c
            if load_pregen:
                self._load_precomputed_data()
示例#2
0
    def __init__(self, uncert=0.01):
        super().__init__()

        # Set data to camb generated power spectrum
        c = getCambGenerator()
        r_s, pk_lin, _ = c.get_data()
        ks = c.ks
        dist = self.data[:, 0]
        xi = pk2xi.PowerToCorrelationGauss(ks).__call__(ks, pk_lin, dist)

        # Set covariance to something nice and simple to sample from
        # 1% diagonal uncertainty seems pretty good.
        cov = np.diag((uncert * xi)**2)
        self.data = np.vstack((dist, xi)).T
        self.set_cov(cov)
示例#3
0
def getCambGeneratorAndPT(redshift=0.51,
                          om_resolution=101,
                          h0_resolution=1,
                          h0=0.676,
                          ob=0.04814,
                          ns=0.97,
                          smooth_type="hinton2017",
                          recon_smoothing_scale=15):
    c = getCambGenerator(redshift=redshift,
                         om_resolution=om_resolution,
                         h0_resolution=h0_resolution,
                         h0=h0,
                         ob=ob,
                         ns=ns)
    pt = PTGenerator(c,
                     smooth_type=smooth_type,
                     recon_smoothing_scale=recon_smoothing_scale)
    return c, pt
示例#4
0
文件: dummy.py 项目: npadmana/Barry
    def __init__(self,
                 name="DummyPowerSpectrum",
                 min_k=0.02,
                 max_k=0.30,
                 step_size=1,
                 postprocess=None,
                 dummy_window=False,
                 uncert=0.01):
        super().__init__(name=name,
                         step_size=step_size,
                         postprocess=postprocess,
                         min_k=min_k,
                         max_k=max_k)

        # Set data to camb generated power spectrum
        c = getCambGenerator()
        pk_lin = c.get_data()["pk_lin"]
        ks = c.ks

        # Apply window function identically as it was applied to data
        # Note this isn't perfect because any error in the window function will propagate
        if dummy_window:
            pk_final = splev(self.w_ks_output, splrep(ks, pk_lin))[self.w_mask]
            self.w_ks_input = self.w_ks_output
            self.w_transform = np.diag(np.ones(self.w_ks_output.size))
            self.w_k0_scale = 0
            self.w_pk = 0
        else:
            pk_sampled = splev(self.w_ks_input, splrep(ks, pk_lin))
            p0 = np.sum(self.w_k0_scale * pk_sampled)
            integral_constraint = self.w_pk * p0
            pk_convolved = np.atleast_2d(pk_sampled) @ self.w_transform
            pk_normalised = (pk_convolved - integral_constraint).flatten()
            pk_final = pk_normalised[self.w_mask]

        # Set covariance to something nice and simple to sample from
        # 1% diagonal uncertainty seems pretty good.
        cov = np.diag((uncert * pk_final)**2)
        self.data = pk_final
        self.set_cov(cov)
示例#5
0
sys.path.append("..")
from barry.utils import weighted_avg_and_std
from barry.datasets.dataset_power_spectrum import PowerSpectrum_DESIMockChallenge0_Z01
from barry.cosmology.camb_generator import getCambGenerator
from barry.postprocessing import BAOExtractor
from barry.config import setup
from barry.models import PowerBeutler2017
from barry.samplers import DynestySampler
from barry.fitter import Fitter
from barry.models.model import Correction

if __name__ == "__main__":
    pfn, dir_name, file = setup(__file__)

    c = getCambGenerator()
    r_s = c.get_data()["r_s"]
    p = BAOExtractor(r_s)

    sampler = DynestySampler(temp_dir=dir_name, nlive=1000)
    fitter = Fitter(dir_name)

    cs = ["#262232", "#116A71", "#48AB75", "#D1E05B"]

    for r in [False]:
        t = "Recon" if r else "Prerecon"

        # Fix sigma_nl for one of the Beutler models
        model = PowerBeutler2017(recon=r, isotropic=False, correction=Correction.NONE)
        model.set_default("sigma_nl_par", 10.9)
        model.set_default("sigma_nl_perp", 5.98)