【一文就够】查询基因组范围内的所有基因
如果你有一个基因组范围、或一个SNP的位置。怎么快速寻找它附近所有的基因呢?
第一个想法是,在UCSC的基因组浏览器查看,那个我觉得不好。原因一个是要复制、粘贴、点击、调整;另一个是看到了很多基因,还要一个个去点开看,哪些是编码基因,哪些是非编码基因。真的非常低效。
这里介绍一个用R语言查询的方式,需要输入“染色体号”“基因组开始位置”“基因组结束位置”。运行后,可以直接得到所有基因的列表。
如果你愿意尝试其他变量,你能方便的得到更多基因信息。
废话不多说,首先你需要下载R语言,然后运行下面的R语言代码。
```r
library(biomaRt)
# 查看可用的Ensemble版本。
listEnsemblArchives()
# version date url
# [1,] "Ensembl GRCh37" "Feb 2014" "http://grch37.ensembl.org"
# [2,] "Ensembl 92" "Apr 2018" "http://Apr2018.archive.ensembl.org"
# 查看基因组b37版本可用的marts。
listMarts(host="http://grch37.ensembl.org")
mart.gene <- useMart(host="http://grch37.ensembl.org",
biomart = "ENSEMBL_MART_ENSEMBL")
# 查看可用的dataset。
listDatasets(mart = mart.gene)
mart.gene.hs <- useMart(host="http://grch37.ensembl.org",
biomart = "ENSEMBL_MART_ENSEMBL",
dataset = "hsapiens_gene_ensembl")
# 查看可用的Gene信息
attr <- listAttributes(mart.gene.hs)
setwd("../Desktop/")
# write.csv(attr,"attr.csv")
# 查看可用的filters信息
filters <- listFilters(mart = mart.gene.hs)
# write.csv(filters,"filters.csv")
# 查询基因组区域内的所有基因。
res <- getBM(attributes = c( "chromosome_name","start_position",
"end_position","hgnc_symbol","gene_biotype"),
filters = list(chromosome_name=8,
start=c(19393206),
end=c(21393206)),
mart = mart.gene.hs)
res <- dplyr::filter(res,grepl("[A-Za-z0-9_]",hgnc_symbol))
res.code <- filter(res,gene_biotype == "protein_coding")
```
上面代码的结果展示(res.code的内容)如下:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~
另外,我分享了一个目录:版内《生信问题及解决方案》目录汇总
旨在 完善知识体系、方便查询所需代码、减少搜索的时间;
~~~喜欢我的分享,请用丁当支持我吧!~~~~
如你想我发布其他的生信经验分享,可以私信留言给我,
我会不定期挑选一些发布在坛子里
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
















































