GEO数据挖掘-富集分析、TinyArray简化流程、多组样本分析more

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 富集分析
    • 一些理论知识
    • 具体代码
  • 富集不到的补救措施
  • 更多资料---
  • 问题数据和常见错误分析
  • Part4-复杂数据及其分析
    • 多分组数据分析流程
  • tinyarray简化版本分析流程
  • 多分组数据分析流程
    • 1.获取数据
    • 2.生成分组向量与探针注释


富集分析

一些理论知识

  1. 最常用于富集分析的数据库:GO 和 KEGG
  2. 人类的基因被数据库收录的 8000 个左右,被分类到不同的 KEGG 通路/GO term(细胞组分/分子功能/生物过程三个子部分)
  3. 用于富集分析的 R 包:clusterProfiler,Y叔开发的,还有一本书,clusterProfiler book
  4. 富集分析中得到的两个值的解释:
    GeneRatio:差异基因中富集到的数量/差异基因在数据库中的数量

bgRatio:该通路总共多少个基因/数据库中总共多少个基因
5. 所谓是否富集(p值):geneRatio对于bgRatio是否明显较大,即“实际中奖概率”是否明显比“理论中奖概率”大,即:衡量每个通路里的基因在差异基因里是否足够多

具体代码

rm(list = ls())  
load(file = 'step4output.Rdata')
library(clusterProfiler)
library(ggthemes)
library(org.Hs.eg.db)
library(dplyr)
library(ggplot2)
library(stringr)
library(enrichplot)

(1)输入数据

gene_diff = deg$ENTREZID[deg$change != "stable"] #输入数据为change不为stable的ENTREZID

(2)富集

ekk <- enrichKEGG(gene = gene_diff,organism = 'hsa')
ekk <- setReadable(ekk,OrgDb = org.Hs.eg.db,keyType = "ENTREZID")
ego <- enrichGO(gene = gene_diff,OrgDb= org.Hs.eg.db,ont = "ALL",readable = TRUE)
#setReadable和readable = TRUE都是把富集结果表格里的基因名称转为symbol#> class(ekk)
#[1] "enrichResult"
#attr(,"package")
#[1] "DOSE"
#ekk是对象
#??enrichResult  查看帮助文档
#(3)可视化
dotplot(ego, split = "ONTOLOGY") + facet_grid(ONTOLOGY ~ ., space = "free_y",scales = "free_y") 

在这里插入图片描述

#(3)可视化
dotplot(ego, split = "ONTOLOGY") + facet_grid(ONTOLOGY ~ ., space = "free_y",scales = "free_y") 
dotplot(ekk)
#或者是dotplot
table(ekk@result$p.adjust<0.05)   #创建一个表格,显示经过多重比较校正后的 P 值小于 0.05 的次数
table(ekk@result$pvalue<0.05)   ## 创建一个表格,显示未校正的 P 值小于 0.05 的次数

在这里插入图片描述

#(3)可视化
dotplot(ego, split = "ONTOLOGY") + facet_grid(ONTOLOGY ~ ., space = "free_y",scales = "free_y") 
dotplot(ekk)

在这里插入图片描述
直接对自定义对象写的自定义函数,不需要加任何参数调整就可以直接出图,方便!

富集不到的补救措施

  1. 调整logFC、pvalue的阈值(通常是调整logFC),以改动差异基因数量
  2. 不适用默认的padj,而是使用原始p值,在文章中说明清楚即可
  3. 换富集方法,GSEA也可以做KEGG富集
  4. 调整参数maxGSSize = 500,默认参数为500表示500个基因以上的通路不考虑,可以调大成1000之类

更多资料—

  1. GSEA:https://www.yuque.com/docs/share/a67a180f-dd2b-4f6f-96c2-68a4b86fe862?#
    添加链接描述
  2. Y叔的书:http://yulab-smu.top/clusterProfiler-book/index.html
    添加链接描述
  3. GOplot:https://mp.weixin.qq.com/s/LonwdDhDn8iFUfxqSJ2Wew
    添加链接描述
  4. 网上的资料和宝藏无穷无尽,学好R语言慢慢发掘~

问题数据和常见错误分析

1.数据提交者的锅
表达矩阵是空的
表达矩阵不完整
表达矩阵被标准化过
表达矩阵有错误或异常值
解决办法:
换一个数据
处理原始数据

