GEO芯片注释缺少基因注释信息咋办?不慌!小果教你重注释

今天小果在下载一个GEO数据集的时候发现该芯片平台注释信息不全,没有相关的基因注释信息只有探针信息,没有基因注释信息就无法提取基因表达矩阵,小果将通过重新注释的方法来获得基因表达矩阵,有需要的小伙伴,可以跟着小果一起开始今天的学习。

  1. 如何进行芯片数据重注释?

小果在进行GSE92681数据集下载的时候发现该数据集没有基因注释信息,只包含探针ID,SEQUENCE和transcript类型,如下图:

Dingtalk_20230615171402

遇到这种情况大多数小伙伴是不是没有办法啦!不用着急,小果来为小伙伴解决这个问题,一般通过芯片重新注释来解决这个问题,一般通过这几个步骤来进行重新注释,第一步,需要准备芯片上的探针序列和转录本DNA序列,探针序列已经存在,需要下载转录本DNA序列,下载于GENCODE(https://www.gencodegenes.org/human/),

Dingtalk_20230616082310

小果下载最新版本的转录本DNA序列(gencode.v43.transcripts.fa),转录本id包括了Gene symbol和biotype。

Dingtalk_20230616083550

第二步,准备好了探针序列和转录本DNA序列后,可以选择blast或者seqman软件进行序列比对,本推文小果利用seqman软件进行比对,seqman相比blast软件,速度要很快,使用参数比较简单,最后根据序列比对结果提取探针id,Gene symbol和biotype对应关系文件。

#安装seqman,网址:http://www-personal.umich.edu/~jianghui/seqmap/

Dingtalk_20230616103048

#下载seqman安装包

wget https://jhui2014.github.io/seqmap/download/seqmap-1.0.13-src.zip

#解压seqmap压缩包

unzip seqmap-1.0.13-src.zip

#进行编译

cd seqmap-1.0.13-src

make

#添加环境变量

export PATH=/media/desk16/wangd/seqmap-1.0.13-src:$PATH

source .bashrc

通过以上步骤就可以成功的安装seqman软件啦!

第三步,合并表达矩阵和探针id,Gene symbol和biotype文件,获得最终的基因表达矩阵文件。

这就是小果为大家展示的芯片重注释步骤,通过三步就可以该分析,接下来小果将开始今天的实操。

  1. 准备需要的R包

#安装需要的R包

BiocManager::install(“GEOquery”)

install.packages(“tidyverse”)

#加载需要的R包

library(GEOquery)

library(tidyverse)

3.GSE92681数据集表达矩阵和注释信息下载

#GSE92681数据集下载

GSEdata <- getGEO(“GSE92681”, GSEMatrix=T, AnnotGPL=FALSE)

eset <- GSEdata[[1]]

#提取表达矩阵,通过exprs函数提取,行名为探针ID,列名为样本名

exprSet <- as.data.frame(exprs(eset))

Dingtalk_20230615162209

# 提取GSM ID作为样品名,pData函数来获取样本信息

GSMID <- pData(eset)[,c(1,2,8,10,12)]

#利用fData函数提取芯片注释信息,发现没有基因注释信息

annotation<-fData(eset)

Dingtalk_20230615161839

#只保留探针ID和序列

gpl <- annotation[,c(1,2,4)]

gp <- dplyr::filter(gpl,!is.na(SEQUENCE))

#获得探针对应的序列

gpl <- paste0(‘>’,gpl$ID,’\n’, gpl$SEQUENCE)

#保存全部序列,运行下面这行:

write.table(gpl,’GPL.fasta’, quote = F, row.names = F, col.names = F)

4.GSE92681数据集重注释

#利用seqmap软件将转录本的DNA序列文件和芯片上探针的序列进行序列比对

seqmap软件参数说明:

0代表匹配探针错误个数0

GPL.fasta 需要比对的探针序列

gencode.v43.transcripts.fa 转录本的fasta文件

seqmap_gene.txt 输出文件,比对结果文件

system(‘seqmap 0 GPL.fasta gencode.v43.transcripts.fa seqmap_gene.tmp /output_all_matches’)

# seqmap_gene.tmp,生成的比对结果文件,需要关注第一列转录本序列id和第四列探针id

Dingtalk_20230615163055

gplTOgene <- read_delim(‘seqmap_gene.tmp’,delim = ‘\t’)

#提取第1列和第4列数据

gplTOgene <- gplTOgene[,c(1,4)]

#将第一列数据分割获得gene gsym

gplTOgene$gsym<-unlist(lapply(gplTOgene$trans_id,function(x) strsplit(as.character(x),”\\|”)[[1]][6]))

#将第一列数据分割获得biotype

gplTOgene$biotype<-unlist(lapply(gplTOgene$trans_id,function(x) strsplit(as.character(x),”\\|”)[[1]][8]))

gplTOgene$gsym_biotype <- paste(gplTOgene$gsym,gplTOgene$biotype,sep = ‘|’)

#输出三列,探针ID、gene symbol、biotype

gplTOgene <- gplTOgene[,c(2:4)]

#去除重复

gplTOgene <- distinct(gplTOgene)

write_csv(gplTOgene,’gplTOgene.csv’)

#提取mRNA芯片注释信息,也可以选择提取LcRNA注释信息

mRNA.probe1 <- filter(gplTOgene,biotype ==”protein_coding”)

#获得唯一的探针id

uni <- names(table(mRNA.probe1$probe_id)[table(mRNA.probe1$probe_id) == 1])

mRNA.probe2 <- mRNA.probe1[match(uni,mRNA.probe1$probe_id),]

#获得一个gene对应两个探针的Gene symbol

nProbes <- names(table(mRNA.probe2$gsym)[table(mRNA.probe2$gsym) >= 2])

mRNA.probe3 <- mRNA.probe2[mRNA.probe2$gsym %in% nProbes,]

mRNA.probe4 <- mRNA.probe3[order(mRNA.probe3$gsym),]

#保存芯片id,Gene symbol和biotype三者关系文件

write.table(mRNA.probe4,”mRNA.probes.txt”, quote = F,row.names = F, col.names = T)

mRNA.probe4 <- read.table(“mRNA.probes.txt”, header = T)

#将行名转化为列名probe_id

exprSet<-rownames_to_column(exprSet,var=”probe_id”)

#合并注释信息和表达矩阵文件

mRNA.probe.expr <- merge(mRNA.probe4[,1:2],exprSet , by = “probe_id”)

#将列名转化为行名

row.names(mRNA.probe.expr) <- mRNA.probe.expr$probe_id

#去除probe_id列

mRNA.probe.expr$probe_id <- NULL

# 计算多个探针对应同一个基因表达量的中位数值

mRNA.expr_uniq <- aggregate(.~gsym,mRNA.probe.expr, median)

# 将 gene symbol 列转化为行名

rownames(mRNA.expr_uniq) <- mRNA.expr_uniq$gsym

#去除gene symbol 列

mRNA.expr_uniq$gsym <- NULL

#获得重新注释的mRNA(protein_coding)表达矩阵文件

GSE92681<-mRNA.expr_uniq

#保存结果文件

write.table(GSE92681,file=”GSE92681_gene_expr.txt”,col.names=T,row.names=T,quote=F,sep=”\t”)

  1. 结果文件

GSE92681_gene_expr.txt

该结果文件进行重注释后获得的基因表达矩阵,行名为Gene symbol,列名为样本名。

Dingtalk_20230616092314

今天小果的分享就到这里啦!如果小伙伴有其他数据分析需求,可以尝试本公司新开发的生信分析小工具云平台,零代码完成分析,非常方便奥,云平台网址为:http://www.biocloudservice.com/home.html,包括了GEO数据下载(http://www.biocloudservice.com/371/371.php)等小工具,欢迎大家和小果一起讨论学习哈!!!!