将SNP ID映射到基因组坐标

时间:2013-11-27 19:41:57

标签: r bioinformatics bioconductor genetics genome

我有几个SNP ID(即rs16828074,rs17232800等等),我想在UCSC genome website的Hg19基因组中找到它们的坐标。

我更希望使用R来实现这一目标。怎么做?

3 个答案:

答案 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脚本。

<强>说明

  1. 转到http://www.ensembl.org/biomart/martview/ad23fb5685e6aecb59ab12ce73c89731(支持的Metazoans)或http://biomart.vectorbase.org/biomart/martview/6e274bc00b3c68a131a6947d02039ade(最新的疟疾媒介,例如 A. gambiae
  2. 选择数据库和数据集:enter image description here

  3. 单击“perl”按钮生成Biomart API查询的perl代码,并将代码复制粘贴到perl编辑器中 - 使用您选择的SNP rsNumbers运行它。

  4. # 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