From f12a60e70cfc9cfe6b4cbe626f245bf9eeccca62 Mon Sep 17 00:00:00 2001 From: kgori Date: Wed, 13 Mar 2019 13:07:14 +0000 Subject: [PATCH 1/2] Fix typo in P() for TN93 and related models --- src/nucleic_acid/f84/absolute.jl | 4 ++-- src/nucleic_acid/f84/relative.jl | 4 ++-- src/nucleic_acid/hky85/absolute.jl | 4 ++-- src/nucleic_acid/hky85/relative.jl | 4 ++-- src/nucleic_acid/tn93/absolute.jl | 6 +++--- src/nucleic_acid/tn93/relative.jl | 4 ++-- test/runtests.jl | 14 ++++++++++++++ 7 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/nucleic_acid/f84/absolute.jl b/src/nucleic_acid/f84/absolute.jl index 73aa476..5fde4e6 100644 --- a/src/nucleic_acid/f84/absolute.jl +++ b/src/nucleic_acid/f84/absolute.jl @@ -74,13 +74,13 @@ end e₃ = exp(-(πY * α₁ + πR * β) * t) P₁ = πA + (πA * πY / πR) * e₁ + (πG / πR) * e₂ - P₂ = πC + (πT * πR / πY) * e₁ + (πT / πY) * e₃ + P₂ = πC + (πC * πR / πY) * e₁ + (πT / πY) * e₃ P₃ = πG + (πG * πY / πR) * e₁ + (πA / πR) * e₂ P₄ = πT + (πT * πR / πY) * e₁ + (πC / πY) * e₃ P₅ = πA * (1 - e₁) P₆ = πA + (πA * πY / πR) * e₁ - (πA / πR) * e₂ P₇ = πC * (1 - e₁) - P₈ = πC + (πT * πR / πY) * e₁ - (πC / πY) * e₃ + P₈ = πC + (πC * πR / πY) * e₁ - (πC / πY) * e₃ P₉ = πG + (πG * πY / πR) * e₁ - (πG / πR) * e₂ P₁₀ = πG * (1 - e₁) P₁₁ = πT * (1 - e₁) diff --git a/src/nucleic_acid/f84/relative.jl b/src/nucleic_acid/f84/relative.jl index 754263b..ab5273e 100644 --- a/src/nucleic_acid/f84/relative.jl +++ b/src/nucleic_acid/f84/relative.jl @@ -71,13 +71,13 @@ end e₃ = exp(-(πY * α₁ + πR) * t) P₁ = πA + (πA * πY / πR) * e₁ + (πG / πR) * e₂ - P₂ = πC + (πT * πR / πY) * e₁ + (πT / πY) * e₃ + P₂ = πC + (πC * πR / πY) * e₁ + (πT / πY) * e₃ P₃ = πG + (πG * πY / πR) * e₁ + (πA / πR) * e₂ P₄ = πT + (πT * πR / πY) * e₁ + (πC / πY) * e₃ P₅ = πA * (1 - e₁) P₆ = πA + (πA * πY / πR) * e₁ - (πA / πR) * e₂ P₇ = πC * (1 - e₁) - P₈ = πC + (πT * πR / πY) * e₁ - (πC / πY) * e₃ + P₈ = πC + (πC * πR / πY) * e₁ - (πC / πY) * e₃ P₉ = πG + (πG * πY / πR) * e₁ - (πG / πR) * e₂ P₁₀ = πG * (1 - e₁) P₁₁ = πT * (1 - e₁) diff --git a/src/nucleic_acid/hky85/absolute.jl b/src/nucleic_acid/hky85/absolute.jl index b895948..2564a92 100644 --- a/src/nucleic_acid/hky85/absolute.jl +++ b/src/nucleic_acid/hky85/absolute.jl @@ -68,13 +68,13 @@ end e₃ = exp(-(πY * α + πR * β) * t) P₁ = πA + (πA * πY / πR) * e₁ + (πG / πR) * e₂ - P₂ = πC + (πT * πR / πY) * e₁ + (πT / πY) * e₃ + P₂ = πC + (πC * πR / πY) * e₁ + (πT / πY) * e₃ P₃ = πG + (πG * πY / πR) * e₁ + (πA / πR) * e₂ P₄ = πT + (πT * πR / πY) * e₁ + (πC / πY) * e₃ P₅ = πA * (1 - e₁) P₆ = πA + (πA * πY / πR) * e₁ - (πA / πR) * e₂ P₇ = πC * (1 - e₁) - P₈ = πC + (πT * πR / πY) * e₁ - (πC / πY) * e₃ + P₈ = πC + (πC * πR / πY) * e₁ - (πC / πY) * e₃ P₉ = πG + (πG * πY / πR) * e₁ - (πG / πR) * e₂ P₁₀ = πG * (1 - e₁) P₁₁ = πT * (1 - e₁) diff --git a/src/nucleic_acid/hky85/relative.jl b/src/nucleic_acid/hky85/relative.jl index 3b58a10..466d537 100644 --- a/src/nucleic_acid/hky85/relative.jl +++ b/src/nucleic_acid/hky85/relative.jl @@ -64,13 +64,13 @@ end e₃ = exp(-(πY * κ + πR) * t) P₁ = πA + (πA * πY / πR) * e₁ + (πG / πR) * e₂ - P₂ = πC + (πT * πR / πY) * e₁ + (πT / πY) * e₃ + P₂ = πC + (πC * πR / πY) * e₁ + (πT / πY) * e₃ P₃ = πG + (πG * πY / πR) * e₁ + (πA / πR) * e₂ P₄ = πT + (πT * πR / πY) * e₁ + (πC / πY) * e₃ P₅ = πA * (1 - e₁) P₆ = πA + (πA * πY / πR) * e₁ - (πA / πR) * e₂ P₇ = πC * (1 - e₁) - P₈ = πC + (πT * πR / πY) * e₁ - (πC / πY) * e₃ + P₈ = πC + (πC * πR / πY) * e₁ - (πC / πY) * e₃ P₉ = πG + (πG * πY / πR) * e₁ - (πG / πR) * e₂ P₁₀ = πG * (1 - e₁) P₁₁ = πT * (1 - e₁) diff --git a/src/nucleic_acid/tn93/absolute.jl b/src/nucleic_acid/tn93/absolute.jl index b8e7155..894495e 100644 --- a/src/nucleic_acid/tn93/absolute.jl +++ b/src/nucleic_acid/tn93/absolute.jl @@ -26,7 +26,7 @@ end function show(io::IO, object::TN93abs) print(io, "\r\e[0m\e[1mT\e[0mamura and \e[1mN\e[0mei 19\e[1m93\e[0m model (absolute rate form) -α1 = $(object.α1), α2 = $(object.α1), β = $(object.β), π = [$(object.πA), $(object.πC), $(object.πG), $(object.πT)]") +α1 = $(object.α1), α2 = $(object.α2), β = $(object.β), π = [$(object.πA), $(object.πC), $(object.πG), $(object.πT)]") end @@ -71,13 +71,13 @@ end e₃ = exp(-(πY * α₁ + πR * β) * t) P₁ = πA + (πA * πY / πR) * e₁ + (πG / πR) * e₂ - P₂ = πC + (πT * πR / πY) * e₁ + (πT / πY) * e₃ + P₂ = πC + (πC * πR / πY) * e₁ + (πT / πY) * e₃ #### P₃ = πG + (πG * πY / πR) * e₁ + (πA / πR) * e₂ P₄ = πT + (πT * πR / πY) * e₁ + (πC / πY) * e₃ P₅ = πA * (1 - e₁) P₆ = πA + (πA * πY / πR) * e₁ - (πA / πR) * e₂ P₇ = πC * (1 - e₁) - P₈ = πC + (πT * πR / πY) * e₁ - (πC / πY) * e₃ + P₈ = πC + (πC * πR / πY) * e₁ - (πC / πY) * e₃ #### P₉ = πG + (πG * πY / πR) * e₁ - (πG / πR) * e₂ P₁₀ = πG * (1 - e₁) P₁₁ = πT * (1 - e₁) diff --git a/src/nucleic_acid/tn93/relative.jl b/src/nucleic_acid/tn93/relative.jl index d8d8b61..5f15320 100644 --- a/src/nucleic_acid/tn93/relative.jl +++ b/src/nucleic_acid/tn93/relative.jl @@ -67,13 +67,13 @@ end e₃ = exp(-(πY * κ₁ + πR) * t) P₁ = πA + (πA * πY / πR) * e₁ + (πG / πR) * e₂ - P₂ = πC + (πT * πR / πY) * e₁ + (πT / πY) * e₃ + P₂ = πC + (πC * πR / πY) * e₁ + (πT / πY) * e₃ P₃ = πG + (πG * πY / πR) * e₁ + (πA / πR) * e₂ P₄ = πT + (πT * πR / πY) * e₁ + (πC / πY) * e₃ P₅ = πA * (1 - e₁) P₆ = πA + (πA * πY / πR) * e₁ - (πA / πR) * e₂ P₇ = πC * (1 - e₁) - P₈ = πC + (πT * πR / πY) * e₁ - (πC / πY) * e₃ + P₈ = πC + (πC * πR / πY) * e₁ - (πC / πY) * e₃ P₉ = πG + (πG * πY / πR) * e₁ - (πG / πR) * e₂ P₁₀ = πG * (1 - e₁) P₁₁ = πT * (1 - e₁) diff --git a/test/runtests.jl b/test/runtests.jl index 2e51867..7ed7f19 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -37,6 +37,8 @@ end @test isapprox(diag(P(testmod2, 1.0e9)), _π(testmod2), atol = 1.0e-5) @test sum(_π(testmod1)) == 1.0 @test sum(_π(testmod2)) == 1.0 + @test sum(P(testmod1, 2.5), dims=2) ≈ [1 1 1 1]' + @test sum(P(testmod2, 2.5), dims=2) ≈ [1 1 1 1]' end @@ -51,6 +53,8 @@ end @test isapprox(diag(P(testmod2, 1.0e9)), _π(testmod2), atol = 1.0e-5) @test sum(_π(testmod1)) == 1.0 @test sum(_π(testmod2)) == 1.0 + @test sum(P(testmod1, 2.5), dims=2) ≈ [1 1 1 1]' + @test sum(P(testmod2, 2.5), dims=2) ≈ [1 1 1 1]' end @@ -65,6 +69,8 @@ end @test isapprox(diag(P(testmod2, 1.0e9)), _π(testmod2), atol = 1.0e-5) @test sum(_π(testmod1)) == 1.0 @test sum(_π(testmod2)) == 1.0 + @test sum(P(testmod1, 2.5), dims=2) ≈ [1 1 1 1]' + @test sum(P(testmod2, 2.5), dims=2) ≈ [1 1 1 1]' end @@ -79,6 +85,8 @@ end @test isapprox(diag(P(testmod2, 1.0e9)), _π(testmod2), atol = 1.0e-5) @test sum(_π(testmod1)) == 1.0 @test sum(_π(testmod2)) == 1.0 + @test sum(P(testmod1, 2.5), dims=2) ≈ [1 1 1 1]' + @test sum(P(testmod2, 2.5), dims=2) ≈ [1 1 1 1]' end @@ -93,6 +101,8 @@ end @test isapprox(diag(P(testmod2, 1.0e9)), _π(testmod2), atol = 1.0e-5) @test sum(_π(testmod1)) == 1.0 @test sum(_π(testmod2)) == 1.0 + @test sum(P(testmod1, 2.5), dims=2) ≈ [1 1 1 1]' + @test sum(P(testmod2, 2.5), dims=2) ≈ [1 1 1 1]' end @@ -107,6 +117,8 @@ end @test isapprox(diag(P(testmod2, 1.0e9)), _π(testmod2), atol = 1.0e-5) @test sum(_π(testmod1)) == 1.0 @test sum(_π(testmod2)) == 1.0 + @test sum(P(testmod1, 2.5), dims=2) ≈ [1 1 1 1]' + @test sum(P(testmod2, 2.5), dims=2) ≈ [1 1 1 1]' end @@ -125,6 +137,8 @@ end @test isapprox(diag(P(testmod2, 1.0e9)), _π(testmod2), atol = 1.0e-5) @test sum(_π(testmod1)) == 1.0 @test sum(_π(testmod2)) == 1.0 + @test sum(P(testmod1, 2.5), dims=2) ≈ [1 1 1 1]' + @test sum(P(testmod2, 2.5), dims=2) ≈ [1 1 1 1]' end @testset "Indexing" begin From 5ffa02fd0fda372ce2866c733b4088b30815e178 Mon Sep 17 00:00:00 2001 From: kgori Date: Wed, 13 Mar 2019 17:29:34 +0000 Subject: [PATCH 2/2] Tidy up stray #### --- src/nucleic_acid/tn93/absolute.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nucleic_acid/tn93/absolute.jl b/src/nucleic_acid/tn93/absolute.jl index 894495e..81c3b8c 100644 --- a/src/nucleic_acid/tn93/absolute.jl +++ b/src/nucleic_acid/tn93/absolute.jl @@ -71,13 +71,13 @@ end e₃ = exp(-(πY * α₁ + πR * β) * t) P₁ = πA + (πA * πY / πR) * e₁ + (πG / πR) * e₂ - P₂ = πC + (πC * πR / πY) * e₁ + (πT / πY) * e₃ #### + P₂ = πC + (πC * πR / πY) * e₁ + (πT / πY) * e₃ P₃ = πG + (πG * πY / πR) * e₁ + (πA / πR) * e₂ P₄ = πT + (πT * πR / πY) * e₁ + (πC / πY) * e₃ P₅ = πA * (1 - e₁) P₆ = πA + (πA * πY / πR) * e₁ - (πA / πR) * e₂ P₇ = πC * (1 - e₁) - P₈ = πC + (πC * πR / πY) * e₁ - (πC / πY) * e₃ #### + P₈ = πC + (πC * πR / πY) * e₁ - (πC / πY) * e₃ P₉ = πG + (πG * πY / πR) * e₁ - (πG / πR) * e₂ P₁₀ = πG * (1 - e₁) P₁₁ = πT * (1 - e₁)