@@ -157,14 +157,22 @@ By default, it returns an instance of [`SampleFromPrior`](@ref).
157157initialsampler (spl:: Sampler ) = SampleFromPrior ()
158158
159159function set_values!! (
160- varinfo:: AbstractVarInfo ,
161- initial_params:: AbstractVector{<:Union{Real,Missing}} ,
162- spl:: AbstractSampler ,
163- )
160+ varinfo:: AbstractVarInfo , initial_params:: AbstractVector{T} , spl:: AbstractSampler
161+ ) where {T}
162+ if T === Any
163+ throw (
164+ ArgumentError (
165+ " `initial_params` must be a vector of type `Union{Real,Missing}`. " *
166+ " If `initial_params` is a vector of vectors, please flatten it first using `vcat`." ,
167+ ),
168+ )
169+ end
170+
164171 flattened_param_vals = varinfo[spl]
165172 length (flattened_param_vals) == length (initial_params) || throw (
166173 DimensionMismatch (
167- " Provided initial value size ($(length (initial_params)) ) doesn't match the model size ($(length (flattened_param_vals)) )" ,
174+ " Provided initial value size ($(length (initial_params)) ) doesn't match " *
175+ " the model size ($(length (flattened_param_vals)) )." ,
168176 ),
169177 )
170178
183191function set_values!! (
184192 varinfo:: AbstractVarInfo , initial_params:: NamedTuple , spl:: AbstractSampler
185193)
194+ vars_in_varinfo = keys (varinfo)
195+ for v in keys (initial_params)
196+ if ! (v in vars_in_varinfo)
197+ for vv in vars_in_varinfo
198+ if subsumes (VarName {v} (), vv)
199+ throw (
200+ ArgumentError (
201+ " Variable $v not found in model, but it subsumes a variable ($vv ) in the model. " *
202+ " Please use AbstractVector for initial_params instead of NamedTuple." ,
203+ ),
204+ )
205+ end
206+ end
207+
208+ throw (ArgumentError (" Variable $v not found in the model." ))
209+ end
210+ end
186211 initial_params = NamedTuple (k => v for (k, v) in pairs (initial_params) if v != = missing )
187212 return update_values!! (
188213 varinfo, initial_params, map (k -> VarName {k} (), keys (initial_params))
0 commit comments