def test_restart(backend, dtype): # Run a sampler with the default backend. b = backends.Backend() run_sampler(b, dtype=dtype) sampler1 = run_sampler(b, seed=None, dtype=dtype) with backend() as be: run_sampler(be, dtype=dtype) sampler2 = run_sampler(be, seed=None, dtype=dtype) # Check all of the components. for k in ["chain", "log_prob", "blobs"]: a = getattr(sampler1, "get_" + k)() b = getattr(sampler2, "get_" + k)() _custom_allclose(a, b) last1 = sampler1.get_last_sample() last2 = sampler2.get_last_sample() assert np.allclose(last1.coords, last2.coords) assert np.allclose(last1.log_prob, last2.log_prob) assert all( np.allclose(l1, l2) for l1, l2 in zip(last1.random_state[1:], last2.random_state[1:])) _custom_allclose(last1.blobs, last2.blobs) a = sampler1.acceptance_fraction b = sampler2.acceptance_fraction assert np.allclose(a, b), "inconsistent acceptance fraction"
def test_backend(backend, dtype, blobs): # Run a sampler with the default backend. sampler1 = run_sampler(backends.Backend(), dtype=dtype, blobs=blobs) with backend() as be: sampler2 = run_sampler(be, dtype=dtype, blobs=blobs) values = ["chain", "log_prob"] if blobs: values += ["blobs"] else: assert sampler1.get_blobs() is None assert sampler2.get_blobs() is None # Check all of the components. for k in values: a = getattr(sampler1, "get_" + k)() b = getattr(sampler2, "get_" + k)() _custom_allclose(a, b) last1 = sampler1.get_last_sample() last2 = sampler2.get_last_sample() assert np.allclose(last1.coords, last2.coords) assert np.allclose(last1.log_prob, last2.log_prob) assert all( np.allclose(l1, l2) for l1, l2 in zip(last1.random_state[1:], last2.random_state[1:])) if blobs: _custom_allclose(last1.blobs, last2.blobs) else: assert last1.blobs is None and last2.blobs is None a = sampler1.acceptance_fraction b = sampler2.acceptance_fraction assert np.allclose(a, b), "inconsistent acceptance fraction"
def test_backend(backend): # Run a sampler with the default backend. sampler1 = run_sampler(backends.Backend()) with backend() as be: sampler2 = run_sampler(be) # Check all of the components. for k in ["chain", "log_prob"]: a = getattr(sampler1, "get_" + k)() b = getattr(sampler2, "get_" + k)() assert np.allclose(a, b), "inconsistent {0}".format(k) a = sampler1.acceptance_fraction b = sampler2.acceptance_fraction assert np.allclose(a, b), "inconsistent acceptance fraction"