From 0104783968e5c49e6af3b632b6f022487879e55c Mon Sep 17 00:00:00 2001 From: "Johannes U. Lange" Date: Mon, 12 Feb 2024 14:10:09 -0500 Subject: [PATCH 1/3] updated nautilus integration, now requiring 1.0.0 --- cosmosis/samplers/nautilus/nautilus_sampler.py | 11 +++++++---- cosmosis/samplers/nautilus/sampler.yaml | 2 +- setup.py | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cosmosis/samplers/nautilus/nautilus_sampler.py b/cosmosis/samplers/nautilus/nautilus_sampler.py index c4e2a899..2a9f5f2a 100644 --- a/cosmosis/samplers/nautilus/nautilus_sampler.py +++ b/cosmosis/samplers/nautilus/nautilus_sampler.py @@ -49,6 +49,9 @@ def config(self): self.f_live = self.read_ini("f_live", float, 0.01) self.n_shell = self.read_ini("n_shell", int, self.n_batch) self.n_eff = self.read_ini("n_eff", float, 10000.0) + 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.verbose = self.read_ini("verbose", bool, False) @@ -92,6 +95,7 @@ def execute(self): 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) @@ -102,11 +106,10 @@ def execute(self): logp = logl + prior self.output.parameters(sample, extra, logwt, prior, logp) - self.output.final( - "efficiency", sampler.effective_sample_size() / sampler.n_like) - self.output.final("neff", sampler.effective_sample_size()) + self.output.final("efficiency", sampler.n_eff / sampler.n_like) + self.output.final("neff", sampler.n_eff) self.output.final("nsample", len(sampler.posterior()[0])) - self.output.final("log_z", sampler.evidence()) + self.output.final("log_z", sampler.log_z) self.converged = True def is_converged(self): diff --git a/cosmosis/samplers/nautilus/sampler.yaml b/cosmosis/samplers/nautilus/sampler.yaml index 5e4de3d5..cabdcd3d 100644 --- a/cosmosis/samplers/nautilus/sampler.yaml +++ b/cosmosis/samplers/nautilus/sampler.yaml @@ -31,11 +31,11 @@ params: n_networks: (integer; default=4) number of neural networks in each network ensemble n_batch: (integer; default=100) number of likelihood evaluations that are performed at each step seed: (integer, default=-1) random seed, no fixed seed is used if negative - random_state: (int; default=-1) random seed, negative values give a random random seed filepath: (string; default='None') file used for checkpointing, must have .hdf5 ending resume: (bool; default=False) if True, resume from previous run stored in `filepath` f_live: (float; default=0.01) live set evidence fraction when exploration phase terminates n_shell: (int; default=n_batch) minimum number of points in each shell n_eff: (float; default=10000.0) minimum effective sample size + n_like_max: (int; default=-1) maximum number of likelihood calls, negative values are interpreted as infinity discard_exploration: (bool; default=False) whether to discard points drawn in the exploration phase verbose: (bool; default=False) If true, print information about sampler progress diff --git a/setup.py b/setup.py index 554f5957..7bef0977 100644 --- a/setup.py +++ b/setup.py @@ -191,7 +191,7 @@ def run(self): "emcee", "dynesty", "zeus-mcmc", - "nautilus-sampler==0.6.*", + "nautilus-sampler>=1.0.0", "dulwich", "scikit-learn", "future", From cb37d64a10d1766f9e0dce268c4eb0cd42f67368 Mon Sep 17 00:00:00 2001 From: "Johannes U. Lange" Date: Mon, 12 Feb 2024 17:00:19 -0500 Subject: [PATCH 2/3] updated nautilus dependency --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b7d1dba7..cc2bc7a6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,4 +13,4 @@ mpi4py dulwich urllib3 scikit-learn -nautilus-sampler == 0.6.* +nautilus-sampler >= 1.0.1 From dbf664804af66cf4f581b1b75f3f4ff3312a29b8 Mon Sep 17 00:00:00 2001 From: "Johannes U. Lange" Date: Fri, 23 Feb 2024 08:40:42 -0500 Subject: [PATCH 3/3] requiring nautilus 1.0.1 or higher, added log_z error estimate --- cosmosis/samplers/nautilus/nautilus_sampler.py | 1 + setup.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cosmosis/samplers/nautilus/nautilus_sampler.py b/cosmosis/samplers/nautilus/nautilus_sampler.py index 2a9f5f2a..b3c225b8 100644 --- a/cosmosis/samplers/nautilus/nautilus_sampler.py +++ b/cosmosis/samplers/nautilus/nautilus_sampler.py @@ -110,6 +110,7 @@ def execute(self): self.output.final("neff", sampler.n_eff) self.output.final("nsample", len(sampler.posterior()[0])) self.output.final("log_z", sampler.log_z) + self.output.final("log_z_error", 1.0 / np.sqrt(sampler.n_eff)) self.converged = True def is_converged(self): diff --git a/setup.py b/setup.py index 7bef0977..4094223f 100644 --- a/setup.py +++ b/setup.py @@ -191,7 +191,7 @@ def run(self): "emcee", "dynesty", "zeus-mcmc", - "nautilus-sampler>=1.0.0", + "nautilus-sampler>=1.0.1", "dulwich", "scikit-learn", "future",