STRING互动网络in R in Shiny

问题描述 投票:0回答:1

问题陈述:我正在尝试使用R

将STRING的交互式网络加载到Shiny网站中

我尝试过的事情:根据STRING,我可以嵌入交互式网络,但是我需要几个元素:

  1. Javascript库
    <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. 用特定参数调用特定蛋白质,例如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)
javascript html r string shiny
1个回答
0
投票
[从上面我的评论开始,这是一个有关如何将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
© www.soinside.com 2019 - 2024. All rights reserved.