Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
PharmCat committed Jan 9, 2021
1 parent 08d21ba commit 8bd70e6
Show file tree
Hide file tree
Showing 10 changed files with 74 additions and 39 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
src/temp.jl
test/precompile/
#test/precompile/
test/devtest.jl
examples/
docs/build/
Expand Down
2 changes: 1 addition & 1 deletion src/gmat.jl
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ function gmat_switch!(G, θ, covstr, i)
elseif covstr.random[i].covtype.s == :ZERO
gmat_zero!(G, similar(θ, 0), covstr.q[i], covstr.random[i].covtype)
else
throw(ErrorException("Unknown covariance structure: $(covstr.random[i].covtype.s), n = $(i)"))
error("Unknown covariance structure!")
end
G
end
Expand Down
6 changes: 3 additions & 3 deletions src/rmat.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
################################################################################

################################################################################
function rmat_basep!(mx, θ::AbstractVector{T}, zrv, covstr) where T
function rmat_basep!(mx, θ::AbstractVector{T}, zrv, covstr::CovStructure{T2}) where T where T2
if covstr.repeated.covtype.s == :SI
rmatp_si!(mx, θ, zrv, covstr.repeated.covtype)
elseif covstr.repeated.covtype.s == :DIAG
Expand All @@ -17,7 +17,7 @@ function rmat_basep!(mx, θ::AbstractVector{T}, zrv, covstr) where T
elseif covstr.repeated.covtype.s == :CS
rmatp_cs!(mx, θ, zrv, covstr.repeated.covtype)
else
throw(ErrorException("Unknown covariance structure: $(covstr.repeated.covtype.s)"))
error("Unknown covariance structure!")
end
end
################################################################################
Expand All @@ -36,7 +36,7 @@ function rmat_basep_z!(mx, θ::AbstractVector{T}, zrv, covstr) where T
elseif covstr.repeated.covtype.s == :CS
rmatp_cs!(view(mx, covstr.block[end][i], covstr.block[end][i]), θ, view(covstr.rz, covstr.block[end][i], :), covstr.repeated.covtype)
else
throw(ErrorException("Unknown covariance structure: $(covstr.repeated.covtype.s)"))
error("Unknown covariance structure!")
end
end
mx
Expand Down
17 changes: 9 additions & 8 deletions test/ar.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,24 @@ REML 453.339544
=#
df = CSV.File(path*"/csv/RepeatedPulse.csv") |> DataFrame
df.Pulse = float.(df.Pulse)
categorical!(df, :Time);
categorical!(df, :Day);
transform!(df, :Time => categorical, renamecols=false)
transform!(df, :Day => categorical, renamecols=false)

@testset " RepeatedPulse.csv" begin
lmm = Metida.LMM(@formula(Pulse~1), df;
random = Metida.VarEffect(Metida.@covstr(Time), Metida.SI),
repeated = Metida.VarEffect(Metida.@covstr(Day), Metida.AR),
subject = :Time
)
Metida.fit!(lmm)
@test lmm.result.reml 450.75260020816347 atol=1E-6
@test lmm.result.reml 453.1926914954099 atol=1E-6

lmm = Metida.LMM(@formula(Pulse~1), df;
repeated = Metida.VarEffect(Metida.@covstr(1), Metida.AR),
subject = :Time
)
Metida.fit!(lmm)
@test lmm.result.reml 462.66964037860635 atol=1E-6
@test lmm.result.reml 470.5275730199629 atol=1E-6
end

#=
Expand All @@ -32,17 +33,17 @@ df = CSV.File(path*"/csv/ChickWeight.csv") |> DataFrame
df.weight = float.(df.weight)
df.Time = float.(df.Time)
df.Time2 = copy(df.Time)
categorical!(df, :Time2);
categorical!(df, :Chick);
categorical!(df, :Diet);
transform!(df, :Time2 => categorical, renamecols=false)
transform!(df, :Chick => categorical, renamecols=false)
transform!(df, :Diet => categorical, renamecols=false)
@testset " ChickWeight.csv" begin
lmm = Metida.LMM(@formula(weight~1 + Diet & Time), df;
random = Metida.VarEffect(Metida.@covstr(1), Metida.SI),
repeated = Metida.VarEffect(Metida.@covstr(Diet), Metida.ARH),
subject = :Chick
)
Metida.fit!(lmm)
@test lmm.result.reml 5453.137479692881 atol=1E-6
@test lmm.result.reml 5451.857613990478 atol=1E-6

