Read values from ini file

This commit is contained in:
Deaglan Bartlett 2025-04-16 13:44:50 +02:00
parent 4baac7619e
commit b89b1fe7ae
2 changed files with 56 additions and 11 deletions

View file

@ -4,7 +4,7 @@ import numbers
import jaxlib
import jax.numpy as jnp
import jax
import configparser
# Output stream management
cons = borg.console()
@ -14,25 +14,59 @@ def myprint(x):
else:
cons.print_std(repr(x))
def get_cosmopar(ini_file):
"""
Extract cosmological parameters from an ini file
Args:
:ini_file (str): Path to the ini file
Returns:
:cpar (borg.cosmo.CosmologicalParameters): Cosmological parameters
"""
config = configparser.ConfigParser()
config.read(ini_file)
cpar = borg.cosmo.CosmologicalParameters()
cpar.default()
cpar.fnl = float(config['cosmology']['fnl'])
cpar.omega_k = float(config['cosmology']['omega_k'])
cpar.omega_m = float(config['cosmology']['omega_m'])
cpar.omega_b = float(config['cosmology']['omega_b'])
cpar.omega_q = float(config['cosmology']['omega_q'])
cpar.h = float(config['cosmology']['h100'])
cpar.sigma8 = float(config['cosmology']['sigma8'])
cpar.n_s = float(config['cosmology']['n_s'])
cpar.w = float(config['cosmology']['w'])
cpar.wprime = float(config['cosmology']['wprime'])
return cpar
class MyLikelihood(borg.likelihood.BaseLikelihood):
"""
HADES likelihood class
"""
def __init__(self, fwd: borg.forward.BaseForwardModel):
def __init__(self, fwd: borg.forward.BaseForwardModel, ini_fname: str):
self.fwd = fwd
self.N = [32, 32, 32] # Number of grid points per side
self.L = [500, 500, 500] # Box size lenght Mpc/h
self.sigma_dens = 0.1 # Density scatter
# Read the ini file
self.ini_fname = ini_fname
config = configparser.ConfigParser()
config.read(ini_fname)
self.N = [int(config['system'][f'N{i}']) for i in range(3)] # Number of grid points per side
self.L = [float(config['system'][f'L{i}']) for i in range(3)] # Box size lenght Mpc/h
self.sigma_dens = float(config['mock']['sigma_dens']) # Density scatter
myprint(f"Likelihood initialized with {self.N} grid points and box size {self.L} Mpc/h")
super().__init__(fwd, self.N, self.L)
# Set up cosmoligical parameters
cpar = borg.cosmo.CosmologicalParameters()
cpar.default()
cpar = get_cosmopar(ini_fname)
self.updateCosmology(cpar)
# Gradient of the likelihood
@ -180,6 +214,7 @@ def build_gravity_model(state: borg.likelihood.MarkovState, box: borg.forward.Bo
global chain
myprint("Building gravity model")
# READ FROM INI FILE
which_model = 'cola'
ai = 0.05 # Initial scale factor
af = 1.0 # Final scale factor
@ -250,8 +285,7 @@ def build_gravity_model(state: borg.likelihood.MarkovState, box: borg.forward.Bo
chain @= mod
# Cosmological parameters
cpar = borg.cosmo.CosmologicalParameters()
cpar.default()
cpar = get_cosmopar(borg.getIniConfigurationFilename())
chain.setCosmoParams(cpar)
return chain
@ -291,5 +325,5 @@ def build_likelihood(state: borg.likelihood.MarkovState, info: borg.likelihood.L
myprint("Building likelihood")
global likelihood
likelihood = MyLikelihood(chain)
likelihood = MyLikelihood(chain, borg.getIniConfigurationFilename())
return likelihood

View file

@ -50,4 +50,15 @@ n_s = 0.97
w = -1
wprime = 0
beta = 1.5
z0 = 0
z0 = 0
[mock]
sigma_dens = 0.1
[gravity]
which_model = lpt
ai = 0.05 # Initial scale factor
af = 1.0 # Final scale factor
supersampling = 2
forcesampling = 2
nsteps = 20 # Number of steps in the PM solver