geo数据挖掘-2
时间:2022-07-25
本文章向大家介绍geo数据挖掘-2,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
geo数据挖掘-2
sunqi
2020/7/11
1.概述
对下载的数据进行处理,提取表达矩阵,并匹配探针信息,基因名 教程来自:https://github.com/jmzeng1314/GEO/
2.数据下载
2.1 获得表达数据‘
rm(list=ls())
# 设置默认转换因子为否
options(stringsAsFactors = F)
# 目标文件
f='GSE42872_eSet.Rdata'
# 上章的geo包
library(GEOquery)
# 下载文件,如果存在则不进行下载
if(!file.exists(f)){
gset <- getGEO('GSE42872', destdir=".",
AnnotGPL = F, ## 注释文件
getGPL = F) ## 平台文件
save(gset,file=f) ## 保存到本地
}
# 为了避免自动化错误,这里再次导入
load('GSE42872_eSet.Rdata') ## 载入数据
# 查看数据类型为list
class(gset)
## [1] "list"
#长度
length(gset)
## [1] 1
# 因为只有一个平台,所以只有1个列表元素
class(gset[[1]])
## [1] "ExpressionSet"
## attr(,"package")
## [1] "Biobase"
# 列表的第一个元素为表达矩阵和biobase
gset
## $GSE42872_series_matrix.txt.gz
## ExpressionSet (storageMode: lockedEnvironment)
## assayData: 33297 features, 6 samples
## element names: exprs
## protocolData: none
## phenoData
## sampleNames: GSM1052615 GSM1052616 ... GSM1052620 (6 total)
## varLabels: title geo_accession ... cell type:ch1 (34 total)
## varMetadata: labelDescription
## featureData: none
## experimentData: use 'experimentData(object)'
## pubMedIds: 24469106
## Annotation: GPL6244
sprintf("显示下载的文件有6个样本,22397个位点 /n GPL6244")
## [1] "显示下载的文件有6个样本,22397个位点 /n GPL6244"
#获取列表元素,
a=gset[[1]]
#exprs函数获取表达矩阵
dat=exprs(a)
dim(dat)#查看维度
## [1] 33297 6
# GPL6244
# 查看前5行
head(dat[,1:5])
## GSM1052615 GSM1052616 GSM1052617 GSM1052618 GSM1052619
## 7892501 7.24559 6.80686 7.73301 6.18961 7.05335
## 7892502 6.82711 6.70157 7.02471 6.20493 6.76554
## 7892503 4.39977 4.50781 4.88250 4.36295 4.18137
## 7892504 9.48025 9.67952 9.63074 9.69200 9.91324
## 7892505 4.54734 4.45247 5.11753 4.87307 5.15505
## 7892506 6.80701 6.90597 6.72472 6.77028 6.77058
# 可以看到列名为样本好,行名为探针名
# 绘制箱式图
boxplot(dat,las=2)
#查看临床信息,包含6个患者的34个信息
pd=pData(a)
## 选择需要的临床信息
library(stringr)
# 通过空格分隔title,获得分组信息
group_list=str_split(pd$title,' ',simplify = T)[,4]
table(group_list)
## group_list
## Control Vemurafenib
## 3 3
# 3个病例和3个对照
2.2 获得平台信息
# 查看平台信息探针信息
# GPL6244
# 需要下载时,改为T
if(F){
library(GEOquery)
gpl <- getGEO('GPL6244', destdir=".")
colnames(Table(gpl))
head(Table(gpl)[,c(1,12)])
probe2gene=Table(gpl)[,c(1,12)]
head(probe2gene)
save(probe2gene,file='probe2gene.Rdata')
}
# 获得平台的所有探针
load(file='probe2gene.Rdata')
# 需要的时候通过biocmanager进行安装
# library(BiocManager)
# BiocManager::install("hugene10sttranscriptcluster.db")
# 这个包用来处理探针信息,每个平台用到的包不一样
library(hugene10sttranscriptcluster.db)
# 获得平台探针信息对应的基因名
ids=toTable(hugene10sttranscriptclusterSYMBOL) #toTable提取probe_id(探针名)和symbol(基因名)
# 重命名
colnames(ids)=c('probe_id','symbol')
# 去掉基因缺失的探针
ids=ids[ids$symbol != '',]
# 匹配平台探针和样本探针
ids=ids[ids$probe_id %in% rownames(dat),]
# 按照探针名,选取行,去掉样本中平台上没有的探针
dim(dat)
## [1] 33297 6
dat=dat[ids$probe_id,]
dim(dat)
## [1] 19814 6
#对dat按行操作,取每一行的中位数将结果返回到median
ids$median=apply(dat,1,median)
#对ids$symbol按照ids$median中位数从大到小排列的顺序排序
ids=ids[order(ids$symbol,ids$median,decreasing = T),]
#对symbol进行去重
ids=ids[!duplicated(ids$symbol),]
#按照探针id取dat的子集
dat=dat[ids$probe_id,]
dim(dat)
## [1] 18821 6
#把ids的symbol这一列中的每一行给dat作为dat的行名
rownames(dat)=ids$symbol
# 保存数据集合分组信息
save(dat,group_list,file = 'step1-output.Rdata')
结束语
到这里需要分析的数据已经下载并预处理完成,后面的文章将会基于现在保存的结果进行下一步的主成分分析、差异基因表达分析、GO、KEGG的富集分析等。
love&peace
- 剑指 offer代码解析——面试题38数字在排序数组中出现的次数
- 剑指 offer代码解析——面试题37两个链表的第一个公共结点
- 剑指 offer代码解析——面试题34丑数
- 剑指 offer代码解析——面试题35第一个只出现一次的字符
- Python内置数据结构之集合
- 剑指 offer代码解析——面试题32统计1到n中1出现的次数
- 剑指 offer代码解析——面试题26复杂链表的复制
- Linux软件安装(二)——RPM与YUM
- linux软件安装(一)——源码安装
- 利用LUA协程实现FUTURE模式
- Python内置数据结构之字典(完整版)
- Maven使用详解
- LUA debug 工具函数
- Python之Windows环境搭建
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【MyBatis-4】MyBatis之动态SQL
- 【MyBatis-4】MyBatis批量insert、update、delete数据
- 【redis6.0.6】深入源码,一探究竟 -- redis服务器开机自启动
- 不是你记忆中的单例模式,但适用的程度,更胜一筹
- 安卓模拟器修改hosts文件
- 为容器化的 Postgres 数据库启用 ssl 连接
- 【SpringBoot web-1】web项目数据校验
- 【SpringBoot web-2】web项目参数传递
- 筛法求素数
- redis学习(十三)
- 【SpringBoot web-3】web项目统一数据封装与全局异常处理
- 送你 8 张图,好好理解一下。
- 【前端系列-1】ajax与Springboot通信将数据库数据渲染到前端表格
- 【前端系列-2】layui+springboot实现表格增删改查
- 容器技术|Docker三剑客之docker-swarm