Coverage for bilby/core/sampler/fake_sampler.py: 29%
31 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-05-06 04:57 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-05-06 04:57 +0000
1import numpy as np
3from ..result import read_in_result
4from .base_sampler import Sampler
7class FakeSampler(Sampler):
8 """
9 A "fake" sampler that evaluates the likelihood at a list of
10 configurations read from a posterior data file.
12 See base class for parameters. Added parameters are described below.
14 Parameters
15 ==========
16 sample_file: str
17 A string pointing to the posterior data file to be loaded.
18 """
20 sampler_name = "fake_sampler"
22 default_kwargs = dict(
23 verbose=True, logl_args=None, logl_kwargs=None, print_progress=True
24 )
26 def __init__(
27 self,
28 likelihood,
29 priors,
30 sample_file,
31 outdir="outdir",
32 label="label",
33 use_ratio=False,
34 plot=False,
35 injection_parameters=None,
36 meta_data=None,
37 result_class=None,
38 **kwargs
39 ):
40 super(FakeSampler, self).__init__(
41 likelihood=likelihood,
42 priors=priors,
43 outdir=outdir,
44 label=label,
45 use_ratio=False,
46 plot=False,
47 skip_import_verification=True,
48 injection_parameters=None,
49 meta_data=None,
50 result_class=None,
51 **kwargs
52 )
53 self._read_parameter_list_from_file(sample_file)
54 self.result.outdir = outdir
55 self.result.label = label
57 def _read_parameter_list_from_file(self, sample_file):
58 """Read a list of sampling parameters from file.
60 The sample_file should be in bilby posterior HDF5 format.
61 """
62 self.result = read_in_result(filename=sample_file)
64 def run_sampler(self):
65 """Compute the likelihood for the list of parameter space points."""
66 self.sampler = "fake_sampler"
68 # Flushes the output to force a line break
69 if self.kwargs["verbose"]:
70 print("")
72 likelihood_ratios = []
73 posterior = self.result.posterior
75 for i in np.arange(posterior.shape[0]):
76 sample = posterior.iloc[i]
78 self.likelihood.parameters = sample.to_dict()
79 logl = self.likelihood.log_likelihood_ratio()
80 sample.log_likelihood = logl
81 likelihood_ratios.append(logl)
83 if self.kwargs["verbose"]:
84 print(
85 self.likelihood.parameters["log_likelihood"],
86 likelihood_ratios[-1],
87 self.likelihood.parameters["log_likelihood"]
88 - likelihood_ratios[-1],
89 )
91 self.result.log_likelihood_evaluations = np.array(likelihood_ratios)
93 self.result.log_evidence = np.nan
94 self.result.log_evidence_err = np.nan
96 return self.result