8. 节点和边列数据

交互网络作为独立的模型非常有用。然而,当与额外信息集成时,它们在回答科学问题方面最为强大。Cytoscape 允许用户以节点/边/网络数据列的形式向 Cytoscape 添加任意的节点、边和网络信息。例如,这可以包括基因的注释数据或蛋白质-蛋白质相互作用中的置信度值。然后,通过建立从列到网络属性(颜色、形状等)的映射,可以以用户定义的方式可视化这些列数据。关于 样式 (Styles) 的章节对此进行了更详细的讨论。

8.1. 导入数据表格文件

Cytoscape 支持从带分隔符的文本文件和 MS Excel 数据表导入数据。

示例数据表 1

示例数据
对象键 (Object Key) 别名 (Alias) SGD ID
AAC3 YBR085W|ANC3 S000000289
AAT2 YLR027C|ASP5 S000004017
BIK1 YCL029C|ARM5|PAC14 S000000534

数据表格文件应包含一个主键列和至少一个数据列。数据列的数量没有上限。别名列是一个可选功能,使用第一行数据作为列名也是可选的。或者,您可以通过 File → Import → Table from File… 用户界面指定每个列名。

基本操作

  1. 选择 File → Import → Table from File…。或者,您可以简单地将文件从桌面拖放到 表格面板 (Table Panel) 中,或者单击 表格面板 界面中的 Import Table from File… 按钮。

  2. 选择一个数据文件。该文件可以是文本文件或 Excel (.xls/.xlsx) 文件。

  3. 目标表格数据 (Target Table Data) 部分,选择数据的导入位置。您可以选择现有的网络集合、仅特定的网络,或者选择将数据导入到 未分配表格 (Unassigned Table)(详见下文)。

  4. 根据您在 Where to import Table Data 下拉菜单中的选择,您需要选择一个网络集合或特定网络。您还需要选择 Import Data as,即数据是作为节点、边还是网络表格列导入。

  5. 如果表格在预览面板中没有正确分隔,请在 高级选项 (Advanced Options) 面板中更改分隔符。默认分隔符为制表符。对于 Excel 工作簿,此步骤不是必需的。

  6. 默认情况下,第一列被指定为主键,由键 图标标记。请确保指定为主键的列与 Key Column for Network 下选择的内容(即网络中的键)相匹配。若要将另一列设为主键,请单击列标题旁边的箭头并选择键符号。

  7. 同样,要更改列的数据类型(例如从整数改为字符串),请单击列标题旁边的箭头,然后选择正确的数据类型。

  1. 单击 OK 进行导入。

未分配表格

自 Cytoscape 3.1 起,可以导入不分配给现有网络的数据表,这意味着数据不必对应于当前加载的任何节点/边。如果数据表作为“未分配”导入,且随后导入了一个与该数据在节点或边方面有映射关系的网络,则数据将自动链接。这在加载大型数据集(例如表达数据)、定义用于在网络上可视化数据的 样式 (Style),以及随后加载单个网络以查看数据(例如来自在线数据库)时非常有用。此功能允许数据自动链接到任何适用的网络,而无需为每个网络加载数据。

8.2. 旧版 Cytoscape 属性格式

除了表格数据外,仍支持以前版本的 Cytoscape 使用的简单属性文件格式。节点和边数据文件的格式很简单:节点数据文件以第一行的列名开始(注意不能包含空格)。接下来的每一行包含节点名称,后跟等号和数据值。数字和字符串是最常见的数据类型。给定列的所有值必须具有相同的类型。例如:

FunctionalCategory
YAL001C = metabolism
YAR002W = apoptosis
YBL007C = ribosome

边数据文件的结构基本相同,不同之处在于边的名称是源节点名称,后跟括号中的交互类型,再后跟目标节点名称。方向性很重要,因此切换源和目标将指向不同的(或可能不存在的)边。以下是一个边数据文件示例:

InteractionStrength
YAL001C (pp) YBR043W = 0.82
YMR022W (pd) YDL112C = 0.441
YDL112C (pd) YMR022W = 0.9013

由于 Cytoscape 将边数据视为有向的,第二和第三个边数据值引用了两个不同的边(源和目标被颠倒,尽管涉及的节点相同)。

