2022-05-11

原始CEL,GSEXXX_RAW文件处理,RMA标准化MAS5标准化处理代码。

##if (!require("BiocManager", quietly = TRUE))
##  install.packages("BiocManager")

##BiocManager::install(c("annotate","annaffy", "GEOquery", "hgu133plus2.db", "org.Hs.eg.db", "affy", "makecdfenv", "AnnotationForge", "data.table"))
##make.cdf.package("GPL15048_HuRSTA_2a520709.CDF.gz", "hursta2a520709cdf", species = "Homo sapiens", compress = TRUE, unlink=TRUE)
##install.packages("hursta2a520709cdf", repos =  NULL, type="source" )
##devtools::install_github("steveneschrich/hursta2a520709.db")
{
  library(annaffy)
  library(affy)
  library(annotate)
  library(GEOquery)
  library(hgu133plus2.db)
  library(org.Hs.eg.db)
  library(makecdfenv)
  library(data.table)
  library(hursta2a520709cdf)
  rm(list = ls())
}

  # gse给出所有的待处理GEO文件名称
gse <- c("GSE72094", "GSE29013", "GSE37745", "GSE50081")
for (n in gse){
  # 设置RAW文件所在文件夹的路径
  path <- "C:/Users/Administrator/Documents/HypoxiaGeneSignature"
  setwd(path)
  # dir.create函数创建与GSE文件同名的文件夹,以便压缩包的解压和文件提取
  dir.create(n)
  # 设置默认路径
  setwd(paste(path, n, sep = "/"))
  # 对压缩文件解压
  untar(paste(paste(path, n, sep = "/"), "RAW.tar", sep = "_"))
  # 提取所有的命名中带有gz的文件
  files <- dir(pattern="gz$") ##加载文件
  # 将files中的文件进行合并
  sapply(files, gunzip) ##合并文件
  # 将所有名字带有CEL的文件存放到filelist变量中,每个CEL文件就是一个样本的芯片数据
  filelist <- dir(pattern="CEL$")
  # 使用ReadAffy函数读取每个CEL文件,并对芯片数据进行初步处理
  data <- ReadAffy(filenames=filelist)
  # 使用rma函数对芯片数据进行标化
  eset <- rma(data)
  # expres函数用于提取eset对象中的表达数据
  eset.e <- data.frame(exprs(eset))
  # 获取平台名称
  affydb <- annPkgName(data@annotation, type='db')
  require(affydb, character.only = TRUE)
  # 根据注释转换probe id为Gene symbol
  symbols<-as.character(aafSymbol(as.character(rownames(eset)),affydb))
  eset.e$genes <- symbols
  # 至此实现了对GEO原始数据的RMA标准化处理,处理后的表达谱数据为eset.e
  write.csv(eset.e, "rma_exp.csv", row.names = F)
  # 有些研究发现可以将RMA标化方法与MAS5标化方法进行结合,具体的实现方式如下
  
  # 使用mas5calls函数对data进行处理,得到mas5标化后的标化数据
  calls <- mas5calls(data) # get PMA calls
  # exprs函数用于提取表达谱
  calls <- exprs(calls)
  # 对数据calls进行筛选,最终得到数据即为在RMA标化的基础上,进一步考虑了
  absent <- rowSums(calls == 'A') # how may samples are each gene 'absent' in all
  absent <- which (absent == ncol(calls)) # which genes are 'absent' in all samples
  rmaFiltered <- eset[-absent,] # filters out the genes 'absent' in all samples 
  filtered <- data.frame(exprs(rmaFiltered))
  symbols<-as.character(aafSymbol(as.character(rownames(rmaFiltered)),affydb))
  filtered$genes <- symbols
  write.csv(filtered, "rma_mas5_exp.csv", row.names = F)
}
rm(list = ls())

{
  # get mappings from GPL15048
  tmp <- getGEO("GPL15048")
  #
  mp <- tmp@dataTable@table
  #
  std <- suppressMessages(data.table(AnnotationDbi::select(org.Hs.eg.db,
                                                           keys = AnnotationDbi::keys(org.Hs.eg.db,
                                                                                      keytype = "SYMBOL"),
                                                           columns = c("ENTREZID", "SYMBOL"),
                                                           keytype = "SYMBOL")))
  #
  gs <- std$SYMBOL[ match(mp$EntrezGeneID, std$ENTREZID)]
  #
  affyids <- rownames(eset.e)
  #
  res <- data.frame(Probe_ID = affyids,
                    Gene_Symbol = gs,
                    stringsAsFactors = F)
  #
  res$median = apply(eset.e, 1, median)
  #
  res <- res[ !is.na(res$Gene_Symbol),]
  #
  res = res[order(res$Gene_Symbol, res$median, decreasing = T),]
  #
  res = res[!duplicated(res$Gene_Symbol),]
  #
  eset.e <- eset.e[res$Probe_ID,]
  #
  rownames(eset.e) <- res$Gene_Symbol
  #
  uni_matrix <- eset.e
  #
  colnames(uni_matrix) <- gsub('__\\S*', '', colnames(uni_matrix))
  #
  setwd(path)
  #
  pheno <- read.csv(file = 'GSE72094_series_matrix.txt')
  #
  pheno <- data.frame(num1 = strsplit(as.character(pheno[28,]),split = '\t')[[1]][-1],
                      num2 = gsub('patient_id: ','', strsplit(as.character(pheno[39,]),split = '\t')[[1]][-1]))
  # 至此实现了对GEO原始数据的RMA标准化处理,处理后的表达谱数据为uni_matrix
  save(uni_matrix,pheno,file = 'uni_matrix.Rdata')
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 题王希孟《千里江山图》 2022-05-11 青石碧草山形跃 水天齐色江船飘 一面匆匆别世道 长卷绵延留妖娆 ...
    知鹊阅读 573评论 0 0
  • 部门的本职业务已经发展得比较完善,到达一定的瓶颈。然而老板一直希望能从部门的本职业务上有创新和收入。之前也做过几种...
    心源之园阅读 126评论 0 0
  • https://mp.weixin.qq.com/s/pSFskIr7yA0Qta6Sa8141Q
    b1fd535e3b42阅读 32评论 0 0
  • 十大认知 1、悦纳自己 2、降低面子观 3、降低对错观 4、减少攀比 5、焦点正面 6、提升感恩心 7、提升价值宽...
    逆袭之光阅读 609评论 0 0
  • 而陶渊明的“清欢”和苏轼是不一样的。陶渊明不为五斗米折腰,弃官隐居,过起了乡野农夫的生活。他生活拮据,经常断炊。饮...
    逆风飞扬888阅读 106评论 0 0