图中的微生物网络分析

时间:2020-05-28 16:24:01

标签: r networking network-programming

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

2 个答案:

答案 0 :(得分:1)

  1. 网络分析中的关系数据集至少由一个描述链接的data.frame(或矩阵)组成,并包含至少2个cols,以便在2个链接上指示“ from”和“ to”链接data.frame的第一个列。此“边缘列表”的其他栏目指示每个链接的特征。此后,我们将其称为data.frame edgeslist
  2. 您可能想要第二个数据集,以指示节点的特征,即 aka 'nodes-list'。这些是第二个data.frame(或矩阵),其中第一个col表示节点名称,其他cols表示每个节点的特性。 Igraph中的节点列表必须指示每个单个节点。每个节点只能在节点列表中出现一次,并且不能在edges列表(“ from”或“ to”列)中丢失单个节点。此后,我们将此数据称为框架nodeslist

    1. 然后,您必须使用igraph::graph_from_data_frame(edgeslist, directed = F, vertices = nodeslist)

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

      < / li>
    4. 或者访问一组非常精确的节点或边(例如igraph::E(mygraph)$weight <- 1或其他函数)。
    5. 我建议使用边缘列表和tidyverse,以进行分组统计。

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

答案 1 :(得分:1)

我不明白您拥有什么数据,这是小型网络分析例程的示例:

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

    • 仅适用于小图,您首先要进行绘图并阅读该图。此后,假设您需要关于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个链接)。

  • 与此同时,您必须进行一些整理组统计,例如

myedgeslist %>% group_by(to) %>% summarise(nlinksto= n(), n_nodes=n_distinct(from)) %>% arrange(desc(n_nodes))说'man1'是最中心的节点,因为有2个链接指向他(与man3和man2的单个链接相比)。

  • 并行地,如我上面所述,阅读一些网络分析和计算指标的理论知识,以了解网络(集中度,互惠性……)。例如,

    mygraph %>% igraph::edge_density()说,在此网络中实现了66%的定向链接。

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

相关问题