保姆级教程!!GEO数据集芯片数据的探针ID转换!!

小伙伴们得到GEO数据集原始数据后,发现密密麻麻的基因表达信息不知道从哪里下手。而且基因表达信息往往有很多我们不需要的信息,并且基因表达谱数据往往也是层次不齐。在这里小果自己整理了一份代码,可以把基因表达谱整理出来,并且把探针ID也转换完成,把数据也归一化处理。接下来跟着小果去学习一下吧!

在这里小果使用实例数据GSE63514,平台为GPL-570。小伙伴可以自行在GEO数据库中下载。不过,小果教大家一个小技巧:

在官网搜到自己需要的GEO数据集后,可以在

这个选项中选择查看一下这个数据集中含有那些样本:

此外,在

当我们点击GPL平台后会出现一些信息在这里:

如果这个平台信息含有 那么我们处理数据起来就会很方便,利用Gene Symbol就可以转换ID得到我们想要的基因名称。小伙伴们一定要注意,如果没有这个Symbol信息(有的平台可能只会显示Symbol),小果这里的代码可能不太使用。接下来我们就进入正题吧!

我们得到这个原始数据集,先导入它们:

setwd(“E:\\生信果”)

Sys.setlocale(‘LC_ALL’,’C’)

#读取GPL文件

GPL_table = read.table(‘E:\\生信果\\GPL570-55999.txt’,sep = “\t”,

comment.char = “#”, stringsAsFactors = F,

header = T, fill = TRUE, quote = “”)

#读取GSE文件

GSE4100 <- read.table(‘E:\\生信果\\GSE63514_series_matrix.txt’,sep = “\t”,

comment.char = “!”, stringsAsFactors = F,header = T, fill=TRUE)#43931

#导入文件,我们可以查看一下导入的数据形式。

细心的小伙伴会发现,ID这一列不是我们想要的Gene名,这就需要我们吧ID转化一下。

接下来:

ID_Sybmol = GPL_table[,c(1,11)] #GPL对应ID列

colnames(ID_Sybmol)[2]=”Symbol” #更改名称为Symbol,主要是为了对其求平均函数

c(1,11)这里的11是GPL平台表格里面,代表第11列,小果这里GeneSymbol是11列,所以这里是11,小伙伴们需要数一下自己数据Symbol在第几列。

接下来:

#合并ID与基因列

Exp = merge(ID_Sybmol,GSE4100,by.x = “ID”,by.y = “ID_REF”,all=T) #45782个

Exp = Exp[,-1]

View(Exp)#查看一下数据集

这样一来就得到我们想要的基因名称了,但是又出现一个新的问题,基因名有重复的,而且有个基因含有多个,这该怎么办呢,小果再教一招。对数据过滤:

#数据过滤,对多余的基因进行删除

Exp = Exp[Exp$Symbol != “”,] #

Exp = na.omit(Exp) #

#去除多余的基因,

Exp1 = data.frame(Exp[-grep(“/”,Exp$”Symbol”),]) #去一对多,grep是包含的意思,-就是不包含

write.table(Exp1,”Exp1.txt”,row.names = F,quote = F,sep=”\t”)

那么这里

就得到干净的基因表达谱

但是,有的小伙伴他的基因表达谱中数据有的异常的大,那么就需要对数据归一化。

接下来小果在继续教大家如何把数据集做平均值处理,这里需要用到for循环处理数据。

#求平均值

meanfun <- function(x) {

x1 <- data.frame(unique(x[,1]))

colnames(x1) <- c(“Symbol”)

for (i in 2:ncol(x)){

x2 <- data.frame(tapply(x[,i],x[,1],mean))

x2[,2] <- rownames(x2)

colnames(x2) <- c(colnames(x)[i], “Symbol”)

x1 <- merge(x1,x2,by.x = “Symbol”,by.y = “Symbol”,all=FALSE)

}

return(x1)

}

Exp2 <- meanfun(Exp1)

这里数据就会变规整很多。

我们使用柱状图展示数据形式

# 查看数据

par(cex = 0.7)

n.sample=ncol(Exp2[,-1])

if(n.sample>40) par(cex = 0.5)

cols <- rainbow(n.sample*1.2)

boxplot(Exp2[,-1], col = cols,main=”expression value”,las=2)

write.table(Exp2,”Exp_Original.txt”,row.names = F,quote = F,sep=”\t”)

row.names(Exp2) = Exp2[,1]

Exp2 = log(Exp2[,-1])

par(cex = 0.7)

n.sample=ncol(Exp2)

if(n.sample>40) par(cex = 0.5)

cols <- rainbow(n.sample*1.2)

boxplot(Exp2, col = cols,main=”expression value”,las=2)

Symbol = row.names(Exp2)

Exp_test = cbind(Symbol,Exp2)

write.table(Exp_test,”Exp.txt”,row.names = F,quote = F,sep=”\t”)

最终得到的数据集就是我们想要的基因表达谱了,小伙伴可以使用得到的基因表达谱做后续的分析啦!

小果这里提醒一下,有的数据集不需要做归一化处理,小伙伴要清楚自己想要得到那个基因表达谱。