Bioconductor分析芯片数据并提取差异表达基因

分析基因芯片的数据,提取出差异表达的基因
这次试验的数据来源于文献:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE20986
文献的目的是比较 非传代,增殖的HUVEC(人脐静脉血管内皮细胞)和iris(虹膜),retina(视网膜),choroid(脉络膜)的基因表达谱,研究眼部疾病的病理生理机制,看看能否用HUVEC 细胞替代其他细胞作为研究眼科疾病的样本

1.下载芯片数据并解压

#设置工作路径
> setwd("C:\\Users\\18019\\Desktop\\xinpian")
#安装GEOquery包并下载原始数据
>source("http://www.bioconductor.org/biocLite.R")
>biocLite("GEOquery")
> library(GEOquery)
> getGEOSuppFiles("GSE20986")#下载数据
trying URL 'https://ftp.ncbi.nlm.nih.gov/geo/series/GSE20nnn/GSE20986/suppl//GSE20986_RAW.tar?tool=geoquery'
Content type 'application/x-tar' length 56360960 bytes (53.8 MB)
> list.files()#显示文件
[1]"GSE20986"
#解压文件到data文件夹
> setwd("GSE20986")
> list.files()
[1] "data"             "GSE20986_RAW.tar"
> untar("GSE20986_RAW.tar",exdir = "data")
> setwd("data")
> list.files()
 [1] "GSM524662.CEL.gz" "GSM524663.CEL.gz" "GSM524664.CEL.gz"
 [4] "GSM524665.CEL.gz" "GSM524666.CEL.gz" "GSM524667.CEL.gz"
 [7] "GSM524668.CEL.gz" "GSM524669.CEL.gz" "GSM524670.CEL.gz"
[10] "GSM524671.CEL.gz" "GSM524672.CEL.gz" "GSM524673.CEL.gz"
> cels<-list.files()
> sapply(cels, gunzip)
GSM524662.CEL.gz GSM524663.CEL.gz GSM524664.CEL.gz GSM524665.CEL.gz 
        13555726         13555055         13555639         13560122 
GSM524666.CEL.gz GSM524667.CEL.gz GSM524668.CEL.gz GSM524669.CEL.gz 
        13555663         13557614         13556090         13560054 
GSM524670.CEL.gz GSM524671.CEL.gz GSM524672.CEL.gz GSM524673.CEL.gz 
        13555971         13554926         13555042         13555290 

> list.files()
 [1] "GSM524662.CEL" "GSM524663.CEL" "GSM524664.CEL" "GSM524665.CEL"
 [5] "GSM524666.CEL" "GSM524667.CEL" "GSM524668.CEL" "GSM524669.CEL"
 [9] "GSM524670.CEL" "GSM524671.CEL" "GSM524672.CEL" "GSM524673.CEL"

2.用simpleaffy读取数据并标准化

使用read.affy函数读取cel文件需要两个输入
第一个输入是一个文本文档,能够被读取成数据框,第一列无列名,为cel文件名称,第二列为样品标签,可以在文献上面找到
第二个为文件所在的路径
第一个输入我们直接在data文件夹里编辑文本,命名为phenodata.txt。列与列之间用分隔符隔开 如图



然后就可以载入数据并标准化

>library(simpleaffy)
> celfiles<-read.affy(covdesc = "phenodata.txt",path=".")
> celfiles#查看一下是否读取成功

AffyBatch object
size of arrays=1164x1164 features (22 kb)
cdf=HG-U133_Plus_2 (54675 affyids)
number of samples=12
number of genes=54675
annotation=hgu133plus2
notes=
Warning messages:
1: replacing previous import ‘AnnotationDbi::tail’ by ‘utils::tail’ when loading ‘hgu133plus2cdf’ 
2: replacing previous import ‘AnnotationDbi::head’ by ‘utils::head’ when loading ‘hgu133plus2cdf’ 
#用GC-RMA算法进行标准化
> celfiles.gcrma<-gcrma(celfiles)
Adjusting for optical effect............Done.
Computing affinitiesLoading required package: AnnotationDbi
Loading required package: stats4
Loading required package: IRanges
Loading required package: S4Vectors

Attaching package: ‘S4Vectors’

The following object is masked from ‘package:base’:

    expand.grid



