【问题标题】:Microbial Network Analysis in igraphigraph 中的微生物网络分析
【发布时间】:2020-05-28 16:24:01
【问题描述】:

我有所有分类级别的细菌 OTU 表。我想使用 igraph (或任何其他包)绘制网络。我从来没有创建过这样的情节,所以如果有人知道一些初学者的教程链接吗?或者,如果有人用脚本指导我,您的时间将不胜感激。谢谢!

【问题讨论】:

    标签: r networking network-programming


    【解决方案1】:
    1. 网络分析中的关系数据集至少由一个描述链接并包含至少 2 个列的 data.frame(或矩阵)组成,以便在 2 上指示“从”和“到”链接data.frame 的第一列。此“边缘列表”的其他列表示每个这些链接的特征。此后,让我们将此 data.frame 称为 edgeslist
    2. 您可能不需要第二个数据集,以指示您的节点的特征,aka 'nodes-list'。这些是第二个 data.frame(或矩阵),第一个 col 表示节点名称,其他 cols 表示每个节点的特征。 Igraph 中的节点列表必须指示每个单个节点。每个节点只能在节点列表中出现一次,并且不允许在节点列表中缺少边缘列表(“从”或“到”列)中的单个节点。此后,我们将此data.frame称为nodeslist

      1. 然后,你必须用igraph::graph_from_data_frame(edgeslist, directed = F, vertices = nodeslist)创建一个Igraph对象

      2. 您可以访问该对象以编译一堆全局统计信息或获取与某些节点相关的一些新数据(例如,cliques <- igraph::largest_cliques(mygraph)igraph::edge_density(mygraph, loops=T)

      3. 或访问一组非常精确的节点或边(例如,igraph::E(mygraph)$weight <- 1 或任何函数。
      4. 我建议使用 edge-list 和 tidyverse,以便进行分组统计。

    尝试查找一些现有的教程,例如this one

    【讨论】:

    • 非常感谢您提供这个基本指南和建议的教程,这看起来很简单。我将按照您的建议玩所有这些。再次感谢。如果我在练习期间/之后需要一些重要的指导,也许我会再次打扰你:)
    • Clément LVD,您能否帮我从我拥有的数据中生成这两个数据文件?我不知道如何从我的数据中创建边缘列表和节点列表。
    【解决方案2】:

    我不明白你有什么数据,这里是一个小型网络分析的例程示例:

    1. 您首先必须定义要分析的链接类型(例如,什么关系?边是有向的 - 并且可能是互惠的 - 或者不是?节点和边的哪些特征是相关的?)。
    2. 然后你必须建立你的边缘列表。就我而言,最常见的 小型网络(不需要大性能)的方法是制作一个data.frame 与tidyverse。在网络分析的每种情况下,您都需要一个边列表。它通常是一个 data.frame,其中包含您称为网络的 2 个实体之间的链接。 然后分析:

      • 仅适用于小图,您首先绘制并阅读图。此后,假设您需要关于 tidyverse 语法 (%>%) 的边列表发送到 igraph 并绘制:

      myedgeslist <- data.frame(from = c('man1', 'man2','man3', 'man3'), to = c('man3','man1','man1', 'man2') ) mygraph <- myedgeslist %>% igraph::graph_from_data_frame(directed = T) mygraph %>% igraph::plot.igraph()

    在 3 个节点和 4 个链接之间绘制一个小型定向网络(Igraph 说:IGRAPH DN-- 3 4 -- 表示 DN 定向网络,3 个节点和 4 个链接)。

    • 同时,您必须进行一些 tidyverse 组统计,例如,

    myedgeslist %&gt;% group_by(to) %&gt;% summarise(nlinksto= n(), n_nodes=n_distinct(from)) %&gt;% arrange(desc(n_nodes)) 说“man1”是最中心的节点,因为有 2 个链接到他那里(而 man3 和 man2 有一个链接)。

    • 同时,就像我上面所说的,阅读一些网络分析和计算指标的理论资料,以了解网络(中心性、互惠性......)。例如,

      mygraph %&gt;% igraph::edge_density()表示66%的有向链接都是在这个网络中实现的。

    PS:绘制大型网络通常不是一个好主意,您必须将它们分成几个部分,或者通过全局/分组统计来恢复网络。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 2018-08-31
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 2019-04-29
      相关资源
      最近更新 更多