Skip to content

Commit

Permalink
Merge pull request #426 from ReactiveBayes/release-4.0
Browse files Browse the repository at this point in the history
[DO NOT MERGE] Update version to 4.0.0
  • Loading branch information
bvdmitri authored Feb 17, 2025
2 parents fffbe65 + 225903f commit 12f25f0
Show file tree
Hide file tree
Showing 35 changed files with 10,493 additions and 5,059 deletions.
11 changes: 8 additions & 3 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ jobs:
fail-fast: false
matrix:
version:
- '1.10'
- '1.11'
os:
- ubuntu-latest
Expand All @@ -61,11 +62,14 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: ${{ matrix.version }}
- uses: julia-actions/cache@v2
- uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1
env:
USE_DEV: "false"
LOG_USING_RXINFER: "false"
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v4
with:
Expand All @@ -75,7 +79,7 @@ jobs:
- name: Archive test artifacts
uses: actions/upload-artifact@v4
with:
name: test-output
name: test-output-${{ matrix.version }}-${{ matrix.os }}-${{ matrix.arch }}
path: test/_output
test-examples:
name: Examples
Expand All @@ -91,10 +95,10 @@ jobs:
repository: ReactiveBayes/RxInferExamples.jl
path: RxInferExamples.jl
- uses: julia-actions/setup-julia@v2
with:
version: '1.11'
- uses: julia-actions/cache@v1
- name: Build and test examples
env:
LOG_USING_RXINFER: "false"
run: |
julia -e 'using Pkg; Pkg.add("Weave"); Pkg.develop(path="RxInfer.jl"); Pkg.precompile()'
cd RxInferExamples.jl
Expand All @@ -115,4 +119,5 @@ jobs:
- run: make docs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
LOG_USING_RXINFER: "false"

30 changes: 23 additions & 7 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
name = "RxInfer"
uuid = "86711068-29c9-4ff7-b620-ae75d7495b3d"
authors = ["Bagaev Dmitry <d.v.bagaev@tue.nl> and contributors"]
version = "3.10.1"
version = "4.0.0"

[deps]
BayesBase = "b4ee3484-f114-42fe-b91c-797d54a0c67e"
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
DomainSets = "5b8099bc-c8ec-5219-889f-1d9e522a28bf"
ExponentialFamily = "62312e5e-252a-4322-ace9-a5f4bf9b357b"
FastCholesky = "2d5283b6-8564-42b6-bb00-83ed8e915756"
GraphPPL = "b3f8163a-e979-4e85-b43e-1f63d8c8b42c"
HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3"
JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
MacroTools = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
Optim = "429524aa-4258-5aef-a3af-852621145aeb"
Preferences = "21216c6a-2e73-6563-6e65-726566657250"
PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
ReactiveMP = "a194aa59-28ba-4574-a09c-4a745416d6e3"
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
Rocket = "df971d30-c9d6-4b37-b8ff-e965b2cb3a40"
Static = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
TupleTools = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6"
UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"

[weakdeps]
ExponentialFamilyProjection = "17f509fa-9a96-44ba-99b2-1c5f01f0931b"
Expand All @@ -30,25 +37,33 @@ ExponentialFamilyProjection = "17f509fa-9a96-44ba-99b2-1c5f01f0931b"
ProjectionExt = "ExponentialFamilyProjection"

