我有几个SNP ID(即 rs16828074、rs17232800 等),我想从UCSC 基因组网站获取它们在 Hg19 基因组中的坐标。
我宁愿使用R
来实现这个目标。怎么做?
我有几个SNP ID(即 rs16828074、rs17232800 等),我想从UCSC 基因组网站获取它们在 Hg19 基因组中的坐标。
我宁愿使用R
来实现这个目标。怎么做?
这是使用 Bioconductor 包的解决方案biomaRt
。它是先前发布的代码的稍微更正和重新格式化的版本。
library(biomaRt) # biomaRt_2.30.0
snp_mart = useMart("ENSEMBL_MART_SNP", dataset="hsapiens_snp")
snp_ids = c("rs16828074", "rs17232800")
snp_attributes = c("refsnp_id", "chr_name", "chrom_start")
snp_locations = getBM(attributes=snp_attributes, filters="snp_filter",
values=snp_ids, mart=snp_mart)
snp_locations
# refsnp_id chr_name chrom_start
# 1 rs16828074 2 232318754
# 2 rs17232800 18 66292259
鼓励用户阅读综合biomaRt
小插图并尝试以下biomaRt
功能:
listFilters(snp_mart)
listAttributes(snp_mart)
attributePages(snp_mart)
listDatasets(snp_mart)
listMarts()
通过 Perl,您会发现构建代码来查询 SNP 非常容易。
有一个 Web 浏览器 GUI 工具 ( HERE ) 用于根据您希望使用 Biomart 库查询的数据库和数据集构建 perl 脚本。
指示
选择数据库和数据集:
单击“perl”按钮生成用于 Biomart API 查询的 perl 代码,然后将代码复制粘贴到您的 perl 编辑器中 - 使用您选择的 SNP rsNumbers 运行它。
# An example script demonstrating the use of BioMart API. use strict; use BioMart::Initializer; use BioMart::Query; use BioMart::QueryRunner; my $confFile = "PATH TO YOUR REGISTRY FILE UNDER biomart-perl/conf/." my $action='cached'; my $initializer = BioMart::Initializer->new('registryFile'=>$confFile,'action'=>$action); my $registry = $initializer->getRegistry; my $query = BioMart::Query->new('registry'=>$registry,'virtualSchemaName'=>'default'); $query->setDataset("hsapiens_snp"); $query->addAttribute("refsnp_id"); $query->addAttribute("refsnp_source"); $query->addAttribute("chr_name"); $query->addAttribute("chrom_start"); $query->formatter("TSV"); my $query_runner = BioMart::QueryRunner->new(); ############################## GET RESULTS ########################## $query_runner->execute($query); $query_runner->printHeader(); $query_runner->printResults(); $query_runner->printFooter(); #####################################################################
使用 bioconductor 的biomaRt R 包。
这提供了一种向BioMart发送查询的简单方法,该查询获取有关给定 rsNumber(即rsid)的 SNP 的信息。
例如,要导入rs16828074(您在帖子中列出的 rsNumber)的 SNP 数据,请使用以下命令:
代码:
library(biomaRt)
snp.id <- 'rs16828074' # an SNP rsNumber like you listed in the post
snp.db <- useMart("snp", dataset="hsapiens_snp") # select your SNP database
# The SNP data file imported from the HUMAN database:
nt.biomart <- getBM(c("refsnp_id","allele","chr_name","chrom_start",
"chrom_strand","associated_gene",
"ensembl_gene_stable_id"),
filters="refsnp",
values=snp.id,
mart=snp.db)
让我知道你是如何处理这个问题的(通过评论),因为我在这里的回答中假设了一些基本的编码和包导入能力。
致谢:
去Jorge Amigo(因为他在 Biostars的职位)