lmm = Metida.LMM(@formula(weight~1 + Diet & Time), df;
random = Metida.VarEffect(Metida.@covstr(Diet), Metida.ARH),
Expand Down
9 changes: 5 additions & 4 deletions test/berds.jl
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,11 @@ df = CSV.File(path*"/csv/berds/rds29.csv", types = Dict(:PK => Float64))
for i = 1:30
df = CSV.File(path*"/csv/berds/rds"*string(i)*".csv", types = Dict(:PK => Float64)) |> DataFrame
dropmissing!(df)
categorical!(df, :subject);
categorical!(df, :period);
categorical!(df, :sequence);
categorical!(df, :treatment);
transform!(df, :subject => categorical, renamecols=false)
transform!(df, :period => categorical, renamecols=false)
transform!(df, :sequence => categorical, renamecols=false)
transform!(df, :treatment => categorical, renamecols=false)

df.lnpk = log.(df.PK)

@testset " Test $(i)" begin
Expand Down
17 changes: 10 additions & 7 deletions test/lme4.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@


df = CSV.File(path*"/csv/lme4/sleepstudy.csv") |> DataFrame
categorical!(df, :Subject);
categorical!(df, :Days);
transform!(df, :Subject => categorical, renamecols=false)
transform!(df, :Days => categorical, renamecols=false)


#=
SPSS
Expand All @@ -19,8 +20,9 @@ end

df = CSV.File(path*"/csv/lme4/Penicillin.csv") |> DataFrame
df.diameter = float.(df.diameter)
categorical!(df, :plate);
categorical!(df, :sample);
transform!(df, :plate => categorical, renamecols=false)
transform!(df, :sample => categorical, renamecols=false)


@testset " Penicillin.csv" begin
lmm = Metida.LMM(@formula(diameter~1), df;
Expand All @@ -32,9 +34,10 @@ end


df = CSV.File(path*"/csv/lme4/Pastes.csv") |> DataFrame
categorical!(df, :batch);
categorical!(df, :cask);
categorical!(df, :sample);
transform!(df, :batch => categorical, renamecols=false)
transform!(df, :sample => categorical, renamecols=false)
transform!(df, :cask=> categorical, renamecols=false)

@testset " Pastes.csv" begin
lmm = Metida.LMM(@formula(strength~1), df;
random = [Metida.VarEffect(Metida.SI, subj = :batch), Metida.VarEffect(Metida.SI, subj = [:batch, :cask])]
Expand Down
Empty file.
2 changes: 1 addition & 1 deletion test/snoopy.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ using SnoopCompile
path = dirname(@__FILE__)
cd(path)

inf_timing = @snoopi tmin=0.0001 include("test.jl")
inf_timing = @snoopi tmin=0.000001 include("test.jl")
pc = SnoopCompile.parcel(inf_timing)
SnoopCompile.write("precompile", pc)

Expand Down
8 changes: 4 additions & 4 deletions test/testdata.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#Simple dataset
df0 = CSV.File(path*"/csv/df0.csv") |> DataFrame
categorical!(df0, :subject);
categorical!(df0, :period);
categorical!(df0, :sequence);
categorical!(df0, :formulation);
transform!(df0, :subject => categorical, renamecols=false)
transform!(df0, :period => categorical, renamecols=false)
transform!(df0, :sequence => categorical, renamecols=false)
transform!(df0, :formulation=> categorical, renamecols=false)
50 changes: 40 additions & 10 deletions test/warn.jl
Original file line number Diff line number Diff line change
@@ -1,17 +1,47 @@
#Code warntype

@code_warntype Metida.reml_sweep_β3(lmm, lmm.result.theta)

lmm = Metida.LMM(@formula(var~sequence+period+formulation), df;
random = [Metida.VarEffect(Metida.@covstr(formulation), Metida.CSH)],
repeated = Metida.VarEffect(Metida.@covstr(formulation), Metida.VC),
subject = :subject)
@code_typed Metida.reml_sweep_β3(lmm, lmm.result.theta)

lmmr = Metida.fit!(lmm)
@code_warntype Metida.gmat_base(lmm.result.theta, lmm.covstr)

@code_warntype Metida.reml_sweep_β(lmm, lmm.result.theta)
@code_typed Metida.gmat_base(lmm.result.theta, lmm.covstr)

@code_typed Metida.reml_sweep_β(lmm, lmm.result.theta)
V = [1. 2 3 4;
1 2 3 3;
9 8 2 1;
1 2 1 2]

V = [1 2 3 4; 1 2 3 3; 9 8 2 1; 1 2 1 2]
@code_warntype Metida.rmat_basep!(V, lmm.result.theta[lmm.covstr.tr[end]], lmm.data.zrv[1], lmm.covstr)
@code_warntype Metida.rmat_basep!(V, lmm.result.theta[lmm.covstr.tr[end]], view(lmm.covstr.rz, lmm.data.block[1],:), lmm.covstr)

@code_warntype Metida.gmat_base(lmm.result.theta, lmm.covstr)
@code_warntype Metida.gmat_base_z2!(V, lmm.result.theta, lmm.covstr, lmm.data.block[1], lmm.covstr.sblock[1])

@code_warntype Metida.rmat_basep_z2!(V, lmm.result.theta[lmm.covstr.tr[end]], lmm.covstr, lmm.data.block[1], lmm.covstr.sblock[1])

@code_warntype Metida.rmatp_si!(V, lmm.result.theta[lmm.covstr.tr[end]], view(lmm.covstr.rz, lmm.covstr.block[end][1], :), lmm.covstr.repeated.covtype)

@code_typed Metida.rmatp_si!(V, lmm.result.theta[lmm.covstr.tr[end]], view(lmm.covstr.rz, lmm.covstr.block[end][1], :), lmm.covstr.repeated.covtype)

@code_warntype Metida.rmatp_diag!(V, lmm.result.theta[lmm.covstr.tr[end]], view(lmm.covstr.rz, lmm.covstr.block[end][1], :), lmm.covstr.repeated.covtype)

@code_warntype Metida.rmatp_csh!(V, lmm.result.theta[lmm.covstr.tr[end]], view(lmm.covstr.rz, lmm.covstr.block[end][1], :), lmm.covstr.repeated.covtype)

@code_warntype Metida.rmatp_cs!(V, lmm.result.theta[lmm.covstr.tr[end]], view(lmm.covstr.rz, lmm.covstr.block[end][1], :), lmm.covstr.repeated.covtype)

@code_warntype Metida.rmatp_ar!(V, lmm.result.theta[lmm.covstr.tr[end]], view(lmm.covstr.rz, lmm.covstr.block[end][1], :), lmm.covstr.repeated.covtype)

@code_warntype Metida.rmatp_arh!(V, lmm.result.theta[lmm.covstr.tr[end]], view(lmm.covstr.rz, lmm.covstr.block[end][1], :), lmm.covstr.repeated.covtype)


G = [1. 2.;
2. 3.]
@code_warntype Metida.gmat_si!(G, lmm.result.theta[lmm.covstr.tr[1]], lmm.covstr.q[1], lmm.covstr.random[1].covtype)

@code_warntype Metida.gmat_diag!(G, lmm.result.theta[lmm.covstr.tr[1]], lmm.covstr.q[1], lmm.covstr.random[1].covtype)

@code_warntype Metida.gmat_csh!(G, lmm.result.theta[lmm.covstr.tr[1]], lmm.covstr.q[1], lmm.covstr.random[1].covtype)

@code_warntype Metida.gmat_cs!(G, lmm.result.theta[lmm.covstr.tr[1]], lmm.covstr.q[1], lmm.covstr.random[1].covtype)

@code_warntype Metida.gmat_ar!(G, lmm.result.theta[lmm.covstr.tr[1]], lmm.covstr.q[1], lmm.covstr.random[1].covtype)

0 comments on commit 8bd70e6

Please sign in to comment.