Attaching package: ‘IRanges’

The following object is masked from ‘package:simpleaffy’:

    members

The following object is masked from ‘package:grDevices’:

    windows

.Done.
Adjusting for non-specific binding............Done.
Normalizing
Calculating Expression
> celfiles.gcrma#查看一下标准化后的数据,这里可以明显看到数据集已经是ExpressionESet了,不是未标准化的AffyBatch
ExpressionSet (storageMode: lockedEnvironment)
assayData: 54675 features, 12 samples 
  element names: exprs 
protocolData
  sampleNames: GSM524662.CEL GSM524663.CEL ... GSM524673.CEL
    (12 total)
  varLabels: ScanDate
  varMetadata: labelDescription
phenoData
  sampleNames: GSM524662.CEL GSM524663.CEL ... GSM524673.CEL
    (12 total)
  varLabels: sample Target
  varMetadata: labelDescription
featureData: none
experimentData: use 'experimentData(object)'
Annotation: hgu133plus2 

3.数据芯片可视化

在进行下一步的差异分析前,我们要对标准化后的数据进行质量检查

#做箱线图对比标准前后数据
#设置颜色
> library(RColorBrewer)
> cols<-brewer.pal(8,"Set1")
#做箱线图
> boxplot(celfiles,col=cols)
> library(affyPLM)#做标准化后的图要载入affyPLM包,以便解析标准化后的数据
载入需要的程辑包:gcrma
载入需要的程辑包:preprocessCore
> boxplot(celfiles.gcrma,col=cols)

如图 标准化之前的箱线图



标准化之后的箱线图


#做密度曲线图
> boxplot(celfiles.gcrma,col=cols)
> hist(celfiles,col=cols)
> hist(celfiles.gcrma,col=cols)

如图,标准化之前的密度曲线图



标准化之后的密度曲线图


#对单个芯片进行可视化
> celfiles.qc<-fitPLM(celfiles)
> image(celfiles.qc,which=1,add.lenge=TRUE)
> image(celfiles.qc,which=6,add.lenge=TRUE)

4.确认完数据质量后,就可以开始过滤探针了

探针与目标之间一定存在着非特异性结合,所以所有的探针均会产生信号。
如果不加以过滤,认为这些探针对应的基因都表达,即不符合事实,也会对后续的分析产生影响。因此,过滤掉表达量低的探针是十分必要的。
rnsFilter() 函数提供一站式的探针过滤,能够一步对Expression Set的探针进行过滤,返回一个list。list中的eset为过滤后的Expression Set, filter.log为每一步过滤到多少探针的记录。nsFilster也可以用于oligo包读取的对象
常用参数:
(1)require.entrez 若为TRUE,过滤掉没有ENTREZ ID的探针。默认为TRUE,一般设为FALSE
(2)remove.dupEntrez 若为TRUE,当几个探针对应统同一ENTREZ ID的时候,留下 var.func 值最大的探针,其余过滤。默认为TRUE,一般设为FALSE
(3)var.func 用于过滤的统计参数。默认为IQR
(4)var.cutoff 截断值。默认为0.5,即过滤到50%的基因。

> celfiles.filtered<-nsFilter(celfiles.gcrma,require.entrez = FALSE,remove.dupEntrez = FALSE)
> celfiles.filtered$filter.log
$`numLowVar`
[1] 27307

$feature.exclude
[1] 62

看出有 27307 个探针位点因为无明显表达差异(LowVar)被过滤掉,有 62 个探针位点因为是内参而被过滤掉。

5.用limma包开始差异分析

1.提取样品信息

>library(limma)
>sample<-celfiles.gcrma$Target
> design<-model.matrix(~0+sample)
>colnames(design) <- c("choroid", "huvec", "iris", "retina")
> design
           choroid   huvec      iris      retina
1              0           0          1            0
2              0           0          0            1
3              0           0          0            1
4              0           0          1            0
5              0           0          0            1
6              0           0          1            0
7              1           0          0            0
8              1           0          0            0
9              1           0          0            0
10             0           1          0            0
11             0           1          0            0
12             0           1          0            0

2.构建差异分析的比对矩阵
根据文献意思,我们将HUVEC分别与iris,retrina,choroid分别进行比对

