7. 支持的网络文件格式¶
Cytoscape 将网络表示为有向图,其中节点代表实体(如基因、蛋白质或代谢物),边代表这些实体之间的关系或相互作用。Cytoscape 中的所有边本质上都是有向的,这意味着它们都有一个源节点和一个目标节点。然而,Cytoscape 不会解释或赋予导入的图结构以语义含义,它只是保留输入数据中指定的拓扑关系。节点和边的生物学或功能意义由用户的解释和分析来确定。
Cytoscape 可以读取以下格式的网络/通路文件:
Cytoscape 交换格式 (CX2)
简单交互文件 (SIF 或 .sif 格式)
图形标记语言 (GML 或 .gml 格式)
XGMML (可扩展图形标记和建模语言)
SBML
BioPAX
GraphML
带分隔符的文本
Excel 工作簿 (.xls, .xlsx)
这些格式的复杂程度以及它们可以存储的信息类型各不相同。有些格式主要关注网络拓扑,而另一些则可以保留额外的元数据,如节点属性、边属性、视觉样式和布局信息。除 Excel 外,所列出的所有文件类型均为文本文件,您可以使用常规文本编辑器进行编辑和查看。
7.1. Cytoscape 交换格式 (CX2)¶
Cytoscape 交换格式第 2 版 (CX2) 是一种基于 JSON 的网络数据交换格式,旨在实现 Cytoscape 生态系统各个应用程序(包括 Cytoscape Desktop、Cytoscape Web 和网络数据交换中心 NDEx)之间的高效互操作性。CX2 将网络数据组织为模块化的“方面 (aspects)”,每个方面都根据其自身的模式独立构建。这种面向方面的方法简化了对视觉样式、网络拓扑、节点和边属性以及布局坐标等复杂数据的处理,从而能够在不同工具之间实现一致的解释和呈现。
作为 Cytoscape 交换格式 (CX) 的演进版本,CX2 是由 Cytoscape 和 NDEx 团队共同开发的,旨在更好地支持日益复杂的生物网络及其关联元数据。CX2 通过针对 Web 应用程序优化的紧凑设计提高了性能,减少了内存使用并提高了网络数据传输效率。其可扩展的结构使得无需影响现有兼容性即可轻松整合新功能,从而支持 Cytoscape 社区未来的发展。
下面展示了一个包含两个节点、一条边、属性和布局坐标的简单 CX2 网络示例
[
{
"CXVersion": "2.0",
"hasFragments": false
},
{
"attributeDeclarations": [
{
"networkAttributes": {
"name": {"d": "string"}
},
"nodes": {
"name": {"d": "string"},
"type": {"d": "string"}
},
"edges": {
"interaction": {"d": "string"}
}
}
]
},
{
"networkAttributes": [
{"name": "Simple Network Example"}
]
},
{
"nodes": [
{"id": 1, "x": 100, "y": 200, "v": {"name": "Node A", "type": "protein"}},
{"id": 2, "x": 300, "y": 400, "v": {"name": "Node B", "type": "protein"}}
]
},
{
"edges": [
{"id": 100, "s": 1, "t": 2, "v": {"interaction": "binds"}}
]
},
{
"status": [
{"error": "", "success": true}
]
}
]
有关 CX2 规范、支持的方面以及其他示例的详细信息,请访问 Cytoscape 交换格式文档。
7.2. Cytoscape.js JSON¶
从 Cytoscape 3.1.0 开始,Cytoscape 支持 Cytoscape.js JSON 文件。您可以使用此功能将网络可视化效果导出到 Web 浏览器。Cytoscape.js 有两种表示网络数据的方式,目前读取器和写入器仅支持数组样式的图表标记法。例如,Cytoscape 中的这个网络

