Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
l = -0.5 * Fit.statistic
#print("like = %.1f" % l)
if not numpy.isfinite(l):
return -1e100
return l
# run multinest
if Fit.statMethod.lower() not in BXASolver.allowed_stats:
raise RuntimeError('ERROR: not using cash (Poisson likelihood) for Poisson data! set Fit.statMethod to cash before analysing (currently: %s)!' % Fit.statMethod)
n_dims = len(self.paramnames)
resume = kwargs.pop('resume', False)
Lepsilon = kwargs.pop('Lepsilon', 0.1)
with XSilence():
self.results = solve(log_likelihood, self.prior_function, n_dims,
paramnames=self.paramnames,
outputfiles_basename=self.outputfiles_basename,
resume=resume, Lepsilon=Lepsilon,
n_live_points=n_live_points, evidence_tolerance=evidence_tolerance,
seed=-1, max_iter=0, wrapped_params=wrapped_params, **kwargs
)
self.posterior = self.results['samples']
chainfilename = '%schain.fits' % self.outputfiles_basename
store_chain(chainfilename, self.transformations, self.posterior)
xspec.AllChains.clear()
xspec.AllChains += chainfilename
# set current parameters to best fit
self.set_best_fit()
return self.results
#print "%.1f" % l
return l
except Exception as e:
print('Exception in log_likelihood function: ', e)
for i, p in enumerate(self.parameters):
print(' Parameter %10s: %f --> %f [%f..%f]' % (p.fullname, p.val, cube[i], p.min, p.max))
#import sys
#sys.exit(-127)
raise Exception("Model evaluation problem") from e
return -1e300
n_dims = len(self.parameters)
resume = kwargs.pop('resume', False)
Lepsilon = kwargs.pop('Lepsilon', 0.1)
self.results = solve(log_likelihood, prior_transform, n_dims,
paramnames=self.paramnames,
outputfiles_basename=self.outputfiles_basename,
resume=resume, Lepsilon=Lepsilon,
n_live_points=n_live_points, evidence_tolerance=evidence_tolerance,
seed=-1, max_iter=0, wrapped_params=wrapped_params, **kwargs
)
self.set_best_fit()
return self.results
# We need to check if the MCMC
# chains will have a place on
# the disk to write and if not,
# create one
chain_name = self._kwargs.pop("chain_name")
if threeML_config["parallel"]["use-parallel"]:
raise RuntimeError(
"If you want to run ultranest in parallell you need to use an ad-hoc method"
)
else:
sampler = ultranest.ReactiveNestedSampler(
param_names,
loglike,
transform=ultranest_prior,
log_dir=chain_name,
vectorized=False,
resume=self._resume,
wrapped_params=self._wrapped_params,
)
sampler.run(show_status=loud, **self._kwargs)
process_fit = False
if using_mpi:
# if we are running in parallel and this is not the
ndata_columns = 6 if Plot.background else 4
ncomponents = content.shape[1] - ndata_columns
if data[0] is None:
data[0] = content[:,0:ndata_columns]
model_contributions = []
for component in range(ncomponents):
y = content[:, ndata_columns + component]
kwargs = dict(drawstyle='steps', alpha=0.1, color='k')
kwargs.update(plot_args[component])
label = component_names[component]
# we only label the first time we enter here
# otherwise we get lots of entries in the legend
component_names[component] = ''
if component >= len(bands):
bands.append(PredictionBand(xmid,
shadeargs=dict(color=kwargs['color']),
lineargs=dict(color=kwargs['color'])))
if label != 'ignore':
#plt.plot(xmid, y, label=label, **kwargs)
bands[component].add(y)
model_contributions.append(y)
models.append(model_contributions)
def plot_unconvolved_components(content):
xmid = content[:,0]
ncomponents = content.shape[1] - 2
for component in range(ncomponents):
y = content[:, 2 + component]
kwargs = dict(drawstyle='steps', alpha=0.1, color='k')
kwargs.update(plot_args[component])
label = component_names[component]
# we only label the first time we enter here
# otherwise we get lots of entries in the legend
component_names[component] = ''
if component >= len(bands):
bands.append(PredictionBand(xmid,
shadeargs=dict(color=kwargs['color']),
lineargs=dict(color=kwargs['color'])))
if label != 'ignore':
#plt.plot(xmid, y, label=label, **kwargs)
bands[component].add(y)