在GEO上搜索数据,下载其表达矩阵(如果以M为单位,说明文件可用;如果大小只有K,说明文件不可用)
是一种储存高通量芯片表达矩阵的数据类型, exprs()函数可以将其切换为矩阵。
判断表达矩阵是否正常?boxplot()
箱线图中较为平齐,没有大的波动
如果某一样本基因比别的样本小or大,则说明有问题
解决方法:
1.删掉异常样本
2.limma::normalizeBetweenArrays()
表达矩阵的负值?
1.去过log2,有负值很正常 继续用
2.数据做了标准化,有一半的负值,需要找原始数据进行处理
3.没有取过log但是有负值,数据有问题,要么弃用 要么找原始数据处理
代码语言:txt复制#实战代码有很多注意事项, 请不要不听课直接跑代码。
#数据下载
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")