ReactiveBayes / RxInfer.jl

Julia package for automated Bayesian inference on a factor graph with reactive message passing
MIT License
237 stars 24 forks source link

Pushing custom information to the InferenceResult #216

Open ThijsvdLaar opened 5 months ago

ThijsvdLaar commented 5 months ago

I'm looking for a way to insert "probes" into update rules such that custom information can be passed back to the InferenceResult object. This would allow for a user to inspect (and visualize) information on the rule/message level, which would be helpful when developing custom rule implementations.

I currently have two use-cases in mind: 1) Message statistics can be written to the probe so that the user can inspect (specific) messages; 2) Custom information during rule computations can be returned, for example to check for convergence when iterating within a rule computation.

In a similar way that Meta and Pipeline objects offer context for inbounds collection and rule computation, a probe might be passed to an update rule. Custom information can then be written to the probe, which is returned to the InferenceResult object (perhaps similar to how posteriors are returned).

bvdmitri commented 5 months ago

We offer partial support for this functionality through addons, although the documentation is currently limited. In essence, addons enable the insertion of custom steps both before and after invoking the rule function. The existing use cases for addons align closely with the points you've proposed:

wouterwln commented 3 months ago

@bvdmitri is this a matter of updating documentation or is there additional functionality required?

bvdmitri commented 3 months ago

I think this is a matter of updating the documentation, because both of the use-cases provided can be covered by the addons.