File Exchange

image thumbnail

Generic SimBiology Physiologically-based Pharmacokinetic (PBPK) model

version (181 KB) by

SimBiology implementation of a generic PBPK model. Human fasted, Human fed and Rat physiologies.



View License

SimBiology project file and some associated MATLAB files that contain a generic and adaptable PBPK model. Human fasted, Human fed and Rat (new!) physiologies are included as variants.
Tested on R2012a and R2011b and should work with earlier releases as well. Does not contain tasks or the Renin-Angiotensin model as used in the June 2012 webinar. Please see for the project used in that webinar.


Model Structure:
Peters, S. A. (2008). Evaluation of a generic physiologically based pharmacokinetic model for lineshape analysis. Clinical pharmacokinetics, 47(4), 261-75.

Tissue Partition Coefficients:
Rodgers, T., & Rowland, M. (2006). Physiologically Based Pharmacokinetic Modelling 2 : Predicting the Tissue Distribution of Acids , Very Weak Bases , Neutrals and Zwitterions. Journal of pharmaceutical sciences, 95(6), 1238-1257.

Rodgers, T., Leahy, D., & Rowland, M. (2005). Physiologically based pharmacokinetic modeling 1: predicting the tissue distribution of moderate-to-strong bases. Journal of pharmaceutical sciences, 94(6), 1259-76.

Comments and Ratings (9)


Sven (view profile)

There might be an error (I have no access to either Matlab or SimBiology anymore), but it would be different from what you suggest.
See the equation in the reference:

dCT/dt = QT/VT * (CAR - (CT * R/ (f * K) )

or just the input into Thymus:

dCT/dt = QT/VT * CAR

so division by input organ volume

the reason for dividing it by the Thymus volume is to account for the different volumes of arterial blood and thymus. The issue I see is that I multiply with VAR which is nowhere to be found in the reference. Can't remember the reason for that and cannot verify now. If you still think there is an issue with your alleged error, please correct it and reupload to the file exchange. Otherwise please contact arthur.goldsipe [at] (sorry Arthur for pulling you into this, I don't have access to these old things anymore).


well, I'm pretty sure that the model has an error. Here is for example the ode of the model for the change of concentration in thymus:

d(Thymus.Drug)/dt = 1/Thymus*( (1/Thymus*(organismBloodFlowThymus*[Arterial Blood].Drug))*[Arterial Blood] - (1/Thymus*organismBloodFlowThymus*Thymus.Drug*DrugBloodPlasmaRatio/(DrugFractionUnbound*KTissuePartitionThymus*DrugTissueFactor)))*Thymus)

As we can see, the second "1/Thymus" needs to be replaced by "1/[Arterial Blood]", so that it cancels out. This would give "organismBloodFlowThymus*[Arterial Blood].Drug" as the correct input rate in amount/time into thymus (as it is described in the reference).

(Assuming Thymus, [Arterial Blood] are Vol, *.Drug are Conc)

Am I wrong?


Sven (view profile)

Hey Sebastian,
sorry for replying only now, I'm not at MathWorks anymore which is where I build the model. Check the reference for more info on the model, but the reason for the equation, as far as I can remember it, is:

organismBloodFlowTISSUE is in [volume/time]
drug is in [amount/volume]
TISSUE is in [volume]

so the second part of the equation translates concentration per time into amount per time which is then divided by tissue volume to get concentration in tissue changed per unit time. Does that make sense to you?


do I miss something or is there an error in the code. Each arterial input (except gut) and the venous input into lung is coded as:
(1/TISSUE*(organismBloodFlowTISSUE*[Arterial Blood].Drug))

(with TISSUE: kindey, heart, bone, etc.)

I would suggest this code:
(1/[Arterial Blood]*(organismBloodFlowTISSUE*[Arterial Blood].Drug))

or am I wrong?

Wan Su

Wan Su (view profile)

Oh! Sorry. There were answers already. It's working well now. Thank you.

Wan Su

Wan Su (view profile)

When I run this model file, there were 14 errors. Belows are error messages.

"The name 'calculateParacellularAbsorption' in rule 'Paracellular Absorption' does not refer to any in-scope species, parameters, or compartments",
"The name 'calculateTissuePartition' in rule 'Adipose Tissue Partition Coefficient' does not refer to any in-scope species, parameters, or compartments."
and same message for bone, brain, gut, heart, liver, lung, muscle, pancreas, skin, thymus, spleen. What should I do?


Raj (view profile)

Duh ! As a long time user I should have figured that one out !!! Many thanks for reminding me !!

Sven Mesecke

Hi Raj,
the first warning should not concern you, everything will work fine.
The error message is also slightly misleading. The download file contains two additional files (calculate...). These must be on the MATLAB path as they are called by SimBiology when you try to run the model. Either add the folder to the MATLAB path or navigate in the MATLAB Desktop to the folder. Does this solve your problems?


Raj (view profile)

This is an excellent tool but doesn't work in my 2012a version. Upon opening the project file, Simbiology complains as follows:

"The SB project version being loaded is newer than the SB version being run. Some features of the project may not be supported in this version"

Also, the additional rules don't work ("does not refer to any in-scope species, parameters or compartment").

Any ideas?


Updated license


Updated Screenshot

MATLAB Release
MATLAB 7.14 (R2012a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video