Skip to content

Commit

Permalink
Get Rid of "MainFactor" inDEseq2 analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
PaulJonasJost committed Nov 6, 2024
1 parent dd54131 commit b7dfce8
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 44 deletions.
1 change: 0 additions & 1 deletion program/shinyApp/R/pre_processing/ui.R
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ pre_processing_sidebar_panel <- sidebarPanel(
),
selected = "none"
) %>% helper(type = "markdown", content = "PreProcessing_Procedures"),
uiOutput(outputId = "DESeq_formula_main_ui"),
uiOutput(outputId = "DESeq_formula_sub_ui"),
uiOutput(outputId = "batch_effect_ui"),
actionButton(
Expand Down
33 changes: 10 additions & 23 deletions program/shinyApp/R/pre_processing/util.R
Original file line number Diff line number Diff line change
Expand Up @@ -94,39 +94,26 @@ ln_normalisation <- function(data, omic_type, logarithm_procedure){


deseq_processing <- function(
data, omic_type, formula_main, formula_sub, session_token, batch_correct
data, omic_type, formula_sub, session_token, batch_correct
){
# Center and scale the data
# prefilter the data
data <- prefiltering(data, omic_type)
# DESeq2
if(omic_type == "Transcriptomics"){
design_formula <- paste("~", formula_main)
# only do this locally
colData(data)[,formula_main] <- as.factor(
colData(data)[,formula_main]
)
if(length(formula_sub) > 0){
design_formula <- paste(
design_formula, " + ",
paste(formula_sub, collapse = " + ")
)
# turn each factor into a factor
for(i in formula_sub){
colData(data)[,i] <- as.factor(
colData(data)[,i]
)
}
par_tmp[[session_token]][["DESeq_factors"]] <<- c(
formula_main,formula_sub
if(length(formula_sub) <= 0){
stop(
"Please select at least one factor for the DESeq2 analysis.",
class = "InvalidInputError"
)
}
else{
par_tmp[[session_token]][["DESeq_factors"]] <<- c(formula_main)
design_formula <- paste("~", paste(formula_sub, collapse = " + "))
# turn each factor into a factor
for(i in formula_sub){
colData(data)[,i] <- as.factor(colData(data)[,i])
}
par_tmp[[session_token]][["DESeq_factors"]] <<- c(formula_sub)
print(design_formula)
# on purpose local
print(colData(data)[,formula_main])

dds <- DESeq2::DESeqDataSetFromMatrix(
countData = assay(data),
Expand Down
26 changes: 6 additions & 20 deletions program/shinyApp/server.R
Original file line number Diff line number Diff line change
Expand Up @@ -871,7 +871,7 @@ server <- function(input,output,session){
length(unique(colData(res_tmp[[session$token]]$data_original)[[col]])) < nrow(colData(res_tmp[[session$token]]$data_original))
})]
if (input$PreProcessing_Procedure == "vst_DESeq") {
filtered_column_names <- filtered_column_names[!filtered_column_names %in% c(input$DESeq_formula_main, input$DESeq_formula_sub)]
filtered_column_names <- filtered_column_names[!filtered_column_names %in% c(input$DESeq_formula_sub)]
}
selectInput(
inputId = "BatchEffect_Column",
Expand All @@ -880,28 +880,14 @@ server <- function(input,output,session){
selected = "NULL"
)
})
output$DESeq_formula_main_ui <- renderUI({
req(data_input_shiny())
req(input$PreProcessing_Procedure == "vst_DESeq")
selectInput(
inputId = "DESeq_formula_main",
label = paste0(
"Choose main factor for desing formula in DESeq pipeline ",
"(App might crash if your factor as only 1 sample per level)"
),
choices = c(colnames(colData(res_tmp[[session$token]]$data))),
multiple = F,
selected = "condition"
) %>% helper(type = "markdown", content = "PreProcessing_DESeqMain")
})
output$DESeq_formula_sub_ui <- renderUI({
req(data_input_shiny())
req(input$PreProcessing_Procedure == "vst_DESeq")
selectInput(
inputId = "DESeq_formula_sub",
label = paste0(
"Choose other factors to account for",
"(App might crash if your factor as only 1 sample per level)"
"Choose factors to account for ",
"(App might crash if your factor has only 1 sample per level)"
),
choices = c(colnames(colData(res_tmp[[session$token]]$data))),
multiple = T,
Expand Down Expand Up @@ -943,7 +929,6 @@ server <- function(input,output,session){
res_tmp[[session$token]]$data <<- deseq_processing(
data = res_tmp[[session$token]]$data,
omic_type = par_tmp[[session$token]]$omic_type,
formula_main = input$DESeq_formula_main,
formula_sub = input$DESeq_formula_sub,
session_token = session$token,
batch_correct = F
Expand Down Expand Up @@ -979,7 +964,6 @@ server <- function(input,output,session){
res_tmp[[session$token]]$data_batch_corrected <<- deseq_processing(
data = tmp_data_selected,
omic_type = par_tmp[[session$token]]$omic_type,
formula_main = input$DESeq_formula_main,
formula_sub = c(input$DESeq_formula_sub, input$BatchEffect_Column),
session_token = session$token,
batch_correct = T
Expand Down Expand Up @@ -1083,7 +1067,9 @@ server <- function(input,output,session){
message = paste0(
"**PreProcessing** - Preprocessing procedure -specific (user-chosen): ",
ifelse(input$PreProcessing_Procedure == "vst_DESeq",
paste0(input$PreProcessing_Procedure, "~",input$DESeq_formula_main),
paste0(
input$PreProcessing_Procedure,
" ~ ",paste(input$DESeq_formula_sub, collapse=" + ")),
input$PreProcessing_Procedure)
)
)
Expand Down

0 comments on commit b7dfce8

Please sign in to comment.