RNA-seq 详细教程:注释(15)

news2024/11/19 4:25:37

学习内容

  1. 了解可用的基因组注释数据库和存储信息的不同类型
  2. 比较和对比可用于基因组注释数据库的工具
  3. 应用各种 R 包检索基因组注释

基因组注释

对二代测序结果的分析需要将基因、转录本、蛋白质等与功能或调控信息相关联。为了对基因列表进行功能分析,我们通常需要获得与我们希望使用的工具兼容的基因标识符。在这里,我们讨论了您可以获得基因注释信息的方法以及每种方法的一些优缺点。

数据库

我们从存储信息的必要数据库中检索有关过程、途径等(涉及基因的信息)的信息。您选择的数据库将取决于您要获取的信息类型。经常查询的数据库示例包括:

通用数据库

提供有关基因组特征、坐标、同源性、变异信息、表型、蛋白质域/家族信息、相关生物过程/途径、相关 microRNA 等的综合信息:

  • Ensembl (use Ensembl gene IDs)
  • NCBI (use Entrez gene IDs)
  • UCSC
  • EMBL-EBI

特定数据库

提供与特定主题相关的注释:

  • Gene Ontology (GO): 基因本体生物过程、细胞成分和分子功能数据库——基于 Ensembl 或 Entrez 基因 ID 或官方基因符号
  • KEGG: 生物通路数据库——基于 Entrez 基因 ID
  • MSigDB: database of gene sets
  • **Reactome:**生物通路数据库
  • Human Phenotype Ontology: 与人类疾病相关的基因数据库
  • CORUM: 人、小鼠、大鼠的蛋白质复合物数据库

这不是一个详尽的列表,还有许多其他可用的数据库未在此处列出。

基因组

在开始搜索任何这些数据库之前,您应该知道使用了哪个基因组来生成您的基因列表,并确保在功能分析期间使用相同的进行注释。当获得新的基因组时,基因组特征(基因、转录本、外显子等)的名称和/或坐标位置可能会发生变化。因此,关于基因组特征(基因、转录本、外显子等)的注释是特定于基因组构建的,我们需要确保我们的注释是从适当的资源中获得的。

例如,如果我们使用人类基因组的 GRCh38 来量化用于差异表达分析的基因表达,那么我们应该使用相同的基因组 GRCh38 来在基因 ID 之间转换并识别每个基因的注释。

注释工具

在 R 中,有许多流行的包用于基因/转录本级别的注释。这些软件包提供的工具可以获取您提供的基因列表,并使用上面列出的一个或多个数据库检索每个基因的信息。

注释工具:用于访问/查询来自特定数据库的注释

工具描述优点缺点
org.Xx.eg.db查询目标生物的基因特征信息基因ID转换、生物型和坐标信息只有最新的基因组可用
EnsDb.Xx.vxx直接从 Ensembl API 获取的转录本和基因级信息(类似于 TxDb,但具有过滤能力并由 Ensembl 版本进行版本控制)易于提取特征,直接过滤不是最新的注解,比一些包更难用
TxDb.Xx.UCSC.hgxx.knownGene用于转录本和基因水平信息的 UCSC 数据库,或者可以使用 GenomicFeatures 包从 SQLite 数据库文件创建自己的 TxDb特征信息,简单函数提取特征只有当前和最近的基因组可用——可以创建你自己的
annotables可用于人类和模式生物的基因级特征信息超级快速和简单的基因 ID 转换、生物型和坐标信息静态资源,不定期更新
biomaRtEnsembl BioMart 在线工具的 R 包版本所有可用的 Ensembl 数据库信息,Ensembl 上的所有生物,信息丰富

查询工具

接口工具:用于访问/查询来自多个不同注释源的注释

  • AnnotationDbi:查询 OrgDb、TxDb、Go.db、EnsDb 和 BioMart 注释。
  • AnnotationHub:查询大量全基因组资源,包括ENSEMBL、UCSC、ENCODE、Broad Institute、KEGG、NIH Pathway Interaction Database等。

AnnotationDbi

AnnotationDbi 是一个 R 包,它提供了一个接口,用于连接和查询使用 SQLite 数据存储的各种注释数据库。AnnotationDbi 包可以查询 OrgDb、TxDb、EnsDb、Go.db 和 BioMart 注释。从这些数据库中提取数据时,可以参考文档。

虽然 AnnotationDbi 是一个流行的工具,但我们不会通过代码来使用这个包。但是,如果您对更多细节感兴趣,我们在此处提供了材料链接[1]以及使用我们当前数据集的示例。

AnnotationHub

AnnotationHub 是访问基因组数据或查询大量全基因组资源的绝佳资源,包括 ENSEMBL、UCSC、ENCODE、Broad Institute、KEGG、NIH Pathway Interaction Database 等。所有这些信息都已存储并可通过直接连接轻松访问数据库。

