使用group by 数据变慢_R语言实现LEfse分析从数据整理到树形图绘制

本文详述如何在R语言中进行LEfSe(LDA Effect Size)分析,包括数据预处理、构建LefSe输入文件、执行LEfSe核型计算、绘制物种分类树,以及处理注释文件的技巧,提供可重现的全部分析流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

R语言完整的Lefse分析

写在前面

怎么说呢,我在之前的推送中,在R语言中实现了LEFse分析过程。但是我没有将数据前处理和结果的物种分类图形做出来。这是一定要在R语言中操作的,要不然,仅仅是实现了lefse算法,也是没有什么作用。

所以这篇贴子主要的工作在于:

  • 使用扩增子注物种注释文件构造Lefse分析输入文件

  • 使用R语言实现Lefse核型计算过程

  • 使用R语言实现物种分类树额绘制,比graphlan更加强大。

  • 全部分析提供原始数据,可重现

注意:

物种注释不同数据库格式不同,如果你的注释文件同参考不同,转化为和示例文件相同的格式,方可进行后续操作。

所需R包

library("tidyverse")
library(microbiomeViz)
library(ggtree)
library(tidyverse)
library(phyloseq)

##--功能函数#---------

# 功能函数
### 提取OTU表格
vegan_otu OTU if(taxa_are_rows(OTU)){
OTU }
return(as(OTU,"matrix"))
}
### 添加OTU注释信息
vegan_tax tax
return(as(tax,"matrix"))
}

整理LEFSE分析的数据

这里如果大家熟悉phyloseq对象,直接用这个phyloseq对象就是了

#导入数据
ps = readRDS("../../data/ps_liu.rds")

如果不熟悉phyloseq可以使用普通数据导入

# 导入otu表格

otu = read.delim("../../data/otutab.txt",row.names = 1)
head(otu)
#导入注释文件
tax = read.delim("../..//data/taxonomy.txt",row.names = 1)
head(tax)
#导入分组文件
map = read.delim("../../data/metadata.tsv",row.names = 1)
head(map)

# head(otu)
otu = as.matrix(otu)
str(otu)

tax = as.matrix(tax)
# taxa_names(tax)

ps sample_data(map) ,
tax_table(tax)
# phy_tree(tree)
)

没有不要用全部OTU,我按照序列数过滤,当然可以不过滤

# otu数量很多,所以选择一部分展示,一般树展示200个作用最为合适
ps = filter_taxa(ps, function(x) sum(x ) > 400 , TRUE)
ps

提取注释文件

这一步是我我们准备Lefse物种注释表格整理的开始。

#-提取otu表和tax表格#--------
otu_table = as.data.frame(t(vegan_otu(ps )))
tax_table = (vegan_tax(ps ))

整理物种注释文件

首先去除未注释出来的物种,这里为:Unassigned。

其次将物种不同级别之间的分隔符号修改为|。

再有将每一级的名称都加上前面级别的全部注释名称,形成结构。

最后按照不同级别数据合并otu表格,然后将注释文件和otu文件合并。

初步整理,去除Unassigned
tax_table[tax_table == "Unassigned"] = NA

tax_table =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值