Skip to content

Commit

Permalink
Merge pull request #1094 from LSSTDESC/emu_pk
Browse files Browse the repository at this point in the history
Emu pk
  • Loading branch information
matteozennaro committed Jul 10, 2023
2 parents d421ca0 + c1a448b commit b4f6b70
Show file tree
Hide file tree
Showing 27 changed files with 1,138 additions and 13 deletions.
2 changes: 2 additions & 0 deletions .github/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@ dependencies:
- pytest-cov
- pip:
- classy<3
- baccoemu @ git+https://bitbucket.org/rangulo/baccoemu.git@master

60 changes: 60 additions & 0 deletions benchmarks/data/baccoemu_baryons_fk.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
2.000000000000000389e-02 9.998732960214319343e-01
2.187915293796756019e-02 9.999477470585146355e-01
2.393486666414871081e-02 9.998231446725406313e-01
2.618373041473854787e-02 9.995327892743069986e-01
2.864389211152887013e-02 9.993247884543159376e-01
3.133520481233913191e-02 9.992489788551497387e-01
3.427938692158521983e-02 9.990868771219839628e-01
3.750019745385639591e-02 9.986023320684114246e-01
4.102362776484528434e-02 9.992274909616075673e-01
4.487811129686510719e-02 9.995808049829056907e-01
4.909475303156203563e-02 9.994852871652678550e-01
5.370758050146461071e-02 9.993998241750282618e-01
5.875381838598739415e-02 9.991938473311864355e-01
6.427418890782941874e-02 9.989247802488147032e-01
7.031324045391089406e-02 9.986592949348387371e-01
7.691970707276019059e-02 9.983997754875103547e-01
8.414690174942923706e-02 9.981372608896385001e-01
9.205314663159455679e-02 9.978684921574149103e-01
1.007022436786905173e-01 9.975057650614359561e-01
1.101639895321273044e-01 9.970547838070334956e-01
1.205147387615035093e-01 9.966117962163191235e-01
1.318380200321070672e-01 9.964870110813935922e-01
1.442252101660650432e-01 9.963155357697119907e-01
1.577762715366924917e-01 9.960500656198000291e-01
1.726005587466795943e-01 9.956389695248794025e-01
1.888177010998628169e-01 9.949472573646657159e-01
2.065585679879671788e-01 9.940754864119252243e-01
2.259663249828150755e-01 9.930242193584289945e-01
2.471975891564744954e-01 9.917099084513375518e-01
2.704236929525687949e-01 9.901839124371191181e-01
2.958320668079615912e-01 9.884614970072851392e-01
3.236277516823212186e-01 9.864783679825965823e-01
3.540350537014047005e-01 9.841511788867244315e-01
3.872993542667295119e-01 9.815776387894821209e-01
4.236890902388923963e-01 9.787535634638278026e-01
4.634979201742531751e-01 9.755278194474806819e-01
5.070470940961181450e-01 9.720431556989063138e-01
5.546880459240498551e-01 9.683372189902618166e-01
6.068052294817325443e-01 9.643727675432286484e-01
6.638192209694663282e-01 9.601898524051882822e-01
7.261901129376717723e-01 9.558731571671572613e-01
7.944212271501621681e-01 9.514317001908011440e-01
8.690631762993131781e-01 9.468119318713210664e-01
9.507183073504267279e-01 9.421009870545224985e-01
1.040045562372281518e+00 9.372993116680947701e-01
1.137765796079880598e+00 9.323703792731236062e-01
1.244667593001005823e+00 9.273184959019834528e-01
1.361613631210048192e+00 9.221672739850942380e-01
1.489547643983299308e+00 9.169022051720895350e-01
1.629502035554992734e+00 9.114672250657319674e-01
1.782606212431856685e+00 9.059256973300072735e-01
1.950095697498383851e+00 9.002812186102960856e-01
2.133322100461982895e+00 8.945042780698080342e-01
2.333764025097695427e+00 8.886220205927364280e-01
2.553039001311959044e+00 8.826372367745675129e-01
2.792916538315015629e+00 8.765096023363859734e-01
3.055332404238657595e+00 8.701842389260868726e-01
3.342404247433285125e+00 8.637359206940423695e-01
3.656448685505259810e+00 8.571733622840120859e-01
4.000000000000000000e+00 8.505352677378088533e-01
100 changes: 100 additions & 0 deletions benchmarks/data/baccoemu_linear.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
1.000000000000000021e-03 3.985188606524320676e+03
1.112975116027087666e-03 4.399422804914475819e+03
1.238713608895509327e-03 4.853258748045930588e+03
1.378657422584813209e-03 5.349642826548300945e+03
1.534411404862938162e-03 5.891378094371335465e+03
1.707761711360615293e-03 6.481129042084371576e+03
1.900696288848198511e-03 7.121494414663879979e+03
2.115427672613078534e-03 7.814622802515236799e+03
2.354418359373455522e-03 8.562248305315995822e+03
2.620409046699977412e-03 9.365474738974009597e+03
2.916450062789337216e-03 1.022466915079015962e+04
3.245936347020170025e-03 1.113930288614688834e+04
3.612646382441314467e-03 1.210748973441130511e+04
4.020785526662465185e-03 1.312622471731513360e+04
4.475034238057186940e-03 1.419068205532509091e+04
4.980601750326892931e-03 1.529412863092380394e+04
5.543285810954788791e-03 1.642751867591209520e+04
6.169539168618715270e-03 1.757905533365733572e+04
6.866543572027083812e-03 1.873376942471730581e+04
7.642292128781888981e-03 1.987347643252698253e+04
8.505680968743930398e-03 2.097609049667779982e+04
9.466611263077167465e-03 2.201598442122048800e+04
1.053610276890664527e-02 2.296314372045434720e+04
1.172642020169719843e-02 2.378395755810601986e+04
1.305121388456632371e-02 2.444071440208051717e+04
1.452567628746954248e-02 2.489330741991084142e+04
1.616671625141833865e-02 2.510082604428795821e+04
1.799315289569932905e-02 2.502512448658755602e+04
2.002593143178408794e-02 2.463325686163142382e+04
2.228836335884041078e-02 2.390732532071910464e+04
2.480639379535929528e-02 2.285086096493577497e+04
2.760889901260365001e-02 2.149034591527155135e+04
3.072801758193269631e-02 1.989347190268783379e+04
3.419951893353392891e-02 1.815823738943331773e+04
3.806321355312052707e-02 1.640321595409931251e+04
4.236340952064813342e-02 1.477151389622799070e+04
4.714942062654640942e-02 1.336136874575490583e+04
5.247613189244045712e-02 1.223048950123766735e+04
5.840462898164167083e-02 1.133612797484557086e+04
6.500289871736167346e-02 1.052865866091323005e+04
7.234660874205263437e-02 9.595428609913908076e+03
8.051997525885234985e-02 8.389369986659934511e+03
8.961672880621947279e-02 6.993290696010762076e+03
9.974118914107016343e-02 5.729215866955445563e+03
1.110094615569622578e-01 4.887929340039991985e+03
1.235507683564645992e-01 4.408882714551523350e+03
1.375089307467721733e-01 3.884506792527747621e+03
1.530440181526495080e-01 3.127629441657047664e+03
1.703341838606967917e-01 2.508570400263641204e+03
1.895777080457383135e-01 2.195815560006516989e+03
2.109952716083549340e-01 1.828796445606834823e+03
2.348324868994759451e-01 1.444552387322252571e+03
2.613627143538738151e-01 1.226838446018773766e+03
2.908901973331572410e-01 9.789812849402381971e+02
3.237535511280131284e-01 8.037424288881824168e+02
3.603296461308820864e-01 6.436535793557495708e+02
4.010379297105179375e-01 5.216705804777371895e+02
4.463452363508271792e-01 4.162248263230054022e+02
4.967711412156997075e-01 3.325079741598265741e+02
5.528939185334521556e-01 2.647886241627287518e+02
6.153571731304400272e-01 2.099732712732734967e+02
6.848772211629522433e-01 1.659615088404438268e+02
7.622513046881468357e-01 1.308047545177709878e+02
8.483667342770891961e-01 1.027992014520048798e+02
9.442110645155648019e-01 8.057086084300124185e+01
1.050883419083270764e+00 6.298695435023955014e+01
1.169607095285145837e+00 4.912020730449326322e+01
1.301743592581091402e+00 3.821701891425485798e+01
1.448808225990458221e+00 2.966821157041777468e+01
1.612487503422729285e+00 2.298303630276269516e+01
1.794658466214141157e+00 1.776852982276279036e+01
1.997410214663678962e+00 1.371078644770697252e+01
2.223067865419000366e+00 1.056032329102122524e+01
2.474219215450801812e+00 8.119591139145290626e+00
2.753744418392806370e+00 6.232611851181553142e+00
3.064849013569678426e+00 4.776538873455576706e+00
3.411100686483218070e+00 3.655072252307125513e+00
3.796470182318738118e+00 2.792826369155442912e+00
4.225376841659580052e+00 2.131020258083628605e+00
4.702739280604240513e+00 1.623871067807571400e+00
5.234031796475647980e+00 1.235830740122631166e+00
5.825347145971949914e+00 9.393548435631747795e-01
6.483466415686194750e+00 7.131664516771192286e-01
7.215936786256076374e+00 5.408279471664906302e-01
8.031158081927486592e+00 4.096886294079310487e-01
8.938479098065126749e+00 3.100232849522661649e-01
9.948304811274732984e+00 2.343658489821855706e-01
1.107221570160134227e+01 1.769995780747464220e-01
1.232310055516668257e+01 1.335488681777156628e-01
1.371530427020012155e+01 1.006724866327057405e-01
1.526479236147277518e+01 7.582213392654577055e-02
1.698933404963958083e+01 5.705704188672541810e-02
1.890870603512058423e+01 4.290002472063680905e-02
2.104491929336040101e+01 3.222920213983342108e-02
2.342247149230851377e+01 2.419310746996886433e-02
2.606862792679319440e+01 1.814629682574131139e-02
2.901373419148966448e+01 1.360014157604520768e-02
3.229156417815232061e+01 1.018489859970993228e-02
3.593970738787518826e+01 7.621250004711303816e-03
4.000000000000001421e+01 5.698312344390142788e-03
60 changes: 60 additions & 0 deletions benchmarks/data/baccoemu_nonlinear.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
2.000000000000000389e-02 2.449274988270842732e+04
2.187915293796756019e-02 2.388388065377897874e+04
2.393486666414871081e-02 2.305038689972345310e+04
2.618373041473854787e-02 2.198948695457704525e+04
2.864389211152887013e-02 2.074410698421574125e+04
3.133520481233913191e-02 1.936104946265081890e+04
3.427938692158521983e-02 1.788440231355831565e+04
3.750019745385639591e-02 1.642129682947319816e+04
4.102362776484528434e-02 1.501849753703994065e+04
4.487811129686510719e-02 1.376948446087189586e+04
4.909475303156203563e-02 1.268645358981616300e+04
5.370758050146461071e-02 1.180708365702966694e+04
5.875381838598739415e-02 1.107435427774083109e+04
6.427418890782941874e-02 1.037987251429057142e+04
7.031324045391089406e-02 9.631322286814240215e+03
7.691970707276019059e-02 8.732357739311020850e+03
8.414690174942923706e-02 7.690390861294000388e+03
9.205314663159455679e-02 6.635350034876269092e+03
1.007022436786905173e-01 5.731362301871416093e+03
1.101639895321273044e-01 5.082571976826049649e+03
1.205147387615035093e-01 4.639857151012681243e+03
1.318380200321070672e-01 4.240886200465648471e+03
1.442252101660650432e-01 3.742825116628878277e+03
1.577762715366924917e-01 3.219052593489016544e+03
1.726005587466795943e-01 2.830284689200451339e+03
1.888177010998628169e-01 2.555622077926853308e+03
2.065585679879671788e-01 2.279110605888878126e+03
2.259663249828150755e-01 2.008034105178234086e+03
2.471975891564744954e-01 1.794024312024805340e+03
2.704236929525687949e-01 1.611132897395996224e+03
2.958320668079615912e-01 1.441061611902212917e+03
3.236277516823212186e-01 1.298800004492742119e+03
3.540350537014047005e-01 1.170965413912687609e+03
3.872993542667295119e-01 1.058711656190305803e+03
4.236890902388923963e-01 9.614919301853013849e+02
4.634979201742531751e-01 8.760694577501968752e+02
5.070470940961181450e-01 7.998421070954094603e+02
5.546880459240498551e-01 7.333806962349532341e+02
6.068052294817325443e-01 6.736312195505298632e+02
6.638192209694663282e-01 6.191468678994192487e+02
7.261901129376717723e-01 5.695045433843217779e+02
7.944212271501621681e-01 5.238145812193783968e+02
8.690631762993131781e-01 4.812712735031032594e+02
9.507183073504267279e-01 4.413198322239445019e+02
1.040045562372281518e+00 4.037545477123327942e+02
1.137765796079880598e+00 3.680411081171213254e+02
1.244667593001005823e+00 3.340943584990378667e+02
1.361613631210048192e+00 3.018284632818431987e+02
1.489547643983299308e+00 2.713486244929517852e+02
1.629502035554992734e+00 2.426217698762671091e+02
1.782606212431856685e+00 2.158088301926908912e+02
1.950095697498383851e+00 1.908860483672285397e+02
2.133322100461982895e+00 1.679160397009314352e+02
2.333764025097695427e+00 1.470564312761920576e+02
2.553039001311959044e+00 1.282384567574242737e+02
2.792916538315015629e+00 1.112884341160800261e+02
3.055332404238657595e+00 9.615989273300276352e+01
3.342404247433285125e+00 8.272968471139671465e+01
3.656448685505259810e+00 7.089685799721701187e+01
4.000000000000000000e+00 6.056690163445025377e+01
58 changes: 58 additions & 0 deletions benchmarks/test_baccoemu_baryons.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import numpy as np
import pyccl as ccl

