利用MicrobiotaProcess完成LEFse分析(近似)

對(duì)于Lefse來(lái)說(shuō)藻雌,首先測(cè)試所有特征在不同類(lèi)中的值是否存在差異分布孽拷。其次吨掌,對(duì)顯著不同的特征進(jìn)行事后檢驗(yàn),不同類(lèi)中子類(lèi)之間的所有兩兩比較應(yīng)都明顯符合類(lèi)趨勢(shì)脓恕。最后膜宋,利用線(xiàn)性判別分析(LDA)或隨機(jī)森林(RF)對(duì)顯著判別特征進(jìn)行評(píng)估。

與Lefse不同炼幔,在MicrobiotaProcess中秋茫,
①省去Lefse分析前整理數(shù)據(jù)的步驟,可以直接使用physeq對(duì)象進(jìn)行操作乃秀,節(jié)省大量時(shí)間
②每一步中使用的檢驗(yàn)方法都可以自定義:
第一步中可以是oneway.test肛著,也可以是kruskal_test
第二步中可以是wilcox.test,也可以是lm
第三步可以是lda跺讯,也可以是rf
③Lefse中由于LDA效應(yīng)大小是通過(guò)隨機(jī)重采樣計(jì)算的枢贿,因此不能保證結(jié)果完全可以重現(xiàn),MicrobiotaProcess中引入隨機(jī)種子設(shè)置以實(shí)現(xiàn)結(jié)果的重復(fù)性
④第一步檢驗(yàn)中提供p值校正策略刀脏,過(guò)濾方法也可以選擇pvalue或是padjust萨咕。

library(coin) # for the kruskal_test and wilcox_test
library(MicrobiotaProcess)
library(phyloseq)
load("1.rdata")#加載physeq對(duì)象

set.seed(1024)#由于LDA效應(yīng)大小是通過(guò)隨機(jī)重采樣計(jì)算的,因此應(yīng)設(shè)置隨機(jī)種子以實(shí)現(xiàn)結(jié)果的重復(fù)性
deres <- diff_analysis(obj = physeq, 
                       classgroup = "Category",#分組
                       firstcomfun = "kruskal_test",
                       padjust = "fdr",#p值校正方法
                       filtermod = "pvalue",#以pvalue列過(guò)濾
                       firstalpha = 0.05,
                       strictmod = TRUE,#是否進(jìn)行一對(duì)一事后檢驗(yàn)
                       secondcomfun = "wilcox_test",
                       secondalpha = 0.01,
                       mlfun = "lda",#線(xiàn)性判別分析火本,可選隨機(jī)森林
                       ldascore=3#線(xiàn)性判別分?jǐn)?shù)
                       )