> contrasts.matrix<-makeContrasts(huvec_choroid = huvec - choroid, huvec_retina = huvec - retina, huvec_iris <- huvec - iris, levels=design)
> contrasts.matrix
         Contrasts
Levels    huvec_choroid huvec_retina huvec_iris <- huvec - iris
  choroid            -1            0                          0
  huvec               1            1                          1
  iris                0            0                         -1
  retina              0           -1                          0

3.开始差异分析

#将线性模型拟合到过滤后的表达数据集上
> fit<-lmFit(celfiles.filtered$eset,design)
#将比对矩阵与线性模型拟合,比较不同细胞系表达数据
> huvec_fit<-contrasts.fit(fit,contrasts.matrix)
 # 使用经验贝叶斯算法计算差异表达基因的显著性
> huvec_ebFit <- eBayes(huvec_fit)
# coef=1 是 huvec_choroid 比对矩阵, coef=2 是 huvec_retina 比对矩阵,依此类推
> topTable(huvec_ebFit,number = 10,coef = 1)
                logFC  AveExpr         t      P.Value    adj.P.Val        B
204779_s_at  7.367790 4.171707  72.77347 3.284937e-15 8.969850e-11 20.25762
207016_s_at  6.936667 4.027733  57.39252 3.694641e-14 5.044293e-10 19.44987
209631_s_at  5.192949 4.003992  51.24892 1.170273e-13 1.065182e-09 18.96660
242809_at    6.433238 4.168870  48.51842 2.043082e-13 1.394710e-09 18.70852
205893_at    4.480331 3.543714  40.56477 1.261400e-12 6.888757e-09 17.75050
227377_at    3.672710 3.209739  36.08942 4.132286e-12 1.880603e-08 17.03075
204882_at   -5.353547 6.513690 -34.70646 6.141288e-12 2.395629e-08 16.77396
38149_at    -5.054267 6.483784 -31.45817 1.661577e-11 5.282891e-08 16.09358
205576_at    6.586393 4.139624  31.31294 1.741230e-11 5.282891e-08 16.06036
205453_at    3.624587 3.210563  30.74481 2.095602e-11 5.722251e-08 15.92787
> huvec_choroid<-topTable(huvec_ebFit,coef = 1)
> huvec_retina<-topTable(huvec_ebFit,coef = 2)
> huvec_iris<-topTable(huvec_ebFit,coef = 3)

6.获取差异基因的注释并输出

#安装探针注释的包,可以在文献中找到
> biocLite("hgu133plus2.db")
> library(hgu133plus2.db)
#载入注功能的包
> library(annotate)
#分别对三组差异表达的探针进行注释
> gene.symbols1 <- getSYMBOL(rownames(huvec_choroid), "hgu133plus2")
> gene.symbols2 <- getSYMBOL(rownames(huvec_retina), "hgu133plus2")
> gene.symbols3 <- getSYMBOL(rownames(huvec_iris), "hgu133plus2")
#将差异基因与值是结合并输出
> results<-cbind(gene.symbols1,huvec_choroid)
> head(results)
            gene.symbols1    logFC  AveExpr        t      P.Value    adj.P.Val        B
204779_s_at         HOXB7 7.367790 4.171707 72.77347 3.284937e-15 8.969850e-11 20.25762
207016_s_at          <NA> 6.936667 4.027733 57.39252 3.694641e-14 5.044293e-10 19.44987
209631_s_at          <NA> 5.192949 4.003992 51.24892 1.170273e-13 1.065182e-09 18.96660
242809_at          IL1RL1 6.433238 4.168870 48.51842 2.043082e-13 1.394710e-09 18.70852
205893_at           NLGN1 4.480331 3.543714 40.56477 1.261400e-12 6.888757e-09 17.75050
227377_at         IGF2BP1 3.672710 3.209739 36.08942 4.132286e-12 1.880603e-08 17.03075
> write.csv(results,file="huvec_choroid.csv")
> results<-cbind(gene.symbols2,huvec_retina)
> write.csv(results,file="huvec_retina.csv")
> results<-cbind(gene.symbols3,huvec_iris)
> write.csv(results,file = "huvec_iris.csv")

到这里差异表达基因的提取和注释就完成了

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

推荐阅读更多精彩内容