BEMBAR_TOLERANCE = 1e-3


def test_baccoemu_baryons():
baryons = ccl.BaccoemuBaryons()
cosmo = ccl.Cosmology(
Omega_c=0.27,
Omega_b=0.05,
h=0.67,
sigma8=0.83,
n_s=0.96,
Neff=3.046,
mass_split='normal',
m_nu=0.1,
Omega_g=0,
Omega_k=0,
w0=-1,
wa=0)

data = np.loadtxt("./benchmarks/data/baccoemu_baryons_fk.txt")

k = data[:, 0] * cosmo['h']
fk = data[:, 1]
a = 1

cclfk = baryons.boost_factor(cosmo, k, a)
err = np.abs(fk / cclfk - 1)
assert np.allclose(err, 0, atol=BEMBAR_TOLERANCE, rtol=0)


def test_baccoemu_baryons_A_s():
baryons = ccl.BaccoemuBaryons()
cosmo = ccl.Cosmology(
Omega_c=0.27,
Omega_b=0.05,
h=0.67,
A_s=2.2194e-9,
n_s=0.96,
Neff=3.046,
mass_split='normal',
m_nu=0.1,
Omega_g=0,
Omega_k=0,
w0=-1,
wa=0)

data = np.loadtxt("./benchmarks/data/baccoemu_baryons_fk.txt")

