Add minimum step before sampling cosmology or model parameters
This commit is contained in:
parent
f483a62dda
commit
c1924ab758
3 changed files with 233 additions and 18 deletions
|
@ -167,7 +167,6 @@ class VelocityBORGLikelihood(borg.likelihood.BaseLikelihood):
|
|||
f = cosmology.gplus(self.af) # dD / da
|
||||
f *= self.af / cosmology.d_plus(self.af) # f = dlnD / dlna
|
||||
self.f = f
|
||||
|
||||
|
||||
def generateMBData(self) -> None:
|
||||
"""
|
||||
|
@ -530,6 +529,17 @@ def build_gravity_model(state: borg.likelihood.MarkovState, box: borg.forward.Bo
|
|||
|
||||
return chain
|
||||
|
||||
_glob_model = None
|
||||
_glob_cosmo = None
|
||||
begin_model = None
|
||||
begin_cosmo = None
|
||||
|
||||
def check_model_sampling(loop):
|
||||
return loop.getStepID() > begin_model
|
||||
|
||||
def check_cosmo_sampling(loop):
|
||||
return loop.getStepID() > begin_cosmo
|
||||
|
||||
|
||||
@borg.registerSamplerBuilder
|
||||
def build_sampler(
|
||||
|
@ -551,6 +561,9 @@ def build_sampler(
|
|||
List of samplers to use.
|
||||
|
||||
"""
|
||||
global _glob_model, _glob_cosmo, begin_model, begin_cosmo
|
||||
borg.print_msg(borg.Level.std, "Hello sampler, loop is {l}, step_id={s}", l=loop, s=loop.getStepID())
|
||||
|
||||
myprint("Building sampler")
|
||||
|
||||
myprint("Reading from configuration file: " + borg.getIniConfigurationFilename())
|
||||
|
@ -581,17 +594,19 @@ def build_sampler(
|
|||
warnings.warn(s, stacklevel=2)
|
||||
# Remove for later to prevent duplication
|
||||
to_sample.remove(p)
|
||||
|
||||
def myfun(loop):
|
||||
return loop.getStepId() > 1000 # put this in ini file
|
||||
|
||||
begin_cosmo = int(config['mcmc']['warmup_cosmo'])
|
||||
|
||||
|
||||
if len(params) > 0:
|
||||
myprint('Adding cosmological parameter sampler')
|
||||
cosmo_sampler = borg.samplers.ModelParamsSampler(prefix, params, likelihood, chain, initial_values, prior)
|
||||
cosmo_sampler.setName("cosmo_sampler")
|
||||
_glob_cosmo = cosmo_sampler
|
||||
all_sampler.append(cosmo_sampler)
|
||||
loop.push(cosmo_sampler)
|
||||
loop.addToConditionGroup("warmup_cosmo", "cosmo_sampler")
|
||||
loop.addConditionToConditionGroup("warmup_cosmo", partial(myfun, loop))
|
||||
loop.addConditionToConditionGroup("warmup_cosmo", partial(check_cosmo_sampling, loop))
|
||||
|
||||
# Model parameter sampler
|
||||
prefix = ""
|
||||
|
@ -632,11 +647,26 @@ def build_sampler(
|
|||
else:
|
||||
s = f'Could not find {p} prior, so will not sample'
|
||||
warnings.warn(s, stacklevel=2)
|
||||
|
||||
begin_model = int(config['mcmc']['warmup_model'])
|
||||
|
||||
|
||||
if len(params) > 0:
|
||||
myprint('Adding model parameter sampler')
|
||||
all_sampler.append(borg.samplers.ModelParamsSampler(prefix, params, likelihood, fwd_param, initial_values, prior))
|
||||
model_sampler = borg.samplers.ModelParamsSampler(prefix, params, likelihood, fwd_param, initial_values, prior)
|
||||
model_sampler.setName("model_sampler")
|
||||
_glob_model = model_sampler
|
||||
loop.push(model_sampler)
|
||||
all_sampler.append(model_sampler)
|
||||
loop.addToConditionGroup("warmup_model", "model_sampler")
|
||||
loop.addConditionToConditionGroup("warmup_model", partial(check_model_sampling, loop))
|
||||
|
||||
print('Warmups:', begin_cosmo, begin_model)
|
||||
print(dir(loop))
|
||||
# quit()
|
||||
|
||||
return all_sampler
|
||||
# return all_sampler
|
||||
return []
|
||||
|
||||
|
||||
@borg.registerLikelihoodBuilder
|
||||
|
@ -659,8 +689,3 @@ def build_likelihood(state: borg.likelihood.MarkovState, info: borg.likelihood.L
|
|||
likelihood = VelocityBORGLikelihood(chain, fwd_param, fwd_vel, borg.getIniConfigurationFilename())
|
||||
return likelihood
|
||||
|
||||
|
||||
"""
|
||||
TO DO
|
||||
- samplers.MainLoop - add condition that something begins sampling after some number of steps
|
||||
"""
|
|
@ -1,4 +1,5 @@
|
|||
[system]
|
||||
console_output = borg_log
|
||||
VERBOSE_LEVEL = 2
|
||||
N0 = 32
|
||||
N1 = 32
|
||||
|
@ -17,16 +18,18 @@ seed_cpower = true
|
|||
hades_sampler_blocked = false
|
||||
bias_sampler_blocked= true
|
||||
nmean_sampler_blocked= true
|
||||
sigma8_sampler_blocked = true
|
||||
muA_sampler_blocked = true
|
||||
omega_m_sampler_blocked = true
|
||||
alpha_sampler_blocked = true
|
||||
sig_v_sampler_blocked = true
|
||||
bulk_flow_sampler_blocked = true
|
||||
sigma8_sampler_blocked = false
|
||||
muA_sampler_blocked = false
|
||||
omega_m_sampler_blocked = false
|
||||
alpha_sampler_blocked = false
|
||||
sig_v_sampler_blocked = false
|
||||
bulk_flow_sampler_blocked = false
|
||||
ares_heat = 1.0
|
||||
|
||||
[mcmc]
|
||||
number_to_generate = 10
|
||||
warmup_model = 3
|
||||
warmup_cosmo = 7
|
||||
random_ic = false
|
||||
init_random_scaling = 0.1
|
||||
bignum = 1e300
|
||||
|
|
187
notebooks/Analyse_chain.ipynb
Normal file
187
notebooks/Analyse_chain.ipynb
Normal file
File diff suppressed because one or more lines are too long
Loading…
Add table
Reference in a new issue