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.000000000000000000227319306208
                    adj.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.生成分组向量与探针注释

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS机器人虚拟仿真挑战赛持续学习笔记-20240619

cartographer 需要全手工编译……比较麻烦。 如果使用新版ceres-solver&#xff0c;版本2.x&#xff0c;需要修改源码&#xff0c;部分“接口代码”有改动。 稳妥使用ceres-solver-1.13.0&#xff0c;且需要安装abseil-cpp。 验证是否成功&#xff0c;使用roscd或roslaunch…

C语言| 数组元素的删除

同数组元素的插入差不多。 数组元素的插入&#xff0c;是先移动要插入元素位置后面的所有元素&#xff0c;再插入新元素&#xff0c;长度1。 C语言| 数组的插入-CSDN博客 数组元素的删除&#xff0c;是先删除元素&#xff0c;再把后面的元素往前移动一位&#xff0c;而本程序…

三国之家网站的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;论坛管理&#xff0c;公告管理&#xff0c;三国视频管理&#xff0c;基础数据管理&#xff0c;三国图文管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#…

2.树莓派4b+ubuntu18.04(ros版本melodic)+arduino mega自制两轮差速小车,实现建图导航功能

这篇文章介绍arduino使用和安装arduino_bridge 将arduino与树莓派连接 查看arduino的端口号&#xff0c;我们这里查看到的时ttyUSB0 ll /dev/ttyUSB*将当前用户添加进dialout组 sudo usermod -a -G dialout your_user_name然后重启树莓派&#xff0c;然后才能生效 然后如果你…

“Driver not loaded“问题解决方案

这两天又碰到了离谱的&#xff0c;愚蠢的&#xff0c;莫名其妙的&#xff0c;丧尽天良的错误。 之前已经解决过这个问题。这几天又碰上了&#xff0c;明明都已经把相应的dll放到了exe的同级目录&#xff0c;NND还是有问题&#xff01;&#xff01;&#xff01;卡了我一个晚上加…

Linux C/C++ socket函数

目录 socket函数 函数原型 头文件 功能 返回值 参数 错误码 socket函数 函数原型 int socket(int domain, int type, int protocol); 头文件 #include <sys/types.h> #include <sys/socket.h> 功能 创建一个用于通信的端点&#xff0c;并返回一个文件描述符…

tensorRT C++使用pt转engine模型进行推理

目录 1. 前言2. 模型转换3. 修改Binding4. 修改后处理 1. 前言 本文不讲tensorRT的推理流程&#xff0c;因为这种文章很多&#xff0c;这里着重讲从标准yolov5的tensort推理代码&#xff08;模型转pt->wts->engine&#xff09;改造成TPH-yolov5&#xff08;pt->onnx-…

Linux - 探秘 Linux 的 /proc/sys/vm 常见核心配置

文章目录 PreLinux 的 /proc/sys/vm 简述什么是 /proc/sys/vm&#xff1f;主要的配置文件及其用途参数调整对系统的影响dirty_background_ratio 和 dirty_ratioswappinessovercommit_memory 和 overcommit_ratiomin_free_kbytes 实例与使用建议调整 swappiness设置 min_free_kb…

6.XSS-钓鱼攻击展示(存储型xss)

xss钓鱼演示 钓鱼攻击利用页面 D:\phpStudy\WWW\pikachu\pkxss\xfish 修改配置文件里面对应自己的入侵者的IP地址或者域名&#xff0c;对应的路径下的fish.php脚本如下&#xff1a; <?php error_reporting(0); // var_dump($_SERVER); if ((!isset($_SERVER[PHP_AUTH_USE…

分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测&…

嵌入式学习——数据结构(队列)——day50

1. 查找二叉树、搜索二叉树、平衡二叉树 2. 哈希表——人的身份证——哈希函数 3. 哈希冲突、哈希矛盾 4. 哈希代码 4.1 创建哈希表 4.2 5. 算法设计 5.1 正确性 5.2 可读性&#xff08;高内聚、低耦合&#xff09; 5.3 健壮性 5.4 高效率&#xff08;时间复杂度&am…

线程封装,互斥

文章目录 线程封装线程互斥加锁、解锁认识接口解决问题理解锁 线程封装 C/C代码混编引起的问题 此处pthread_create函数要求传入参数为void * func(void * )类型,按理来说ThreadRoutine满足,但是 这是在内类完成封装,所以ThreadRoutine函数实际是两个参数,第一个参数Thread* …

Python | Leetcode Python题解之第174题地下城游戏

题目&#xff1a; 题解&#xff1a; class Solution:def calculateMinimumHP(self, dungeon: List[List[int]]) -> int:n, m len(dungeon), len(dungeon[0])BIG 10**9dp [[BIG] * (m 1) for _ in range(n 1)]dp[n][m - 1] dp[n - 1][m] 1for i in range(n - 1, -1, …

Redis的实战常用一、验证码登录(解决session共享问题)(思路、意识)

一、基于session实现登录功能 第一步&#xff1a;发送验证码&#xff1a; 用户在提交手机号后&#xff0c;会校验手机号是否合法&#xff1a; 如果不合法&#xff0c;则要求用户重新输入手机号如果手机号合法&#xff0c;后台此时生成对应的验证码&#xff0c;同时将验证码进行…

C语言 | Leetcode C语言题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; #define MAXSIZE 769/* 选取一个质数即可 */ typedef struct Node {char string[101];int index;struct Node *next; //保存链表表头 } List;typedef struct {List *hashHead[MAXSIZE];//定义哈希数组的大小 } MyHashMap;List * …

【百问大模型02】一文讲透RAG实战全解析

1.实时性无法更新&#xff0c;知识容易自相矛盾 2.大模型的缺点有哪些&#xff1f; 3.一个人的能力可以分为两种&#xff1a; 1&#xff09;大模型&#xff1a;推理能力&#xff0c;聪明&#xff0c;知识&#xff1b;很聪明但是缺少知识 2&#xff09;知识库&#xff1a;辅…

第一个Flask程序

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 一切准备就绪&#xff0c;现在我们开始编写第一个Flask程序&#xff0c;由于是第一个Flask程序&#xff0c;当然要从最简单的“Hello World&#xff…

打印机状态显示错误是什么原因?这5个有效方法要记好!

打印机是现代办公中不可或缺的设备之一&#xff0c;但在使用过程中&#xff0c;打印机状态显示错误是一个常见的问题。本文将详细探讨打印机状态显示错误的原因及其解决方法。 摘要 打印机状态显示错误的原因及解决方法如下&#xff1a; 1、网络连接问题&#xff1a;原因&…

【python】python基于微博互动数据的用户类型预测(随机森林与支持向量机的比较分析)(源码+数据集+课程论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

皇河将相董事长程灯虎出席第二十四届世纪大采风并获奖

仲夏时节,西子湖畔。第二十四届世纪大采风品牌人物年度盛典于6月16日至17日在杭州东方文化园隆重举行。本届盛典由亿央网、《华夏英才》电视栏目联合多家媒体共同主办,中世采文化发展集团承办,意尔康股份有限公司、宸咏集团协办,汇聚了来自全国政、商、产、学、研、媒等各界代表…