Skip to content

Commit 2317ac4

Browse files
test version for cobaya
1 parent b3a3d95 commit 2317ac4

File tree

2 files changed

+100
-0
lines changed

2 files changed

+100
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from .halo_model_fe import paramfile_halomod
2+
3+
__all__ = {
4+
"paramfile_halomod"
5+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
import numpy as np
2+
from cobaya.theory import Theory
3+
from utils import *
4+
from HODS import *
5+
from power_spectrum import *
6+
from lin_matterPS import *
7+
from cosmology import *
8+
9+
class HaloModel(Theory):
10+
_logz = np.linspace(-3, np.log10(1100), 150)
11+
_default_z_sampling = 10**_logz
12+
_default_z_sampling[0] = 0
13+
14+
def initialize(self):
15+
self._var_pairs = set()
16+
self._required_results = {}
17+
18+
def _get_Pk_mm_lin(self):
19+
for pair in self._var_pairs:
20+
self.k, self.z, Pk_mm = \
21+
self.provider.get_Pk_grid(var_pair=pair, nonlinear=False)
22+
23+
return Pk_mm
24+
25+
def get_Pk_mm_grid(self):
26+
27+
return self.current_state["Pk_mm_grid"]
28+
29+
def get_Pk_gg_grid(self):
30+
31+
return self.current_state["Pk_gg_grid"]
32+
33+
def get_Pk_gm_grid(self):
34+
35+
return self.current_state["Pk_gm_grid"]
36+
37+
class HaloModel_fe(HaloModel):
38+
def initialize(self):
39+
super().initialize()
40+
self.logmass = np.linspace(self.Mmin, self.mmax, self.nm)
41+
self.clust_param = {'sigma_EP': self.sigma_EP,
42+
'sigma_LP': self.sigma_LP,
43+
'scale_EP': self.scale_EP,
44+
'scale_LP': self.scale_LP,
45+
'alpha_EP': self.alpha_EP,
46+
'alpha_LP': self.alpha_LP,
47+
'LogMmin_EP': self.LogMmin_EP,
48+
'LogMmin_LP': self.LogMmin_LP,
49+
'Dc': self.Dc,
50+
}
51+
self.isinstance_200 = u_p_nfw_hmf_bias(self.k, self._get_Pk_mm_lin(), self.logmass, self.z, self.Dc)
52+
self.instance_HOD = hod_ngal(self.logmass, self.z, self.clust_param, self.instance_200)
53+
54+
def must_provide(self, **requirements):
55+
56+
options = requirements.get("halo_model") or {}
57+
self._var_pairs.update(
58+
set((x, y) for x, y in
59+
options.get("vars_pairs", [("delta_tot", "delta_tot")])))
60+
61+
self.kmax = max(self.kmax, options.get("kmax", self.kmax))
62+
self.z = np.unique(np.concatenate(
63+
(np.atleast_1d(options.get("z", self._default_z_sampling)),
64+
np.atleast_1d(self.z))))
65+
66+
needs = {}
67+
68+
needs["Pk_grid"] = {
69+
"vars_pairs": self._var_pairs,
70+
"nonlinear": (False, False),
71+
"z": self.z,
72+
"k_max": self.kmax
73+
}
74+
75+
needs["sigma_R"] = {"vars_pairs": self._var_pairs,
76+
"z": self.z,
77+
"k_max": self.kmax,
78+
"R": np.linspace(0.14, 66, 256) # list of radii required
79+
}
80+
return needs
81+
82+
def calculate(self, state: dict):
83+
spectra = mm_gg_mg_spectra(
84+
self.k,
85+
self._get_Pk_mm_lin(),
86+
self.logmass,
87+
self.z,
88+
self.instance_HOD,
89+
self.instance_200,
90+
self.gal_mod
91+
)
92+
93+
Pgal = spectra.halo_terms_galaxy()[0]
94+
95+
state['Pk_gg_grid'] = Pgal

0 commit comments

Comments
 (0)