Skip to content
Open
Show file tree
Hide file tree
Changes from 45 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
867e33c
add darkemulator.py
RyoTerasawa Nov 5, 2023
0df32e9
add darkemulator mass function
RyoTerasawa Nov 5, 2023
a37dcca
Linting
RyoTerasawa Nov 6, 2023
efcdc7f
delete darkemulator.py
RyoTerasawa Nov 6, 2023
2ee5ba5
add dependency on dark_emulator
RyoTerasawa Nov 6, 2023
9b7450d
Merge remote-tracking branch 'origin/master' into SSC
RyoTerasawa Mar 10, 2024
f76b69f
Merge branch 'master' into SSC
damonge Jun 18, 2024
4b5f3a6
try bumping python
damonge Jun 18, 2024
a382551
try george in conda
damonge Jun 18, 2024
5f8d35d
Merge branch 'master' into SSC
damonge Jun 18, 2024
ca3dcd9
add unit test and benchmark test
RyoTerasawa Jun 22, 2024
0341150
lint
RyoTerasawa Jun 22, 2024
12fe1d1
Merge branch 'master' into SSC
RyoTerasawa Dec 1, 2024
a25862e
Add References to the equations
RyoTerasawa Dec 1, 2024
08af485
switch to MassFuncNishimichi19
RyoTerasawa Dec 1, 2024
46e92de
add dependency to extra_parameters
RyoTerasawa Dec 1, 2024
d4a21ca
make sure the cosmology object is exactly the same
RyoTerasawa Dec 1, 2024
f7347fe
create pkresponse.npz
RyoTerasawa Dec 1, 2024
896f812
update benchmark
RyoTerasawa Dec 2, 2024
59ea6ea
add documentation
RyoTerasawa Dec 3, 2024
a205e5e
make utility functions private and add unit tests for them
RyoTerasawa Dec 3, 2024
de64ba3
update test_pkresponse.py
RyoTerasawa Dec 3, 2024
1928d7c
lint
RyoTerasawa Dec 3, 2024
2925dac
switched to halo model integral
RyoTerasawa Dec 8, 2024
2f5417a
Merge pull request #1217 from LSSTDESC/master
RyoTerasawa Dec 8, 2024
b26134a
rerun Github jobs
RyoTerasawa Feb 10, 2025
937bf8f
Merge remote-tracking branch 'origin/SSC' into SSC
RyoTerasawa Feb 10, 2025
f79e4c8
change to Miniforge3
RyoTerasawa Feb 10, 2025
3ed8434
Update ci.yml
RyoTerasawa Feb 12, 2025
d0e7fbe
Merge pull request #1225 from LSSTDESC/master
RyoTerasawa Feb 13, 2025
03845c0
Merge remote-tracking branch 'origin/SSC' into SSC
RyoTerasawa Mar 8, 2025
fdd1a9f
update benchmark
RyoTerasawa Mar 8, 2025
4a9e8bb
add comments in benchmark
RyoTerasawa Mar 12, 2025
45d8c0f
Merge pull request #1239 from LSSTDESC/master
RyoTerasawa Apr 4, 2025
9f1d1d7
update pkresponse.py
RyoTerasawa Apr 29, 2025
83b42c1
Merge remote-tracking branch 'origin/SSC' into SSC
RyoTerasawa Apr 29, 2025
1bb5f5c
dealt with coveralls
RyoTerasawa Apr 29, 2025
8ae5708
update test_pkresponse.py
RyoTerasawa Apr 29, 2025
9a919cf
update pkresponse.py
RyoTerasawa Apr 29, 2025
44d6c4f
update CCLWarning import
RyoTerasawa Apr 29, 2025
6345bd0
update pkresponse.py
RyoTerasawa Apr 29, 2025
6580ccb
Make wanings into ValueError
RyoTerasawa May 3, 2025
053a807
Merge pull request #1245 from LSSTDESC/master
RyoTerasawa May 3, 2025
3ad0df1
lint
RyoTerasawa May 3, 2025
2f8fbba
Merge remote-tracking branch 'origin/SSC' into SSC
RyoTerasawa May 3, 2025
ff8152d
re-add lk_arr and a_arr options
RyoTerasawa Jun 19, 2025
fd24b45
update spline
RyoTerasawa Jun 19, 2025
9a22ba4
renamed module and functions
RyoTerasawa Jul 3, 2025
dc930fa
fix typo
RyoTerasawa Jul 3, 2025
3d8f651
add docs for khmin
Jul 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,4 @@ dependencies:
- MiraTitanHMFemulator
- dark_emulator==1.1.2
- colossus

Binary file added benchmarks/data/pkresponse.npz
Binary file not shown.
177 changes: 177 additions & 0 deletions benchmarks/test_pkresponse.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
import numpy as np
from pyccl.pkresponse import Pmm_resp, darkemu_Pgm_resp, darkemu_Pgg_resp
import pyccl as ccl

