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"))
)
))
)))
)
)
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.