Пример #1
0
def load_data(root, box):
    
    toret = []
    dtype = [('r', float), ('corr', float), ('error', float)]
    for kind in ['mono', 'quad']:
        data = np.loadtxt(os.path.join(root, '%s_Box%s_rescale.dat' %(kind, box)))
        C = np.loadtxt(os.path.join(root, 'covar_%s.dat' %kind)).reshape((data.shape[0], -1))
        
        errs = np.diag(C)**0.5
        data = np.concatenate([data, errs[:,None]], axis=1)
        meta = {'edges' : make_edges(data[:,0])}
        corr = Corr1dDataSet.from_nbkit(data, meta, columns=['r', 'corr', 'error'])
        toret.append(corr)
        
    return toret
Пример #2
0
    def get_Phh(self, space="real"):
        """
        Return Phh in the space specified. Only 'real' is currently implemented.
        """
        try:
            return getattr(self, "_Phh_" + space)
        except AttributeError:

            d = os.path.join(self.root, "halo")
            mass_bins = ["00020_00060", "00060_00180", "00180_00540", "00540_01620"]
            redshifts = ["z007", "z005", "z004"]
            Pshot = [
                [2336.0, 6494.0, 21882.0, 101112.0],
                [2849.0, 9174.0, 41152.0, 314465.0],
                [4065.0, 16447.0, 111359.0, np.nan],
            ]
            meta = {"box_size": 1600.0, "N1": 0, "N2": 0}
            basename = "pkmu_chi_00_h_h_{mass}_{z}_1-3_02-13binaaQ"

            data = np.empty((len(redshifts), len(mass_bins)), dtype=object)
            for i in range(len(redshifts)):
                for j in range(len(mass_bins)):
                    args = {"mass": mass_bins[j], "z": redshifts[i]}
                    meta["N1"] = meta["N2"] = meta["box_size"] ** 3 / Pshot[i][j]

                    filename = os.path.join(d, basename.format(**args))
                    if os.path.exists(filename):
                        data[i, j] = load_data(np.loadtxt(filename), space, **meta)
                    else:
                        data[i, j] = np.nan

            Phh = SpectraSet(data, coords=[self.z, self.mass], dims=["z", "mass"])
            setattr(self, "_Phh_" + space, Phh)
            return Phh
Пример #3
0
    def get_Phm(self, space="real"):
        """
        Return Phm in the space specified, either `real` or `redshift`
        """
        if space != "real":
            raise NotImplementedError("sorry, only real-space results exist for Phm")
        try:
            return getattr(self, "_Phm_" + space)
        except AttributeError:

            d = os.path.join(self.root, "halo-matter")
            mass_bins = ["00020_00060", "00060_00180", "00180_00540", "00540_01620"]
            redshifts = ["z007", "z005", "z004"]
            meta = {"box_size": 1600.0, "N1": np.inf, "N2": np.inf}
            basename = "pk_mr0_hr0_{mass}_{z}_linaax"

            data = np.empty((len(redshifts), len(mass_bins)), dtype=object)
            for i in range(len(redshifts)):
                for j in range(len(mass_bins)):
                    args = {"mass": mass_bins[j], "z": redshifts[i]}
                    filename = os.path.join(d, basename.format(**args))
                    if os.path.exists(filename):
                        data[i, j] = load_data(np.loadtxt(filename), space, **meta)
                    else:
                        data[i, j] = np.nan

            Phm = SpectraSet(data, coords=[self.z, self.mass], dims=["z", "mass"])
            setattr(self, "_Phm_" + space, Phm)
            return Phm
