差異分析R語言實現(xiàn)

  • 這次我來詳細的講講數(shù)據(jù)預(yù)處理佣蓉,數(shù)據(jù)預(yù)處理這個過程呢,按我的理解就是先把高通量熒光信號轉(zhuǎn)化成基因表達數(shù)據(jù)亲雪,然后把各種各樣的的數(shù)據(jù)(有缺失值勇凭,有異常值,有值很小的义辕,表達水平為負的等等數(shù)據(jù))轉(zhuǎn)化為正常的虾标,完整的,有可比性的數(shù)據(jù)终息。(剛接觸生物信息夺巩,說的可能不對贞让,希望各位老師指正)
    我是用R語言來做的周崭,現(xiàn)在網(wǎng)絡(luò)資源這么發(fā)達,一開始我就做個有感情的代碼搬運工喳张,所以運用了來源于醫(yī)學方的代碼续镇,再加上我自己對代碼的理解。

第一步销部,先提取數(shù)據(jù)摸航,把我們需要的矩陣讀入

這是一個有12列,(樣本)54676行的表達譜矩陣(探針id)要特別注意的是舅桩,在GEO下載的數(shù)據(jù)要經(jīng)過處理一下酱虎,刪除一些注釋文件(開頭和結(jié)尾都有)

probe_exp<-read.table("GSE62533_series_matrix.txt",header=T,sep="\t",row.names=1)#讀入基因表達文件
  • 這個文件是有三列數(shù)據(jù),第一列是探針id擂涛,列名是ID,第二列是基因名读串,列名是Gene_symbol,第三列是基因id,列名為ENTREZ_GENE_ID
probeid_geneid<-read.table("GPL570_probe_geneid.txt",header=T,sep="\t")#讀入探針與基因的文件

**如圖所示


第二步恢暖,探針id對應(yīng)基因symbol

