1010import scipp as sc
1111from easyscience .fitting import AvailableMinimizers
1212from easyscience .fitting import FitResults
13+ from easyscience .fitting import Sampler
1314from easyscience .fitting .multi_fitter import MultiFitter as EasyScienceMultiFitter
1415
1516from easyreflectometry .data import DataSet1D
@@ -419,14 +420,22 @@ def mcmc_sample(
419420 y .append (y_eff )
420421 dy .append (weights )
421422
422- # Delegate the actual BUMPS/DREAM sampling to the core MultiFitter
423+ # Delegate the actual BUMPS/DREAM sampling to the core ``Sampler``.
424+ # The core API moved from ``MultiFitter.mcmc_sample()`` to a dedicated
425+ # ``Sampler`` class: construct it with the configured fitter and the
426+ # bound data, then call ``sample()``. ``Sampler`` handles the
427+ # multi-dataset reshaping internally.
423428 sampler_kwargs = {}
424429 if initializer is not None :
425430 sampler_kwargs ['init' ] = initializer
426- return self .easy_science_multi_fitter .mcmc_sample (
431+
432+ sampler = Sampler (
433+ self .easy_science_multi_fitter ,
427434 x = x ,
428435 y = y ,
429436 weights = dy ,
437+ )
438+ results = sampler .sample (
430439 samples = samples ,
431440 burn = burn ,
432441 thin = thin ,
@@ -435,6 +444,12 @@ def mcmc_sample(
435444 progress_callback = progress_callback ,
436445 abort_test = abort_test ,
437446 )
447+ return {
448+ 'draws' : results .draws ,
449+ 'param_names' : results .param_names ,
450+ 'state' : results .state ,
451+ 'logp' : results .logp ,
452+ }
438453
439454 @property
440455 def chi2 (self ) -> float | None :
0 commit comments