from barry.config import setup from barry.models import PowerSpectrumFit, PowerSeo2016, PowerBeutler2017, PowerDing2018, PowerNoda2019 from barry.samplers import DynestySampler from barry.fitter import Fitter if __name__ == "__main__": pfn, dir_name, file = setup(__file__) sampler = DynestySampler(temp_dir=dir_name, nlive=1000) fitter = Fitter(dir_name) cs = ["#262232", "#116A71", "#48AB75", "#D1E05B"] d = PowerSpectrum_DESIMockChallenge_Handshake(min_k=0.005, max_k=0.3, isotropic=False, realisation="data", fit_poles=[0, 2]) fitter.add_model_and_dataset(PowerBeutler2017(isotropic=False), d, name=f"Beutler 2017 Prerecon", color=cs[0]) fitter.add_model_and_dataset(PowerSeo2016(isotropic=False), d, name=f"Seo 2016 Prerecon", color=cs[1]) fitter.add_model_and_dataset(PowerDing2018(isotropic=False), d, name=f"Ding 2018 Prerecon", color=cs[2]) fitter.add_model_and_dataset(PowerNoda2019(isotropic=False), d, name=f"Noda 2019 Prerecon", color=cs[3]) fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file) if fitter.should_plot(): import logging logging.info("Creating plots") res = fitter.load() from chainconsumer import ChainConsumer
from barry.fitter import Fitter from barry.models.test import TestModel from barry.datasets.test import TestDataset from barry.samplers import DynestySampler if __name__ == "__main__": pfn, dir_name, file = setup(__file__) model = TestModel() data = TestDataset() sampler = DynestySampler(temp_dir=dir_name, max_iter=None) fitter = Fitter(dir_name) fitter.add_model_and_dataset(model, data) fitter.set_sampler(sampler) fitter.set_num_walkers(1) fitter.fit(file) if fitter.should_plot(): res, = fitter.load() posterior, weight, chain, evidence, model, data, extra = res import matplotlib.pyplot as plt fig, ax = plt.subplots(nrows=2) ax[0].plot(weight) ax[1].plot(evidence) plt.show()
fix_params=[ "om", "b", f"a{{0}}_1", f"a{{0}}_2", f"a{{0}}_3", f"a{{0}}_4", f"a{{0}}_5" ], correction=Correction.HARTLAP, ) model_fixed.set_default("b", 1.591) model_fixed.set_default(f"a{{0}}_1", 4651.0) model_fixed.set_default(f"a{{0}}_2", -4882.0) model_fixed.set_default(f"a{{0}}_3", 2137.0) model_fixed.set_default(f"a{{0}}_4", -25.43) model_fixed.set_default(f"a{{0}}_5", 0.01628) fitter.add_model_and_dataset(model, d, name=f"Full Fit", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset(model_marg_full, d, name=f"Full Analytic", linestyle=ls, color=cs[1]) fitter.add_model_and_dataset(model_marg_partial, d, name=f"Partial Analytic", linestyle=ls, color=cs[2]) fitter.add_model_and_dataset(model_fixed, d, name=f"Fixed Bias+Poly",
# Set up the model we'll use. Fix Omega_m and beta. 5 polynomials (default) # for each of the fitted multipoles. Use full analytic marginalisation for speed # Apply the Hartlap correction to the covariance matrix. model = PowerBeutler2017( recon=dataset.recon, isotropic=dataset.isotropic, marg="full", fix_params=["om", "beta"], poly_poles=dataset.fit_poles, correction=Correction.HARTLAP, n_poly=5, ) # Create a unique name for the fit and add it to the list name = dataset.name + " mock mean" fitter.add_model_and_dataset(model, dataset, name=name) allnames.append(name) # Now add the individual realisations to the list for i in range(len(dataset.mock_data)): dataset.set_realisation(i) name = dataset.name + f" realisation {i}" fitter.add_model_and_dataset(model, dataset, name=name) allnames.append(name) # Submit all the jobs to NERSC. We have quite a few (78), so we'll # only assign 1 walker (processor) to each. Note that this will only run if the # directory is empty (i.e., it won't overwrite existing chains) fitter.set_sampler(sampler) fitter.set_num_walkers(1) fitter.fit(file)
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) model.set_fix_params(["om", "sigma_nl_par", "sigma_nl_perp"]) for mink, maxk in [(0.02, 0.3), (0.02, 0.4), (0.02, 0.5), (0.03, 0.3), (0.03, 0.5), (0.03, 0.4), (0.04, 0.3), (0.04, 0.4), (0.04, 0.5)]: d = PowerSpectrum_DESIMockChallenge0_Z01(recon=r, isotropic=False, realisation="data", min_k=mink, max_k=maxk) fitter.add_model_and_dataset(model, d, name=f"B17 Fixed {t}, k = ({mink:0.2f}, {maxk:0.2f})") fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file) if fitter.should_plot(): import logging logging.info("Creating plots") from chainconsumer import ChainConsumer output = [] bestfit_model = [] pks = []
c = getCambGenerator() r_s = c.get_data()["r_s"] fitter = Fitter(dir_name) p = BAOExtractor(r_s) cs = ["#262232", "#116A71", "#48AB75", "#b7c742"] for r in [True]: t = "Recon" if r else "Prerecon" datae = PowerSpectrum_SDSS_DR12_Z061_NGC(recon=r, min_k=0.03, max_k=0.30, postprocess=p) for ls, n in zip(["-", ":"], ["", " (No Poly)"]): if n: fix = ["om", "f", "a1", "a2", "a3", "a4", "a5"] else: fix = ["om", "f"] fitter.add_model_and_dataset(PowerBeutler2017(postprocess=p, recon=r, fix_params=fix), datae, name=f"Beutler 2017{n}", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset(PowerSeo2016(postprocess=p, recon=r, fix_params=fix), datae, name=f"Seo 2016{n}", linestyle=ls, color=cs[1]) fitter.add_model_and_dataset(PowerDing2018(postprocess=p, recon=r, fix_params=fix), datae, name=f"Ding 2018{n}", linestyle=ls, color=cs[2]) fitter.add_model_and_dataset(PowerNoda2019(postprocess=p, recon=r), datae, name=f"Noda 2019", color=cs[3]) sampler = DynestySampler(temp_dir=dir_name, nlive=300) fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file) if fitter.should_plot(): from chainconsumer import ChainConsumer c = ChainConsumer() for posterior, weight, chain, evidence, model, data, extra in fitter.load(): c.add_chain(chain, weights=weight, parameters=model.get_labels(), **extra)
sigma_nl = 6.0 if r else 9.3 beutler.set_default("sigma_nl", sigma_nl) beutler.set_fix_params(["om", "sigma_nl"]) seo = PowerSeo2016(recon=r) ding = PowerDing2018(recon=r) noda = PowerNoda2019(recon=r, postprocess=p) for i in range(999): d.set_realisation(i) de.set_realisation(i) fitter.add_model_and_dataset( beutler_not_fixed, d, name=f"Beutler 2017 {t}, mock number {i}", linestyle=ls, color="p", realisation=i) fitter.add_model_and_dataset( beutler, d, name= f"Beutler 2017 Fixed $\\Sigma_{{nl}}$ {t}, mock number {i}", linestyle=ls, color="p", realisation=i) fitter.add_model_and_dataset(seo, d, name=f"Seo 2016 {t}, mock number {i}", linestyle=ls,
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" d = PowerSpectrum_DESIMockChallenge0_Z01(recon=r, isotropic=False, realisation="data") # 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) model.set_fix_params(["om", "sigma_nl_par", "sigma_nl_perp"]) fitter.add_model_and_dataset(PowerBeutler2017(recon=r, isotropic=False, correction=Correction.NONE, fix_params=["om"]), d, name=f"Beutler 2017 {t}") fitter.add_model_and_dataset(model, d, name=f"Beutler 2017 Fixed $\\Sigma_{{nl}}$ {t}") # fitter.add_model_and_dataset(PowerSeo2016(recon=r, isotropic=False), d, name=f"Seo 2016 {t}", linestyle=ls, color=cs[1]) # fitter.add_model_and_dataset(PowerDing2018(recon=r, isotropic=False), d, name=f"Ding 2018 {t}", linestyle=ls, color=cs[2]) fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file) if fitter.should_plot(): import logging logging.info("Creating plots") from chainconsumer import ChainConsumer
model = PowerBeutler2017(recon=True, isotropic=False, fix_params=["om"], poly_poles=[0, 2], correction=Correction.NONE, marg="full") pklin = np.array(pd.read_csv("../barry/data/desi_mock_challenge_post_recon/Pk_Planck15_Table4.txt", delim_whitespace=True, header=None)) model.set_fix_params(["om"]) model.set_data(data.get_data()) model.kvals = pklin[:, 0] model.pksmooth = smooth(model.kvals, pklin[:, 1]) model.pkratio = pklin[:, 1] / model.pksmooth - 1.0 # Power spectrum ls = "-" names = [f"Xinyi-std Pk", f"Pedro-std Pk", f"Baojiu-std Pk", f"Xinyi-Hada Pk", f"Hee-Jong-std Pk", f"Yu-Yu-std Pk", f"Javier-std Pk"] for i in range(7): data.set_realisation(i) fitter.add_model_and_dataset(model, data, name=names[i], color=cs[i], realisation=i, ls=ls) # Correlation Function data = CorrelationFunction_DESIMockChallenge(recon=True, isotropic=False, fit_poles=[0, 2]) model = CorrBeutler2017(recon=True, isotropic=False, fix_params=["om"], poly_poles=[0, 2], correction=Correction.NONE, marg="full") ls = "--" names = [f"Xinyi-std Xi", f"Pedro-std Xi", f"Baojiu-std Xi", f"Xinyi-Hada Xi", f"Hee-Jong-std Xi", f"Yu-Yu-std Xi", f"Javier-std Xi"] for i in range(7): data.set_realisation(i) fitter.add_model_and_dataset(model, data, name=names[i], color=cs[i], realisation=i, ls=ls) fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file)
sampler = DynestySampler(temp_dir=dir_name) fitter = Fitter(dir_name) for r in [True, False]: rt = "Recon" if r else "Prerecon" data = PowerSpectrum_SDSS_DR12_Z061_NGC(recon=r, postprocess=postprocess) n = PowerNoda2019(postprocess=postprocess, recon=r, fix_params=["om", "f", "gamma", "b"]) n.param_dict["b"].default = 1.992 if r else 1.996 fitter.add_model_and_dataset( n, data, name=f"N19 {rt} fixed $f$, $\\gamma_{{rec}}$, $b$", linestyle="-" if r else "--", color="o", shade_alpha=0.7, zorder=10) fitter.add_model_and_dataset( PowerNoda2019(postprocess=postprocess, recon=r, fix_params=["om", "f", "gamma"]), data, name=f"N19 {rt} fixed $f$, $\\gamma_{{rec}}$", linestyle="-" if r else "--", color="r", shade_alpha=0.2, ) fitter.add_model_and_dataset( PowerNoda2019(postprocess=postprocess,
model_hexa = PowerBeutler2017(recon=r, isotropic=False, fix_params=["om"], poly_poles=[0, 2, 4], correction=Correction.HARTLAP, marg="full") model_all = PowerBeutler2017(recon=r, isotropic=False, fix_params=["om"], poly_poles=[0, 1, 2, 3, 4], correction=Correction.HARTLAP, marg="full") fitter.add_model_and_dataset(model_quad, d_quad, name=r"$P_{0}+P_{2}$", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset(model_odd, d_odd, name=r"$P_{0}+P_{1}+P_{2}$", linestyle=ls, color=cs[1]) fitter.add_model_and_dataset(model_hexa, d_hexa, name=r"$P_{0}+P_{2}+P_{4}$", linestyle=ls, color=cs[2]) fitter.add_model_and_dataset(model_all, d_all, name=r"$P_{0}+P_{1}+P_{2}+P_{3}+P_{4}$",
ls = "-" if r else "--" d = CorrelationFunction_SDSS_DR12_Z061_NGC(recon=r, realisation=0) beutler_not_fixed = CorrBeutler2017() beutler = CorrBeutler2017() sigma_nl = 5.0 if r else 8.0 beutler.set_default("sigma_nl", sigma_nl) beutler.set_fix_params(["om", "sigma_nl"]) seo = CorrSeo2016(recon=r) ding = CorrDing2018(recon=r) for i in range(999): d.set_realisation(i) fitter.add_model_and_dataset(beutler_not_fixed, d, name=f"Beutler 2017 {t}, mock number {i}", linestyle=ls, color=c4[0], realisation=i) fitter.add_model_and_dataset(beutler, d, name=f"Beutler 2017 Fixed $\\Sigma_{{nl}}$ {t}, mock number {i}", linestyle=ls, color=c4[0], realisation=i) fitter.add_model_and_dataset(seo, d, name=f"Seo 2016 {t}, mock number {i}", linestyle=ls, color=c4[1], realisation=i) fitter.add_model_and_dataset(ding, d, name=f"Ding 2018 {t}, mock number {i}", linestyle=ls, color=c4[2], realisation=i) fitter.set_sampler(sampler) fitter.set_num_walkers(1) fitter.set_num_concurrent(400) if not fitter.should_plot(): fitter.fit(file) # Everything below is nasty plotting code ########################################################### if fitter.should_plot(): from os import path import matplotlib.pyplot as plt
d_xi = CorrelationFunction_SDSS_DR12_Z061_NGC(recon=r, realisation=0) ding_pk = PowerDing2018(recon=r) ding_pk_smooth = PowerDing2018(recon=r, smooth=True) ding_xi = CorrDing2018(recon=r) ding_xi_smooth = CorrDing2018(recon=r, smooth=True) for i in range(999): d_pk.set_realisation(i) d_xi.set_realisation(i) fitter.add_model_and_dataset( ding_pk, d_pk, name=f"Ding 2018 $P(k)$, mock number {i}", linestyle="-", color="p", realisation=i) fitter.add_model_and_dataset( ding_pk_smooth, d_pk, name=f"Ding 2018 $P(k)$ Smooth, mock number {i}", linestyle="-", color="p", realisation=i) fitter.add_model_and_dataset( ding_xi, d_xi, name=f"Ding 2018 $\\xi(s)$, mock number {i}",
if __name__ == "__main__": pfn, dir_name, file = setup(__file__) sampler = DynestySampler(temp_dir=dir_name, nlive=1000) fitter = Fitter(dir_name) cs = ["#262232", "#116A71", "#48AB75", "#D1E05B"] d = PowerSpectrum_DESIMockChallenge_Handshake(min_k=0.005, max_k=0.3, isotropic=False, realisation="data", fit_poles=[0, 2]) fitter.add_model_and_dataset(PowerBeutler2017(isotropic=False), d, name=f"Cullan's Pk", color=cs[0]) # Re-do the desi fits, but now using the linear pk provided for the UNIT sim pklin = np.array( pd.read_csv( "../barry/data/desi_mock_challenge_post_recon/Pk_Planck15_Table4.txt", delim_whitespace=True, header=None)) model = PowerBeutler2017(isotropic=False) model.set_fix_params(["om"]) model.set_data(d.get_data()) model.kvals = pklin[:, 0] model.pksmooth = smooth(model.kvals, pklin[:, 1]) model.pkratio = pklin[:, 1] / model.pksmooth - 1.0
print(i, type, j, realisations[i]) data = PowerSpectrum_DESIMockChallenge_Post(isotropic=False, recon=recons[i], realisation=j, fit_poles=[0, 2, 4], min_k=0.02, max_k=0.30, num_mocks=1000, type=type) model = PowerBeutler2017(recon=recon_types[i], isotropic=False, fix_params=["om"], poly_poles=[0, 2, 4], correction=Correction.HARTLAP, marg="full") fitter.add_model_and_dataset(model, data, name=names[counter]) counter += 1 fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file) # Everything below is nasty plotting code ########################################################### if fitter.should_plot(): import logging logging.info("Creating plots") from chainconsumer import ChainConsumer splits = ["PreRecon"]
colors = ["#CAF270", "#66C57F", "#219180", "#205C68", "#232C3B"] types = ["julian_reciso", "julian_reciso", "julian_recsym", "martin_reciso", "martin_recsym"] recons = [False, True, True, True, True] recon_types = ["None", "iso", "ani", "iso", "ani"] realisations = ["data", "data", "data", "data", "data"] for i, (name, type, recon, recon_type, realisation, color) in enumerate(zip(names, types, recons, recon_types, realisations, colors)): print(i, name, type, recon, recon_type, realisation) data = PowerSpectrum_DESILightcone_Mocks_Recon( isotropic=False, recon=recon, realisation=realisation, fit_poles=[0, 2], min_k=0.02, max_k=0.30, type=type ) model = PowerBeutler2017( recon=recon_type, isotropic=False, fix_params=["om"], poly_poles=[0, 2], correction=Correction.NONE, marg="full" ) fitter.add_model_and_dataset(model, data, name=name, color=color) fitter.set_sampler(sampler) fitter.set_num_walkers(5) fitter.fit(file) # Everything below is nasty plotting code ########################################################### if fitter.should_plot(): import logging logging.info("Creating plots") from chainconsumer import ChainConsumer import matplotlib.pyplot as plt import matplotlib.gridspec as gridspec
poly_poles=[0, 2], correction=Correction.HARTLAP, marg="full") model4 = PowerBeutler2017(recon="iso", isotropic=False, fix_params=["om"], poly_poles=[0, 2, 4], correction=Correction.HARTLAP, marg="full") for d in datasets: for i in range(999): d.set_realisation(i) if 4 in d.fit_poles: fitter.add_model_and_dataset(model4, d, name=d.name + " " + str(i), realisation=i) else: fitter.add_model_and_dataset(model, d, name=d.name + " " + str(i), realisation=i) fitter.set_sampler(sampler) fitter.set_num_walkers(1) fitter.set_num_concurrent(100) fitter.fit(file) # Everything below is nasty plotting code ########################################################### if fitter.should_plot(): from os import path
# redorder cov matrix, pk goes first, then the extracted part mask_extracted = postprocess.get_is_extracted(datas[0].ks) index_sort = np.arange(mask_extracted.size).astype( np.int) + (1000 * mask_extracted) a = np.argsort(index_sort) cov_noda = cov_noda[:, a] cov_noda = cov_noda[a, :] cov_noda_diag = cov_noda_diag[:, a] cov_noda_diag = cov_noda_diag[a, :] datas[1].set_cov(cov_noda) datas[2].set_cov(cov_noda_diag) sampler = DynestySampler(temp_dir=dir_name) fitter = Fitter(dir_name) fitter.add_model_and_dataset(model, datas[0], name="Mock-computed") fitter.add_model_and_dataset(model, datas[1], name="Nishimichi 2018, full") fitter.add_model_and_dataset(model, datas[2], name="Nishimichi 2018, diagonal") fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file) if fitter.should_plot(): from chainconsumer import ChainConsumer c = ChainConsumer() for posterior, weight, chain, evidence, model, data, extra in fitter.load( ): c.add_chain(chain,
cs = ["#262232", "#116A71", "#48AB75", "#D1E05B"] d = PowerSpectrum_DESIMockChallenge_Handshake(min_k=0.005, max_k=0.3, isotropic=False, realisation="data", fit_poles=[0, 2]) d2 = PowerSpectrum_DESIMockChallenge_Handshake(min_k=0.005, max_k=0.3, isotropic=False, realisation="data", fit_poles=[0, 2, 4]) fitter.add_model_and_dataset(PowerBeutler2017(isotropic=False), d, name=r"$P_{0}$+P_{2}$", color=cs[0]) fitter.add_model_and_dataset( PowerBeutler2017(isotropic=False), d2, name=r"$P_{0}$+P_{2}+P_{4},\,No\,a_{4}\,poly$", color=cs[1]) fitter.add_model_and_dataset(PowerBeutler2017(isotropic=False, poly_poles=[0, 2, 4]), d2, name=r"$P_{0}$+P_{2}+P_{4}$", color=cs[2]) fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file)
cs = ["#262232", "#116A71", "#48AB75", "#D1E05B"] for r in [False]: t = "Recon" if r else "Prerecon" ls = "-" # if r else "--" d = PowerSpectrum_Beutler2019_Z061_SGC(recon=r, isotropic=False) # Fix sigma_nl for one of the Beutler models model = PowerBeutler2017(recon=r, isotropic=False) sigma_nl = 6.0 if r else 9.3 model.set_default("sigma_nl_par", 14.1) model.set_default("sigma_nl_perp", 2.64) model.set_fix_params(["om", "f", "sigma_nl_par", "sigma_nl_perp"]) fitter.add_model_and_dataset(PowerBeutler2017(recon=r, isotropic=False), d, name=f"Beutler 2017 {t}", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset(model, d, name=f"Beutler 2017 Fixed $\\Sigma_{{nl}}$ {t}", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset(PowerSeo2016(recon=r, isotropic=False), d, name=f"Seo 2016 {t}", linestyle=ls, color=cs[1]) fitter.add_model_and_dataset(PowerDing2018(recon=r, isotropic=False), d, name=f"Ding 2018 {t}", linestyle=ls, color=cs[2]) fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file) if fitter.should_plot(): import logging logging.info("Creating plots") from chainconsumer import ChainConsumer
for r in [True, False]: rt = "Recon" if r else "Prerecon" data = PowerSpectrum_SDSS_DR12_Z061_NGC(recon=r, postprocess=postprocess) n = PowerNoda2019(postprocess=postprocess, recon=r, nonlinear_type="spt") n2 = PowerNoda2019(postprocess=postprocess, recon=r, nonlinear_type="halofit") fitter.add_model_and_dataset(n, data, name=f"N19 {rt} SPT", color="r", shade_alpha=0.7, linestyle="-" if r else "--", zorder=10 if r else 2) fitter.add_model_and_dataset(n2, data, name=f"N19 {rt} Halofit", color="lb", shade_alpha=0.7, linestyle="-" if r else "--", zorder=10 if r else 2) fitter.set_sampler(sampler) fitter.set_num_walkers(20) fitter.fit(file)
ls = "-" if r else "--" d = PowerSpectrum_SDSS_DR12_Z061_NGC(recon=r, min_k=0.03, max_k=0.21) de = PowerSpectrum_SDSS_DR12_Z061_NGC(recon=r, postprocess=p, min_k=0.03, max_k=0.21) # Fix sigma_nl for one of the Beutler models model = PowerBeutler2017(recon=r) sigma_nl = 6.0 if r else 9.3 model.set_default("sigma_nl", sigma_nl) model.set_fix_params(["om", "sigma_nl"]) fitter.add_model_and_dataset(PowerBeutler2017(recon=r), d, name=f"Beutler 2017 {t}", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset( model, d, name=f"Beutler 2017 Fixed $\\Sigma_{{nl}}$ {t}", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset(PowerSeo2016(recon=r), d, name=f"Seo 2016 {t}", linestyle=ls, color=cs[1]) fitter.add_model_and_dataset(PowerDing2018(recon=r), d,
# Changing fitting range and sigma values to match Hee-Jong d = PowerSpectrum_DESIMockChallenge0_Z01(recon=r, isotropic=False, realisation="data", min_k=0.001, max_k=0.30) model = PowerBeutler2017(recon=r, isotropic=False, correction=Correction.NONE) model.set_default("sigma_nl_par", 6.2) model.set_default("sigma_nl_perp", 2.9) model.set_default("sigma_s", 0.0) model.set_fix_params( ["om", "sigma_nl_par", "sigma_nl_perp", "sigma_s"]) fitter.add_model_and_dataset( model, d, name=f"Beutler 2017 New $\\Sigma_{{nl}}$ {t}") # Now change linear and smooth spectra to Hee-Jong's inputs pklin = np.array( pd.read_csv( "../barry/data/desi_mock_challenge_0/mylinearmatterpkL900.dat", delim_whitespace=True, header=None)) pksmooth = np.array( pd.read_csv( "../barry/data/desi_mock_challenge_0/Psh_mylinearmatterpkL900.dat", delim_whitespace=True, header=None, skiprows=2)) model2 = PowerBeutler2017(recon=False, isotropic=False,
model = PowerBeutler2017(recon="iso", isotropic=False, fix_params=["om"], poly_poles=[0, 2], correction=Correction.HARTLAP, marg="full") model4 = PowerBeutler2017(recon="iso", isotropic=False, fix_params=["om"], poly_poles=[0, 2, 4], correction=Correction.HARTLAP, marg="full") for d in datasets: if 4 in d.fit_poles: fitter.add_model_and_dataset(model4, d, name=d.name) else: fitter.add_model_and_dataset(model, d, name=d.name) fitter.set_sampler(sampler) fitter.set_num_walkers(5) fitter.set_num_concurrent(100) fitter.fit(file) # Everything below is nasty plotting code ########################################################### if fitter.should_plot(): import logging logging.info("Creating plots") from chainconsumer import ChainConsumer
sampler = DynestySampler(temp_dir=dir_name, nlive=1000) fitter = Fitter(dir_name, remove_output=False) cs = ["#262232", "#116A71", "#48AB75", "#D1E05B"] for r in [True, False]: t = "Recon" if r else "Prerecon" ls = "-" if r else "--" d = CorrelationFunction_SDSS_DR12_Z061_NGC(recon=r) # Fix sigma_nl for one of the Beutler models model = CorrBeutler2017() sigma_nl = 6.0 if r else 9.3 model.set_default("sigma_nl", sigma_nl) model.set_fix_params(["om", "sigma_nl"]) fitter.add_model_and_dataset(CorrBeutler2017(), d, name=f"Beutler 2017 {t}", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset(model, d, name=f"Beutler 2017 Fixed $\\Sigma_{{nl}}$ {t}", linestyle=ls, color=cs[0]) fitter.add_model_and_dataset(CorrSeo2016(recon=r), d, name=f"Seo 2016 {t}", linestyle=ls, color=cs[1]) fitter.add_model_and_dataset(CorrDing2018(recon=r), d, name=f"Ding 2018 {t}", linestyle=ls, color=cs[2]) fitter.set_sampler(sampler) fitter.set_num_walkers(30) fitter.fit(file) if fitter.should_plot(): import logging logging.info("Creating plots") res = fitter.load() if True: from chainconsumer import ChainConsumer
beutler = PowerBeutler2017(recon=r) sigma_nl = 6.0 beutler.set_default("sigma_nl", sigma_nl) beutler.set_fix_params(["om", "sigma_nl"]) beutler_extracted = PowerBeutler2017(recon=r, postprocess=p) beutler_extracted.set_default("sigma_nl", sigma_nl) beutler_extracted.set_fix_params(["om", "sigma_nl"]) ding_extracted = PowerDing2018(recon=r, postprocess=p) for i in range(999): d.set_realisation(i) de.set_realisation(i) fitter.add_model_and_dataset(ding, d, name=f"D18", linestyle=ls, color="p", realisation=i) fitter.add_model_and_dataset(beutler, d, name=f"B17", linestyle=ls, color="p", realisation=i) fitter.add_model_and_dataset(ding_extracted, de, name=f"D18 + Extractor", linestyle=ls, color="p", realisation=i) fitter.add_model_and_dataset(beutler_extracted,
if __name__ == "__main__": pfn, dir_name, file = setup(__file__) r = True models = [ PowerBeutler2017(recon=r, smooth_type="hinton2017", name="Hinton2017"), PowerBeutler2017(recon=r, smooth_type="eh1998", name="EH1998") ] data = PowerSpectrum_SDSS_DR12_Z061_NGC(name="Recon mean", recon=r, min_k=0.02, max_k=0.30) sampler = DynestySampler(temp_dir=dir_name) fitter = Fitter(dir_name) fitter.add_model_and_dataset(models[0], data, name="Hinton2017") fitter.add_model_and_dataset(models[1], data, name="EH1998") fitter.set_sampler(sampler) fitter.set_num_walkers(10) fitter.fit(file) if fitter.should_plot(): from chainconsumer import ChainConsumer c = ChainConsumer() pks = {} for posterior, weight, chain, model, data, extra in fitter.load(): c.add_chain(chain, weights=weight, parameters=model.get_labels(), **extra)
# Run a not so quick test submitting 128 jobs each with a different mock realisation. # If run on NERSC, this will actually submit 128/num_per_task jobs, and each job will # do num_per_task. if __name__ == "__main__": pfn, dir_name, file = setup(__file__) data = PowerSpectrum_SDSS_DR12(isotropic=True, recon="iso") model = PowerBeutler2017(isotropic=data.isotropic, recon=data.recon, marg="full") sampler = EnsembleSampler(num_walkers=16, num_steps=5000, num_burn=300, temp_dir=dir_name) fitter = Fitter(dir_name) for i in range(128): data.set_realisation(i) fitter.add_model_and_dataset(model, data, realisation=i) fitter.set_sampler(sampler) fitter.set_num_walkers(1) fitter.set_num_concurrent(128) fitter.fit(file) if fitter.should_plot(): from chainconsumer import ChainConsumer posterior, weight, chain, evidence, model, data, extra = fitter.load()[0] model_results, summary = get_model_comparison_dataframe(fitter) c = ChainConsumer() c.add_chain(chain, weights=weight, parameters=model.get_labels()) c.plotter.plot(filename=pfn + "_contour.pdf")