久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

16s分析之差異展示(熱圖)

 微生信生物 2021-01-16

前兩天我向大家推了16s做差異分析的兩個(gè)包(沒(méi)有看的請(qǐng)點(diǎn)擊下面鏈接):

1.16s分析之差異分析(DESeq2)

2.16s分析之差異OTU 挑選(edgeR)


差異做出來(lái)了如何展示,,也是一個(gè)值得思考的問(wèn)題,,所以今天我們就嘗試一下熱圖,看看效果:

#首先安裝這個(gè)包

#source("http:///biocLite.R")

#biocLite("edgeR")

#install.packages("rlang")

#install.packages("vegan")

library("gplots")

library("RColorBrewer")

library(edgeR)

library("ggplot2")

library("vegan")

setwd("E:/Shared_Folder/HG_usearch_HG")

# 讀入mapping文件

design =read.table("map_lxdjhg.txt", header=T, row.names= 1,sep="\t")

# 讀取OTU表,,這里我選擇的是整個(gè)otu表格,但是一般沒(méi)有必要全部做差異的啊,相對(duì)豐度高的做做就可以了

otu_table =read.delim("otu_table.txt", row.names= 1,sep="\t",header=T,check.names=F)

#本步驟采用otutable基于抽平后的qiime文件,,去掉第一行,和第二行首行的#符號(hào),,即可導(dǎo)入成功,。

# 過(guò)濾數(shù)據(jù)并排序

idx =rownames(design) %in% colnames(otu_table)

sub_design =design[idx,]

count =otu_table[, rownames(sub_design)]

# 轉(zhuǎn)換原始數(shù)據(jù)為百分比,

norm =t(t(count)/colSums(count,na=T)) * 100 # normalization to total 100

# create DGE list

d = DGEList(counts=count,group=sub_design$SampleType)#count是一個(gè)數(shù)據(jù)框,,$samples是第二個(gè)數(shù)據(jù)框

d =calcNormFactors(d)

# 生成實(shí)驗(yàn)設(shè)計(jì)矩陣

design.mat =model.matrix(~ 0 + d$samples$group)

colnames(design.mat)=levels(design$SampleType)

colnames(design.mat)

d2 =estimateGLMCommonDisp(d, design.mat)

d2 =estimateGLMTagwiseDisp(d2, design.mat)

fit = glmFit(d2,design.mat)

# 設(shè)置比較組

BvsA <-makeContrasts(contrasts = "GC1-GF1",levels=design.mat)#

# 組間比較,統(tǒng)計(jì)Fold change,Pvalue

lrt =glmLRT(fit,contrast=BvsA)

# FDR檢驗(yàn),控制假陽(yáng)性率小于5%

de_lrt =decideTestsDGE(lrt, adjust.method="fdr", p.value=0.00005)

# 導(dǎo)出計(jì)算結(jié)果

x=lrt$table

head(x)

x$sig=de_lrt

enriched =row.names(subset(x,sig==1))

depleted =row.names(subset(x,sig==-1))

## 提取做差異的兩個(gè)組的分組信息

pair_group =subset(sub_design, SampleType %in% c("GC1", "GF1"))

# 合并上升和下降的otu行名

DE=c(enriched,depleted)

#選擇norm文件,,就是行前面計(jì)算的相對(duì)豐度文件中的差異otu,,列選擇對(duì)應(yīng)的組名

wt<-norm[DE,rownames(pair_group)]

str(wt)

# 繪圖代碼、預(yù)覽,、保存PDF

tiff(file="heatmap_otu.tif",res = 300, compression = "none", width=720,height=540,units="mm")

pdf("heatmap_otu.pdf")

# scale in row,dendrogram only in row, not cluster in column

p<-heatmap.2(wt,scale="row", Colv=F, Rowv=FALSE,dendrogram="none",

            col=rev(colorRampPalette(brewer.pal(11, "RdYlGn"))(256)),

cexCol=1,keysize=1,density.info="none",main=NULL,trace="none",margins= c(6, 17))

這里還是對(duì)其中幾個(gè)參數(shù)做一個(gè)解釋吧:

dendrogram="none":就是不聚類,,就是沒(méi)有下圖的這個(gè):

dendrogram="row"對(duì)列進(jìn)行聚類

dendrogram="col"對(duì)行進(jìn)行聚類,這里行我們表示的樣品,,可以來(lái)一個(gè)聚類:

當(dāng)然參數(shù)還有很多,,我先不調(diào)整了,我要換包做

dev.off()

#圖形太丑,,放棄使用

