PD parameter effects

Hi, I am still experimenting Propofol infsion with Pulse Physiology Engine. I try to understand the effect of each PD parameters, so I changed one PD parameters at once. However, I observe the following phenomenem. For example, I changed the DiastolicPressureModifier, but all the vital signs output, including heart rate and systolic pressure change. I wonder if that is expected(probably stablizing the patient?), and why it happens? Could you point me to the base code that does this stablizing?

This is the plot where I modified the DiastolicPressureModifier. The baseline is -0.1.

Thank you very much!

Yes, this is expected.
Pulse is a mechanistic system, so if you modify one thing, it will have down stream effects to the system

Take a look at the HeartDriver, BeginDriverCycle, CalculateHeartElastance and AdjustVascularTone (where drugs are applied)

The translation of the drug effects to the cardiovascular system is here

Thanks for your reply!

Just here to check my understanding. It seems that HeartDriver() is called every timestep in the PreProcess(), and BeginDriverCycle , CalculateHeartElastance and AdjustVascularTone are called in the HeartDriver(). In HeartDriver, the heart rate and elastance, and vascular resistance and compliance will be modified based on the drug effect (which I think based mostly on the change in heart rate and mean blood pressure). Then CalculateVitalSigns() computes the vital signs. So the calculated change in diastolic and systolic pressure (deltaDiastolicBP_mmHg in DrugModel.cpp) are not directly applied to the vital signs?

Many thanks,

That is correct

By applying the delta modifiers to the heart, the circuit calculates the new volumes, pressures, and flows per those adjustments by advancing time 0.02s on the circuit, and the new volume, pressue, flow values are used to calculate clinical vital sign values.

I pointed you to the integration branch
Now that you have looked at that, take a look at the latest and greatest updates here:

This branch is providing a finer adjustment of the circuit for pressure based modifiers

We are about to merge this branch into integration.


The functions HeartDriver(), BeginDriverCycle, CalculateHeartElastance and AdjustVascularTone, look the same though. Am I looking at the right functions? Probably you changed the other parts?

You are right, we did rebase integration on this branch, the current updates are only for cardiovascular effects related to pulmonary injury, sorry for the confusion

So you can see how systolic and diastolic PD modifiers are combined into a Mean Pressure modifers in Drugs::CalculateDrugEffects which is then used in the Cardiovascular::AdjustVascularTone method is where modifiers are applied to systemic vascular resistances

Thanks! I get a better understanding of the drug effects in Pulse engine now!
I have another question about the output vital signs. They seem to remain the same for every 0.96 second. I wonder if you have done any quantization to the vital signs?

Some of the clinical values only get updated at the end of a cardiac cycle in the RecordAndResetCardiacCycle method

Ah, I see the method is called only in BeginDriverCycle. I see now. For example, ArterialPressureis updated in the CalculateVitalSigns, so it’s updated time to time. Diastolic and systolic pressure, and heart rate are only updated in RecordAndResetCardiacCycle, so they are updated every cycle.

Yeah, at 60 bpm = per second, higher heart rate, more frequent the update is


I’m wondering when is this aorta pressure calculated. I can see that it’s in the compliance and resistance path. Is it the CircuitCalculator that’s doing the job? May I ask if you can point me to the code? I guess it’s modeled as potential?

Aorta pressure code: https://gitlab.kitware.com/physiology/engine/-/blob/integration/src/cpp/engine/common/system/physiology/CardiovascularModel.cpp?ref_type=heads#L1099

Thank you so much!

Yes, the circuit calculator computes the pressure, the process starts here, and is done by code here. You can learn more about it here and here