Conclusion & beyond [NCA / SHAM]
Hi mittyri,
Welcome to the club! BTW, THX for implementing the lin-up/log-down trapezoidal.
Yep. Actually this story reaches too far (for an IR formulation crossing flip-flop PK; no regulator would buy that regardless what is written in a guideline) and not far enough: Setting the cut-off for pAUC at the individual tmax-values of the reference is Canadian tradition (termed AUCReftmax) but even in Canada history. If pAUCs are used, the cut-off has to be pre-specified. Currently pAUCs are not required for IR. OK, if the first pAUC performs better than Cmax, great.
I think that limiting \(\small{k_\text{a(T)}/k_\text{a(R)}}\) to 0.5–2 is sufficient.
For the cut-off \(\small{2\times t_\text{max}=2\log_{e}\Big{(}\frac{k_\text{a}}{k_\text{b}\,(k_\text{a}-k_\text{b})}\Big{)}}\), what else?
Edit: No wonder you hated this line of your code. Shouldn’t it be:
My sim’s: In the input section
Then (relevant lines only):
Based on loess:
Again, pAUC is the one-eyed leading the blind ones but only if kaT < kaR.
❝ ❝ I corrected a typo in your original post
❝
❝ forgot to execute it on clean environment, sorry!
Welcome to the club! BTW, THX for implementing the lin-up/log-down trapezoidal.
❝ ❝ So what do you conclude?
❝
❝ pAUC is more sensitive, but the sensitivity is still low (nothing new...)
Yep. Actually this story reaches too far (for an IR formulation crossing flip-flop PK; no regulator would buy that regardless what is written in a guideline) and not far enough: Setting the cut-off for pAUC at the individual tmax-values of the reference is Canadian tradition (termed AUCReftmax) but even in Canada history. If pAUCs are used, the cut-off has to be pre-specified. Currently pAUCs are not required for IR. OK, if the first pAUC performs better than Cmax, great.
I think that limiting \(\small{k_\text{a(T)}/k_\text{a(R)}}\) to 0.5–2 is sufficient.
For the cut-off \(\small{2\times t_\text{max}=2\log_{e}\Big{(}\frac{k_\text{a}}{k_\text{b}\,(k_\text{a}-k_\text{b})}\Big{)}}\), what else?
Edit: No wonder you hated this line of your code. Shouldn’t it be:
SubjectsDFstack <-
reshape(SubjectsDF[, -c(2,3,4,6,7,9,11)],
direction = 'long', varying = c(3:5), v.names = "ratio",
timevar = "metric", times = names(SubjectsDF)[c(7,9,11)])
My sim’s: In the input section
t.cut <- 2*log(ka/(CL/Vd)/(ka-(CL/Vd)))
Then (relevant lines only):
AbsorptionDF <- function(D, ka, Vd, CL,t,ratio,t.cut){
# Reference
ke <- CL/Vd
C <- C.sd(D=D, Vd=Vd, ka=ka, ke=ke, t=t)
tmax <- t[C == max(C)][1]
Cmax <- C.sd(D=D, Vd=Vd, ka=ka, ke=ke, t=tmax)
AUC.t <- AUCcalc(t, C)
t.1 <- t[which(t <= t.cut)]
C.1 <- C[which(t <= t.cut)]
pAUC <- AUCcalc(t.1, C.1)
Cmax.AUC <- Cmax/AUC.t
DF.sub <- cbind(Subject = isub, V = Vd.sub, CL = CL.sub,
AbsorptionDF(D, ka.sub, Vd.sub, CL.sub, t, ratio, t.cut))
sp1 <- ggplot(SubjectsDFstack[SubjectsDFstack$metric == "Cmax", ],
aes(x=kaT_kaR, y=ratio, color=factor(metric)))
sp1 + theme_bw() +
geom_point(size=.3) +
geom_smooth(method = 'loess', se = FALSE) +
stat_density_2d(data = SubjectsDFstack[SubjectsDFstack$metric == "Cmax", ],
geom = "raster", aes(alpha = ..density..), fill = "#F8766D",
contour = FALSE) +
scale_alpha(range = c(0, 0.7)) +
scale_x_continuous(trans='log2') +
scale_y_continuous(limits=c(0.5,2), trans='log2')
sp2 <- ggplot(SubjectsDFstack[SubjectsDFstack$metric == "pAUC", ],
aes(x=kaT_kaR, y=ratio, color=factor(metric)))
sp2 + theme_bw() +
geom_point(size=.3) +
geom_smooth(method = 'loess', se = FALSE) +
stat_density_2d(data = SubjectsDFstack[SubjectsDFstack$metric == "pAUC", ],
geom = "raster", aes(alpha = ..density..), fill = "#6DAAF8",
contour = FALSE) +
scale_alpha(range = c(0, 0.7)) +
scale_x_continuous(trans='log2') +
scale_y_continuous(limits=c(0.5,2), trans='log2')
sp3 <- ggplot(SubjectsDFstack[SubjectsDFstack$metric == "Cmax_AUC", ],
aes(x=kaT_kaR, y=ratio, color=factor(metric)))
sp3 + theme_bw() +
geom_point(size=.3) +
geom_smooth(method = 'loess', se = FALSE) +
stat_density_2d(data = SubjectsDFstack[SubjectsDFstack$metric == "Cmax_AUC", ],
geom = "raster", aes(alpha = ..density..), fill = "#6DF876",
contour = FALSE) +
scale_alpha(range = c(0, 0.7)) +
scale_x_continuous(trans='log2') +
scale_y_continuous(limits=c(0.5,2), trans='log2')
Based on loess:
metric kaT_kaR predicted sensitivity
Cmax_AUC 0.5 0.8082842 0.54181715
Cmax 0.5 0.8075275 0.54298163
pAUC 0.5 0.7143879 0.76337666
pAUC 2.0 1.2181904 0.08875421
Cmax_AUC 2.0 1.2012353 0.10671423
Cmax 2.0 1.2028693 0.10745301
Again, pAUC is the one-eyed leading the blind ones but only if kaT < kaR.
—
Dif-tor heh smusma 🖖🏼 Довге життя Україна!
Helmut Schütz
The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes
Dif-tor heh smusma 🖖🏼 Довге життя Україна!
Helmut Schütz
The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes
Complete thread:
- Metrics for absorption Helmut 2019-04-15 12:08 [NCA / SHAM]
- Metrics for absorption nobody 2019-04-15 12:15
- Metrics for absorption ElMaestro 2019-04-15 12:23
- Metrics for absorption nobody 2019-04-15 12:39
- Metrics for absorption Helmut 2019-04-15 13:02
- Metrics for absorption nobody 2019-04-15 13:48
- Metrics for absorption Helmut 2019-04-15 19:31
- Metrics for absorption nobody 2019-04-16 09:34
- Metrics for absorption nobody 2019-04-16 15:15
- Metrics for absorption Helmut 2019-04-16 17:01
- Metrics for absorption nobody 2019-04-17 11:15
- Metrics for absorption Helmut 2019-04-16 17:01
- Metrics for absorption nobody 2019-04-16 15:15
- Simulation framework mittyri 2019-04-17 01:21
- Simulation framework Helmut 2019-04-17 13:31
- Conclusion mittyri 2019-04-17 15:42
- Conclusion & beyondHelmut 2019-04-17 17:05
- Conclusion mittyri 2019-04-17 15:42
- Simulation framework Helmut 2019-04-17 13:31
- Metrics for absorption nobody 2019-04-16 09:34
- Metrics for absorption Helmut 2019-04-15 19:31
- Metrics for absorption nobody 2019-04-15 13:48
- Metrics for absorption ElMaestro 2019-04-15 12:23
- Metrics for absorption nobody 2019-04-15 12:15