@@ -156,6 +156,17 @@ By default, it returns an instance of [`SampleFromPrior`](@ref).
156
156
"""
157
157
initialsampler (spl:: Sampler ) = SampleFromPrior ()
158
158
159
+ function set_values!! (
160
+ varinfo:: AbstractVarInfo , initial_params:: AbstractVector , spl:: AbstractSampler
161
+ )
162
+ throw (
163
+ ArgumentError (
164
+ " `initial_params` must be a vector of type `Union{Real,Missing}`. " *
165
+ " If `initial_params` is a vector of vectors, please flatten it (e.g. using `vcat`) first." ,
166
+ ),
167
+ )
168
+ end
169
+
159
170
function set_values!! (
160
171
varinfo:: AbstractVarInfo ,
161
172
initial_params:: AbstractVector{<:Union{Real,Missing}} ,
@@ -164,7 +175,8 @@ function set_values!!(
164
175
flattened_param_vals = varinfo[spl]
165
176
length (flattened_param_vals) == length (initial_params) || throw (
166
177
DimensionMismatch (
167
- " Provided initial value size ($(length (initial_params)) ) doesn't match the model size ($(length (flattened_param_vals)) )" ,
178
+ " Provided initial value size ($(length (initial_params)) ) doesn't match " *
179
+ " the model size ($(length (flattened_param_vals)) )." ,
168
180
),
169
181
)
170
182
183
195
function set_values!! (
184
196
varinfo:: AbstractVarInfo , initial_params:: NamedTuple , spl:: AbstractSampler
185
197
)
198
+ vars_in_varinfo = keys (varinfo)
199
+ for v in keys (initial_params)
200
+ vn = VarName {v} ()
201
+ if ! (vn in vars_in_varinfo)
202
+ for vv in vars_in_varinfo
203
+ if subsumes (vn, vv)
204
+ throw (
205
+ ArgumentError (
206
+ " The current model contains sub-variables of $v , such as ($vv ). " *
207
+ " Using NamedTuple for initial_params is not supported in such a case. " *
208
+ " Please use AbstractVector for initial_params instead of NamedTuple." ,
209
+ ),
210
+ )
211
+ end
212
+ end
213
+ throw (ArgumentError (" Variable $v not found in the model." ))
214
+ end
215
+ end
186
216
initial_params = NamedTuple (k => v for (k, v) in pairs (initial_params) if v != = missing )
187
217
return update_values!! (
188
218
varinfo, initial_params, map (k -> VarName {k} (), keys (initial_params))
0 commit comments