library(shiny)
library(Seurat)
library(tidyverse)
options(shiny.trace = F)
# rownames(macrophages)[rownames(macrophages) %in% c("CD206")]
macrophages <- readRDS("/home/wangyang/workspace/scRNA_MYC/data/Macrophages_new_empty.rds")
macrophages[["percent.mt"]] <- PercentageFeatureSet(macrophages, pattern = "^MT-")
summary(macrophages@meta.data$nFeature_RNA)
VlnPlot(macrophages, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
# macrophages <- subset(macrophages, subset = nFeature_RNA > 200 & nFeature_RNA < 3000 & percent.mt < 30)
#### NormalizeData
macrophages <- NormalizeData(macrophages,
normalization.method = "LogNormalize",
scale.factor = 10000)
#### FindVariableFeatures
# top10 <- head(VariableFeatures(macrophages), 10)
# (plot1<- VariableFeaturePlot(macrophages))
# LabelPoints(plot = plot1,
# points = top10,
# xnudge = 0,
# ynudge = 0,
# repel = TRUE)
#### ScaleData
all.genes <- rownames(macrophages)
macrophages <- ScaleData(macrophages, features = all.genes)
#### dimension
# DimPlot(macrophages, reduction = "pca",group.by = "orig.ident")
# FeaturePlot(macrophages, features = c("CD14","CD163","CCR7","IL7R"),label.size = 1,reduction = 'pca')
# MYC_marker <- read_csv("/home/wangyang/workspace/scRNA_MYC/data/MYC_marker.csv")
# all_genes <- MYC_marker$gene
all_genes <- rownames(macrophages)
features <- c("CD14","CD163","CD209","IL1B","CCR7","TLR7")
ui <- fluidPage(
titlePanel("巨噬细胞(Macrophages)单细胞数据分析"),
sidebarLayout(
sidebarPanel(
sliderInput("nfeatures", h3("nfeatures"),
min = 100, max = 5000, value = 3000),
sliderInput("neighbor", h3("FindNeighbors"),
min = 1, max = 25, value = 18),
sliderInput("resolution", h3("FindClusters"),
min = 0, max = 1, value = 0.15),
sliderInput("perplexity", h3("tsne perplexity"),
min = 1, max = 100, value = 20),
selectInput("reduction", h3("Select reduction"),
choices = c("umap","tsne","pca"), selected = "tsne",multiple = F),
# selectInput("pca_dims", h3("Select pca dims"),
# choices = c(1,2,3,4), selected = 1,multiple = F),
selectizeInput(inputId = "genes",
h3("Select gene from deg"),
choices = features,
multiple = TRUE,
selected = features
),
submitButton("Update View", icon("sync")),
p("M1 macrophage:CCR7, IL7R, [FCGR3A, FCGR3B], [FCGR2A, FCGR2B, FCGR2C], [SELE, SELP, SELL], FCGR1A, CD80, CD86, CXCL10, IL15RA, IL17RA, IL1R1, IL2RA, TLR2, TLR4"),
p("M2 macrophage:CD14, CD163"),
p("M0 macrophage:"),
),
mainPanel(
textOutput("neighbor"),
textOutput("resolution"),
textOutput("nfeatures"),
textOutput("genes"),
textOutput("reduction"),
textOutput("pca_dims"),
textOutput("perplexity"),
plotOutput(outputId = "DimPlot"),
plotOutput(outputId = "FeaturePlot"),
plotOutput(outputId = "VlnPlot"),
plotOutput(outputId = "DimHeatmap1"),
plotOutput(outputId = "DimHeatmap2"),
)
)
)
# Define server logic ----
server <- function(input, output,session) {
updateSelectizeInput(
session,
inputId = 'genes',
choices = unique(all_genes),
selected=features,
server = TRUE
)
output$resolution <- renderText(paste0("resolution: ",input$resolution))
output$neighbor <- renderText(paste0("neighbor: ",input$neighbor))
output$nfeatures <- renderText(paste0("nfeatures: ",input$nfeatures))
output$genes <- renderText(paste0("genes: ",input$genes))
output$reduction <- renderText(paste0("reduction: ",input$reduction))
output$perplexity <- renderText(paste0("perplexity: ",input$perplexity))
# output$pca_dims <- renderText(paste0("pca_dims: ",input$pca_dims))
macrophagesFun <- reactive({
macrophages <- FindVariableFeatures(macrophages, selection.method = "vst", nfeatures = input$nfeatures)
macrophages <- RunPCA(macrophages, features = VariableFeatures(object = macrophages))
# DimPlot(macrophages, reduction = "umap",label = T)
macrophages <- FindNeighbors(macrophages, dims = 1:input$neighbor)
macrophages <- FindClusters(macrophages, resolution = input$resolution)
res <- NULL
if(input$reduction=="umap"){
res <- RunUMAP(macrophages, dims = 1:input$neighbor)
}else if (input$reduction=="tsne") {
res <- RunTSNE(macrophages,dims = 1:input$neighbor,perplexity=input$perplexity)
}else {
res <- macrophages
}
return(res)
})
output$DimHeatmap1 <- renderPlot({
macrophages <- macrophagesFun()
DimHeatmap(macrophages, dims = 1, cells = 500, balanced = TRUE)
})
output$DimHeatmap2 <- renderPlot({
macrophages <- macrophagesFun()
DimHeatmap(macrophages, dims = 2, cells = 500, balanced = TRUE)
})
output$DimPlot <- renderPlot({
macrophages <- macrophagesFun()
# plot(input$resolution)
DimPlot(macrophages, reduction = input$reduction,label = T)
})
output$FeaturePlot <- renderPlot({
macrophages <- macrophagesFun()
FeaturePlot(macrophages,
features = input$genes,
label.size = 1,
reduction = input$reduction)
})
output$VlnPlot <- renderPlot({
macrophages <- macrophagesFun()
VlnPlot(macrophages, features =input$genes, ncol = 3)
})
}
shinyApp(ui = ui, server = server)