DeBoer Model
DeBoer, R. W., Karemaker, J. M., & Strackee, J. (1987). Hemodynamic fluctuations and baroreflex sensitivity in humans: a beat-to-beat model. American Journal of Physiology-Heart and Circulatory Physiology, 253(3), H680-H689. (DOI)
Theory
Effective pressure:
The systolic pressure is transformed to be in accordance with the sigmoid-shaped activation curve of the baroreflex. The constant $S_0$ defines the working point.
Baroreflex on Heart Rate
The transfer function $G_a(z)$ relates the effective systolic pressure to the RR interval. It models fast vagally mediated and slower, sympathetic, baroreflex effects.
Baroreflex on Peripheral Resistance
The peripheral resistance is influenced by the baroreflex mediated through the sympathetic nervous system reflected in the transfer function $G_b(z)$. $T_0$ is an empirical offset constant (around 3000 ms).
Properties of Myocardium & Respiration
Starling's law governs the pulse pressure through the coupling constant $\gamma$. Respiration also enters through the pulse pressure, modeled as a sine.
Windkessel
Diastolic pressure is derived from the two-element Windkessel model.
Time Propagation
The next beat is calculated through the standard relation:
Usage
CardioModels.DeBoerModel
— TypeDeBoerModel()
A simple structure that stores a DeBoer-model.
The default initialization was taken from the original paper. When constructiong the model, single properties can be defined as keyword arguments. The model has a state, if it was already used in predict!
, otherwise a default is provided in predict
or predict!
.
Examples
julia> model = DeBoerModel()
DeBoerModel
a0: Int64 9
ak: Array{Int64}((6,)) [0, 1, 2, 3, 2, 1]
c1: Int64 -1360
bk: Array{Int64}((6,)) [0, 2, 4, 6, 4, 2]
TStar: Int64 3585
γ: Float64 0.016
c2: Float64 32.2
c3: Float64 1.0957070684897647
A: Int64 3
fresp: Float64 0.3
resp: #30 (function of type Main.CardioModels.var"#30#36"{Int64, Float64})
noiseI: Distributions.Normal{Float64}
noiseS: Distributions.Normal{Float64}
operationPoint: Int64 120
F: #31 (function of type Main.CardioModels.var"#31#37"{Int64})
hasState: Bool false
S: Nothing nothing
Seff: Nothing nothing
D: Nothing nothing
I: Nothing nothing
T: Nothing nothing
ρ: Nothing nothing
time: Int64 0
CardioModels.predict
— Methodpredict(model::DeBoerModel, n::Int; burnIn::Int = 0)
Predicts 'N' values of the cardiovascular variables for the respective model. With 'burnIn' a certain number af values can be dropped in the beginning.
Examples
julia julia> S, D, I, T, ρ = predict(model, 100) (S = [...], D = [...], I = [...], T = [...], ρ = [...])
CardioModels.predict!
— Methodpredict!(model::DeBoerModel, n::Int; burnIn::Int = 0)
Updates the state of the state of the model with the last predicted values. Predicts 'N' values of the cardiovascular variables for the respective model and updates its state. With 'burnIn' a certain number af values can be dropped in the beginning.
Examples
julia julia> S, D, I, T, ρ = predict!(model, 100) (S = [...], D = [...], I = [...], T = [...], ρ = [...]) julia> model.hasState true