From 1a84043f33aec3c7d32a716823bb713dd972ca79 Mon Sep 17 00:00:00 2001 From: Torkel Date: Fri, 23 Apr 2021 11:24:15 +0200 Subject: [PATCH] additional_tests --- test/custom_functions.jl | 93 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 92 insertions(+), 1 deletion(-) diff --git a/test/custom_functions.jl b/test/custom_functions.jl index 45dfb105e0..9537ef9e1f 100644 --- a/test/custom_functions.jl +++ b/test/custom_functions.jl @@ -40,4 +40,95 @@ for factor in [1e-2, 1e-1, 1e0, 1e1, 1e2] @test all(abs.(f1(u0,p,t) .- f2(u0,p,t)) .< 10e-10) @test all(abs.(f1.jac(u0,p,t) .- f2.jac(u0,p,t)) .< 10e-10) @test all(abs.(g1(u0,p,t) .- g2(u0,p,t)) .< 10e-10) -end \ No newline at end of file +end + +### Tests that the various notations gives identical results ### + +# Michaelis-Menten function. +mm_network = @reaction_network begin + (1.,1.), 0 ↔ X + mm(X,v,K), 0 --> X1 + Mm(X,v,K), 0 --> X2 + MM(X,v,K), 0 --> X3 +end v K +f_mm = ODEFunction(convert(ODESystem,mm_network),jac=true) + +u0 = 10*rand(rng,length(get_states(mm_network))) +p = 10*rand(rng,length(get_ps(mm_network))) +t = 10*rand(rng) + +f_mm_output = f_mm(u0,p,t)[2:end] +f_mm_jac_output = f_mm.jac(u0,p,t)[2:end,1] +@test (maximum(f_mm_output) - minimum(f_mm_output)) .< 100*eps() +@test (maximum(f_mm_jac_output) - minimum(f_mm_jac_output)) .< 100*eps() + +# Repressing Michaelis-Menten function. +mmR_network = @reaction_network begin + (1.,1.), 0 ↔ X + mmR(X,v,K), 0 --> X1 + MmR(X,v,K), 0 --> X2 + MMR(X,v,K), 0 --> X3 +end v K +f_mmR = ODEFunction(convert(ODESystem,mmR_network),jac=true) + +u0 = 10*rand(rng,length(get_states(mmR_network))) +p = 10*rand(rng,length(get_ps(mmR_network))) +t = 10*rand(rng) + +f_mmR_output = f_mmR(u0,p,t)[2:end] +f_mmR_jac_output = f_mmR.jac(u0,p,t)[2:end,1] +@test (maximum(f_mmR_output) - minimum(f_mmR_output)) .< 100*eps() +@test (maximum(f_mmR_jac_output) - minimum(f_mmR_jac_output)) .< 100*eps() + +# Hill function. +hill_network = @reaction_network begin + (1.,1.), 0 ↔ X + hill(X,v,K,2), 0 --> X1 + Hill(X,v,K,2), 0 --> X2 +end v K +f_hill = ODEFunction(convert(ODESystem,hill_network),jac=true) + +u0 = 10*rand(rng,length(get_states(hill_network))) +p = 10*rand(rng,length(get_ps(hill_network))) +t = 10*rand(rng) + +f_hill_output = f_hill(u0,p,t)[2:end] +f_hill_jac_output = f_hill.jac(u0,p,t)[2:end,1] +@test (maximum(f_hill_output) - minimum(f_hill_output)) .< 100*eps() +@test (maximum(f_hill_jac_output) - minimum(f_hill_jac_output)) .< 100*eps() + +# Repressing Hill function. +hillR_network = @reaction_network begin + (1.,1.), 0 ↔ X + hillR(X,v,K,2), 0 --> X1 + HillR(X,v,K,2), 0 --> X2 +end v K +f_hillR = ODEFunction(convert(ODESystem,hillR_network),jac=true) + +u0 = 10*rand(rng,length(get_states(hillR_network))) +p = 10*rand(rng,length(get_ps(hillR_network))) +t = 10*rand(rng) + +f_hillR_output = f_hillR(u0,p,t)[2:end] +f_hillR_jac_output = f_hillR.jac(u0,p,t)[2:end,1] +@test (maximum(f_hillR_output) - minimum(f_hillR_output)) .< 100*eps() +@test (maximum(f_hillR_jac_output) - minimum(f_hillR_jac_output)) .< 100*eps() + +# Activation/repressing Hill function. +hillAR_network = @reaction_network begin + (1.,1.), 0 ↔ (X,Y) + hillC(X,Y,v,K,2), 0 --> X1 + HillC(X,Y,v,K,2), 0 --> X2 + hillAR(X,Y,v,K,2), 0 --> X3 + HillAR(X,Y,v,K,2), 0 --> X4 +end v K +f_hillAR = ODEFunction(convert(ODESystem,hillAR_network),jac=true) + +u0 = 10*rand(rng,length(get_states(hillAR_network))) +p = 10*rand(rng,length(get_ps(hillAR_network))) +t = 10*rand(rng) + +f_hillAR_output = f_hillAR(u0,p,t)[3:end] +f_hillAR_jac_output = f_hillAR.jac(u0,p,t)[3:end,1] +@test (maximum(f_hillAR_output) - minimum(f_hillAR_output)) .< 100*eps() +@test (maximum(f_hillAR_jac_output) - minimum(f_hillAR_jac_output)) .< 100*eps() \ No newline at end of file