本小插图将演示从STRING数据库中检索网络、基本分析、TCGA数据加载以及使用RCy3包在R中的Cytoscape中可视化。

1安装

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

2所需的软件

RCy3的全部意义在于与Cytoscape连接。您需要安装并启动Cytoscape:

cytoscapePing ()

对于这个小插图,还需要STRING应用程序从Cytoscape内部访问STRING数据库https://apps.cytoscape.org/apps/stringapp

{r} #在Cytoscape 3.7.0及以上版本中可用

3.建立疾病网络

使用Cytoscape查询与乳腺癌和卵巢癌相关的基因网络的STRING数据库。

如果没有安装STRING应用程序,则不会报告错误,但您的网络将是空的

3.1按疾病查询STRING数据库生成网络

3.1.1乳腺癌

字符串。cmd = 'string疾病查询疾病="乳腺癌" cutoff=0.9种="智人" limit=150' commandrun (string.cmd)

这里我们使用Cytoscape的命令行语法,它可以用于任何核心或应用程序自动化功能,然后发出GET请求。使用commandsHelp来查询活动的Cytoscape会话中可用的功能和参数,包括您已安装的应用程序!

3.1.2卵巢癌

字符串。cmd = 'string疾病查询疾病="卵巢癌" cutoff=0.9种="智人" limit=150' commandrun (string.cmd)

4与Cytoscape交互

现在我们已经在Cytoscape中添加了几个网络,让我们看看在R中可以用它们做什么……

4.1获取网络列表

getNetworkList ()

4.2网络布局

layoutNetwork (layout.name =“循环”)

4.2.1可用的布局算法列表

getLayoutNames ()

4.2.2布局参数!

layoutpropertynames (layout.name='force-directed') layoutNetwork('force-directed defaultSpringCoefficient=0.0000008 defaultSpringLength=70')

4.3从网络中获取表数据

现在,让我们看看与STRING网络相关的表格数据……

getTableColumnNames(节点)

STRING数据库的一大优点是它们提供的所有节点和边缘属性。让我们把其中一些放到R中来玩……

4.3.1检索疾病评分

我们可以从Cytoscape中检索任何列集,并将它们存储为以SUID为键的R数据帧。在本例中,让我们从节点表中检索疾病评分列。这是我们的两个参数

