R语言 NetCoMi包 Co-occurrence网络图 微生物16S 网络比较 核心物种

article/2025/9/16 11:34:54

#自己一些问题:里面有sparcc?

#学习网站   https://github.com/stefpeschel/NetCoMi

#Github本地安装 在上面网站找到下载   
#devtools::install_local("C:/Users/xxx/Documents/NetCoMi-1.0.2.tar.gz")

#加载包 安装在了R-3.6版本
library(NetCoMi)
#Control组
otu1=read.csv("L6绝对丰度filter10_Control.csv",row.names = 1,header=T)
otu1=t(otu1)
#Case组
otu2=read.csv("L6绝对丰度filter10_OSCC.csv",row.names = 1,header=T)
otu2=t(otu2)

#data=【rows are samples】, 【columns are OTUs/taxa】
net_single2 <- netConstruct(data=otu1, data2=otu2,
                            measure = "sparcc", # 可选:spearman spieceasi sparcc
                             #使用 clr 变换作为归一化方法
                            normMethod = "clr", 
                            zeroMethod = "none",
                            sparsMethod = "threshold",adjust = "adaptBH",
                            #采用0.3的阈值作为稀疏化方法,只连接绝对相关性大于或等于0.3的OTU
                            thresh = 0.3, seed=123456,
                            filtTax = "none",
                            verbose = 3)
summary(net_single2)
#??netConstruct
#网络分析和绘图  ??netAnalyze
props_single2 <- netAnalyze(net_single2, 
                            centrLCC = TRUE,
                            clustMethod = "cluster_fast_greedy",
                  hubPar = c("degree", "closeness","eigenvector"))
#hubPar = c("degree", "between", "closeness","eigenvector")) 也可以用其中一个筛选出核心物种
summary(props_single2)

p1=plot(props_single2, 
        nodeColor = "cluster", 
        nodeSize = "clr",
        repulsion = 0.8,
        rmSingles = TRUE,
        #所有标签大小相等=false
        labelScale = FALSE,
        #改变圆圈的字体大小
        cexLabels = 0.6,
        #如果该值减小,则节点大小更相似
        #(与cexNodes结合)对于扩大小节点同时保持大节点的大小很有用
        nodeSizeSpread = 3,
        #改变圆圈的大小
        cexNodes = 4,
        #显示圆圈里面标签的大小
        shortenLabels= "none",
        title1 = "Network on OTU level with spearman correlations", 
        showTitle = TRUE,
        cexTitle = 1.5)

#加载 门信息,这个如下 主要要门水平信息

IDgenusphyla
Absconditabacteria_(SR1)_[G-1]Absconditabacteria_(SR1)_[G-1]Absconditabacteria_(SR1)
ActinomycesActinomycesActinobacteria
SchaaliaSchaaliaActinobacteria
RothiaRothiaActinobacteria
CorynebacteriumCorynebacteriumActinobacteria
AtopobiumAtopobiumActinobacteria

taxtab=read.csv("taxtab.csv",row.names = 1,header=T)

phyla <- as.factor(taxtab[, 2])  #Genus.1
phyla
names(phyla) <- taxtab[, "genus"]
phylcol <- c("blue","yellow", "orangered", "#009E73","#A2CD5A",
             "peru" ,"#0072B2" ,"dodgerblue")

p2=plot(props_single2, 
        nodeColor = 'feature',
        featVecCol = phyla, 
        colorVec =  phylcol,
        nodeSize = "clr",
        repulsion = 0.8,
        #所有标签大小相等=false
        labelScale = TRUE,
        #分组设定
        layout = "spring",
        sameLayout = TRUE,
        layoutGroup = 1,
        rmSingles = "none",#inboth两组没有才去掉
        nodeFilter = "none",
        nodeFilterPar = NULL,
        #改变圆圈的字体大小
        cexLabels = 1,
        #如果该值减小,则节点大小更相似
        #(与cexNodes结合)对于扩大小节点同时保持大节点的大小很有用
        nodeSizeSpread = 4,
        #改变圆圈的大小
        cexNodes = 4,
        title1 = "Network on OTU level with Pearson correlations", 
        showTitle = TRUE,
        cexTitle = 1,
        posCol = "#009900", 
        negCol = "#BF0000",
        hubBorderCol  = "red",
        #使用相同的布局,则只能删除两个组中都未连接的节点。
        groupNames = c("Control","OSCC")) #圈上面的分组名称

