Cytoscape是一个著名的生物信息学工具,用于显示和探索生物网络。R是一种用于统计和探索性数据分析的强大编程语言和环境。RCy3之间使用CyREST进行通信R以及Cytoscape,允许任何图形(例如,iGraph, graphNEL或dataframe)通过Cytoscape的点击式可视化界面进行查看、探索和操作。因此,通过RCy3,这两个完全不同的、非常有用的生物信息学软件环境被连接起来,相互增强,为探索生物数据提供了新的可能性。

1安装

如果(!"RCy3" %in% installed.packages()){install.packages("BiocManager") BiocManager::install("RCy3")} library(RCy3)

2先决条件

除了这个包(RCy3),你还需要:

3.RCy3的巨大变化

欢迎来到RCy3 v2.0!如果您一直在使用RCy3的早期版本,那么这是一大步。根本的变化是不再使用CytoscapeConnection和CytoscapeWindow类。在之前的版本中,这些参数在包中非常普遍,因此实际上每个函数签名都发生了变化。然而,这个改变简化了函数,在99%的情况下,旧的cw和cc参数可以被简单地删除。

关于这些变化的一些总结数据:

  • 54个新功能(共244个)
  • 除了函数签名,
    • 44个函数没有改变
    • 37个函数被注释为不赞成使用
    • 69个函数被重命名以匹配更新的文档
      • 38个函数被注释为defunct

展望未来,这种重新调整将帮助我们保持包与关键上游资源(如Cytoscape的CyREST API)的更改同步。它还将极大地简化用户的脚本编写。我们希望你能留在船上。

4从哪里开始

我们以几种不同的方式记录了这次升级,以帮助您更新您不想放弃的现有脚本,并为RCy3采用新的概念模型。

4.1升级现有脚本

这是一个来自RCy3主回购的wiki页面,我们将不断更新有用的提示。我建议从这里开始:

4.2新闻

要了解包在过渡到2.0版本中所做的一系列更改,请查看该版本的新闻:

5例子升级

看例子总是有帮助的。中提供了RCy3使用的一些最常见的块之前而且版本。如果您在2.0版本之前的脚本中有类似的代码,那么请尝试这些建议的交换。

注意:不要运行之前块的最新RCy3包。这些块不打算作为一个序列运行,而是作为一个孤立的例子。

5.1例如:displayGraph

之前

g <- new ('graphNEL', edgemode='directed') g <- graph::addNode ('A', g) g <- graph::addNode ('B', g) g <- graph::addNode ('C', g) g <- graph::addEdge ('A', 'B', g) g <- graph::addEdge ('B', 'C', g) cw <- CytoscapeWindow ('vignette', graph=g, overwrite=TRUE) displayGraph (cw) layoutNetwork (cw, layout.name='grid')

g < -新(graphNEL, edgemode =“指示”)g < -图::addNode (A、g) g < -图::addNode (B、g) g < -图::addNode(“C”,g) g < -图::addEdge (A, B, g) g < -图::addEdge (' B ', ' C ', g)网络。suid <- createNetworkFromGraph (g, 'vignette')
  • 注意:返回的是网络SUID,而不是R对象
  • 注:显示和布局是自动完成的

5.2例如:cyPlot

之前

