不同物种也能合并做生信?给你支个妙招,让数据起死回生!
Hi,大家好,这里是晨曦碎碎念,在这里将记载着晨曦学习路上的一些心得和感悟,也放在这里和大家一起分享~今天我们的主题是——biomaRt包实现不同物种之间同源基因转换
晨曦单细胞数据库系列传送门
说起来很有意思,之所以会想起来学习这里,主要是因为前段时间我和身边同学有了一次争论。
A同学
曦曦,你说小鼠可算是实验动物中最接近人的了,那么人和小鼠之间的同源基因可以如何转换呢?
曦曦
停停,和人最相近的不是猩猩吗?
A同学
。。。。。。。
B同学
晨曦啊,你实验室养猩猩了啊!~
曦曦
(望天状QAQ)那就简单的大小写转换不就好了,毕竟人的Gene symbol基本都是大写,小鼠的基本都是小写~
A同学和B同学
你都说“基本”了,那万一出错了呢?
曦曦
。。。。。。
所以这篇推文应运而生,让我们开始今天的学习吧~
大约有接近80%的小鼠蛋白质在人类基因组中具有严格的1:1种间同源体,其序列同一性通常介于70%-100%。
富集分析因为大多数参考数据集都是人的,所以我们可以通过映射来解释小鼠该基因的功能。
我们这里可以使用biomarRt包把小鼠的gene ID进行同源映射到人的基因上去,进而展开后续的单基因分析。
#安装R包
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("biomaRt")
library(biomaRt)
#流程:
#第一步:明确biomart中哪些数据库可以使用(用listMarts函数)
#第二步:链接到四大数据集中的其中之一(用usemart函数)
#第三步:使用listDatasets函数调取选定的四大数据库之一的子数据库(基因组注释分类)
#第四步:选定需要的基因组注释分类(useDataset()函数)
#第一步:明确biomart中哪些数据库可以使用(用listMarts函数)
#可见该R包管理数据库的形式是层层管理(四大数据库下又包含很多子集)
listMarts()
# biomart version
#1 ENSEMBL_MART_ENSEMBL Ensembl Genes 104
#2 ENSEMBL_MART_MOUSE Mouse strains 104
#3 ENSEMBL_MART_SNP Ensembl Variation 104
#4 ENSEMBL_MART_FUNCGEN Ensembl Regulation 104
#第二步:链接到四大数据集中的其中之一(用usemart函数)
plant = useMart('ensembl')#调取的是四大数据排名第一的
#第三步:使用listDatasets函数展示选定的四大数据库之一的子数据库
listDatasets(plant)#查看大数据库下的子数据库
# dataset
#1 acalliptera_gene_ensembl
#2 acarolinensis_gene_ensembl
#3 acitrinellus_gene_ensembl
#4 amelanoleuca_gene_ensembl
#5 amexicanus_gene_ensembl
#6 anancymaae_gene_ensembl
#7 aocellaris_gene_ensembl
#···
#···
#54 hsapiens_gene_ensembl
#我们后面用到的是hsapiens_gene_ensembl这个数据集。还有小鼠的mmusculus_gene_ensembl数据集
##第四步:选定需要的基因组注释分类(useDataset()函数)
#示例:
useDataset(dataset,mart, verbose = FALSE)
#dataset就是要使用的数据集(使用listDatasets函数)
#mart是使用useMart函数创建的Mart对象(锁定的四大数据库之一)
#实践:
mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
#使用lsitFilters()函数查看可选择的类型,选定要获取的注释类型,以及已知注释的类型
#这里的变量mart必须得选定数据集赋值后才可以运行
listFilters(mart)
# name
#1 chromosome_name
#2 start
#3 end
#4 band_start
#5 band_end
#6 marker_start
上面铺垫结束,我们进行同源基因转换其实也就是这个流程的double版本
#第一步:选择要使用的BioMart 数据库和数据集
human <- useMart('ensembl',dataset = "hsapiens_gene_ensembl")
mouse <- useMart('ensembl',dataset = "mmusculus_gene_ensembl")
#第二步:使用getLDS函数(可以简单理解为同时对选定的多个数据集进行检索)
m2h.g <- getLDS(attributes = c("mgi_symbol"),filters = "mgi_symbol",
values = "Tmx2",mart = mouse,
attributesL = c("hgnc_symbol","chromosome_name","start_position"),
martL = human,uniqueRows = T)
晨曦解读
这里说一下晨曦对于getLDS函数的理解
首先我们拥有一个小鼠A基因,然后我们想要得到其同源映射的人类A基因
第一步:我们需要在小鼠的数据库中去定位这个基因,attributes参数为我们定位后得到的基因类型,因为这里我们只是进行一下定位,并不是想改变其形式,所以依旧是小鼠基因所以我们这里选择mgi_symbol
第二步:filters参数为我们已知的基因类型,也就是小鼠A基因,所以这里也填写mgi_symbol
第三步:定位好以后就是跨数据库进行比对并且获得我们想要的信息,这里attrebutes参数依旧是我们想要的数据类型
这里再解释一下各个参数,当然最准确的还是直接去看帮助文档~
attributes:属性参数;代表着我们所要检索的数据集的属性参数,比如这里我们用的是mgi_symbol,代表的就是小鼠的基因的symbol名字。这里我们可以使用listAttributes函数检索可以使用的属性参数
head(listAttributes(mouse))
namedescription page
1ensembl_gene_id Gene stable ID feature_page
2ensembl_gene_id_version Gene stable ID version feature_page
3ensembl_transcript_id Transcript stable ID feature_page
4ensembl_transcript_id_version Transcript stable ID version feature_page
5ensembl_peptide_id Protein stable ID feature_page
6ensembl_peptide_id_version Protein stable ID version feature_page
filter:过滤器,应在查询中使用的过滤器。这些过滤器将应用于主数据集。可以使用函数listFilters检索可能的过滤器列表
value:输入我们构造的要映射的向量
比如这里可以是一串小鼠相关的基因,以向量的形式组建,这里我们拿一个小鼠基因“Tmx2”举例子
mart :指的是输入数据的mart对象,由于输入数据是小鼠的基因,自然选择的mart对象为小鼠。
attributesL:代表的是我们需要同源转化的另外一个数据库,这里我们自然是由小鼠转为人,选择的就是需要连接到的人的Mart对象,在属性参数里面我们填写了三个参数,分别是gene_symbol ,染色体位置,基因起始位点
useMartL:代表我们需要链接的Mart对象,这里自然就是人的
最后运行得到的结果如下:
晨曦解读
有映射不到或者映射多个是很正常的,取其中结果即可(背景知识有提示)
这里看到确实是大小写发生了变化(Ps:但是不代表所有都是哦,更多的细节小伙伴们可以多多探索哦~)
library(biomaRt)
human = useMart("ensembl", dataset = "hsapiens_gene_ensembl")
mouse = useMart("ensembl", dataset = "mmusculus_gene_ensembl")
genes = c("目标基因")
genes = getLDS(attributes = c("mgi_symbol"), filters = "mgi_symbol",
values = genes ,mart = mouse,
attributesL = c("hgnc_symbol","chromosome_name", "start_position"),
martL = human,
uniqueRows=T)
genes
当然我们每次写这些代码可能会有点麻烦,把代码封装一下,是不是更好呢?
convertMouseGene <- function(x){
library("biomaRt")
human <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")
mouse <- useMart("ensembl", dataset = "mmusculus_gene_ensembl")
genes <- getLDS(attributes = c("mgi_symbol"),
filters = "mgi_symbol",
values = x , mart = mouse,
attributesL = c("hgnc_symbol"),
martL = human, uniqueRows=T)
return(genes)
}
convertMouseGene("Tmx2")
# MGI.symbol HGNC.symbol
#1 Tmx2 TMX2
至此,这期的晨曦碎碎念就结束啦~
Ps:评论区留言感兴趣的内容,如果晨曦能力足够或者感兴趣的话,说不定下一次碎碎念就是你感兴趣的内容哦~
晨曦单细胞笔记系列传送门
晨曦从零开始学画图系列传送门
—
END—
撰文丨晨 曦
排版丨四金兄
主编丨小雪球
欢迎大家关注解螺旋生信频道-挑圈联靠公号~
关键词
数据库
物种
代码
数据集
输入数据
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。