当直接用R函数getGEO下载表达谱信息和平台信息报错时,那就全都手动下载,下载GSE135820_series_matrix.txt.gz(包含表达谱和需要整理的Label信息)和GSE135820_exp_raw_dat.csv.gz(包含平台给的Gene_symbol或者Entrezid信息),整理完后读入R。
注意下载表达谱信息的时候记得看数据是否经过Log2转换和标准化处理(在整理Label信息时series序列信息那里有描述),如果没有,那这两步都要进行。
probe2symbol_df<-anno[,c(1,7)]
##如果只有表达谱中有Symbol时,anno中什么都没有
##3则通过表达谱的Symbol,先对应找entrezid,
#######去找entrezid
a<-probe2symbol_df[,2]
entrezid<-AnnotationDbi::select(org.Hs.eg.db, keys=a,
columns=c("ENTREZID"), #目标格式
keytype="SYMBOL") #当前格式
Gene_Symbol<-entrezid[,1]
entrezid<-entrezid[,2]
probe_id<-probe2symbol_df[match(Gene_Symbol,probe2symbol_df[,2]),1]
b<-cbind(probe_id,entrezid)
probe2symbol_df<-data.frame(cbind(b,Gene_Symbol))
exprSet=data.frame(probe_id=row.names(exprSet), exprSet)#将行名变成名为probe_id的第一列,只有需要标准化的数据才跑这步
row.names(exprSet)=NULL
#去一对多
library(dplyr)
probe2symbol_df <- probe2symbol_df %>%
filter(!grepl("*///",Gene_Symbol)) %>%
filter(Gene_Symbol != "") %>%
filter(!grepl("^MT-|^LOC",Gene_Symbol))
library(dplyr)
exprSet <- exprSet %>%
inner_join(probe2symbol_df,by="probe_id") %>% ##合并探针信息
select(-probe_id) %>% ##去掉多余信息
select(Gene_Symbol, everything()) %>% #重新排列
mutate(rowMean =rowMeans(.[grep("GSM", names(.))])) %>% #求出平均数(真的是画龙点睛)
arrange(desc(rowMean)) %>% #把表达量的平均值按从大到小排序
distinct(Gene_Symbol,.keep_all = T) %>% # 留下第一个symbol
select(-rowMean) %>% #反向选择去除rowMean这一列
tibble::column_to_rownames(colnames(.)[1]) # 把第一列变成行名并删除
exprSet <- as.matrix(exprSet)
GID<as.numeric(na.omit(probe2symbol_df[match(row.names(exprSet),probe2symbol_df[,3]),2]))#先取出最后一列
k<-match(GID,probe2symbol_df[,2])#取出对应去掉NA的gene_Symbol的位置
k<-probe2symbol_df[k,3]#取出对应位置的gene_Symbol名字
exprSet<-exprSet[k,]#取出对应gene_Symbol的表达谱数据
gse17260_Exp<-exprSet[,1:110]
gse17260_GID<-GID
gse17260_Label<read.table("GSE17260_Label.txt",header=T,stringsAsFactors = F,sep = "\t")
gse17260_Label<-gse17260_Label[which(gse17260_Label[,2]=="no"),]
gse49997_Exp<gse49997_Exp[,match(gse49997_Label$Sample_ID,colnames(gse49997_Exp))]
网友评论