@@ -8,8 +8,8 @@ import DifferentialEquations: solve
88using Dates
99
1010using IncrementalInference
11- import IncrementalInference: getSample, getManifold, DERelative
12- import IncrementalInference: sampleFactor
11+ import IncrementalInference: DERelative, _solveFactorODE!
12+ import IncrementalInference: getSample, sampleFactor, getManifold
1313
1414using DocStringExtensions
1515
@@ -174,12 +174,12 @@ function (cf::CalcFactor{<:DERelative})(measurement, X...)
174174 # need to recalculate new ODE (forward) for change in parameters (solving for 3rd or higher variable)
175175 solveforIdx = 2
176176 # use forward solve for all solvefor not in [1;2]
177- u0pts = getBelief (cf. fullvariables[1 ]) |> getPoints
177+ # u0pts = getBelief(cf.fullvariables[1]) |> getPoints
178178 # update parameters for additional variables
179179 _solveFactorODE! (
180180 meas1,
181181 oderel. forwardProblem,
182- u0pts[cf. _sampleIdx],
182+ X[ 1 ], # u0pts[cf._sampleIdx],
183183 _maketuplebeyond2args (X... )... ,
184184 )
185185 end
@@ -192,13 +192,52 @@ function (cf::CalcFactor{<:DERelative})(measurement, X...)
192192 # FIXME
193193 res = zeros (size (X[2 ], 1 ))
194194 for i = 1 : size (X[2 ], 1 )
195- # diffop( test, reference ) <===> ΔX = test \ reference
195+ # diffop( reference?, test? ) <===> ΔX = test \ reference
196196 res[i] = diffOp[i](X[solveforIdx][i], meas1[i])
197197 end
198198 return res
199199end
200200
201201
202+ # # FIXME see #1025, `multihypo=` will not work properly yet
203+ # function getSample(cf::CalcFactor{<:DERelative})
204+
205+ # oder = cf.factor
206+
207+ # # how many trajectories to propagate?
208+ # # @show getLabel(cf.fullvariables[2]), getDimension(cf.fullvariables[2])
209+ # meas = zeros(getDimension(cf.fullvariables[2]))
210+
211+ # # pick forward or backward direction
212+ # # set boundary condition
213+ # u0pts = if cf.solvefor == 1
214+ # # backward direction
215+ # prob = oder.backwardProblem
216+ # addOp, diffOp, _, _ = AMP.buildHybridManifoldCallbacks(
217+ # convert(Tuple, getManifold(getVariableType(cf.fullvariables[1]))),
218+ # )
219+ # cf._legacyParams[2]
220+ # else
221+ # # forward backward
222+ # prob = oder.forwardProblem
223+ # # buffer manifold operations for use during factor evaluation
224+ # addOp, diffOp, _, _ = AMP.buildHybridManifoldCallbacks(
225+ # convert(Tuple, getManifold(getVariableType(cf.fullvariables[2]))),
226+ # )
227+ # cf._legacyParams[1]
228+ # end
229+
230+ # i = cf._sampleIdx
231+ # # solve likely elements
232+ # # TODO , does this respect hyporecipe ???
233+ # idxArr = (k -> cf._legacyParams[k][i]).(1:length(cf._legacyParams))
234+ # _solveFactorODE!(meas, prob, u0pts[i], _maketuplebeyond2args(idxArr...)...)
235+ # # _solveFactorODE!(meas, prob, u0pts, i, _maketuplebeyond2args(cf._legacyParams...)...)
236+
237+ # return meas, diffOp
238+ # end
239+
240+
202241
203242
204243# # =========================================================================
@@ -221,15 +260,17 @@ function IncrementalInference.sampleFactor(cf::CalcFactor{<:DERelative}, N::Int
221260 addOp, diffOp, _, _ = AMP. buildHybridManifoldCallbacks (
222261 convert (Tuple, getManifold (getVariableType (cf. fullvariables[1 ]))),
223262 )
224- getBelief (cf. fullvariables[2 ]) |> getPoints
263+ # getBelief(cf.fullvariables[2]) |> getPoints
264+ cf. _legacyParams[2 ]
225265 else
226266 # forward backward
227267 prob = oder. forwardProblem
228268 # buffer manifold operations for use during factor evaluation
229269 addOp, diffOp, _, _ = AMP. buildHybridManifoldCallbacks (
230270 convert (Tuple, getManifold (getVariableType (cf. fullvariables[2 ]))),
231271 )
232- getBelief (cf. fullvariables[1 ]) |> getPoints
272+ # getBelief(cf.fullvariables[1]) |> getPoints
273+ cf. _legacyParams[1 ]
233274 end
234275
235276 # solve likely elements
0 commit comments