diff --git a/panels/dataInput.R b/panels/dataInput.R
index 49ab5deb71b3a507b12498f84a34c23b01986851..45bc34e595b95cd0659ea57f72e7448c06b56918 100644
--- a/panels/dataInput.R
+++ b/panels/dataInput.R
@@ -172,7 +172,10 @@ observeEvent(input$okData, {
     )
   
   if (inherits(raw_physeq(), "phyloseq")) {
+    select_physeq(raw_physeq())
     physeq(raw_physeq())
+    transform_physeq(NULL)
+    shinyWidgets::updateSwitchInput(session = session, inputId = "useTransf", disabled = TRUE, value = FALSE)
     message(paste("[Easy16S] Correct upload with", input$dataset, "mode :", message))
     removeModal()
   } else {
@@ -191,7 +194,7 @@ filterSample <- function() {
       inline = TRUE,
       choices = c(
         "Sample" = "sample",
-        sample_variables(raw_physeq(), errorIfNULL = FALSE)
+        sample_variables(select_physeq(), errorIfNULL = FALSE)
       ),
       selected = "sample"
     ),
@@ -212,10 +215,10 @@ output$filterUI <- renderUI({
   
   if (input$filterCriteria == "sample") {
     label <- "Sample to keep :"
-    choices <- sample_names(raw_physeq())
+    choices <- sample_names(select_physeq())
   } else {
     label <- "Variable to keep :"
-    choices <- levels(get_variable(raw_physeq(), input$filterCriteria))
+    choices <- levels(get_variable(select_physeq(), input$filterCriteria))
   }
   
   observe({
@@ -251,18 +254,19 @@ observeEvent(input$selectData, {
   } else {
     try(
       if (input$filterCriteria == "sample") {
-        raw_physeq(prune_samples(samples = input$filterCheck, raw_physeq()))
+        select_physeq(prune_samples(samples = input$filterCheck, select_physeq()))
       } else {
         criteria <<- input$filterCriteria
         check <<- input$filterCheck
-        raw_physeq(subset_samples(raw_physeq(), eval(parse(text = criteria)) %in% check))
+        select_physeq(subset_samples(select_physeq(), eval(parse(text = criteria)) %in% check))
         },
       silent = TRUE,
       outFile = showModal(dataInput(failed = TRUE)))
     
-    if (inherits(raw_physeq(), "phyloseq")) {
+    if (inherits(select_physeq(), "phyloseq")) {
       message <- paste(input$filterCheck, collapse = ", ")
       message(paste("[Easy16S] Select some samples :", message))
+      physeq(select_physeq())
       removeModal()
     } else {
       showModal(dataInput(failed = TRUE))
@@ -326,14 +330,14 @@ observeEvent(input$transformData, {
       switch (input$transformFun,
               "prop" = {
                 count_to_prop <- function(x) {return( x / sum(x) )}
-                transform_physeq(transform_sample_counts(raw_physeq(), count_to_prop))
+                transform_physeq(transform_sample_counts(select_physeq(), count_to_prop))
               },
               "sqrt" = {
-                transform_physeq(transform_sample_counts(raw_physeq(), sqrt))
+                transform_physeq(transform_sample_counts(select_physeq(), sqrt))
               },
               "sqrtprop" = {
                 count_to_sqrtprop <- function(x) {return(sqrt(x / sum(x)))}
-                transform_physeq(transform_sample_counts(raw_physeq(), count_to_sqrtprop))
+                transform_physeq(transform_sample_counts(select_physeq(), count_to_sqrtprop))
               },
               "clr" = {
                 gm_mean <- function(x, na.rm=TRUE) {
@@ -344,7 +348,7 @@ observeEvent(input$transformData, {
                   x <- log(x/gm_mean(x), base)
                   return(x)
                 }
-                transform_physeq(transform_sample_counts(raw_physeq(), clr))
+                transform_physeq(transform_sample_counts(select_physeq(), clr))
               }
       ),
       silent = TRUE,
@@ -365,7 +369,7 @@ observeEvent(input$useTransf,
              if (input$useTransf) {
                physeq(transform_physeq())
              } else {
-               physeq(raw_physeq())
+               physeq(select_physeq())
              }
              )
 
diff --git a/server.R b/server.R
index 36ccbd70f7e609996174c940496f4d3a8bbf0052..8ac55a3f925daf2f132d863d9e7c18496eb58cb8 100644
--- a/server.R
+++ b/server.R
@@ -28,6 +28,7 @@ shinyServer
 
   physeq <- reactiveVal()
   raw_physeq <- reactiveVal()
+  select_physeq <- reactiveVal()
   transform_physeq <- reactiveVal()
   
   showModal(dataInput())