Diff of /R/defineResponseGroups.R [000000] .. [226bc8]

Switch to unified view

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
}