Replies: 4 comments 1 reply
-
Hi Nadia, I see you shared the RR function but could you also share the R script you used to call this function and calculate the Kp values for your specific drug? |
Beta Was this translation helpful? Give feedback.
-
Yes sure, I don't have that issue when I change the type to 2, monoprotic acid. But to the best of my knowledge bupropion is a monoprotic base source('script/calcKp_RR.R') #calculate partition coefficients |
Beta Was this translation helpful? Give feedback.
-
@aelmokadem @Nbamfo I'm moving this thread to the discussion area. Please feel free to continue the discussion there. Thanks! |
Beta Was this translation helpful? Give feedback.
-
@Nbamfo I looked into this and I'm not sure what is wrong. It seems that for these inputs, the value of Ka_AP is negative, which results in some negative Kp values. (The Kps are positive for type=2 because that calculation uses Ka_PR instead of Ka_AP). The method also returned some negative values using slightly different inputs from a paper (attached). This might indicate a shortcoming in the R&R method that was obscured before now, and was tested with this particular input set. It may be worth communicating with the method authors to get their thoughts. |
Beta Was this translation helpful? Give feedback.
-
I am using the Rowland and Rogers method for my PBPK model and I am getting negative values for my partition coefficient when I choose compound type 3 monoprotic base. Any suggests for what could be wrong. This is the script from the mrgsolve for calculating for the rowland and rogers method.
#calculate tissue:plasma partition coefficients based on: Rodgers and Rowland http://jpharmsci.org/article/S0022-3549(16)31789-0/fulltext and http://jpharmsci.org/article/S0022-3549(16)32034-2/fulltext
#tissue data are derived from rats
.libPaths("lib")
library(dplyr)
calcKp_RR <- function(logP, pKa=0, fup, BP=1, type=1, dat){
dat_all <- dat %>% filter(!tissue %in% c("RBCs", "Adipose", "Plasma")) #df for all tissues except for adipose, RBCs, and plasma
dat_ad <- dat %>% filter(tissue == "Adipose") #df for adipose
dat_rbc <- dat %>% filter(tissue == "RBCs") #df for RBCs
dat_plas <- dat %>% filter(tissue == "Plasma") #df for aplasma
pH_IW <- 7 #pH of intracellular tissue water
pH_P <- 7.4 #pH of plasma
pH_RBC <- 7.22 #pH of blood cells
P <- 10^(logP) # octonal:water partition coeff
logP_OW <- 1.115*logP - 1.35 #oil:water partition coeff
P_OW <- 10^(logP_OW)
Ka <- 10^(-pKa)
HCT <- 0.45 #hematocrit
#Calculate Kp values
Kpu_bc <- (HCT - 1 + BP)/(HCT)
X <- switch(type,
#1-neutral
0,
#2-monoprotic acid
10^(pH_IW-pKa),
#3-monoprotic base
10^(pKa-pH_IW),
#4-diprotic acid
10^(pH_IW-pKa[1])+10^(2pH_IW-pKa[1]-pKa[2]),
#5-diprotic base
10^(pKa[2]-pH_IW)+10^(pKa[1]+pKa[2]-2pH_IW),
#6-monoprotic acid monoprotic base (acid comes first)
10^(pKa[2]-pH_IW)+10^(pH_IW-pKa[1]),
#7-triprotic acid
10^(pH_IW-pKa[1])+10^(2pH_IW-pKa[1]-pKa[2])+10^(3pH_IW-pKa[1]-pKa[2]-pKa[3]),
#8-triprotic base
10^(pKa[3]-pH_IW)+10^(pKa[3]+pKa[2]-2pH_IW)+10^(pKa[1]+pKa[2]+pKa[3]-3pH_IW),
#9-diprotic acid monoprotic base (first two are acid)
10^(pKa[3]-pH_IW)+10^(pH_IW-pKa[1])+10^(2pH_IW-pKa[1]-pKa[2]),
#10-diprotic base monoprotic acid (first one is acid)
10^(pH_IW-pKa[1])+10^(pKa[3]-pH_IW)+10^(pKa[2]+pKa[3]-2pH_IW))
Y <- switch(type,
#1-neutral
0,
#2-monoprotic acid
10^(pH_P-pKa),
#3-monoprotic base
10^(pKa-pH_P),
#4-diprotic acid
10^(pH_P-pKa[1])+10^(2pH_P-pKa[1]-pKa[2]),
#5-diprotic base
10^(pKa[2]-pH_P)+10^(pKa[1]+pKa[2]-2pH_P),
#6-monoprotic acid monoprotic base (acid comes first)
10^(pKa[2]-pH_P)+10^(pH_P-pKa[1]),
#7-triprotic acid
10^(pH_P-pKa[1])+10^(2pH_P-pKa[1]-pKa[2])+10^(3pH_P-pKa[1]-pKa[2]-pKa[3]),
#8-triprotic base
10^(pKa[3]-pH_P)+10^(pKa[3]+pka[2]-2pH_P)+10^(pKa[1]+pKa[2]+pKa[3]-3pH_P),
#9-diprotic acid monoprotic base (first two are acid)
10^(pKa[3]-pH_P)+10^(pH_P-pKa[1])+10^(2pH_P-pKa[1]-pKa[2]),
#10-diprotic base monoprotic acid (first one is acid)
10^(pH_P-pKa[1])+10^(pKa[3]-pH_P)+10^(pKa[2]+pKa[3]-2pH_P))
Z <- switch(type,
#1-neutral
1,
#2-monoprotic acid
1,
#3-monoprotic base
10^(pKa-pH_RBC),
#4-diprotic acid
1,
#5-diprotic base
10^(pKa[2]-pH_RBC)+10^(pKa[1]+pKa[2]-2pH_RBC),
#6-monoprotic acid monoprotic base (acid comes first)
10^(pKa[2]-pH_RBC)+10^(pH_RBC-pKa[1]),
#7-triprotic acid
1,
#8-triprotic base
10^(pKa[3]-pH_RBC)+10^(pKa[3]+pka[2]-2pH_RBC)+10^(pKa[1]+pKa[2]+pKa[3]-3pH_RBC),
#9-diprotic acid monoprotic base (first two are acid)
10^(pKa[3]-pH_RBC)+10^(pH_RBC-pKa[1])+10^(2pH_RBC-pKa[1]-pKa[2]),
#10-diprotic base monoprotic acid (first one is acid)
10^(pH_RBC-pKa[1])+10^(pKa[3]-pH_RBC)+10^(pKa[2]+pKa[3]-2*pH_RBC))
Ka_PR <- (1/fup - 1 - (Pdat_plas$f_n_l + (0.3P + 0.7)dat_plas$f_n_pl)/(1+Y))
Ka_AP <- (Kpu_bc - (1 + Z)/(1 + Y)dat_rbc$f_iw - (Pdat_rbc$f_n_l + (0.3P + 0.7)*dat_rbc$f_n_pl)/(1 + Y)) * (1 + Y)/dat_rbc$f_a_pl/Z
Assign the moderate to strong bases type_calc=1 and everything else type_calc=2
type_calc <- ifelse((type==3 & pKa[1]>7) | (type==5 & pKa[1] >7) | (type==6 & pKa[2] > 7) | (type==8 & pKa[1] > 7) | (type==9 & pKa[3]>7) | (type==10 & pKa[2]>7), 1,2)
Re-assign the neutrals type_calc=3
if(type==1){type_calc=3} #neutrals
Multiply by fup to get Kp rather than Kpu
if(type_calc==1){ #moderate to strong bases
Kp_all <- (dat_all$f_ew + ((1 + X)/(1 + Y))dat_all$f_iw + ((Pdat_all$f_n_l + (0.3P + 0.7)dat_all$f_n_pl))/(1 + Y) + (Ka_APdat_all$f_a_plX)/(1 + Y))fup #non lipid
Kp_ad <- (dat_ad$f_ew + ((1 + X)/(1 + Y))dat_ad$f_iw + ((P_OWdat_ad$f_n_l + (0.3P_OW + 0.7)dat_ad$f_n_pl))/(1 + Y) + (Ka_APdat_ad$f_a_plX)/(1 + Y))fup #lipid
}else if(type_calc==2){ #acidic and zwitterions
Kp_all <- (dat_all$f_ew + ((1 + X)/(1 + Y))dat_all$f_iw + ((Pdat_all$f_n_l + (0.3P + 0.7)dat_all$f_n_pl))/(1 + Y) + (Ka_PRdat_all$ARX)/(1 + Y))fup #non lipid
Kp_ad <- (dat_ad$f_ew + ((1 + X)/(1 + Y))dat_ad$f_iw + ((P_OWdat_ad$f_n_l + (0.3P_OW + 0.7)dat_ad$f_n_pl))/(1 + Y) + (Ka_PRdat_ad$ARX)/(1 + Y))fup #lipid
}else{ #neutrals
Kp_all <- (dat_all$f_ew + ((1 + X)/(1 + Y))dat_all$f_iw + ((Pdat_all$f_n_l + (0.3P + 0.7)dat_all$f_n_pl))/(1 + Y) + (Ka_PRdat_all$LRX)/(1 + Y))fup #non lipid
Kp_ad <- (dat_ad$f_ew + ((1 + X)/(1 + Y))dat_ad$f_iw + ((P_OWdat_ad$f_n_l + (0.3P_OW + 0.7)dat_ad$f_n_pl))/(1 + Y) + (Ka_PRdat_ad$LR*X)/(1 + Y))*fup #lipid
}
nms_all <- dat_all$tissue %>% substr(1,2) %>% tolower()
nms_all <- paste("Kp", nms_all, sep="")
nms <- c("Kpad",nms_all)
Kp <- as.list(c(Kp_ad,Kp_all))
names(Kp) <- nms
return(Kp)
}
Thank you
Beta Was this translation helpful? Give feedback.
All reactions