Contributing¶
We welcome contributions to gproptim! Please read the Code of Conduct
before participating.
Getting Started¶
git clone https://github.com/TheochemUI/gpr_optim.git
cd gpr_optim
# C++ development
pixi shell
meson setup builddir -Dwith_tests=true
meson compile -C builddir
meson test -C builddir
# Python development
pixi run -e python build
pixi run -e python test
Types of Contributions¶
Bug Reports: Open an issue with reproduction steps
Documentation: Typos, missing guides, API doc improvements
Performance: Always include benchmark results (see Performance Guide)
Features: Discuss in an issue first for larger changes
Commit Style¶
GaussianProcessRegression: refactor Cholesky solve path
Replaced inline Eigen LLT calls with gpr::linalg::cholesky() so the
backend abstraction is used consistently.
Code Style¶
C++ code:
clang-format(see.clang-format)Python: standard formatting
Nim: standard Nim style (camelCase, 2-space indent)
Doxygen: Javadoc style (
/** @brief ... */)
Pre-commit¶
uvx prek -a # run all checks
uvx prek install # install git hook
Changelog¶
Add a towncrier news fragment to docs/newsfragments/:
# Format: +<short_hash>.<topic>.<category>.md
# Categories: added, changed, fixed, removed, deprecated, security, dev
echo "Description of the change" > docs/newsfragments/+abc1234.topic.changed.md
Benchmarking¶
Before submitting performance-related PRs, run the A/B benchmark:
pixi run -e python bench
See the Performance Optimisation Guide for profiling methodology and hot-path guidelines.