STRING интерактивная сеть в Shiny в R - PullRequest
0 голосов
/ 02 марта 2020

Постановка проблемы: Я пытаюсь загрузить интерактивные сети STRING на блестящий веб-сайт, используя R

Что я пробовал: Согласно STRING , я могу встроить интерактивную сеть, но мне нужна пара элементов:

  1. Javascript libary
    <script type="text/javascript" src="http://string-db.org/javascript/combined_embedded_network_v2.0.2.js"></script>
    
  2. Вставить элемент div
    <div id="stringEmbedded"></div>
    
  3. Вызовите указанный c белок с параметрами, например, TP53
    getSTRING('https://string-db.org', {'ncbiTaxonId':'9606', 'identifiers':['TP53'], 'network_flavor':'confidence'})"
    

Теоретически, созданная сеть должна быть нацелена на то место, где находится <div id="stringEmbedded"></div>.

Итак, я сделал это для Shiny:

library(shiny)
library(shinydashboard)

header <- dashboardHeader(title = "Test")
tags$head(HTML("<script type='text/javascript' src='http://string-db.org/javascript/combined_embedded_network_v2.0.2.js'></script>"))

sidebar <- dashboardSidebar(sidebarMenu(
menuItem("Item1", tabName = "dashboard", icon = icon("dashboard")),
menuItem("Item2", tabName = "widgets", icon = icon("th")),
sidebarSearchForm(textId = "searchText", buttonId = "searchButton",label = "Search...") #input$searchText and input$searchButton
))

body <-dashboardBody(
  fluidRow(
  tags$body(tags$script(HTML("getSTRING('https://string-db.org', {'ncbiTaxonId':'9606', 'identifiers':['TP53'], 'network_flavor':'confidence'})")),
fluidRow(

    tabBox(
      side = "left", height = "250px",
      selected = "Tab3",
      tabPanel("Tab1", tags$div(id="stringEmbedded")),
      tabPanel("Tab2", "Tab content 2"),
      tabPanel("Tab3", "Note that when side=right, the tab order is reversed.")
    )
  )

ui <- fluidPage(dashboardPage(header, sidebar, body))

server <- function(input, output) {}

shinyApp(ui = ui, server = server)

1 Ответ

1 голос
/ 03 марта 2020

Следуя моим комментариям выше, приведен минимальный рабочий пример того, как встроить генную сеть STRING в блестящее приложение. Я использовал shinyjs, что, хотя и не является строго необходимым, облегчает работу с пользовательским кодом JS.

library(shiny)
library(shinyjs)

jsCode <- "
    shinyjs.loadStringData = function(gene) {
        getSTRING('https://string-db.org', {
            'ncbiTaxonId':'9606',
            'identifiers': gene,
            'network_flavor':'confidence'})
    }"

ui <- fluidPage(
    useShinyjs(),
    extendShinyjs(text = jsCode),
    tags$head(tags$script(src = "http://string-db.org/javascript/combined_embedded_network_v2.0.2.js")),
    textInput("gene", "Gene symbol", value = "TP53"),
    actionButton("button", "Show"),
    h3("Network:"),
    tags$div(id = "stringEmbedded")
)

server <- function(input, output, session) {

    onclick("button", {
        req(input$gene)
        js$loadStringData(input$gene)
    })

}

shinyApp(ui, server)

enter image description here

...