R 针对KEGG ORTHOLOGY的Lefse分析

在拿到PICRUST2预测的KO丰度表格后,我们其实接下来也可以像完成优势物种进化分支图一样来针对KO的Lefse分析
首先接上篇,获取KEGG ORTHOLOGY分层注释文件。

Part 1 数据整理
data(KO)
head(KO)
# A tibble: 6 x 9
# KO     Description                                                L1_ID L1         L2_ID L2                      L3_ID L3                     PathwayID
# <chr>  <chr>                                                      <chr> <chr>      <chr> <chr>                   <chr> <chr>                  <chr>    
# 1 K00844 HK; hexokinase [EC:2.7.1.1]                                09100 Metabolism 09101 Carbohydrate metabolism 00010 Glycolysis / Gluconeo~ ko00010  
# 2 K12407 GCK; glucokinase [EC:2.7.1.2]                              09100 Metabolism 09101 Carbohydrate metabolism 00010 Glycolysis / Gluconeo~ ko00010  
# 3 K00845 glk; glucokinase [EC:2.7.1.2]                              09100 Metabolism 09101 Carbohydrate metabolism 00010 Glycolysis / Gluconeo~ ko00010  
# 4 K25026 glk; glucokinase [EC:2.7.1.2]                              09100 Metabolism 09101 Carbohydrate metabolism 00010 Glycolysis / Gluconeo~ ko00010  
# 5 K01810 GPI, pgi; glucose-6-phosphate isomerase [EC:5.3.1.9]       09100 Metabolism 09101 Carbohydrate metabolism 00010 Glycolysis / Gluconeo~ ko00010  
# 6 K06859 pgi1; glucose-6-phosphate isomerase, archaeal [EC:5.3.1.9] 09100 Metabolism 09101 Carbohydrate metabolism 00010 Glycolysis / Gluconeo~ ko00010  

#加载预测的KO丰度表格
raw <- read_tsv("./picrust2/pred_metagenome_unstrat.tsv")
processed <- inner_join(raw,KO,by = c("function" = "KO"))
x <- processed %>% #总结KO L3数据
  group_by(PathwayID) %>%
  summarise(M1=sum(M1),
            M2=sum(M2),
            M3=sum(M3),
            M4=sum(M4),
            M5=sum(M5),
            M6=sum(M6),
            M7=sum(M7),
            M8=sum(M8),
            N1=sum(N1),
            N2=sum(N2),
            N3=sum(N3),
            N4=sum(N4),
            N5=sum(N5),
            N6=sum(N6),
            L1=unique(L1),
            L2=unique(L2),
            L3=unique(L3))
