2013-11-27 11 views
9

Ich habe mehrere SNP IDs (d. H., Rs16828074, rs17232800, etc ...), Ich möchte ihre Koordinaten in einem Hg19-Genom von UCSC genome website.Karte SNP IDs zu Genom-Koordinaten

Ich würde lieber R verwenden, um dieses Ziel zu erreichen. Wie geht das?

+0

Können Sie weitere Informationen zur Verfügung stellen? Arbeiten Sie mit FASTA-Dateien? Können Sie nicht einfach eine Mehrfachsequenzausrichtung ausführen? – sreisman

+0

Ich arbeite nicht mit FASTA-Dateien, aber ich kann. Ich glaube, es gibt viele Möglichkeiten, dies zu erreichen, aber ich frage nach dem einfachsten Weg, dies zu tun. Vielen Dank. – user1938809

Antwort

6

Hier ist eine Lösung, die das Paket Bioconductor mit biomaRt. Es ist eine leicht korrigierte und neu formatierte Version des zuvor veröffentlichten Codes.

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 

Benutzer werden aufgefordert, die umfassende biomaRtvignette und experimentieren Sie mit den folgenden biomaRt Funktionen zu lesen:

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

Darf ich fragen filters = "snp_filter" bedeuten? Vielen Dank. – user1938809

+0

Ab Seite 7 der Vignette: "Filter definieren eine Einschränkung der Abfrage. Wenn Sie beispielsweise die Ausgabe auf alle Gene auf dem menschlichen X-Chromosom beschränken möchten, kann der Filter 'chromosom_name' mit dem Wert 'X'" verwendet werden. Ohne Filter würden Sie alle Snps in der ausgewählten Datenbank erhalten. Versuchen Sie den Befehl 'listFilters (snp_mart)', um zu sehen, welche Filter möglich sind. – bdemarest

+0

Ich habe bemerkt, dass dies sehr lange dauert, wenn Sie eine große Anzahl von SNPs haben, z.B. 200.000 ish (sagen wir mit einem Affymetrix 6.0 SNP Array und Wunschpositionen für alle SNPS). Ich frage mich, ob jemand einen schnelleren Weg kennt, dies zu tun. –

4

Verwendung von Bioconductor biomaRt R-Paket.

Dies bietet eine einfache Möglichkeit zum Senden von Abfragen an BioMart, die Informationen über SNPs mit einer RsNumber (d. H. rsid) holt.

z. SNP-Daten für rs16828074 zu importieren (ein rsNumber Sie in der Post aufgeführt), verwenden Sie diese:

Code:

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) 

Lassen Sie mich wissen, wie Sie mit diesem erhalten auf (über Kommentare) da ich in meiner Antwort hier einige grundlegende Codierungs- und Paketimportfähigkeiten voraussetze.

bitte sorgfältig/s:

geht an Jorge Amigo (für seine post in Biostars)

+1

Ich erhalte den folgenden Fehler, wenn ich Ihren Code ausgeführt habe. Fehler in getBM (c ("refsnp_id", "allel", "chr_name", "chrom_start", "chrom_strand",: ) Ungültige Filter: refsnp Bitte verwenden Sie die Funktion 'listFilters', um gültige Filternamen zu erhalten – user1938809

+1

aussehen Bei der Post von @bdemarest schien er vor mir angekommen zu sein ^^, ich werde eine andere Antwort schreiben, basierend auf Perl Programmiersprache, das ist die am meisten empfohlene Sprache für SNP Abfragen Ich glaube –

+1

Du wolltest Dank sagen "Jorge Amigo "nicht" Zach Stednick ". Und wie unterscheidet sich Ihre Post von der angenommenen Antwort von" bdemarest "? – zx8754

6

Via Perl finden Sie es ganz einfach, den Code zu bauen für SNPs abzufragen.

Es gibt ein Webbrowser-GUI-Tool (HERE) zum Erstellen von Perlskripten basierend darauf, welche Datenbank und welches Dataset Sie mit der Biomart-Bibliothek abfragen möchten.

Anleitung

  1. zu http://www.ensembl.org/biomart/martview/ad23fb5685e6aecb59ab12ce73c89731 gehen (für unterstützte Metazoen) oder http://biomart.vectorbase.org/biomart/martview/6e274bc00b3c68a131a6947d02039ade (für aktuelle Vektoren von Malaria, zB A. gambiae)
  2. Wählen Sie die Datenbank und Daten-Set: enter image description here

  3. Klicken Sie auf die Schaltfläche "Perl", um Perl-Code für die Biomart-API-Abfrage zu generieren und kopiere den Code in deinen Perl-Editor - führe ihn mit den SNP rsNumbers deiner Wahl aus.

# 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(); 
#####################################################################