@agpwhy
2021-10-08T06:45:39.000000Z
字数 1068
阅读 448
正好国庆前面有同学问我怎么对一个鼠样本,一个人样本的基因取交集。这个问题如果不用自己造轮子,直接调用工具还是比较方便的。
谢谢健明老师给的作业,也参考了其他同学的思路。
library(biomaRt)
首先下载数据。就常用的人的,小鼠的,大鼠的参考如下。
human=useMart("ensembl",dataset="hsapiens_gene_ensembl")
mouse=useMart("ensembl",dataset="mmusculus_gene_ensembl")
rat=useMart("ensembl",dataset="rnorvegicus_gene_ensembl")
使用的数据是GSE9397的一个芯片数据(这个怎么从GEO下载变成矩阵,有机会可以讲一期,也是有朋友所托,我下载下来转化成了表达矩阵)
总之现在你有了一个包含基因名的表达矩阵。
genehuman2mouse = getLDS(
attributes = c("hgnc_symbol"),
filters = "hgnc_symbol",
values = test$V1,
mart = human,
attributesL = c("mgi_symbol"),
martL = mouse,
uniqueRows = T
)
有了自己封装的函数,从人转化为鼠就这么简单
gaoji <- Human2Mouse(test$V1)
要取交集就加一句
intersect(genehuman2mouse$MGI.symbol,mousegene)
轻轻松松就把同源基因转化做好啦(其实不这么做,单纯转化大小写也不是不行,就是准确率不能到100%)
Human2Mouse<-function(x){
gs=getLDS(attributes=c("hgnc_symbol"),filters="hgnc_symbol",
values=x,mart=human, attributesL=c("mgi_symbol"),martL=mouse,uniqueRows=T)
return(gs)
}
自己写一个函数封装还是可以的
gaoji <- Human2Mouse(test$V1)
看下和刚刚做的是否效果一样
结果是完全一致
不过聪明的小伙伴已经发现了,转换后的基因列表有12477个,转换前的只有12403个,那多出来的这些是从哪里来的呢?
这个问题就留给屏幕前你那聪明的小脑袋啦。如果实在连百搜索引擎都找不到答案,可以提升下搜索的方法,再不行可以私信询问。