Skip to content

Commit 937169e

Browse files
authored
Fix Independent MOKernel for single dimension input (#144)
* Fix Independent MOKernel for single dimension input Fails for ```julia N = 100 x = rand(Uniform(-1, 1), N) X = MOInput(x, 2) k = IndependentMOKernel(MaternKernel()) k(X, X) #error ``` * Add tests * Use test_nothrow * Revert to using @test
1 parent 6aea76e commit 937169e

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

src/mokernels/independent.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@ struct IndependentMOKernel{Tkernel<:Kernel} <: Kernel
77
kernel::Tkernel
88
end
99

10-
function::IndependentMOKernel)(x::Tuple{Vector, Int}, y::Tuple{Vector, Int})
11-
if last(x) == last(y)
12-
return κ.kernel(first(x), first(y))
10+
function::IndependentMOKernel)((x, px)::Tuple{Real, Int}, (y, py)::Tuple{Real, Int})
11+
return κ(([x], px), ([y], py))
12+
end
13+
14+
function::IndependentMOKernel)((x, px)::Tuple{Vector, Int}, (y, py)::Tuple{Vector, Int})
15+
if px == py
16+
return κ.kernel(x, y)
1317
else
1418
return 0.0
1519
end

test/mokernels/independent.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,10 @@
1010

1111
@test kernelmatrix(k, x, y) == kernelmatrix(k, collect(x), collect(y))
1212
@test kernelmatrix(k, x, x) == kernelmatrix(k, x)
13+
14+
x1 = MOInput(rand(5), 3) # Single dim input
15+
@test k(x1[1], x1[1]) isa Real
16+
@test kernelmatrix(k, x1) isa Matrix
17+
1318
@test string(k) == "Independent Multi-Output Kernel\n\tSquared Exponential Kernel"
1419
end

0 commit comments

Comments
 (0)