篩選差異基因谐鼎,倍數(shù)法,t檢驗(yàn)趣惠,SAM

一狸棍、 實(shí)驗(yàn)內(nèi)容
利用SAM篩選差異基因
比較篩選差異基因的方法:倍數(shù)法,t檢驗(yàn)味悄,SAM
二草戈、 實(shí)驗(yàn)?zāi)康?/p>

  1. 掌握篩選差異基因的方法,為了探究倍數(shù)法侍瑟,t檢驗(yàn)唐片,SAM這三種篩選差異基因的方法異同和優(yōu)越性,為我們后期自己做項(xiàng)目尋求最優(yōu)的方法
  2. 原理
  1. 倍數(shù)法(FC)
    FC=Xi/Xc
  2. T檢驗(yàn)
    H0:Gene i表達(dá)沒(méi)有差異
    P<閾值,拒絕H0
  3. SAM(圖1)


    圖1

    三涨颜、 實(shí)驗(yàn)數(shù)據(jù)工具及步驟

  1. 實(shí)驗(yàn)數(shù)據(jù)
    從GEO數(shù)據(jù)庫(kù)下載GSE52327_series_matrix.txt,樣本均是乳腺癌费韭,樣本分類按照表達(dá)醛脫氫酶(ALDH)在原代人乳房的細(xì)胞群含量,實(shí)驗(yàn)組是ALDH+咐低,對(duì)照組是ALDH-
    label.txt,
    GPL570.txt平臺(tái)信息具體三列,probe ID, Gene Symbol, ENTREZ_GENE_ID
  2. 工具
    R.3.6.3(limma,samr)
  3. 步驟
  1. SAM
    [1] 下載數(shù)據(jù)并導(dǎo)入
    [2] 根據(jù)平臺(tái)文件揽思,探針對(duì)應(yīng)基因,一對(duì)多见擦,一對(duì)空钉汗,多對(duì)多去掉,多對(duì)一取均值
    [3] 根據(jù)注釋信息分組并添加標(biāo)簽鲤屡,ALDH+(8個(gè))损痰,ALDH-(8個(gè)),(1,0)
    [4] 利用SAM法篩選差異基因,得到分析結(jié)果
  2. 三種方法比較
    [1] 根據(jù)上面探針對(duì)應(yīng)基因后的表達(dá)譜用FC和t-test進(jìn)行差異表達(dá)分析
    [2] 設(shè)定不同的閾值,|logFC|<1,2 p<0.1,0.01,0.05,0.001,分別得到差異基因個(gè)數(shù)
    [3] 比較三種方法,利用Venn圖展示出來(lái)(|logFC|<2,p<0.1)
    [4] 畫火山圖,將差異基因可視化(y:log2FC,x:adjust_p)
    [5] 熱圖以t-test為例
