我有几个SNP ID(即rs16828074,rs17232800等等),我想在UCSC genome website的Hg19基因组中找到它们的坐标。
我更希望使用R
来实现这一目标。怎么做?
答案 0 :(得分:7)
以下是使用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
vignette并试用以下biomaRt
函数:
listFilters(snp_mart)
listAttributes(snp_mart)
attributePages(snp_mart)
listDatasets(snp_mart)
listMarts()
答案 1 :(得分:4)
通过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(); #####################################################################
答案 2 :(得分:3)
使用bioconductor的 biomaRt R包。
这提供了一种向BioMart发送查询的简便方法,该查询在给定rsNumber(即rsid)的情况下获取有关SNP的信息。
E.g。要导入 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)
让我知道你如何继续这个(通过评论),因为我在这里的答案中假设了一些基本的编码和包导入能力。
Aknowledgement / s:
转到Jorge Amigo(对于他在Biostars中的post)