2.你的锅
用芯片流程分析转录组数据
忘记log/多余log
分组搞错
探针注释错误
id转换用错物种

3.不可抗力
找不到探针注释
数据有错又找不到原始数据
找不到想要的实验设计

Part4-复杂数据及其分析

多分组数据
多数据联合分析
加权共表达网WGCNA
蛋白互作网络

添加链接描述
分组聚类的热图

table(ekk@result$p.adjust<0.05)
#检查富集到了多少条通路

多分组数据分析流程

tinyarray简化版本分析流程

需要R包版本2.3.1及以上:

### 运行代码块的快捷键
在RStudio中,你可以使用以下快捷键来运行当前的代码块或所选代码:- Windows/Linux: `Ctrl + Enter`
- macOS: `Cmd + Enter`这些快捷键会执行光标所在的代码块,或者如果使用了文本选择,那么执行所选部分的代码。

1.获取数据

rm(list = ls())
#打破下载时间的限制,改前60秒,改后10w秒
options(timeout = 100000) 
options(scipen = 20)#不要以科学计数法表示
#前面是一样的library(tinyarray)
packageVersion("tinyarray")
[1]2.3.3
library(stringr)
geo = geo_download("GSE7305")  #geo_download实现下载和整理
exp = geo$exp  #表示从名为 geo 的对象中提取名为 pd 的组件,并将提取的组件赋值给一个新的变量 pd。
exp = log2(exp+1) 
boxplot(exp,las = 2)   #查看有无异常样本

在这里插入图片描述

pd = geo$pd   #提取临床信息
gpl_number = geo$gpl
#代替了第一个脚本# 分组信息
k = str_detect(pd$title,"Normal");table(k)
Group = ifelse(k,"Normal","Disease")
Group = factor(Group,levels = c("Normal","Disease"))
Group = factor(Group,levels = c("Normal","Disease"))
# 探针注释
find_anno(geo$gpl)
library(hgu133plus2.db);ids <- toTable(hgu133plus2SYMBOL)
head(ids)
#差异分析和它的可视化
dcp = get_deg_all(exp,Group,ids,entriz = F)  #get_deg_all实现差异基因和可视化
#代替了脚本3和脚本4
table(dcp$deg$change)
head(dcp$deg)
dcp$plots
library(ggplot2)
ggsave("deg.png",width = 15,height = 5)
> #差异分析和它的可视化
> dcp = get_deg_all(exp,Group,ids,entriz = F)
579 down genes,624 up genes
> table(dcp$deg$change)down stable     up 579  19621    624 
> head(dcp$deg)logFC  AveExpr        t                          P.Value
1 6.270309 8.436140 45.39552 0.000000000000000000000009106509
2 3.943359 7.351799 35.25755 0.000000000000000000002600407155
3 2.318498 6.631187 32.33367 0.000000000000000000017855505829
4 4.905540 8.140399 30.78154 0.000000000000000000053206731115
5 4.878195 6.815838 29.02740 0.000000000000000000195062651758
6 4.106051 9.045949 28.82714 0.000000000000000000227319306208adj.P.Val        B    probe_id    symbol change
1 0.0000000000000000002489492 41.58809   202992_at        C7     up
2 0.0000000000000000473924204 37.34483   204971_at      CSTA     up
3 0.0000000000000001952499562 35.77275   228564_at LINC01116     up
4 0.0000000000000004155825748 34.85700 208131_s_at     PTGIS     up
5 0.0000000000000013331313106 33.74579   210002_at     GATA6     up
6 0.0000000000000013809647852 33.61341   212190_at  SERPINE2     up
> dcp$plots
> library(ggplot2)

在这里插入图片描述

