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






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

小果  生信果  2023-09-18 19:00:49

生信人R语言学习必备

立刻拥有一个Rstudio账号

开启升级模式吧

(56线程,256G内存,个人存储1T)

 


小伙伴们得到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")


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

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


其他相关分析内容,例如预测肿瘤样本药物敏感性分析(http://www.biocloudservice.com/712/712.php),预测某样本亚型对免疫治疗的反应(http://www.biocloudservice.com/292/292.php),单样本富集算法分析免疫浸润丰度(http://www.biocloudservice.com/106/106.php),计算64种免疫细胞相对含量(http://www.biocloudservice.com/107/107.php)等都可以用本公司新开发的零代码云平台生信分析小工具,一键完成该分析奥,感兴趣的小伙伴欢迎来尝试奥,网址:http://www.biocloudservice.com/home.html。今天小果的分享就到这里,下期在见奥。


小果友情推荐

好用又免费的工具安利

点击“阅读原文”立刻拥有

↓↓↓