# Set cosmology
Om = 0.3156
ob = 0.02225
oc = 0.1198
OL = 0.6844
As = 2.2065e-9
ns = 0.9645
h = 0.6727

cosmo = ccl.Cosmology(
Omega_c=oc / (h**2),
Omega_b=ob / (h**2),
h=h,
n_s=ns,
A_s=As,
m_nu=0.06,
transfer_function="boltzmann_camb",
extra_parameters={"camb": {"halofit_version": "takahashi"}},
)


# Load data
pkresponse_data = np.load("benchmarks/data/pkresponse.npz")
k_data = pkresponse_data["k_h"]
k_data_mm = pkresponse_data["k_h_mm"]
Pmm_resp_data = pkresponse_data["Pmm_resp"] / h**3
Pgm_resp_data = pkresponse_data["Pgm_resp"] / h**3
Pgg_resp_data = pkresponse_data["Pgg_resp"] / h**3


# HOD parameters
logMhmin = 13.94
logMh1 = 14.46
alpha = 1.192
kappa = 0.60
sigma_logM = 0.5
sigma_lM = sigma_logM * np.log(10)
logMh0 = logMhmin + np.log10(kappa)

logMmin = np.log10(10**logMhmin / h)
logM0 = np.log10(10**logMh0 / h)
logM1 = np.log10(10**logMh1 / h)

# Construct HOD
mass_def = ccl.halos.MassDef(200, "matter")
cm = ccl.halos.ConcentrationDuffy08(mass_def=mass_def)
prof_hod = ccl.halos.HaloProfileHOD(
mass_def=mass_def,
concentration=cm,
log10Mmin_0=logMmin,
siglnM_0=sigma_lM,
log10M0_0=logM0,
log10M1_0=logM1,
alpha_0=alpha,
)

# Define input parameters for pkresponse functions
log10Mh_min = np.log10(2.6e12)
log10Mh_max = 15.9
a_arr = np.array([1.0, 0.64516129, 0.49382716, 0.40387722])
indx = (k_data > 1e-2) & (k_data < 3)
lk_arr = np.log(k_data[indx] * h) # Using loaded k_data
indx_mm = (k_data_mm > 1e-2) & (k_data_mm < 3)
lk_arr_mm = np.log(k_data_mm[indx_mm] * h) # Using loaded k_data

# Generate power spectrum responses using pkresponse.py functions
generated_Pmm_resp = Pmm_resp(
cosmo, deltah=0.02, lk_arr=lk_arr_mm, a_arr=a_arr
)

generated_Pgm_resp = darkemu_Pgm_resp(
cosmo,
prof_hod,
deltah=0.02,
log10Mh_min=log10Mh_min,
log10Mh_max=log10Mh_max,
lk_arr=lk_arr,
a_arr=a_arr,
)

generated_Pgg_resp = darkemu_Pgg_resp(
cosmo,
prof_hod,
deltalnAs=0.03,
log10Mh_min=log10Mh_min,
log10Mh_max=log10Mh_max,
lk_arr=lk_arr,
a_arr=a_arr,
)


# Compare the generated responses with simulation data.
# The error bars from the simulations are too strict,
# probably because we use the pair and fixed initial density method.
# Hence instead of "atol" (absolute difference compared to the error bars),
# we use "rtol" (relative difference compared to the simulated response).
# The difference between the model and the simulations are
# typically few ten percents.
# Higher redshifts of Pgm, Pgg (especially Pgg) have worse accuracy due to the
# accuracy of darkemulator itself,
# but they are still a factor of difference at most.


def test_pmm_resp():
assert np.allclose(
generated_Pmm_resp,
Pmm_resp_data[:, indx_mm],
rtol=0.15,
)


def test_pgm_resp():
assert np.allclose(
generated_Pgm_resp[0],
Pgm_resp_data[0, indx],
rtol=0.3,
)


def test_pgm_resp1():
assert np.allclose(
generated_Pgm_resp[1],
Pgm_resp_data[1, indx],
rtol=0.36,
)


def test_pgm_resp2():
assert np.allclose(
generated_Pgm_resp[2],
Pgm_resp_data[2, indx],
rtol=0.78,
)


def test_pgm_resp3():
assert np.allclose(
generated_Pgm_resp[3],
Pgm_resp_data[3, indx],
rtol=0.85,
)


def test_pgg_resp():
assert np.allclose(
generated_Pgg_resp[0],
Pgg_resp_data[0, indx],
rtol=0.65,
)


def test_pgg_resp1():
assert np.allclose(
generated_Pgg_resp[1],
Pgg_resp_data[1, indx],
rtol=1.7,
)


def test_pgg_resp2():
assert np.allclose(
generated_Pgg_resp[2],
Pgg_resp_data[2, indx],
rtol=3.1,
)


def test_pgg_resp3():
assert np.allclose(
generated_Pgg_resp[3],
Pgg_resp_data[3, indx],
rtol=2.6,
)
2 changes: 2 additions & 0 deletions pyccl/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,5 @@
from . import nl_pt

from .cosmology import *

from .pkresponse import *
Loading