#简单图
p1=plot(props_single2, 
        nodeColor = "feature", 
        featVecCol = phyla, 
        colorVec =  phylcol,
        nodeSize = "clr",
        repulsion = 0.6,
        rmSingles = TRUE,
        #所有标签大小相等=false
        labelScale = FALSE,
        #改变圆圈的字体大小
        cexLabels = 0.7,
        #如果该值减小,则节点大小更相似
        #(与cexNodes结合)对于扩大小节点同时保持大节点的大小很有用
        nodeSizeSpread = 3,
        #改变圆圈的大小
        cexNodes = 6,
        #显示圆圈里面标签的长度
        shortenLabels= "none",
        title1 = "Network on OTU level with spearman correlations", 
        showTitle = TRUE,  
        posCol = "#009900", 
        negCol = "#BF0000",
        hubBorderCol  = "red",
        groupNames = c("Control","OSCC"),#圈上面的分组名称
        cexTitle = 1)


zoom=1 # 控制图片缩放比例

#导出的参数设置png 1000 500  1500 750
#导出的参数设置pdf 7.5  15

#检查最大节点是否是那些在矩阵中列和最高的节点,这些节点返回了标准化的计数
sort(colSums(net_single2$normCounts1), decreasing = TRUE)[1:10]


plot(2,6)
p3=legend('topleft', cex = 1, pt.cex = 1, title = "Phylum:", 
          legend=levels(phyla), col = phylcol, bty = "n", pch = 16) 

p4=legend(2,5, cex = 1, title = "estimated correlation:",
          legend = c("+","-"), lty = 1, lwd = 3, col = c("darkgreen",
                                                         "#BF0000"), 
          bty = "n", horiz = TRUE)

#核心节点
props_single2[["hubs"]][["hubs1"]]
props_single2[["hubs"]][["hubs2"]]


#比较网络
#第一步网络构建一样  net_single2 <- netConstruct
#第二步网络分析,参数看官网,先按他推荐的
props_season <- netAnalyze(net_single2, 
                           centrLCC = FALSE,
                           avDissIgnoreInf = FALSE,
                           sPathNorm = FALSE,
                           clustMethod = "cluster_fast_greedy",
                           hubPar = c("degree", "closeness","eigenvector"),
                           hubQuant = 0.95,
                           lnormFit = FALSE,
                           normDeg = FALSE,
                           normBetw = FALSE,
                           normClose = FALSE,
                           normEigen = FALSE)
#??netAnalyze
summary(props_season)

#Quantitative network comparison  ??netCompare
comp_season <- netCompare(props_season, permTest = TRUE, nPerm = 2, 
                          adjust = "adaptBH" , 
                          seed=123456, verbose = FALSE)
#??netCompare
summary(comp_season)
summary(comp_season, 
        groupNames = c("Control", "OSCC"),
        showCentr = c("degree", "closeness","eigenvector"),
        numbNodes = 20)
props_single2[["hubs"]][["hubs1"]]
props_single2[["hubs"]][["hubs2"]]


http://chatgpt.dhexx.cn/article/jI3HDdYe.shtml

相关文章

windows 下载 R 和 R studio,以及R语言基本使用

目录 一. 安装与入门介绍 1. windows 下载 R 和 R studio 2. 常见问题的对应包查询 3. 解决RStudio 打开文件中文乱码 4. 相关包 5. 获取帮助、工作目录、保存 R 文件 二. R常用数据类型和数据结构 1. 数值型、字符型、逻辑型 2. 判断和转换 3. 特殊值及其判断 4. 数…

【R语言实例】igraph — 网络分析与可视化包(1)

作者简介&#xff1a; 本文作者系大学统计学专业教师&#xff0c;多年从事统计学的教学科研工作&#xff0c;在随机过程、统计推断、机器学习领域有深厚的理论积累与应用实践。 igraph是一套用于网络分析与可视化的r包&#xff0c;它以高效、便捷、使用简单的特点在网络分析研究…

社交网络分析的 R 基础:(一)初探 R 语言

写在前面 3 年的硕士生涯一转眼就过去了&#xff0c;和社交网络也打了很长时间交道。最近突然想给自己挖个坑&#xff0c;想给这 3 年写个总结&#xff0c;画上一个句号。回想当时学习 R 语言时也是非常戏剧性的&#xff0c;开始科研生活时到处发邮件要源代码&#xff0c;发完最…

使用R包networkD3绘制炫酷的动态关系网络

引言 在数据可视化领域&#xff0c;关系网络数据的可视化一直是一个受到广泛关注的话题。 我们经常会看到这样的复杂网络关系图。 也会经常看到一些影视作品的人物关系图&#xff0c;例如&#xff1a; 我们可以从图中清晰地了解到不同人物之间的关系&#xff0c;但是这样静态…

复杂网络笔记-R语言

最近学习了下复杂网络相关的东西&#xff0c;总结了部分基础的理论&#xff0c;与使用R语言igraph包&#xff0c;总结如下&#xff0c;还需要继续深入&#xff0c;目前只学了皮毛。 复杂网络的复杂性 1、结构复杂性 网络连接结构看上去错综复杂&#xff0c;网络连接结构可能…

R语言神经网络