要开始使用 AnnotationHub,我们首先加载库并连接到数据库:

# Load libraries
library(AnnotationHub)
library(ensembldb)

# Connect to AnnotationHub
ah <- AnnotationHub()

要查看存储在我们数据库中的信息类型,我们只需键入对象的名称:

# Explore the AnnotationHub object
ah

使用输出,您可以了解可以在 AnnotationHub 对象中查询的信息:

alt

请注意有关使用对象 [[AH2]] 检索记录的注释 - 这将是我们如何从 AnnotationHub 对象中提取单个记录的方法。

如果您想查看有关任何数据类别的更多信息,您也可以提取该信息。例如,如果您想确定所有可用的物种信息,您可以在 AnnotationHub 对象中探索它:

# Explore all species information available
unique(ah$species) %>% View()

除了物种信息外,还有关于数据对象类型和数据提供者的附加信息:

# Explore the types of Data Objects available
unique(ah$rdataclass) %>% View()

# Explore the Data Providers
unique(ah$dataprovider) %>% View()

现在我们知道了 AnnotationHub 可用的信息类型,我们可以使用 query() 函数查询它以获得我们想要的信息。假设我们想返回人类的 Ensembl EnsDb 信息。要返回可用的记录,我们需要使用从 ah 对象输出的术语来提取所需的数据。

# Query AnnotationHub
human_ens <- query(ah, c("Homo sapiens""EnsDb"))

查询检索 EnsDb 对象的所有匹配项,您将看到它们按版本号列出。 GRCh38 的最新版本是 Ensembl98,AnnotationHub 提供了它作为使用选项。但是,如果您查看旧版本的选项,对于智人,它只能追溯到 Ensembl 87。如果您使用的是 GRCh38,这很好,但是如果您使用的是像 hg19/GRCh37 这样的旧基因组构建,您将需要加载 EnsDb 包(如果该版本可用),或者您可能需要使用 ensembldb 构建自己的包。

alt

在我们的例子中,我们正在寻找最新的 Ensembl 版本,以便注释是最新的。要从 AnnotationHub 中提取此信息,我们可以使用 AnnotationHub ID 对对象进行子集化:

# Extract annotations of interest
human_ens <- human_ens[["AH75011"]]

现在我们可以使用 ensembldb 函数来提取基因、转录本或外显子级别的信息。我们对基因级注释感兴趣,因此我们可以按如下方式提取该信息:

# Extract gene-level information
genes(human_ens, return.type = "data.frame") %>% View()

但请注意,获取转录本或外显子级信息同样容易:

# Extract transcript-level information
transcripts(human_ens, return.type = "data.frame") %>% View()

# Extract exon-level information
exons(human_ens, return.type = "data.frame") %>% View()

要使用 AnnotationHub 获取注释数据框,我们将使用 genes() 函数,但只保留选定的列并过滤掉行,以保留与我们的基因标识符相对应的那些在我们的结果文件中:

# Create a gene-level dataframe 
annotations_ahb <- genes(human_ens, return.type = "data.frame")  %>%
  dplyr::select(gene_id, gene_name, entrezid, gene_biotype) %>% 
  dplyr::filter(gene_id %in% res_tableOE_tb$gene)

这个 dataframe 看起来应该没问题,但是我们仔细看一下,我们会注意到包含 Entrez 标识符的列是一个列表,实际上有许多 Ensembl 标识符映射到多个 Entrez 标识符!

# Wait a second, we don't have one-to-one mappings!
class(annotations_ahb$entrezid)
which(map(annotations_ahb$entrezid, length) > 1)

让我们来看看我们的 Ensembl 标识符中有多少具有关联的基因符号,以及其中有多少是唯一的:

which(is.na(annotations_ahb$gene_name)) %>% length()

which(duplicated(annotations_ahb$gene_name)) %>% length()

让我们识别非重复的基因,只保留不重复的基因:

# Determine the indices for the non-duplicated genes
non_duplicates_idx <- which(duplicated(annotations_ahb$gene_name) == FALSE)

# How many rows does annotations_ahb have?
annotations_ahb %>% nrow()

# Return only the non-duplicated genes using indices
annotations_ahb <- annotations_ahb[non_duplicates_idx, ]

# How many rows are we left with after removing?
annotations_ahb %>% nrow()

最后,最好知道有多少 Ensembl 标识符映射到 Entrez 标识符:

# Determine how many of the Entrez column entries are NA
which(is.na(annotations_ahb$entrezid)) %>%  length()