节点。df < - data.frame (id = c(“A”、“B”、“c”,“D”),stringsAsFactors = FALSE)优势。df < - data.frame(源= c(“”,“”,“”,“c”),目标= c(“B”、“c”、“D”,“D”),交互= c(“抑制”、“互动”、“激活”、“交互”),#可选stringsAsFactors = FALSE) g < - cyPlot(节点。df, edge.df) cw <- CytoscapeWindow("vignette2", g) displayGraph(cw) layoutNetwork(cw, "force-directed")

节点。df < - data.frame (id = c(“A”、“B”、“c”,“D”),stringsAsFactors = FALSE)优势。df < - data.frame(源= c(“”,“”,“”,“c”),目标= c(“B”、“c”、“D”,“D”),交互= c(“抑制”、“互动”、“激活”、“交互”),#可选stringsAsFactors = FALSE)。suid <- createNetworkFromDataFrames (node. suid)df,优势。df,“vignette2”)
  • 注意:相同的节点和边缘数据框架,除了键列是位置定义的(对于cyPlot),它们需要使用“id”,“source”,“target”和“interaction”在语义上定义(对于createNetworkFromDataFrames)
  • 注:显示和布局是自动完成的

5.3例如:加载nodeData

之前

g <- initNodeAttribute (graph=g, attribute.name='moleculeType', attribute.name='分子类型',属性。type='char', default.value='undefined') g <- initNodeAttribute (graph=g, 'lfc', 'numeric', 0.0) nodeData (g, 'A', 'moleculeType') <- '激酶' nodeData (g, 'B', 'moleculeType') <- 'TF' nodeData (g, 'C', 'moleculeType') <- '细胞因子' nodeData (g, 'D', 'lfc') <- -1.2 nodeData (g, 'B', 'lfc') <- 1.8 nodeData (g, 'C', 'lfc') <- 3.2 nodeData (g, 'D', 'lfc') <- 2.2 cw = setGraph (cw, g) displayGraph (cw)

节点。data <- data.frame(id=c('A','B',' c ','D'), moleculeType=c('激酶','TF','细胞因子','细胞因子'),lfc=c(-1.2, 1.8, 3.2, 2.2), stringsAsFactors = FALSE)数据,“id”)
  • 注意:简单地组成一个data.frame,然后加载它!不需要初始化或修改本地graphNEL对象
  • 注意:stringsAsFactors = FALSE很重要,否则字符串值将无法加载
  • 注:设置和显示不再需要

5.4例如:setDefaults

之前

setDefaultNodeShape (cw, 'OCTAGON') setDefaultNodeColor (cw, '#AAFF88') setDefaultNodeSize (cw, 80) setDefaultNodeFontSize (cw, 40)

setNodeShapeDefault ('OCTAGON') setNodeShapeDefault ('#AAFF88') setNodeShapeDefault (80) setNodeFontSizeDefault (40)
  • 注:不再有cw!
  • 注意:为了在包中保持一致性,微妙地重命名函数(对不起!)

5.5示例:基于规则的映射

之前

属性。值<- c('激酶','TF', '细胞因子')节点。形状<- c ('DIAMOND', 'TRIANGLE', 'RECTANGLE') setNodeShapeRule (cw, 'moleculeType',属性。setNodeColorRule (cw, 'lfc', c (-3.0, 0.0, 3.0), c ('#00AA00', '#00FF00', '#FFFFFF', '#FF0000', '#AA0000'), mode='interpolate')控件。点= c(-1.2, 2.0, 4.0)节点。setNodeSizeRule (cw, 'lfc', control. size = c (30,40,60,80,90)点,节点。大小,模式=“插入”)

属性。值<- c('激酶','TF', '细胞因子')节点。形状<- c ('DIAMOND', 'TRIANGLE', 'RECTANGLE') setNodeShapeMapping('moleculeType',属性。setNodeColorMapping('lfc', c(-3.0, 0.0, 3.0), c('#00AA00', '#00FF00', '#FFFFFF', '#FF0000', '#AA0000'))控件。点= c(-1.2, 2.0, 4.0)节点。setNodeSizeMapping('lfc',control. size = c (30,40,60,80,90)点,node.sizes)
  • 注:不再有cw!
  • 注意:规则现在是映射(就像它们在Cytoscape中被称为映射一样)
  • 注意:“interpolate”(也就是“continuous”)是默认值,所以你可以省略它

5.6示例:选择节点

之前

selectNodes(cw, 'B') nodes <- getSelectedNodes (cw) selectFirstNeighborsOfSelectedNodes (cw)

selectNodes('B', 'name') #或'id' nodes <- getSelectedNodes() selectFirstNeighbors()
  • 注:不再有cw!
  • 注意:默认情况下,selectNodes是按节点SUID设置的,因此现在必须指定是否使用节点名(或其他可选列)。这可以防止模棱两可的选择。
  • 注意:selectNodes实际上在操作之后返回所选的节点和边,所以你可以这样做:
nodes <- selectNodes('B', 'name')$nodes

5.7示例:保存和导出

之前

saveNetwork(cw, "sample_session", format = "cys")

export timage ("sample_image", "png", h= 800)
  • 注:不再有cw!
  • 注意:细微的重命名以匹配实际操作和输出

6展望未来

下次从头开始编写脚本时,请考虑查看在线可用的小插图和其他RCy3脚本。

browseVignettes(“RCy3”)

用于Cytoscape的R脚本库,许多使用RCy3: