前言
此篇笔记主要是学习生信技术树Jimmy在B站上的视频教程。
背景知识
GEO的全称是Gene Expression Omnibus,数据库地址是:https://www.ncbi.nlm.nih.gov/geo/。
GEO是一个公共的基因组数据库,含有大量的芯片以及二代测序数据。在挖掘GEO上的数据集时,常规流程就是选择GSE号,下载表达矩阵,得到基因集,使用数据库进行注释,PPI等网络等。
GEO里面的数据前缀有4种,如下所示:
- GEO Platform (GPL)
- GEO Sample (GSM)
- GEO Series (GSE)
- GEO Dataset (GDS)
其中GSE开头的是表达矩阵,GPL开头的是测序的平台信息。一篇文章可以有一个或者多个GSE数据集,一个GSE里面可以有一个或者多个GSM样本。多个研究的GSM样本可以根据研究目的整合为一个GDS,不过GDS本身用的很少。而每个数据集都有着自己对应的芯片平台,就是GPL。
下载数据
这个数据已经被其他人挖掘过发了文章,文章信息如下所示:
Wang Q L , Chen X , Zhang M H , et al. Identification of hub genes and pathways associated with retinoblastoma based on co-expression network analysis[J]. Genetics and Molecular Research, 2015, 14(4):16151-16161.
现在去GEO官网下载数据:
代码如下所示:
|
|
这里用到了getGEO
函数,这个函数的参数如下所示:
destdir
:下载的地址,使用.
则下载到当前的工作目录;AnnotGPL
:是否下载注释的信息。getGPL
:若为TRUE,则下载GPL注释文件;若为FALSE,则不下载。默认为TRUE。GSEMatrix
:若为TRUE,则下载Matrix文件;若为FALSE,则下载SOFT文件。默认为TRUE。
随后,D:\GEO_test
目录下就会出现下载后的表达矩阵,名称为GSE42872_series_matrix.txt.gz
。
GSE24673
下载后的这个eSet
文件信息如下所示:
|
|
从上面信息可以知道:
eSet
是一个列表(list);eSet
这个列表只有一个元素。
获取表达矩阵
提取表达矩阵
使用exprs
函数可以获取表达矩阵,如下所示:
|
|
表达矩阵如下所示:
获取样本信息
使用sampleNames
函数可以获取样本信息,如下所示:
|
|
运行后如下所示:
|
|
使用pData
可以获取分组信息,如下所示:
|
|
运行如下所示:
从title这一列就可以知道,里面有几个是干预组,有几个是健康组。
表达矩阵过滤
这一部分主要是将探针名称转化为基因名。
转换探针名
表达矩阵的列的名称是探针名,如下所示:
现在将探针名转换为基因名,从前面的eSet
数据集中可以获取以下信息:
|
|
从Annotation: GPL6244
这行可以知道,这个数据集是用GPL6244
这个平台测的,同时在GEO的官网也能查到这个信息,如下所示:
现有的一些常用平台都对应的有相应的R包,如下所示:
gpl | organism | bioc_package | |
---|---|---|---|
1 | GPL32 | Mus musculus | mgu74a |
2 | GPL33 | Mus musculus | mgu74b |
3 | GPL34 | Mus musculus | mgu74c |
6 | GPL74 | Homo sapiens | hcg110 |
7 | GPL75 | Mus musculus | mu11ksuba |
8 | GPL76 | Mus musculus | mu11ksubb |
9 | GPL77 | Mus musculus | mu19ksuba |
10 | GPL78 | Mus musculus | mu19ksubb |
11 | GPL79 | Mus musculus | mu19ksubc |
12 | GPL80 | Homo sapiens | hu6800 |
13 | GPL81 | Mus musculus | mgu74av2 |
14 | GPL82 | Mus musculus | mgu74bv2 |
15 | GPL83 | Mus musculus | mgu74cv2 |
16 | GPL85 | Rattus norvegicus | rgu34a |
17 | GPL86 | Rattus norvegicus | rgu34b |
18 | GPL87 | Rattus norvegicus | rgu34c |
19 | GPL88 | Rattus norvegicus | rnu34 |
20 | GPL89 | Rattus norvegicus | rtu34 |
22 | GPL91 | Homo sapiens | hgu95av2 |
23 | GPL92 | Homo sapiens | hgu95b |
24 | GPL93 | Homo sapiens | hgu95c |
25 | GPL94 | Homo sapiens | hgu95d |
26 | GPL95 | Homo sapiens | hgu95e |
27 | GPL96 | Homo sapiens | hgu133a |
28 | GPL97 | Homo sapiens | hgu133b |
29 | GPL98 | Homo sapiens | hu35ksuba |
30 | GPL99 | Homo sapiens | hu35ksubb |
31 | GPL100 | Homo sapiens | hu35ksubc |
32 | GPL101 | Homo sapiens | hu35ksubd |
36 | GPL201 | Homo sapiens | hgfocus |
37 | GPL339 | Mus musculus | moe430a |
38 | GPL340 | Mus musculus | mouse4302 |
39 | GPL341 | Rattus norvegicus | rae230a |
40 | GPL342 | Rattus norvegicus | rae230b |
41 | GPL570 | Homo sapiens | hgu133plus2 |
42 | GPL571 | Homo sapiens | hgu133a2 |
43 | GPL886 | Homo sapiens | hgug4111a |
44 | GPL887 | Homo sapiens | hgug4110b |
45 | GPL1261 | Mus musculus | mouse430a2 |
49 | GPL1352 | Homo sapiens | u133x3p |
50 | GPL1355 | Rattus norvegicus | rat2302 |
51 | GPL1708 | Homo sapiens | hgug4112a |
54 | GPL2891 | Homo sapiens | h20kcod |
55 | GPL2898 | Rattus norvegicu | adme16cod |
60 | GPL3921 | Homo sapiens | hthgu133a |
63 | GPL4191 | Homo sapiens | h10kcod |
64 | GPL5689 | Homo sapiens | hgug4100a |
65 | GPL6097 | Homo sapiens | illuminaHumanv1 |
66 | GPL6102 | Homo sapiens | illuminaHumanv2 |
67 | GPL6244 | Homo sapiens | hugene10sttranscriptcluster |
68 | GPL6947 | Homo sapiens | illuminaHumanv3 |
69 | GPL8300 | Homo sapiens | hgu95av2 |
70 | GPL8490 | Homo sapiens | IlluminaHumanMethylation27k |
71 | GPL10558 | Homo sapiens | illuminaHumanv4 |
72 | GPL11532 | Homo sapiens | hugene11sttranscriptcluster |
73 | GPL13497 | Homo sapiens | HsAgilentDesign026652 |
74 | GPL13534 | Homo sapiens | IlluminaHumanMethylation450k |
75 | GPL13667 | Homo sapiens | hgu219 |
76 | GPL15380 | Homo sapiens | GGHumanMethCancerPanelv1 |
77 | GPL15396 | Homo sapiens | hthgu133b |
78 | GPL17897 | Homo sapiens | hthgu133a |
如果是比较少见的平台,那么可以通过下面的方式来下载相应的平台探针信息:
|
|
只是这种方式下载起来比较慢。
此时将探针转换为基因名,我们前面提到,这个数据使用的是GPL6244
平台来测的(上表第67行),它对应的R包是hugene10sttranscriptcluster
,此时安装这个包并加载即可:
|
|
运行结果如下所示:
|
|
这是一个R包的注释文件,它提供的是hugene10sttranscriptcluster这个芯片平台的详细信息,每两个月更新一次。这个包中含有的很多数据,上表已经列出来了,我们将探针转换为基因要使用的是文件是hugene10sttranscriptclusterSYMBOL
这个,它的功能在于:将探针编号转换为基因名。
同理,hugene10sttranscriptclusterUNIPROT
是将探针编号转换为蛋白名,
同时,hugene10sttranscriptclusterREFSEQ
是将探针编号转换为转录组名,转换时使用的函数是toTable()
函数,如下所示:
|
|
运行结果为:
|
|
我们这里只使用基因SYMBOL即可,也就是probe_trans_SYMBOL <- toTable(hugene10sttranscriptclusterSYMBOL)
这个语句。
由于一个基因对应好几个探针,因此转换后的基因名必然是小于探针名的,如下所示:
|
|
运行结果如下所示:
|
|
从上面可以看出来,基因SYMBOL有18834个,探针有19827个。
现在我们将下载的表达谱中的探针转换为基因SYMBOL,先来看下表达谱,如下所示:
现在的任务就是将左侧的探针编号转换为基因SYMBOL。
此时有两步操作:
第一步就是我们先把表达谱中能够在平台芯片注释文件中找到基因SYMBOL给挑出来,因为表达谱中的有的探针名没有对应的基因SYMBOL,不要这种探针的数据,筛选过程如下所示:
|
|
运行结果如下所示:
|
|
从结果中可以看出来,表达谱中有28869行,第1列就是探针名,探针中有19631个能找到相应的基因SYMBOL,因此表达谱经过第一步操作,就从原来的28869行缩小到了19631行,再强调一下这一步的目的,就是筛选表达谱数据,将那些表达谱中有探针号,但没有对应基因SYMBOL的数据给剔除掉。
第二步:将表达谱中的这些探针号与基因名对应起来,如下所示:
|
|
这里用到了match()
函数,简单看一个案例:
|
|
运行结果如下所示:
|
|
因此上面代码的目的在于:将表达谱中的探针位置与转换后的探针文件probe_trans_SYMBOL
中的位置对应起来,先看一下这两个文件的长度:
|
|
经过前面的match()
函数操作,我们就可以看到,探针的位置已经与基因名一一对应了,如下所示:
左侧是探针对应的文件,右侧是表达谱数据,由于现在这两个文件的探针与基因的位置都是一一对应的,使用merge()
函数或cbind()
都可以,由于名称对应,直接改名也行,如下所示:
|
|
运行结果如下所示:
|
|
此时,这个表达谱是有19631行数据,但是,由于芯片的设计,一个基因名有可能对应好几个探针编号,查看一下:
|
|
从这个结果可以看出来,其实基因一共是18775个,比19631要少,因此我们还要继续剔除掉一些相同的基因名,此时的问题就是,如果有3行的基因相同,要剔掉哪个?按教程中的标准,剔除标准是:只保留在各个样本中均值最大的那个基因名,这个处理过程的示意图如下所示:
在上表中,一共有4个样本,6个基因,其中Gene_5
有3个重复,Gene_6
有4个重复,因此我们要剔除掉那些重复的基因名,假设我们按照这2个基因在不同样本中的最高均值这个条件来筛选,那么Gene_5
只需要保留第1行,Gene_6
只需要保留第3行就行,代码如下所示:
|
|
现在提取分组信息,在开头的代码中,我们把分组信息储存在了pData
变量中,如下所示:
|
|
有了分组信息后,把原始表达谱再整理一下,如下所示:
|
|
绘图:
|
|