ChIP-seq 分析:基因集富集(11)

news2025/7/21 4:35:11

动动发财的小手,点个赞吧!

1. 基因集检测

转录因子或表观遗传标记可能作用于按共同生物学特征(共享生物学功能、RNAseq 实验中的共同调控等)分组的特定基因组。

ChIPseq 分析中的一个常见步骤是测试常见基因集是否富含转录因子结合或表观遗传标记。

精心策划的基因集的来源包括 GO 联盟(基因的功能、生物过程和细胞定位)、REACTOME(生物途径)和 MsigDB(计算和实验衍生)。

2. ChIPseq 的基因集测试

可以对具有与其相关联的峰的基因集执行基因集富集测试。在这个例子中,我们将考虑峰值在基因 TSS 1000bp 以内的基因。

我们不会在测试中直接访问这些数据库库,但会使用广泛使用它们的其他 R/Bioconductor 库。

alt

3. GO 和基因集测试

要在这里执行基因集测试,我们将使用 clusterProfiler 包。clusterProfiler 提供多种富集函数,允许将您的基因列表与已知(例如 GO、KEGG)或自定义基因集进行比较。

在这个例子中,我们使用我们发现与 Myc 峰重叠的所有 TSS 站点。落在 TSS 区域的峰将在我们带注释的 GRanges 对象的注释列中标记为“启动子”。

annotatedPeaksGR[1, ]
annotatedPeaksGR
annotatedPeaksGR

我们可以通过对带注释的 GRanges 进行子集化并从 geneId 列中检索基因名称来提取 TSS 中具有峰的基因的唯一名称。

annotatedPeaksGR_TSS <- annotatedPeaksGR[annotatedPeaksGR$annotation == "Promoter",
    ]
genesWithPeakInTSS <- unique(annotatedPeaksGR_TSS$geneId)
genesWithPeakInTSS[1:2]
genesWithPeakInTSS
genesWithPeakInTSS

接下来,我们可以提取包含在 TxDb 对象中的所有基因,以用作我们用于通路富集的基因域。

allGeneGR <- genes(TxDb.Mmusculus.UCSC.mm10.knownGene)
allGeneGR[1:2, ]
allGeneGR
allGeneGR
allGeneIDs <- allGeneGR$gene_id

一旦我们有了相同格式的基因列表和基因域,我们就可以在 enrichGO 函数中使用它们来执行基因本体分析

对于 ont 参数,我们可以在“BP”、“MF”和“CC”子本体之间进行选择,或者为所有三个选择“ALL”。

library(clusterProfiler)
library(org.Mm.eg.db)
GO_result <- enrichGO(gene = genesWithPeakInTSS, universe = allGeneIDs, OrgDb = org.Mm.eg.db,
    ont = "BP")

我们现在有一个 enrichResult 实例。从这个对象中,我们可以提取最丰富的基因本体类别的数据框。

GO_result_df <- data.frame(GO_result)
GO_result_df[1:5, ]
GO_result_df
GO_result_df

可以使用 enrichplot 包从任何 enrichResult 对象生成网络图。

我们测量各种重要基因集之间的相似性并相应地对它们进行分组。 showCategory 参数指定要显示的顶级基因本体命中数。

library(enrichplot)
GO_result_plot <- pairwise_termsim(GO_result)
emapplot(GO_result_plot, showCategory = 20)
emapplot
emapplot

除了基因本体之外,我们还可以使用 clusterProfiler enricher 函数针对我们作为 gmt 文件导入的自定义基因集测试我们的基因列表。类似于 enrichGO 函数,这将生成一个可用于可视化的 enrichResult 对象。

在这里,我们将使用 msigdbr 包从 MSigDB 获取基因集。我们还可以运行 msigdbr_collections 函数来查看将用于访问基因集的类别和子类别代码。

library(msigdbr)
msigdbr_collections()
msigdbr_collections
msigdbr_collections

从上一张幻灯片的数据框中,我们可以识别我们想要的类别/子类别,并在 msigdbr 函数中使用它们。这里我们将使用“H”来访问 Hallmark 基因集,最后我们需要得到一个数据框,其中第一列包含基因集的名称,第二列包含基因 ID。

library(msigdbr)
msig_t2g <- msigdbr(species = "Mus musculus", category = "H", subcategory = NULL)
msig_t2g <- msig_t2g[, colnames(msig_t2g) %in% c("gs_name""entrez_gene")]
msig_t2g[1:3, ]
msig_t2g
msig_t2g

然后我们运行基因集富集,使用我们创建的术语到基因映射作为 enricher 函数中的 TERM2GENE 参数。

hallmark <- enricher(gene = genesWithPeakInTSS, universe = allGeneIDs, TERM2GENE = msig_t2g)
hallmark_df <- data.frame(hallmark)
hallmark_df[1:3, ]
hallmark_df
hallmark_df