那是我们一半以上的基因!如果我们计划使用 Entrez ID 结果进行下游分析,我们一定要牢记这一点。如果您查看我们返回 NA 的查询中的一些 Ensembl ID,它们会映射到假基因(即 ENSG00000265439)或非编码 RNA(即 ENSG00000265425)。数据库之间的差异(我们可以预期观察到)是由于每个数据库都实现了自己不同的计算方法来生成基因构建。

  • 使用 AnnotationHub 创建我们的 tx2gene 文件

要创建我们的 tx2gene 文件,我们需要结合使用上述方法并将两个数据帧合并在一起。例如:

# Create a transcript dataframe
 txdb <- transcripts(human_ens, return.type = "data.frame") %>%
   dplyr::select(tx_id, gene_id)
 txdb <- txdb[grep("ENST", txdb$tx_id),]
 
 # Create a gene-level dataframe
 genedb <- genes(human_ens, return.type = "data.frame")  %>%
   dplyr::select(gene_id, gene_name)
 
 # Merge the two dataframes together
 annotations <- inner_join(txdb, genedb)

在本课中,我们的重点是使用注释包来提取信息,主要用于我们在下游使用的不同工具的基因 ID 转换。我们提供的许多注释包所包含的信息比我们进行功能分析所需的信息要多得多,我们在这里只是触及了皮毛。很高兴了解我们使用的工具的功能,因此我们鼓励您花一些时间探索这些包以更加熟悉它们。


后面还有两节内容,是功能富集的,我不打算更了,放在文末的链接中,大家自己看吧,主要原因是翻译比较困难,需要更多的先验知识,所以我打算更新Y树的相关课程,或者把蛋白质组学肝完。


欢迎Star -> 学习目录

更多教程 -> 学习目录


参考资料

[1]

AnnotationDbi: https://hbctraining.github.io/DGE_workshop_salmon_online/lessons/AnnotationDbi_lesson.html

本文由 mdnice 多平台发布

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

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

相关文章

哈希冲突概率计算及python仿真

目录 1. 前言 2. 生日问题 3. 哈希冲突问题 4. 简易python仿真 5. 从另一个角度看哈希冲突概率 1. 前言 Hash函数不是计算理论的中基本概念&#xff0c;计算理论中只有单向函数的说法。所谓的单向函数&#xff0c;是一个复杂的定义&#xff0c;严格的定义要参考理论或者密…

老板,明年我用Seata搞定分布式事务管理的规范化建设 | 中篇

辞旧迎新&#xff0c;22年要结束了&#xff0c;明年做什么想好了嘛&#xff1f;要不要用 Seata 搞定公司分布式事务管理的规范化建设&#xff1f; 欢迎关注微信公众号「架构染色」交流和学习 一、背景 在上一篇《明年用Seata搞定分布式事务管理的规范化建设 | 上篇》 中介绍了…

低成本、高效率!华为云桌面助力企业数字化转型

在云计算飞速发展的今天&#xff0c;传统办公设备体积大、能耗高、维护难、更新换代快等问题日益凸显&#xff0c;而基于云计算平台的虚拟办公系统逐渐被业界接受并得到广泛应用。其中&#xff0c;华为云桌面Workspace既满足了企业移动办公、远程办公、安全办公等要求&#xff…

恒业微晶冲刺创业板上市:计划募资8亿元,戴联平为实控人

12月20日&#xff0c;上海恒业微晶材料科技股份有限公司&#xff08;下称“恒业微晶”&#xff09;在深圳证券交易所创业板递交招股书。本次冲刺创业板上市&#xff0c;恒业微晶计划募资8亿元&#xff0c;将用于恒业新型分子筛项目。 据天眼查信息显示&#xff0c;恒业微晶成立…

Servlet中Cookie和Session技术

一、状态管理1.1 现有问题HTTP协议是无状态的&#xff0c;不能保存每次提交的信息如果用户发来一个新的请求&#xff0c;服务器无法知道它是否与上次的请求有联系对于那些需要多次提交数据才能完成的Web操作&#xff0c;比如登录来说&#xff0c;就有问题了。1.2 概念将浏览器与…

牛津大学最新 | LUMix:Mixup改进版,几行代码轻松涨点!

点击下方卡片&#xff0c;关注“自动驾驶之心”公众号ADAS巨卷干货&#xff0c;即可获取点击进入→自动驾驶之心【目标检测】技术交流群后台回复【LUMix】获取论文&#xff01;&#xff01;&#xff01;摘要当使用噪声样本和正则化技术进行训练时&#xff0c;现代深度网络可以更…

云端数据“上榜”了!

背景介绍随着全球特别是北美地区VNF网络应用渐渐地往云上迁移&#xff0c;云环境中更高的性能需求变得越来越迫切。作为一流数据处理中心部门&#xff0c;随着大势所趋&#xff0c;不仅仅专研于裸机的性能数据&#xff0c;也开始关注Intel平台在不同云环境中的性能表现。在DPDK…

