1 Functions

2 Data

gsub(x = names(my_data),pattern = "_C",replacement = "_ctrl")%>% gsub(pattern = "p_OR",replacement = "_osiRoxaPersistors") %>% gsub(pattern = "p_O",replacement = "_osiPersistors") %>% gsub(pattern = "_R",replacement = "_roxa")%>% gsub(,pattern = "_O",replacement = "_osi")
 [1] "H1975_ctrl1"              "H1975_ctrl2"              "H1975_ctrl3"              "H1975_roxa1"              "H1975_roxa2"             
 [6] "H1975_roxa3"              "H1975_osi1"               "H1975_osi2"               "H1975_osi3"               "H1975_osiPersistors1"    
[11] "H1975_osiPersistors2"     "H1975_osiPersistors3"     "H1975_osiRoxaPersistors1" "H1975_osiRoxaPersistors2" "H1975_osiRoxaPersistors3"
[16] "HCC827_ctrl1"             "HCC827_ctrl2"             "HCC827_ctrl3"             "HCC827_roxa1"             "HCC827_roxa2"            
[21] "HCC827_roxa3"             "HCC827_osi1"              "HCC827_osi2"              "HCC827_osi3"              "M2_ctrl"                 
[26] "M21_ctrl"                 "M36_ctrl"                 "M14_osi"                  "M33_osi"                  "M14_2_osi"               
[31] "M20_roxa"                 "M30_roxa"                 "M31_roxa"                 "M3_combo"                 "M26_combo"               
[36] "M32_combo"               
cell.labels = names(my_data)
cell_type = str_extract(cell.labels, "^[A-Z]{1,3}[0-9]{3}")
condition = str_extract(cell.labels, "osiPersistors|osiRoxaPersistor|osi|ctrl|roxa")
condition = paste(cell_type,condition,sep = "_")
replicate = str_extract(cell.labels, ".$")
metadata = data.frame(cell_type = cell_type, condition = condition, replicate = replicate, row.names = colnames(counts))
library(DESeq2)
dds <- DESeqDataSetFromMatrix(countData = round(my_data),
                              colData = metadata,
                              design = ~condition)
converting counts to integer mode
Warning in DESeqDataSet(se, design = design, ignoreRank) :
  some variables in design formula are characters, converting to factors
nrow(dds)
[1] 32780
dds1 <- dds[ rowSums(counts(dds)) >= 3, ]
nrow(dds1)
[1] 9980
vst = vst(dds1, blind=FALSE)
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
library("ggfortify")
PCAdata <- prcomp(t(assay(vst)))
autoplot(PCAdata, data = metadata,colour = "condition",label = FALSE, main="PCA") # Show dots

autoplot(PCAdata, data = metadata,colour = "cell_type",label = FALSE, main="PCA") # Show dots

dds <- DESeq(dds)
estimating size factors
estimating dispersions
gene-wise dispersion estimates
mean-dispersion relationship
-- note: fitType='parametric', but the dispersion trend was not well captured by the
   function: y = a/x + b, and a local regression fit was automatically substituted.
   specify fitType='local' or 'mean' to avoid this message next time.
final dispersion estimates
fitting model and testing
H1975_roxaVSctrl <- results(dds,contrast = c("condition","H197_roxa","H197_ctrl"))  %>% as.data.frame()
Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'x' in selecting a method for function 'as.data.frame': couldn't find results. you should first run DESeq()

down_genes
 [1] "TFPI2"      "PON2"       "CTGF"       "WISP2"      "CEACAM7"    "AFAP1L2"    "NANOS1"     "CREB3L2"    "BPGM"       "SKIL"       "AC006504.5"
[12] "AC006504.8"
hyp_obj <- hypeR(up_genes, genesets, test = "hypergeometric", fdr=1, plotting=F,background = rownames(H1975_cpVSop))
 hyp_dots(hyp_obj,size_by = "none",title = paste0("cluster",chosen_clusters))


