@@ -1093,6 +1093,59 @@ ident_funcs = [
10931093]
10941094push!(test_cases, (ode = ode, ident_funcs = ident_funcs, with_states = false))
10951095
1096+ # Examples from https://doi.org/10.1016/j.mbs.2011.06.001
1097+ # From Section 6
1098+ ode = @ODEmodel(
1099+ x1' (t) = - (a1 + a2) * x1(t) * Vm / (Km + x1(t)) + k21 * x2(t) + b1 * u(t),
1100+ x2' (t) = a2 * x1(t) * Vm / (Km + x1(t)) - (k02 + k12) * x2(t),
1101+ y(t) = c * x1(t)
1102+ )
1103+ ident_funcs = [
1104+ k02 + k12,
1105+ b1 * c,
1106+ Km * c,
1107+ Vm * a1 * c + Vm * a2 * c,
1108+ (a2 * k21) // (a1 + a2), # this one is different
1109+ ]
1110+ ident_funcs_states = [
1111+ k02 + k12,
1112+ b1 * c,
1113+ Km * c,
1114+ x1 * c,
1115+ x2 * c * k21,
1116+ (Vm * a2) // x2,
1117+ Vm * a1 * c + Vm * a2 * c,
1118+ ]
1119+ push!(test_cases, (ode = ode, ident_funcs = ident_funcs, with_states = false))
1120+ push!(test_cases, (ode = ode, ident_funcs = ident_funcs_states, with_states = true))
1121+
1122+ # From Section 11
1123+ ode = @ODEmodel(
1124+ T' (t) = lambda - rho * T(t) - beta * T(t) * V(t),
1125+ Tast' (t) = beta * T(t) * V(t) - delta * Tast(t),
1126+ V' (t) = N * delta * Tast(t) - c * V(t),
1127+ y(t) = V(t)
1128+ )
1129+ ident_funcs = [
1130+ rho,
1131+ beta,
1132+ c + delta,
1133+ c * delta,
1134+ N * delta * lambda,
1135+ ]
1136+ ident_funcs_states = [
1137+ rho,
1138+ beta,
1139+ V,
1140+ c + delta,
1141+ c * delta,
1142+ T // lambda,
1143+ N * delta * lambda,
1144+ Tast * N * delta + V * delta,
1145+ ]
1146+ push!(test_cases, (ode = ode, ident_funcs = ident_funcs, with_states = false ))
1147+ push!(test_cases, (ode = ode, ident_funcs = ident_funcs_states, with_states = true ))
1148+
10961149@testset " Identifiable functions of parameters" begin
10971150 p = 0.99
10981151 for case in test_cases
0 commit comments