Skip to content

Commit 8687d27

Browse files
authored
Merge branch 'JuliaGaussianProcesses:master' into master
2 parents 3beb88a + 35de8d2 commit 8687d27

File tree

30 files changed

+203
-4823
lines changed

30 files changed

+203
-4823
lines changed
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
New? Check CONTRIBUTING.md!

.gitignore

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
*.json
22
*.cov
3-
/Manifest.toml
4-
/test/Manifest.toml
3+
Manifest.toml
54
coverage/
65
.DS_store
7-
benchmark/Manifest.toml

CONTRIBUTING.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Contribution guidelines
2+
3+
We follow the [ColPrac guide for collaborative practices](https://colprac.sciml.ai/). New contributors should make sure to read the [first section](https://github.com/SciML/ColPrac#colprac-contributors-guide-on-collaborative-practices-for-community-packages) of that guide, but could also read the [Further Guidance](https://github.com/SciML/ColPrac#colprac-further-guidance) section if interested.
4+
5+
6+
# Workflows
7+
8+
9+
## Creating a new [pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)
10+
11+
### Bumping the version number
12+
13+
When contributing a PR, bump the version number (defined by `version = "..."` at the top of the base `Project.toml`) accordingly (as explained by the [guidance on the versioning scheme](https://colprac.sciml.ai/#incrementing-the-package-version) in the ColPrac guide).
14+
If unsure about what the new version should be, please just open the PR anyway -- existing contributors will provide a suggestion.
15+
16+
### Running tests locally
17+
18+
Firstly, run `using Pkg; Pkg.develop("KernelFunctions")` at the Julia REPL, and navigate to `~/.julia/dev/KernelFunctions`.
19+
20+
Running `make test` will now run the entire test suite.
21+
These tests can take a long time to run, so it's often a good idea to simply comment out the blocks of tests not required in `test/runtests.jl`.
22+
Test files are paired 1-1 with source files, so if you're modifying code in `src/foo.jl`, you should only need to run the tests in `test/foo.jl` during development.
23+
24+
### Code formatting
25+
26+
Run `make format` before pushing your changes.
27+
28+
29+
### How to make a new release (for organization members)
30+
31+
We use [JuliaRegistrator](https://github.com/JuliaRegistries/Registrator.jl#via-the-github-app):
32+
33+
On Github, go to the commit that you want to register (this should normally be the commit of a squash-merged pull request on the `master` branch that has bumped the version number) and add a comment saying `@JuliaRegistrator register`.
34+
35+
The next release will then be processed automatically. KernelFunctions.jl does use TagBot so you can ignore the message about tagging. Note that it may take around 20 minutes until the actual release appears and you can edit the release notes if needed.

Makefile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
JULIA=$(shell which julia)
2+
3+
.PHONY: help format test
4+
5+
help:
6+
@echo "The following make targets are available:"
7+
@echo " format auto-format code"
8+
@echo " test run all tests"
9+
10+
format:
11+
@if [ "$(JULIA)" = "" ]; then echo 'Julia not found; run `make JULIA=/path/to/julia format`'; exit 1; fi
12+
$(JULIA) -e 'using Pkg; Pkg.activate(; temp=true); Pkg.add("JuliaFormatter"); using JuliaFormatter; format(".")'
13+
14+
test:
15+
@if [ "$(JULIA)" = "" ]; then echo 'Julia not found; run `make JULIA=/path/to/julia test`'; exit 1; fi
16+
$(JULIA) --project=. -e 'using Pkg; Pkg.test()'

Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "KernelFunctions"
22
uuid = "ec8451be-7e33-11e9-00cf-bbf324bd1392"
3-
version = "0.10.33"
3+
version = "0.10.38"
44

55
[deps]
66
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
@@ -15,6 +15,7 @@ LogExpFunctions = "2ab3a3ac-af41-5b50-aa03-7779005ae688"
1515
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
1616
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
1717
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
18+
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1819
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
1920
TensorCore = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50"
2021
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

README.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@
99
[![DOI](https://zenodo.org/badge/188430419.svg)](https://zenodo.org/badge/latestdoi/188430419)
1010

1111

12-
1312
## Kernel functions for machine learning
1413

15-
KernelFunctions.jl provides a flexible framework for defining kernel functions, and an extensive collection of implementations.
16-
17-
The aim is to make the API as model-agnostic as possible while still being user-friendly, and to interoperate well with generic packages for handling parameters like [ParameterHandling.jl](https://github.com/invenia/ParameterHandling.jl/) and FluxML's [Functors.jl](https://github.com/FluxML/Functors.jl/).
18-
19-
Where appropriate, kernels are AD-compatible.
14+
**KernelFunctions.jl** is a general purpose [kernel](https://en.wikipedia.org/wiki/Positive-definite_kernel) package.
15+
It provides a flexible framework for creating kernel functions and manipulating them, and an extensive collection of implementations.
16+
The main goals of this package are:
17+
- **Flexibility**: operations between kernels should be fluid and easy without breaking, with a user-friendly API.
18+
- **Plug-and-play**: being model-agnostic; including the kernels before/after other steps should be straightforward. To interoperate well with generic packages for handling parameters like [ParameterHandling.jl](https://github.com/invenia/ParameterHandling.jl/) and FluxML's [Functors.jl](https://github.com/FluxML/Functors.jl/).
19+
- **Automatic Differentiation compatibility**: all kernel functions which _ought_ to be differentiable using AD packages like [ForwardDiff.jl](https://github.com/JuliaDiff/ForwardDiff.jl) or [Zygote.jl](https://github.com/FluxML/Zygote.jl) _should_ be.
2020

2121
## Examples
2222

@@ -50,9 +50,9 @@ plot(
5050

5151
## Related Work
5252

53-
Directly inspired by the [MLKernels](https://github.com/trthatcher/MLKernels.jl) package.
53+
This package replaces the now-defunct [MLKernels.jl](https://github.com/trthatcher/MLKernels.jl). It incorporates lots of excellent existing work from packages such as [GaussianProcesses.jl](https://github.com/STOR-i/GaussianProcesses.jl), and is used in downstream packages such as [AbstractGPs.jl](https://github.com/JuliaGaussianProcesses/AbstractGPs.jl), [ApproximateGPs.jl](https://github.com/JuliaGaussianProcesses/ApproximateGPs.jl), [Stheno.jl](https://github.com/willtebbutt/Stheno.jl), and [AugmentedGaussianProcesses.jl](https://github.com/theogf/AugmentedGaussianProcesses.jl).
5454

55-
See the JuliaGaussianProcesses [Github organisation](https://github.com/JuliaGaussianProcesses) and [website](https://juliagaussianprocesses.github.io/) for more related packages.
55+
See the JuliaGaussianProcesses [Github organisation](https://github.com/JuliaGaussianProcesses) and [website](https://juliagaussianprocesses.github.io/) for more information.
5656

5757
## Issues/Contributing
5858

0 commit comments

Comments
 (0)