闪亮的应用程序不会对B​​iostrings :: DNAString对象的变化做出反应

时间:2017-02-21 14:07:16

标签: r shiny bioconductor

我正在开发一个接受DNA序列的闪亮应用程序(例如" ACTGACTG"),进行一些计算并在点击按钮时绘制结果。当我在Biostrings::DNAString对象中存储reactiveValues时,如果序列的字符数发生变化,我的闪亮应用程序仅对更改做出反应,例如:如果" AA"首先输入,如果" CC"则情节不会改变。然后输入,但如果" AAAA"进入。如果我将对象存储为字符,它会响应所有更改。这是一个简单的例子:

library(shiny)
library(shinyBS)
library(Biostrings)
library(ggplot2)

ui <- fluidPage(
    sidebarLayout(
        sidebarPanel(
            ref_seqs <- textInput("ref_seqs", "Sequence", width = "100%",
                      value = NULL, placeholder = "ATGCTGCTGGTTATTAGATTAGT"),
            run_guide <- bsButton("run", 'Run', type = "action",
                      style = "success", block = TRUE)
        ),
        mainPanel(
            plotOutput("reference")
        )
    )
)

server <- function(input, output) {
    ref <- reactiveValues(sq = NULL)

    dat <- reactive({
        req(input$run)
        chrs <- strsplit(as.character(ref$sq),"")[[1]]
        data.frame(label = chrs, x = seq_along(chrs))
    })

    observeEvent(input$run, {
        ref$sq <- Biostrings::DNAString(input$ref_seqs)
        #ref$sq <- input$ref_seqs
    })

    output$reference <- renderPlot({
        ggplot(dat(), aes(x = x, y = factor(1), label = label)) + geom_text(size = 12)
    })
}

shinyApp(ui = ui, server = server)

如果我注释掉ref$sq <- Biostrings::DNAString(input$ref_seqs)行并取消注释下面的一行,则情节会根据更改进行更新。

任何人都能解释为什么会这样吗? reactiveValues仅适用于基类型吗?谢谢!

0 个答案:

没有答案