inst/shinyApp/app/ui.R

library(shiny)
library(shinyjs)
library(shinydashboard)
library(shinybusy)
library(shinyWidgets)

dashboardPage(
  header = dashboardHeader(
    title="Cyto-Tron"
  ),
  #################### MENU ITEM #####################
  sidebar = dashboardSidebar(#width="200px",
    tags$head(tags$link(rel="stylesheet",href="https://fonts.googleapis.com/css?family=Raleway:200")),
    tags$head(tags$link(rel="stylesheet",type="text/css",href="styles.css")),
    shinyjs::useShinyjs(),
    sidebarMenu(id="tab",
      #menuItem("Tutorial",tabName="0"),
      menuItem("Upload Data",tabName="1"),
      menuItem("Visualisation",tabName="2"),
      menuItem("Perceptron",tabName="3"),
      menuItem("Annotation",tabName="4")
    ),
    column(12,verbatimTextOutput("log")),
    fileInput("upload_all","Upload All",accept=c("_Cytotron.Rdata"),multiple=FALSE),
    column(12,downloadButton("save_all","Save All"))
  ),
  body = dashboardBody(
    shinyjs::useShinyjs(),
    add_busy_spinner(spin = "fading-circle",color = "lightgreen"),
    tabItems(
      ################ PREPROCESS #################
      tabItem("1",fluidRow(
        box(title="Preprocess your analysis data",width = 6,
          fileInput("data_upload","Upload your FCS",accept=c(".fcs"),multiple="TRUE"),
          column(3,
            #checkboxInput("clean","Clean",value=TRUE),
            checkboxInput("compensation","Compensation",value=TRUE)
            #checkboxInput("normalise","Normaliser",value=FALSE)
          ),
          column(4,selectInput("comp_keywords","Keywords",choices = NULL, multiple=FALSE)),
          column(3,selectInput("trans_methd","Transformation",
                    choices=c("none","arcsinh","logicle"),multiple=FALSE)),
          column(2,numericInput("trans_args","Argument",value=5)),
          column(12,selectInput("markers","Markers pour l'analyse",choices=NULL,multiple=T)),
          box(width=12,title="Summary",collapsible=TRUE,collapsed=TRUE,verbatimTextOutput("summary_data")),
          column(12,actionButton("preprocess","Preprocessing"))
        ),
        box(title="Preprocess your train data",width = 6,
          fileInput("train_upload","Upload your FCS",accept=c(".fcs"),multiple="TRUE"),
          column(3,
            #checkboxInput("clean2","Clean",value=TRUE),
            checkboxInput("compensation2","Compensation",value=TRUE)
            #checkboxInput("normalise2","Normaliser",value=FALSE)
          ),
          column(4,selectInput("comp_keywords2","Keywords",choices = NULL, multiple=FALSE)),
          column(3,selectInput("trans_methd2","Transformation",
                      choices=c("none","arcsinh","logicle"),multiple=FALSE)),
          column(2,numericInput("trans_args2","Argument",value=5)),
          column(12,selectInput("markers2","Markers pour l'analyse",choices=NULL,multiple=T)),
          box(width=12,title="Summary",collapsible=TRUE,collapsed=TRUE,verbatimTextOutput("summary_train")),
          column(12,actionButton("preprocess2","Preprocessing"))
        )
      )),
      ################ VISUALISATION #################
      tabItem("2",fluidRow(conditionalPanel(condition="output.data_ready",
        box(width=4,
          fluidRow(column(4,textInput("data_marker_pattern","Pattern")),
          column(4,tags$br(),actionButton("add_data_marker_pattern","Add Pattern")),
          column(4,tags$br(),actionButton("add_data_marker_all","Add All"))),
          selectInput("data_markers","Markers",choices=NULL,multiple=T),

          selectInput("reduc_dim_methode","Reduction",choices=c("EmbedSOM","PCA",
                                                                "tSNE","UMAP")),
          conditionalPanel(condition="input.reduc_dim_methode=='EmbedSOM'",
            fluidRow(
              column(4,numericInput("xgrid","Xgrid",value=15)),
              column(4,numericInput("ygrid","Ygrid",value=15)),
              column(4,numericInput("rlen","Rlen",value=100))
            )
          ),
          conditionalPanel(condition="input.reduc_dim_methode=='tSNE'",
            fluidRow(
              column(4,numericInput("perp","Perp.",value=30)),
              column(4,numericInput("theta","Theta",value=0.5)),
              column(4,numericInput("iter","Iter.",value=100))
            )
          ),
          conditionalPanel(condition="input.reduc_dim_methode=='UMAP'",
            fluidRow(
              column(4,numericInput("n_neigh","Neigh.",value=15)),
              column(8,numericInput("l_rate","Learning Rate",value=1))
            )
          ),

          column(6,actionButton("reduc_dim","Run Reduction"))
        ),
        box(width=8,title = "Visualise your Machine Learning",height = 800,
          fluidRow(
            column(6,sliderInput("percentile_plot","Plot Percentile",min=1,max=100,value=30)),
            column(2,uiOutput("select_x_plot_data")),
            column(2,uiOutput("select_y_plot_data")),
            column(2,uiOutput("select_z_plot_data"))
          ),
          column(3,fluidRow(
            uiOutput("xlim"),uiOutput("ylim"),
            uiOutput("select_file_plot_data"),
            actionButton("plot_data","Plot Data")
          )),

          column(9,plotOutput("plot_data"))
        )
      ))),
      ################ PERCEPTRON #################
      tabItem("3",fluidRow(conditionalPanel(condition="output.train_ready",
        column(width=4,
          box(width=12,title="Markers",collapsible=TRUE,
            selectInput("model_markers",NULL,choices=NULL,multiple = T),
            fluidRow(column(4,textInput("model_marker_pattern","Pattern")),
              column(4,tags$br(),actionButton("add_model_marker_pattern","Add Pattern")),
              column(4,tags$br(),actionButton("add_model_marker_all","Add All")))
          ),
          box(width=12,title="Prepare Train",collapsible=TRUE,
            fluidRow(
              column(4,selectInput("clustering_train",NULL,
                                   choices=c("none","ceil","CLARA","FlowSOM","kmeans"))),
              conditionalPanel(condition="input.clustering_train !='FlowSOM' && input.clustering_train !='ceil' && input.clustering_train !='none'",
                column(4,numericInput("clusters2","Clusters",value=200))
              ),
              conditionalPanel(condition="input.clustering_train =='kmeans'",
                column(3,numericInput("iterations2","Iteration",value=1000))
              ),
              conditionalPanel(condition="input.clustering_train=='CLARA'",
                column(2,numericInput("samples2","Samples",value=50)),
                column(2,numericInput("sampsiaz2","Size",value=5))
              ),
              conditionalPanel(condition="input.clustering_train=='FlowSOM'",
                column(3,numericInput("rlen2","Rlen",value=100)),
                column(3,numericInput("xgrid2","Xgrid",value=20)),
                column(3,numericInput("ygrid2","Ygrid", value=20))
              ),
              conditionalPanel(condition="input.clustering_train=='ceil'",
                column(4,tags$br(),checkboxInput("replace","Replace",value=TRUE)),
                column(4,numericInput("size","Size",value=1000))
              )
            )
          ),
          box(width=12,title="Model Parameters",collapsible=TRUE,
            fluidRow(
              column(4,numericInput("model_epochs","Epochs",value=200,min=50)),
              column(4,numericInput("model_hidden","Couche",value=3,min=1,step=1,max=10)),
              column(4,numericInput("batch_size","Batch",value=250,min=1, max=1000))
            ),
            fluidRow(
              column(12,selectInput("compile_function","Compile Function",
                                    choices="categorical_crossentropy",
                                   selected=c("categorical_crossentropy","mse")))
            ),
            fluidRow(
              uiOutput("model_hiddens"),
              uiOutput("model_hiddens_fonction")
            ),
            actionButton("model_create","Create Model")
          )
        ),
        box(width=8,fluidRow(
          column(4,fileInput("upload_model","FlowTron Model",accept=".Rdata",multiple=FALSE)),
          column(2,tags$br(),actionButton("refresh_model","Refresh Model")),
          column(2,tags$br(),actionButton("test_model","Test Model")),
          column(4,tags$br(),downloadButton("ddl_model","Download Model")),
          conditionalPanel(condition="output.model",
            box(width=12,collapsible=TRUE,title="Plot Model",collapsed = TRUE,
                plotOutput("model_view",height = 500)
            ),
            box(width=12,collapsible=TRUE,title="Table Prediction",collapsed = TRUE,
              tableOutput("model_prediction")
            )
          )
        ))
      ))),
      ################ ANNOTATION #################
      tabItem("4",fluidRow(conditionalPanel(condition="output.model_ready",
        box(width=3,title="Assign Data Markers",
          column(12,DT::dataTableOutput('myTableOutput')),
          column(6,tags$br(),actionButton("add_same_name","Auto Markers"),tags$br()),
          column(6,tags$br(),actionButton("annote","Annotation"),tags$br())
        ),
        box(width=9,title="View Result",fluidRow(
          box(width=12,title="Bi-Plot result",collapsible=TRUE,
            fluidRow(
              column(4,sliderInput("percentile_plot2","Plot Percentile",min=1,max=100,value=30)),
              column(2,uiOutput("select_x_plot_data2")),
              column(2,uiOutput("select_y_plot_data2")),
              column(2,tags$br(),actionButton("plot_data2","Plot Data")),
                #column(2,tags$br(),actionButton("download_res","Download"))
              column(2,tags$br(),downloadButton("enrich_fcs_ddl",label="Download FCS"))
            ),
            column(3,
              fluidRow(
                column(12,uiOutput("xlim2"))
              ),
              fluidRow(
                column(12,uiOutput("ylim2"))
              ),
              fluidRow(
                column(6,numericInput("width","width",value=700,min=100,max=1200)),
                column(6,numericInput("height","height",value=500,min=100,max=1200))
              ),
              fluidRow(
                column(6,numericInput("inset","inset",value=0.235,min=0.1,
                                      max=0.5,step=0.01)),
                column(6,numericInput("mar","mar",value=12,min=1,max=20))
              ),
              column(6,uiOutput("select_file_plot_data2"))
            ),
            column(9,fluidRow(plotOutput("plot_data2",height="100%")))
          ),
          box(width=12,title="Table result",collapsible=TRUE,collapsed = TRUE,
              column(12,tableOutput("percent_table")),
              column(3,downloadButton("ddl_final_table"))
          )
        ))
     )))
    )
  )
)
qbarbier/CytoTron documentation built on June 27, 2020, 4:43 a.m.