From 2e47b6262a83168810b7b091950cb0dceb25861b Mon Sep 17 00:00:00 2001 From: abieler Date: Mon, 26 Jun 2017 10:11:52 +0200 Subject: [PATCH] WIP: Add more tests --- src/fixedrange.jl | 16 ++++++ test/tst_fixedrangescaler.jl | 102 +++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) diff --git a/src/fixedrange.jl b/src/fixedrange.jl index 9a3f112..d0c8c11 100644 --- a/src/fixedrange.jl +++ b/src/fixedrange.jl @@ -119,10 +119,26 @@ function fixedrange!(X::AbstractMatrix, lower::Real, upper::Real, xmin::Abstract lower, upper, xmin, xmax end +function fixedrange!(X::AbstractMatrix, lower::Real, upper::Real, xmin::AbstractVector, xmax::AbstractVector, ::ObsDim.Last, operate_on::AbstractVector) + fixedrange!(X, lower, upper, xmin, xmax, ObsDim.Constant{2}(), operate_on) +end + function fixedrange!{T,M}(X::AbstractArray{T,M}, lower::Real, upper::Real, xmin::Real, xmax::Real, ::ObsDim.Last, operate_on::AbstractVector) fixedrange!(X, lower, upper, xmin, xmax, ObsDim.Constant{M}(), operate_on) end +function fixedrange!(x::AbstractVector; lower=0.0, upper=1.0) + xmin = minimum(x) + xmax = maximum(x) + fixedrange!(x, lower, upper, xmin, xmax) +end + +function fixedrange!(x::AbstractVector, lower::Real, upper::Real) + xmin = minimum(x) + xmax = maximum(x) + fixedrange!(x, lower, upper, xmin, xmax) +end + function fixedrange!{M}(x::AbstractVector, lower::Real, upper::Real, xmin::AbstractVector, xmax::AbstractVector, ::ObsDim.Constant{M}, operate_on::AbstractVector) @assert length(xmin) == length(xmax) == length(operate_on) xrange = xmax .- xmin diff --git a/test/tst_fixedrangescaler.jl b/test/tst_fixedrangescaler.jl index 7c3b50a..8f48cc1 100644 --- a/test/tst_fixedrangescaler.jl +++ b/test/tst_fixedrangescaler.jl @@ -5,6 +5,20 @@ D = DataFrame(A=rand(10), B=collect(1:10), C=[hex(x) for x in 11:20]) D_NA = deepcopy(D) D_NA[1, :A] = NA @testset "Array" begin + scaler = FixedRangeScaler(X) + XX = transform(X, scaler) + @test mean(XX[:,end]) ≈ 1 + @test mean(XX[:,1]) ≈ 0 + @test maximum(XX) == 1 + @test minimum(XX) == 0 + + scaler = FixedRangeScaler(X, -2, 2) + XX = transform(X, scaler) + @test mean(XX[:,end]) ≈ 2 + @test mean(XX[:,1]) ≈ -2 + @test maximum(XX) == 2 + @test minimum(XX) == -2 + scaler = fit(FixedRangeScaler, X) XX = transform(X, scaler) @test mean(XX[:,end]) ≈ 1 @@ -55,8 +69,70 @@ D_NA[1, :A] = NA transform!(XX, scaler) @test mean(minimum(XX[[1,2],:], 2)) ≈ -2 @test mean(maximum(XX[[1,2],:], 2)) ≈ 2 + + XX = deepcopy(X) + fixedrange!(XX) + @test all(maximum(XX, 2) .== ones(size(XX, 1))) + @test all(minimum(XX, 2) .== zeros(size(XX, 1))) + + XX = deepcopy(X) + fixedrange!(XX, ObsDim.Last(), collect(1:size(X,1))) + @test all(maximum(XX, 2) .== ones(size(XX, 1))) + @test all(minimum(XX, 2) .== zeros(size(XX, 1))) + + XX = deepcopy(X) + fixedrange!(XX, -2, 2) + @test all(maximum(XX, 2) .== ones(size(XX, 1)) .* 2) + @test all(minimum(XX, 2) .== ones(size(XX, 1)) .* -2) + + XX = deepcopy(X) + fixedrange!(XX, 0, 1, ObsDim.First(), collect(1:size(X, 2))) + @test all(maximum(XX, 1) .== ones(size(XX, 2))) + @test all(minimum(XX, 1) .== zeros(size(XX, 2))) + + XX = deepcopy(X) + fixedrange!(XX, 0, 1, ObsDim.Last(), collect(1:size(X,1))) + @test all(maximum(XX, 2) .== ones(size(XX, 1))) + @test all(minimum(XX, 2) .== zeros(size(XX, 1))) + + XX = deepcopy(X) + fixedrange!(XX, 0, 1, vec(minimum(XX, 2)), vec(maximum(XX, 2))) + @test all(maximum(XX, 2) .== ones(size(XX, 1))) + @test all(minimum(XX, 2) .== zeros(size(XX, 1))) + + + XX = deepcopy(X) + fixedrange!(XX, 0, 1, vec(minimum(XX, 2)), vec(maximum(XX, 2)), ObsDim.Last(), collect(1:size(XX, 1))) + @test all(maximum(XX, 2) .== ones(size(XX, 1))) + @test all(minimum(XX, 2) .== zeros(size(XX, 1))) + + XX = deepcopy(X) + fixedrange!(XX, 0, 1, vec(minimum(XX, 2)), vec(maximum(XX, 2)), ObsDim.Constant{2}(), collect(1:size(XX, 1))) + @test all(maximum(XX, 2) .== ones(size(XX, 1))) + @test all(minimum(XX, 2) .== zeros(size(XX, 1))) + + xx = deepcopy(x) + fixedrange!(xx) + @test minimum(xx) == 0 + @test maximum(xx) == 1 + + xx = deepcopy(x) + fixedrange!(xx, -1, 1) + @test minimum(xx) == -1 + @test maximum(xx) == 1 + + xx = deepcopy(x) + xmin = minimum(x, 2) .- 1 + xmax = maximum(x, 2) + + xx = deepcopy(x) + fixedrange!(xx, -1, 1, xmin, xmax, ObsDim.First(), collect(1:length(x))) + @test all(minimum(xx, 2) .== ones(length(x))) + @test all(maximum(xx, 2) .== ones(length(x))) + end + @testset "DataFrame" begin scaler = fit(FixedRangeScaler, D) DD = transform(D, scaler) @@ -105,4 +181,30 @@ end @test maximum(DD[:A]) == 1 @test minimum(DD[:B]) == -1 @test maximum(DD[:B]) == 1 + + DD = deepcopy(D) + fixedrange!(DD) + @test minimum(DD[:A]) == 0 + @test maximum(DD[:A]) == 1 + @test minimum(DD[:B]) == 0 + @test maximum(DD[:B]) == 1 + + DD = deepcopy(D) + fixedrange!(DD, -1, 1) + @test minimum(DD[:A]) == -1 + @test maximum(DD[:A]) == 1 + @test minimum(DD[:B]) == -1 + @test maximum(DD[:B]) == 1 + + DD = deepcopy(D) + fixedrange!(DD, -1, 1, [:A, :B, :C]) + @test minimum(DD[:A]) == -1 + @test maximum(DD[:A]) == 1 + @test minimum(DD[:B]) == -1 + @test maximum(DD[:B]) == 1 + + DD = deepcopy(D) + fixedrange!(DD, -1, 1, [0,1], [1,10]) + @test minimum(DD[:B]) == -1 + @test maximum(DD[:B]) == 1 end