def test_stats_calc_stat_wstat_nobg(usestat, usesys): """wstat statistic fails with no background""" statobj = WStat() data, model = setup_single(usestat, usesys) with pytest.raises(StatErr): statobj.calc_stat(data, model)
def test_stats_calc_stat_wstat_pha_nobg(): """wstat statistic fails with no background: PHA dataset""" statobj = WStat() data, model = setup_single_pha(False, False, background=False) with pytest.raises(StatErr): statobj.calc_stat(data, model)
def test_stats_calc_stat_wstat_diffbins(): """wstat statistic fails when src/bg bin sizes do not match""" statobj = WStat() data, model = setup_single_pha(True, False, background=True) # Tweak data to have one-less bin than the background. This # used to be easy but with data validation we need to # create a new object. # data2 = DataPHA("faked", channel=data.channel[:-1], counts=data.counts[:-1], staterror=data.staterror[:-1], grouping=data.grouping[:-1], exposure=data.exposure, backscal=data.backscal, areascal=data.areascal) # We might expect the ARF/RMF calls to fail if we add validation # (to check the ARF/RMF is valid for the PHA dataset). # data2.set_arf(data.get_arf()) data2.set_rmf(data.get_rmf()) data2.set_background(data.get_background()) # There is no Sherpa error for this, which seems surprising with pytest.raises(TypeError) as err: statobj.calc_stat(data2, model) assert str( err.value) == "input array sizes do not match, data: 5 vs group: 4"
def test_stats_calc_stat_wstat_diffbins(): """wstat statistic fails when src/bg bin sizes do not match""" statobj = WStat() data, model = setup_single_pha(True, False, background=True) # Tweak data to have one-less bin than the background data.channel = data.channel[:-1] data.counts = data.channel[:-1] for attr in ['staterror', 'syserror', 'grouping', 'quality', 'backscal']: val = getattr(data, attr) if val is not None: try: setattr(data, attr, val[:-1]) except TypeError: # assume a scalar, so leave be pass # There is no Sherpa error for this, which seems surprising with pytest.raises(TypeError): statobj.calc_stat(data, model)