From f7e81633ac5523c6fd48494e9e5e2ee039548f91 Mon Sep 17 00:00:00 2001 From: Anowar Shajib Date: Thu, 26 Dec 2024 05:24:09 -0600 Subject: [PATCH 1/4] Refactor NautilusSampler for fixing error in parameter handling --- .../samplers/nautilus/nautilus_sampler.py | 53 +++++++++++-------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/cosmosis/samplers/nautilus/nautilus_sampler.py b/cosmosis/samplers/nautilus/nautilus_sampler.py index 2318e043..22f27e8a 100644 --- a/cosmosis/samplers/nautilus/nautilus_sampler.py +++ b/cosmosis/samplers/nautilus/nautilus_sampler.py @@ -25,8 +25,7 @@ def prior_transform(p): class NautilusSampler(ParallelSampler): parallel_output = False internal_resume = True - sampler_outputs = [('log_weight', float), ('prior', float), - ("post", float)] + sampler_outputs = [("log_weight", float), ("prior", float), ("post", float)] def config(self): global pipeline @@ -36,10 +35,10 @@ def config(self): self.n_live = self.read_ini("n_live", int, 2000) self.n_update = self.read_ini("n_update", int, self.n_live) self.enlarge_per_dim = self.read_ini("enlarge_per_dim", float, 1.1) - self.n_points_min = self.read_ini("n_points_min", int, - self.pipeline.nvaried + 50) - self.split_threshold = self.read_ini("split_threshold", float, - 100.0) + self.n_points_min = self.read_ini( + "n_points_min", int, self.pipeline.nvaried + 50 + ) + self.split_threshold = self.read_ini("split_threshold", float, 100.0) self.n_networks = self.read_ini("n_networks", int, 4) self.n_batch = self.read_ini("n_batch", int, 100) self.seed = self.read_ini("seed", int, -1) @@ -52,8 +51,7 @@ def config(self): self.n_like_max = self.read_ini("n_like_max", int, -1) if self.n_like_max < 0: self.n_like_max = np.inf - self.discard_exploration = self.read_ini( - "discard_exploration", bool, False) + self.discard_exploration = self.read_ini("discard_exploration", bool, False) self.verbose = self.read_ini("verbose", bool, False) self.converged = False @@ -89,26 +87,37 @@ def execute(self): filepath=resume_filepath, resume=self.resume_, pool=self.pool, - blobs_dtype=float + blobs_dtype=float, ) - sampler.run(f_live=self.f_live, - n_shell=self.n_shell, - n_eff=self.n_eff, - n_like_max=self.n_like_max, - discard_exploration=self.discard_exploration, - verbose=self.verbose) + sampler.run( + f_live=self.f_live, + n_shell=self.n_shell, + n_eff=self.n_eff, + n_like_max=self.n_like_max, + discard_exploration=self.discard_exploration, + verbose=self.verbose, + ) results = sampler.posterior(return_blobs=True) - posts = results[2] + results[3][:, 0] - self.distribution_hints.set_from_sample(results[0], posts, log_weights=results[1]) + if isinstance(results[3][0], float): + priors = results[3] + else: + priors = np.array([r[0] for r in results[3]]) + + posts = results[2] + priors + self.distribution_hints.set_from_sample( + results[0], posts, log_weights=results[1] + ) for sample, logwt, logl, blob in zip(*results): - blob = np.atleast_1d(blob) - prior = blob[0] - extra = blob[1:] - logp = logl + prior - self.output.parameters(sample, extra, logwt, prior, logp) + if isinstance(blob, float): + prior = blob + self.output.parameters(sample, logwt, prior, logl + prior) + else: + prior = blob[0] + extra = list(blob)[1:] + self.output.parameters(sample, extra, logwt, prior, logl + prior) self.output.final("efficiency", sampler.n_eff / sampler.n_like) self.output.final("neff", sampler.n_eff) From 41cb69494d3fbd6f0db34e92e210110a6a2f96a3 Mon Sep 17 00:00:00 2001 From: Anowar Shajib Date: Tue, 7 Jan 2025 05:45:16 -0600 Subject: [PATCH 2/4] Revert formatting changes --- .../samplers/nautilus/nautilus_sampler.py | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/cosmosis/samplers/nautilus/nautilus_sampler.py b/cosmosis/samplers/nautilus/nautilus_sampler.py index 22f27e8a..4e3621df 100644 --- a/cosmosis/samplers/nautilus/nautilus_sampler.py +++ b/cosmosis/samplers/nautilus/nautilus_sampler.py @@ -25,7 +25,8 @@ def prior_transform(p): class NautilusSampler(ParallelSampler): parallel_output = False internal_resume = True - sampler_outputs = [("log_weight", float), ("prior", float), ("post", float)] + sampler_outputs = [('log_weight', float), ('prior', float), + ("post", float)] def config(self): global pipeline @@ -35,9 +36,8 @@ def config(self): self.n_live = self.read_ini("n_live", int, 2000) self.n_update = self.read_ini("n_update", int, self.n_live) self.enlarge_per_dim = self.read_ini("enlarge_per_dim", float, 1.1) - self.n_points_min = self.read_ini( - "n_points_min", int, self.pipeline.nvaried + 50 - ) + sampler_outputs = [('log_weight', float), ('prior', float), + ("post", float)] self.split_threshold = self.read_ini("split_threshold", float, 100.0) self.n_networks = self.read_ini("n_networks", int, 4) self.n_batch = self.read_ini("n_batch", int, 100) @@ -51,7 +51,8 @@ def config(self): self.n_like_max = self.read_ini("n_like_max", int, -1) if self.n_like_max < 0: self.n_like_max = np.inf - self.discard_exploration = self.read_ini("discard_exploration", bool, False) + self.discard_exploration = self.read_ini( + "discard_exploration", bool, False) self.verbose = self.read_ini("verbose", bool, False) self.converged = False @@ -87,17 +88,15 @@ def execute(self): filepath=resume_filepath, resume=self.resume_, pool=self.pool, - blobs_dtype=float, + blobs_dtype=float ) - sampler.run( - f_live=self.f_live, - n_shell=self.n_shell, - n_eff=self.n_eff, - n_like_max=self.n_like_max, - discard_exploration=self.discard_exploration, - verbose=self.verbose, - ) + sampler.run(f_live=self.f_live, + n_shell=self.n_shell, + n_eff=self.n_eff, + n_like_max=self.n_like_max, + discard_exploration=self.discard_exploration, + verbose=self.verbose) results = sampler.posterior(return_blobs=True) if isinstance(results[3][0], float): From ecc7b284fba431fe2501d92cee54263659dcf5b0 Mon Sep 17 00:00:00 2001 From: Anowar Shajib Date: Tue, 7 Jan 2025 05:47:10 -0600 Subject: [PATCH 3/4] Revert formatting changes --- cosmosis/samplers/nautilus/nautilus_sampler.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cosmosis/samplers/nautilus/nautilus_sampler.py b/cosmosis/samplers/nautilus/nautilus_sampler.py index 4e3621df..663cee63 100644 --- a/cosmosis/samplers/nautilus/nautilus_sampler.py +++ b/cosmosis/samplers/nautilus/nautilus_sampler.py @@ -36,9 +36,10 @@ def config(self): self.n_live = self.read_ini("n_live", int, 2000) self.n_update = self.read_ini("n_update", int, self.n_live) self.enlarge_per_dim = self.read_ini("enlarge_per_dim", float, 1.1) - sampler_outputs = [('log_weight', float), ('prior', float), - ("post", float)] - self.split_threshold = self.read_ini("split_threshold", float, 100.0) + self.n_points_min = self.read_ini("n_points_min", int, + self.pipeline.nvaried + 50) + self.split_threshold = self.read_ini("split_threshold", float, + 100.0) self.n_networks = self.read_ini("n_networks", int, 4) self.n_batch = self.read_ini("n_batch", int, 100) self.seed = self.read_ini("seed", int, -1) From 1489f0851bcfe707be3da569f6f160a36a71b018 Mon Sep 17 00:00:00 2001 From: Anowar Shajib Date: Tue, 7 Jan 2025 05:48:24 -0600 Subject: [PATCH 4/4] Revert formatting changes --- cosmosis/samplers/nautilus/nautilus_sampler.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cosmosis/samplers/nautilus/nautilus_sampler.py b/cosmosis/samplers/nautilus/nautilus_sampler.py index 663cee63..3ebb9880 100644 --- a/cosmosis/samplers/nautilus/nautilus_sampler.py +++ b/cosmosis/samplers/nautilus/nautilus_sampler.py @@ -106,9 +106,7 @@ def execute(self): priors = np.array([r[0] for r in results[3]]) posts = results[2] + priors - self.distribution_hints.set_from_sample( - results[0], posts, log_weights=results[1] - ) + self.distribution_hints.set_from_sample(results[0], posts, log_weights=results[1]) for sample, logwt, logl, blob in zip(*results): if isinstance(blob, float):