我们在RNAseq课程中了解到了goseq包,这是另一个类似于clusterProfiler的功能标注包,在这里,我们对 MSigDB Hallmark 基因集执行相同的富集测试。

对于 goseq,我们需要所有基因(宇宙)的命名向量,其中 1 或 0 代表基因是否在 TSS 中达到峰值。我们可以简单地使用 as.integer 函数将逻辑向量转换为 1 表示 TRUE 和 0 表示 FALSE。

allGenesForGOseq <- as.integer(allGeneIDs %in% genesWithPeakInTSS)
names(allGenesForGOseq) <- allGeneIDs
allGenesForGOseq[1:3]
allGenesForGOseq
allGenesForGOseq

首先,我们必须使用 nullp 函数构建一个 nullp data.frame 以便在 goseq 中使用,并提供我们的命名向量、要使用的基因组和使用的基因标识符。

nullp 函数试图纠正我们在基因集测试中可能看到的基因长度偏差。也就是说,较长的基因可能有更多机会在其中出现峰值。

library(goseq)
pwf = nullp(allGenesForGOseq, "mm10""knownGene", plot.fit = FALSE)
pwf
pwf

我们可以使用与用于 clusterProfiler 的基因映射相同的术语(尽管它必须从 tibble 转换为 goseq 的数据框)来运行基因集富集测试。

Myc_hallMarks <- goseq(pwf, "mm10""knownGene", gene2cat = data.frame(msig_t2g))
Myc_hallMarks[1:3, ]
Myc_hallMarks
Myc_hallMarks

本文由 mdnice 多平台发布

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

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

相关文章

分布式新闻项目实战 - 13.项目部署_持续集成(Jenkins) ^_^ 完结啦 ~

欲买桂花同载酒&#xff0c;终不似&#xff0c;少年游。 系列文章目录 项目搭建App登录及网关App文章自媒体平台&#xff08;博主后台&#xff09;自媒体文章审核延迟任务kafka及文章上下架App端文章搜索后台系统管理Long类型精度丢失问题定时计算热点文章&#xff08;xxl-Job…

eBay是不是一定要养号?是的

相信每个运营过eBay的用户遇到过这个棘手的问题&#xff0c;eBay个人账户的刊登数量是有限的&#xff0c;尤其是新账户只有5个sku&#xff0c;所以一开始的运营会比较艰难。想要快点走上正轨的话&#xff0c;就一定要去注重这个“养号”。eBay运营模式 1.拍卖 eBay最开始是一个…

Java的算数运算符、关系运算符、逻辑运算符、位运算符

JAVA的运算符&#xff0c;分为四类&#xff1a; 算数运算符、关系运算符、逻辑运算符、位运算符 章节一 算数运算符(7)&#xff1a; 加()、减(-)、乘 (*)、除 (/)、 取余(%)、 加加()、 减减(–)、 章节二 赋值运算符 赋值()、加等()、减等(-)、乘等(*)、除等(/)&#xff0c;取…

LeetCode·每日一题·1096. 花括号展开 II·DFS+HASH

作者&#xff1a;Guang链接&#xff1a;https://leetcode.cn/problems/brace-expansion-ii/solutions/997719/xss1096-hua-gua-hao-zhan-kai-iiby-zgh-by-vumf/来源&#xff1a;力扣&#xff08;LeetCode&#xff09;著作权归作者所有。商业转载请联系作者获得授权&#xff0c;…

项目管理软件中什么是依赖管理,具体有什么作用?

项目管理软件中的依赖管理有什么作用&#xff1f;没有项目任务是孤立存在的。除了第一个项目任务之外&#xff0c;每个任务或活动都以某种方式依赖于其他活动。无论是等待另一个任务的输出还是要释放资源&#xff0c;您都需要在任何项目中管理许多依赖项。依赖管理是管理所有这…

VUE3入门第二篇:安装pnpm

VUE介绍 VUE是一个使用JavaScript编写的框架&#xff0c;所以在开发的时候&#xff0c;我们可以使用Js的包管理工具进行安装/管理Js框架 pnpm介绍 一般情况下&#xff0c;对于我们都会使用npm进行管理&#xff0c;但是使用 npm 时&#xff0c;依赖每次被不同的项目使用&…

C++面向对象编程之一:封装

C面向对象编程三大特性为&#xff1a;封装&#xff0c;继承&#xff0c;多态。C认为万事万物皆为对象&#xff0c;对象有属性和行为。比如&#xff1a;游戏里的地图场景可以看作是长方形对象&#xff0c;属性场景id&#xff0c;有长&#xff0c;有宽&#xff0c;可能有NPC&…

【LeetCode】旋转图像 [M](数组)

48. 旋转图像 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&…

服务搭建篇(七) Elasticsearch单节点部署以及多节点集群部署

