首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Day09 生信马拉松-GEO数据挖掘 (中)

Day09 生信马拉松-GEO数据挖掘 (中)

原创
作者头像
大冬仔
修改于 2023-08-19 09:18:47
修改于 2023-08-19 09:18:47
39500
代码可运行
举报
文章被收录于专栏:生信学习Marathon生信学习Marathon
运行总次数:0
代码可运行

文章所有内容均来自生信技能树“生信马拉松-数据挖掘班”授课内容个人整理,如需转载请注明出处。

1.如何进行实验分组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#######前期准备#######
rm(list = ls())  
load(file = "step1output.Rdata")

# 1.Group----
library(stringr)
# 标准流程代码是二分组
# 生成Group向量的三种常规方法,三选一,选谁就把第几个逻辑值写成T,另外两个为F。如果三种办法都不适用,可以继续往后写else if

if(F){
  # 第一种方法,直接查看data.frame用现成的可以用来分组的列--不一定可以找出
  
}else if(F){
  # 第二种方法,眼睛数,自己生成--仅适用排列有序,每种分组都在一起
  Group = rep(c("Disease","Normal"),each = 10)

}else if(T){
  # ★★第三种方法,使用字符串处理的函数获取分组--适用范围最广,优先选择★★
  k = str_detect(pd$title,"Normal");table(k)
  Group = ifelse(k,"Normal","Disease")
}
  
# 需要把Group转换成因子,并设置参考水平,指定levels,对照组在前,处理组在后
Group = factor(Group,levels = c("Normal","Disease"))  #第一个是对照组,第二个是处理组,不可标记反!!
Group

2.如何进行芯片探针注释

2.1 探针注释的来源

①Biocoductor的注释包

②GPL的表格文件解析

③官网下载对应产品的注释表格

④自主注释

PS.不是所有GPL都能找到注释!!

2.2 探针注释的实操流程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#捷径—首选选择该方法
if(T){
  library(tinyarray)
  find_anno(gpl_number) # 寻找注释的函数,此处的“gpl_number” 是在"step1output.Rdata"中生成的向量,无需替换,也可用'GPLxxxxx'
  ids <- AnnoProbe::idmap('GPL17692') 

  # 如果AnnoProbe::idmap() 报错,对type进行标注—查看帮助文案
  ids <- AnnoProbe::idmap('GPL17692',type = "soft")#是复制的
}

##如果捷径的方法可行则无需运行以下四种方法,从方法1开始逐个往后。##
#方法1 BioconductorR包(最常用)
if(T){
  'GPL32737' 
  #http://www.bio-info-trainee.com/1399.html 查询GPL对应的Rif(!require(hgu133plus2.db))BiocManager::install("hgu133plus2.db")
  library(hgu133plus2.db)
  ls("package:hgu133plus2.db")
  ids <- toTable(hgu133plus2SYMBOL)
  head(ids)
}
# 方法2 读取GPL网页的表格文件,按列取子集——需要解读表格才用的代码
##https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL570 先下载GPL对应的txt到本地文件
if(F){
  #注:表格读取参数、文件列名不统一,活学活用,有的表格里没有symbol列,也有的GPL平台没有提供注释表格
  b = read.delim("GPL570-55999.txt",
                 check.names = F,
                 comment.char = "#")
  colnames(b)
  ids2 = b[,c("ID","Gene Symbol")]  #名字从colnames(b)输出结果中复制,防止输入错误
  colnames(ids2) = c("probe_id","symbol") #修改行名
  k1 = ids2$symbol!="";table(k1)  #去除注释的空格
  k2 = !str_detect(ids2$symbol,"///");table(k2) #去除非特异性探针格子
  ids2 = ids2[ k1 & k2,]
  # ids = ids2
}
# 方法3 官网下载注释文件并读取
# 方法4 自主注释 
#https://mp.weixin.qq.com/s/mrtjpN8yDKUdCSvSUuUwcA
save(exp,Group,ids,file = "step2output.Rdata")

自主注释流程--了解即可

3.PCA与heatmap的绘制

3.1 PCA图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
######清空环境,加载需要的数据######
rm(list = ls())  
load(file = "step2output.Rdata")#输入数据:exp和Group

