# Define UI for data upload app ----
ui <- dashboardPage(
title = "clustifyr app",
skin = "green",
dashboardHeader(
title = div(
tags$a(
href = 'https://github.com/rnabioco/clustifyr',
tags$img(src = 'logo.png', width = "18%")
),
"clustifyr Shiny app"
)
),
dashboardSidebar(
# tags$img(
# src = 'logo.png',
# width = "1000%",
# style = 'position: fixed; bottom: 0;right: 0;'
# ),
sidebarMenu(
id = "tabs",
menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Load Matrix", tabName = "matrixLoad", icon = icon("th")),
menuItem("Load Metadata", tabName = "metadataLoad", icon = icon("list")),
menuItem(
"Load Reference",
tabName = "clusterRef",
icon = icon("database")
),
menuItem(
"Cell type inference",
tabName = "clustifyres",
icon = icon("calculator")
),
menuItem("", tabName = "blank"),
menuItem("Explore GEO", tabName = "someta", icon = icon("hdd"))
)
),
dashboardBody(
shinyDashboardThemes(theme = "poor_mans_flatly"),
tabItems(
tabItem(
tabName = "dashboard",
# js stuff ----
useShinyjs(),
use_bs_tooltip(),
tags$head(
tags$script(HTML(js2))
),
tags$head(tags$style(HTML(
'
.skin-green .sidebar .inactiveLink {
color: black;
opacity : 25%;
}'
))),
tags$head(tags$style(
".inactiveLink {
pointer-events: none;
cursor: not-allowed;
}"
)),
tags$head(tags$style(HTML(
'
.skin-green .sidebar .doneLink {
color: green;
}'
))),
tags$head(tags$style(HTML(
'
.skin-green .sidebar .doneLink.active > a {
color: green;
border-left-color: green;
}'
))),
tags$head(tags$style(HTML(
'
.skin-green .sidebar .doneLink:hover {
color: green;
border-left-color: green;
}'
))),
# waiter stuff ----
use_waiter(),
# load example data ----
actionButton(
"example",
"Load example data",
icon = icon("space-shuttle")
) %>%
bs_embed_tooltip(
"Use example data from GSE113049 for walkthrough",
placement = "right"
),
# Horizontal line ----
tags$hr(),
# readme
includeMarkdown("README.md"),
# Input: Checkbox if file has header ----
checkboxInput("header", "Header", TRUE),
# Horizontal line ----
tags$hr(),
# Input: Select separator ----
radioButtons(
"sepMat",
"Separator - Matrix",
choices = c(
Comma = ",",
Semicolon = ";",
Tab = "\t"
),
selected = ","
),
radioButtons(
"sepMeta",
"Separator - Metadata",
choices = c(
Comma = ",",
Semicolon = ";",
Tab = "\t"
),
selected = ","
),
# Input: Select number of rows to display ----
radioButtons(
"dispMat",
"Display - Matrix",
choices = c(
Head = "head",
All = "all"
),
selected = "head"
),
radioButtons(
"dispMeta",
"Display - Metadata",
choices = c(
Head = "head",
All = "all"
),
selected = "head"
)
),
tabItem(
tabName = "matrixLoad",
h2("Load Counts (raw or normalized) Matrix"),
# Input: Select a file ----
fileInput(
"file1",
"Choose Matrix File",
multiple = TRUE,
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv",
".xlsx",
".tsv",
".rds",
".rda",
".rdata",
".gz"
)
) %>%
bs_embed_tooltip(
"Accepted file types: plain or gz text files, and rds/rda/rdata for Seurat/SCE",
placement = "right"
),
# GEO id load ----
actionButton("geo1", "or from GEO id", icon = icon("search")) %>%
bs_embed_tooltip(
"Alternatively, load data directly from GEO with ID",
placement = "right"
),
actionButton("matrixPopup", "Display UMI Matrix in popup"),
tags$hr(),
DTOutput("contents1"), # UMI Count Matrix
tags$hr()
),
tabItem(
tabName = "metadataLoad",
h2("Load Metadata"),
fileInput(
"file2",
"Choose Metadata File",
multiple = FALSE,
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv",
".xlsx",
".tsv",
".rds",
".rda",
".rdata",
".gz"
)
) %>%
bs_embed_tooltip(
"Accepted file types: plain or gz text files, and rds/rda/rdata for Seurat/SCE",
placement = "right"
),
# GEO id load ----
actionButton("geo2", "or from GEO id", icon = icon("search")) %>%
bs_embed_tooltip(
"Alternatively, load data directly from GEO with ID",
placement = "right"
),
actionButton("metadataPopup", "Display Metadata table in popup"),
h2("Choose column in metadata with cluster info"),
selectInput("metadataCellType", NULL, choice = list("")) %>%
bs_embed_tooltip(
"Select from dropdown, or click on preview column below",
placement = "right"
),
tags$hr(),
DTOutput('contents2'),
#DT::dataTableOutput("contents2"), # Metadata table
tags$hr(),
uiOutput("colclicked")
),
tabItem(
tabName = "clusterRef",
h2(
"Choose built-in reference dataset or upload average expression matrix"
),
selectInput(
"dataHubReference",
"ClustifyrDataHub Reference:",
choices = list(
"ref_MCA",
"ref_tabula_muris_drop",
"ref_tabula_muris_facs",
"ref_mouse.rnaseq",
"ref_moca_main",
"ref_immgen",
"ref_hema_microarray",
"ref_cortex_dev",
"ref_pan_indrop",
"ref_pan_smartseq2",
"ref_mouse_atlas"
)
) %>%
bs_embed_tooltip(
"Select from pre-built references in clustifyrdatahub",
placement = "right"
),
actionButton(
"ref_linkgo",
label = "Go to original source",
icon = icon("link")
) %>%
bs_embed_tooltip(
"For more info on the reference datasets",
placement = "right"
),
tags$hr(),
h2("Or load reference table"),
fileInput(
"file3",
"Choose Reference Average Expression File",
multiple = FALSE,
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv",
".tsv",
".xlsx",
".gz"
)
) %>%
bs_embed_tooltip(
"Alternatively, choose local file of average gene expression by cell type",
placement = "right"
),
tags$hr(),
uiOutput("ref_summary"),
DTOutput("contents3", height = "300px"),
tags$hr()
),
tabItem(
tabName = "clustifyres",
box(
id = "box_clustifym",
collapsible = TRUE,
collapsed = TRUE,
solidHeader = TRUE,
status = "info",
title = "clustifyr messages",
htmlOutput("clustifym")
) %>%
bs_embed_tooltip("Console messages from run", "right"),
div(
style = "display:inline-block",
downloadButton(
"downloadReference",
"Download average expression matrix"
) %>%
bs_embed_tooltip(
"Note: this is the same file needed to use the current dataset as reference in the future",
"bottom"
),
downloadButton(
"downloadClustify",
"Download clustify results matrices"
) %>%
bs_embed_tooltip(
"Cell type inference as sheet1, correlation matrix as sheet2, of xlsx",
"bottom"
)
),
tags$hr(),
# actionButton("uploadClustify", "Upload reference matrix"),
h2("Average Expression Matrix"),
DT::dataTableOutput("reference", height = "300px"), # Reference Matrix
tags$hr(),
h2("Ranked Correlation Matrix"),
DT::dataTableOutput("clustify", height = "300px"), # Clustify Matrix
tags$hr(),
h2("Cell Type Inference Results"),
DT::dataTableOutput("corToCall", height = "300px"),
tags$hr(),
plotOutput("hmap", height = "900px"),
tags$hr(),
),
tabItem(
tabName = "someta",
h2(
"GEO scRNA-seq records, hover to see truncated text, click to preview files"
),
DT::dataTableOutput("someta", height = "1000px")
)
)
)
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.