外汇天眼:日本央行突然上调收益率目标上限,日元10分钟内涨超2%

12 月 20 日&#xff0c;日本央行公布利率决议&#xff0c;并在货币政策会议上宣布堪称“黑天鹅事件”的重大政策转变。日本央行意外地调整了收益率曲线控制计划&#xff0c;宣布将收益率目标上限从 0.25% 上调至 0.5% 左右&#xff0c;同时又将 1 至 3 月日本国债购买规模提高…

Java当中多态的理解

1. 什么是多态 同一操作&#xff0c;作用于不同的对象&#xff0c;可以有不同的解释&#xff0c;产生不同的执行结果&#xff0c;这就是多态性。 对应到 Java 里就是针对同一个类型的对象&#xff0c;执行同一个方法&#xff0c;会表现出不同的行为。 简单点说: 就是用基类…

<Linux进程信号>——《Linux》

本节重点&#xff1a; 1. 掌握Linux信号的基本概念 2. 掌握信号产生的一般方式 3. 理解信号递达和阻塞的概念&#xff0c;原理。 4. 掌握信号捕捉的一般方式。 5. 重新了解可重入函数的概念。 6. 了解竞态条件的情景和处理方式 7. 了解SIGCHLD信号&#xff0c; 重新编写信号处理…

面试官:Docker 有几种网络模式?5 年工作经验都表示答不上来。。

docker容器网络 Docker在安装后自动提供3种网络&#xff0c;可以使用docker network ls命令查看 [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE cd97bb997b84 bridge bridge l…

第1章 概述

第一章 概述 考试范围&#xff1a; 1.1-1.10 考试内容&#xff1a; 章节后的Review Terms&#xff08;名词基本都在课文中&#xff09; 考试题型&#xff1a; 综合题 Review Terms Database-management system (DBMS) &#xff1a;A collection of interrelated data and a …

信息检索 Information Retrieval

信息检索主要是查找与用户查询相关的文档。 给定&#xff1a;大型静态文档集合 和信息需求&#xff08;基于关键字的查询&#xff09; 任务&#xff1a;查找所有且仅与查询相关的文档 典型的 IR 系统&#xff1a; • 搜索一组摘要 • 搜索报纸文章 • 图书馆搜索 • 搜索网络 …

毕业后,我已经离开机械行业转行码农一年多了......

背景 鄙人本科毕业两年有余&#xff0c;机械工程专业&#xff0c;我已经离开机械行业转行码农一年多了。 如果有正在学习的&#xff0c;退学还是千万不要&#xff0c;不过能换专业就换专业&#xff0c;不能换就往机电一体化靠&#xff0c;加上自学编程&#xff0c;以后做嵌入…

计算机毕设Python+Vue野生动物保护资讯管理系统(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

STM32的ST-link调试下载

调试原理 STM32F-10X使用M3内核&#xff0c;该内核支持复杂的同i傲视操作&#xff0c;硬件调试模块允许在取指令&#xff08;指令单步运行&#xff09;或访问数据&#xff08;数据断电时&#xff09;使得内核停止。在内核停止时&#xff0c;内核状态都可被查询&#xff0c;完成…

范登堡(van den berg)CPT使用记录

前段时间的CPT外业所使用的设备是范登堡的井下式或者说交互式的静力触探仪&#xff08;CPT&#xff09;&#xff0c;型号是WISON-APB&#xff0c;下面是官网提供的照片。根据官网的介绍&#xff0c;它的探测工具分为三种&#xff0c;分别50KN&#xff08;3m&#xff09;、100KN…

KVM部署操作-尚文网络xUP楠哥

~~全文共1250字&#xff0c;阅读需约5分钟。 进Q群11372462&#xff0c;领取专属报名福利! # 安装KVM先决条件 KVM 需要有 CPU 的支持&#xff08;Intel VT 或 AMD SVM&#xff09;&#xff0c;在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持。 基于 Intel 处理器的…

Qt之使用CQU库快速开发统一风格界面

在使用Qt开发时&#xff0c;肯定是想让开发的项目界面统一风格&#xff1b;不希望每个界面都要程序员用代码去修饰美化以及进行事件处理等等&#xff0c;这样非常繁琐&#xff0c;容易出错而且没有格调&#xff1b;所以我就开发一个动态链接库&#xff0c;封装统一的风格界面、…

尚医通-前端Vue学习(九)

&#xff08;1&#xff09;vscode的安装及使用 &#xff08;2&#xff09;前端知识-ES6语法知识点 &#xff08;3&#xff09;Vue-入门 &#xff08;4&#xff09; Vue的生命周期 &#xff08;5&#xff09;Vue-Axios的使用 &#xff08;6&#xff09;ElemmentUI介绍 &…