R|Affymetrix芯片分析(1)-affy

Affymetrix芯片储存着大量的生物信息学数据,因此有必要从实战出发的角度,汇总下Affymetrix芯片处理的流程。下面以GSE1438为例

1.数据下载及读取

rm(list = ls())
library(GEOquery)
library(affyPLM)
library(affy)
gse="GSE1428"
#rawdata <- getGEOSuppFiles(gse,fetch_files = F) #下载原始数据
gset <- getGEO(gse,getGPL = F,destdir = ".",)
#setwd(gse)
#filenames <- list.files(pattern = "*.gz$") #批量查找并列出后缀为.gz的文件
#sapply(filenames, gunzip) #批量解压

data.raw <- ReadAffy() #去读当前目录下所有的CEL文件
sampleNames(data.raw)
##  [1] "GSM23735.CEL" "GSM23736.CEL" "GSM23737.CEL" "GSM23738.CEL" "GSM23740.CEL"
##  [6] "GSM23741.CEL" "GSM23742.CEL" "GSM23743.CEL" "GSM23744.CEL" "GSM23745.CEL"
## [11] "GSM23746.CEL" "GSM23747.CEL" "GSM23748.CEL" "GSM23749.CEL" "GSM23750.CEL"
## [16] "GSM23751.CEL" "GSM23752.CEL" "GSM23753.CEL" "GSM23754.CEL" "GSM23755.CEL"
## [21] "GSM23756.CEL" "GSM23757.CEL"
sampleNames(data.raw) <- sub(pattern = "\\.CEL",replacement = "",sampleNames(data.raw))

2.数据预处理

常用的质量控制的指标:平均数法、RLE、NUSE和RNA降解曲线 根据以上指标综合决定实验是否合格,并提出质量不合格的样品。

library(simpleaffy)
data.qc <- qc(data.raw) #平均值法
plot(data.qc)
simpleaffy-qc
Pset <- fitPLM(data.raw)
library(RColorBrewer)
colors <- brewer.pal(12,"Set3")
Mbox(Pset,ylim=c(-1,1),main="RLE",las=3,col=colors)
RLE
boxplot(Pset,ylim=c(0.95,1.22),col=colors,mian="NUSE",las=3)
NUSE
data.deg <- AffyRNAdeg(data.raw)
plotAffyRNAdeg(data.deg,col=colors)
legend("topleft",rownames(pData(data.raw)),col = colors,lwd=1,inset = 0.05,cex = 0.5)
RNA降解曲线

可以看出,这个芯片的整体检查率并不太高,且GSE23740、GSM23745、GSM23746、GSM23750、GSM2375和GSM23757的RLE和NUSE偏离中心太多,整体RNA降解斜率偏低。在实际科研中,我们最好寻找高质量的芯片。

考虑到整体芯片质量不佳,过滤后剩余的样本数会比较少,下面就假装质量还可以进行下游分析(请大家谅解!)

3.RMA标准化

data.rma <- rma(data.raw)
## Background correcting
## Normalizing
## Calculating Expression
data.eset <- exprs(data.rma) #表达矩阵

#整理分组信息
pd <- pData(gset[[1]])
pd <- pd %>% 
  select(geo_accession,description)
colnames(pd) <- c("id","type")
pd$type <- sapply(strsplit(pd$type,"(",fixed = T),"[",1)
pd$type <- trimws(pd$type)
pd$type <- factor(pd$type,levels = c("Young","Older"))
pd <- pd[order(pd$type),]
data.eset <- data.eset[,pd$id]
all(colnames(data.eset)==pd$id)
## [1] TRUE
boxplot(data.eset,col=colors,las=3,mian="after-RMA") #经过RMA标准化后
RMA标准后箱式图

4.差异分析

group_list <- factor(pd$type,levels = c("Young","Older"))
names(group_list) <- pd$id
design <- model.matrix(~group_list)

library(limma)
fit <- lmFit(data.eset,design)
fit1 <- eBayes(fit)
options(options=4)
deg <- topTable(fit1,coef=2,n=Inf) %>% 
  rownames_to_column("probe_id")

5.探针ID注释

gpl <- gset[[1]]@annotation
library(AnnoProbe)
probe2id <- idmap(gpl)
deg1 <- probe2id %>% 
  inner_join(deg,by="probe_id") %>% 
  select(-probe_id) %>% 
  arrange(desc(logFC)) %>% 
  distinct(symbol,.keep_all=T)
deg1$type <- case_when(deg1$P.Value<0.05&deg1$logFC>0.5~"up",
                       deg1$P.Value<0.05&deg1$logFC< -0.5~"down",
                       T~"stable")

6.火山图

ggplot(deg1,aes(x=logFC,y=-log10(P.Value),color=type))+
  geom_point(alpha=0.4,size=3.5)+
  scale_color_manual(values=c("#546de5", "#d2dae2","#ff4757"))+
  geom_vline(xintercept=c(-1,1),lty=4,col="black",lwd=0.8) +
  geom_hline(yintercept = -log10(0.05),lty=4,col="black",lwd=0.8) +
  labs(x="log2(fold change)",
       y="-log10 (p-value)")+
  theme_bw()+
  theme(plot.title = element_text(hjust = 0.5), 
        legend.position="right", 
        legend.title = element_blank())
火山图

当然affy包主要针对的是旧版的Affymetrix芯片,如hgu95/95和hgu133系列。下一篇我们来看看oligo包。

参考链接:

R语言_Affymetrix芯片数据处理

用affy包读取affymetix的基因表达芯片数据-CEL格式数据

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容