1.Elasticsearch Elasticsearch(简称ES) 是一个分布式 , RESTful风格的搜索和数据分析引擎 , 使用java开发并且是当前最流行的开源的企业级搜索引擎&#xff0c;能够达到近实时搜索&#xff0c;稳定&#xff0c;可靠&#xff0c;快速&#xff0c;安装使用方便。 客户端支持Ja…

教你如何搭建店铺—客户管理系统,demo可分享

1、简介1.1、案例简介本文将介绍&#xff0c;如何搭建店铺-客户管理。1.2、应用场景以店铺客户管理为核心&#xff0c;维度数据分析&#xff0c;智能指导门店经营&#xff0c;店铺经营更高效备。2、设置方法2.1、表单搭建1&#xff09;新建表单【客户信息】&#xff0c;字段设置…

Redis6学习笔记

文章目录一、简介1.1 Redis键(key)1.2 字符串(String)1.2.1 简介1.2.2 命令1.2.3 数据结构1.3 列表(List)1.3.1 简介1.3.2 命令1.3.3 数据结构1.4 集合(Set)1.4.1 简介1.4.2 命令1.4.3 数据结构1.5 哈希(Hash)1.5.1 简介1.5.2 命令1.5.3 数据结构1.6 有序集合(Zset)1.6.1 简介1…

通过Debug探索SpringMVC执行过程

文章目录对SpringMVC的理解SpringMVC工作原理SpringMVC工作流程对SpringMVC的理解 MVC&#xff1a;MVC是一种设计模式 MVC的原理图&#xff1a; M-Model 模型&#xff08;完成业务逻辑&#xff1a;有javaBean构成&#xff0c;servicedaoentity&#xff09;V-View 视图&#…

苹果或3月8日开新品发布会是真的吗?

苹果或3月8日开新品发布会是真的吗&#xff1f;都发布什么产品&#xff1f;iPhone14即将推出至少1种新颜色 #iPhone #苹果 苹果怎么又出小屏手机&#xff1f; S1 多好用&#xff0c;单手就能操作。 诶&#xff0c;苹果这么小字都看不清楚&#xff0c;可是这是有 H5 又怎么样…

张云雷再唱《探清水河》,柠檬们热情似火,预约通道都要崩溃了

起德云社的相声演员&#xff0c;很多都是唱歌的高手&#xff0c;比如说“德云一哥”岳云鹏&#xff0c;当然更少不了小辫张云雷。张云雷的成功之处在于&#xff0c;他总能够化腐朽为神奇&#xff0c;让不可能成为可能&#xff0c;这是其他相声演员所不能比拟的。 就拿他的成名曲…

《安富莱嵌入式周报》第305期:超级震撼数码管瀑布,使用OpenAI生成单片机游戏代码的可玩性,120通道逻辑分析仪,复古电子设计,各种运动轨迹函数源码实现

往期周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 说明&#xff1a; 谢谢大家的关注&#xff0c;继续为大家盘点上周精彩内容。 视频版&#xff1a; https://www.bi…

Redis锁与幂等性不得不说的故事

前言&#xff1a; 相信很多小伙伴对缓存锁都不陌生&#xff0c;但是简单的缓存锁想要用好还是需要一些功力。本文总结了笔者多年使用缓存所的一些心得&#xff0c;欢迎交流探讨~ 幂等模型&#xff1a; 幂等场景一般由查重写入两步操作组成&#xff0c;两步操作组成一个最小完…

SpringSecurity支持WebAuthn认证

WebAuthn是无密码身份验证技术&#xff0c;解决了密码泄露的风险&#xff0c;主流的浏览器都支持。有很多开源的类库实现了WebAuthn规范&#xff0c;Java下流行的类库有&#xff1a;webauthn4jjava-webauthn-serververtx-authSpring Security官方暂时未支持WebAuthn&#xff0c…

怎样编写java程序

搭建好了Java开发环境之后&#xff0c;下面就来学习一下如何开发Java程序。为了让初学者更好地完成第一个Java程序&#xff0c;接下来通过几个步骤进行逐一讲解。 1&#xff0e;编写Java源文件 在D盘根目录下新建一个test文件夹&#xff0c;并在该文件夹中新建文本文档&#…

运维自动化之Ansible

一&#xff1a;Ansible的概述ansible的简介Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成&#xff0c;类似于saltstack和Puppet&#xff0c;但是有一个不同和优点是我们不需要在节点中安装任何客户端。它使用SSH来和节点进行通信。Ansible基于 P…

【C++】Clang-Format:代码自动格式化(看这一篇就够了)

文章目录Clang-format格式化C代码1.引言&安装1.1引言1.2 安装2. 配置字解释2.1 language 编程语言2.2 BaseOnStyle 基础风格2.3 AccessModifierOffset 访问性修饰符偏移2.4 AlignAfterOpenBracket 开括号后的对齐2.5 AlignArrayOfStructures 对齐结构体数组2.6 AlignConsec…