probe_name<rownames(probe_exp)#提取probeid
loc<match(probeid_geneid[,1],probe_name)#probeid進行匹配
probe_exp<-probe_exp[loc,]#確定能匹配上的probe表達值
raw_geneid<-as.numeric(as.matrix(probeid_geneid[,3]))#每個probeid對應(yīng)的geneid
index<-which(!is.na(raw_geneid))#找出有g(shù)eneid的probeid并建立索引
geneid<-raw_geneid[index]#提取與geneid匹配的probeid
exp_matrix<-probe_exp[index,]#找到每個geneid的表達值
geneidfactor<-factor(geneid)
gene_exp_matrix<-apply(exp_matrix,2,function(x) tapply(x,geneidfactor,mean))#多個探針對應(yīng)1個基因的情況排监,取平均值
rownames(gene_exp_matrix)<-levels(geneidfactor)#geneid作為行名
gene_exp_matrix2<-cbind(geneid,gene_exp_matrix)
write.table(gene_exp_matrix2,file="geneid_exp.txt",sep="\t",row.names=F)#寫出geneid表達譜矩陣
loc<match(rownames(gene_exp_matrix),probeid_geneid[,3])#geneid表達譜矩陣和geneid匹配
row.names(gene_exp_matrix)<-probeid_geneid[loc,2]
genesymbol<-rownames(gene_exp_matrix)
gene_exp_matrix3<-cbind(genesymbol,gene_exp_matrix#Gene_symbol這列為表達譜的行名,并與表達譜合并
write.table(gene_exp_matrix3,file="genesymbol_exp.txt",sep="\t",row.names=F,quote=F)#寫出genesymbol表達譜矩陣
  • 最后就完成了將probeid轉(zhuǎn)化為genesymbol了

第三步杰捂,補充缺失值

library(impute)
gene_exp_matrix<read.table("genesymbol_exp.txt",sep="\t", header=T,row.names=1)
gene_exp_matrix<as.matrix(gene_exp_matrix)
imputed_gene_matrix<impute.knn(gene_exp_matrix,k=10,rowmax=0.5,colmax=0.8,maxp=3000,rng.seed=362436069)#用的是k值臨近法
GeneExp<imputed_gene_matrix$data#寫入表格
genesymbol<rownames(gene_exp_matrix)
GeneExp<cbind(genesymbol,GeneExp)
write.table(GeneExp,file="gene_exprs.txt",sep="\t",quote=F)#讀出經(jīng)過缺失值處理的數(shù)據(jù)

第四步舆床,數(shù)據(jù)標準化(核心)

library(limma) 
setwd("D:/qiheyeban") 
rt<read.table("gene_exprs.txt",row.names="genesymbol",sep="\t",header=T)
pdf(file="rawbox.pdf")
boxplot(rt,col="purple",xaxt="n",outline=F)#未校正的箱線圖
dev.off()
rt<normalizeBetweenArrays(as.matrix(rt),method="scale")
pdf(file="normalbox.pdf") boxplot(rt, col ="orange",xaxt ="n",outline = F) #校正后的圖
dev.off()

第五步,differential嫁佳,基因篩選

class <-c(rep("con",6),rep( "treat",6)) #找出對照組實驗組
design<-model.matrix(~factor(class))
colnames(design)<-c("con","treat") 
fit<-lmFit(rt,design)#算對照組實驗組平均值方差
fit2<-eBayes(fit)#貝葉斯檢驗得到差異結(jié)果
allDiff=toptable(fit2, adjust= "fdr", coef=2, number=200000) #得到所有基因的差異信息
write.table(allDiff,file="allDiff.txt", sep="\t",quote=F )
diffLab<-allDiff[with(allDiff,((logFC>1|logFC<(-1))&adj.P.Val< 0.05)),] #foldchange差異兩倍以上,校正后的P.value<0.05的篩選出來
write.table(diffLab,file="diffexp.txt", sep="\t",quote=F)
diffExpLeve<-rt[rownames(diffLab),]#差異基因表 
qvalue=allDiff[rownames(diffLab), ]$adj.P.Val
diffExpQvalue=cbind(qvalue,diffExpLeve1) 
write.table(diffExpQvalue,file="diffexplevel.txt",sep="\t",quote=F)

heatmap挨队,熱圖

library(gplots)
hmExp=log10(diffExpLeve1+0.00001)#log值會報錯
hmMat<-as.matrix(hmExp) 
pdf(file="heatmap.pdf",height=150,width=30) 
par(oma=c(3,3,3,5))
heatmap.2(hmMat,col='greenred',trace="none",cexCo1=1) 
dev.off() 
image.png

volcano,火山圖

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                                
diffSub=subset(allDiff,allDiff$adj.P.Val<0.05&abs(allDiff$logFC)>1)#篩選出差異基因
 points(-log10(diffSub$adj.P.Val),diffSub$logFC,pch=20,col="red",cex=0.4)#差異的打紅點
 abline(h=0,lty=2,lwd=3)#畫中線
 dev.off()
image.png

寫這些東西單純是為了記錄我的學習過程瞒瘸,內(nèi)容述說的可能很粗糙,但是有一個東西我覺得對學的是這個方向的人是很重要的(對于所有學習知識的人都適用的)熄浓,就是在各種時候報錯(遇到困難的時候)情臭,一定要先從自己代碼本身或者是數(shù)據(jù)格式或者是其他找原因,(迎難而上赌蔑!)把問題弄明白俯在,而不是說就這樣放棄了,相信勤奮的人運氣都不會太差

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娃惯,一起剝皮案震驚了整個濱河市跷乐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌趾浅,老刑警劉巖愕提,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異皿哨,居然都是意外死亡浅侨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門证膨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來如输,“玉大人,你說我怎么就攤上這事央勒〔患” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵崔步,是天一觀的道長稳吮。 經(jīng)常有香客問我,道長井濒,這世上最難降的妖魔是什么灶似? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任慎陵,我火速辦了婚禮,結(jié)果婚禮上喻奥,老公的妹妹穿的比我還像新娘席纽。我一直安慰自己,他們只是感情好撞蚕,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布润梯。 她就那樣靜靜地躺著,像睡著了一般甥厦。 火紅的嫁衣襯著肌膚如雪纺铭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天刀疙,我揣著相機與錄音舶赔,去河邊找鬼。 笑死谦秧,一個胖子當著我的面吹牛竟纳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疚鲤,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼锥累,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了集歇?” 一聲冷哼從身側(cè)響起桶略,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诲宇,沒想到半個月后际歼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡姑蓝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年鹅心,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片它掂。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡巴帮,死狀恐怖溯泣,靈堂內(nèi)的尸體忽然破棺而出虐秋,到底是詐尸還是另有隱情,我是刑警寧澤垃沦,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布客给,位于F島的核電站,受9級特大地震影響肢簿,放射性物質(zhì)發(fā)生泄漏靶剑。R本人自食惡果不足惜蜻拨,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桩引。 院中可真熱鬧缎讼,春花似錦、人聲如沸坑匠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厘灼。三九已至夹纫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間设凹,已是汗流浹背舰讹。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闪朱,地道東北人月匣。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像奋姿,于是被迫代替她去往敵國和親桶错。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

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