10. 查找与筛选节点和边

10.2. 选择菜单

选择 (Select) → 节点 (Nodes)选择 → 边 (Edges) 菜单提供了多种选择节点和边的机制。大多数选项非常直观。

也提供了一套用于选择节点、边和注释的键盘快捷键。请注意,无论当前鼠标点击或拖拽的选择模式 (Selection Mode) 如何,这些快捷键均有效。

键盘快捷键操作
Cmd-A 全选(节点、边和注释)
Option-N 选择所有节点
Option-E 选择所有边
Cmd-Shift-A 取消全选(节点、边和注释)
Option-Shift-N 取消选择所有节点
Option-Shift-E 取消选择所有边
Cmd-I 反选节点
Option-I 反选边
Cmd-Option-E 选择相邻边
Cmd-Option-N 按已选边选择节点
Cmd-Option-N 按已选边选择节点
Shift-拖拽 或 Control-拖拽 (Mac 上为 Command-拖拽) 通过矩形框选节点
Option-Shift-拖拽 通过套索选择节点

选择 → 鼠标拖拽选择 (Mouse Drag Selects) 中的选择模式选项与 网络视图工具 中的当前选择模式一致。

选择 → 节点 → 最大子网络 (Largest subnetwork) 将选择当前网络中最大的连通分量。当处理由两个或多个独立连通图构成的分区网络时,此操作非常有用。选择最大子网络后,可以轻松地从所选内容创建新网络。

选择 → 节点 → 从 ID 列表文件导入... (From ID List File…) 根据指定文件中找到的节点标识符选择节点。文件格式即每行一个节点 ID。

Node1
Node2
Node3
...

10.3. cyChart

CyChart 是 Cytoscape 中的一个核心应用组件,用于绘图。CyChart 提供节点或边表格中数值的一维和二维图表。在图表中的选择会反过来在网络中同步选择相应的节点或边。这为在 Cytoscape 中可视化并与数据交互提供了另一种方式。

直方图

直方图显示变量在一定范围内的分箱分布。它能向用户展示常见数值的分布情况,以及数据分布是均匀的(平线)、正态的(钟形曲线)还是具有强模式(峰谷)。这对于寻找具有相似表达范围的数据区间(例如正向和负向表达基因)特别有用。

若要使用 cyChart 创建直方图,请在节点表边表的数值列标题上点击鼠标右键,并选择绘制直方图... (Plot Histogram…)。CyChart 选项也可在工具 (Tools) 菜单中找到。

cyChart 窗口结构包括:顶部栏(常用功能和设置)、图表内容区域、底部栏(选择状态和坐标轴设置控件)。

要在直方图中选择一个范围,点击并左右拖拽。背景数据颜色应发生变化。若要编辑现有选择,拖动选择区中间可移动整个选择,拖动边缘可调整范围的起点或终点。若要清除选择,点击范围外区域即可。

在交互模式下,图表更改选择时,主图形视图也会同步更新。但在大型网络中,这会给计算机带来过大压力,导致界面响应变慢。因此,cyChart 头部有一个复选框,用于控制选择是随着鼠标移动实时计算,还是仅在拖拽结束时计算。

底部栏用于设置坐标轴并显示选择状态。点击弹出选项框查看可用维度。更改任何维度后,图表将重新生成。更改坐标轴时,当前选择会丢失。

[注意:首次调用坐标轴弹出菜单可能需要几秒钟响应。后续点击会更灵敏。]

[注意:对数坐标轴将在未来版本中启用。]

无论实验规模如何,直方图都被划分为 100 个分箱,经平滑处理后绘制,使得线上 Y 值代表该范围内的节点(边)数量。分箱宽度相等(而不是面积相等)。这简化了确定采样数据分箱数量的统计规则,但在手动设置范围的场景下是合理的。

散点图

散点图是二维图表,表格中的每一行对应一个点。按照标准,定义域为水平 (X) 轴,值域为垂直 (Y) 轴。与直方图类似,在图表中点击并拖拽可选择矩形范围内的点,并改变图中的当前选择。通过拖动矩形的任一角可以编辑选择大小,点击矩形内部则可调整位置。

右键点击您希望作为 X 轴的列标题,选择绘制散点图... (Plot Scatter…) 即可创建散点图。

有一个回归 (Regression) 复选框,可以添加回归线。回归采用线性最小二乘法计算,斜率、截距和拟合度指标会与线条一同显示。

与直方图一样,散点图也有一个复选框,用于设置节点选择是随鼠标移动更新还是仅在松开时更新。如果在拖拽选择时出现恼人的闪烁,应关闭交互模式。

火山图

火山图是一种领域特定的散点图,其中 X 轴为表达水平,Y 轴为测量显著性。这类图表的一个有趣特征是,人们通常同时关注显著性高的正值和负值。在这种情况下,能够对称地选择散点图轴周围的区域非常有用。通过按住 Option 键进行拖拽即可实现(此功能仅在 X 轴跨越 0 时启用,如果未看到效果,请确认您的表格列包含负值和正值)。

