microeco包中基于样本分组的微生物功能热图绘制方法
在微生物组数据分析中,功能预测结果的展示是一个重要环节。microeco包提供了强大的功能预测和可视化工具,特别是当我们需要按照样本的不同分组条件来展示功能预测结果时,可以采用一些巧妙的方法来实现。
功能预测结果转换为丰度表
microeco包中的trans_func类可以计算物种水平的功能预测结果。通过cal_spe_func方法使用FAPROTAX等数据库进行功能预测后,我们可以将预测结果转换为类似物种丰度表的形式:
library(microeco)
data(dataset)
# 初始化功能转换对象
t1 <- trans_func$new(dataset)
# 使用FAPROTAX数据库进行功能预测
t1$cal_spe_func(prok_database = "FAPROTAX")
# 计算功能相对百分比
t1$cal_spe_func_perc(abundance_weighted = FALSE)
创建模拟的丰度数据集
为了利用microeco中已有的可视化功能,我们可以创建一个模拟的丰度数据集:
# 克隆原始数据集
d1 <- clone(dataset)
# 将功能预测结果转换为类似物种丰度表的形式
d1$taxa_abund$Trait <- as.data.frame(t(t1$res_spe_func_perc))
多分组条件下的热图绘制
microeco的trans_abund类提供了丰富的可视化选项。我们可以利用它来绘制按多个样本分组条件分面的热图:
# 初始化丰度转换对象
t2 <- trans_abund$new(dataset = d1, taxrank = "Trait", ntaxa = 20, use_percentage = FALSE)
# 绘制热图,按Saline和Type两个分组条件分面
t2$plot_heatmap(facet = c("Saline", "Type"), xtext_angle = 30, xtext_size = 5, legend_title = "FR %")
添加功能分类层级信息
如果需要按照功能的高级分类(如能量来源、碳循环等)在y轴上进行分面,可以通过以下步骤实现:
- 提取功能分类层级信息
- 构建分类表
- 过滤无用功能
- 绘制带功能分类的热图
# 提取功能层级信息
tmp_tax <- stack(t1$func_group_list$FAPROTAX)
tmp_tax <- tmp_tax[, 2:1]
colnames(tmp_tax) <- c("Class", "Trait")
rownames(tmp_tax) <- tmp_tax[, 2]
# 添加到数据集
d1$tax_table <- tmp_tax
# 过滤无用功能
d1$otu_table <- d1$taxa_abund$Trait %>% .[rownames(.) %in% rownames(d1$tax_table), ]
d1$phylo_tree <- NULL
d1$rep_fasta <- NULL
# 绘制带功能分类的热图
t2 <- trans_abund$new(dataset = d1, taxrank = "Trait", high_level = "Class", ntaxa = 20, use_percentage = FALSE)
t2$plot_heatmap(facet = c("Saline", "Type"), xtext_angle = 30, xtext_size = 5,
legend_title = "FR %", withmargin = FALSE, plot_breaks = c(0.01, 0.1, 1, 10))
技术要点总结
-
功能预测结果转换:将功能预测结果转换为类似物种丰度表的形式,可以复用microeco中已有的丰富可视化方法。
-
多分组条件分面:通过
facet参数可以指定多个样本分组条件,实现复杂的分面展示。 -
功能分类展示:通过构建分类表并指定
high_level参数,可以在y轴上按照功能的高级分类进行分面展示。 -
可视化参数调整:
plot_heatmap方法提供了丰富的参数来控制热图的展示细节,包括分面、文本角度、大小、图例标题等。
这种方法不仅适用于FAPROTAX数据库的预测结果,也可以扩展到其他功能预测数据库的结果展示,为微生物组功能研究提供了灵活的可视化解决方案。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