head(x)
# A tibble: 6 x 18
# PathwayID      M1       M2      M3      M4      M5      M6      M7      M8       N1      N2       N3      N4      N5      N6 L1         L2      L3     
# <chr>       <dbl>    <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>    <dbl>   <dbl>    <dbl>   <dbl>   <dbl>   <dbl> <chr>      <chr>   <chr>  
#   1 ko00010   979437. 1157257. 966058. 799234. 977727. 790647. 923608. 905087. 1087292. 886595. 1027478. 980108. 936901. 941357. Metabolism Carboh~ Glycol~
#   2 ko00020   555098.  662764. 574935. 456071  556023. 430408. 498903. 464911.  526917. 451617.  556598. 550912. 500860. 480391. Metabolism Carboh~ Citrat~
#   3 ko00030   593586.  675527. 574631. 471552. 552199. 473592. 575287. 571875.  767123  590887.  696223. 639922. 596782. 630457. Metabolism Carboh~ Pentos~
#   4 ko00040   270708.  312007. 241999. 220993. 236960. 218570. 265125. 260460.  320277. 263980.  297270. 294852. 285620. 264528. Metabolism Carboh~ Pentos~
#   5 ko00051   581103.  685743. 538040. 440673. 548036. 449644. 520336. 522393.  644275. 523412.  606600. 545518. 543689. 557024. Metabolism Carboh~ Fructo~
#   6 ko00052   599459.  686096. 512145. 461007. 560880. 484895. 530024. 588223.  663407. 488498.  568301. 539427. 576209. 545741. Metabolism Carboh~ Galact~
Part 2 Lefse分析
#整理成phyloseq对象
sampleda <- readxl::read_excel("group.xlsx") %>% tibble::column_to_rownames("#SampleID")
featuretab <- x[,c(2:15)] %>% apply(2,as.integer) %>% as.matrix()
rownames(featuretab) <- x$PathwayID
tax <- as.matrix(x[,c(1,16:18)] %>% tibble::column_to_rownames("PathwayID"))
library(phyloseq)
ps <- phyloseq(otu_table(featuretab,taxa_are_rows = T),tax_table(tax),sample_data(sampleda))
# ps1 <- MicrobiotaProcess::as.mpse(ps) %>%
#   mp_rrarefy() %>%
#   mp_cal_abundance(.abundance = RareAbundance,force=T)
# temp <- ps1 %>% mp_extract_assays(.abundance = RelRareAbundanceBySample) %>% as.matrix()
# ps1 <- phyloseq(otu_table(temp,taxa_are_rows = T),tax_table(tax),sample_data(sampleda))
#ps和ps1的分析结果相同
#lefse分析
library(MicrobiotaProcess)
set.seed(1024)
deres <- diff_analysis(obj = ps, #实际利用的是抽平后的相对丰度表
                       classgroup = "Category",
                       firstcomfun = "kruskal.test",
                       # standard_method = "NULL",
                       padjust = "fdr",#p值校正方法
                       filtermod = "pvalue",#以pvalue列过滤
                       firstalpha = 0.05,
                       strictmod = TRUE,#当subgroup被提供时,strictmod决定是否执行all-against-all。
                       secondcomfun = "wilcox.test",
                       secondalpha = 0.01,
                       mlfun = "lda",#线性判别分析,可选随机森林
                       ldascore=3,#线性判别分数
                       type="others" #非物种
)
deres
# The original data: 384 features and 14 samples
# The sample data: 1 variables and 14 samples
# The taxda contained 334 by 3 rank
# after first test (kruskal.test) number of feature (pvalue<=0.05):162
# after second test (wilcox.test and generalizedFC) number of significantly discriminative feature:110
# after lda, Number of discriminative features: 17 (certain taxonomy classification:17; uncertain taxonomy classication: 0)
Part 3 画图
ggdiffclade(obj=deres,
            layout="radial",#布局类型
            alpha=0.3, #树分支的背景透明度
            linewd=0.2, #树中连线粗细
            skpointsize=0.8, #树骨架中国点的大小
            taxlevel=2, #要展示的树分支水平1(L1)及1以下(L2和L3)
            cladetext=3,#文本大小
            setColors=F,#自定义颜色
            removeUnknown=T,#不删分支,但移除分类中有un_的物种注释
            reduce=T)+ # 移除分类不明的物种分支,分支和注释一同删去,为T时removeUnknown参数无效
  scale_fill_manual(values=c("#00AED7", "#FD9347"),guide=guide_legend(order=1)) +
  scale_size_continuous(range = c(0.5, 2), guide = guide_legend(keywidth = 0.2, keyheight = 1, order = 2))+
  guides(color = guide_legend(keywidth = 0.2, keyheight = 1,order = 2,ncol=1)) +
  theme(panel.background=element_rect(fill=NA),
        legend.position="right",
        plot.margin=margin(0,0,0,0),
        legend.spacing.y=unit(0.02, "cm"),
        legend.title=element_text(size=12),
        legend.text=element_text(size=10),
        legend.box.spacing=unit(0.02,"cm"))

ggdiffbox(
  deres, 
  l_xlabtext="relative abundance (%)",
  box_notch=FALSE, 
  colorlist=c("#00AED7", "#FD9347")
)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容