eryn 1.2.2__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.
- {eryn-1.2.2 → eryn-1.2.4}/PKG-INFO +1 -1
- {eryn-1.2.2 → eryn-1.2.4}/pyproject.toml +1 -1
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/backends/backend.py +5 -2
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/ensemble.py +9 -2
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/gaussian.py +6 -1
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/utils/utility.py +4 -3
- eryn-1.2.2/src/eryn/tests/__init__.py +0 -0
- eryn-1.2.2/src/eryn/tests/test_eryn.py +0 -1246
- {eryn-1.2.2 → eryn-1.2.4}/README.md +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/CMakeLists.txt +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/__init__.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/backends/__init__.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/backends/hdfbackend.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/git_version.py.in +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/model.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/__init__.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/combine.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/delayedrejection.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/distgen.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/distgenrj.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/group.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/groupstretch.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/mh.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/move.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/mtdistgen.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/mtdistgenrj.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/multipletry.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/red_blue.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/rj.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/stretch.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/moves/tempering.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/pbar.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/prior.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/state.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/utils/__init__.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/utils/periodic.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/utils/stopping.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/utils/transform.py +0 -0
- {eryn-1.2.2 → eryn-1.2.4}/src/eryn/utils/updates.py +0 -0
|
@@ -703,8 +703,11 @@ class Backend(object):
|
|
|
703
703
|
"thermo",
|
|
704
704
|
"ti",
|
|
705
705
|
]:
|
|
706
|
-
logls =
|
|
707
|
-
|
|
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
|
-
|
|
1497
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|