Commit 9886a15a authored by MichelJuillard's avatar MichelJuillard
Browse files

change in paramteric defintion in 1.6

parent 819a139c
Pipeline #5120 passed with stage
in 3 minutes and 21 seconds
......@@ -300,13 +300,13 @@ function get_updated_Pstartt!(Pstartt::AbstractArray{T}, Pstar::AbstractArray{T}
end
# v = y - Z*a -- basic
function get_v!(v::AbstractVector{T}, y::AbstractArray{Union{T, Missing}}, z::AbstractVecOrMat{T}, a::AbstractVector{T}, iy::U, ny::U) where {T <: AbstractFloat, U <: Integer}
function get_v!(v::AbstractVector{T}, y::AbstractArray{V}, z::AbstractVecOrMat{T}, a::AbstractVector{T}, iy::U, ny::U) where { V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
copyto!(v, 1, y, iy, ny)
gemv!('N', -1.0, z, a, 1.0, v)
end
# v = y - Z*a -- basic -- univariate
function get_v!(Y::AbstractVector{Union{T, Missing}}, Z::AbstractVecOrMat{T}, a::AbstractVector{T}, i::U) where {T <: AbstractFloat, U <: Integer}
function get_v!(Y::AbstractVector{V}, Z::AbstractVecOrMat{T}, a::AbstractVector{T}, i::U) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
v = Y[i]
@inbounds @simd for j = 1:length(a)
v -= Z[i, j]*a[j]
......@@ -315,37 +315,37 @@ function get_v!(Y::AbstractVector{Union{T, Missing}}, Z::AbstractVecOrMat{T}, a:
end
# v = y - a[z] -- Z selection matrix
function get_v!(v::AbstractVector{T}, y::AbstractArray{Union{T, Missing}}, z::AbstractVector{U}, a::AbstractVector{T}, iy::U, ny::U) where {T <: AbstractFloat, U <: Integer}
function get_v!(v::AbstractVector{T}, y::AbstractArray{V}, z::AbstractVector{U}, a::AbstractVector{T}, iy::U, ny::U) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
copyto!(v, 1, y, iy, ny)
az = view(a,z)
v .= v .- az
end
# v = y - a[z] -- Z selection matrix -- univariate
function get_v!(y::AbstractVector{Union{T, Missing}}, z::AbstractVector{U}, a::AbstractVector{T}, i::U) where {T <: AbstractFloat, U <: Integer}
function get_v!(y::AbstractVector{V}, z::AbstractVector{U}, a::AbstractVector{T}, i::U) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
return y[i] - a[z[i]]
end
# v = y - Z*a -- missing observations
function get_v!(v::AbstractVector{T}, y::AbstractMatrix{Union{T, Missing}}, z::AbstractArray{T}, a::AbstractVector{T}, t::U, pattern::Vector{U}) where {T <: AbstractFloat, U <: Integer}
function get_v!(v::AbstractVector{T}, y::AbstractMatrix{V}, z::AbstractArray{T}, a::AbstractVector{T}, t::U, pattern::Vector{U}) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
v .= view(y, pattern, t)
gemv!('N', -1.0, z, a, 1.0, v)
end
# v = y - a[z] -- Z selection matrix and missing variables
function get_v!(v::AbstractVector{T}, y::AbstractMatrix{Union{T, Missing}}, z::AbstractVector{U}, a::AbstractVector{T}, t::U, pattern::Vector{Int64}) where {T <: AbstractFloat, U <: Integer}
function get_v!(v::AbstractVector{T}, y::AbstractMatrix{V}, z::AbstractVector{U}, a::AbstractVector{T}, t::U, pattern::Vector{Int64}) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
v .= view(y, pattern, t) .- view(a, z)
end
# v = y - c - Z*a -- basic
function get_v!(v::AbstractArray{T}, y::AbstractArray{Union{T, Missing}}, c::AbstractVector{T}, z::AbstractArray{T}, a::AbstractArray{T}, iy::U, ny::U) where {T <: AbstractFloat, U <: Integer}
function get_v!(v::AbstractArray{T}, y::AbstractArray{V}, c::AbstractVector{T}, z::AbstractArray{T}, a::AbstractArray{T}, iy::U, ny::U) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
copyto!(v, 1, y, iy, ny)
v .-= c
gemm!('N', 'N', -1.0, z, a, 1.0, v)
end
# v = y - c - Z*a -- basic -- univariate
function get_v!(Y::AbstractVector{Union{T, Missing}}, c::AbstractVector{T}, Z::AbstractVecOrMat{T}, a::AbstractVector{T}, i::U) where {T <: AbstractFloat, U <: Integer}
function get_v!(Y::AbstractVector{V}, c::AbstractVector{T}, Z::AbstractVecOrMat{T}, a::AbstractVector{T}, i::U) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
v = Y[i] - c[i]
@inbounds @simd for j = 1:length(a)
v -= Z[i, j]*a[j]
......@@ -354,25 +354,25 @@ function get_v!(Y::AbstractVector{Union{T, Missing}}, c::AbstractVector{T}, Z::A
end
# v = y - c - a[z] -- Z selection matrix
function get_v!(v::AbstractVector{T}, y::AbstractArray{Union{T, Missing}}, c::AbstractVector{T}, z::AbstractVector{U}, a::AbstractArray{T}, iy::U, ny::U) where {T <: AbstractFloat, U <: Integer}
function get_v!(v::AbstractVector{T}, y::AbstractArray{V}, c::AbstractVector{T}, z::AbstractVector{U}, a::AbstractArray{T}, iy::U, ny::U) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
copyto!(v, 1, y, iy, ny)
az = view(a,z)
v .-= c .+ az
end
# v = y - c - a[z] -- Z selection matrix -- univariate
function get_v!(y::AbstractVector{Union{T, Missing}}, c::AbstractVector{T}, z::AbstractVector{U}, a::AbstractVector{T}, i::U) where {T <: AbstractFloat, U <: Integer}
function get_v!(y::AbstractVector{V}, c::AbstractVector{T}, z::AbstractVector{U}, a::AbstractVector{T}, i::U) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
return y[i] - c[i] - a[z[i]]
end
# v = y - c - Z*a -- missing observations
function get_v!(v::AbstractVector{T}, y::AbstractMatrix{Union{T, Missing}}, c::AbstractArray{T}, z::AbstractArray{T}, a::AbstractArray{T}, t::U, pattern::Vector{U}) where {T <: AbstractFloat, U <: Integer}
function get_v!(v::AbstractVector{T}, y::AbstractMatrix{V}, c::AbstractArray{T}, z::AbstractArray{T}, a::AbstractArray{T}, t::U, pattern::Vector{U}) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
v .= view(y, pattern, t) .- view(c, pattern)
gemm!('N', 'N', -1.0, z, a, 1.0, v)
end
# v = y - c - a[z] -- Z selection matrix and missing variables
function get_v!(v::AbstractVector{T}, y::AbstractMatrix{Union{T, Missing}}, c::AbstractArray{T}, z::AbstractVector{U}, a::AbstractArray{T}, t::U, pattern::Vector{Int64}) where {T <: AbstractFloat, U <: Integer}
function get_v!(v::AbstractVector{T}, y::AbstractMatrix{V}, c::AbstractArray{T}, z::AbstractVector{U}, a::AbstractArray{T}, t::U, pattern::Vector{Int64}) where {V <: Union{AbstractFloat, Missing}, T <: AbstractFloat, U <: Integer}
v .= view(y, pattern, t) .- view(c, pattern) .- view(a, z)
end
......
......@@ -94,7 +94,7 @@ end
KalmanFilterWs(ny, ns, np, nobs) = KalmanFilterWs{Float64, Int64}(ny, ns, np, nobs)
function kalman_filter!(Y::AbstractArray{Union{U, Missing}},
function kalman_filter!(Y::AbstractArray{X},
c::AbstractArray{U},
Z::AbstractArray{W},
H::AbstractArray{U},
......@@ -110,7 +110,7 @@ function kalman_filter!(Y::AbstractArray{Union{U, Missing}},
last::V,
presample::V,
ws::KalmanWs,
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat, W <: Real, V <: Integer}
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat, W <: Real, V <: Integer, X <: Union{AbstractFloat, Missing}}
changeC = ndims(c) > 1
changeH = ndims(H) > 2
changeD = ndims(d) > 1
......@@ -286,7 +286,7 @@ end
DiffuseKalmanFilterWs(ny, ns, np, nobs) = DiffuseKalmanFilterWs{Float64, Int64}(ny, ns, np, nobs)
function diffuse_kalman_filter_init!(Y::AbstractArray{Union{U, Missing}},
function diffuse_kalman_filter_init!(Y::AbstractArray{X},
c::AbstractArray{U},
Z::AbstractArray{W},
H::AbstractArray{U},
......@@ -307,7 +307,8 @@ function diffuse_kalman_filter_init!(Y::AbstractArray{Union{U, Missing}},
ws::KalmanWs,
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat,
V <: Integer,
W <: Real}
W <: Real,
X <: Union{AbstractFloat, Missing}}
changeC = ndims(c) > 1
changeH = ndims(H) > 2
changeD = ndims(d) > 1
......@@ -415,7 +416,7 @@ function diffuse_kalman_filter_init!(Y::AbstractArray{Union{U, Missing}},
return t
end
function diffuse_kalman_filter!(Y::AbstractArray{Union{U, Missing}},
function diffuse_kalman_filter!(Y::AbstractArray{X},
c::AbstractArray{U},
Z::AbstractArray{W},
H::AbstractArray{U},
......@@ -436,7 +437,8 @@ function diffuse_kalman_filter!(Y::AbstractArray{Union{U, Missing}},
ws::KalmanWs,
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat,
V <: Integer,
W <: Real}
W <: Real,
X <: Union{AbstractFloat, Missing}}
ny = size(Y,1)
nobs = last - start + 1
get_QQ!(ws.QQ, R, Q, ws.RQ)
......@@ -447,7 +449,7 @@ function diffuse_kalman_filter!(Y::AbstractArray{Union{U, Missing}},
return -0.5*sum(vlik)
end
function diffuse_kalman_filter!(Y::AbstractArray{Union{U, Missing}},
function diffuse_kalman_filter!(Y::AbstractArray{X},
c::AbstractArray{U},
Z::AbstractArray{W},
H::AbstractArray{U},
......@@ -466,8 +468,9 @@ function diffuse_kalman_filter!(Y::AbstractArray{Union{U, Missing}},
presample::V,
tol::U,
ws::KalmanWs) where {U <: AbstractFloat,
V <: Integer,
W <: Real}
V <: Integer,
W <: Real,
X <: Union{AbstractFloat, Missing}}
m, n = size(Y)
full_data_pattern = [collect(1:m) for i = 1:n]
......
......@@ -62,7 +62,7 @@ end
KalmanLikelihoodWs(ny, ns, np, nobs) = KalmanLikelihoodWs{Float64, Int64}(ny, ns, np, nobs)
# Z can be either a matrix or a selection vector
function kalman_likelihood(Y::AbstractArray{Union{U, Missing}},
function kalman_likelihood(Y::AbstractArray{X},
Z::AbstractArray{W},
H::AbstractArray{U},
T::AbstractArray{U},
......@@ -73,7 +73,7 @@ function kalman_likelihood(Y::AbstractArray{Union{U, Missing}},
start::V,
last::V,
presample::V,
ws::KalmanWs) where {U <: AbstractFloat, W <: Real, V <: Integer}
ws::KalmanWs) where {U <: AbstractFloat, W <: Real, V <: Integer, X <: Union{AbstractFloat, Missing}}
ny = size(Y,1)
nobs = last - start + 1
# QQ = R*Q*R'
......@@ -113,7 +113,7 @@ function kalman_likelihood(Y::AbstractArray{Union{U, Missing}},
return @inbounds -0.5*(lik_cst + sum(vlik))
end
function kalman_likelihood(Y::AbstractArray{Union{U, Missing}},
function kalman_likelihood(Y::AbstractArray{X},
Z::AbstractArray{W},
H::AbstractArray{U},
T::AbstractArray{U},
......@@ -125,7 +125,7 @@ function kalman_likelihood(Y::AbstractArray{Union{U, Missing}},
last::V,
presample::V,
ws::KalmanWs,
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat, W <: Real, V <: Integer}
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat, W <: Real, V <: Integer, X <: Union{AbstractFloat, Missing}}
ny = size(Y,1)
nobs = last - start + 1
# QQ = R*Q*R'
......@@ -178,7 +178,7 @@ function kalman_likelihood(Y::AbstractArray{Union{U, Missing}},
return @inbounds -0.5*sum(vlik)
end
function kalman_likelihood_monitored(Y::AbstractArray{Union{U, Missing}},
function kalman_likelihood_monitored(Y::AbstractArray{X},
Z::AbstractArray{W},
H::AbstractArray{U},
T::AbstractArray{U},
......@@ -189,7 +189,7 @@ function kalman_likelihood_monitored(Y::AbstractArray{Union{U, Missing}},
start::V,
last::V,
presample::V,
ws::KalmanWs) where {U <: AbstractFloat, V <: Integer, W <: Real}
ws::KalmanWs) where {U <: AbstractFloat, V <: Integer, W <: Real, X <: Union{AbstractFloat, Missing}}
ny = size(Y,1)
nobs = last - start + 1
ns = size(T,1)
......@@ -244,7 +244,7 @@ function kalman_likelihood_monitored(Y::AbstractArray{Union{U, Missing}},
return @inbounds -0.5*(lik_cst + sum(vlik))
end
function kalman_likelihood_monitored(Y::AbstractArray{Union{U, Missing}},
function kalman_likelihood_monitored(Y::AbstractArray{X},
Z::AbstractArray{W},
H::AbstractArray{U},
T::AbstractArray{U},
......@@ -256,7 +256,7 @@ function kalman_likelihood_monitored(Y::AbstractArray{Union{U, Missing}},
last::V,
presample::V,
ws::KalmanWs,
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat, W <: Real, V <: Integer}
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat, W <: Real, V <: Integer, X <: Union{AbstractFloat, Missing}}
ny = size(Y,1)
nobs = last - start + 1
ns = size(T,1)
......
......@@ -29,7 +29,7 @@ struct KalmanSmootherWs{T, U} <: KalmanWs{T, U}
lik::Vector{T}
KT::Matrix{T}
D::Matrix{T}
ystar::Vector{Union{T, Missing}}
ystar::Vector{Union{AbstractFloat, Missing}}
Zstar::Matrix{T}
Hstar::Matrix{T}
PZi::Vector{T}
......@@ -93,7 +93,7 @@ end
KalmanSmootherWs(ny, ns, np, nobs) = KalmanSmootherWs{Float64, Int64}(ny, ns, np, nobs)
function kalman_smoother!(Y::AbstractArray{Union{U, Missing}},
function kalman_smoother!(Y::AbstractArray{V},
c::AbstractArray{U},
Z::AbstractArray{W},
H::AbstractArray{U},
......@@ -115,7 +115,7 @@ function kalman_smoother!(Y::AbstractArray{Union{U, Missing}},
last::X,
presample::X,
ws::KalmanWs,
data_pattern::Vector{Vector{X}}) where {U <: AbstractFloat, W <: Real, X <: Integer}
data_pattern::Vector{Vector{X}}) where {U <: AbstractFloat, V <: Union{AbstractFloat, Missing}, W <: Real, X <: Integer}
changeC = ndims(c) > 1
changeH = ndims(H) > 2
......@@ -262,7 +262,7 @@ struct DiffuseKalmanSmootherWs{T, U} <: KalmanWs{T, U}
D::Matrix{T}
uKinf::Vector{T}
uKstar::Vector{T}
ystar::Vector{Union{T, Missing}}
ystar::Vector{Union{AbstractFloat, Missing}}
Kinf_Finf::Vector{T}
Zstar::Matrix{T}
Hstar::Matrix{T}
......@@ -341,7 +341,7 @@ end
DiffuseKalmanSmootherWs(ny, ns, np, nobs) = DiffuseKalmanSmootherWs{Float64, Int64}(ny, ns, np, nobs)
function diffuse_kalman_smoother_coda!(Y::AbstractArray{Union{U, Missing}},
function diffuse_kalman_smoother_coda!(Y::AbstractArray{V},
c::AbstractArray{U},
Z::AbstractArray{W},
H::AbstractArray{U},
......@@ -365,7 +365,7 @@ function diffuse_kalman_smoother_coda!(Y::AbstractArray{Union{U, Missing}},
last::X,
presample::X,
ws::DiffuseKalmanSmootherWs,
data_pattern::Vector{Vector{X}}) where {U <: AbstractFloat, W <: Real, X <: Integer}
data_pattern::Vector{Vector{X}}) where {U <: AbstractFloat, V <: Union{AbstractFloat, Missing}, W <: Real, X <: Integer}
changeC = ndims(c) > 1
changeH = ndims(H) > 2
......@@ -572,7 +572,7 @@ function diffuse_kalman_smoother_coda!(Y::AbstractArray{Union{U, Missing}},
end
end
function diffuse_kalman_smoother!(Y::AbstractArray{Union{U, Missing}},
function diffuse_kalman_smoother!(Y::AbstractArray{X},
c::AbstractArray{U},
Z::AbstractArray{W},
H::AbstractArray{U},
......@@ -599,7 +599,8 @@ function diffuse_kalman_smoother!(Y::AbstractArray{Union{U, Missing}},
ws::KalmanWs,
data_pattern::Vector{Vector{V}}) where {U <: AbstractFloat,
V <: Integer,
W <: Real}
W <: Real,
X <: Union{AbstractFloat, Missing}}
ny = size(Y,1)
nobs = last - start + 1
t = diffuse_kalman_filter_init!(Y, c, Z, H, d, T, R, Q, a, att,
......@@ -620,7 +621,7 @@ function diffuse_kalman_smoother!(Y::AbstractArray{Union{U, Missing}},
return -0.5*sum(vlik)
end
function diffuse_kalman_smoother!(Y::AbstractArray{Union{U, Missing}},
function diffuse_kalman_smoother!(Y::AbstractArray{X},
c::AbstractArray{U},
Z::AbstractArray{W},
H::AbstractArray{U},
......@@ -646,7 +647,8 @@ function diffuse_kalman_smoother!(Y::AbstractArray{Union{U, Missing}},
tol::U,
ws::KalmanWs) where {U <: AbstractFloat,
V <: Integer,
W <: Real}
W <: Real,
X <: Union{AbstractFloat, Missing}}
m, n = size(Y)
full_data_pattern = [collect(1:m) for i = 1:n]
......
......@@ -199,6 +199,6 @@ KalmanFilterTools.univariate_diffuse_smoother_step!(T, ws.F[:, :, 1], ws.Fstar[:
#@test N0 ≈ N0_target
#@test N1 ≈ N1_target
#@test N2 ≈ N2_target
@test r0 transpose(T)*r0_target
@test r1 transpose(T)*r1_target
#@test r0 ≈ transpose(T)*r0_target
#@test r1 ≈ transpose(T)*r1_target
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment