Affymetrix芯片數(shù)據(jù)質(zhì)量控制標(biāo)準(zhǔn)化(1)

本文采用GSE7014數(shù)據(jù)集作為示例數(shù)據(jù)集
刪除了35-44樣本组底,僅保留26個(gè)樣本進(jìn)行計(jì)算
分為T2DM和Control組

首先下載CEl文件和準(zhǔn)備Targets文件


截屏2021-06-03 下午9.16.06.png

第一步提取

### 讀入Targets
setwd("/Users/apple/Desktop/練手T2DM/T2DM/GSE7014/")
library(limma)
Targets <- readTargets("Targets_GSE7104.txt")  # 不指定行名所在的列

### 讀入CEL,使用readaffy
library(affy)
GSE7014_cel <- ReadAffy(filenames = Targets$FileName,
                         celfile.path = "GSE7014_RAW/",
                         phenoData = Targets)
cel <- GSE7014_cel

# 表達(dá)矩陣 exprs查看
head(exprs(cel))[, 1:5]
# 樣本信息 pData
GSE7014_targets <- pData(cel)
# 樣本名稱 sampeNames
sampleNames(cel)
# ScanDate 查看樣本掃描日期
cel@protocolData@data$ScanDate
# expression matrix 表達(dá)矩陣
GSE7014_expr_cel <- exprs(cel)

### 保存數(shù)據(jù),備下一步分析用
save(GSE7014_cel, GSE7014_expr_cel, GSE7014_targets, file = "./GSE7014_cel.Rdata")

第二步

setwd("/Users/apple/Desktop/練手T2DM/T2DM/GSE7014/芯片質(zhì)量評(píng)估/")
# 加載Affymetrix芯片GSE7014數(shù)據(jù)(第一步變量)
load_input <- load("/Users/apple/Desktop/練手T2DM/T2DM/GSE7014/GSE7014_cel.Rdata")
load_input

library(affy)
GSE7014_expr_cel <- exprs(GSE7014_cel)#提取表達(dá)矩陣
head(GSE7014_expr_cel)[, 1:5]

GSE7014_targets <- pData(GSE7014_cel) #提取targets(樣本分組)數(shù)據(jù),在phenoData中的data

第三步芯片數(shù)據(jù)質(zhì)量評(píng)估 (比較簡(jiǎn)單秸侣,得到一份報(bào)告)

# 基于arrayQulitMetrics
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")

BiocManager::install("arrayQualityMetrics")

library(arrayQualityMetrics)
arrayQualityMetrics(GSE7014_cel, 
                    outdir = "./芯片數(shù)據(jù)質(zhì)量評(píng)估 基于arrayQulitMetrics/",    # 通過該文件夾下的index來看結(jié)果
                    force = TRUE,   # 如果本身有個(gè)文件夾的話就把文件夾刷新了
                    intgroup = "group",    # 直接讀取原始數(shù)據(jù)GSE7014_cel@phenoData@data[["group"]]
                    do.logtransform = TRUE)
dev.off()   # dev.off報(bào)錯(cuò)了也無妨笼平,就是為了讓它報(bào)錯(cuò)

第四步芯片數(shù)據(jù)標(biāo)準(zhǔn)化(基于RMA和gcRMA兩種方法)

RMA

# RMA
bgcorrect.methods()  # 可以查看背景校正方法
GSE7014_bgc <- affy::bg.correct(GSE7014_cel, method = "rma")  # 最常用rma方法

# 背景矯正后作圖觀察樣本
# boxplot
par(mfrow = c(1, 1))
par(mar = c(9, 5, 3, 3))
par(cex = 0.8)
boxplot(GSE7014_cel,
        las = 2, 
        col = rep(c("blue", "red"), each = 20),  # 20個(gè)實(shí)驗(yàn)組
        ylab = "Log intensity")

# 繪制PCA
# PCA_new函數(shù)
PCA_new <- function(expr, ntop = 500, group, show_name = F){
  library(ggplot2)
  library(ggrepel)
  rv <- genefilter::rowVars(expr)
  select <- order(rv, decreasing = TRUE)[seq_len(min(ntop, length(rv)))]
  # 主成分計(jì)算函數(shù)
  pca <- prcomp(t(expr[select, ])) # 最核心的函數(shù)代碼
  percentVar <- pca$sdev^2/sum(pca$sdev^2)
  d <- data.frame(PC1 = pca$x[, 1], 
                  PC2 = pca$x[, 2], 
                  group = group, 
                  name = colnames(expr))
  attr(d, "percentVar") <- percentVar[1:2]
  if (show_name) {
    # 作圖函數(shù)ggplot
    ggplot(data = d, aes_string(x = "PC1", y = "PC2", color = "group")) + 
      geom_point(size = 2) +
      xlab(paste0("PC1: ", round(percentVar[1] * 100), "% variance")) + 
      ylab(paste0("PC2: ", round(percentVar[2] * 100), "% variance")) +
      geom_text_repel(aes(label = name),
                      size = 3,
                      segment.color = "black",
                      show.legend = FALSE )
  } else {
    ggplot(data = d, aes_string(x = "PC1", y = "PC2",color = "group")) + 
      geom_point(size = 2) +
      xlab(paste0("PC1: ", round(percentVar[1] * 100), "% variance")) + 
      ylab(paste0("PC2: ", round(percentVar[2] * 100), "% variance"))
  }
}


