zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

GEO数据挖掘代码1(从geo下载数据)

2023-03-07 09:44:16 时间

在GEO上搜索数据,下载其表达矩阵(如果以M为单位,说明文件可用;如果大小只有K,说明文件不可用)

是一种储存高通量芯片表达矩阵的数据类型, exprs()函数可以将其切换为矩阵。

image.png

判断表达矩阵是否正常?boxplot()

箱线图中较为平齐,没有大的波动

如果某一样本基因比别的样本小or大,则说明有问题

image.png

解决方法:

1.删掉异常样本

2.limma::normalizeBetweenArrays()

表达矩阵的负值?

1.去过log2,有负值很正常 继续用

2.数据做了标准化,有一半的负值,需要找原始数据进行处理

3.没有取过log但是有负值,数据有问题,要么弃用 要么找原始数据处理

#实战代码有很多注意事项, 请不要不听课直接跑代码。

#数据下载
rm(list = ls())
library(GEOquery)
gse_number = "GSE56649"
eSet <- getGEO(gse\_number, destdir = '.', getGPL = F) #下载并读取数据,以列表的形式存储

#数据检查
class(eSet) 
length(eSet)
eSet = eSet[[1]] 

exp <- exprs(eSet) #提取表达矩阵exp

dim(exp) #查看数据的行数及列数,一般表达矩阵都有成千几万行,如果行数<2000警惕!
exp[1:4,1:4]
#检查矩阵是否正常,如果是空的就会报错,空的和有负值的、有异常值的矩阵需要处理原始数据。
#如果表达矩阵为空,大多数是转录组数据,不能用这个流程(后面另讲)。
#自行判断是否需要log 如果已经去过LOG值,则表达量应该在0~20,如果没取LOG则表达矩阵数字会在几十、几百

exp = log2(exp+1)
boxplot(exp)
limma::normalizeBetweenArrays(exp)  #处理异常样本

#提取临床信息
pd <- pData(eSet)

p = identical(rownames(pd),colnames(exp));p
if(!p) exp = exp[,match(rownames(pd),colnames(exp))] #让exp列名与pd的行名顺序完全一致,否则会出错!!

#提取芯片平台编号
gpl_number <- eSet@annotation;gpl\_number

#存储数据
save(gse_number,pd,exp,gpl\_number,file = "step1output.Rdata")