```{r}
#富集分析
deg = get_deg(exp,Group,ids)
genes = deg$ENTREZID[deg$change!="stable"]  #取出差异基因ENTREZID
head(genes)
#有可能因为网络问题报错
g = quick_enrich(genes,destdir = tempdir())  #quick_enrich快速的富集分析
names(g)     #元素的名字
g[[1]][1:4,1:4]
library(patchwork)
g[[3]]+g[[4]]
ggsave("enrich.png",width = 12,height = 7)

在这里插入图片描述

多分组数据分析流程

R包需要自己安装哦。如果不会安装,建议先学习R语言基础,不要直接上手实战。另外,学习本篇需要建立在tinyarray基本使用会了的基础上,不会的话先看复杂分析这里的第一个文件夹。

1.获取数据

rm(list = ls())
#打破下载时间的限制,改前60秒,改后10w秒
options(timeout = 100000) 
options(scipen = 20)#不要以科学计数法表示library(tinyarray)
packageVersion("tinyarray")
## [1] '2.3.3'
library(stringr)
gse = "GSE474"
geo = geo_download(gse)
exp = geo$exp
range(exp)
## [1]     0.050827 35799.757813
exp = log2(exp+1)
boxplot(exp,las = 2)
pd = geo$pd
gpl_number = geo$gpl
#获取数据和检查

2.生成分组向量与探针注释

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何高效安全的开展HPC数据传输,保护数据安全?

高性能计算&#xff08;HPC&#xff09;在多个行业和领域中都有广泛的应用&#xff0c;像科学研究机构、芯片IC设计企业、金融、生物制药、能源、航天航空等。HPC&#xff08;高性能计算&#xff09;环境中的数据传输是一个关键环节&#xff0c;它涉及到将数据快速、安全地在不…

【嵌入式操作系统(Linux篇)】实验期末复习(1)

以下是关于嵌入式操作系统&#xff08;Linux篇&#xff09;的实验汇总&#xff0c;大概率都是会考的 特别是shell程序和文件IO的操作 嵌入式操作系统实验小结—涉及期末大题 &#xff08;一&#xff09;Linux操作系统的使用实验 1、认识Linux操作系统的目录结构 请进入自己…

代理IP如何助力旅游信息聚合?

在数字化时代&#xff0c;旅游信息聚合对于提升服务质量、优化用户体验起着至关重要的作用。随着在线旅游预订的普及&#xff0c;旅游信息的采集、整合和呈现成为了一个复杂而关键的过程。在这个过程中&#xff0c;代理IP技术以其独特的优势&#xff0c;为旅游信息聚合提供了强…

APP项目测试 之 开发模型和发布

项目客户端一般分为&#xff1a;浏览器端和APP端 APP端分为&#xff1a;手机端&#xff08;安装在手机上的软件&#xff09;和PC端&#xff08;安装在电脑上的软件&#xff09; 1.开发模型 项目迭代速度不同&#xff1a;开发模型不一样 传统行业&#xff1a;瀑布模型 互联网行业…

[数据集][目标检测]水面垃圾水面漂浮物检测数据集VOC+YOLO格式3749张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3749 标注数量(xml文件个数)&#xff1a;3749 标注数量(txt文件个数)&#xff1a;3749 标注…

vue2axios的使用

1.安装axios npm i axios 2.配置代理服务器 1.在config.js中配置单个代理服务器 // 开启代理服务器 需要重新启动项目devServer: {proxy: http://localhost:5000}配置简单&#xff0c;请求资源时直接发给前端&#xff08;8080&#xff09;即可&#xff1b;但不能配置多个代理…

ORB-SLAM2同OpenMVS实现三维重建

ORB-SLAM2 位姿导出 Note: 为与OpenMVS进行对接本次进对ORB-SLAM2进行部分修改&#xff0c;使之可以为 OpenMVS提供稀疏点云、关键帧的位姿、内参&#xff0c;以及稀疏点云在各个View 中的可见性。 主要更改如下 . 在Map文件下增添如下函数 public: void Save(const string &a…

iOS shouldRecognizeSimultaneouslyWithGestureRecognizer 调用机制探索

shouldRecognizeSimultaneouslyWithGestureRecognizer 经常会看到&#xff0c;但是一直没有弄清楚其中的原理和运行机制&#xff0c;今天专门研究下 其运行规律 我们准备三个视图&#xff0c;如下&#xff0c;红色的是绿色视图的父视图&#xff0c;绿色视图 是蓝色视图的父视图…

Feign 配置全局日志存入mongo

1、开启feign日志 在application.yml 添加配置 feign:client:config:default:loggerLevel: FULL2、日志实体类 Document(collection "feignLogs") Data public class FeignLog {Idprivate String id;private String method;private String url;private LocalDate…

CTF-PWN-LLVM-【红帽杯-2021 simpleVM】

文章目录 参考检查逆向漏洞思路调试定位到PASS名exp 参考 https://bbs.kanxue.com/thread-274259.htm#msg_header_h2_6 http://www.blackbird.wang/2022/08/30/LLVM-PASS%E7%B1%BBpwn%E9%A2%98%E6%80%BB%E7%BB%93/ 检查 因为是用opt运行&#xff0c;加载动态库VMPASS.so的P…

开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(四)

一、前言 使用 FastAPI 可以帮助我们更简单高效地部署 AI 交互业务。FastAPI 提供了快速构建 API 的能力,开发者可以轻松地定义模型需要的输入和输出格式,并编写好相应的业务逻辑。 FastAPI 的异步高性能架构,可以有效支持大量并发的预测请求,为用户提供流畅的交互体验。此外,F…

基于STM32的智能花园灌溉系统

目录 引言环境准备智能花园灌溉系统基础代码实现&#xff1a;实现智能花园灌溉系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;花园灌溉管理与优化问题解决方案与优化收尾与总结 1. 引言 智能花园灌溉系统通过使用ST…

普元EOS学习笔记-EOS8.3精简版安装

前言 普元EOS是优秀的高低开结合的企业应用软件开发框架。 普元&#xff1a;这是普元公司的名字&#xff0c;普元信息&#xff0c;上市公司哦&#xff0c;这里就不过多安利了。 EOS&#xff1a;普元公司的企业应用开发系统&#xff0c;开发语言是基于Java&#xff0c;技术框…

在 UBUNTU 22.04 上逐步构建 Postal SMTP 服务器

构建 Postal SMTP 服务器来发送批量电子邮件是电子邮件营销人员的不错选择。Postal 功能非常强大&#xff0c;并拥有大量开发人员的支持。它是一个用 JavaScript 和 Ruby 编写的开源邮件服务器脚本。它可用于构建内部 SMTP 服务器&#xff0c;就像 Mailgun、Sendgrid、Mailchim…

LangChain入门学习笔记(七)—— 使用检索提高生成内容质量

大模型训练使用的数据是开放的、广泛的&#xff0c;因此它显得更加的通用。然而在有些应用场景下&#xff0c;用户需要使用自己的数据使得大模型生成的内容更加贴切&#xff0c;也有时候用户的数据是敏感的&#xff0c;无法提供出来给大模型进行通用性的训练。RAG技术就是一种解…

LabVIEW项目外协时选择公司与个人兼职的比较

​在选择LabVIEW项目外协合作伙伴时&#xff0c;外协公司和个人兼职各有优劣。个人兼职成本较低且灵活&#xff0c;但在可靠性、技术覆盖面、资源和风险管理上存在不足。而外协公司拥有专业团队、丰富资源、完善的项目管理和风险控制&#xff0c;尽管成本较高&#xff0c;但能提…

基于单片机火灾自动报警系统设计

摘 要&#xff1a; 我国的火灾自动报警技术已经相对的较为成熟&#xff0c;随着信息技术的发展&#xff0c;网络化、信息化在火灾自动报警器上的应用也越来越多。无线通信的方式使得报警器本身可以方便的应用于大大小小的环境&#xff0c;例如工厂、社区和学校等等。通过对单片…

音频分离人声和伴奏可以实现吗?手机人声分离工具10款无偿分享!

随着科技的飞速发展&#xff0c;音频处理技术已经取得了显著的进步&#xff0c;其中音频分离人声和伴奏已成为现实。这一技术不仅为音乐制作人和音频工程师提供了便利&#xff0c;更为广大音乐爱好者提供了无限的创作可能性。本文将为大家分享10款手机人声分离工具&#xff0c;…

JVM原理(二):JVM之HotSpot虚拟机中对象的创建寻位与定位整体流程

1. 对象的创建 遇到new指令时 当Java虚拟机遇到一个字节码new指令时。 首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否被加载、解析和初始化过。 如果没有&#xff0c;那么必须执行类的加载过程(加载、检查…

npm安装依赖报错——npm ERR gyp verb cli的解决方法

1. 问题描述 1.1 npm安装依赖报错——npm ERR! gyp verb cli npm MARN deprecated axiosQ0.18.1: critical security vuLnerability fixed in v0.21.1. For more information, npm WARN deprecated svg001.3.2: This SVGO version is no Longer supported. upgrade to v2.x.x …