deres
# The original data: 253 features and 14 samples
# The sample data: 1 variables and 14 samples
# The taxda contained 664 by 7 rank
# after first test (kruskal_test) number of feature (pvalue<=0.05):61
# after second test (wilcox_test and generalizedFC) number of significantly discriminative feature:31
# after lda, Number of discriminative features: 19 (certain taxonomy classification:16; uncertain taxonomy classication: 3)
ggdiffclade畫(huà)優(yōu)勢(shì)物種進(jìn)化分支圖
#visualization of different results by ggdiffclade
ggdiffclade(obj=deres,
            layout="circular",#布局類(lèi)型
            alpha=0.3, #樹(shù)分支的背景透明度
            linewd=0.2, #樹(shù)中連線(xiàn)粗細(xì)
            skpointsize=0.8, #樹(shù)骨架中國(guó)點(diǎn)的大小
            taxlevel=2, #要展示的樹(shù)分支水平2(門(mén))及3以下(綱目科屬種)
            cladetext=4,#文本大小
            setColors=F,#自定義顏色
            removeUnknown=T,#不刪分支危队,但移除分類(lèi)中有un_的物種注釋
            reduce=T)+ # 移除分類(lèi)不明的物種分支和其注釋?zhuān)瑸門(mén)時(shí)removeUnknown參數(shù)無(wú)效
  scale_fill_manual(values=c("#00AED7", "#FD9347")) +
  guides(color = guide_legend(keywidth = 0.1, keyheight = 0.6,order = 3,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畫(huà)LDA效應(yīng)圖帶物種豐度箱線(xiàn)圖
# visualization of different results by ggdiffbox
diffbox <- ggdiffbox(obj=deres, box_notch=FALSE, 
                     colorlist=c("#00AED7", "#FD9347"), 
                     l_xlabtext="relative abundance")
diffbox
ggeffectsize放大LDA效應(yīng)圖
effectsize <- ggeffectsize(obj=deres, lineheight=0.1,linewidth=0.3,pointsize=3) + 
  scale_color_manual(values=c("#00AED7", "#FD9347")) 
effectsize
ggdifftaxbar可視化每個(gè)LDA顯著性物種在樣本的分布情況
ggdifftaxbar(obj=deres, xtextsize=1.5, output="each_biomarkder_barplot",coloslist=c("#00AED7", "#FD9347"))
示例
PS:MicrobiotaProcess新版本已全面支持MPSE流操作,但mp_diff_analysis函數(shù)同樣參數(shù)計(jì)算出來(lái)有OTU而不只是物種等級(jí)钙畔,盡管具有物種等級(jí)數(shù)目?jī)蓚€(gè)函數(shù)都是19個(gè)茫陆,示例如下:
sss <- as.MPSE(physeq)
sss %<>% mp_rrarefy() 
sss %<>% mp_cal_abundance(.abundance = RareAbundance,force=T) %>% mp_cal_abundance(.abundance=RareAbundance,.group=Category,force = T)
sss %<>% mp_diff_analysis(
    .abundance = RelRareAbundanceBySample,
    .group = Category,
    p.adjust="fdr",
    filter.p="pvalue",
    first.test.alpha = 0.05,
    second.test.alpha = 0.01,
    ldascore = 3
)
taxa.tree <- sss %>% mp_extract_tree(type="taxatree")
taxa.tree %>% select(label, nodeClass, LDAupper, LDAmean, LDAlower, Sign_Category, pvalue, fdr) %>% filter(!is.na(fdr))
#從第八行開(kāi)始
# # A tibble: 26 x 8
# label             nodeClass LDAupper LDAmean LDAlower Sign_Category  pvalue    fdr
# <chr>             <chr>        <dbl>   <dbl>    <dbl> <chr>           <dbl>  <dbl>
# 1 OTU_80            OTU           3.32    3.28     3.23 M             0.00671 0.0975
# 2 OTU_17            OTU           4.14    4.12     4.10 N             0.00195 0.0759
# 3 OTU_184           OTU           3.16    3.12     3.06 N             0.00298 0.0759
# 4 OTU_4             OTU           4.06    4.03     3.99 M             0.00671 0.0975
# 5 OTU_24            OTU           3.93    3.90     3.88 M             0.00671 0.0975
# 6 OTU_289           OTU           3.76    3.70     3.62 M             0.00192 0.0759
# 7 OTU_71            OTU           3.68    3.62     3.54 N             0.00671 0.0975
# 8 p__ Bacteroidetes Phylum        5.15    5.13     5.11 M             0.00451 0.0856
# 9 p__ Firmicutes    Phylum        4.99    4.97     4.94 N             0.00451 0.0856
# 10 c__ Bacteroidia   Class         5.15    5.13     5.11 M             0.00451 0.0856
# # ... with 16 more rows

其次隨后的mp_plot_diff_res畫(huà)圖功能還有所欠缺,尤其是cladogram中無(wú)法有效去除冗余物種以及顯示LDA差異物種具體等級(jí)信息擎析,如下:

#mp_plot_diff_res函數(shù)以分步呈現(xiàn)
#plot treeskeleton
p1 <- ggtree(taxa.tree,layout="radial",size = 0.3) +
  geom_point(
    data = td_filter(!isTip),
    fill="white",
    size=1,
    shape=21)
# display the high light of phylum clade.
p2 <- p1 +
  geom_hilight(mapping = aes(subset = nodeClass == "Phylum", 
                             node = node, 
                             fill = label))
# display the relative abundance of features(OTU)
#按樣本
p3 <- p2+
  ggnewscale::new_scale("fill") +
  geom_fruit(
    data = td_unnest(RareAbundanceBySample),
    geom = geom_star,
    mapping = aes(x = fct_reorder(Sample, Category, .fun=min),
                  size = RelRareAbundanceBySample,
                  fill = Category,
                  subset = RelRareAbundanceBySample > 0.05),
    starshape = 13,
    starstroke = 0.25,
    offset = 0.04,
    pwidth = 0.8,
    grid.params = list(linetype=2)) +
  scale_size_continuous(name="Relative Abundance (%)",range = c(1, 3)) +
  scale_fill_manual(values=c("#1B9E77", "#D95F02"))
p3
# display the tip labels of taxa tree
p4 <- p3 +
  geom_tiplab(size=2, offset=7.5)
p4
# display the LDA of significant OTU.
p5 <- p4 +
  ggnewscale::new_scale("fill") +
  geom_fruit(
    geom = geom_col,
    mapping = aes(x = LDAmean,
                  fill = Sign_Category),
    orientation = "y",
    offset = 0.4,
    pwidth = 0.5,
    axis.params = list(axis = "x",
                       title = "Log10(LDA)",
                       title.height = 0.01,
                       title.size = 2,
                       text.size = 1.8,
                       vjust = 1),
    grid.params = list(linetype = 2)
  )
p5
# display the significant (FDR) taxonomy after kruskal.test (default)
p6 <- p5 +
  ggnewscale::new_scale("size") +
  geom_point(
    data=td_filter(!is.na(fdr)),
    mapping = aes(size = -log10(pvalue),
                  fill = Sign_Category),
    shape = 21) +
  scale_size_continuous(range=c(1, 3)) +
  scale_fill_manual(values=c("#1B9E77", "#D95F02"))
p6 + theme(
  legend.key.height = unit(0.3, "cm"),
  legend.key.width = unit(0.3, "cm"),
  legend.spacing.y = unit(0.02, "cm"),
  legend.text = element_text(size = 7),
  legend.title = element_text(size = 9),
)
按樣本
#修改p3和p4簿盅,其余不變
# display the relative abundance of features(OTU)
# 按分組
p3 <- p2+
  ggnewscale::new_scale("fill") +
  geom_fruit(
    data = td_unnest(RareAbundanceByCategory),
    geom = geom_star,
    mapping = aes(x=Category,
                  size = RelRareAbundanceByCategory,
                  fill = Category,
                  subset = RelRareAbundanceByCategory > 0.05),
    starshape = 13,
    starstroke = 0.25,
    offset = 0.04,
    pwidth = 0.1,
    grid.params = list(linetype=2)) +
  scale_size_continuous(name="Relative Abundance (%)",range = c(1, 3)) +
  scale_fill_manual(values=c("#1B9E77", "#D95F02"))
p3
# display the tip labels of taxa tree
p4 <- p3 +
  geom_tiplab(size=2, offset=2,mapping = aes(subset=!is.na(fdr))
p4
按分組

目前來(lái)看,后一個(gè)mp_diff_analysis函數(shù)所提供的的畫(huà)圖功能有所不足揍魂,其進(jìn)化分支圖主要展示的為OTU桨醋,這也解釋了其結(jié)果中為什么會(huì)出現(xiàn)OTU,而不是僅有物種等級(jí)现斋,推薦使用傳統(tǒng)diff_analysis方法喜最。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市庄蹋,隨后出現(xiàn)的幾起案子瞬内,更是在濱河造成了極大的恐慌,老刑警劉巖限书,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虫蝶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡倦西,警方通過(guò)查閱死者的電腦和手機(jī)能真,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)扰柠,“玉大人粉铐,你說(shuō)我怎么就攤上這事〕馨” “怎么了秦躯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)裆装。 經(jīng)常有香客問(wèn)我踱承,道長(zhǎng),這世上最難降的妖魔是什么哨免? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任茎活,我火速辦了婚禮,結(jié)果婚禮上琢唾,老公的妹妹穿的比我還像新娘载荔。我一直安慰自己,他們只是感情好采桃,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布懒熙。 她就那樣靜靜地躺著丘损,像睡著了一般。 火紅的嫁衣襯著肌膚如雪工扎。 梳的紋絲不亂的頭發(fā)上徘钥,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音肢娘,去河邊找鬼呈础。 笑死,一個(gè)胖子當(dāng)著我的面吹牛橱健,可吹牛的內(nèi)容都是我干的而钞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拘荡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼臼节!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起俱病,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤官疲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后亮隙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體途凫,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年溢吻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了维费。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡促王,死狀恐怖犀盟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蝇狼,我是刑警寧澤阅畴,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站迅耘,受9級(jí)特大地震影響贱枣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颤专,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一纽哥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧栖秕,春花似錦春塌、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)俏拱。三九已至,卻和暖如春吕世,著一層夾襖步出監(jiān)牢的瞬間彰触,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工命辖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人分蓖。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓尔艇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親么鹤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子终娃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容