Baselli Model
Baselli, G., Cerutti, S., Civardi, S., Malliani, A., & Pagani, M. (1988). Cardiovascular variability signals: towards the identification of a closed-loop model of the neural control mechanisms. IEEE Transactions on Biomedical Engineering, 35(12), 1033-1046. (DOI))
Theory
The model is defined through the following three equations, where $G$ denotes an all-zero and $M$ an all-pole transfer function:
It can be identified from data as an ARXAR-model using the generalized least squares method (via arxar).
Usage
CardioModels.BaselliModel
— TypeBaselliModel()
A simple structure that stores a Baselli-model in form of transfer functions. It has a recipe defined to get some bode plots.
The default initialization is not proper, to get a working model use 'getModel(sim)', which gives one of the four configurations from the original paper.
Examples
julia> model = getModel(1)
[ Info: Simulation 1: Respiration enters on S (LF are generated in the S, S loop)
BaselliModel...
The model can be plotted using Plots.jl:
plot(getModel(1), lab = "")
CardioModels.getModel
— FunctiongetModel(sim::Int)
Gives a proper Baselli-model taken from the original paper, where 'sim' can take the value from 1:4, with the meaning:
- 1: Respiration enters on S (LF are generated in the S, S loop)
- 2: Respiration enters on I (LF are generated in the S, S loop)
- 3: The LF are generated by S regulating feedback in the S, S loop (respiration enters both on S and on I)
- 4: LF are generated externally from the closed-loop system (i.e., via a central command-respiration enters both on S and on I)
CardioModels.predict
— Methodpredict(model::BaselliModel, N::Int; burnIn::Int = 50)
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, I, ρ = predict(model, 100) (S = [...], I = [...], ρ = [...])
CardioModels.fitBaselli
— FunctionfitBaselli(S::Vector{<:Real}, I::Vector{<:Real}, ρ::Vector{<:Real}; ...)
Fit the Baselli model from measured or generated data.
Arguments
- S: Systolic blood pressure
- I: RR Interval series
- ρ: Respiration
Keyword Arguments
- na, nb, nc: order of the respective transfer functions, default to 10
- iterations: maximum number of iterations, defaults to 10
- δmin: minimum changes that defines convergence, defaults to 0.001
- verbose: get more information
- estimator: defaults to
\
least squares
Return
Returns a BaselliModel from which physiological indices can be inferrede by postprocess()
Example
model = getModel(1)
result = predict(model, 100)
modelEst = fitBaselli(result...)
CardioModels.postprocess
— Functionpostprocess(M::BaselliModel, S::Vector{<:Real}, I::Vector{<:Real})
Extract physiologically relevant indices from the Baselli model by means of post processing as defindes in:
Baselli et al. (1994) Model for the assessment of heart period and arterial pressure variability interactions and of respiration influences
Indices
- α: Measure for baroreflex sensitivity
- gSI: Mechanical effects and properties of the myocardium, Starling's law
- gSS: Mechanical effects of blood pressure regulation (Windkessel)
- GssLF: Index of the contribution of AP regulation to the genesis of LF oscillations
- Θt/Θs: Respiratory effects
- PusLF/PutLF: Residual signals and detection of different L F sources