carputils
Doxygen code documentation for the python framework controlling openCARP
Classes | Functions | Variables
carputils.fitting.klotz Namespace Reference

Implementation from Klotz's paper 'A computational method of prediction of the end-diastolic pressure-volume relationship by single beat'. More...

Classes

class  KlotzRelation
 Represents the EDPVR determined by Klotz from a single volume, pressure measurement. More...
 

Functions

def V0 (Vm, Pm)
 Determine the zero-pressure volume from the Klotz relation. More...
 
def V30 (Vm, Pm)
 Determine the volume at 30 mmHg from the Klotz relation. More...
 
def V15 (Vm, Pm)
 Determine the volume at 15 mmHg from the Klotz relation. More...
 
def beta (Vm, Pm)
 Determine the beta parameter of the Klotz EDPVR. More...
 
def alpha (Vm, Pm)
 Determine the alpha parameter of the Klotz EDPVR. More...
 

Variables

float MMHG2KPA = 0.133322387415
 
float KPA2MMHG = 1.0 / MMHG2KPA
 
float AN = 27.78
 
float BN = 2.76
 
 fig = pyplot.figure()
 
 ax = fig.add_subplot(1,1,1)
 
 Vm = float(sys.argv[1])
 
 Pm = float(sys.argv[2]) * MMHG2KPA
 
list V = []
 
 P = KlotzRelation(Vm, Pm)
 
 vdat = np.linspace(0, 170, 200)
 
 pdat = P(vdat)
 
 c
 
 label
 
 marker
 
 loc
 
 color
 

Detailed Description

Implementation from Klotz's paper 'A computational method of prediction of the end-diastolic pressure-volume relationship by single beat'.

Theory

From Klotz's 2007 Nature Protocols paper 'A computational method of prediction of the end-diastolic pressure-volume relationship by single beat', the following equations are taken.

Equations 2 and 5 seem to describe the end-diastolic pressure-volume relation (EDPVR) as:

.. math:

P = A_n V_n^{B_n}

where :math:P is cavity pressure, :math:V_n is normalised volume, and the constants :math:A_n and :math:B_n were determined emperically in their earlier study as 27.78 mmHg and 2.76 respectively.

Normalised volume :math:V_n is determined as explained in equation 4 as:

.. math:

V_n = \frac{V - V_0}{V_30 - V_0}

where :math:V is the cavity volume, :math:V_0 is the volume at zero pressure and :math:V_30 is the volume at a pressure of 30 mmHg.

The above can be arranged to equation 6, giving the :math:V_{30} constant:

.. math:

V_{30} = V_0 + \frac{V - V_0}{\left(\frac{P_m}{A_n}\right)^{(1/B_n)}}

:math:V_0 is determined using the emperical relation:

.. math:

V_0 = V_m (0.6 - 0.006 P_m)

where :math:V_m and :math:P_m are a pressure-volume pair measured.

The equation :math:P = \alpha V^\beta is then fitted to the above :math:(V_m, P_m) point, giving the following relations for the constants :math:\alpha and :math:\beta:

.. math:

\beta = \frac{\log\left(\tfrac{P_m}{30}\right)}
             {\log\left(\tfrac{V_m}{V_{30}}\right)}

\alpha = \frac{30}{V_{30}^\beta}

To avoid a singularity in the above equations when :math:P_m \rightarrow 30, the above equations were reposed as:

.. math:

\beta = \frac{\log\left(\tfrac{P_m}{15}\right)}
             {\log\left(\tfrac{V_m}{V_{15}}\right)}

\alpha = \frac{P_m}{V_m^\beta}

where :math:V_{15} is determined analytically as:

.. math:

V_{15} = 0.8 (V_{30} - V_0) + V_0

The paper advises using the first form of the :math:\alpha and :math:\beta equations (utilising :math:V_{30}) when using a :math:P_m value up to 22 mmHg and the second form (utilising :math:V_{15}) above 22 mmHg.

Function Documentation

◆ alpha()

def carputils.fitting.klotz.alpha (   Vm,
  Pm 
)

Determine the alpha parameter of the Klotz EDPVR.

Parameters

Vm float The volume of a measured state on the EDPVR (ml) Pm float The pressure of a measured state on the EDPVR (kPa)

Returns

float The alpha parameter

◆ beta()

def carputils.fitting.klotz.beta (   Vm,
  Pm 
)

Determine the beta parameter of the Klotz EDPVR.

Parameters

Vm float The volume of a measured state on the EDPVR (ml) Pm float The pressure of a measured state on the EDPVR (kPa)

Returns

float The beta parameter

◆ V0()

def carputils.fitting.klotz.V0 (   Vm,
  Pm 
)

Determine the zero-pressure volume from the Klotz relation.

Parameters

Vm float The volume of a measured state on the EDPVR (ml) Pm float The pressure of a measured state on the EDPVR (kPa)

Returns

float The zero-pressure volume (ml)

◆ V15()

def carputils.fitting.klotz.V15 (   Vm,
  Pm 
)

Determine the volume at 15 mmHg from the Klotz relation.

Parameters

Vm float The volume of a measured state on the EDPVR (ml) Pm float The pressure of a measured state on the EDPVR (kPa)

Returns

float The volume at 15 mmHg (ml)

◆ V30()

def carputils.fitting.klotz.V30 (   Vm,
  Pm 
)

Determine the volume at 30 mmHg from the Klotz relation.

Parameters

Vm float The volume of a measured state on the EDPVR (ml) Pm float The pressure of a measured state on the EDPVR (kPa)

Returns

float The volume at 30 mmHg (ml)

Variable Documentation

◆ AN

float carputils.fitting.klotz.AN = 27.78

◆ ax

carputils.fitting.klotz.ax = fig.add_subplot(1,1,1)

◆ BN

float carputils.fitting.klotz.BN = 2.76

◆ c

carputils.fitting.klotz.c

◆ color

carputils.fitting.klotz.color

◆ fig

carputils.fitting.klotz.fig = pyplot.figure()

◆ KPA2MMHG

float carputils.fitting.klotz.KPA2MMHG = 1.0 / MMHG2KPA

◆ label

carputils.fitting.klotz.label

◆ loc

carputils.fitting.klotz.loc

◆ marker

carputils.fitting.klotz.marker

◆ MMHG2KPA

float carputils.fitting.klotz.MMHG2KPA = 0.133322387415

◆ P

carputils.fitting.klotz.P = KlotzRelation(Vm, Pm)

◆ pdat

carputils.fitting.klotz.pdat = P(vdat)

◆ Pm

float carputils.fitting.klotz.Pm = float(sys.argv[2]) * MMHG2KPA

◆ V

carputils.fitting.klotz.V = []

◆ vdat

carputils.fitting.klotz.vdat = np.linspace(0, 170, 200)

◆ Vm

carputils.fitting.klotz.Vm = float(sys.argv[1])