Skip to content

Commit 543e10c

Browse files
committed
ENH: add support for new dynesty api
1 parent 19eb4cd commit 543e10c

4 files changed

Lines changed: 878 additions & 4 deletions

File tree

bilby/core/sampler/dynamic_dynesty.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def nlive(self):
3131

3232
@property
3333
def sampler_init(self):
34-
from dynesty import DynamicNestedSampler
34+
from dynesty.dynesty import DynamicNestedSampler
3535

3636
return DynamicNestedSampler
3737

bilby/core/sampler/dynesty.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,14 @@ def default_kwargs(self):
189189
kwargs["seed"] = None
190190
return kwargs
191191

192+
@property
193+
def new_dynesty_api(self):
194+
try:
195+
from dynesty.sampling import InternalSampler # noqa
196+
return True
197+
except ImportError:
198+
return False
199+
192200
def __init__(
193201
self,
194202
likelihood,
@@ -261,7 +269,20 @@ def sampler_function_kwargs(self):
261269

262270
@property
263271
def sampler_init_kwargs(self):
264-
return {key: self.kwargs[key] for key in self._dynesty_init_kwargs}
272+
kwargs = {key: self.kwargs[key] for key in self._dynesty_init_kwargs}
273+
if self.new_dynesty_api:
274+
from . import dynesty3_utils as dynesty_utils
275+
276+
if kwargs["sample"] == "act-walk":
277+
kwargs["sample"] = dynesty_utils.ACTTrackingEnsembleWalk(**kwargs)
278+
kwargs["bound"] = "none"
279+
elif kwargs["sample"] == "acceptance-walk":
280+
kwargs["sample"] = dynesty_utils.EnsembleWalkSampler(**kwargs)
281+
kwargs["bound"] = "none"
282+
elif kwargs["sample"] == "rwalk":
283+
kwargs["sample"] = dynesty_utils.AcceptanceTrackingRWalk(**kwargs)
284+
kwargs["bound"] = "none"
285+
return kwargs
265286

266287
def _translate_kwargs(self, kwargs):
267288
kwargs = super()._translate_kwargs(kwargs)
@@ -429,7 +450,7 @@ def nlive(self):
429450

430451
@property
431452
def sampler_init(self):
432-
from dynesty import NestedSampler
453+
from dynesty.dynesty import NestedSampler
433454

434455
return NestedSampler
435456

@@ -450,6 +471,9 @@ def _set_sampling_method(self):
450471
Additionally, some combinations of bound/sample/proposals are not
451472
compatible and so we either warn the user or raise an error.
452473
"""
474+
if self.new_dynesty_api:
475+
return
476+
453477
import dynesty
454478

455479
_set_sampling_kwargs((self.nact, self.maxmcmc, self.proposals, self.naccept))
@@ -595,6 +619,10 @@ def _setup_pool(self):
595619
more times than we have processes.
596620
"""
597621
super(Dynesty, self)._setup_pool()
622+
623+
if self.new_dynesty_api:
624+
return
625+
598626
if self.pool is not None:
599627
args = (
600628
[(self.nact, self.maxmcmc, self.proposals, self.naccept)]

0 commit comments

Comments
 (0)