Skip to content

Releases: ReactiveBayes/ReactiveMP.jl

v6.3.3

Choose a tag to compare

@github-actions github-actions released this 14 Jul 15:18

ReactiveMP v6.3.3

Diff since v6.3.2

Merged pull requests:

v6.3.2

Choose a tag to compare

@github-actions github-actions released this 13 Jul 14:27
82c55bb

ReactiveMP v6.3.2

Diff since v6.3.1

Merged pull requests:

  • Fix spurious extra mean(q_γ) in softdot mean-field average energy (#616) (@bvdmitri)
  • 🤖 Auto-format Julia code (#617) (@github-actions[bot])
  • ci: add 60-minute timeout to the test job (#618) (@bvdmitri)
  • 🤖 Auto-format Julia code (#619) (@github-actions[bot])

Closed issues:

  • softdot mean-field @average_energy has a spurious extra mean(q_γ) on the cross term (#615)

v6.3.1

Choose a tag to compare

@github-actions github-actions released this 06 Jul 15:16

ReactiveMP v6.3.1

Diff since v6.3.0

Merged pull requests:

  • Fix KeyError in InputArgumentsAnnotations for clamped messages (#614) (@gauraaansh)

v6.3.0

Choose a tag to compare

@github-actions github-actions released this 19 Jun 06:53

ReactiveMP v6.3.0

Diff since v6.2.0

Merged pull requests:

v6.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Jun 20:56

ReactiveMP v6.2.0

Diff since v6.1.1

Merged pull requests:

  • Add MatrixNormal rules and a MatrixNormalWishart node (#610) (@wmkouw)
  • 🤖 Auto-format Julia code (#611) (@github-actions[bot])
  • 🤖 Auto-format Julia code (#613) (@github-actions[bot])

Closed issues:

  • [Task]: Minor make test speedups (#533)

v6.1.1

Choose a tag to compare

@github-actions github-actions released this 22 May 09:46

ReactiveMP v6.1.1

Diff since v6.1.0

Merged pull requests:

  • Update GHA dependencies (#601) (@fonsp)
  • fix: improve AddonMemory deprecation error message with migration example (#605) (@ArpanC6)

Closed issues:

  • [Bug]: Uninformative node fails on average energy computation due to MethodError (#604)

v6.1.0

Choose a tag to compare

@github-actions github-actions released this 04 May 09:29

ReactiveMP v6.1.0

Diff since v6.0.0

Merged pull requests:

Closed issues:

  • [Task]: Create show methods for Events (#599)

v6.0.0

Choose a tag to compare

@github-actions github-actions released this 17 Apr 12:39
f46afbf

ReactiveMP v6.0.0

Diff since v5.6.6

This is a major change in ReactiveMP that includes breaking changes, improvements, new documentation sections and many more!

Added

  • AbstractStreamPostprocessor abstraction unifying the old pipeline stages and the per-node scheduler argument under a single concept that postprocesses outbound message streams, marginal streams, and score streams uniformly
  • postprocess_stream_of_outbound_messages, postprocess_stream_of_marginals, postprocess_stream_of_scores entry points with ::Nothing pass-through fallbacks
  • CompositeStreamPostprocessor for chaining multiple postprocessors
  • ScheduleOnStreamPostprocessor — direct successor of ScheduleOnPipelineStage plus the per-node scheduler, applies a Rocket.jl scheduler to all three stream kinds
  • Marginal streams and score streams now go through stream postprocessors (previously only outbound message streams did)
  • Documentation page for stream postprocessors
  • Callback/event system for hooking into message passing steps (rule calls, message products, form constraints, marginal computation)
  • MessageProductContext struct to bundle product computation settings and callbacks
  • Labels for variables (RandomVariable, ConstVariable, DataVariable)
  • Docstrings for variable types, form constraints, and related functions
  • Documentation page for callbacks
  • MethodError hint for mismatched handle_event signatures
  • New annotations system: AnnotationDict, AbstractAnnotations, LogScaleAnnotations, InputArgumentsAnnotations
  • post_rule_annotations! and post_product_annotations! callbacks for annotation processors
  • @logscale value macro for setting log-scale annotations inside @rule bodies
  • getannotations function for Message and Marginal
  • Migration guide for v5 to v6
  • skip_initial(), skip_clamped(), skip_clamped_and_initial() filter operators replacing the MarginalSkipStrategy type hierarchy
  • new_observation!(datavar, value) for pushing observed values into a DataVariable
  • get_stream_of_inbound_messages, get_stream_of_outbound_messages accessors on NodeInterface and IndexedNodeInterface
  • get_stream_of_marginals, set_stream_of_marginals! accessors on variables
  • get_stream_of_predictions, set_stream_of_predictions! accessors on variables
  • set_initial_marginal!, set_initial_message! for seeding variables before inference
  • create_new_stream_of_inbound_messages! for allocating per-connection message streams
  • Docstrings for MessageObservable, MarginalObservable, FunctionalDependencies, collect_functional_dependencies, RandomVariableActivationOptions, DataVariableActivationOptions, FactorNodeActivationOptions, and activate! methods
  • Expanded documentation for variables (stream creation lifecycle per variable type), nodes (interfaces, activation), messages, and marginals

Changed

  • FactorNodeActivationOptions lost its pipeline and scheduler positional fields and gained a single postprocessor field
  • RandomVariableActivationOptions renamed its scheduler field to stream_postprocessor; the default is now nothing (no-op) instead of AsapScheduler()
  • getpipeline(options) and getscheduler(options) replaced by getpostprocessor(options)
  • EqualityChain renamed its pipeline field to postprocessor
  • Switched from ReTestItems to TestItemRunner for tests (#584)
  • Made formatting checks stricter
  • Removed variables/generic.jl; generic variable interface moved into variable.jl
  • Replaced hardcoded DefaultMessageProdFn/DefaultMarginalProdFn with MessageProductContext
  • Message{D, A}Message{D} (type parameter A removed)
  • Marginal{D, A}Marginal{D} (type parameter A removed)
  • Message and Marginal now carry an AnnotationDict instead of a typed addons tuple
  • Rules no longer return (result, addons) tuples — just the result
  • @call_rule no longer supports return_addons option; use annotations keyword with AnnotationDict
  • MessageMapping.addons field → MessageMapping.annotations
  • MessageProductContext gained annotations field for product-time annotation processors
  • messagein(interface)get_stream_of_inbound_messages(interface)
  • messageout(interface)get_stream_of_outbound_messages(interface)
  • getmarginal(variable) / getmarginalsget_stream_of_marginals(variable)
  • getprediction(variable) / getpredictionsget_stream_of_predictions(variable)
  • setmarginal!(variable, value)set_initial_marginal!(variable, value)
  • setmessage!(variable, value)set_initial_message!(variable, value)
  • update!(datavar, value)new_observation!(datavar, value)

Removed

  • AbstractPipelineStage, EmptyPipelineStage, CompositePipelineStage, ScheduleOnPipelineStage, apply_pipeline_stage, collect_pipeline, + composition — replaced by the AbstractStreamPostprocessor abstraction (see migration guide)
  • LoggerPipelineStage — equivalent behaviour can be implemented via callbacks
  • AsyncPipelineStage — use ScheduleOnStreamPostprocessor(AsyncScheduler()) instead
  • DiscontinuePipelineStage — was unused; implement a custom AbstractStreamPostprocessor if needed
  • schedule_updates(vars; pipeline_stage = ...) — construct a ScheduleOnStreamPostprocessor and pass it through the activation options instead
  • getaddons — use getannotations instead
  • getlogscale(::Message), getlogscale(::Marginal) — use getlogscale(getannotations(...)) instead
  • getmemory, getmemoryaddon — use get_rule_input_arguments(getannotations(...)) instead
  • AddonLogScale — replaced by LogScaleAnnotations (calling AddonLogScale() throws a descriptive error)
  • AddonMemory — replaced by InputArgumentsAnnotations (calling AddonMemory() throws a descriptive error)
  • AddonDebug — use callbacks instead
  • AbstractAddon, multiply_addons, @invokeaddon
  • message_mapping_addons, message_mapping_addon helper functions
  • MarginalSkipStrategy abstract type and SkipClamped, SkipInitial, SkipClampedAndInitial, IncludeAll subtypes — use skip_clamped(), skip_initial(), skip_clamped_and_initial() filter operators instead
  • apply_skip_filter, as_marginal_observable — no longer part of the public API
  • messagein, messageout — use get_stream_of_inbound_messages, get_stream_of_outbound_messages
  • getmarginal, getmarginals, getprediction, getpredictions — use get_stream_of_marginals, get_stream_of_predictions
  • setmarginal!, setmarginals!, setmessage!, setmessages! — use set_initial_marginal!, set_initial_message!
  • update! — use new_observation!
  • create_messagein! — use create_new_stream_of_inbound_messages!

Merged pull requests:

  • 🤖 Auto-format Julia code (#583) (@github-actions[bot])
  • use TestItemRunner instead of ReTestItems (#584) (@bvdmitri)
  • 🤖 Auto-format Julia code (#585) (@github-actions[bot])
  • Implement event handler system for message passing and callbacks (#587) (@bvdmitri)
  • Trace ID to link before and after events (#589) (@fonsp)
  • gitignore agents md (#591) (@fonsp)
  • Run make format (#593) (@fonsp)
  • Use Base.sprint for rule_tests (#594) (@fonsp)
  • Better trace ids (#595) (@bvdmitri)
  • Refactor addon system to annotations (#596) (@bvdmitri)
  • 🤖 Auto-format Julia code (#597) (@github-actions[bot])
  • Release 6 (#600) (@bvdmitri)

v5.6.6

Choose a tag to compare

@github-actions github-actions released this 13 Mar 10:38
f9b1c1f

ReactiveMP v5.6.6

Diff since v5.6.5

Merged pull requests:

v5.6.5

Choose a tag to compare

@github-actions github-actions released this 02 Feb 14:57
3b97062

ReactiveMP v5.6.5

Diff since v5.6.4

Merged pull requests:

  • 294 rule marginalrule and average energy should check interface names (#545) (@abpolym)
  • Add issue templates to ReactiveMP (#558) (@wouterwln)
  • Remove vibe coded required fields (#562) (@wouterwln)
  • Remove Requires.jl dependency (#564) (@wouterwln)
  • MvNormalWishart node implementation (#565) (@esther-van-pelt)
  • Fix documentation build (#567) (@bvdmitri)
  • 🤖 Auto-format Julia code (#568) (@github-actions[bot])
  • 🤖 Auto-format Julia code (#570) (@github-actions[bot])
  • Optimize double loops in CT node (#571) (@Nimrais)
  • 🤖 Auto-format Julia code (#572) (@github-actions[bot])
  • CompatHelper: bump compat for Optim to 2, (keep existing compat) (#574) (@github-actions[bot])

Closed issues:

  • Problems with Laplace approximation method (#74)
  • Propagate log of Categorical distribution parameters? (#75)
  • Allow user to choose between safe/unsafe/fastcholesky inverse in Gaussian nodes (#76)
  • Importance sampling for GammaMixture support. (#84)
  • Complete optimization procedure for multivariate and matrix variate random variables. (#133)
  • Multiple RequireMarginals with SP and PointMass constraint do not update/ask for missing rule (#242)
  • Extend logpdf messages with importance distributions (#252)
  • PointMass inputs do not carry scale factors. (#254)
  • Addons do not combine nicely with functional form constraints (#258)
  • Add inplace mul! with StandardBasisVector (#288)
  • @rule, @marginalrule and @average_energy should check interface names (#294)
  • Free energy computations with UniformScaling are broken (#340)
  • Speed up backward message for Linearization (#342)
  • The computations of rules for ContinuousTransition node can be improved (#368)
  • Many nodes have undocumented functional form (#400)
  • [Task]: MvNormalWishart node to enable joint μ–Λ priors for NormalMixture (#542)
  • Deprecated extension? (#547)