#Principal Component Analysis(PCA的全称)
#http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/112-pca-principal-component-analysis-essentials
#PCA的不同呈现方式可在上面链接中查找,先用示例数据确保能运行,再根据实际需要进行调参

# PCA 图操作代码
dat=as.data.frame(t(exp)) #将matrix形式的exp转换为data.frame
library(FactoMineR)
library(factoextra) 
dat.pca <- PCA(dat, graph = FALSE)
fviz_pca_ind(dat.pca,
             geom.ind = "point", # show points only (nbut not "text")
             col.ind = Group, # color by groups
             palette = c("#00AFBB", "#E7B800"),
             addEllipses = TRUE, # Concentration ellipses
             legend.title = "Groups"
)

3.2 heatmap

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 绘制top 1000 sd 热图---- 
cg = names(tail(sort(apply(exp,1,sd)),1000)) #嵌套型代码写法

#管道符代码写法
library(tidyr)
library(tibble)
library(dplyr)
cg = apply(exp,1,sd) %>%  
     sort() %>%
     tail(1000) %>%
     names()
n = exp[cg,]

# 直接画热图---色彩对比不鲜明
library(pheatmap)
annotation_col = data.frame(group=Group) #写列的注释信息
rownames(annotation_col) = colnames(n) #写行的注释信息
pheatmap(n,
         show_colnames =F, #不显示行名
         show_rownames = F, #不显示列名
         annotation_col=annotation_col #根据分组映射颜色
)

# 按行标准化
pheatmap(n,
         show_colnames =F,
         show_rownames = F,
         annotation_col=annotation_col,
         scale = "row",  #基因只在样本间对比,不跨行与其他基因对比
         breaks = seq(-3,3,length.out = 100) #从-33生成100个颜色,让颜色对比更鲜明 “length.out = 100”为颜色范围
         ) 
dev.off()

拓展内容:归一化函数—scale()

scale函数是按列归一化,对于我们一般习惯基因名为行,样本名为列的数据框,就需要t()转置

cor()函数求相关系数的时候也是按列计算,如果计算行之间的相关系数也需要对矩阵进行t()转置

参考资料:scale函数对矩阵归一化是按行归一化,还是按列归一化?

