Beispiel #1
0
def test_get_yields(example_spec):
    model, data = model_tools.model_and_data(example_spec)
    fit_results = fitter.fit(model, data)

    y = yld.get_yields(example_spec, fit_results)
    for region in y.regions:
        assert np.allclose(y.yields[region], np.asarray([690.99844915]))
        assert np.allclose(ak.to_list(y.uncertainties[region]),
                           [26.278787667809468])
        assert np.allclose(y.data[region], np.asarray([691]))
    assert y.regions == ['SR']
    assert y.samples == ['signal']
Beispiel #2
0
def test_fit(mock_print, example_spec, example_spec_multibin):
    model, data = model_tools.model_and_data(example_spec)
    fit_results = fitter.fit(model, data)
    mock_print.assert_called_once()
    assert np.allclose(fit_results.bestfit, [1.1, 5.58731303])
    assert np.allclose(fit_results.uncertainty, [0.0, 0.21248646])
    assert fit_results.labels == ["staterror_SR", "mu_Sig"]
    assert np.allclose(fit_results.best_twice_nll, 6.850287450660111)
    assert np.allclose(fit_results.corr_mat, [[0.0, 0.0], [0.0, 1.0]])

    # # TODO: Asimov fit, with fixed gamma (fixed not to Asimov MLE)
    # model, data = model_tools.model_and_data(example_spec, asimov=True)
    # fit_results = fitter.fit(model, data)
    # # the gamma factor is multiplicative and fixed to 1.1, so the
    # # signal strength needs to be 1/1.1 to compensate
    # assert np.allclose(fit_results.bestfit, [1.1, 0.90917877])
    # assert np.allclose(fit_results.uncertainty, [0.0, 0.12623179])
    # assert fit_results.labels == ["staterror_SR", "mu_Sig"]
    # assert np.allclose(fit_results.best_twice_nll, 5.68851093)
    # assert np.allclose(fit_results.corr_mat, [[0.0, 0.0], [0.0, 1.0]])

    # parameters held constant via keyword argument
    model, data = model_tools.model_and_data(example_spec_multibin)
    init_pars = model.config.suggested_init()
    init_pars[0] = 0.9
    init_pars[1] = 1.1
    fixed_pars = model.config.suggested_fixed()
    fixed_pars[0] = True
    fixed_pars[1] = True
    fit_results = fitter.fit(model,
                             data,
                             init_pars=init_pars,
                             fixed_pars=fixed_pars)
    assert np.allclose(fit_results.bestfit, [0.9, 1.1, 1.11996446, 0.96618774])
    assert np.allclose(fit_results.uncertainty,
                       [0.0, 0.0, 0.1476617, 0.17227148])
    assert np.allclose(fit_results.best_twice_nll, 11.2732492)