Skip to content

Commit f71cd3d

Browse files
committed
Define broadcasting behavior for KDEs
1 parent 2282978 commit f71cd3d

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

src/KernelDensity.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ export kde, kde_lscv, UnivariateKDE, BivariateKDE, InterpKDE, pdf
1212

1313
abstract type AbstractKDE end
1414

15+
# define broadcasting behavior
16+
Base.Broadcast.broadcastable(x::AbstractKDE) = Ref(x)
17+
1518
include("univariate.jl")
1619
include("bivariate.jl")
1720
include("interp.jl")

test/bivariate.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,8 @@ end
6464
k11 = kde([0.0 0.0; 1.0 1.0], (r,r), bandwidth=(1,1), weights=[0,1])
6565
k12 = kde([1.0 1.0], (r,r), bandwidth=(1,1))
6666
@test k11.density k12.density
67+
68+
@testset "broadcasting. Issue 63" begin
69+
xyvals = [0.0, 1.0]
70+
@test pdf.(k11, xyvals, xyvals) == map(((x, y,)) -> pdf(k11, x, y), xyvals, xyvals)
71+
end

test/univariate.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,7 @@ abs_tol = eps(Float64)
6969

7070
minimizer = @inferred KernelDensity.optimize(x -> (x - 1)^2, 0, 2)
7171
@test abs(minimizer - 1) <= abs_tol + rel_tol * abs(minimizer)
72+
73+
@testset "broadcasting" begin
74+
@test pdf(k11, [0.0, 1.0]) == map(t -> pdf(k11, t), [0.0, 1.0])
75+
end

0 commit comments

Comments
 (0)