每个数据列都存储在单独的文件中。节点和边数据文件使用相同的格式,并具有 .attrs 后缀。

节点和边数据可以通过 File → Import → Table 菜单选项加载,就像数据表格文件一样。

当使用表达矩阵加载表达数据时,除非另有明确说明,否则它会自动作为节点数据加载。

节点和边数据列附加到节点和边上,因此与网络无关。给定节点或边的数据值将应用于所有已加载网络文件中该节点或边的所有副本,无论数据文件或网络文件是先导入还是后导入。

详细文件格式(高级用户)

每个数据文件都有一行标题行,给出数据列的名称,以及可选的关于该数据列的一些额外元信息。格式如下:

columnName (class=JavaClassName)

第一个字段始终是列名:它不能包含空格。如果存在,class 字段定义数据值的类名。例如,java.lang.StringString 表示字符串,java.lang.DoubleDouble 表示浮点值,java.lang.IntegerInteger 表示整数值等。如果该值实际上是一个值列表,则 class 应为列表中对象的类型。如果在标题行中未指定类,Cytoscape 将尝试从第一个值猜测类型。如果第一个值包含浮点格式的数字,Cytoscape 将假定为 java.lang.Double;如果第一个值仅包含没有小数点的数字,Cytoscape 将假定为 java.lang.Integer;否则,Cytoscape 将假定为 java.lang.String。注意,第一个值可能会误导 Cytoscape:例如,

floatingPointDataColumn
firstName = 1
secondName = 2.5

在这种情况下,第一个值会使 Cytoscape 认为这些值应该是整数,而实际上它们应该是浮点数。显式指定值类型以防止混淆是最安全的做法。更好的格式是

floatingPointDataColumn (class=Double)
firstName = 1
secondName = 2.5

或者

floatingPointDataColumn 
firstName = 1.0
secondName = 2.5

第一行之后的每一行都标识对象(节点数据文件中的节点或边数据文件中的边)的名称以及数据值的字符串表示。分隔符始终是等号;等号前后的空白字符(空格和/或制表符)将被忽略。这意味着名称和值可以包含空格,但对象名称不能包含等号,且不保证处理前导或尾随空格。如果数据列要映射到任何内容,对象名称必须是 表格面板 最左侧列中看到的节点 ID 或边 ID。这些名称必须完全一致(包括大小写),否则将无法匹配。

边名称的形式均为

sourceName (edgeType) targetName

具体而言,即

源名称 空格 左括号 边类型 右括号 空格 目标名称

请注意,边名称中不允许使用制表符。制表符可用于将边名称与 = 分隔符分开,但不能用于边名称本身内。还要注意,此格式与 SIF 文件格式中的交互规范不同。明确地说:上述交互的 SIF 条目看起来如下:

sourceName edgeType targetName

或者

源名称 空格 边类型 空格 目标名称

要指定值列表,请使用以下语法:

listDataColumnName (class=java.lang.String)
firstObjectName = (firstValue::secondValue::thirdValue)
secondObjectName = (onlyOneValue)

此示例显示了一个数据列,其值定义为文本字符串列表。第一个对象有三个字符串,因此其列表中有三个元素,而第二个对象列表只有一个元素。在列表的情况下,每个数据值都使用列表语法(即圆括号),并且每个元素属于同一类。同样,如果标题行中未指定类,则将推断该类。样式 (Styles) 不支持列表,因此无法映射到网络属性。

换行符特性

有时需要数据值包含换行符,例如跨两行的节点标签。可以通过在数据值中插入 \n 来实现。例如:

newlineDataColumn
YJL157C = This is a long\nline for a label.

表格面板

启动 Cytoscape 时,表格面板 (Table Panel) 会出现在主 Cytoscape 窗口的右下方。可以使用 F5 键或取消勾选 View → Show Table Panel 菜单选项来隐藏和恢复此浏览器。与其他面板一样,可以通过按下右上角的小图标来取消停靠。

要切换显示节点、边和网络数据表,请使用 表格面板 底部的选项卡。默认情况下,表格面板 显示选定网络中所有节点和边的列。要仅显示选定节点/边的列,请单击左上角的 Change Table Mode 按钮 。要更改显示的列,请单击 Show Column 按钮并选择要显示的列(通过单击选择多个列,然后单击屏幕上的其他位置以关闭列列表)。

