From b89b1fe7ae8bbd3f8e13c5eddd470175335b6b32 Mon Sep 17 00:00:00 2001 From: Deaglan Bartlett Date: Wed, 16 Apr 2025 13:44:50 +0200 Subject: [PATCH] Read values from ini file --- example0.py | 54 ++++++++++++++++++++++++++++++++++++++++++---------- ini_file.ini | 13 ++++++++++++- 2 files changed, 56 insertions(+), 11 deletions(-) diff --git a/example0.py b/example0.py index d01c1e4..8d5b6c4 100644 --- a/example0.py +++ b/example0.py @@ -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 diff --git a/ini_file.ini b/ini_file.ini index 7668197..f4318d0 100644 --- a/ini_file.ini +++ b/ini_file.ini @@ -50,4 +50,15 @@ n_s = 0.97 w = -1 wprime = 0 beta = 1.5 -z0 = 0 \ No newline at end of file +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 \ No newline at end of file