Skip to content

Commit

Permalink
Lowered samples, removed comparison of two different amount of chains
Browse files Browse the repository at this point in the history
  • Loading branch information
PaulJonasJost authored and dweindl committed May 4, 2024
1 parent e4b15be commit d6030a4
Showing 1 changed file with 33 additions and 34 deletions.
67 changes: 33 additions & 34 deletions test/sample/test_sample.py
Original file line number Diff line number Diff line change
Expand Up @@ -793,42 +793,41 @@ def test_thermodynamic_integration():
problem = gaussian_problem()

# approximation should be better for more chains
for n_chains, tol in zip([10, 20], [1, 1e-1]):
sampler = sample.ParallelTemperingSampler(
internal_sampler=sample.AdaptiveMetropolisSampler(),
options={"show_progress": False, "beta_init": "beta_decay"},
n_chains=n_chains,
)
n_chains = 10
tol = 1
sampler = sample.ParallelTemperingSampler(
internal_sampler=sample.AdaptiveMetropolisSampler(),
options={"show_progress": False, "beta_init": "beta_decay"},
n_chains=n_chains,
)

result = optimize.minimize(
problem,
progress_bar=False,
)
result = optimize.minimize(
problem,
progress_bar=False,
)

result = sample.sample(
problem,
n_samples=10000,
result=result,
sampler=sampler,
)
result = sample.sample(
problem,
n_samples=2000,
result=result,
sampler=sampler,
)

# compute the log evidence using trapezoid and simpson rule
log_evidence = sampler.compute_log_evidence(result, method="trapezoid")
log_evidence_not_all = sampler.compute_log_evidence(
result, method="trapezoid", use_all_chains=False
)
log_evidence_simps = sampler.compute_log_evidence(
result, method="simpson"
)
# compute the log evidence using trapezoid and simpson rule
log_evidence = sampler.compute_log_evidence(result, method="trapezoid")
log_evidence_not_all = sampler.compute_log_evidence(
result, method="trapezoid", use_all_chains=False
)
log_evidence_simps = sampler.compute_log_evidence(result, method="simpson")

# compute evidence
evidence = quad(
lambda x: 1 / (problem.ub - problem.lb) * np.exp(gaussian_llh(x)),
a=problem.lb,
b=problem.ub,
)
# compute evidence
evidence = quad(
lambda x: 1 / (problem.ub - problem.lb) * np.exp(gaussian_llh(x)),
a=problem.lb,
b=problem.ub,
)

# compare to known value
assert np.isclose(log_evidence, np.log(evidence[0]), atol=tol)
assert np.isclose(log_evidence_not_all, np.log(evidence[0]), atol=tol)
assert np.isclose(log_evidence_simps, np.log(evidence[0]), atol=tol)
# compare to known value
assert np.isclose(log_evidence, np.log(evidence[0]), atol=tol)
assert np.isclose(log_evidence_not_all, np.log(evidence[0]), atol=tol)
assert np.isclose(log_evidence_simps, np.log(evidence[0]), atol=tol)

0 comments on commit d6030a4

Please sign in to comment.