#數(shù)據(jù)處理,探針對(duì)基因
setwd("F:\\實(shí)驗(yàn)\\案例分析\\生物信息學(xué)案例分析\\實(shí)驗(yàn)一")
probe_exp<-read.table("GSE52327_series_matrix.txt",header=T,sep="\t",row.names=1)  #讀基因表達(dá)文件 54675*16
probeid_geneid<-read.table("GPL570_probe_geneid.txt",header=T,sep="\t") #讀探針文件
label<-read.table("label.txt",as.is=T,header=T,sep="\t")
probe_name<-rownames(probe_exp)
loc<-match(probeid_geneid[,1],probe_name)#按照probe_exp的probe進(jìn)行匹配(長(zhǎng)度與probeid_geneid[,1]相同酒来,返回平臺(tái)文件probe在表達(dá)譜probe_name位置)
probe_exp<-probe_exp[loc,]#確定能匹配上的probe表達(dá)值(把探針對(duì)基因(空)刪除了)
raw_geneid<-as.numeric(as.matrix(probeid_geneid[,3]))
index<-which(!is.na(raw_geneid)) #找出有g(shù)eneid的probeid并建立索引  
geneid<-raw_geneid[index] #提取有g(shù)eneid的probe
exp_matrix<-probe_exp[index,] #找到每個(gè)geneid的表達(dá)值
geneidfactor<-factor(geneid)
gene_exp_matrix<-apply(exp_matrix,2,function(x) tapply(x,geneidfactor,mean)) #多個(gè)探針對(duì)應(yīng)1個(gè)基因的情況卢未,取平均值
rownames(gene_exp_matrix)<-levels(geneidfactor) #geneid作為行名
geneid<-rownames(gene_exp_matrix)
gene_exp_matrix2<-cbind(geneid,gene_exp_matrix)
write.table(gene_exp_matrix2,file="geneid_exp.txt",sep="\t",quote=F,row.names=F)
#分組
index1<-which(label=="aldh status: ALDH+")#8
label[index1,]<-1
index2<-which(label=="aldh status: ALDH-")#8
label[index2,]<-0
#數(shù)據(jù)準(zhǔn)備
label<-as.numeric(as.matrix(label))
exp<-gene_exp_matrix
gid<-rownames(gene_exp_matrix)
gid<-as.numeric(gid)
if(!require("BiocManager"))
install.packages("BiocManager",update = F,ask = F)
BiocManager::install("samr")
library("samr")
###SAM
source("detec.slab2.r")
source("samr.compute.delta.table.zhang.r")
rownames(exp)<-gid
colnames(exp)<-label
label[label!=1]<-2
data=list(x=exp,y=label, geneid=rownames(exp),genenames=paste("g",as.character(1:nrow(exp)),sep=""), logged2=TRUE)
samr.obj<-samr(data, resp.type="Two class unpaired", nperms=1000)
source("num_sig_zhang.R") #計(jì)算檢驗(yàn)統(tǒng)計(jì)量
ensemble_zhang<-num_sig_zhang(data,samr.obj,fdr=c(0.001,0.01,0.05,0.10))
#得到不同閾值下:差異基因個(gè)數(shù),檢驗(yàn)統(tǒng)計(jì)量的參數(shù),d(i),基因表達(dá)情況,寫出
write.csv(ensemble_zhang[[1]],file="br_sig_num.csv")
write.csv(ensemble_zhang[[2]],file="br_sig_gene.csv")
write.csv(samr.obj$tt,file="br_d_stat.csv")
write.csv(ensemble_zhang[[3]],file="br_cut_inf.csv")
2.
#FC&T檢驗(yàn)
setwd("F:\\實(shí)驗(yàn)\\案例分析\\生物信息學(xué)案例分析\\實(shí)驗(yàn)一")
exp<-read.table("geneid_exp.txt",header=T,sep="\t",row.names=1)
label<-read.table("label.txt",as.is=T,header=T,sep="\t")
library(limma)
rt<-exp
index1<-which(label=="aldh status: ALDH+")#8
index2<-which(label=="aldh status: ALDH-")#8
hi_exp<-rt[,index1]
lo_exp<-rt[,index2]
rt<-cbind(hi_exp,lo_exp)
#differential
class<-c(rep("ALDH+",8),rep("ALDH-",8))
design<-model.matrix(~factor(class))
colnames(design)<-c("hi","lo")
fit<-lmFit(rt,design)
fit2<-eBayes(fit)
allDiff=topTable(fit2,adjust='fdr',coef=2,number=200000)
write.table(allDiff,file="limmaTab.txt",sep="\t",quote=F)
#通過(guò)不同閾值,得到差異基因列表
foldChange=1
padj=0.05
#UP log2FC>=1
#down  log2FC<=-1
foldChange=1
padj=0.05
diff_FC<-allDiff[with(allDiff, (logFC>foldChange|logFC<(-foldChange))),] #1518
diffup<-allDiff[with(allDiff, ((logFC>foldChange))),] #910
diffdown<-allDiff[with(allDiff,((logFC<(-foldChange)))),] #608
diff_p<-allDiff[with(allDiff, (adj.P.Val<padj)),] #147             
dim(diff_p)
dim(diffdown)
dim(diffup)
dim(diff_FC)
write.table(diff_p,file="diff_p.txt",sep="\t",quote=F)
write.table(diff_FC,file="diff_FC.txt",sep="\t",quote=F)
write.table(diffup,file="up.txt",sep="\t",quote=F)
write.table(diffdown,file="down.txt",sep="\t",quote=F)
#Venn圖,查看三種方法結(jié)果的交疊情況
gid<-rownames(rt)
str(ensemble_zhang[[2]])
diffgene_sam<-gid[which(ensemble_zhang[[2]]!=0)]
a<-as.numeric(rownames(diff_FC))
b<-as.numeric(rownames(diff_p))
library("VennDiagram")
venn.diagram(list(FoldChange_2=a,Ttest_0.05=b,SAM_0.1=diffgene_sam),resolution = 300, 
imagetype = "tiff",
 alpha=c(0.5,0.5,0.5),fill=c("red","yellow","blue"),
 cat.fontface=4,fontfamily=3,
    main="FoldChange&T-test&SAM",
    main.cex = 2, main.fontface = 2, main.fontfamily = 3,
    filename = "Venn.tif")
    #volcano
 pdf(file="vol.pdf")
 xMax=max(-log10(allDiff$adj.P.Val)) #x軸范圍為P.value最值
 yMax=max(abs(allDiff$logFC)) #y軸范圍為foldchange最值
plot(-log10(allDiff$adj.P.Val),allDiff$logFC,xlab="adj.P.Val",ylab="logFC",main="volcano") #把所有的foldchange值和P.value打黑點(diǎn)                                   
 diffSub1=subset(allDiff,allDiff$adj.P.Val<0.05&(allDiff$logFC)>1)
 diffSub2=subset(allDiff,allDiff$adj.P.Val<0.05&(allDiff$logFC)<(-1))
 points(-log10(diffSub1$adj.P.Val),diffSub1$logFC,pch=20,col="red",cex=0.4)
 points(-log10(diffSub2$adj.P.Val),diffSub2$logFC,pch=20,col="green",cex=0.4)
 #打紅點(diǎn)綠點(diǎn)
 abline(h=0,lty=2,lwd=3) #畫中線
 dev.off()