[compat]
BayesBase = "1.1"
BayesBase = "1.5.0"
DataStructures = "0.18"
Dates = "1.10"
Distributions = "0.25"
DomainSets = "0.5.2, 0.6, 0.7"
ExponentialFamily = "1.5"
ExponentialFamilyProjection = "1.3.1"
ExponentialFamily = "2.0.0"
ExponentialFamilyProjection = "2.0.0"
FastCholesky = "1.3.0"
GraphPPL = "~4.6.0"
HTTP = "1.10"
JSON = "0.21.4"
LinearAlgebra = "1.9"
Logging = "1.10.0"
MacroTools = "0.5.6"
Optim = "1.0.0"
PrettyTables = "2.4"
Preferences = "1.4.3"
PrettyTables = "2"
ProgressMeter = "1.0.0"
Random = "1.9"
ReactiveMP = "~4.6.0"
ReactiveMP = "~5.0.0"
Reexport = "1.2.0"
Rocket = "1.8.0"
Static = "0.8.10, 1"
Statistics = "1.10"
TOML = "1.0.3"
TupleTools = "1.2.0"
UUIDs = "1.10"
julia = "1.10"

[extras]
Expand All @@ -69,8 +84,9 @@ Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
ReTestItems = "817f1d60-ba6b-4fd5-9520-3cf149f6a823"
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
StatsFuns = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
TestSetExtensions = "98d24dd4-01ad-11ea-1b02-c9a08f80db04"

[targets]
test = ["Test", "Pkg", "Logging", "InteractiveUtils", "TestSetExtensions", "Coverage", "CpuId", "Dates", "Distributed", "Documenter", "ExponentialFamilyProjection", "Plots", "BenchmarkTools", "PkgBenchmark", "Aqua", "StableRNGs", "StatsFuns", "Optimisers", "ReTestItems"]
test = ["Test", "Pkg", "Logging", "InteractiveUtils", "TestSetExtensions", "TOML", "Coverage", "CpuId", "Dates", "Distributed", "Documenter", "ExponentialFamilyProjection", "Plots", "BenchmarkTools", "PkgBenchmark", "Aqua", "StableRNGs", "StatsFuns", "Optimisers", "ReTestItems"]
38 changes: 31 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ Turing comparison | Scalability performance
:-------------------------:|:-------------------------:
![](benchmarks/plots/lgssm_comparison.svg?raw=true&sanitize=true) | ![](benchmarks/plots/lgssm_scaling.svg?raw=true&sanitize=true)