将被导出为此 JSON
{
"elements" : {
"nodes" : [ {
"data" : {
"id" : "723",
"selected" : false,
"annotation_Taxon" : "Saccharomyces cerevisiae",
"alias" : [ "RPL31A", "RPL34", "S000002233", "ribosomal protein L31A (L34A) (YL28)" ],
"shared_name" : "YDL075W",
"SUID" : 723,
"degree_layout" : 1,
"name" : "YDL075W"
},
"position" : {
"x" : 693.0518315633137,
"y" : -49.47506554921466
},
"selected" : false
}, {
"data" : {
"id" : "726",
"selected" : false,
"annotation_Taxon" : "Saccharomyces cerevisiae",
"alias" : [ "RP23", "RPL16B", "S000005013", "ribosomal protein L16B (L21B) (rp23) (YL15)" ],
"shared_name" : "YNL069C",
"SUID" : 726,
"degree_layout" : 1,
"name" : "YNL069C"
},
"position" : {
"x" : 627.3147710164387,
"y" : -205.99251969655353
},
"selected" : false
}, {
"data" : {
"id" : "658",
"selected" : false,
"annotation_Taxon" : "Saccharomyces cerevisiae",
"alias" : [ "RPL11B", "S000003317", "ribosomal protein L11B (L16B) (rp39B) (YL22)" ],
"shared_name" : "YGR085C",
"SUID" : 658,
"degree_layout" : 2,
"name" : "YGR085C"
},
"position" : {
"x" : 804.3092778523762,
"y" : -245.6235926946004
},
"selected" : false
}, {
"data" : {
"id" : "660",
"selected" : false,
"annotation_Taxon" : "Saccharomyces cerevisiae",
"alias" : [ "KAP108", "S000002803", "SXM1" ],
"shared_name" : "YDR395W",
"SUID" : 660,
"degree_layout" : 8,
"name" : "YDR395W"
},
"position" : {
"x" : 730.8733342488606,
"y" : -157.50702317555744
},
"selected" : false
}, {
"data" : {
"id" : "579",
"selected" : false,
"annotation_Taxon" : "Saccharomyces cerevisiae",
"alias" : [ "RPL11A", "S000006306", "ribosomal protein L11A (L16A) (rp39A) (YL22)" ],
"shared_name" : "YPR102C",
"SUID" : 579,
"degree_layout" : 2,
"name" : "YPR102C"
},
"position" : {
"x" : 841.1395696004231,
"y" : -130.77909119923908
},
"selected" : false
}, {
"data" : {
"id" : "578",
"selected" : false,
"annotation_Taxon" : "Saccharomyces cerevisiae",
"alias" : [ "GRC5", "QSR1", "RPL10", "S000004065", "ribosomal protein L10" ],
"shared_name" : "YLR075W",
"SUID" : 578,
"degree_layout" : 2,
"name" : "YLR075W"
},
"position" : {
"x" : 910.3755162556965,
"y" : -217.0562556584676
},
"selected" : false
} ],
"edges" : [ {
"data" : {
"id" : "659",
"source" : "658",
"target" : "578",
"selected" : false,
"interaction" : "pp",
"shared_interaction" : "pp",
"shared_name" : "YGR085C (pp) YLR075W",
"SUID" : 659,
"name" : "YGR085C (pp) YLR075W"
},
"selected" : false
}, {
"data" : {
"id" : "661",
"source" : "658",
"target" : "660",
"selected" : false,
"interaction" : "pp",
"shared_interaction" : "pp",
"shared_name" : "YGR085C (pp) YDR395W",
"SUID" : 661,
"name" : "YGR085C (pp) YDR395W"
},
"selected" : false
}, {
"data" : {
"id" : "724",
"source" : "660",
"target" : "723",
"selected" : false,
"interaction" : "pp",
"shared_interaction" : "pp",
"shared_name" : "YDR395W (pp) YDL075W",
"SUID" : 724,
"name" : "YDR395W (pp) YDL075W"
},
"selected" : false
}, {
"data" : {
"id" : "733",
"source" : "660",
"target" : "579",
"selected" : false,
"interaction" : "pp",
"shared_interaction" : "pp",
"shared_name" : "YDR395W (pp) YPR102C",
"SUID" : 733,
"name" : "YDR395W (pp) YPR102C"
},
"selected" : false
}, {
"data" : {
"id" : "727",
"source" : "660",
"target" : "726",
"selected" : false,
"interaction" : "pp",
"shared_interaction" : "pp",
"shared_name" : "YDR395W (pp) YNL069C",
"SUID" : 727,
"name" : "YDR395W (pp) YNL069C"
},
"selected" : false
}, {
"data" : {
"id" : "580",
"source" : "578",
"target" : "579",
"selected" : false,
"interaction" : "pp",
"shared_interaction" : "pp",
"shared_name" : "YLR075W (pp) YPR102C",
"SUID" : 580,
"name" : "YLR075W (pp) YPR102C"
},
"selected" : false
} ]
}
}
这是 Cytoscape.js 中的一个示例可视化效果

