Skip to content

Commit 83a4e7c

Browse files
authored
Merge branch 'master' into maha
2 parents 7c9616f + 0654f2f commit 83a4e7c

File tree

4 files changed

+27
-5
lines changed

4 files changed

+27
-5
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ os:
55
- osx
66
julia:
77
- 1.0
8-
- 1.2
98
- 1.3
9+
- 1.4
1010
- nightly
1111
# because of Zygote needs to allow failing on nightly
1212
matrix:

src/KernelFunctions.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ include("distances/dotproduct.jl")
4545
include("distances/delta.jl")
4646
include("transform/transform.jl")
4747

48-
for k in ["exponential","matern","polynomial","constant","rationalquad","exponentiated","maha"]
48+
for k in ["exponential","matern","polynomial","constant","rationalquad","exponentiated","cosine","maha"]
4949
include(joinpath("kernels",k*".jl"))
5050
end
5151
include("kernels/transformedkernel.jl")
@@ -54,7 +54,6 @@ include("matrix/kernelmatrix.jl")
5454
include("kernels/kernelsum.jl")
5555
include("kernels/kernelproduct.jl")
5656
include("approximations/nystrom.jl")
57-
5857
include("generic.jl")
5958

6059
include("zygote_adjoints.jl")

src/kernels/cosine.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""
2+
CosineKernel
3+
4+
The cosine kernel is a stationary kernel for a sinusoidal given by
5+
```
6+
κ(x,y) = cos( π * (x-y) )
7+
```
8+
9+
"""
10+
struct CosineKernel <: BaseKernel end
11+
12+
kappa::CosineKernel, d::Real) = cospi(d)
13+
14+
metric(::CosineKernel) = Euclidean()

test/test_kernels.jl

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ x = rand()*2; v1 = rand(3); v2 = rand(3); id = IdentityTransform()
2626
@test kappa(k,0.5) == c
2727
end
2828
end
29+
@testset "Cosine" begin
30+
k = CosineKernel()
31+
@test eltype(k) == Any
32+
@test kappa(k, 1.0) -1.0 atol=1e-5
33+
@test kappa(k, 2.0) 1.0 atol=1e-5
34+
@test kappa(k, 1.5) 0.0 atol=1e-5
35+
@test kappa(k,x) cospi(x) atol=1e-5
36+
@test k(v1, v2) cospi(sqrt(sum(abs2.(v1-v2)))) atol=1e-5
37+
end
2938
@testset "Exponential" begin
3039
@testset "SqExponentialKernel" begin
3140
k = SqExponentialKernel()
@@ -140,8 +149,8 @@ x = rand()*2; v1 = rand(3); v2 = rand(3); id = IdentityTransform()
140149
ks = ScaledKernel(k,s)
141150
@test kappa(kt,v1,v2) == kappa(transform(k,ScaleTransform(s)),v1,v2)
142151
@test kappa(kt,v1,v2) == kappa(transform(k,s),v1,v2)
143-
@test kappa(kt,v1,v2) == kappa(k,s*v1,s*v2)
144-
@test kappa(ktard,v1,v2) kappa(transform(k,ARDTransform(v)),v1,v2)
152+
@test kappa(kt,v1,v2) kappa(k,s*v1,s*v2) atol=1e-5
153+
@test kappa(ktard,v1,v2) kappa(transform(k,ARDTransform(v)),v1,v2) atol=1e-5
145154
@test kappa(ktard,v1,v2) == kappa(transform(k,v),v1,v2)
146155
@test kappa(ktard,v1,v2) == kappa(k,v.*v1,v.*v2)
147156
@test KernelFunctions.metric(kt) == KernelFunctions.metric(k)

0 commit comments

Comments
 (0)