Skip to content

Commit cac486b

Browse files
authored
Updates for Julia 0.6 (#44)
* Update package for Julia 0.6 * Fix inner constructor * Deal with inference thinking Distribution is UnionAll * Use scale from Interpolations
1 parent 6a2d8cd commit cac486b

File tree

9 files changed

+32
-23
lines changed

9 files changed

+32
-23
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
[![Build Status](https://travis-ci.org/JuliaStats/KernelDensity.jl.svg?branch=master)](https://travis-ci.org/JuliaStats/KernelDensity.jl)
44
[![Coverage Status](https://coveralls.io/repos/github/JuliaStats/KernelDensity.jl/badge.svg)](https://coveralls.io/github/JuliaStats/KernelDensity.jl)
5-
[![KernelDensity](http://pkg.julialang.org/badges/KernelDensity_0.4.svg)](http://pkg.julialang.org/?pkg=KernelDensity&ver=0.4)
5+
[![KernelDensity](http://pkg.julialang.org/badges/KernelDensity_0.4.svg)](http://pkg.julialang.org/?pkg=KernelDensity)
66
[![KernelDensity](http://pkg.julialang.org/badges/KernelDensity_0.5.svg)](http://pkg.julialang.org/?pkg=KernelDensity)
7+
[![KernelDensity](http://pkg.julialang.org/badges/KernelDensity_0.6.svg)](http://pkg.julialang.org/?pkg=KernelDensity)
78

89
Kernel density estimators for Julia.
910

REQUIRE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
julia 0.4
2+
Compat 0.19.0
23
StatsBase
34
Distributions
45
Optim

src/KernelDensity.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ __precompile__()
22

33
module KernelDensity
44

5+
using Compat
56
using StatsBase
67
using Distributions
78
using Optim
@@ -13,7 +14,7 @@ import Distributions: twoπ, pdf
1314

1415
export kde, kde_lscv, UnivariateKDE, BivariateKDE, InterpKDE, pdf
1516

16-
abstract AbstractKDE
17+
@compat abstract type AbstractKDE end
1718

1819
include("univariate.jl")
1920
include("bivariate.jl")

src/bivariate.jl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,15 @@ function kernel_dist{Dx<:UnivariateDistribution,Dy<:UnivariateDistribution}(::Ty
1212
kernel_dist(Dx,w[1]), kernel_dist(Dy,w[2])
1313
end
1414

15+
if VERSION >= v"0.6.0-dev.2123"
16+
const DataTypeOrUnionAll = Union{DataType, UnionAll}
17+
else
18+
const DataTypeOrUnionAll = DataType
19+
end
20+
1521
# this function provided for backwards compatibility, though it doesn't have the type restrictions
1622
# to ensure that the given tuple only contains univariate distributions
17-
function kernel_dist(d::Tuple{DataType, DataType}, w::Tuple{Real,Real})
23+
function kernel_dist(d::Tuple{DataTypeOrUnionAll, DataTypeOrUnionAll}, w::Tuple{Real,Real})
1824
kernel_dist(d[1],w[1]), kernel_dist(d[2],w[2])
1925
end
2026

@@ -79,7 +85,7 @@ function conv(k::BivariateKDE, dist::Tuple{UnivariateDistribution,UnivariateDist
7985
BivariateKDE(k.x, k.y, dens)
8086
end
8187

82-
typealias BivariateDistribution Union{MultivariateDistribution,Tuple{UnivariateDistribution,UnivariateDistribution}}
88+
@compat const BivariateDistribution = Union{MultivariateDistribution,Tuple{UnivariateDistribution,UnivariateDistribution}}
8389

8490
function kde(data::Tuple{RealVector, RealVector}, midpoints::Tuple{Range, Range}, dist::BivariateDistribution)
8591
k = tabulate(data,midpoints)

src/interp.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import Interpolations: interpolate
1+
import Interpolations: interpolate, scale
22

33
type InterpKDE{K,I} <: AbstractKDE
44
kde::K
55
itp::I
6-
InterpKDE(kde,itp) = new(kde,itp)
6+
@compat (::Type{InterpKDE{K,I}}){K,I}(kde::K, itp::I) = new{K,I}(kde, itp)
77
end
88

99

src/univariate.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ end
88
kernel_dist(::Type{Normal},w::Real) = Normal(0.0,w)
99
kernel_dist(::Type{Uniform},w::Real) = (s = 1.7320508075688772*w; Uniform(-s,s))
1010

11-
typealias LocationScale Union{Laplace,Logistic,SymTriangularDist}
11+
@compat const LocationScale = Union{Laplace,Logistic,SymTriangularDist}
1212
kernel_dist{D}(::Type{D},w::Real) = (s = w/std(D(0.0,1.0)); D(0.0,s))
1313

1414

@@ -161,7 +161,7 @@ function kde_lscv(data::RealVector, midpoints::Range;
161161
K = length(k.density)
162162
ft = rfft(k.density)
163163

164-
ft2 = abs2(ft)
164+
ft2 = @compat(abs2.(ft))
165165
c = -twoπ/(step(k.x)*K)
166166
hlb, hub = bandwidth_range
167167

test/bivariate.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ for D in [Tuple{Normal,Normal}, Tuple{Uniform,Uniform}, Tuple{Logistic,Logistic}
1010
dx,dy = d
1111
@test mean(dx) == 0.0
1212
@test mean(dy) == 0.0
13-
@test_approx_eq std(dx) 0.5
14-
@test_approx_eq std(dy) 0.5
13+
@test std(dx) 0.5
14+
@test std(dy) 0.5
1515
end
1616

1717
r = kde_range((-2.0,2.0), 128)
@@ -30,31 +30,31 @@ for X in ([0.0], [0.0,0.0], [0.0,0.5], [-0.5:0.1:0.5;])
3030
@test isa(k1,BivariateKDE)
3131
@test size(k1.density) == (length(k1.x), length(k1.y))
3232
@test all(k1.density .>= 0.0)
33-
@test_approx_eq sum(k1.density)*step(k1.x)*step(k1.y) 1.0
33+
@test sum(k1.density)*step(k1.x)*step(k1.y) 1.0
3434

3535
k2 = conv(k1,kernel_dist(Tuple{D,D}, (0.1,0.1)))
3636
@test isa(k2,BivariateKDE)
3737
@test size(k2.density) == (length(k2.x), length(k2.y))
3838
@test all(k2.density .>= 0.0)
39-
@test_approx_eq sum(k2.density)*step(k2.x)*step(k2.y) 1.0
39+
@test sum(k2.density)*step(k2.x)*step(k2.y) 1.0
4040

4141
k3 = kde((X,X);kernel=D)
4242
@test isa(k3,BivariateKDE)
4343
@test size(k3.density) == (length(k3.x), length(k3.y))
4444
@test all(k3.density .>= 0.0)
45-
@test_approx_eq sum(k3.density)*step(k3.x)*step(k3.y) 1.0
45+
@test sum(k3.density)*step(k3.x)*step(k3.y) 1.0
4646

4747
k4 = kde((X,X),(r,r);kernel=D)
4848
@test isa(k4,BivariateKDE)
4949
@test size(k4.density) == (length(k4.x), length(k4.y))
5050
@test all(k4.density .>= 0.0)
51-
@test_approx_eq sum(k4.density)*step(k4.x)*step(k4.y) 1.0
51+
@test sum(k4.density)*step(k4.x)*step(k4.y) 1.0
5252

5353
k5 = kde([X X];kernel=D)
5454
@test isa(k5,BivariateKDE)
5555
@test size(k5.density) == (length(k5.x), length(k5.y))
5656
@test all(k5.density .>= 0.0)
57-
@test_approx_eq sum(k5.density)*step(k5.x)*step(k5.y) 1.0
57+
@test sum(k5.density)*step(k5.x)*step(k5.y) 1.0
5858

5959
end
6060
end

test/interp.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ X = randn(100)
55
Y = randn(100)
66

77
k = kde(X)
8-
@test_approx_eq pdf(k, k.x) k.density
8+
@test pdf(k, k.x) k.density
99

1010
k = kde((X,Y))
11-
@test_approx_eq pdf(k, k.x, k.y) k.density
11+
@test pdf(k, k.x, k.y) k.density

test/univariate.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ for D in [Normal,Uniform,Logistic]
88
d = kernel_dist(D,0.5)
99
@test isa(d,D)
1010
@test mean(d) == 0.0
11-
@test_approx_eq std(d) 0.5
11+
@test std(d) 0.5
1212
end
1313

1414
r = kde_range((-2.0,2.0), 128)
@@ -27,31 +27,31 @@ for X in ([0.0], [0.0,0.0], [0.0,0.5], [-0.5:0.1:0.5;])
2727
@test isa(k1,UnivariateKDE)
2828
@test length(k1.density) == length(k1.x)
2929
@test all(k1.density .>= 0.0)
30-
@test_approx_eq sum(k1.density)*step(k1.x) 1.0
30+
@test sum(k1.density)*step(k1.x) 1.0
3131

3232
k2 = conv(k1,kernel_dist(D,0.1))
3333
@test isa(k2,UnivariateKDE)
3434
@test length(k2.density) == length(k2.x)
3535
@test all(k2.density .>= 0.0)
36-
@test_approx_eq sum(k2.density)*step(k2.x) 1.0
36+
@test sum(k2.density)*step(k2.x) 1.0
3737

3838
k3 = kde(X;kernel=D)
3939
@test isa(k3,UnivariateKDE)
4040
@test length(k3.density) == length(k3.x)
4141
@test all(k3.density .>= 0.0)
42-
@test_approx_eq sum(k3.density)*step(k3.x) 1.0
42+
@test sum(k3.density)*step(k3.x) 1.0
4343

4444
k4 = kde(X,r;kernel=D)
4545
@test isa(k4,UnivariateKDE)
4646
@test length(k4.density) == length(k4.x)
4747
@test all(k4.density .>= 0.0)
48-
@test_approx_eq sum(k4.density)*step(k4.x) 1.0
48+
@test sum(k4.density)*step(k4.x) 1.0
4949

5050
k5 = kde_lscv(X)
5151
@test isa(k5,UnivariateKDE)
5252
@test length(k5.density) == length(k5.x)
5353
@test all(k5.density .>= 0.0)
54-
@test_approx_eq sum(k5.density)*step(k5.x) 1.0
54+
@test sum(k5.density)*step(k5.x) 1.0
5555

5656
end
5757
end

0 commit comments

Comments
 (0)