重要提示¶
Cytoscape 中“将网络和表格导出为 Cytoscape.js”的功能会创建一个没有样式的 JSON 文件。这意味着如果您对网络应用了样式,则需要将样式导出到单独的 JSON 文件中。请阅读 样式 (Style) 章节以获取更多详细信息。
7.3. SIF 格式¶
SIF 格式仅指定节点和交互关系,而其他格式存储有关网络布局的额外信息,并允许与其他各种网络程序和数据源交换网络数据。通常,SIF 文件用于在首次构建网络时导入交互关系,因为它们易于在文本编辑器或电子表格中创建。加载交互关系并执行网络布局后,可以将网络保存为 GML 或 XGMML 格式,以便与其他系统进行交互。
简单交互格式便于根据交互列表构建图表。它还可以轻松地将不同的交互集组合成一个更大的网络,或向现有数据集添加新的交互。其主要缺点是不包含任何布局信息,导致 Cytoscape 每次加载时都必须重新计算网络的新布局。
SIF 文件中的行指定了一个源节点、一种关系类型(或边类型)以及一个或多个目标节点
nodeA relationship_type nodeB
nodeC relationship_type nodeA
nodeD relationship_type nodeE nodeF nodeB
nodeG
...
nodeY relationship_type nodeZ
一个更具体的示例如下
node1 typeA node2
node2 typeB node3 node4 node5
node0
第一行标识了两个节点(称为 node1 和 node2),以及 node1 和 node2 之间类型为 typeA 的单一关系。第二行指定了三个新节点:node3、node4 和 node5;此处“node2”指代与第一行中相同的节点。第二行还指定了三个关系,全部为 typeB 类型,以 node2 为源,以 node3、node4 和 node5 为目标。这种第二种形式只是为指定具有相同源节点的多种相同类型的关系提供的简写。第三行展示了如何指定一个与其他节点没有关系的节点。对于确实有关系的节点,不需要这种形式,因为关系的规范也会隐含地标识这些节点。
重复条目会被保留。同一节点之间的多条边可以具有相同的边类型。例如,以下内容指定了同一对节点之间的三条边,两条为 xx 类型,一条为 yy 类型
node1 xx node2
node1 xx node2
node1 yy node2
也允许连接到节点自身的边(自环边)
node1 xx node1
Cytoscape 中的每个节点和边都有一个名称列。对于以 SIF 格式定义的网络,节点名称应该是唯一的,因为同名节点将被视为相同节点。默认情况下,每个节点的名称将为此文件中的名称(除非使用样式映射了其他字符串以在节点上显示)。这将在样式 (Styles)一节中讨论。每条边的名称将由源节点和目标节点的名称加上交互类型组成:例如,sourceName (edgeType) targetName。
标签“edgeType”可以是任何字符串。可以使用完整的单词或连起来的单词来定义关系类型,例如 geneFusion、cogInference、pullsDown、activates、degrades、inactivates、inhibits、phosphorylates、upRegulates 等。
系统生物学界常用的一些交互类型如下
pp .................. protein - protein interaction
pd .................. protein -> DNA
(e.g. transcription factor binding upstream of a regulating gene.)
一些较少使用的交互类型为
pr .................. protein -> reaction
rc .................. reaction -> compound
cr .................. compound -> reaction
gl .................. genetic lethal relationship
pm .................. protein-metabolite interaction
mp .................. metabolite-protein interaction
分隔符¶
空白字符(空格或制表符)用于分隔简单交互文件格式中的名称。但是,在某些情况下,节点名称或边类型中需要空格。标准是:如果文件中包含任何制表符,则使用制表符作为分隔字段,空格被视为名称的一部分。如果文件中不包含制表符,则任何空格都是分隔名称的分隔符(此时名称不能包含空格)。
如果您的网络意外地不包含任何边,且节点名称看起来像边名称,则这可能意味着您的文件中包含一个多余的制表符,导致解析器出错。另一方面,如果您的网络中节点的名称只有完整名称的一半,则您可能本意是使用制表符来分隔带有空格的节点名称。
简单交互格式的网络通常存储在扩展名为 .sif 的文件中,当在目录中浏览此类文件时,Cytoscape 会识别此扩展名。
7.4. GML 格式¶
与 SIF 相比,GML 是一种丰富的图形格式语言,被许多其他网络可视化软件包所支持。GML 文件格式规范可在以下网址获得:
http://graphviewer.nl/misc/gmllanguage/gml-technical-report.pdf
通常不需要直接修改 GML 文件的内容。一旦以 SIF 格式构建并布局了网络,通过保存为 GML 并重新加载,布局信息就会被保留。当加载 GML 文件时,其中指定的属性将生成一个名为 Filename.style 的新样式。
7.5. XGMML 格式¶
XGMML 是 GML 的 XML 演进版本,基于 GML 定义。除网络数据外,XGMML 还包含节点/边/网络的列数据。有关更多信息,请访问 Wikipedia:
https://en.wikipedia.org/wiki/XGMML
由于 XGMML 提供了与所有 XML 文档类型相关的灵活性,因此现在它比 GML 更受青睐。如果您不确定使用哪种格式,请选择 XGMML。
如果读取旧文件时遇到问题,可以设置 Java 系统属性“cytoscape.xgmml.repair.bare.ampersands”为“true”。
仅当由于错误编码的“&”符号导致 XGMML 文件或会话无法读取时才应使用此选项,因为它会减慢读取过程,但这仍然优于尝试通过手动编辑修复此类文件。
7.6. SBML (系统生物学标记语言) 格式¶
系统生物学标记语言 (SBML) 是一种用于描述生化网络的 XML 格式。SBML 文件格式规范可在以下网址获得:
7.7. BioPAX (生物通路交换) 格式¶
BioPAX 是一种旨在交换生物通路数据的 OWL (Web 本体语言) 文档。此格式的完整文档集可在以下网址获得:
7.8. GraphML¶
GraphML 是一种全面且易于使用的图形文件格式,它基于 XML。此格式的完整文档集可在以下网址获得:
7.9. 带分隔符的文本表格和 Excel 工作簿¶
Cytoscape 原生支持 Microsoft Excel 文件 (.xls, .xlsx) 和带分隔符的文本文件。这些文件中的表格可以包含网络数据和边列。用户可以在导入文件时指定包含源节点、目标节点、交互类型和边列的列。其他一些网络分析工具(如 igraph,https://igraph.cn/)具有将图导出为简单文本文件的功能。Cytoscape 可以读取这些文本文件并据此构建网络。有关更多详细信息,请阅读创建网络一节中的“导入自由格式表格”部分。