An example of a PBPK model
Organ/Tissue |
Blood flow, Q (mL/min) |
Organ Volume, V (mL) |
Tissue/Blood Partition Coefficient, R |
Clearance, CL (mL/min) |
---|---|---|---|---|
Venous | 2,700 | 800 | 1.0 | |
Arterial | 2,700 | 1,600 | 1.0 | |
Lung | 2,700 | 375 | 0.9 | |
Liver | 460 | 790 | 0.9 | 76.8 |
Spleen | 75 | 60 | 0.9 | |
Kidney | 330 | 165 | 0.9 | 61.8 |
Heart | 97 | 200 | 0.9 | |
Muscle | 280 | 18,300 | 0.9 | |
Other | 1,458 | 11,710 | 1.0 | |
Total | 2,700 | 34,000 |
Commonly you might have drug concentration data for these tissues. Also, from the literature you can find reasonable values for the blood flow and organ volume (or mass), scaled to the weight of the animal(s). You could also get good values for the clearance from blood concentration and urine amounts versus time data. However, there may be considerable difficulty in the determining values for some of these parameters, such as tissue to blood partition coefficients. It might be reasonable then to fit the model to the data with these parameters entered as adjustable parameters. If available, values for similar compounds may be good starting points. Additionally, there will be some uncertainty in the blood flow values. It might be appropriate to include these as Bayesian adjustable parameters, although not the topic of this tutorial.
One example of a PBPK model with the Components Numbered
Data sets are numbered as well. We can use the same number as for the components except that we may not have data for Arterial blood or Other. Another data set might be drug in urine following clearance from the Kidney.
>cd /Directory/For/This/Analysis >boomer Boomer v3.4.5 Ref: Comput.Meth.Prog.Biomed.,29 (1989) 191-195 David W.A. Bourne Copyright 1986-2018 D.W.A. Bourne See http://www.boomer.org or email david@boomer.org for more info Based on the original MULTI by K. Yamaoka, et.al. J. Pharmacobio-Dyn., 4,879 (1981); ibid, 6,595 (1983); ibid, 8,246 (1985) DATA ENTRY 0) From KEYBOARD 1) From .BAT file -1) From .BAT file (with restart) 2) From KEYBOARD creating .BAT file 3) From .BAT file (quiet mode) -3) From .BAT file (quiet mode-with restart) 4) to enter data only 5) to calculate AUC from a .DAT file -9) to quit -8) Registration Information Enter choice (0-5, -1, -3, -8 or -9) 2 Enter .BAT filename pbpk_sim The output .BAT filename is pbpk_sim.BAT METHOD OF ANALYSIS 0) Normal fitting 1) Bayesian 2) Simulation only 3) Iterative Reweighted Least Squares 4) Simulation with random error or sensitivity analysis 5) Grid Search -5) To perform Monte Carlo run (Only once at the start of BAT file) -4) To perform multi-run (End of BAT file only) -3) To run random number test subroutine -2) To close (or open) .BAT file -1) To finish Enter choice (-3 to 5) 0 Where do you want the output? 0) Terminal screen 1) Disk file Enter choice (0-2) 1 Enter .OUT filename pbpk_fit The output .OUT filename is pbpk_fit.OUT
Enter the parameters for this run. Note parameters 15-17 for PBPK models.
Parameters currently available in Boomer for model building
Enter the Dose - here a bolus 100 mg dose into the Venous component (1).
Enter type# for parameter 1 (-5 to 51) 1 Enter parameter name Dose Enter Dose value 100.0 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter component to receive dose 1 Enter component for F-dependence ( 1 to - 1 or 0 for no dependence) 0 Input summary for Dose (type 1) Fixed value is 100.0 Dose/initial amount added to 1 Enter 0 if happy with input, 1 if not, 2 to start over 0
Enter parameters for the Vein to Lung step and output to the first data set, Venous (1). Note that the value for R(Vein) is 1. The first data set is for Vein.
Enter type# for parameter 2 (-5 to 51) 15 Enter parameter name Vein > Lung Enter Q Vein > Lung value 2700. 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter component to receive flux 3 Enter component to lose flux 1 Input summary for Q Vein > Lung (type 15) Fixed value is 2700. Transfer from 1 to 3 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter V Vein > Lung value 800.0 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter data set (line) number 1 Enter line description [Vein] Input summary for V Vein > Lung (type 16) Fixed value is 800.0 Component 1 added to line 1 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter R Vein > Lung value 1.000 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Input summary for R Vein > Lung (type 17) Fixed value is 1.000 Enter 0 if happy with input, 1 if not, 2 to start over 0
The next step is from Lung to Artery. Here we enter the volume and partition coefficient for the Liver. For organs other than Vein and Artery we will allow R to be adjustable with lower and upper limits specified. The second data set is Lung.
Enter type# for parameter 5 (-5 to 51) 15 Enter parameter name Lung > Artery Enter Q Lung > Artery value 2700. 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter component to receive flux 2 Enter component to lose flux 3 Input summary for Q Lung > Artery (type 15) Fixed value is 2700. Transfer from 3 to 2 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter V Lung > Artery value 375.0 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter data set (line) number 2 Enter line description [Lung] Input summary for V Lung > Artery (type 16) Fixed value is 375.0 Component 3 added to line 2 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter R Lung > Artery value 0.9000 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 1 Enter lower limit 0.5000 Enter upper limit 2.000 Input summary for R Lung > Artery (type 17) Initial value 0.9000 float between 0.5000 and 2.000 Enter 0 if happy with input, 1 if not, 2 to start over 0
Now we can start on the output from the Artery with Liver.
Enter type# for parameter 8 (-5 to 51) 15 Enter parameter name Artery > Liver Enter Q Artery > Liver value 460.0 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter component to receive flux 4 Enter component to lose flux 2 Input summary for Q Artery > Liver (type 15) Fixed value is 460.0 Transfer from 2 to 4 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter V Artery > Liver value 1600. 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter data set (line) number 3 Enter line description [Artery] Input summary for V Artery > Liver (type 16) Fixed value is 1600. Component 2 added to line 3 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter R Artery > Liver value 1.000 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Input summary for R Artery > Liver (type 17) Fixed value is 1.000 Enter 0 if happy with input, 1 if not, 2 to start over 0
We have already entered V and R values for Artery so they don't need to added for the next entry for Spleen, just the Q value.
Enter type# for parameter 11 (-5 to 51) 15 Enter parameter name Artery > Spleen Enter Q Artery > Spleen value 75.00 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter component to receive flux 5 Enter component to lose flux 2 Input summary for Q Artery > Spleen (type 15) Fixed value is 75.00 Transfer from 2 to 5 Enter 0 if happy with input, 1 if not, 2 to start over 0
Next we can enter the parameters for Spleen to Liver. Note that the R value is adjustable.
Enter type# for parameter 11 (-5 to 51) 15 Enter parameter name Artery > Spleen Enter Q Artery > Spleen value 75.00 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter component to receive flux 5 Enter component to lose flux 2 Input summary for Q Artery > Spleen (type 15) Fixed value is 75.00 Transfer from 2 to 5 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter -3 to see choices, -1 or -4 (save model) to exit this section Enter type# for parameter 14 (-5 to 51) 15 Enter parameter name Spleen > Liver Enter Q Spleen > Liver value 75.00 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter component to receive flux 4 Enter component to lose flux 5 Input summary for Q Spleen > Liver (type 15) Fixed value is 75.00 Transfer from 5 to 4 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter V Spleen > Liver value 60.00 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter data set (line) number 4 Enter line description [Spleen] Input summary for V Spleen > Liver (type 16) Fixed value is 60.00 Component 5 added to line 4 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter R Spleen > Liver value 0.9000 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 1 Enter lower limit 0.5000 Enter upper limit 2.000 Input summary for R Spleen > Liver (type 17) Initial value 0.9000 float between 0.5000 and 2.000 Enter 0 if happy with input, 1 if not, 2 to start over 0
Parameters, i.e Q values, for the rest of the transfer from Artery to Kidney, Heart, Muscle and Other follow in the same way. Next we start to add the transfer from Liver through Other to Vein starting with Liver. We enter Liver blood flow, volume and partition coefficient value.
Enter type# for parameter 29 (-5 to 51) 15 Enter parameter name Liver > Vein Enter Q Liver > Vein value 535.0 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter component to receive flux 1 Enter component to lose flux 4 Input summary for Q Liver > Vein (type 15) Fixed value is 535.0 Transfer from 4 to 1 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter V Liver > Vein value 790.0 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 0 Enter data set (line) number 5 Enter line description [Liver] Input summary for V Liver > Vein (type 16) Fixed value is 790.0 Component 4 added to line 5 Enter 0 if happy with input, 1 if not, 2 to start over 0 Enter R Liver > Vein value 0.9000 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 1 Enter lower limit 0.5000 Enter upper limit 2.000 Input summary for R Liver > Vein (type 17) Initial value 0.9000 float between 0.5000 and 2.000 Enter 0 if happy with input, 1 if not, 2 to start over 0
The rest of the tissue to Vein transfer are entered in the same way. A link to the complete BAT and OUT files is provided below. The last step in this model is to include an elimination (or clearance) step as an adjustable parameter. Here we have elimination from the Vein but it could be from Liver and/or Kidney. Elimination is to outside the model, 0, but it could be to a Urine or Metabolite component.
Enter type# for parameter 44 (-5 to 51) 2 Enter parameter name Elimination Enter Elimination value 1.500 0) fixed, 1) adjustable, 2) single dependence or 3) double dependence 1 Enter lower limit 0.000 Enter upper limit 10.00 Enter component to receive flux 0 Enter component to lose flux 1 Input summary for Elimination (type 2) Initial value 1.500 float between 0.000 and 10.00 Transfer from 1 to 0 Enter 0 if happy with input, 1 if not, 2 to start over 0
With all this data entered Boomer will provide a Flow balance table. The in and out values should be the same or the plumbing is wrong.
Flow balance for Physiological Model Component 1) in 2700. out 2700. Component 2) in 2700. out 2700. Component 3) in 2700. out 2700. Component 4) in 535.0 out 535.0 Component 5) in 75.00 out 75.00 Component 6) in 330.0 out 330.0 Component 7) in 97.00 out 97.00 Component 8) in 280.0 out 280.0 Component 9) in 1458. out 1458.
Next the numerical integration method is chosen and a description entered before entering the data. PBPK systems are typical 'stiff' (very slow and very fast transfers) so Gears method is a good choice. For the fitting (optimization) method I like to use the Simplex -> Damping GN method. This uses the Simplex method first to hopefully get close to the minimum and switches to the damping Gauss Newton to get even closer and provide estimates of goodness of fit.
Method of Numerical Integration 0) Classical 4th order Runge-Kutta 1) Runge-Kutta-Gill 2) Fehlberg RKF45 3) Adams Predictor-Corrector with DIFSUB 4) Gears method for stiff equations with PEDERV 5) Gears method without PEDERV Enter choice (0-5) 4 Enter Absolute error term for Numerical integration (0.001) 0.000 FITTING METHODS 0) Gauss-Newton 1) Damping Gauss-Newton 2) Marquardt 3) Simplex 4) Simplex->Damping GN Enter Choice (0-4) 4 Enter PC for convergence (0.00001) 0.000 Enter description for this analysis: Simulation of PBPK Model Enter data from 0) Disk file 2) ...including weights 1) Keyboard 3) ...including weights Enter Choice (0-3) 1 Enter data for [Vein] Enter x-value (time) = -1 to finish data entry X-value (time) 0.000 Y-value (concentration) 0.000 X-value (time) 1.000 Y-value (concentration) 0.4000E-02 ...
After entering values for each data set exit by entering -1 for X-value. Check for errors, save or not and move to the next data set. After all the data sets are entered you can choose to calculate and AUC value or other options such as graphs.
... X-value (time) 24.00 Y-value (concentration) 0.7000E-03 X-value (time) -1.000 Data for [Vein] DATA # Time Concentration 1 0.000 0.000 2 1.000 0.4000E-02 3 2.000 0.3000E-02 4 4.000 0.2000E-02 5 6.000 0.2000E-02 6 12.00 0.1000E-02 7 18.00 0.9000E-03 8 24.00 0.7000E-03 Do you want to 0) Accept data 1) Correct data point 2) Delete data point 3) Insert new data point 4) Add offset to x-value Enter choice (0-3) 0 Save Observed Data to Disk Module 0) Continue without saving 1) Save data for [Vein] on disk ...
After entering all the data a weighting function is selected. Here we enter equal weight for each data set. Not necessarily the best choice.
Weighting function entry for [Vein] 0) Equal weights 1) Weight by 1/Cp(i) 2) Weight by 1/Cp(i)^2 3) Weight by 1/a*Cp(i)^b 4) Weight by 1/(a + b*Cp(i)^c) 5) Weight by 1/((a+b*Cp(i)^c)*d^(tn-ti)) Data weight as a function of Cp(Obs) Enter choice (0-5) 0 ...
Output from the Simplex method and then the damping Gauss-Newton method is displayed.
... Loop 94 - 1> 0.1531E-05 2> 0.1529E-05 3> 0.1531E-05 4> 0.1531E-05 5> 0.1531E-05 6> 0.1530E-05 7> 0.1531E-05 8> 0.1531E-05 9> 0.1531E-05 Loop 95 - 1> 0.1531E-05 2> 0.1529E-05 3> 0.1531E-05 4> 0.1531E-05 5> 0.1531E-05 6> 0.1530E-05 7> 0.1531E-05 8> 0.1531E-05 9> 0.1531E-05 Initial WSS value is 0.152936E-05 Loop = 1 Damp = 1 P ( 1) = 0.9496 P ( 2) = 0.9153 P ( 3) = 0.9314 P ( 4) = 0.9103 P ( 5) = 0.8928 P ( 6) = 1.076 P ( 7) = 1.053 P ( 8) = 1.510 WSS = 0.152539E-05 Loop = 2 Damp = 1 P ( 1) = 0.9127 P ( 2) = 0.9117 P ( 3) = 0.9264 P ( 4) = 0.9060 P ( 5) = 0.8866 P ( 6) = 1.157 P ( 7) = 1.048 P ( 8) = 1.495 WSS = 0.149920E-05 ...
until convergence is (hopefully) achieved. Various AUC values can be selected for calculation and/or other output options.
Enter choice 0 Calculation of AUC and AUMC section 0) Exit this section 1) [Vein] 2) [Lung] 3) [Artery] 4) [Spleen] 5) [Liver] 6) [Kideny] 7) [Heart] 8) [Muscle] 9) [Other] Enter line # for required AUC (0- 9) 0 Additional Output Enter -> 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Save Data x x x x x x x x Graphs x x x x x x x x Extra files x x x x x x x x Sensitivity x x x x x x x x Save calculated data files, Produce linear, semi-log and weighted residual plots, save extra data files or perform sensitivity or optimal sampling analysis Enter choice (0-15) 2
Among other output information Boomer provides a list of the final (best-fit) parameter values, a summary of the model as entered. Here we can check for errors. The BAT file can be edited and re-run as needed. The flow balance is output as well as the calculated data. Note the parameter values are within the lower/upper limits and that the CV% values are reasonable. Here only R(muscle) seems large.
** FINAL PARAMETER VALUES *** # Name Value S.D. C.V. % Lower <-Limit-> Upper 1) R Lung > Artery 0.90806 0.397E-01 4.4 0.50 2.0 2) R Spleen > Liver 0.91330 0.163E-01 1.8 0.50 2.0 3) R Liver > Vein 0.91488 0.229E-01 2.5 0.50 2.0 4) R Kidney > Vein 0.90266 0.158E-01 1.8 0.50 2.0 5) R Heart > Vein 0.87088 0.253E-01 2.9 0.50 2.0 6) R Muscle > Vein 0.99699 0.203 20. 0.50 2.0 7) R Other > Vein 1.0421 0.425E-01 4.1 0.50 2.0 8) Elimination 1.4850 0.362E-01 2.4 0.0 10. Final WSS = 0.152115E-05 R^2 = 0.9929 Corr. Coeff = 0.9964 AIC = -653.802 AICc = -650.802 Log likelihood = 362. Schwarz Criteria = -638.506 R^2 and R - jp1 0.9929 0.9964 R^2 and R - jp2 0.9928 0.9964 RMSE = 0.1744E-03 or 10.294 % RMSE MAE = 0.1268E-03 ME = 0.1020E-04 Model and Parameter Definition # Name Value Type From To Dep Start Stop 1) Dose = 100.0 1 0 1 0 0 0 2) Q Vein > Lung = 2700. 15 1 3 0 0 0 3) V Vein > Lung = 800.0 16 1 1 0 0 0 4) R Vein > Lung = 1.000 17 0 0 0 0 0 5) Q Lung > Artery = 2700. 15 3 2 0 0 0 6) V Lung > Artery = 375.0 16 3 2 0 0 0 7) R Lung > Artery = 0.9081 17 0 0 0 0 0 8) Q Artery > Liver = 460.0 15 2 4 0 0 0 9) V Artery > Liver = 1600. 16 2 3 0 0 0 10) R Artery > Liver = 1.000 17 0 0 0 0 0 11) Q Artery > Spleen = 75.00 15 2 5 0 0 0 12) V Artery > Spleen = 1600. 16 2 0 10900 0 0 13) R Artery > Spleen = 1.000 17 0 0 11000 0 0 14) Q Spleen > Liver = 75.00 15 5 4 0 0 0 15) V Spleen > Liver = 60.00 16 5 4 0 0 0 16) R Spleen > Liver = 0.9133 17 0 0 0 0 0 17) Q Artery > Kidney = 330.0 15 2 6 0 0 0 18) V Artery > Kidney = 1600. 16 2 0 10900 0 0 19) R Artery > Kidney = 1.000 17 0 0 11000 0 0 20) Q Artery > Heart = 97.00 15 2 7 0 0 0 21) V Artery > Heart = 1600. 16 2 0 10900 0 0 22) R Artery > Heart = 1.000 17 0 0 11000 0 0 23) Q Artery > Muscle = 280.0 15 2 8 0 0 0 24) V Artery > Muscle = 1600. 16 2 0 10900 0 0 25) R Artery > Muscle = 1.000 17 0 0 11000 0 0 26) Q Artery > Other = 1458. 15 2 9 0 0 0 27) V Artery > Other = 1600. 16 2 0 10900 0 0 28) R Artery > Other = 1.000 17 0 0 11000 0 0 29) Q Liver > Vein = 535.0 15 4 1 0 0 0 30) V Liver > Vein = 790.0 16 4 5 0 0 0 31) R Liver > Vein = 0.9149 17 0 0 0 0 0 32) Q Kidney > Vein = 330.0 15 6 1 0 0 0 33) V Kidney > Vein = 165.0 16 6 6 0 0 0 34) R Kidney > Vein = 0.9027 17 0 0 0 0 0 35) Q Heart > Vein = 97.00 15 7 1 0 0 0 36) V Heart > Vein = 200.0 16 7 7 0 0 0 37) R Heart > Vein = 0.8709 17 0 0 0 0 0 38) Q Muscle > Vein = 280.0 15 8 1 0 0 0 39) V Muscle > Vein = 0.1830E+05 16 8 8 0 0 0 40) R Muscle > Vein = 0.9970 17 0 0 0 0 0 41) Q Other > Vein = 1458. 15 9 1 0 0 0 42) V Other > Vein = 0.1171E+05 16 9 9 0 0 0 43) R Other > Vein = 1.042 17 0 0 0 0 0 44) Elimination = 1.485 2 1 0 0 0 0 Flow balance for Physiological Model Component 1) in 2700. out 2700. Component 2) in 2700. out 2700. Component 3) in 2700. out 2700. Component 4) in 535.0 out 535.0 Component 5) in 75.00 out 75.00 Component 6) in 330.0 out 330.0 Component 7) in 97.00 out 97.00 Component 8) in 280.0 out 280.0 Component 9) in 1458. out 1458. Data for [Vein] :- DATA # Time Observed Calculated (Weight) Weighted residual 1 0.000 0.00000 0.125000 0.00000 -0.00000 2 1.000 0.400000E-02 0.393506E-02 1.00000 0.649435E-04 3 2.000 0.300000E-02 0.338609E-02 1.00000 -0.386092E-03 4 4.000 0.200000E-02 0.228926E-02 1.00000 -0.289258E-03 5 6.000 0.200000E-02 0.177723E-02 1.00000 0.222766E-03 6 12.00 0.100000E-02 0.118692E-02 1.00000 -0.186920E-03 7 18.00 0.900000E-03 0.888192E-03 1.00000 0.118081E-04 8 24.00 0.700000E-03 0.678239E-03 1.00000 0.217608E-04 WSS data set 1 = 0.3221E-06 R^2 = 0.9705 Corr. Coeff. = 0.9852 R^2 and R - jp1 0.9705 0.9852 R^2 and R - jp2 0.9637 0.9817 RMSE = 0.2145E-03 or 11.099 % RMSE MAE = 0.1691E-03 ME = 0.7728E-04
Linear and semi-log printer-style plots can be output for a quick review of the results. Weighted residual plots are also provided to aid in model selection and confirmation of the weighting scheme used.
Plots of observed (*) and calculated values (+) versus time for [Lung]. Superimposed points (X) 0.3141E-02 Linear 0.3141E-02 Semi-log | | | + | X | * | | | | | | | | | | | | | + | | * * | + | | * * | | | + | | | | | + | | | | | | | | | | + | + | * | * | | | X | | | | X | X | | | | | | | | |X | X |_____________________________________ |X____________________________________ 0.000 0.6000E-03 0 <--> 24. 0 <--> 24. Plot of Std Wtd Residuals (X) Plot of Std Wtd Residuals (X) versus time for [Lung] versus log(calc Cp(i)) for [Lung] 2.113 2.113 | X | X | | | | | | | | | | | | | | | | | | | | | | 0X==========================X========= 0=====X=============================== | X |X | | | X | X | X X | X X | | -0.8168 -0.8168 0.0 <--> 24. 0.62E-03 <--> 0.31E-02
The complete BAT and OUT files can be dowloaded.
The BAT file can be saved as PBPK.BAT and run with Boomer. With the current version of Boomer for Windows the lineEnter component for F-dependence ( 1 to - 1 or 0 for no dependence) 0
Material on this website should be used for Educational or Self-Study Purposes Only
iBook and pdf versions of this material and other PK material is available
Copyright © 2019 David W. A. Bourne (david@boomer.org)