Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
'modifiers': [
{
'name': 'bkg_norm',
'type': 'histosys',
'data': {
'lo_data': source['bindata']['bkgsys_dn'],
'hi_data': source['bindata']['bkgsys_up'],
},
}
],
},
],
}
]
}
pdf = pyhf.Model(spec)
data = source['bindata']['data'] + pdf.config.auxdata
assert pytest.approx([-17.648827643136507], rel=5e-5) == pyhf.tensorlib.tolist(
pdf.logpdf(pdf.config.suggested_init(), data)
)
def test_optim_uncerts(backend, source, spec, mu):
pdf = pyhf.Model(spec)
data = source['bindata']['data'] + pdf.config.auxdata
init_pars = pdf.config.suggested_init()
par_bounds = pdf.config.suggested_bounds()
optim = pyhf.optimizer
result = optim.minimize(pyhf.infer.mle.twice_nll, data, pdf, init_pars, par_bounds)
assert pyhf.tensorlib.tolist(result)
result = optim.minimize(
pyhf.infer.mle.twice_nll,
data,
pdf,
init_pars,
par_bounds,
},
{
'name': 'background',
'data': source['bindata']['bkg'],
'modifiers': [
{'name': 'bkg_norm', 'type': 'shapesys', 'data': [10, 10]}
],
},
],
}
],
'parameters': [
{'name': 'bkg_norm', 'inits': [99, 99], 'bounds': [[95, 95], [95, 95]]}
],
}
pdf = pyhf.Model(spec)
assert pdf.config.param_set('bkg_norm').suggested_bounds == [[95, 95], [95, 95]]
assert pdf.config.param_set('bkg_norm').suggested_init == [99, 99]
}
],
},
{
'name': 'bkg3',
'data': [20.0, 15.0],
'modifiers': [
{'name': 'bkg_norm', 'type': 'shapesys', 'data': [10, 10]}
],
},
],
}
]
}
m = pyhf.Model(spec)
def slow(self, auxdata, pars):
tensorlib, _ = pyhf.get_backend()
# iterate over all constraints order doesn't matter....
start_index = 0
summands = None
for cname in self.config.auxdata_order:
parset, parslice = (
self.config.param_set(cname),
self.config.par_slice(cname),
)
end_index = start_index + parset.n_parameters
thisauxdata = auxdata[start_index:end_index]
start_index = end_index
if parset.pdf_type == 'normal':
paralphas = pars[parslice]
'name': 'sample',
'data': [10.0],
'modifiers': [
{
'name': 'modifier',
'type': 'histosys',
'data': {'lo_data': [], 'hi_data': []},
}
],
}
],
}
]
}
with pytest.raises(pyhf.exceptions.InvalidSpecification):
pyhf.Model(spec)
def test_import_histosys():
parsed_xml = pyhf.readxml.parse(
'validation/xmlimport_input2/config/example.xml', 'validation/xmlimport_input2'
)
# build the spec, strictly checks properties included
spec = {
'channels': parsed_xml['channels'],
'parameters': parsed_xml['measurements'][0]['config']['parameters'],
}
pdf = pyhf.Model(spec, poiname='SigXsecOverSM')
data = [
binvalue
for k in pdf.spec['channels']
for binvalue in next(
obs for obs in parsed_xml['observations'] if obs['name'] == k['name']
)['data']
] + pdf.config.auxdata
channels = {channel['name']: channel for channel in pdf.spec['channels']}
samples = {
channel['name']: [sample['name'] for sample in channel['samples']]
for channel in pdf.spec['channels']
}
assert channels['channel2']['samples'][0]['modifiers'][0]['type'] == 'lumi'
'modifiers': [
{'name': 'mu', 'type': 'normfactor', 'data': None}
],
},
{
'name': 'background',
'data': source['bindata']['bkg'],
'modifiers': [
{'name': 'bkg_norm', 'type': 'shapesys', 'data': [10, 10]}
],
},
],
}
]
}
pdf = pyhf.Model(spec)
pars = [None, None]
pars[pdf.config.par_slice('mu')], pars[pdf.config.par_slice('bkg_norm')] = [
[0.0],
[1.0, 1.0],
]
assert pdf.expected_data(pars, include_auxdata=False).tolist() == [100, 150]
pars[pdf.config.par_slice('mu')], pars[pdf.config.par_slice('bkg_norm')] = [
[0.0],
[1.1, 1.0],
]
assert pdf.expected_data(pars, include_auxdata=False).tolist() == [100 * 1.1, 150]
pars[pdf.config.par_slice('mu')], pars[pdf.config.par_slice('bkg_norm')] = [
{
'name': 'background',
'data': source['bindata']['bkg'],
'modifiers': [
{
'name': 'bkg_norm',
'type': 'normsys',
'data': {'lo': 0.9, 'hi': 1.1},
}
],
},
],
}
]
}
pdf = pyhf.Model(spec)
pars = [None, None]
pars[pdf.config.par_slice('mu')], pars[pdf.config.par_slice('bkg_norm')] = [
[0.0],
[0.0],
]
assert np.allclose(
pyhf.tensorlib.tolist(pdf.expected_data(pars, include_auxdata=False)),
[100, 150],
)
pars[pdf.config.par_slice('mu')], pars[pdf.config.par_slice('bkg_norm')] = [
[0.0],
[1.0],
]
assert np.allclose(
def test_sample_missing_all_modifiers():
spec = {
'channels': [
{
'name': 'channel',
'samples': [{'name': 'sample', 'data': [10.0], 'modifiers': []}],
}
]
}
with pytest.raises(pyhf.exceptions.InvalidModel):
pyhf.Model(spec)
tmpdata = tmpdir.mkdir('data')
tmpxml = tmpdir.join('FitConfig.xml')
tmpxml.write(
pyhf.writexml.writexml(
parsed_xml_before,
tmpconfig.strpath,
tmpdata.strpath,
os.path.join(tmpdir.strpath, 'FitConfig'),
).decode('utf-8')
)
parsed_xml_after = pyhf.readxml.parse(tmpxml.strpath, tmpdir.strpath)
spec = {
'channels': parsed_xml_after['channels'],
'parameters': parsed_xml_after['measurements'][0]['config']['parameters'],
}
pdf_after = pyhf.Model(spec, poiname='SigXsecOverSM')
data_before = [
binvalue
for k in pdf_before.config.channels
for binvalue in next(
obs for obs in parsed_xml_before['observations'] if obs['name'] == k
)['data']
] + pdf_before.config.auxdata
data_after = [
binvalue
for k in pdf_after.config.channels
for binvalue in next(
obs for obs in parsed_xml_after['observations'] if obs['name'] == k
)['data']
] + pdf_after.config.auxdata