|
| 1 | +# minimal definition of a custom kernel |
| 2 | +struct MyKernel <: Kernel end |
| 3 | + |
| 4 | +KernelFunctions.kappa(::MyKernel, d2::Real) = exp(-d2) |
| 5 | +KernelFunctions.metric(::MyKernel) = SqEuclidean() |
| 6 | + |
| 7 | +# some syntactic sugar |
| 8 | +(κ::MyKernel)(d::Real) = kappa(κ, d) |
| 9 | +(κ::MyKernel)(x::AbstractVector{<:Real}, y::AbstractVector{<:Real}) = kappa(κ, x, y) |
| 10 | +(κ::MyKernel)(X::AbstractMatrix{<:Real}, Y::AbstractMatrix{<:Real}; obsdim = 2) = kernelmatrix(κ, X, Y; obsdim = obsdim) |
| 11 | +(κ::MyKernel)(X::AbstractMatrix{<:Real}; obsdim = 2) = kernelmatrix(κ, X; obsdim = obsdim) |
| 12 | + |
| 13 | +@testset "custom" begin |
| 14 | + @test kappa(MyKernel(), 3) == kappa(SqExponentialKernel(), 3) |
| 15 | + @test kappa(MyKernel(), 1, 3) == kappa(SqExponentialKernel(), 1, 3) |
| 16 | + @test kappa(MyKernel(), [1, 2], [3, 4]) == kappa(SqExponentialKernel(), [1, 2], [3, 4]) |
| 17 | + @test kernelmatrix(MyKernel(), [1 2; 3 4], [5 6; 7 8]) == kernelmatrix(SqExponentialKernel(), [1 2; 3 4], [5 6; 7 8]) |
| 18 | + @test kernelmatrix(MyKernel(), [1 2; 3 4]) == kernelmatrix(SqExponentialKernel(), [1 2; 3 4]) |
| 19 | + |
| 20 | + @test MyKernel()(3) == SqExponentialKernel()(3) |
| 21 | + @test MyKernel()([1, 2], [3, 4]) == SqExponentialKernel()([1, 2], [3, 4]) |
| 22 | + @test MyKernel()([1 2; 3 4], [5 6; 7 8]) == SqExponentialKernel()([1 2; 3 4], [5 6; 7 8]) |
| 23 | + @test MyKernel()([1 2; 3 4]) == SqExponentialKernel()([1 2; 3 4]) |
| 24 | +end |
0 commit comments