我不熟悉R和闪亮。到目前为止,我已经能够制作一个脚本,该脚本可以使用rentrez包从ncbi中获取蛋白质序列。然而,我无法使它在一个闪亮的应用程序中工作。
我在ui中有以下输入
sidebarPanel(
uiOutput("maps.protein.input")
),在应用程序文件中:
output$maps.protein.input <- renderUI({
selectInput("prot.accession", "Accession:", as.list(pep.accession))此部分工作良好,并将pep.accession列表读取到selectInput中。
现在,我想使用rentrez下载蛋白质序列。
protein_seq <- reactive({
raw_seq <- entrez_fetch(db="protein", id= paste(input$prot.accession), rettype = "fasta")
raw_seq <- str_sub(raw_seq, start = str_locate(pattern = "\n", protein_seq)[,1] +1 )
str_replace_all(raw_seq, "[\r\n]" , "")
}) 在一个R脚本中,我使用:
protein_seq <- entrez_fetch(db="protein", id="XP_011524437.1", rettype = "fasta")
protein_seq <- str_sub(protein_seq, start = str_locate(pattern = "\n", protein_seq)[,1] +1 )
protein_seq <- str_replace_all(protein_seq, "[\r\n]" , "")这个密码起作用了。我只想让它具有交互性。
发布于 2018-09-24 17:42:13
这里有个解决办法。我在selectInput中使用了selectInput,因为我不知道pep.accession是什么。你可以在你的应用程序中改变它。我还更正了str_sub中的逻辑,并添加了一个req()语句。
library(shiny)
library(rentrez)
ui <- fluidPage(
sidebarPanel(
uiOutput("maps.protein.input")
),
mainPanel(
textOutput("result1")
)
)
server <- function(input, output, session) {
output$maps.protein.input <- renderUI({
selectInput("prot.accession", "Accession:", "XP_011524437.1")
})
protein_seq <- reactive({
req(input$prot.accession)
raw_seq <- entrez_fetch(db = "protein", id = input$prot.accession, rettype = "fasta")
raw_seq <- stringr::str_sub(raw_seq, start = str_locate(pattern = "\n", raw_seq)[,1] +1 )
stringr::str_replace_all(raw_seq, "[\r\n]" , "")
return(raw_seq)
})
output$result1 <- renderText({
paste0("Protein sequence: ", as.character(protein_seq()))
})
}
shinyApp(ui, server)https://stackoverflow.com/questions/52470174
复制相似问题