- getTableColumns('node','stringdb::disease score'

4.3.2地块分布和拾取阈值

现在可以像平常一样使用R来研究数据了。

Par (mar=c(1,1,1,1)) plot(factor(row.names(disease.score.table)),disease.score.table[,1], ylab=colnames(disease.score.table)[1]) summary(disease.score.table)

4.4生成子网

为了将您的探索反映到网络中,让我们生成子网络…

"疾病得分"前四分之一

上面。夸脱<-分位数(疾病。得分。表[,1],0.75)。nodes <- row.names(disease.score.table)[which(disease.score.table[,1]>top.quart)] createSubnetwork(top.nodes,subnet .name ='顶级疾病四分位')#返回一个细胞scape网络SUID

…仅用于连接节点

createSubnetwork(edges='all',subnet .name='top disease四分位connected') #排除未连接节点的方便方法!

…从前3个基因的第一个邻居开始,利用网络连通性和数据来指导发现。

setCurrentNetwork(network="STRING network -卵巢癌")nodes <- row.names(disease.score.table)[tail(order(disease.score.table[,1]),3)] selectNodes(nodes=top.nodes) selectFirstNeighbors() createSubnetwork('selected', subnet .name='top disease neighbors') #选定的节点,所有连接的边(默认)

…从前3个基因开始的扩散算法,以一种比一级近邻更微妙的方式使用网络连接。

setCurrentNetwork(network="STRING网络-卵巢癌")selectNodes(nodes=top.nodes) commandsPOST('扩散扩散')#扩散!createSubnetwork('selected',subnet .name = 'top disease diffusion')

Pro-tip别忘了setCurrentNetwork ()在获取表列数据并进行选择之前,将其发送到正确的父网络。

5在网络上可视化数据

5.1加载数据集

下载的TCGA数据,预处理为R对象。也可通过每个TCGA出版物,例如:

负载(执行(“extdata”、“tutorial-ovc-expr-mean-dataset。robj”,包= " RCy3 "))load(system.file("extdata","tutorial-ovc-mut-dataset.robj", package="RCy3")) load(system.file("extdata","tutorial-brc-expr-mean-dataset.robj", package="RCy3")) load(system.file("extdata","tutorial-brc-mut-dataset.robj", package="RCy3"))

5.2乳癌数据集

这些数据集类似于r中通常遇到的数据帧。对于多样性,一个使用row.names存储相应的基因名称,另一个使用第一列。两者都很容易导入到Cytoscape中。

str(brc.expr) # data.frame中的基因名称str(brc.mut) # Hugo_Symbol列中的基因名称

让我们回到乳腺癌网络…

setCurrentNetwork(network="STRING network - breast cancer") layoutNetwork('force-directed') #使用与之前设置相同的设置

并使用来自RCy3调用的helper函数loadTableData

? loadTableData loadTableData (brc.expr table.key。loadTableData(brc.mut,'Hugo_Symbol',table.key. name)Column = "display name") #如果没有默认列名,则指定列名

5.2.1视觉风格

让我们创建一个新样式来可视化导入的数据……从基础开始,我们将在一个属于我们自己的自定义样式中指定一些默认值和明显的映射。

style.name = "dataStyle" createVisualStyle(style.name) setVisualStyle(style.name) setNodeShapeDefault("ellipse", style.name) #记住指定你的style.name!setNodeSizeDefault(60, style.name) setNodeColorDefault("#AAAAAA", style.name) setEdgeLineWidthDefault(2, style.name) setNodeLabelMapping('display name', style.name)

5.2.1.1可视化表达式数据

现在让我们用平均表达式的映射更新样式。第一步是从Cytoscape获取列数据,并提取最小值和最大值来定义数据映射值的范围。

brc.expr.network = getTableColumns('node','expr.mean') min.brc.expr = min(brc. exr .network[,1],na.rm=TRUE) max.brc.expr = max(brc. exr .network[,1],na.rm=TRUE)数据。值= c(min.brc.expr,0,max.brc.expr)

接下来,我们使用RColorBrewer包来帮助我们选择与数据值匹配的好颜色。

display.brew .all(length(data.values), colorblindFriendly=TRUE, type="div") # div,qual,seq,所有节点。colors <- c(rev(brew .pal(length(data.values), "RdBu"))))

最后,我们使用手持式mapVisualProperty函数来构造CyREST需要指定样式映射的数据对象,然后我们将它们发送给CytoscapeupdateStyleMappings

setNodeColorMapping (expr。意思是,数据。值,节点。颜色,style.name = style.name)

提示:根据你的数据,最好在最大的最小值或最大数据值的负值和负值上平衡你的颜色范围,这样颜色强度在两个方向上的缩放就会相似。

5.2.2可视化突变数据

好的,现在让我们用突变的映射来更新。这些都是相同的步骤,但是这次将突变映射到这两个节点边框宽度和颜色。

brc.mut.network = getTableColumns('node','mut_count') min.brc.mut = min(brc.mut.network[,1],na.rm=TRUE) max.brc.mut = max(brc.mut.network[,1],na.rm=TRUE)数据。values = c(min.brc.mut,20,max.brc.mut) display.brewer.all(length(data.values), colorblindFriendly=TRUE, type="seq") border。颜色<- c(啤酒。pal(3, "Reds")) setNodeBorderColorMapping('mut_count',data.values,border.colors,style.name=style.name)边框。width <- c(2,4,8) setNodeBorderWidthMapping('mut_count',data.values,border.width,style.name=style.name)

这是一对有用的可视属性,可以映射到单个数据列。知道为什么吗?

5.2.3基于严重突变节点扩散的子网

现在,让我们把学过的子网选择应用到这里……

上面。mut <- (brc.mut$Hugo_Symbol)[tail(order(brc.mut$mut_count),2)]顶部。傻瓜selectNodes(节点=。mut,'display name') commandsPOST('diffusion diffuse') createSubnetwork('selected',subnet .name = 'top mutated diffusion') layoutNetwork('force-directed')

顶部突变基因基于TCGA数据,扩散算法基于来自STRING数据的网络连通性运行,导致关键乳腺癌基因的聚焦子网络视图,并将平均患者表达数据映射为填充颜色。现在这是数据集成!

提示:您可以在“Cytoscape样式”选项卡>选项>创建样式中生成一个图例…这还没有作为命令可用。快到了!

5.3卵巢癌数据集

但是其他网络和数据集呢?我们还要重复吗所有这些步骤?实际上,不!

首先,让我们切换回卵巢癌网络并加载我们的数据。

setCurrentNetwork(network="STRING网络-卵巢癌")clearSelection() str(ovc.expr) #基因名称在行。名称的数据。框架str(ovc.mut) #基因名称在列命名'Hugo_Symbol' loadTableData(ovc. exr)expr, table.key.column = '显示名称')mut,'Hugo_Symbol', table.key.column = '显示名称')

因为我们在原始数据帧中使用了相同的列名,所以现在可以简单地应用相同上面创建的视觉风格!

setVisualStyle (style.name = style.name)

对乳腺癌和卵巢癌重复使用相同的风格,我们可以比较两个数据集的相对表达和突变计数。例如,注意卵巢癌的情况:减少平均表达式的范围和更少的mega-mutated基因。

6保存、分享和发布

6.1保存一个Cytoscape会话文件

保存会话文件一切.与大多数项目软件一样,我们建议经常保存!

# .cys saveSession(“tutorial_session”)

注意:如果您没有指定完整的路径,文件将相对于R中的当前工作目录保存。

6.2保存高分辨率图像文件

您可以导出极高分辨率的图像,包括矢量图形格式。

export timage (filename='tutorial_image2', type =' PDF') #.pdf