Использование рентреза и блэйна для загрузки белковых последовательностей - PullRequest
0 голосов
/ 23 сентября 2018

Я новичок в R и Shiny.До сих пор мне удалось создать скрипт, который извлекает последовательности белка из ncbi с помощью пакета rentrez.Однако мне не удается заставить его работать в блестящем приложении.

У меня есть следующий ввод в пользовательском интерфейсе

 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]" , "")

и этот код работает.Я просто хочу сделать это интерактивным.

1 Ответ

0 голосов
/ 24 сентября 2018

Вот решение.Я использовал XP_011524437.1 в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...