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 = cosmology.gplus(self.af) # dD / da
|
||||||
f *= self.af / cosmology.d_plus(self.af) # f = dlnD / dlna
|
f *= self.af / cosmology.d_plus(self.af) # f = dlnD / dlna
|
||||||
self.f = f
|
self.f = f
|
||||||
|
|
||||||
|
|
||||||
def generateMBData(self) -> None:
|
def generateMBData(self) -> None:
|
||||||
"""
|
"""
|
||||||
|
@ -530,6 +529,17 @@ def build_gravity_model(state: borg.likelihood.MarkovState, box: borg.forward.Bo
|
||||||
|
|
||||||
return chain
|
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
|
@borg.registerSamplerBuilder
|
||||||
def build_sampler(
|
def build_sampler(
|
||||||
|
@ -551,6 +561,9 @@ def build_sampler(
|
||||||
List of samplers to use.
|
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("Building sampler")
|
||||||
|
|
||||||
myprint("Reading from configuration file: " + borg.getIniConfigurationFilename())
|
myprint("Reading from configuration file: " + borg.getIniConfigurationFilename())
|
||||||
|
@ -581,17 +594,19 @@ def build_sampler(
|
||||||
warnings.warn(s, stacklevel=2)
|
warnings.warn(s, stacklevel=2)
|
||||||
# Remove for later to prevent duplication
|
# Remove for later to prevent duplication
|
||||||
to_sample.remove(p)
|
to_sample.remove(p)
|
||||||
|
|
||||||
def myfun(loop):
|
begin_cosmo = int(config['mcmc']['warmup_cosmo'])
|
||||||
return loop.getStepId() > 1000 # put this in ini file
|
|
||||||
|
|
||||||
if len(params) > 0:
|
if len(params) > 0:
|
||||||
myprint('Adding cosmological parameter sampler')
|
myprint('Adding cosmological parameter sampler')
|
||||||
cosmo_sampler = borg.samplers.ModelParamsSampler(prefix, params, likelihood, chain, initial_values, prior)
|
cosmo_sampler = borg.samplers.ModelParamsSampler(prefix, params, likelihood, chain, initial_values, prior)
|
||||||
cosmo_sampler.setName("cosmo_sampler")
|
cosmo_sampler.setName("cosmo_sampler")
|
||||||
|
_glob_cosmo = cosmo_sampler
|
||||||
all_sampler.append(cosmo_sampler)
|
all_sampler.append(cosmo_sampler)
|
||||||
|
loop.push(cosmo_sampler)
|
||||||
loop.addToConditionGroup("warmup_cosmo", "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
|
# Model parameter sampler
|
||||||
prefix = ""
|
prefix = ""
|
||||||
|
@ -632,11 +647,26 @@ def build_sampler(
|
||||||
else:
|
else:
|
||||||
s = f'Could not find {p} prior, so will not sample'
|
s = f'Could not find {p} prior, so will not sample'
|
||||||
warnings.warn(s, stacklevel=2)
|
warnings.warn(s, stacklevel=2)
|
||||||
|
|
||||||
|
begin_model = int(config['mcmc']['warmup_model'])
|
||||||
|
|
||||||
|
|
||||||
if len(params) > 0:
|
if len(params) > 0:
|
||||||
myprint('Adding model parameter sampler')
|
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
|
@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())
|
likelihood = VelocityBORGLikelihood(chain, fwd_param, fwd_vel, borg.getIniConfigurationFilename())
|
||||||
return likelihood
|
return likelihood
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
TO DO
|
|
||||||
- samplers.MainLoop - add condition that something begins sampling after some number of steps
|
|
||||||
"""
|
|
|
@ -1,4 +1,5 @@
|
||||||
[system]
|
[system]
|
||||||
|
console_output = borg_log
|
||||||
VERBOSE_LEVEL = 2
|
VERBOSE_LEVEL = 2
|
||||||
N0 = 32
|
N0 = 32
|
||||||
N1 = 32
|
N1 = 32
|
||||||
|
@ -17,16 +18,18 @@ seed_cpower = true
|
||||||
hades_sampler_blocked = false
|
hades_sampler_blocked = false
|
||||||
bias_sampler_blocked= true
|
bias_sampler_blocked= true
|
||||||
nmean_sampler_blocked= true
|
nmean_sampler_blocked= true
|
||||||
sigma8_sampler_blocked = true
|
sigma8_sampler_blocked = false
|
||||||
muA_sampler_blocked = true
|
muA_sampler_blocked = false
|
||||||
omega_m_sampler_blocked = true
|
omega_m_sampler_blocked = false
|
||||||
alpha_sampler_blocked = true
|
alpha_sampler_blocked = false
|
||||||
sig_v_sampler_blocked = true
|
sig_v_sampler_blocked = false
|
||||||
bulk_flow_sampler_blocked = true
|
bulk_flow_sampler_blocked = false
|
||||||
ares_heat = 1.0
|
ares_heat = 1.0
|
||||||
|
|
||||||
[mcmc]
|
[mcmc]
|
||||||
number_to_generate = 10
|
number_to_generate = 10
|
||||||
|
warmup_model = 3
|
||||||
|
warmup_cosmo = 7
|
||||||
random_ic = false
|
random_ic = false
|
||||||
init_random_scaling = 0.1
|
init_random_scaling = 0.1
|
||||||
bignum = 1e300
|
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