コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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()