Skip to content

Commit 539d06b

Browse files
add utility function for initial_parameters warning
1 parent 72ac520 commit 539d06b

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

src/sample.jl

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,20 @@ function StatsBase.sample(
105105
return mcmcsample(rng, model, sampler, parallel, N, nchains; kwargs...)
106106
end
107107

108+
# Utility function to check and warn about common kwargs mistakes
109+
function _check_initial_params_kwarg(kwargs)
110+
if haskey(kwargs, :initial_parameters)
111+
@warn "The `initial_parameters` keyword argument is not recognised; please use `initial_params` instead."
112+
return true
113+
end
114+
return false
115+
end
116+
117+
# Utility function to remove initial_parameters from kwargs after warning
118+
function _filter_initial_params_kwarg(kwargs)
119+
return pairs((; (k => v for (k, v) in pairs(kwargs) if k !== :initial_parameters)...))
120+
end
121+
108122
# Default implementations of regular and parallel sampling.
109123
function mcmcsample(
110124
rng::Random.AbstractRNG,
@@ -122,9 +136,7 @@ function mcmcsample(
122136
kwargs...,
123137
)
124138
# Warn if initial_parameters is passed instead of initial_params
125-
if haskey(kwargs, :initial_parameters)
126-
@warn "The `initial_parameters` keyword argument is not recognised; please use `initial_params` instead."
127-
end
139+
_check_initial_params_kwarg(kwargs)
128140

129141
# Check the number of requested samples.
130142
N > 0 || error("the number of samples must be ≥ 1")
@@ -410,13 +422,9 @@ function mcmcsample(
410422
initial_state=nothing,
411423
kwargs...,
412424
)
413-
# Warn if initial_parameters is passed instead of initial_params
414-
if haskey(kwargs, :initial_parameters)
415-
@warn "The `initial_parameters` keyword argument is not recognised; please use `initial_params` instead."
416-
# Remove initial_parameters from kwargs to prevent it from being passed to single-chain sample
417-
kwargs = pairs((;
418-
(k => v for (k, v) in pairs(kwargs) if k !== :initial_parameters)...
419-
))
425+
# Warn if initial_parameters is passed instead of initial_params and remove it from kwargs
426+
if _check_initial_params_kwarg(kwargs)
427+
kwargs = _filter_initial_params_kwarg(kwargs)
420428
end
421429

422430
# Check if actually multiple threads are used.
@@ -602,13 +610,9 @@ function mcmcsample(
602610
initial_state=nothing,
603611
kwargs...,
604612
)
605-
# Warn if initial_parameters is passed instead of initial_params
606-
if haskey(kwargs, :initial_parameters)
607-
@warn "The `initial_parameters` keyword argument is not recognised; please use `initial_params` instead."
608-
# Remove initial_parameters from kwargs to prevent it from being passed to single-chain sample
609-
kwargs = pairs((;
610-
(k => v for (k, v) in pairs(kwargs) if k !== :initial_parameters)...
611-
))
613+
# Warn if initial_parameters is passed instead of initial_params and remove it from kwargs
614+
if _check_initial_params_kwarg(kwargs)
615+
kwargs = _filter_initial_params_kwarg(kwargs)
612616
end
613617

614618
# Check if actually multiple processes are used.
@@ -750,13 +754,9 @@ function mcmcsample(
750754
initial_state=nothing,
751755
kwargs...,
752756
)
753-
# Warn if initial_parameters is passed instead of initial_params
754-
if haskey(kwargs, :initial_parameters)
755-
@warn "The `initial_parameters` keyword argument is not recognised; please use `initial_params` instead."
756-
# Remove initial_parameters from kwargs to prevent it from being passed to single-chain sample
757-
kwargs = pairs((;
758-
(k => v for (k, v) in pairs(kwargs) if k !== :initial_parameters)...
759-
))
757+
# Warn if initial_parameters is passed instead of initial_params and remove it from kwargs
758+
if _check_initial_params_kwarg(kwargs)
759+
kwargs = _filter_initial_params_kwarg(kwargs)
760760
end
761761

762762
# Check if the number of chains is larger than the number of samples

0 commit comments

Comments
 (0)