R语言中已经有许多用于神经网络的package。例如nnet、AMORE以及neuralnet&#xff0c;nnet提供了最常见的前馈反向传播神经网络算法。 AMORE包则更进一步提供了更为丰富的控制参数&#xff0c;并可以增加多个隐藏层。 neuralnet包的改进在于提供了弹性反向传播算法和更多的激…

如何用 R 绘制交互式社会网络图?

挖掘社会关系网络&#xff0c;助你洞若观火。 需求 最近有个学生问我&#xff0c;如何绘制交互式社会网络图&#xff08;Interactive Social Network Graph&#xff09;&#xff1f; 之所以一定要交互式&#xff0c;是因为他的应用场景&#xff0c;是演示给客户。 他解释说&…

R语言如何绘制相互作用网络图(27)

1.什么是相互作用网络图&#xff1f; 生物网络是复杂网络&#xff0c;也是以系统科学的思想研究生命科学的桥梁。网络中的节点可以是蛋白质&#xff0c;基因&#xff0c;RNA或DNA等&#xff0c;网络的边对应节点之间的物理、生化或功能上的相互作用。生物分子之间的相互作用并…

R语言网络分析2:graph函数和应用

产生网络 自定义 BioC 中用得最多的网络类型可能是 graphNEL 类。使用 graphNEL 类的同名函数可以产生自定义网络&#xff1a; library(graph)str(graphNEL) #> function (nodes character(), edgeL list(), edgemode "undirected") nds <- letters[1:3]…

在R语言中轻松创建关联网络

数据 ## Ozone Solar.R Wind Temp Month Day ## 1 41 190 7.4 67 5 1 ## 2 36 118 8.0 72 5 2 ## 3 12 149 12.6 74 5 3 ## 4 18 313 11.5 62 5 4 ## 5 NA NA 14.3 56 5 5 ## 6 28 …

(转载)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。 堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型…

关于内核堆溢出漏洞的分析

一、漏洞背景 CVE-2021-22555是一个存在了15年之久的内核堆溢出漏洞&#xff0c;它位于内核的Netfilter组件中&#xff0c;这个组件可以被用来实现防火墙、NAT等功能。 该漏洞在2006年由commit 9fa492cdc160cd27ce1046cb36f47d3b2b1efa21引入&#xff0c;并在2021年由commit …

Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞

漏洞名称&#xff1a;Linux kernel ‘qeth_snmp_command’函数缓冲区溢出漏洞CNNVD编号&#xff1a;CNNVD-201311-423发布时间&#xff1a;2013-11-29更新时间&#xff1a;2013-11-29危害等级&#xff1a;中危 漏洞类型&#xff1a;缓冲区溢出威胁类型&#xff1a;本地CVE编号…

hackthebox-buff(gym渗透 端口转发 cloudme 缓冲区溢出 )

1、扫描 masscan快速全局扫&#xff0c;nmap具体扫。7680不知道&#xff0c;8080是web进去搜集信息。 C:\root> masscan -p1-65535,U:1-65535 10.10.10.198 --rate1000 -e tun0Starting masscan 1.0.5 (http://bit.ly/14GZzcT) at 2021-01-17 09:36:41 GMT-- forced optio…

20181018栈溢出

所有内容参考书籍《0day安全&#xff1a;软件漏洞分析技术&#xff08;第二版&#xff09;》 缓冲区溢出 简单来说&#xff0c;缓冲区艺术就是在大缓冲区中的数据向小缓冲区复制的过程中&#xff0c;由于没注意小缓冲区的边界&#xff0c;“撑爆”了较小的缓冲区&#xff0c;…

再谈关于缓冲器溢出

废话少说(说一句废话,这是入门级的) C/C的代码: // buffer overflow code by ctorenshenguo.com #include <windows.h>#include <stdio.h>void fnHack() //the host never expect to run this{ printf("Your computer has been hacked!\n"); //ex…

Go内存溢出与内存泄露

https://www.cnblogs.com/sunsky303/p/11077030.html 一、内存泄露与内存溢出的区别 内存溢出(out of memory&#xff0c;简称OOM) 内存溢出是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;简单点说就是你要求分配的内存超出了系统能给你的&#…

(原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型。…

攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow) [zt]

堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的。了解堆栈溢出之前&#xff0c;先了解以下几个概念&#xff1a; 缓冲区 简单说来是一块连续的计算机内存区域&#xff0c;可以保存相同数据类型的多个实例。 堆栈 堆 栈是一个在计算机科学中经常使用的抽象数据类型…

linux 远程溢出,Linux Kernel蓝牙CAPI报文远程溢出漏洞

Linux Kernel是开放源码操作系统Linux所使用的内核。 Linux Kernel对入站CAPI消息没有执行正确的处理&#xff0c;远程攻击者可能利用此漏洞在服务器上执行任意指令。 Linux Kernel代码的net/bluetooth/cmtp/capi.c文件中没有正确地处理入站的CAPI消息。如果用户发送了特制的CA…