Integration with Cobaya
LiLit is designed to work seamlessly with Cobaya, the code for Bayesian analysis in cosmology. This section explains how to integrate LiLit into your Cobaya workflows.
Basic Cobaya Configuration
LiLit can be used directly in Cobaya input files. Here’s the basic structure:
likelihood:
lilit.LiLit:
fields: ["t", "e", "b"]
lmax: [2500, 2000, 500]
lmin: [2, 2, 2]
fsky: [0.7, 0.7, 0.6]
params:
# Your cosmological parameters
H0:
prior:
min: 60
max: 80
ref:
dist: norm
loc: 67.4
scale: 0.5
theory:
camb: null
sampler:
mcmc:
max_tries: 10000
Working with CAMB
LiLit integrates with CAMB through Cobaya’s theory interface:
theory:
camb:
extra_args:
halofit_version: mead
AccuracyBoost: 1.2
lSampleBoost: 1.2
lAccuracyBoost: 1.2
likelihood:
lilit.LiLit:
fields: ["t", "e"]
lmax: [2500, 2000]
lmin: [2, 2]
fsky: [0.7, 0.7]
Working with CLASS
You can also use CLASS as your theory code:
theory:
classy:
extra_args:
non_linear: halofit
likelihood:
lilit.LiLit:
fields: ["t", "e", "b"]
lmax: [2500, 2000, 500]
lmin: [2, 2, 2]
fsky: [0.7, 0.7, 0.6]
Parameter Definitions
When working with tensor modes (B-mode analysis), you need to include the appropriate parameters:
params:
# Standard cosmological parameters
H0:
prior: {min: 60, max: 80}
ref: {dist: norm, loc: 67.4, scale: 0.5}
omega_b:
prior: {min: 0.019, max: 0.025}
ref: {dist: norm, loc: 0.02237, scale: 0.00037}
omega_cdm:
prior: {min: 0.09, max: 0.15}
ref: {dist: norm, loc: 0.1200, scale: 0.0036}
tau_reio:
prior: {min: 0.01, max: 0.10}
ref: {dist: norm, loc: 0.0544, scale: 0.0074}
A_s:
prior: {min: 1.7e-9, max: 3.5e-9}
ref: {dist: norm, loc: 2.1e-9, scale: 3e-11}
n_s:
prior: {min: 0.92, max: 1.02}
ref: {dist: norm, loc: 0.9649, scale: 0.0042}
# Tensor parameters (for B-mode analysis)
r:
prior: {min: 0, max: 0.1}
ref: {dist: norm, loc: 0.01, scale: 0.01}
n_t:
derived: 'lambda r: -r/8' # Consistency relation
Combining Multiple Likelihoods
You can combine LiLit with other cosmological likelihoods:
likelihood:
# LiteBIRD forecast
lilit.LiLit:
fields: ["t", "e", "b"]
lmax: [2500, 2000, 500]
lmin: [2, 2, 2]
fsky: [0.7, 0.7, 0.6]
# Add BAO measurements
bao.sixdf_2011_bao: null
bao.sdss_dr7_mgs: null
# Add supernovae
sn.pantheon: null
Custom Sampler Settings
Configure your sampler appropriately for the problem size:
sampler:
mcmc:
# Number of samples after burn-in
max_tries: 100000
# Convergence criteria
Rminus1_stop: 0.01
Rminus1_cl_stop: 0.2
# Chain settings
learn_every: 20
temperature: 1
# Proposal covariance
covmat: auto
proposal_scale: 2.4
Output Configuration
Set up output appropriately:
output: chains/lilit_run
# Optional: save additional info
debug: false
resume: true
Running from Python
You can also run Cobaya with LiLit from Python:
from cobaya.run import run
info = {
'likelihood': {
'lilit.LiLit': {
'fields': ['t', 'e', 'b'],
'lmax': [2500, 2000, 500],
'lmin': [2, 2, 2],
'fsky': [0.7, 0.7, 0.6],
}
},
'params': {
# ... your parameters
},
'theory': {'camb': None},
'sampler': {'mcmc': {'max_tries': 10000}},
'output': 'chains/my_run'
}
updated_info, sampler = run(info)
Using the Model Interface
For more control, use Cobaya’s model interface:
from cobaya.model import get_model
info = {
# ... your configuration
}
model = get_model(info)
# Evaluate likelihood at a point
point = {
'H0': 67.4,
'omega_b': 0.02237,
'omega_cdm': 0.1200,
# ... other parameters
}
loglike = model.loglike(point)
print(f"Log-likelihood: {loglike}")
# Get derived parameters
derived = model.loglike(point, return_derived=True)
print(f"Derived parameters: {model.provider.get_param_dict()}")
This flexibility allows you to integrate LiLit into complex analysis pipelines and combine it with other cosmological data as needed.