01_2_差異表達(dá)分析實(shí)操

R語言_Affymetrix芯片數(shù)據(jù)處理

采用數(shù)據(jù)集GSE66360


##設(shè)置工作路徑(事先放好原始數(shù)據(jù),分組信息,注釋文件)

setwd("/Users/apple/Desktop/生信學(xué)習(xí)材料/生信入門之路/代碼數(shù)據(jù)挖掘/實(shí)用數(shù)據(jù)挖掘/學(xué)習(xí)記錄 /01_差異基因分析/實(shí)操模仿66360/")


##安裝affy和limma包

if (!requireNamespace("BiocManager", quietly = TRUE))

install.packages("BiocManager")

BiocManager::install(version = "3.12")

BiocManager::install("affy")

BiocManager::install("limma")

BiocManager::install("impute")

install.packages("openxlsx")

install.packages("dplyr")


##加載R包

library("Biobase")

library("affy")

library("limma")

library(openxlsx)

library(futile.logger)

library(dplyr)


##import phenotype data 樣本信息讀取(手動(dòng)整理分組信息)

phenoData = read.AnnotatedDataFrame('target.txt')

pheno = pData(phenoData)

View(pheno)


##import Annotaion 注釋信息讀?。ㄗ⑨屘结樉仃嚕?/h1>

#僅留下ID列和gene symbol列

anno = read.csv("Annotation.csv",head=T)

View(head(anno))




##Affy包,RMA函數(shù)用來標(biāo)準(zhǔn)化。

文章來源:https://mp.weixin.qq.com/s/hvKxGm9nxWr5CThAZ4PK_g


#01_eset.rma = RMA(Data) 設(shè)置文件路徑,讀入原始CEL文件

eset.rma <- justRMA(filenames=paste(rownames(pheno),'.CEL',sep=''), celfile.path='./GSE66360_RAW/')

#獲得矯正以后具體的表達(dá)值,提取探針?biāo)奖磉_(dá)矩陣

datExpr = exprs(eset.rma)



#02_安裝impute包計(jì)算缺失值(使用KNN法計(jì)算缺失值)

#來源生信技能樹帖:https://mp.weixin.qq.com/s/6bR21_LvOelwZN5qen_CRw

#impute參數(shù)默認(rèn)的k = 10, 選擇K個(gè)鄰居的值平均或者加權(quán)后填充

默認(rèn)的rowmax = 0.5, 就是說該行的缺失值比例超過50%就使用平均值而不是K個(gè)鄰居

默認(rèn)的colmax = 0.8,意思是該列缺失值超過80%就報(bào)錯(cuò)

library(impute)

imputed_gene_exp = impute.knn(datExpr,k=10,rowmax = 0.5,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? colmax=0.8,maxp =3000, rng.seed=362436069)?

datExpr2 = imputed_gene_exp$data

View(datExpr2) ? ??#datExpr2為計(jì)算缺失值的矩陣


#輸出未均值處理的表達(dá)矩陣datExpr2,手動(dòng)添加ID列名

write.table(datExpr2,file="Unproccesed_datExpr2.txt",sep="\t")


#讀入手動(dòng)修改的表達(dá)矩陣datExpr3

datExpr3 <- read.csv('./proccesed_datExpr2.csv',header = T)

View(datExpr3)

#將(未處理的表達(dá)矩陣datExpr3)和(注釋探針矩陣anno)合并為一個(gè)矩陣datExpr4

datExpr4 <- merge(anno,datExpr3,by='ID')

View(datExpr4)



#03_多個(gè)探針對(duì)應(yīng)一個(gè)基因的情況取平均值得到datExpr5表達(dá)矩陣

datExpr5 <- aggregate(x = datExpr4[,3:ncol(datExpr4)],

? ? ? ? ? ? ? ? ? ? ? by = list(datExpr4$Gene.Symbol), #根據(jù)gene名

? ? ? ? ? ? ? ? ? ? ? FUN = mean) #重復(fù)基因表達(dá)量取平均值

View(datExpr5)


##04導(dǎo)出最終表達(dá)矩陣Final_Expdata

write.table(datExpr5,file="Final_Expdata.txt",sep="\t") ?#輸出txt文件

write.csv(datExpr5, file ="Final_Expdata.csv",sep ="", row.names =TRUE, col.names =TRUE, quote =TRUE) ?#導(dǎo)出csv文件




#######差異表達(dá)分析

#樣本分組(樣本表達(dá)矩陣)

Group = factor(pheno$group,levels=c('MI','control')) #樣本進(jìn)行分組

design = model.matrix(~0+Group) #對(duì)樣本的實(shí)驗(yàn)設(shè)計(jì)進(jìn)行計(jì)算

colnames(design) <- c('MI','control')

design


###Limma包差異分析三步:

#手動(dòng)刪除datExpr5第一列數(shù)字列,得到datExpr6,操作使得基因名作為行名

datExpr6 <- read.csv('./Final_Expdata.csv',header = T) ?

rownames(datExpr6)=datExpr6[,1] ? ?#取出第一列,基因名作為行名,為后續(xù)lmfit()函數(shù)構(gòu)建

datExpr6=datExpr6[,-1]? ? ? ? ? #將第一列刪除

head(datExpr6)


##01_第一步:線性模型擬合

fit <- lmFit(datExpr6, design) #構(gòu)建比對(duì)模型,比較兩個(gè)條件下的表達(dá)數(shù)據(jù)。注意基因名作為行名,否則可能會(huì)報(bào)錯(cuò)。文章來源:https://shengxin.ren/question/1446

contrast.matrix <- makeContrasts(MI-control,levels=design)? #正值代表R對(duì)比NR高表達(dá),負(fù)代表低表達(dá)(通常是實(shí)驗(yàn)組減對(duì)照組)

fit2 <- contrasts.fit(fit, contrast.matrix)? #比對(duì)模型進(jìn)行差值計(jì)算


##02_第二步:貝葉斯檢驗(yàn)

fit2 <- eBayes(fit2)


##03_第三步:找出差異基因檢驗(yàn)結(jié)果,并且輸出符合條件的結(jié)果;

#以下選擇一種差異基因篩選模式運(yùn)行即可

##01_All_Degs輸出

diff <-topTable(fit2, coef=1, n=Inf) %>% na.omit() ??

#02_P值和LogFC調(diào)整閾值輸出

diff = topTable(fit2,adjust.method="fdr",coef=1,p.value=0.05,lfc=log(2,2),number=5000,sort.by = 'logFC') ??


View(diff)

dim(diff)

#output 輸出差異表達(dá)基因

write.xlsx(diff,'DEG_MI vs control.xlsx',sheetName=colnames(contrast.matrix)[1],col.names=T,row.names=T,append=T)


記錄:2021.4.19

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容