10.4. 过滤器

控制面板 (Control Panel) 中的过滤器 (Filter) 选项卡可用于创建选择表达式,以筛选节点和边。

有两个选项卡:

  1. 过滤器 (Filter) 选项卡上是收缩 (narrowing) 过滤器,它们可以组合成树状结构。

  2. 链 (Chain) 选项卡上是可链式 (chainable) 转换器,它们可以线性组合成链。

收缩过滤器

收缩过滤器应用于网络中的所有节点和边,用于根据用户指定的约束条件选择节点和边的子集。例如,您可以查找权重在 0 到 5.5 之间的边,或者度小于 3(连接 3 条或更少边)的节点。一个过滤器可以包含任意数量的子过滤器。

点击 + 按钮添加过滤器。点击 x 按钮删除过滤器(及其所有子过滤器)。使用鼠标抓取手柄 可以移动过滤器并拖放到目标位置。将一个过滤器拖放到另一个过滤器上方,可将其组合成复合过滤器。

交互式过滤器应用模式

由于收缩过滤器的特性,Cytoscape 可以高效且交互式地将其应用于网络。某些过滤器甚至提供滑块控件以快速探索不同阈值。这是小规模网络的默认行为。对于大型网络,Cytoscape 会自动禁用此交互性。您可以通过勾选应用 (Apply) 按钮上方的过滤器更改时应用 (Apply when filter changes) 复选框来覆盖此设置。

应用 (Apply) 按钮将重新应用当前活动的过滤器。进度条的另一侧是取消按钮,允许您中断正在进行的长耗时过滤操作。

您还可以选择通过勾选显示 (show) 按钮,仅显示所选节点。选择 (select) 按钮默认勾选,仅用于选择符合过滤条件的节点。

Cytoscape 预装了以下收缩过滤器:

列过滤器

列过滤器将匹配具有特定列值的节点或边。根据列数据类型,提供多种匹配选项:

  • 数值列

    • 显示一个表示该列最小值和最大值的滑块。拖动两个手柄可选择一个数值范围。

    • 范围值也可以手动输入。

    • 选项

      • is(等于/在范围内):选择范围内值。

      • is not(不等于/在范围外):选择范围外值。


  • 字符串列

    • 文本框中输入的文本将根据以下选项与列值进行匹配:

    • 选项

      • contains(包含):选择包含该文本的值。

      • doesn’t contain(不包含):选择不包含该文本的值。

      • is(精确匹配):选择完全匹配该文本的值(不区分大小写)。

      • is not(不精确匹配):选择不完全匹配该文本的值(不区分大小写)。

      • regex(正则表达式):使用 Java 正则表达式语法选择匹配正则表达式的值。这比上述选项提供了更复杂的匹配能力。

    • 默认情况下,字符串匹配不区分大小写。若需区分大小写匹配,需要使用以 (?-i) 开头的正则表达式。例如,要以区分大小写的方式匹配文本 ABC,请使用以下正则表达式:(?-i)ABC


  • 布尔列

    • 布尔列仅包含三个值:true、false 或空白。

    • 选项

      • true:选择为 true 的值。

      • false:选择为 false 的值。


  • 列表列

    • 列表列的列过滤器与非列表列类似,但多了一个选项……

      • any element(任意元素):如果列表中的任何值匹配过滤器,则匹配。

      • each element(每个元素):仅当列表中的所有值都匹配过滤器时才匹配。

度过滤器

度过滤器用于匹配度数落在给定最小值和最大值(含边界)之间的节点。您可以选择过滤器作用于入度、出度还是整体(入度+出度)度数。

拓扑过滤器

拓扑过滤器匹配在固定距离内具有特定数量邻居且这些邻居匹配子过滤器的节点。邻域大小和距离的阈值可分别设置,子过滤器应用于每个此类邻居节点。

如果子过滤器匹配所需数量的邻居节点,则拓扑过滤器将成功匹配该节点。

过滤器的分组与组织

默认情况下,节点和边需要满足所有过滤器的约束。您可以更改此设置,只需满足至少一个过滤器的约束即可。此行为由匹配全部/任意 (Match all/any) 下拉框控制。当过滤器拥有一个以上的子过滤器时会出现此选项。例如,假设您想要匹配 COMMON 列包含 stecdc 且度数大于等于 5 的节点,您首先会构建一个看起来像这样的过滤器。

此过滤器将匹配 COMMON 同时包含 ste cdc 的节点。要将其更改为逻辑 或 (or) 操作,请通过手柄 将其中一个列过滤器拖动到另一个列过滤器上以创建一个新组。现在将组的匹配行为更改为匹配任意 (Match any)

您还可以通过将过滤器拖放到现有过滤器之间来重新排列它们。

可链式转换器

可链式转换器的输入是一组节点和边(当前在网络中选定的内容或收缩过滤器的输出)。可链式转换器可以过滤掉节点/边,或包含更多节点/边。例如,可链式转换器可以添加输入节点邻居的节点。