以上内容均引用自生信技能树

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
GEO数据挖掘
箱型图不显示原始数据点,而是采用样本数据,根据四分位数用盒和线来显示值的范围。此外,它们用星号显示落在箱须之外的离群值
可乐同学与生信死磕到底
2024/04/08
3040
跟小洁老师学习GEO的第二天
geoChina的用法 #数据下载 rm(list = ls()) library(GEOquery) #先去网页确定是否是表达芯片数据,不是的话不能用本流程。 gse_number = "GSE28345" library(AnnoProbe) eSet <- geoChina(gse_number, destdir = '.') class(eSet) length(eSet) eSet = eSet[[1]] 批量安装R包 options("repos"="https://mirrors.ustc.e
贝诺酯
2023/03/19
5620
生信技能树 Day8 9 GEO数据挖掘 基因芯片数据
有时eSet里面有两个对象,可以到网页看一下,可能是因为测了两种芯片,我们分开分析就好。
用户11064093
2024/04/19
5030
GEO数据挖掘-2
GEO数据挖掘—2 四、代码分析流程 1. 下载数据并从中提取有用信息 gse_number = "GSE56649" eSet <- getGEO(gse_number, destdir = '.', getGPL = F) #(1)提取表达矩阵exp exp <- exprs(eSet) dim(exp) exp[1:4,1:4] 关于表达矩阵里的负值 取过log,有负值 —— 正常 没取过log,有负值 ——错误数据 有一半负值 ——做了标准化 获取实验分组和探针注释 # 生成Grou
大胖橘
2023/03/18
8430
Learn R GEO
·上下五条线的意思 中间的又黑又粗的—中位数;上下两条线是最大值和最小值;方框的上下两条线是75%和25%(四分位数);在外面的点-离群点
用户10412487
2023/03/28
1.2K0
生信技能树GEO数据挖掘直播配套笔记
二代测序(RNA_seq):如果是counts 可选择limma的voom算法或者edgeR或者DESeq2。 如果是FPKM或TPM可选择limma,注意:edgeR和DESeq2只能处理count注意:count做差异分析计算上下调,FPKM或TPM进行下游可视化
生信技能树
2022/06/08
2.1K0
生信技能树GEO数据挖掘直播配套笔记
GEO
生成Group向量的三种常规方法,三选一,选谁就把第几个逻辑值写成T,另外两个为F。如果三种办法都不适用,可以继续往后写else if
浅念
2023/04/04
1.6K0
GEO数据库挖掘
输入数据是数值型矩阵/数据框,颜色的变化表示数值的大小。有相关性热图和差异基因热图。
叮当猫DDM
2023/07/16
8431
GEO数据读取-笔记分享
的编号开头是? •GSM
用户10407321
2023/03/18
1.6K0
GEO数据读取-笔记分享
GEO表达芯片数据分析
---title: "GEO表达芯片数据分析"output: html_documentdate: "2023-03-20"---关于该流程代码的说明:(1)本流程仅适用于GEO芯片表达数据,以"GSE56649"为例(2)先在GEO数据库中确定是否为"Expression profiling by array",不是的话不能使用本流程!(3)注意需要自行修改或判断的代码一般放在了两个空行之间(4)代码的注释有一丢丢多,目的是为了更好地帮助大家理解1.下载数据,提取表达矩阵、临床信息和GPL编号rm(lis
小叮当aka
2023/03/23
3.3K1
GEO数据挖掘-基于芯片
在require()函数中,如果直接传递包的名称作为参数,不需要加引号;如果包的名称以字符串形式存储在变量中,则需要使用character.only = TRUE来指定这个变量是一个字符串
sheldor没耳朵
2024/07/23
5350
GEO数据挖掘-基于芯片
生信入门DAY7-9
基因表达芯片、转录组(NGS)、单细胞、(突变、甲基化、拷贝数变异,不直接给表达矩阵)。
青柠味
2025/05/22
1400
生信入门DAY7-9
GEO数据库中芯片数据分析思路
AnnoProbe是曾建明老师2020年开发的一款用于下载GEO数据集并注释的R包,收录在tinyarray里。 idmap##根据所给的GPL号,返回探针的注释 geoChina##根据所给的GSE号,下载对应的表达矩阵 annoGene##根据gencode中的GTF文件注释基因ID
小张小张
2023/05/25
2K0
从零开始的异世界生信学习 GEO数据库数据挖掘--GEO代码-芯片数据分析-1
在列表中取子集后得到"ExpressionSet"结构数据,为"Biobase"包中的数据形式
用户10361520
2023/03/09
1.1K0
GEO
用户10667093
2023/07/24
3000
Day9 GEO芯片数据挖掘-以肝癌GSE102079为例
Overall design 整体设计:2006 年至 2011 年间,共有 152 例在东京医科齿科大学医院接受 HCC 根治性肝切除术的患者参加了综合基因表达微阵列分析。从未接受化疗的结直肠癌转移患者中获得的 14 个相邻肝组织作为对照。
用户11008504
2024/05/08
3250
Day9 GEO芯片数据挖掘-以肝癌GSE102079为例
表达芯片数据分析1
芯片的差异分析需要输入表达矩阵(数据分布0-20,无异常值,如NA,Inf等;无异常样本)、分组信息(一一对应,因子,对照组的levels在前)、探针注释(gpl编号,对应关系)。
Erics blog
2023/09/25
6640
表达芯片数据分析2
Erics blog
2023/09/27
3880
GEO数据挖掘补充(四)——探针注释
当上述代码运行结果为:no annotation packages avliable,please use `ids <- AnnoProbe::idmap('XXXGPLXXX')` if you get error by this code ,please try different `type` parameters
拉布拉多_奶芙
2024/11/04
2080
GEO数据分析流程之芯片2
今天的是三周合计15天的数据挖掘授课学员一点一滴整理的授课知识点笔记哦,还有互动练习题哈,欢迎大家点击文末的阅读原文去关注我们学员的公众号哦!
生信菜鸟团
2024/06/28
1550
GEO数据分析流程之芯片2
相关推荐
GEO数据挖掘
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档