Подключение R скрипта к блестящему для вывода изображения - PullRequest
0 голосов
/ 14 февраля 2019

Я создаю блестящий графический интерфейс приложения, который позволяет «легко» вводить четыре файла данных в мой R-скрипт.Я хочу иметь возможность загрузить четыре файла, выбрать параметры из двух наборов переключателей и нажать «Отправить», чтобы запустить выбранные анализы.Окончательный вывод (как сгенерировано в моем коде анализа) должен быть .PNG-файлом, который (а) будет автоматически загружен в рабочий каталог и (б) представлен на главной панели графического интерфейса.Чтобы понять, что я пытаюсь сделать, я включил код для пользовательского интерфейса приложения.

library(shiny)
  ui <- fluidPage(
  titlePanel("Pando Nutrition Microbiome Analysis"),
  sidebarLayout(
     sidebarPanel(
      fileInput(inputId="n1","Shared Table Upload", multiple = FALSE),
      fileInput(inputId="n2", "Taxonomy File Upload", multiple=FALSE),
      fileInput(inputId="n3", "Meta Table Upload", multiple=FALSE),
      fileInput(inputId='ZHtree', "Phylogenetic Tree"),
      radioButtons(inputId="Selection1", "Select One",
               c("Fungi" = "ITS",
                 "Bacteria" = "16S")),
  radioButtons(inputId="Selection2", "Select Analysis",
               c("Shannon Diversity (Timecourse)" = "shannon1",
                 "Shannon Diversity (CTL vs EXP)"="shannon2",
                 "Top 20 Genera"="Top20Genera",
                 "Top 10 Genera"="Top10Genera",
                 "Top 5 Genera"="Top5Genera",
                 "Top 2 Genera"="Top2Genera"
                 )),
  actionButton(inputId="Submit", "Submit"),
  hr()
),
mainPanel(
  imageOutput("figure_1.png")
)
  )
)
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)

вот код R, который генерирует сюжет 16s, "shannon1" в R Studio:

n1<-readline(prompt="Enter .Shared File Name:")
n2<-readline(prompt="Enter .Taxonomy File Name:")
n3<-readline(prompt="Enter Meta Table File Name:")

source("https://bioconductor.org/biocLite.R")
biocLite("phyloseq")
biocLite("DESeq2")
library(ape)
library(DESeq2)
library(dplyr)
library(ggplot2)
library(gplots)
library(lme4)
library(phangorn)
library(phyloseq)
library(plotly)
library(tidyr)
library(vegan)
library(VennDiagram)
library(shiny)


OTU = read.table(n1, header=TRUE, sep="\t")
tax = read.table(n2, header=TRUE, sep="\t")
meta=read.table(n3, header=TRUE, row.names=1, sep="\t")

row.names(OTU) = OTU$Group
OTU.clean = OTU[,-which(names(OTU) %in% c("label", "numOtus", "Group"))]
row.names(tax) = tax$OTU
tax.clean = tax[row.names(tax) %in% colnames(OTU.clean),]
tax.clean = separate(tax.clean, Taxonomy, into = c("Domain", "Phylum", 
"Class", "Order", "Family", "Genus", "Species", "Strain"), sep=";")
tax.clean = tax.clean[,-which(names(tax.clean) %in% c("Size", "Strain", "OTU"))]
OTU.clean = OTU.clean[order(row.names(OTU.clean)),]
meta = meta[order(row.names(meta)),]
meta.controls <- meta[which(meta$group=='Control'),]
meta.controls = meta.controls[order(row.names(meta)),]
meta.experimental <- meta[which(meta$group=='Experimental'),]
meta.experimental = meta.experimental[order(row.names(meta)),]
meta.day0 <- meta[which(meta$collected_date=="0"),]
meta.day28 <- meta[which(meta$collected_date=="28"),]
OTU.clean.day0 <- OTU.clean[which(meta$collection_date=="0"),]
OTU.clean.day28 <- OTU.clean[which(meta$collection_date=="28"),]
meta.day0 <- meta[which(meta$collection_date=="0"),]
meta.day28 <- meta[which(meta$collection_date=="28"),]
OTU.clean.relabund <- sweep(OTU.clean,1,rowSums(OTU.clean),"/")
rowSums(OTU.clean)
rowSums(OTU.clean.relabund)
set.seed(8765)
OTU.physeq = otu_table(as.matrix(OTU.clean), taxa_are_rows=FALSE)
tax.physeq = tax_table(as.matrix(tax.clean))
meta.physeq = sample_data(meta)
meta.physeq.control = sample_data(meta.controls)
meta.physeq.experimental= sample_data(meta.experimental)
physeq.alpha = phyloseq(OTU.physeq, tax.physeq, meta.physeq)
physeq.alpha.controls =phyloseq(OTU.physeq, tax.physeq, 
meta.physeq.control)
physeq.alpha.experimental=phyloseq(OTU.physeq, tax.physeq, 
meta.physeq.experimental)
sample_data(physeq.alpha)$shannon.physeq <- 
estimate_richness(physeq.alpha, measures="Shannon")
sample_data(physeq.alpha.controls)$shannon.physeq <- 
estimate_richness(physeq.alpha.controls, measures="Shannon")
sample_data(physeq.alpha.experimental)$shannon.physeq <- 
estimate_richness(physeq.alpha.experimental, measures="Shannon")

title = "Shannon Diversity Over Study Timecourse"
plot_richness(physeq.alpha, measures="Shannon", title = title) #FIGURE 1
dev.copy(png,'figure_1.png')
dev.off()

Я могу получить красивый интерфейс для представления, но яМне довольно сложно связать мой код (например, скрипт 16s.R, который генерирует фигуру "shannon1") с кнопками.Я знаю, что серверная функция должна реагировать на функцию «отправить», но она также должна зависеть от (а) ввода четырех файлов, (б) выбранной радиокнопки 16S или ITS, (в) выбранногоанализ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...