Skip to content

Commit

Permalink
BUG: issue warning when prior sampling efficiency is below 1e-3. (#853)
Browse files Browse the repository at this point in the history
* BUG: issue warning when prior sampling efficiency is below 1e-3.

* STY: Fix pep8 in sample_subset_constrained.

* Change logger.debug to logger.warning for prior warning

* Remove warning redundancy

---------

Co-authored-by: Alexandre <[email protected]>
  • Loading branch information
AlexandreGoettel and Alexandre authored Jan 24, 2025
1 parent e7d2095 commit b7be990
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion bilby/core/prior/dict.py
Original file line number Diff line number Diff line change
Expand Up @@ -441,10 +441,26 @@ def constraint_keys(self):
return [k for k, p in self.items() if isinstance(p, Constraint)]

def sample_subset_constrained(self, keys=iter([]), size=None):
efficiency_warning_was_issued = False

def check_efficiency(n_tested, n_valid):
nonlocal efficiency_warning_was_issued
if efficiency_warning_was_issued:
return
efficiency = n_valid / float(n_tested)
if n_tested >= 1e3 and efficiency < 1e-3:
logger.warning("Prior sampling efficiency is very low, please verify its validity.")
efficiency_warning_was_issued = True

n_tested_samples, n_valid_samples = 0, 0
if size is None or size == 1:
while True:
sample = self.sample_subset(keys=keys, size=size)
if self.evaluate_constraints(sample):
is_valid = self.evaluate_constraints(sample)
n_tested_samples += 1
n_valid_samples += int(is_valid)
check_efficiency(n_tested_samples, n_valid_samples)
if is_valid:
return sample
else:
needed = np.prod(size)
Expand All @@ -460,6 +476,9 @@ def sample_subset_constrained(self, keys=iter([]), size=None):
all_samples[key] = np.hstack(
[all_samples[key], samples[key][keep].flatten()]
)
n_tested_samples += needed
n_valid_samples += np.sum(keep)
check_efficiency(n_tested_samples, n_valid_samples)
all_samples = {
key: np.reshape(all_samples[key][:needed], size) for key in keys
}
Expand Down

0 comments on commit b7be990

Please sign in to comment.