def test_proposal_no_switch(sampler): """Ensure proposal is not switched""" sampler.mean_acceptance = 0.5 sampler.uninformed_acceptance_threshold = 0.1 sampler.iteration = 10 sampler.maximum_uninformed = 100 assert NestedSampler.check_proposal_switch(sampler) is False
def test_proposal_already_switched(sampler): """Test switching when proposal is already switched""" sampler.mean_acceptance = 0.5 sampler.uninformed_acceptance_threshold = 0.1 sampler.mean_block_acceptance = 0.5 sampler.iteration = 10 sampler.maximum_uninformed = 100 sampler._flow_proposal = MagicMock() sampler._flow_proposal.ns_acceptance = 0.2 sampler.uninformed_sampling = False sampler.proposal = sampler._flow_proposal assert NestedSampler.check_proposal_switch(sampler, force=True) is True assert sampler.proposal is sampler._flow_proposal # If proposal was switched again, acceptance would change assert sampler.proposal.ns_acceptance == 0.2
def test_proposal_switch(sampler, val): """Test the method for switching proposals""" sampler.mean_block_acceptance = 0.5 sampler.mean_acceptance = val[0] sampler.uninformed_acceptance_threshold = 0.5 sampler.iteration = val[1] sampler.maximum_uninformed = 100 sampler._flow_proposal = MagicMock() sampler._flow_proposal.n_pool = 2 sampler._flow_proposal.configure_pool = MagicMock() sampler._uninformed_proposal = MagicMock() sampler._uninformed_proposal.pool = True sampler._uninformed_proposal.close_pool = MagicMock() sampler.proposal = sampler._uninformed_proposal assert NestedSampler.check_proposal_switch(sampler) is True assert sampler.uninformed_sampling is False assert sampler.proposal == sampler._flow_proposal sampler._uninformed_proposal.close_pool.assert_called_once() sampler._flow_proposal.configure_pool.assert_called_once()