###熱圖
setwd("F:\\實(shí)驗(yàn)\\案例分析\\實(shí)驗(yàn)五")
exp<-read.table("geneid_exp.txt",header=T,sep="\t",row.names=1)
label<-read.table("label.txt",header=T,sep="\t")
index1<-which(label==1)#93
index2<-which(label==0)#54
exp1<-exp[,index1]
exp2<-exp[,index2]
exp<-cbind(exp1,exp2)
loc<-match(a,rownames(exp))
exp11<-exp[loc,]#13*4113
annotation_col= data.frame(sample= factor(rep(c("aldh status: ALDH+", "aldh status: ALDH-"), c(8,8)))) #列名
rownames(annotation_col) = colnames(exp)
ann_colors = list(value = c("aldh status: ALDH+"= "#7570B3","aldh status: ALDH-"="#E574AE"))
pheatmap(exp1, annotation_col = annotation_col,
annotation_colors = ann_colors,color=colorRampPalette(colors=c("navy", "white","firebrick3"))(50),
main="heatmap of diffgene by t-test")

實(shí)驗(yàn)結(jié)果:
1.SAM 結(jié)果:得到4個(gè)表格如圖2


圖 2 閾值在在p的0.001,0.01,0.05,0.10,得到的差異基因個(gè)數(shù)

檢驗(yàn)統(tǒng)計(jì)量的參數(shù),分別p的閾值是0.001,0.01,0.05,0.10辽社,Delta是d(i)-dE(i),med false pos是錯(cuò)誤率中位數(shù)伟墙,第三列90%置信區(qū)間錯(cuò)誤率,called是篩選出的差異基因數(shù)滴铅,第五列錯(cuò)誤發(fā)現(xiàn)率中位數(shù)戳葵,第六列90%置信區(qū)間錯(cuò)誤發(fā)現(xiàn)率,最后兩列統(tǒng)計(jì)量閾值(最大最泻撼住)

d(i)值

基因表達(dá)情況(正數(shù)上調(diào),負(fù)數(shù)下調(diào))

方法比較


三種方法比較

A:Venn圖,查看基因交疊情況,|log2FC|>2, T-test p<=0.1/0.05, SAM p<=0.1 B:條形圖 C~F: 熱圖拱烁,三種方法以及三種方法的交集得出的差異基因表達(dá)情況

火山圖(差異基因可視化,紅色上調(diào),綠色下調(diào))

結(jié)果分析:
從上面所有統(tǒng)計(jì)結(jié)果來(lái)看,三種方法中,FC法篩選出的差異基因最多,所以更沒(méi)有參考性,SAM和t檢驗(yàn)結(jié)果有較高的一致性,但在運(yùn)算上,SAM算法要更加優(yōu)秀,篩選出的差異基因也會(huì)更準(zhǔn)確,但是運(yùn)算量大,當(dāng)然,FC值可以用來(lái)判斷基因表達(dá)上調(diào)還是下調(diào).所以,在時(shí)間允許下篩選差異基因首選SAM法
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市噩翠,隨后出現(xiàn)的幾起案子戏自,更是在濱河造成了極大的恐慌,老刑警劉巖伤锚,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件擅笔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡见芹,警方通過(guò)查閱死者的電腦和手機(jī)剂娄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)玄呛,“玉大人阅懦,你說(shuō)我怎么就攤上這事∨锹粒” “怎么了耳胎?”我有些...
    開(kāi)封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)惕它。 經(jīng)常有香客問(wèn)我怕午,道長(zhǎng),這世上最難降的妖魔是什么淹魄? 我笑而不...
    開(kāi)封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任郁惜,我火速辦了婚禮,結(jié)果婚禮上甲锡,老公的妹妹穿的比我還像新娘兆蕉。我一直安慰自己,他們只是感情好缤沦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布虎韵。 她就那樣靜靜地躺著,像睡著了一般缸废。 火紅的嫁衣襯著肌膚如雪包蓝。 梳的紋絲不亂的頭發(fā)上驶社,一...
    開(kāi)封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天嗦董,我揣著相機(jī)與錄音躯舔,去河邊找鬼。 笑死武学,一個(gè)胖子當(dāng)著我的面吹牛绳泉,可吹牛的內(nèi)容都是我干的逊抡。 我是一名探鬼主播姆泻,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼零酪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了拇勃?” 一聲冷哼從身側(cè)響起四苇,我...
    開(kāi)封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎方咆,沒(méi)想到半個(gè)月后月腋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瓣赂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年榆骚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煌集。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妓肢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苫纤,到底是詐尸還是另有隱情碉钠,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布卷拘,位于F島的核電站喊废,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏栗弟。R本人自食惡果不足惜污筷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乍赫。 院中可真熱鬧瓣蛀,春花似錦、人聲如沸耿焊。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)罗侯。三九已至器腋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纫塌。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工诊县, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人措左。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓依痊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親怎披。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胸嘁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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