Skip to content

Commit 86300cb

Browse files
warn when DE-MCMC is used with too few chains
closes pymc-devs#3719
1 parent ba04a5e commit 86300cb

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

pymc3/sampling.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from .backends.ndarray import NDArray
1818
from .distributions.distribution import draw_values
1919
from .model import modelcontext, Point, all_continuous, Model
20-
from .step_methods import (NUTS, HamiltonianMC, Metropolis, BinaryMetropolis,
20+
from .step_methods import (NUTS, HamiltonianMC, Metropolis, DEMetropolis, BinaryMetropolis,
2121
BinaryGibbsMetropolis, CategoricalGibbsMetropolis,
2222
Slice, CompoundStep, arraystep)
2323
from .util import update_start_vals, get_untransformed_name, is_transformed_name, get_default_varnames
@@ -420,7 +420,16 @@ def sample(draws=500, step=None, init='auto', n_init=200000, start=None, trace=N
420420
raise
421421
if not parallel:
422422
if has_population_samplers:
423+
has_demcmc = np.any([
424+
isinstance(m, DEMetropolis)
425+
for m in (step.methods if isinstance(step, CompoundStep) else [step])
426+
])
423427
_log.info('Population sampling ({} chains)'.format(chains))
428+
if has_demcmc and chains <= model.ndim:
429+
warnings.warn(
430+
'DEMetropolis should be used with more chains than dimensions! '
431+
'(The model has {} dimensions.)'.format(model.ndim), UserWarning
432+
)
424433
_print_step_hierarchy(step)
425434
trace = _sample_population(**sample_args, parallelize=cores > 1)
426435
else:

0 commit comments

Comments
 (0)