Пример #4
0
    def get_P11(self, mu, smooth=False):
        """
        Return the dark matter P11[mu^2] or P11[mu^4] correlator in real-space
        """
        tag = "_smooth" if smooth else ""
        name = "_P11_%s%s" % (mu, smooth)
        if mu not in ["mu2", "mu4"]:
            raise ValueError("`mu` must be one of [`mu2`, `mu4`]")

        try:
            return getattr(self, name)
        except AttributeError:

            redshifts = ["z007", "z005", "z004"]
            meta = {"box_size": 1600.0, "N1": np.inf, "N2": np.inf}
            if smooth:
                if mu == "mu2":
                    from pyRSD.data import P11_mu2_z_0_000, P11_mu2_z_0_509, P11_mu2_z_0_989

                    smooth_data = [P11_mu2_z_0_000(), P11_mu2_z_0_509(), P11_mu2_z_0_989()]
                else:
                    from pyRSD.data import P11_mu4_z_0_000, P11_mu4_z_0_509, P11_mu4_z_0_989

                    smooth_data = [P11_mu4_z_0_000(), P11_mu4_z_0_509(), P11_mu4_z_0_989()]
            else:
                d = os.path.join(self.root, "dark_matter")
                basename = "pkmu_chi_11_m_m_{z}_1-3_02-13binaaQ"

            if mu == "mu2":
                cols = [-4, -2]
            else:
                cols = [-3, -1]

            data = np.empty(len(redshifts), dtype=object)
            for i in range(len(redshifts)):
                if not smooth:
                    filename = os.path.join(d, basename.format(z=redshifts[i]))
                    if os.path.exists(filename):
                        x = np.loadtxt(filename)
                    else:
                        data[i] = np.nan
                        continue
                else:
                    x = smooth_data[i]
                kedges = make_kedges(x)

                data_dict = {}
                data_dict["k"] = x[:, 0]
                if not smooth:
                    data_dict["power"] = x[:, cols[0]] * x[:, 0] ** 2
                    data_dict["error"] = x[:, cols[1]] * x[:, 0] ** 2
                else:
                    data_dict["power"] = x[:, 1]
                data[i] = Power1dDataSet(kedges, data_dict, **meta)

            toret = SpectraSet(data, coords=[self.z], dims=["z"])
            setattr(self, name, toret)
            return toret
Пример #5
0
 def get_window(self, scaled=False):
     """
     Return the formatted window function for the cutsky challenge mocks
     """
     if scaled:
         filename = 'window_cmass_ngc_50x_randoms_scaled_ellmax8.dat'
     else:
         filename = 'window_cmass_ngc_50x_randoms_unscaled_ellmax8.dat'
     filename = os.path.join(self.root, 'extra', 'window', filename)
     return np.loadtxt(filename)
Пример #6
0
    def get_P01(self, smooth=False):
        """
        Return the dark matter P01[mu^2] correlator in real-space
        """
        tag = "_smooth" if smooth else ""
        name = "_P01%s" % tag
        try:
            return getattr(self, name)
        except AttributeError:

            redshifts = ["z007", "z005", "z004"]
            meta = {"box_size": 1600.0, "N1": np.inf, "N2": np.inf}
            if smooth:
                from pyRSD.data import P01_mu2_z_0_000, P01_mu2_z_0_509, P01_mu2_z_0_989

                smooth_data = [P01_mu2_z_0_000(), P01_mu2_z_0_509(), P01_mu2_z_0_989()]
            else:
                d = os.path.join(self.root, "dark_matter")
                basename = "pkmu_chi_01_m_m_{z}_1-3_02-13binaaQ"

            data = np.empty(len(redshifts), dtype=object)

            for i in range(len(redshifts)):
                if not smooth:
                    filename = os.path.join(d, basename.format(z=redshifts[i]))
                    if os.path.exists(filename):
                        x = np.loadtxt(filename)
                    else:
                        data[i] = np.nan
                        continue
                else:
                    x = smooth_data[i]
                kedges = make_kedges(x)

                data_dict = {}
                data_dict["k"] = x[:, 0]
                if not smooth:
                    data_dict["power"] = x[:, -2] * 2 * x[:, 0]
                    data_dict["error"] = x[:, -1] * 2 * x[:, 0]
                else:
                    data_dict["power"] = x[:, 1]
                data[i] = Power1dDataSet(kedges, data_dict, **meta)

            toret = SpectraSet(data, coords=[self.z], dims=["z"])
            setattr(self, name, toret)
            return toret
Пример #7
0
    def get_Pmm(self, space="real"):
        """
        Return Pmm in the space specified, either `real` or `redshift`
        """
        try:
            return getattr(self, "_Pmm_" + space)
        except AttributeError:

            d = os.path.join(self.root, "dark_matter")
            redshifts = ["z007", "z005", "z004"]
            meta = {"box_size": 1600.0, "N1": np.inf, "N2": np.inf}
            basename = "pkmu_chi_00_m_m_{z}_1-3_02-13binaaQ"

            data = np.empty(len(redshifts), dtype=object)
            for i in range(len(redshifts)):
                filename = os.path.join(d, basename.format(z=redshifts[i]))
                if os.path.exists(filename):
                    data[i] = load_data(np.loadtxt(filename), space, **meta)
                else:
                    data[i] = np.nan

            Pmm = SpectraSet(data, coords=[self.z], dims=["z"])
            setattr(self, "_Pmm_" + space, Pmm)
            return Pmm