Skip to content

Commit 7226c53

Browse files
committed
most robust pd precomputation
1 parent 28ce635 commit 7226c53

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

addons/PhysiPKPD/src/PhysiPKPD_PD.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,13 +306,40 @@ void setup_pd_model_auc(Pharmacodynamics_Model *pPD, pugi::xml_node substrate_no
306306
// internalized drug amount (or concentration) simply decreases as A(dt) = A0 * exp(-metabolism_rate * dt);
307307
pPD->metabolism_reduction_factor = exp(-metabolism_rate * pPD->dt);
308308

309+
// Damage (D) follows D' = A - linear_rate * D - constant_rate ==> D(dt) = d_00 + d_10 * A0 + d_01 * D0; defining d_00, d_10, and d_01 here
310+
pPD->initial_damage_coefficient = exp(-linear_repair_rate * pPD->dt); // d_01
311+
if (linear_repair_rate == 0)
312+
{
313+
pPD->damage_constant = -constant_repair_rate * pPD->dt; // d_00
314+
}
315+
else
316+
{
317+
pPD->damage_constant = (constant_repair_rate / linear_repair_rate) * (pPD->initial_damage_coefficient - 1); // d_00
318+
}
319+
if (metabolism_rate != linear_repair_rate)
320+
{
321+
pPD->initial_substrate_coefficient = (pPD->metabolism_reduction_factor - pPD->initial_damage_coefficient) / (linear_repair_rate - metabolism_rate); // d_10
322+
}
323+
else
324+
{
325+
pPD->initial_substrate_coefficient = pPD->initial_damage_coefficient * pPD->dt; // d_10
326+
}
327+
/* OLD CODE USED TO COMPUTE d_00, d_10, and d_01
309328
if (linear_repair_rate == 0)
310329
{
311330
// Damage (D) follows D' = A - constant_rate ==> D(dt) = d_00 + d_10 * A0 + 1 * D0; defining d_00 and d_01 here
312331
pPD->damage_constant = -constant_repair_rate * pPD->dt; // d_00
313-
pPD->initial_substrate_coefficient = (1 - exp(-metabolism_rate * pPD->dt)) / metabolism_rate; // d_10
332+
if (metabolism_rate == 0)
333+
{
334+
pPD->initial_substrate_coefficient = pPD->dt; // d_10
335+
}
336+
else
337+
{
338+
pPD->initial_substrate_coefficient = (1 - pPD->metabolism_reduction_factor) / metabolism_rate; // d_10
339+
}
314340
pPD->initial_damage_coefficient = 1.0; // d_01
315341
}
342+
316343
else
317344
{
318345
// Damage (D) follows D' = A - linear_rate * D - constant_rate ==> D(dt) = d_00 + d_10 * A0 + d_01 * D0; defining d_00, d_10, and d_01 here
@@ -334,6 +361,7 @@ void setup_pd_model_auc(Pharmacodynamics_Model *pPD, pugi::xml_node substrate_no
334361
pPD->initial_substrate_coefficient = pPD->initial_damage_coefficient * pPD->dt; // d_10
335362
}
336363
}
364+
*/
337365
}
338366
}
339367

0 commit comments

Comments
 (0)