|
a |
|
b/R/defineResponseGroups.R |
|
|
1 |
defineResponseGroups = function(lpd) { |
|
|
2 |
|
|
|
3 |
# quiets concerns of R CMD check "no visible binding for global variable" |
|
|
4 |
x=NULL; ibrutinib=NULL; everolimus=NULL; |
|
|
5 |
selumetinib=NULL |
|
|
6 |
|
|
|
7 |
z_factor <- qnorm(0.05, lower.tail = FALSE) |
|
|
8 |
|
|
|
9 |
drugnames <- c( "ibrutinib", "everolimus", "selumetinib") |
|
|
10 |
ib <- "D_002_4:5" |
|
|
11 |
ev <- "D_063_4:5" |
|
|
12 |
se <- "D_012_4:5" |
|
|
13 |
stopifnot(identical(fData(lpd)[c(ib, ev, se), "name"], drugnames)) |
|
|
14 |
|
|
|
15 |
df <- Biobase::exprs(lpd)[c(ib, ev, se), lpd$Diagnosis=="CLL"] %>% |
|
|
16 |
t %>% data.frame %>% `colnames<-`(drugnames) |
|
|
17 |
df$PatientID=rownames(df) |
|
|
18 |
mdf <- melt(df) |
|
|
19 |
|
|
|
20 |
# Determine standard deviation using mirror method |
|
|
21 |
pmdf = mdf[mdf$value >= 1,] |
|
|
22 |
ssd <- mean( (pmdf$value - 1) ^ 2 ) ^ 0.5 |
|
|
23 |
|
|
|
24 |
# Normal density |
|
|
25 |
dn <- tibble( |
|
|
26 |
x = seq(min(mdf$value), max(mdf$value), length.out = 100), |
|
|
27 |
y = dnorm(x, mean = 1, sd = ssd) * 2 * nrow(pmdf) / nrow(mdf) |
|
|
28 |
) |
|
|
29 |
|
|
|
30 |
# Setting up the threshold |
|
|
31 |
thresh <- 1 - z_factor * ssd |
|
|
32 |
|
|
|
33 |
# Decision rule |
|
|
34 |
df <- mutate(df, |
|
|
35 |
group = ifelse(ibrutinib < thresh, "BTK", |
|
|
36 |
ifelse(everolimus < thresh, "mTOR", |
|
|
37 |
ifelse(selumetinib < thresh, "MEK", |
|
|
38 |
"none"))) |
|
|
39 |
) |
|
|
40 |
|
|
|
41 |
|
|
|
42 |
return(data.frame(df[,c("ibrutinib","everolimus","selumetinib","group")], |
|
|
43 |
row.names=df$PatientID)) |
|
|
44 |
} |