可链式过滤器按顺序排列。转换器输出的节点和边将成为链中下一个转换器的输入。链中的第一个转换器从当前选择或过滤器 (Filter) 选项卡上的过滤器获取输入。最后一个转换器的输出成为新的选择。

您可以选择起始于 (Start with) 来指定链中第一个转换器的输入,其中当前选择 (Current selection) 指当前选定的节点和边。您也可以选择一个收缩过滤器,它会产生一组不同的选定节点和边。

可链式转换器可以通过拖动手柄并将其放在现有转换器之间来重新排序。

Cytoscape 当前内置了以下可链式转换器:

边交互转换器

该转换器将遍历所有输入边,并选择性地将其源节点、目标节点或两者添加到输出中。这对于添加与特定过滤器匹配的边所连接的节点非常有用。

输出选项

  • 添加 (Add)(默认):自动在输出中包含所有输入节点和边,并将输入边的源节点或目标节点添加到输出中。

  • 替换为 (Replace with):不会自动在输出中包含输入节点和边。仅输出与过滤器匹配的节点。

选择选项

  • 源和目标节点 (Source and target nodes)(默认):输出选定边的目标节点和源节点。

  • 源节点 (Source nodes):仅输出选定边的源节点。

  • 目标节点 (Target nodes):仅输出选定边的目标节点。

也可以添加子过滤器。当存在子过滤器时,源/目标节点必须匹配该过滤器才能被包含在输出中。

节点邻接转换器

该转换器用于添加与输入节点相邻的节点和边。也可以指定子过滤器。

请注意,重复按下应用 (Apply) 按钮可能会导致选择不断扩展。这允许添加距离更远的相邻节点。

输出选项

  • 添加 (Add)(默认):自动在输出中包含所有输入节点和边,并添加选定的相邻节点和边。

  • 替换为 (Replace with):仅输出相邻的节点/边。

选择选项

  • 相邻节点 (Adjacent nodes):输出与输入节点相邻的节点。

  • 相邻边 (Adjacent edges):输出与输入节点相邻(关联)的边。

  • 相邻节点和边 (Adjacent nodes and edges)(默认):输出与输入节点相邻的节点和边。

边方向选项。(默认隐藏,点击小箭头图标可显示。)

  • 传入 (Incoming):仅当相邻边为传入边时才包含相邻节点/边。

  • 传出 (Outgoing):仅当相邻边为传出边时才包含相邻节点/边。

  • 传入和传出 (Incoming and Outgoing)(默认):忽略相邻边的方向。

子过滤器选项。(当添加了子过滤器时可用。)

  • 相邻节点 (Adjacent nodes)(默认):子过滤器仅应用于相邻节点。(相邻节点的边仍包含在输出中。)

  • 相邻边 (Adjacent edges):子过滤器仅应用于相邻边。(连接到相邻边的节点仍包含在输出中。)

  • 相邻节点和边 (Adjacent nodes and edges):相邻边及其连接的节点都必须匹配过滤器。请注意,要使过滤器同时匹配边和节点,它应该是一个设置为匹配任意 (Match any (OR)) 的复合过滤器。

使用收缩和可链式过滤器

活动过滤器的名称显示在选择 (Select) 面板顶部的下拉框中。旁边是选项按钮,允许您重命名、删除或导出活动过滤器。它还允许您创建新过滤器或导入过滤器。

10.5. 扩散 (Diffusion)

Cytoscape 的扩散算法尝试使用一组节点和整个交互网络来查找与原始集合最相关的节点。从概念上讲,扩散对集合中的每个节点施加热量,并让热量通过连接边流动到相邻节点。然后,它会生成一个按累积热量排名的节点列表。连接众多的节点倾向于拥有更高的排名,而孤立节点往往排名较低(从而被排除在结果节点集之外)。

默认情况下,扩散使用选定节点集作为热源,每个节点具有相同的初始热量。扩散结束后,Cytoscape 会留下排名前 90% 的热点节点。它允许您使用结果面板动态选择更高或更低的百分比。它还将节点的初始热量存储在 diffusion_input 列的节点属性中,并将热量和排名值存储在 diffusion_output_heatdiffusion_output_rank 列中。

高级扩散选项允许您通过 diffusion_input 属性为每个节点指定初始热量值。

此图显示了选择 PHO4、GCR1 和 ICL1 基因(通过搜索栏)并执行扩散(选择工具 → 扩散 → 选定节点 (Tools → Diffuse → Selected Nodes) 或右键点击扩散 → 选定节点)的结果。扩散计算了网络中所有 331 个节点的热量排名,并选择了前 33 个。

要选择超过 33 个节点,请向右移动扩散输出结果面板中的节点排名 (Node Rank) 滑块,或在当前排名 (Current Rank) 字段中输入大于 33 的数字。您还可以使用范围列 (Range Column) 选择包含热量值的列,通过热量截止值选择节点。最后,您可以使用视觉样式 (Visual Style) 选择器和创建 (Create) 按钮将选定的节点提取到新网络中。

您可以在网络上多次执行扩散,从而创建多个 heatoutput_heatoutput_rank 列。