gigablochs.flow.holdsworth_cca

Contents

gigablochs.flow.holdsworth_cca#

gigablochs.flow.holdsworth_cca(start=0, stop=2, num=1000, interbeat_interval=0.917, cross_section=None, systolic_velocity=0.76, diastolic_velocity=0.3, **kwargs)[source]#

Generate a blood flow velocity waveform for the common carotid artery (CCA) based on the model by Holdsworth et al. (1999) Holdsworth et al. [HNF+99].

Parameters:
  • start (float, optional) – The starting time of the waveform in seconds. Default is 0.

  • stop (float, optional) – The stopping time of the waveform in seconds. Default is 2.

  • num (int, optional) – The number of time points to generate. Default is 1000.

  • interbeat_interval (float, optional) – The interval between heartbeats (the pulse period) in seconds. Default is 0.917.

  • cross_section (array_like, optional) – The normalized flow velocity dependence across the vessel cross-section.

  • systolic_velocity (array_like, optional) – The peak systolic velocity in m/s. Default is 0.76 following Zhao et al. (2016) Zhao et al. [ZVS+16].

  • diastolic_velocity (array_like, optional) – The diastolic velocity in m/s. Default is 0.3 following Zhao et al. (2016) Zhao et al. [ZVS+16].

  • **kwargs (dict) – Additional keyword arguments to pass to the integrate_trajectory function.

Returns:

  • time_steps (ndarray) – Array of time points in seconds.

  • velocity_waveform (ndarray) – Array of blood flow velocities in m/s corresponding to the time points.

  • position_waveform (ndarray) – Array of blood flow position for a sample bolus in m.

Notes

NaN waveforms are returned anytime diastolic_velocity is greater than systolic_velocity.

The waveform is generated by interpolating key features of the cross-section’s peak velocity time course in the CCA, averaged across subjects, taken from Table 2 in Holdsworth et al. (1999) Holdsworth et al. [HNF+99]. Additional average interpolated points are estimated and included in the model. A cubic spline scipy.interpolate.CubicSpline is fit to the data points, with a periodic boundary condition.

Examples

from bokeh.plotting import figure, show
from bokeh.io import output_notebook
output_notebook()

from gigablochs import flow

time, velocity, position = flow.holdsworth_cca(diastolic_velocity=0.12)

plot = figure(title='Common Carotid Artery Bloodflow Model', x_axis_label='Time (s)', y_axis_label='Bloodflow',
              width=680, height=400)
plot.line(time, velocity * 100, legend_label='Velocity (cm/s)', line_color='blue')
plot.line(time, position * 100, legend_label='Position (cm)', line_color='purple')
plot.legend.click_policy = 'hide'
show(plot)