最近处理了一个GEO数据集,用的芯片是GPL5175,这里记录下处理办法
GPL5175,并无明显的symbol列,需要从gene_assignment列中提取对应的基因名


00_ids.R
rm(list = ls())
#GPL5175探针处理办法
#获取注释文件的方法一
library(GEOquery)
gpl_number='GPL5175'
# a = getGEO(gpl_number,destdir = ".")
# b = a@dataTable@table
# colnames(b)
#获取注释文件的方法二
library(tinyarray)
get_gpl_txt(gpl_number)
#获取表格文件的下载链接
#接下来是复制网址去浏览器下载、放在工作目录下、读取、提取探针id和基因symbol(没有现成的需要拆分和转换),不同文件代码不统一,等看同学们的例子。
#注意:最终的数据ids只能有两列,第一列列名是probe_id,第二列列名是symbol,且都是字符型,否则后面代码要报错咯。
tmp <- data.table::fread("GPL5175.txt",header = T,data.table = F)
extract_first_symbol <- function(gene_assignment) {
if (is.na(gene_assignment) || gene_assignment == "---") {
return(NA)
}
# 找到第一个" // "的位置
first_delim <- regexpr(" // ", gene_assignment, fixed = TRUE)
if (first_delim == -1) return(NA)
# 找到第二个" // "的位置
rest_string <- substr(gene_assignment, first_delim + 4, nchar(gene_assignment))
second_delim_in_rest <- regexpr(" // ", rest_string, fixed = TRUE)
if (second_delim_in_rest == -1) return(NA)
# 提取之间的内容
symbol <- substr(rest_string, 1, second_delim_in_rest - 1)
return(symbol)
}
tmp$symbol <- sapply( tmp$gene_assignment, extract_first_symbol)
unique_symbols_no_na <- unique( tmp$symbol[!is.na( tmp$symbol)])
ids <- tmp[, c("ID", "symbol")]
head(ids)
colnames(ids) <- c("probe_id", "symbol")
# 去除空值和重复
ids <- ids[!is.na(ids$symbol) & ids$symbol != "", ]
ids$probe_id <- as.character(ids$probe_id)
head(ids)
# probe_id symbol
# 1 2315100 DDX11L2
# 11 2315125 OR4F17
# 15 2315147 LOC100288692
# 16 2315160 FLJ45445
# 17 2315163 LOC100132062
# 19 2315191 LOC100507658
str(ids)
# 'data.frame': 33475 obs. of 2 variables:
# $ probe_id: chr "2315100" "2315125" "2315147" "2315160" ...
# $ symbol : chr "DDX11L2" "OR4F17" "LOC100288692" "FLJ45445" ...
save(ids,file = "step0_ids.Rdata")
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。