下面開始使用pheatmap

library(pheatmap)

#默認(rèn)參數(shù)出圖,,發(fā)現(xiàn)圖形還可以,添加的灰色邊框也很好看

pheatmap(wt )

但是問(wèn)題也是有的,,數(shù)據(jù)顏色不是很分明

下面我們修改顏色和數(shù)據(jù),,方便展示:

colorRampPalette 函數(shù)支持自定義的創(chuàng)建一系列的顏色梯度

#這里我設(shè)置藏青色,,白色,,和紅色為漸變色,當(dāng)然可以修改

color =colorRampPalette(c("navy", "white","firebrick3"))(30)

# cluster_rows橫向無(wú)序聚類,;fontsize=6字體大小我調(diào)節(jié)為6

pheatmap(wt,fontsize=6,cluster_rows= FALSE,

         color =colorRampPalette(c("navy", "white","firebrick3"))(60) )

#這里我需要對(duì)數(shù)據(jù)進(jìn)行變換,,因?yàn)樯厦嬉部吹搅耍业臄?shù)據(jù)都集中在藍(lán)色的區(qū)域,,我對(duì)讓他們差異縮小一些

wt2<--log10(wt+0.00001)

#發(fā)現(xiàn)有很多極大值,,特別紅的那些

wt2<-sqrt(wt)

pheatmap(wt2,fontsize=6,cluster_rows= FALSE,

         color =colorRampPalette(c("navy", "white","firebrick3"))(60) )

#還是不行

wt2<-sqrt(wt)

#我們把差異極大的點(diǎn)修改一下c小一些,另外圖形需要窄一些,,來(lái)適應(yīng)期刊

wt2[wt2>0.9]<-0.9

pheatmap(wt2,fontsize=6,cellwidth= 10, cellheight = 10,cluster_rows = FALSE,

         color =colorRampPalette(c("navy", "white","firebrick3"))(60) )

 

#加保存和題目

pheatmap(wt2,fontsize=6,cellwidth= 10, cellheight = 10,cluster_rows = FALSE,

         color =colorRampPalette(c("navy", "white","firebrick3"))(60),

         ,main = "OTU heatmap",filename= "otu.pdf")

#下面我們來(lái)學(xué)習(xí)一下分分隔,,橫向分組我們使用聚類,,縱向自己制定

#當(dāng)然我們不能亂分組,這里我們建立兩個(gè)分組文件

下面我減少了差異OTU的數(shù)目通過(guò)控制:

# FDR檢驗(yàn),,控制假陽(yáng)性率小于5%

de_lrt =decideTestsDGE(lrt, adjust.method="fdr", p.value=0.0000000000005)

# 下面命令和上面相同,,再運(yùn)行一次

x=lrt$table

head(x)

x$sig=de_lrt

enriched =row.names(subset(x,sig==1))

depleted =row.names(subset(x,sig==-1))

pair_group =subset(sub_design, SampleType %in% c("GC1", "GF1"))

DE=c(enriched,depleted)

wt<-norm[DE,rownames(pair_group)]

wt2<-sqrt(wt)

wt2[wt2>0.9]<-0.9

#我們支持分組,這里我隨便造一個(gè)分組,作為縱向分組信息

annotation_row =data.frame(OTUClass = factor(rep(c("wt1", "wt2","wt3", "wt4"), c(7, 7,7,7)))) 

rownames(annotation_row)= rownames(wt2)

#我再造一個(gè)橫向分組信息

annotation_col =data.frame(breaks = factor(rep(c("GC1", "GF1"),c(9,9)))) 

rownames(annotation_col)= c(paste("GC1", 1:9, sep = "") ,paste("GF5",1:9, sep = ""))

#運(yùn)行代碼

pheatmap(wt2,fontsize=6,cellwidth= 10, cellheight = 10,cluster_rows = FALSE,

         color =colorRampPalette(c("navy", "white","firebrick3"))(60) ,

         cutree_col = 2,gaps_row = c(5,25,30),

         annotation_col =annotation_col,annotation_row = annotation_row)

出現(xiàn)錯(cuò)誤:

我們的分隔信息和分組信息明不匹配,,所以大家要特別注意

#修改分隔信息:

pheatmap(wt2,fontsize=6,cellwidth= 10, cellheight = 10,cluster_rows = FALSE,

         color =colorRampPalette(c("navy", "white","firebrick3"))(60) ,

         cutree_col = 2,gaps_row = c(7,14,21),

         annotation_col =annotation_col,annotation_row = annotation_row)

最終成圖欣賞:

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多