2013-11-27 73 views
9

我有幾個SNP ID(即rs16828074,rs17232800等......),我想要它們在的Hg19基因組中的座標。將SNP ID映射到基因組座標

我寧願使用R來實現此目標。怎麼做?

+0

你能否提供更多信息?你在使用FASTA文件嗎?你不能簡單地運行一個多序列比對嗎? – sreisman

+0

我沒有使用FASTA文件,但我可以。我相信有很多方法可以做到這一點,但我正在問最簡單的方法來做到這一點。謝謝。 – user1938809

回答

6

下面是使用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 

用戶閱讀的綜合biomaRtvignette和實驗以下biomaRt功能:

listFilters(snp_mart) 
listAttributes(snp_mart) 
attributePages(snp_mart) 
listDatasets(snp_mart) 
listMarts() 
+0

我可以問filters =「snp_filter」是什麼意思?謝謝。 – user1938809

+0

從小插曲的第7頁開始:「過濾器定義了對查詢的限制,例如,您想限制輸出到位於人類X染色體上的所有基因,那麼過濾器'chromosome_name'可以與值'X''一起使用。沒有過濾器,你會得到所選數據庫中的所有snps。嘗試使用命令listFilters(snp_mart)來查看可能的過濾器。 – bdemarest

+0

我注意到,如果您有大量的SNP,需要很長時間,例如200,000 ish(例如用Affymetrix 6.0 SNP陣列和所有SNPS的願望位置)。我想知道有沒有人知道更快的方法來做到這一點。 –

4

使用bioconductor's biomaRt R包裝。

這提供了一種簡單的方式將查詢發送到BioMart,其獲取關於給定rsNumber的SNP(即rsid)的信息。

E.g.進口SNP數據rs16828074(你在帖子中列出的rsNumber),使用此:

代碼:

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 /秒:

進入Jorge Amigo(他在Biostars post

+1

我在運行代碼時遇到以下錯誤。錯誤getBM(c(「refsnp_id」,「allele」,「chr_name」,「chrom_start」,「chrom_strand」,: 無效的過濾器:refsnp 請使用函數'listFilters'獲取有效的過濾器名稱 – user1938809

+1

在@bdemarest的帖子中,他似乎在我之前已經到達了那裏^^,我將發佈另一個基於perl編程語言的答案,這是SNP查詢中最推薦的語言,我相信 –

+1

您的意思是說感謝「Jorge Amigo 「不是」Zach Stednick「。你的帖子和」bdemarest「的答案有什麼不同嗎? – zx8754

6

通過Perl中,你會發現它很容易建立代碼來查詢單核苷酸多態性。

有一個Web瀏覽器GUI工具(HERE)用於構建perl腳本,基於哪個數據庫和數據集,您希望使用Biomart庫進行查詢。

說明

  1. 轉到http://www.ensembl.org/biomart/martview/ad23fb5685e6aecb59ab12ce73c89731(支持的後生動物),或http://biomart.vectorbase.org/biomart/martview/6e274bc00b3c68a131a6947d02039ade(最多瘧疾日的載體,例如A. gambiae
  2. 選擇數據庫和數據集:enter image description here

  3. 點擊「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(); 
#####################################################################