当我们做的转录组或者芯片的数据是小鼠的时候,对于下游的分析,比如GSEA等分析要对生物学数据库注释,发现绝大部分数据库都是人类的基因名字,这个时候我们需要将小鼠的基因映射到人上,就是找小鼠与人之间的同源基因。有一个取巧的方法是把基因名字修改一下,人的基因名称几乎都是大写,小鼠首字母大写,其他小写。

对于大部分基因来说,直接变换大小写就可以啦。

简单粗暴的方法:

load("K:/BioInfoFiles/hsaGeneInfo.Rdata")#hsaGeneInfo
head(hsaGeneInfo)


library(stringr)
str_to_title(hsaGeneInfo$symbol[1:10])


library(Hmisc)
capitalize(tolower(hsaGeneInfo$symbol[1:10]))

其实有相应的R包(biomaRt)可以进行转换。这里从人到鼠进行转换。

hsa2mus_all <- getLDS(attributes = c("hgnc_symbol"),
                filters = "hgnc_symbol",
                values = hsaGeneInfo$symbol,
                mart = human,
                attributesL = c("mgi_symbol"),
                martL = mouse,uniqueRows = T)
head(hsa2mus_all)
length(hsaGeneInfo$symbol)
nrow(hsa2mus_all)
> head(hsa2mus_all)
  HGNC.symbol MGI.symbol
1      MT-CO1     mt-Co1
2      MT-CO2     mt-Co2
3      MT-ND2     mt-Nd2
4      MT-CO3     mt-Co3
5     MT-ATP8    mt-Atp8
6      MT-ND3     mt-Nd3
> length(hsaGeneInfo$symbol)
[1] 62427
> nrow(hsa2mus_all)
[1] 22616

总共6万多个基因,只有2万多个被映射到小鼠上。这6万多的基因包括了很多假基因。

unique(hsaGeneInfo$gene_type)
hsaGeneInfo$gene_type[match(hsa2mus_all$HGNC.symbol,hsaGeneInfo$symbol)] %>% unique()

只转换一下编码蛋白的基因。

hsa_prot_coding <- hsaGeneInfo$symbol[hsaGeneInfo$gene_type=="protein_coding"]


hsa2mus_protein <- getLDS(attributes = c("hgnc_symbol"),
                      filters = "hgnc_symbol",
                      values = hsa_prot_coding ,
                      mart = human,
                      attributesL = c("mgi_symbol"),
                      martL = mouse,uniqueRows = T)


head(hsa2mus_protein)
length(hsa_prot_coding)
nrow(hsa2mus_protein)

发现基因变多了,多出了1000多个。

> length(hsa_prot_coding)
[1] 20068
> nrow(hsa2mus_protein)
[1] 21167

说明一部分人的编码蛋白基因,一个映射到多个小鼠基因上。

hsa2mus_protein[duplicated(hsa2mus_protein$HGNC.symbol),] %>% head()


可以根据前面的得到的对应关系,进行下游的分析。比如GSEA分析。在MSigDB(Molecular Signatures Database)数据库的全部基因集的下载。

  • http://bioinf.wehi.edu.au/software/MSigDB/human_H_v5p2.rdata

  • http://bioinf.wehi.edu.au/software/MSigDB/mouse_H_v5p2.rdata

加载这些数据集。将ID进行转换。

library(clusterProfiler)
library(org.Hs.eg.db)
library(org.Mm.eg.db)
load("F:/BioInfoStudy/data/genesets/mouse_H_v5p2.rdata")
load("F:/BioInfoStudy/data/genesets/human_H_v5p2.rdata")


MSigDB_hsa_symb <- lapply(Hs.H, function(x){
  bitr(x,
       fromType = "ENTREZID",
       toType = "SYMBOL",
       OrgDb = org.Hs.eg.db)[,2]
})


MSigDB_mus_symb <- lapply(Mm.H, function(x){
  bitr(x,
       fromType = "ENTREZID",
       toType = "SYMBOL",
       OrgDb = org.Mm.eg.db)[,2]
})

找出人和小鼠之间的不是简单改变大小写的基因。

h_m_diff <- lapply(names(MSigDB_hsa_symb), function(x){
  h = MSigDB_hsa_symb[[x]]
  m = toupper(MSigDB_mus_symb[[x]])
  hu = setdiff(h,m)})%>% unlist()

通过前面的方法进行转换。

hsa2mus_diff <- getLDS(attributes = c("hgnc_symbol"),
                          filters = "hgnc_symbol",
                          values = h_m_diff ,
                          mart = human,
                          attributesL = c("mgi_symbol"),
                          martL = mouse,uniqueRows = T)


head(hsa2mus_diff)

的确,这些基因不是简单的大小写转换:

> head(hsa2mus_diff)
  HGNC.symbol MGI.symbol
1      EIF2S3    Eif2s3y
2        H1-6       H1f6
3        H1-2       H1f2
4     SLCO1A2     Gm5724
5     SLCO1A2    Slco1a4
6     SLCO1A2    Slco1a1

参考:

1.人鼠基因转换之首字母大写

2.基于小鼠的基因集数据库资源

3.biomaRt包实现不同物种之间同源基因转换


Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