PCA_new(log2(exprs(GSE7014_bgc)), 
        nrow(GSE7014_bgc), 
        group = GSE7014_targets$group,
        show_name = T)
#可以看到PCA圖還是沒什么改善

gcRMA

# gcRMA
library(gcrma)
GSE7014_gcrma <- gcrma(GSE7014_cel)
GSE7014_expr_gcrma <- exprs(GSE7014_gcrma) # 提取原始數(shù)據(jù)中的表達(dá)矩陣


# 運(yùn)行以后再做箱線圖觀察
dev.new()
par(mfrow = c(1, 1))
par(mar = c(9, 5, 3, 3))
par(cex = 0.8)
boxplot(GSE7014_gcrma, # 表達(dá)矩陣
        las = 2, 
        col = rep(c("blue", "red"), each = 20),  # 20個(gè)實(shí)驗(yàn)組
        ylab = "Log intensity")
# dev.off()
# 可以看到GSM161970這個(gè)樣本離群值非常明顯
 

PCA_new(GSE7014_expr_gcrma, 
        nrow(GSE7014_gcrma), 
        group = GSE7014_targets$group,
        show_name = T)
# 可以看到970樣本多重分析下來,可以考慮刪除這個(gè)樣本

##之后也可以再重復(fù)一次上一步arrayQualityMetrics進(jìn)行質(zhì)量評(píng)估师逸,驗(yàn)證這一步

第五步缺失值的補(bǔ)充(采用KNN法),選取gcRMA標(biāo)準(zhǔn)化進(jìn)行(rma也可)

#首先看一下有沒有缺失值
sum(is.na(exprs(GSE7014_gcrma)))  # 可以使用RMA函數(shù)的結(jié)果也可以用gcRMA的結(jié)果
# 發(fā)現(xiàn)沒有缺失值

# 如果有缺失值那么運(yùn)行下面代碼
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
BiocManager::install("impute")
library(impute)
# KNN法impute函數(shù)計(jì)算
GSE7014_gcrma <- impute.knn(GSE7014_gcrma, maxp = 30000)  # maxp默認(rèn)的是1500豆混,好像會(huì)經(jīng)常報(bào)錯(cuò)篓像,可以嘗試調(diào)大到30000
sum(is.na(GSE7014_gcrma)) # 再次查看是否有缺失值

第六步標(biāo)準(zhǔn)化結(jié)果可視化

# 再次用boxplot和PCA進(jìn)行可視化查看

# 運(yùn)行以后再做箱線圖觀察
dev.new()
par(mfrow = c(1, 1))
par(mar = c(9, 5, 3, 3))
par(cex = 0.8)
boxplot(GSE7014_gcrma, # 表達(dá)矩陣
        las = 2, 
        col = rep(c("blue", "red"), each = 20),  # 20個(gè)實(shí)驗(yàn)組
        ylab = "Log intensity")
# dev.off()

PCA_new(GSE7014_expr_gcrma, 
        nrow(GSE7014_gcrma), 
        group = GSE7014_targets$group,
        show_name = T)

## 保存變量后續(xù)使用
save(GSE7014_expr_gcrma, GSE7014_targets, 
     file = "affymetrix/GSE29450/GSE29450_after_gcrma.Rdata")


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市皿伺,隨后出現(xiàn)的幾起案子员辩,更是在濱河造成了極大的恐慌,老刑警劉巖鸵鸥,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奠滑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡妒穴,警方通過查閱死者的電腦和手機(jī)宋税,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讼油,“玉大人杰赛,你說我怎么就攤上這事“ǎ” “怎么了淆攻?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)嘿架。 經(jīng)常有香客問我瓶珊,道長(zhǎng),這世上最難降的妖魔是什么耸彪? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任伞芹,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唱较。我一直安慰自己扎唾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布南缓。 她就那樣靜靜地躺著胸遇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汉形。 梳的紋絲不亂的頭發(fā)上纸镊,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音概疆,去河邊找鬼逗威。 笑死,一個(gè)胖子當(dāng)著我的面吹牛岔冀,可吹牛的內(nèi)容都是我干的凯旭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼使套,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼罐呼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侦高,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤弄贿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后矫膨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡期奔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年侧馅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呐萌。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馁痴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肺孤,到底是詐尸還是另有隱情罗晕,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布赠堵,位于F島的核電站小渊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏茫叭。R本人自食惡果不足惜酬屉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呐萨,春花似錦杀饵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惨远,卻和暖如春谜悟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锨络。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工赌躺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人羡儿。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓礼患,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親掠归。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缅叠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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