Contributing
Contributions to RxGP.jl are welcome! This page covers how to get started.
Setting up a development environment
Clone the repository:
git clone https://github.com/ReactiveBayes/RxGP.jl.git cd RxGP.jlActivate and instantiate the project:
using Pkg Pkg.activate(".") Pkg.instantiate()Run the test suite:
Pkg.test()
Project structure
| Directory | Contents |
|---|---|
src/ | Main source code |
src/SparseGaussianProcessnode/ | Node definitions and average energy computations |
src/rule/ | Message passing update rules, organised by node and edge |
src/helper_functions/ | Kernels, caching, approximation, prediction, meta, utilities |
test/ | Unit tests mirroring the src/ structure |
examples/ | Jupyter notebook examples |
docs/ | Documentation (Documenter.jl) |
Adding a new message passing rule
- Create or edit the appropriate file in
src/rule/<node_type>_rules/<edge>.jl. - Use the
@rulemacro from ReactiveMP.jl to define the rule. - Add corresponding tests in
test/node_rule/. - Make sure
Pkg.test()passes.
Adding a new node
- Define the node struct and register it with
@nodeinsrc/SparseGaussianProcessnode/. - Define an
@average_energymethod. - Implement rules for each edge.
- Create a corresponding meta type if needed.
- Export the node and meta from the main module.
- Add tests and update documentation.
Building the documentation locally
using Pkg
Pkg.activate("docs")
Pkg.instantiate()
include("docs/make.jl")The built documentation will be in docs/build/.