def test_set_staterror_none(clean_ui): """What happens when we set the staterror to None?""" staterror = 0.1 * np.ones(3) syserror = 0.5 * np.ones(3) combo = np.sqrt(0.01 + 0.25) * np.ones(3) ui.load_arrays(1, np.arange(3), np.ones(3), staterror, syserror) ui.set_stat('cstat') assert ui.get_staterror() == pytest.approx(staterror) assert ui.get_syserror() == pytest.approx(syserror) assert ui.get_error() == pytest.approx(combo) # removing the statistical error means that the statistic is used; # for the likelihood stats we just get 1's # ui.set_staterror(None) assert ui.get_staterror() == pytest.approx(np.ones(3)) assert ui.get_syserror() == pytest.approx(syserror) combo = np.sqrt(1 + 0.25) * np.ones(3) assert ui.get_error() == pytest.approx(combo)
def test_set_syserror_array(clean_ui): """What happens when we set the syserror to an array?""" staterror = 0.1 * np.ones(3) syserror = 0.5 * np.ones(3) combo = np.sqrt(0.01 + 0.25) * np.ones(3) y = np.asarray([2, 3, 4]) ui.load_arrays(1, np.arange(3), y, staterror, None) ui.set_stat('cstat') ui.set_syserror(syserror) assert ui.get_staterror() == pytest.approx(staterror) assert ui.get_syserror() == pytest.approx(syserror) assert ui.get_error() == pytest.approx(combo)
def test_set_syserror_scalar_no_fractional(clean_ui): """What happens when we set the syserror to a scalar fractional=False?""" staterror = 0.1 * np.ones(3) syserror = 0.5 * np.ones(3) combo = np.sqrt(0.01 + 0.25) * np.ones(3) ui.load_arrays(1, np.arange(3), np.ones(3), staterror, syserror) ui.set_stat('cstat') ui.set_syserror(3) assert ui.get_staterror() == pytest.approx(staterror) assert ui.get_syserror() == pytest.approx(3 * np.ones(3)) combo = np.sqrt(0.01 + 9) * np.ones(3) assert ui.get_error() == pytest.approx(combo)
def test_set_syserror_scalar_fractional(clean_ui): """What happens when we set the syserror to a scalar fractional=True?""" staterror = 0.1 * np.ones(3) syserror = 0.5 * np.ones(3) combo = np.sqrt(0.01 + 0.25) * np.ones(3) y = np.asarray([2, 3, 4]) ui.load_arrays(1, np.arange(3), y, staterror, syserror) ui.set_stat('cstat') ui.set_syserror(0.4, fractional=True) assert ui.get_staterror() == pytest.approx(staterror) assert ui.get_syserror() == pytest.approx(0.4 * y) combo = np.sqrt(0.01 + 0.16 * y * y) assert ui.get_error() == pytest.approx(combo)
def test_set_syserror_none(clean_ui): """What happens when we set the syserror to None?""" staterror = 0.1 * np.ones(3) syserror = 0.5 * np.ones(3) combo = np.sqrt(0.01 + 0.25) * np.ones(3) ui.load_arrays(1, np.arange(3), np.ones(3), staterror, syserror) ui.set_stat('cstat') ui.set_syserror(None) assert ui.get_staterror() == pytest.approx(staterror) with pytest.raises(DataErr) as err: ui.get_syserror() assert str(err.value) == "data set '1' does not specify systematic errors" combo = staterror assert ui.get_error() == pytest.approx(combo)