Skip to content

Commit 2ec1e52

Browse files
authored
Merge pull request #451 from SciML/EAIHRD
adding EAIHRD as test and benchmarks
2 parents 9c34ea2 + d7ffa68 commit 2ec1e52

File tree

2 files changed

+47
-15
lines changed

2 files changed

+47
-15
lines changed

benchmarking/benchmarks.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,6 +1266,19 @@ benchmarks = Dict(
12661266
y2(t) = T(t)
12671267
)
12681268
),
1269+
:EAIHRD => Dict(
1270+
:name => "EIHRD epidemiological model (from https://arxiv.org/pdf/2406.17827)",
1271+
:ode => @ODEmodel(
1272+
A'(t) = a * E(t) - r1 * A(t),
1273+
I'(t) = s * E(t) - (h + r2) * I(t),
1274+
H'(t) = h * I(t) - (r3 + d) * H(t),
1275+
R'(t) = r1 * A(t) + r2 * I(t) + r3 * H(t),
1276+
D'(t) = d * H(t),
1277+
E'(t) =
1278+
(N - A(t) - I(t) - H(t) - R(t) - D(t) - E(t)) * (c1 * A(t) + c2 * I(t)) - (a + s) * E(t),
1279+
y(t) = D(t)
1280+
)
1281+
),
12691282
)
12701283

12711284
# the NFkB example

test/identifiable_functions.jl

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -173,22 +173,19 @@ ode = StructuralIdentifiability.@ODEmodel(
173173
x4'(t) = k41 * x1(t) - k14 * x4(t),
174174
y1(t) = x1(t)
175175
)
176-
ident_funcs = [
177-
k01 // one(k01),
178-
k12 * k13 * k14 // one(k01),
179-
k31 * k21 * k41 // one(k01),
180-
k12 + k13 + k14 // one(k01),
181-
k31 + k21 + k41 // one(k01),
182-
k12 * k13 + k12 * k14 + k13 * k14 // one(k01),
183-
k31 * k21 + k31 * k41 + k21 * k41 // one(k01),
184-
k31 * k12 - 2 * k31 * k13 + k31 * k14 - 2 * k21 * k12 +
185-
k21 * k13 +
186-
k21 * k14 +
187-
k12 * k41 +
188-
k13 * k41 - 2 * k14 * k41 // one(k01),
189-
]
176+
ident_funcs =
177+
[
178+
k12 * k13 + k12 * k14 + k13 * k14,
179+
k01,
180+
k21 + k31 + k41,
181+
k12 + k13 + k14,
182+
k21 * k31 * k41,
183+
k12 * k31 + k12 * k41 + k13 * k21 + k13 * k41 + k14 * k21 + k14 * k31,
184+
k21 * k31 + k21 * k41 + k31 * k41,
185+
k12 * k13 * k14,
186+
] .// one(k01)
190187
# Too slow with hybrid strategy :(
191-
# push!(test_cases, (ode = ode, ident_funcs = ident_funcs))
188+
push!(test_cases, (ode = ode, ident_funcs = ident_funcs))
192189

193190
# Biohydrogenation_io
194191
ode = StructuralIdentifiability.@ODEmodel(
@@ -1074,6 +1071,28 @@ ident_funcs_states = [
10741071
push!(test_cases, (ode = ode, ident_funcs = ident_funcs, with_states = false))
10751072
push!(test_cases, (ode = ode, ident_funcs = ident_funcs_states, with_states = true))
10761073

1074+
# EAIHRD model from https://arxiv.org/pdf/2406.17827
1075+
ode = @ODEmodel(
1076+
A'(t) = a * E(t) - r1 * A(t),
1077+
I'(t) = s * E(t) - (h + r2) * I(t),
1078+
H'(t) = h * I(t) - (r3 + d) * H(t),
1079+
R'(t) = r1 * A(t) + r2 * I(t) + r3 * H(t),
1080+
D'(t) = d * H(t),
1081+
E'(t) =
1082+
(N - A(t) - I(t) - H(t) - R(t) - D(t) - E(t)) * (c1 * A(t) + c2 * I(t)) -
1083+
(a + s) * E(t),
1084+
y(t) = D(t)
1085+
)
1086+
ident_funcs = [
1087+
r1,
1088+
d + r3,
1089+
a + h + r2 + s,
1090+
a * h + a * r2 + h * s + r2 * s,
1091+
(d * h * s) // (a * c1 + c2 * s),
1092+
(a * c1 * h + a * c1 * r2 + c2 * r1 * s)//(a * c1 + c2 * s),
1093+
]
1094+
push!(test_cases, (ode = ode, ident_funcs = ident_funcs, with_states = false))
1095+
10771096
@testset "Identifiable functions of parameters" begin
10781097
p = 0.99
10791098
for case in test_cases

0 commit comments

Comments
 (0)