技术贴 | R语言:组学关联分析和pheatmap可视化

本文由阿童木根据实践经验而整理,希望对大家有帮助。

原创微文,欢迎转发转载。

举例展示R语言组学关联分析的方法。宏基因组数据以KO-样品丰度表为例。代谢组数据以metabolite-样品丰度表为例。基本方法是用R语言psych包corr.test函数进行两组数据的相关分析,结果经格式化后用pheatmap可视化得热图。

一、模拟输入

1. KO丰度表

代码:

ko_abun = as.data.frame(matrix(abs(round(rnorm(200, 100, 10))), 10, 20))
colnames(ko_abun) = paste("KO", 1:20, sep="_")
rownames(ko_abun) = paste("sample", 1:10, sep="_")
ko_abun

图 1

2. metabolite丰度表

代码:

metabo_abun = as.data.frame(matrix(abs(round(rnorm(200, 200, 10))), 10, 20))
colnames(metabo_abun) = paste("met", 1:20, sep="_")
rownames(metabo_abun) = paste("sample", 1:10, sep="_")
metabo_abun

图 2

二、相关分析函数

思路

  1. 参数一:other -> KO或其他组学丰度表

  2. 参数二:metabo -> 代谢物丰度表

  3. 参数三:route -> 输出目录【提前创建】

  4. corr.test进行两组数据相关分析

  5. 用stringr split将ko-metabolite结果列拆成两列

  6. 结果保留r_value p_value

  7. 显著相关标记“*”

library(psych)
library(stringr)

correlate = function(other, metabo, route)
{
    #  读取方式:check.name=F, row.names=1, header=T
    # 计算相关性:
    result=data.frame(print(corr.test(other, metabo, use="pairwise", method="spearman", adjust="fdr", alpha=.05, ci=TRUE, minlength=50), short=FALSE, digits=5))

# 整理结果
    pair=rownames(result)  # 行名
    result2=data.frame(pair, result[, c(2, 4)])  # 提取信息

# P值排序
    result3=data.frame(result2[order(result2[,"raw.p"], decreasing=F),])

# 格式化结果【将细菌代谢物拆成两列】
    result4=data.frame(str_split_fixed(result3$pair, "-", 2), result3[, c(2, 3)])
colnames(result4)=c("feature_1", "feature_2", "r_value", "p_value")

# 保存提取的结果
    write.table(result4, file=paste(route, "Correlation_result.txt", sep="/"), sep="\t", row.names=F, quote=F)
}

三、相关性分析

代码

dir.create("Result")  # 创建结果目录
correlate(ko_abun, metabo_abun, "Result")

结果Correlation_result.txt如下,行数为20X20

图3

四、pheatmap可视化函数

思路:

  1. 参数一:infile ->Correlation_result.txt相关性分析结果

  2. 参数二:route -> Route输出路径

  3. 用reshape2 dcast函数把feature_1 feature_2 p_value做成matrix,作为pheatmap输入文件

  4. 用reshape2 dcast函数把feature_1 feature_2 r_value做成matrix,作为pheatmap display

代码:

library(reshape2)
library(pheatmap)

correlate_pheatmap = function(infile, route)
{
    data=read.table(paste(route, infile, sep="/"), sep="\t", header=T)

data_r=dcast(data, feature_1 ~ feature_2, value.var="r_value")
    data_p=dcast(data, feature_1 ~ feature_2, value.var="p_value")
    rownames(data_r)=data_r[,1]
    data_r=data_r[,-1]
    rownames(data_p)=data_p[,1]
    data_p=data_p[,-1]

# 用"*"代替<=0.05的p值,用""代替>0.05的相对丰度
    data_mark=data_p
    for(i in 1:length(data_p[,1])){
        for(j in 1:length(data_p[1,])){
            data_mark[i,j]=ifelse(data_p[i,j] <= 0.05, "*", "")
        }
    }

pheatmap(data_r, display_numbers=data_mark, cellwidth=20, cellheight=20, fontsize_number=18, filename=paste(route, "Correlation_result.pdf", sep="/"))
    pheatmap(data_r, display_numbers=data_mark, cellwidth=20, cellheight=20, fontsize_number=18, filename=paste(route, "Correlation_result.png", sep="/"))
}

五、pheatmap绘制热图

代码:

correlate_pheatmap("Correlation_result.txt", "Result")

结果目录,新增结果图(一个png一个pdf):

图4

打开pdf,如下:

图5

随机模拟的数据,没有显著的不奇怪。如果是做项目一般两组数据的相关分析都可以得到一些显著相关的结果,如下:

图6




你可能还喜欢

技术贴 | 16S专题 | 简单介绍如何用自己的笔记本处理高通量16S数据

2 技术贴 | 宏基因组专题 | 组装工具盘点和比较

3 技术贴 | R语言菌群Alpha多样性分析和绘图

技术贴 | 宏转录组专题 | DDBJ数据库:宏转录组测序数据下载

技术贴 | R语言pheatmap聚类分析和热图


(0)

相关推荐

  • ggClusterNet---一条代码完成全内容微生物网络

    写在前面 今年的毕业生应该是6月底离校,但是这位朋友到了九月份终于完善了手上的工作,对这几年来了一个完善的结束,感谢送给我的一方印章,也祝铠鸣大展宏图.再有就是ggclusterNet功能也完善了90 ...

  • 技术贴 | R语言菌群Alpha多样性分析和绘图

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 箱型图(Boxplot)或者盒图是一种能同时展示一组或多组数据的极值.四分位数.中位数和离群值,显示数据离散情况的统 ...

  • TCGA多组学关联分析数据库

    之前我们介绍了很多TCGA方面的数据库.其中GEPIA只能用来分析表达数据库各个方面的.cBioPortal可以进行多组学分析,但是一般都是分析自身基因和自身突变等等的关系.至于CVCDAP分析的则是 ...

  • R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标

    原文链接:http://tecdat.cn/?p=16881 灰色关联分析包括两个重要功能. 第一项功能:灰色关联度,与correlation系数相似,如果要评估某些单位,在使用此功能之前转置数据.第 ...

  • 技术贴 | R语言:手把手教你画pheatmap热图

    导读: pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和cluster_cols设置是否对行或列进行聚类,具体看分析需求.利用display ...

  • 技术贴 | R语言:大样本多组学的相关性计算、热图绘制

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 上期介绍了利用psych包计算两组小样本的相关性并进行热图可视化,但当样本数据量非常大时,psych包会耗费的时 ...

  • 技术贴 | R语言:小样本多组学的相关性计算、热图绘制

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在多组学数据关联挖掘中,在我们筛选到目标基因集以及目标蛋白质集合或目标代谢物集合后,在进行基因与蛋白质或代谢关联 ...

  • 技术贴 | R语言——肠型分析:介绍、方法

    导读 2011年,肠型(Enterotypes)的概念首次在<自然>杂志上由Arumugam等[1]提出,该研究发现可以将人类肠道微生物组分成稳定的3种类型,因为这3种类型不受年龄.性别. ...

  • 技术贴 | R语言物种组成分析和绘图

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 宏基因组分析分为物种分析和功能分析两大块.物种组成分析是物种分析中最基本最常见的分析方法.利用R语言堆叠图,我们可以 ...

  • R语言时间序列GARCH模型分析股市波动率

    原文链接:http://tecdat.cn/?p=22360 在这篇文章中,我们将学习一种在价格序列中建立波动性模型的标准方法,即广义自回归条件异方差(GARCH)模型. 价格波动的 GARCH 模型 ...