编辑表格面板和数值

大多数列值可以通过双击单元格进行编辑(只有 ID 不能编辑)。可以通过按 Enter 键或键入 \n 将换行符插入到字符串列中。完成编辑后,单击表格面板中编辑单元格外部或按 Shift-Enter 保存您的更改。编辑时按 Esc 键将撤消任何更改。

面板中的行可以通过单击列标题按特定列进行字母顺序排序。可以使用 Create New column 按钮创建新列,类型必须是以下四种之一:整数、字符串、实数(浮点数)或布尔值。可以使用 Delete Columns… 按钮删除列。注意:删除列会将它们从 Cytoscape 中彻底删除,而不仅仅是从表格面板中删除! 若要从面板中移除列而不删除它们,只需使用 Select Columns 按钮取消选择该列即可。

表格面板 中的列可以通过右键单击列标题并选择 Rename Column… 来重命名。表格面板 支持命名空间,因此如果您有多个包含相关信息的列,则可以创建一个命名空间。命名空间和列名由双冒号 (::) 分隔。例如,如果数据包含多个关于细胞区室信息的列,您可以将列标题编辑为 compartment::cytosolcompartment::endosome 等格式,这将创建一个名为 compartment 的命名空间,并关联多个列。然后,您可以对命名空间中的所有列执行诸如 Show/Hide 之类的操作。

导出表格面板

要导出 表格面板 的全部内容,请单击 Export Table to File… 按钮

还可以直接在 表格面板 和外部应用程序(例如 Excel)之间进行复制粘贴,只需通过点击并拖动选择表格中的一组单元格,然后使用常规的复制粘贴键盘快捷键即可。这消除了为了将数据插入 Excel 等应用程序而必须将表格导出到文件的需要!

8.3. 从公共数据库导入数据表

还可以通过 Web 服务从公共数据库导入节点数据列,例如来自 BioMart (https://www.ensembl.org/info/data/biomart/index.html) 的数据。

基本操作

  1. 加载一个网络,例如 galFiltered.sif

  2. 选择 File → Import → Table from Public Databases…

  3. 系统首先会要求您从一组 Web 服务中进行选择。在此示例中,我们将选择 ENSEMBL GENES 104

  1. Import Data Table from Public Databases 对话框中,选择一个 Service。由于 galFiltered 网络来自酵母,请选择 ENSEMBL GENES - SACCHAROMYCES CEREVISIAE

  2. 对于 Key Column in Cytoscape,选择 COMMON 作为 Column,并选择 Gene Name(s) 作为 Data Type

Data Type 下选择的标识符类型必须与网络中选定 Column 中使用的标识符相匹配。

  1. 选择要导入的数据列。

  2. 选择 Import

  3. Import Data 界面中,选择 COMMON 作为 Key Column for Network

导入完成后,您可以在表格面板中看到新导入的数据列。

8.4. 映射标识符

集成多个数据源时的一个常见问题是术语差异。标准化标识符有许多方言。有些数据库特定于特定的生物体或基因组,而另一些则跨越这些界限。BridgeDB 是一个致力于解决 ID 映射问题的 Web 服务。Cytoscape 包含对 BridgeDB 的简单访问。如果您需要更冷门的物种或数据源,还有一个 可安装的 BridgeDB 应用 以访问更完整的功能集。

Ensembl 被用作规范分类学。两个任意数据源之间的转换通常通过通过 Ensembl 进行映射来实现。

要将标识符从一个源映射到另一个源,请右键单击标识符的列标题。选择 Map Column… 选项。

A. 映射始终受物种限制,以防止跨物种的无意义匹配。您必须(一次性)选择一个物种,此功能才能正常工作。数据源和目标的选项由物种决定。

B. 根据您选择的列中的项目,我们可以对用作映射源的数据库做出合理的假设。如果这不是正确的源,您可以在“Map from”字段中覆盖它。

C. 标识符映射的目标数据库。此列表按物种筛选,并整理为最常见的选项。支持的目标的完整列表位于 此处

D. 在某些有多个答案的情况下,Force Single 选项将结果限制为服务返回的第一个答案。如果该选项关闭,结果列表将出现在列中。