eryn 1.2.3__tar.gz → 1.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. {eryn-1.2.3 → eryn-1.2.4}/PKG-INFO +1 -1
  2. {eryn-1.2.3 → eryn-1.2.4}/pyproject.toml +1 -1
  3. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/backends/backend.py +5 -2
  4. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/ensemble.py +9 -2
  5. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/gaussian.py +6 -1
  6. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/utils/utility.py +4 -3
  7. eryn-1.2.3/src/eryn/tests/__init__.py +0 -0
  8. eryn-1.2.3/src/eryn/tests/test_eryn.py +0 -1246
  9. {eryn-1.2.3 → eryn-1.2.4}/README.md +0 -0
  10. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/CMakeLists.txt +0 -0
  11. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/__init__.py +0 -0
  12. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/backends/__init__.py +0 -0
  13. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/backends/hdfbackend.py +0 -0
  14. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/git_version.py.in +0 -0
  15. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/model.py +0 -0
  16. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/__init__.py +0 -0
  17. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/combine.py +0 -0
  18. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/delayedrejection.py +0 -0
  19. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/distgen.py +0 -0
  20. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/distgenrj.py +0 -0
  21. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/group.py +0 -0
  22. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/groupstretch.py +0 -0
  23. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/mh.py +0 -0
  24. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/move.py +0 -0
  25. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/mtdistgen.py +0 -0
  26. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/mtdistgenrj.py +0 -0
  27. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/multipletry.py +0 -0
  28. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/red_blue.py +0 -0
  29. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/rj.py +0 -0
  30. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/stretch.py +0 -0
  31. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/moves/tempering.py +0 -0
  32. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/pbar.py +0 -0
  33. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/prior.py +0 -0
  34. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/state.py +0 -0
  35. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/utils/__init__.py +0 -0
  36. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/utils/periodic.py +0 -0
  37. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/utils/stopping.py +0 -0
  38. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/utils/transform.py +0 -0
  39. {eryn-1.2.3 → eryn-1.2.4}/src/eryn/utils/updates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: eryn
3
- Version: 1.2.3
3
+ Version: 1.2.4
4
4
  Summary: Eryn: an omni-MCMC sampling package.
5
5
  Author: Michael Katz
6
6
  Author-email: Michael Katz <mikekatz04@gmail.com>
@@ -8,7 +8,7 @@ requires = [
8
8
  [project]
9
9
  name = "eryn" #@NAMESUFFIX@
10
10
 
11
- version = "1.2.3"
11
+ version = "1.2.4"
12
12
 
13
13
  description = "Eryn: an omni-MCMC sampling package."
14
14
 
@@ -703,8 +703,11 @@ class Backend(object):
703
703
  "thermo",
704
704
  "ti",
705
705
  ]:
706
- logls = np.mean(logls_all, axis=(0, -1))
707
- logZ, dlogZ = thermodynamic_integration_log_evidence(betas, logls)
706
+ logls = logls_all.copy()
707
+ logls[~np.isfinite(logls)] = np.nan
708
+ meanlogls = np.nanmean(logls, axis=(0, -1))
709
+ logZ, dlogZ = thermodynamic_integration_log_evidence(betas, meanlogls)
710
+
708
711
  elif method.lower() in [
709
712
  "stepping stone",
710
713
  "ss",
@@ -1208,6 +1208,9 @@ class EnsembleSampler(object):
1208
1208
  # vectorized because everything is rectangular (no groups to indicate model difference)
1209
1209
  prior_out += prior_out_temp.sum(axis=-1)
1210
1210
 
1211
+ if np.any(np.isnan(prior_out)):
1212
+ raise ValueError("The prior function is returning Nan.")
1213
+
1211
1214
  return prior_out
1212
1215
 
1213
1216
  def compute_log_like(
@@ -1493,8 +1496,9 @@ class EnsembleSampler(object):
1493
1496
  ll[inds_fix_zeros] = self.fill_zero_leaves_val
1494
1497
 
1495
1498
  # deal with blobs
1496
- blobs_out = np.zeros((nwalkers_all, results.shape[1] - 1))
1497
- blobs_out[unique_groups] = results[:, 1:]
1499
+ _blobs_out = np.zeros((nwalkers_all, results.shape[1] - 1))
1500
+ _blobs_out[unique_groups] = results[:, 1:]
1501
+ blobs_out = _blobs_out.reshape(ntemps, nwalkers)
1498
1502
 
1499
1503
  elif results.dtype == "object":
1500
1504
  # TODO: check blobs and add this capability
@@ -1531,6 +1535,9 @@ class EnsembleSampler(object):
1531
1535
  for key in branch_supps_in_2[name_i]
1532
1536
  }
1533
1537
 
1538
+ if np.any(np.isnan(ll)):
1539
+ raise ValueError("The likelihood function is returning Nan.")
1540
+
1534
1541
  # return Likelihood and blobs
1535
1542
  return ll.reshape(ntemps, nwalkers), blobs_out
1536
1543
 
@@ -137,7 +137,12 @@ class _isotropic_proposal(object):
137
137
  def __init__(self, scale, factor, mode):
138
138
  self.index = 0
139
139
  self.scale = scale
140
- self.invscale = np.linalg.inv(np.linalg.cholesky(scale))
140
+
141
+ if isinstance(scale, float):
142
+ self.invscale = 1. / scale
143
+ else:
144
+ self.invscale = np.linalg.inv(np.linalg.cholesky(scale))
145
+
141
146
  if factor is None:
142
147
  self._log_factor = None
143
148
  else:
@@ -237,11 +237,12 @@ def stepping_stone_log_evidence(betas, logls, block_len=50, repeats=100):
237
237
 
238
238
  def calculate_stepping_stone(betas, logls):
239
239
  n = logls.shape[0]
240
- delta_betas = betas[1:] - betas[:-1]
241
240
  n_T = betas.shape[0]
242
- log_ratio = logsumexp(delta_betas * logls[:, :-1], axis=0) - np.log(n)
241
+ delta_betas = betas[1:] - betas[:-1]
242
+ throwaways = np.any(~np.isfinite(logls), axis=1) # a safeguard against non-finite entries
243
+ log_ratio = logsumexp(delta_betas * logls[~throwaways, :-1], axis=0) - (n_T - 1.0)*np.log(n - np.sum(throwaways))
243
244
  return np.sum(log_ratio), log_ratio
244
-
245
+
245
246
  # make sure they are the same length
246
247
  if len(betas) != logls.shape[1]:
247
248
  raise ValueError(
File without changes