hyp_obj <- hypeR(down_genes, genesets, test = "hypergeometric", fdr=1, plotting=F,background = rownames(H1975_cpVSop))
 hyp_dots(hyp_obj,size_by = "none",title = paste0("cluster",chosen_clusters))

LS0tCnRpdGxlOiAnYHIgcnN0dWRpb2FwaTo6Z2V0U291cmNlRWRpdG9yQ29udGV4dCgpJHBhdGggJT4lIGJhc2VuYW1lKCkgJT4lIGdzdWIocGF0dGVybiA9ICJcXC5SbWQiLHJlcGxhY2VtZW50ID0gIiIpYCcgCmF1dGhvcjogIkF2aXNoYWkgV2l6ZWwiCmRhdGU6ICdgciBTeXMudGltZSgpYCcKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgdG9jOiB5ZXMKICAgIHRvY19jb2xsYXBzZTogeWVzCiAgICB0b2NfZmxvYXQ6IAogICAgICBjb2xsYXBzZWQ6IEZBTFNFCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIHRvY19kZXB0aDogMQotLS0KCgoKIyBGdW5jdGlvbnMKCmBgYHtyIHdhcm5pbmc9RkFMU0V9CmBgYAoKIyBEYXRhCgpgYGB7cn0KbXlfZGF0YSA8LSByZWFkLnRhYmxlKGZpbGUgPSAiL3NjaS9sYWJzL3lvdGFtZC9sYWJfc2hhcmUvbHVuZ19zYy9idWxrL1JveGFPc2kvT2N0MjMvMDMuUmVzdWx0X1gyMDJTQzIzMDgyODQ0LVowMS1GMDAxX0hvbW9fc2FwaWVucy9SZXN1bHRfWDIwMlNDMjMwODI4NDQtWjAxLUYwMDFfSG9tb19zYXBpZW5zLzMuUXVhbnQvMS5Db3VudC9nZW5lX2Zwa20ueGxzIiwgCiAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiXHQiLCBoZWFkZXI9VFJVRSkKcm93bmFtZXMobXlfZGF0YSkgPSBtYWtlLnVuaXF1ZShteV9kYXRhWywzOCxkcm9wPVRdKQpteV9kYXRhID0gbXlfZGF0YVssMjozN10KCm5hbWVzIChteV9kYXRhKSA9IGdzdWIoeCA9IG5hbWVzKG15X2RhdGEpLHBhdHRlcm4gPSAiX0MiLHJlcGxhY2VtZW50ID0gIl9jdHJsIiklPiUgZ3N1YihwYXR0ZXJuID0gInBfT1IiLHJlcGxhY2VtZW50ID0gIl9vc2lSb3hhUGVyc2lzdG9ycyIpICU+JSBnc3ViKHBhdHRlcm4gPSAicF9PIixyZXBsYWNlbWVudCA9ICJfb3NpUGVyc2lzdG9ycyIpICU+JSBnc3ViKHBhdHRlcm4gPSAiX1IiLHJlcGxhY2VtZW50ID0gIl9yb3hhIiklPiUgZ3N1YigscGF0dGVybiA9ICJfTyIscmVwbGFjZW1lbnQgPSAiX29zaSIpCgpteV9kYXRhID0gbXlfZGF0YVssMToyNF0KCmBgYAoKYGBge3J9CmNlbGwubGFiZWxzID0gbmFtZXMobXlfZGF0YSkKY2VsbF90eXBlID0gc3RyX2V4dHJhY3QoY2VsbC5sYWJlbHMsICJeW0EtWl17MSwzfVswLTldezN9IikKY29uZGl0aW9uID0gc3RyX2V4dHJhY3QoY2VsbC5sYWJlbHMsICJvc2lQZXJzaXN0b3JzfG9zaVJveGFQZXJzaXN0b3J8b3NpfGN0cmx8cm94YSIpCmNvbmRpdGlvbiA9IHBhc3RlKGNlbGxfdHlwZSxjb25kaXRpb24sc2VwID0gIl8iKQpyZXBsaWNhdGUgPSBzdHJfZXh0cmFjdChjZWxsLmxhYmVscywgIi4kIikKbWV0YWRhdGEgPSBkYXRhLmZyYW1lKGNlbGxfdHlwZSA9IGNlbGxfdHlwZSwgY29uZGl0aW9uID0gY29uZGl0aW9uLCByZXBsaWNhdGUgPSByZXBsaWNhdGUsIHJvdy5uYW1lcyA9IGNvbG5hbWVzKGNvdW50cykpCmBgYAoKYGBge3J9CmxpYnJhcnkoREVTZXEyKQpkZHMgPC0gREVTZXFEYXRhU2V0RnJvbU1hdHJpeChjb3VudERhdGEgPSByb3VuZChteV9kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sRGF0YSA9IG1ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ24gPSB+Y29uZGl0aW9uKQpgYGAKCmBgYHtyfQpucm93KGRkcykKZGRzMSA8LSBkZHNbIHJvd1N1bXMoY291bnRzKGRkcykpID49IDMsIF0KbnJvdyhkZHMxKQpgYGAKYGBge3J9CnZzdCA9IHZzdChkZHMxLCBibGluZD1GQUxTRSkKYGBgCgpgYGB7cn0KbGlicmFyeSgiZ2dmb3J0aWZ5IikKUENBZGF0YSA8LSBwcmNvbXAodChhc3NheSh2c3QpKSkKYXV0b3Bsb3QoUENBZGF0YSwgZGF0YSA9IG1ldGFkYXRhLGNvbG91ciA9ICJjb25kaXRpb24iLGxhYmVsID0gRkFMU0UsIG1haW49IlBDQSIpICMgU2hvdyBkb3RzCmF1dG9wbG90KFBDQWRhdGEsIGRhdGEgPSBtZXRhZGF0YSxjb2xvdXIgPSAiY2VsbF90eXBlIixsYWJlbCA9IEZBTFNFLCBtYWluPSJQQ0EiKSAjIFNob3cgZG90cwoKYGBgCmBgYHtyfQpkZHMgPC0gREVTZXEoZGRzKQpgYGAKCmBgYHtyfQpIMTk3NV9jcFZTb3AgPC0gcmVzdWx0cyhkZHMsY29udHJhc3QgPSBjKCJjb25kaXRpb24iLCJIMTk3X29zaVJveGFQZXJzaXN0b3IiLCJIMTk3X29zaVBlcnNpc3RvcnMiKSkgICU+JSBhcy5kYXRhLmZyYW1lKCkKSDE5NzVfcm94YVZTY3RybCA8LSByZXN1bHRzKGRkcyxjb250cmFzdCA9IGMoImNvbmRpdGlvbiIsIkgxOTdfcm94YSIsIkgxOTdfY3RybCIpKSAgJT4lIGFzLmRhdGEuZnJhbWUoKQpkaWZmX2dlbmVzID0gZGF0YS5mcmFtZShyb3cubmFtZXMgPSByb3duYW1lcyhIMTk3NV9jcFZTb3ApLCBjcFZTb3BfRkMgPSAyKipIMTk3NV9jcFZTb3AkbG9nMkZvbGRDaGFuZ2Uscm94YVZTY3RybF9GQyA9IDIqKkgxOTc1X3JveGFWU2N0cmwkbG9nMkZvbGRDaGFuZ2UsICBIMTk3NV9jcFZTb3BfcGFkaiA9IEgxOTc1X2NwVlNvcCRwYWRqKQoKYGBgCgpgYGB7cn0KcmFua2VkX3ZlYyA9IGRpZmZfZ2VuZXNbLCAxXSAlPiUgc2V0TmFtZXMocm93bmFtZXMoZGlmZl9nZW5lcykpICU+JSBzb3J0KGRlY3JlYXNpbmcgPSBUUlVFKQpoeXBfb2JqIDwtIGh5cGVSX2Znc2VhKHJhbmtlZF92ZWMsIGdlbmVzZXRzLCB1cF9vbmx5ID0gVCkKaHlwX2RvdHMoaHlwX29iaix0aXRsZSA9IHBhc3RlKCJwcm9ncmFtIixjb2wpKSsgYWVzKHNpemU9bmVzKQoKcmFua2VkX3ZlYyA9IGRpZmZfZ2VuZXNbLCAyXSAlPiUgc2V0TmFtZXMocm93bmFtZXMoZGlmZl9nZW5lcykpICU+JSBzb3J0KGRlY3JlYXNpbmcgPSBUUlVFKQpoeXBfb2JqIDwtIGh5cGVSX2Znc2VhKHJhbmtlZF92ZWMsIGdlbmVzZXRzLCB1cF9vbmx5ID0gVCkKaHlwX2RvdHMoaHlwX29iaix0aXRsZSA9IHBhc3RlKCJwcm9ncmFtIixjb2wpKSsgYWVzKHNpemU9bmVzKQpgYGAKYGBge3J9CnVwX2dlbmVzX2RmID0gIGRpZmZfZ2VuZXMgJT4lIGZpbHRlcihjcFZTb3BfRkMgPiAyICYgcm94YVZTY3RybF9GQzwxLjIgJiBIMTk3NV9jcFZTb3BfcGFkajwwLjA1KSAKZG93bl9nZW5lc19kZiA9IGRpZmZfZ2VuZXMgJT4lIGZpbHRlcihjcFZTb3BfRkMgPCAwLjUgJiByb3hhVlNjdHJsX0ZDPjAuOCAmIEgxOTc1X2NwVlNvcF9wYWRqPDAuMDUpCnVwX2dlbmVzID0gZGlmZl9nZW5lcyAlPiUgZmlsdGVyKGNwVlNvcF9GQyA+IDIgJiByb3hhVlNjdHJsX0ZDPDEuMiAmIEgxOTc1X2NwVlNvcF9wYWRqPDAuMDUpICU+JSByb3duYW1lcygpCmRvd25fZ2VuZXMgPSBkaWZmX2dlbmVzICU+JSBmaWx0ZXIoY3BWU29wX0ZDIDwgMC41ICYgcm94YVZTY3RybF9GQz4wLjggJiBIMTk3NV9jcFZTb3BfcGFkajwwLjEpJT4lIHJvd25hbWVzKCkKCnVwX2dlbmVzX2RmCmRvd25fZ2VuZXNfZGYKYGBgCmBgYHtyfQpoeXBfb2JqIDwtIGh5cGVSKHVwX2dlbmVzLCBnZW5lc2V0cywgdGVzdCA9ICJoeXBlcmdlb21ldHJpYyIsIGZkcj0xLCBwbG90dGluZz1GLGJhY2tncm91bmQgPSByb3duYW1lcyhIMTk3NV9jcFZTb3ApKQogaHlwX2RvdHMoaHlwX29iaixzaXplX2J5ID0gIm5vbmUiLHRpdGxlID0gcGFzdGUwKCJjbHVzdGVyIixjaG9zZW5fY2x1c3RlcnMpKQoKaHlwX29iaiA8LSBoeXBlUihkb3duX2dlbmVzLCBnZW5lc2V0cywgdGVzdCA9ICJoeXBlcmdlb21ldHJpYyIsIGZkcj0xLCBwbG90dGluZz1GLGJhY2tncm91bmQgPSByb3duYW1lcyhIMTk3NV9jcFZTb3ApKQogaHlwX2RvdHMoaHlwX29iaixzaXplX2J5ID0gIm5vbmUiLHRpdGxlID0gcGFzdGUwKCJjbHVzdGVyIixjaG9zZW5fY2x1c3RlcnMpKQoKYGBgCgoKPHNjcmlwdCBzcmM9Imh0dHBzOi8vaHlwb3RoZXMuaXMvZW1iZWQuanMiIGFzeW5jPjwvc2NyaXB0PgoK