@@ -208,11 +208,24 @@ for argType in [Union{Int, CartesianIndex}, Colon, AbstractArray{Bool}, Any]
208208end
209209
210210function (gpo:: GetParameterObserved{<:Vector} )(:: NotTimeseries , prob)
211- gpo. obsfn (parameter_values (prob), current_time (prob))
211+ # if the method doesn't exist or is an identity function, then `prob` itself
212+ # is the parameter object, so use that and pass `nothing` for the time expecting
213+ # it to not be used
214+ if hasmethod (parameter_values, Tuple{typeof (prob)}) &&
215+ (ps = parameter_values (prob)) != prob
216+ gpo. obsfn (ps, current_time (prob))
217+ else
218+ gpo. obsfn (prob, nothing )
219+ end
212220end
213221function (gpo:: GetParameterObserved{<:Vector, true} )(
214222 buffer:: AbstractArray , :: NotTimeseries , prob)
215- gpo. obsfn (buffer, parameter_values (prob), current_time (prob))
223+ if hasmethod (parameter_values, Tuple{typeof (prob)}) &&
224+ (ps = parameter_values (prob)) != prob
225+ gpo. obsfn (buffer, ps, current_time (prob))
226+ else
227+ gpo. obsfn (buffer, prob, nothing )
228+ end
216229end
217230function (gpo:: GetParameterObserved{<:Vector} )(:: Timeseries , prob)
218231 throw (MixedParameterTimeseriesIndexError (prob, indexer_timeseries_index (gpo)))
@@ -224,10 +237,20 @@ function (gpo::GetParameterObserved{<:Vector, false})(::AbstractArray, ::Timeser
224237 throw (MixedParameterTimeseriesIndexError (prob, indexer_timeseries_index (gpo)))
225238end
226239function (gpo:: GetParameterObserved )(:: NotTimeseries , prob)
227- gpo. obsfn (parameter_values (prob), current_time (prob))
240+ if hasmethod (parameter_values, Tuple{typeof (prob)}) &&
241+ (ps = parameter_values (prob)) != prob
242+ gpo. obsfn (ps, current_time (prob))
243+ else
244+ gpo. obsfn (prob, nothing )
245+ end
228246end
229247function (gpo:: GetParameterObserved )(buffer:: AbstractArray , :: NotTimeseries , prob)
230- gpo. obsfn (buffer, parameter_values (prob), current_time (prob))
248+ if hasmethod (parameter_values, Tuple{typeof (prob)}) &&
249+ (ps = parameter_values (prob)) != prob
250+ gpo. obsfn (buffer, ps, current_time (prob))
251+ else
252+ gpo. obsfn (buffer, prob, nothing )
253+ end
231254 return buffer
232255end
233256function (gpo:: GetParameterObserved )(:: Timeseries , prob)
0 commit comments