k = data[:, 0] * cosmo['h']
fk = data[:, 1]
a = 1

cclfk = baryons.boost_factor(cosmo, k, a)
err = np.abs(fk / cclfk - 1)
assert np.allclose(err, 0, atol=BEMBAR_TOLERANCE, rtol=0)
70 changes: 70 additions & 0 deletions benchmarks/test_baccoemu_linear.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import numpy as np
import pyccl as ccl

BEMULIN_TOLERANCE = 1e-3


def test_baccoemu_linear():
bemu = ccl.BaccoemuLinear()
cosmo = ccl.Cosmology(
Omega_c=0.27,
Omega_b=0.05,
h=0.67,
sigma8=0.83,
n_s=0.96,
Neff=3.046,
mass_split='normal',
m_nu=0.1,
Omega_g=0,
Omega_k=0,
w0=-1,
wa=0,
transfer_function=bemu)

data = np.loadtxt("./benchmarks/data/baccoemu_linear.txt")

k = data[:, 0] * cosmo['h']
pk = data[:, 1] / cosmo['h']**3
a = 1

linpk = cosmo.get_linear_power()
err = np.abs(pk / linpk(k, a) - 1)
assert np.allclose(err, 0, atol=BEMULIN_TOLERANCE, rtol=0)

ktest, pktest = bemu.get_pk_at_a(1, cosmo)
pktest = np.exp(np.interp(np.log(k), np.log(ktest), np.log(pktest)))
err = np.abs(pktest / pk - 1)
assert np.allclose(err, 0, atol=BEMULIN_TOLERANCE, rtol=0)


def test_baccoemu_linear_A_s():
bemu = ccl.BaccoemuLinear()
cosmo = ccl.Cosmology(
Omega_c=0.27,
Omega_b=0.05,
h=0.67,
A_s=2.2194e-9,
n_s=0.96,
Neff=3.046,
mass_split='normal',
m_nu=0.1,
Omega_g=0,
Omega_k=0,
w0=-1,
wa=0,
transfer_function=bemu)

data = np.loadtxt("./benchmarks/data/baccoemu_linear.txt")

k = data[:, 0] * cosmo['h']
pk = data[:, 1] / cosmo['h']**3
a = 1

linpk = cosmo.get_linear_power()
err = np.abs(pk / linpk(k, a) - 1)
assert np.allclose(err, 0, atol=BEMULIN_TOLERANCE, rtol=0)

ktest, pktest = bemu.get_pk_at_a(1, cosmo)
pktest = np.exp(np.interp(np.log(k), np.log(ktest), np.log(pktest)))
err = np.abs(pktest / pk - 1)
assert np.allclose(err, 0, atol=BEMULIN_TOLERANCE, rtol=0)

0 comments on commit b4f6b70

Please sign in to comment.