> [!NOTE]
> See many more examples in the [RxInferExamples.jl](https://reactivebayes.github.io/RxInferExamples.jl/) repository.
### Faster inference with better results

RxInfer.jl not only beats generic-purpose Bayesian inference methods in conjugate models, executes faster, and scales better, but also provides more accurate results. Check out the [documentation](https://reactivebayes.github.io/RxInfer.jl/stable/examples/overview/) for more examples!
Expand Down Expand Up @@ -60,9 +63,6 @@ Optionally, use `] test RxInfer` to validate the installation by running the tes

For more information about `RxInfer.jl` please refer to the [documentation](https://reactivebayes.github.io/RxInfer.jl/stable/).

> [!NOTE]
> `RxInfer.jl` API has been changed in version `3.0.0`. See [Migration Guide](https://reactivebayes.github.io/RxInfer.jl/stable/manuals/migration-guide-v2-v3) for more details.
# Getting Started

> [!NOTE]
Expand Down Expand Up @@ -144,9 +144,6 @@ end

As you can see, `RxInfer` in combination with `GraphPPL` offers a model specification syntax that resembles closely to the mathematical equations defined above.

> [!NOTE]
> `GraphPPL.jl` API has been changed in version `4.0.0`. See [Migration Guide](https://reactivebayes.github.io/GraphPPL.jl/stable/) for more details.
### Inference specification

Once we have defined our model, the next step is to use `RxInfer` API to infer quantities of interests. To do this we can use a generic `infer` function from `RxInfer.jl` that supports static datasets.
Expand Down Expand Up @@ -174,10 +171,11 @@ For a more granular view of our progress and ongoing tasks, check out our [proje

## Ecosystem

The `RxInfer` framework consists of three *core* packages developed by [ReactiveBayes](https://github.com/reactivebayes/):
The `RxInfer` framework consists of four *core* packages developed by [ReactiveBayes](https://github.com/reactivebayes/):

- [`ReactiveMP.jl`](https://github.com/reactivebayes/ReactiveMP.jl) - the underlying message passing-based inference engine
- [`GraphPPL.jl`](https://github.com/reactivebayes/GraphPPL.jl) - model and constraints specification package
- [`ExponentialFamily.jl`](https://github.com/reactivebayes/ExponentialFamily.jl) - package for exponential family distributions
- [`Rocket.jl`](https://github.com/reactivebayes/Rocket.jl) - reactive extensions package for Julia

# Where to go next?
Expand Down Expand Up @@ -227,6 +225,32 @@ Also check out the recorded presentation at the Julia User Group Munich meetup f
</p>


# Telemetry

RxInfer collects completely anonymous telemetry data regarding package usage. This information helps us understand how RxInfer is used and shapes our roadmap to prioritize features and improvements. The telemetry:
- Does not collect any code, data, or environment information, only the fact of `using RxInfer` once per Julia session
- Entirely anonymous
- (Opt-out) Can be disabled for a single Julia session or permanently

You can learn more about it and how to opt-out by visiting our [documentation](https://reactivebayes.github.io/RxInfer.jl/stable/).

## Session Sharing

RxInfer includes an optional session sharing feature that can help us provide better support and improve the package. When you encounter an issue, you can share your session data with us, which includes:
- Model source code and metadata
- Input data characteristics (no actual data)
- Execution timing and success rates
- Error information (if any)
- Environment information (Julia version, OS, etc.)

This information is invaluable for debugging issues and improving RxInfer. Session sharing is:
- Completely optional and disabled by default
- Entirely anonymous
- Only shared when you explicitly choose to do so
- (Opt-in) Can be enabled to send reports automatically when an error occurs. When enabled, still entirely anonymous.

If you're opening a GitHub issue, we encourage you to share your session ID with us - it helps us understand your use case better and provide more accurate support. Learn more about session sharing and how to opt-in in our [documentation](https://reactivebayes.github.io/RxInfer.jl/stable/).

# License

[MIT License](LICENSE) Copyright (c) 2021-2024 BIASlab, 2024-present ReactiveBayes
4,999 changes: 3,881 additions & 1,118 deletions benchmarks/Linear Multivariate Gaussian State Space Model Benchmark.ipynb

Large diffs are not rendered by default.

Loading

2 comments on commit 12f25f0

@bvdmitri
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register

Release notes:

The new major release of RxInfer brings several enhancements and updates to improve your experience.

Breaking Changes

  • The Transition factor node function has been renamed to DiscreteTransition in line with updates from ExponentialFamily.jl 2.0.
  • The MatrixDirichlet is now called DirichletCollection, reflecting changes in ExponentialFamily.jl 2.0.

These changes are part of our ongoing efforts to align with the latest developments in the ExponentialFamily.jl package and to provide a more intuitive and performant implementation of POMDP models.

New Features

  • We’ve introduced RxInfer inference sessions, offering a new approach to analyze performance of RxInfer inference routines as well as optional sharing of such sessions with core developer to improve debugging and support.
  • A built-in callback hook is now available for performance tracking
  • Error hints can now be disabled permanently with Preferences.jl

Improvements

  • We’ve improved the wording, naming, and implementation of Hidden Markov and POMDP examples to make them faster and more user-friendly.
  • As usual, this release includes various bug fixes and minor improvements to enhance overall stability and performance.
  • Dependencies have been updated, for example, in addition to ExponentialFamily.jl the ExponentialFamilyProjection.jl package has also been updated to its latest version, ensuring compatibility and access to new features.

We encourage all users to update to this latest version to take advantage of these improvements. As always, we welcome your feedback and contributions to continue enhancing RxInfer.

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/125294

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v4.0.0 -m "<description of version>" 12f25f0dbae5c82349b93ef8bc6b927baa0c16c1
git push origin v4.0.0

Please sign in to comment.