2010-07-07 15 views
6

Wie kann ich genomische Sequenz effizient mit Python holen? Zum Beispiel aus einer .fa-Datei oder einem anderen einfach zu erhaltenden Format? Ich möchte grundsätzlich eine Schnittstelle fetch_seq (chrom, strang, start, end), die die Sequenz [start, end] auf dem angegebenen Chromosom auf dem angegebenen Strang zurückgibt.Genomische Sequenz effizient in Python holen?

Analog gibt es eine programmatische Python-Schnittstelle zum Abrufen von phastCons Scores?

danke.

Antwort

3

Siehe meine Antwort auf Ihre Frage über bei Biostar:

http://biostar.stackexchange.com/questions/1639/getting-genomic-sequences-and-phastcons-scores-using-python-from-ensembl-ucsc

Verwenden SeqIO mit Fasta Dateien und Sie werden für jedes Element Datensatz Objekte in der Datei zurück. Dann können Sie tun:

region = rec.seq[start:end] 

Scheiben herausziehen. Das Schöne an der Verwendung einer Standardbibliothek ist, dass Sie sich keine Gedanken über die Zeilenumbrüche in der ursprünglichen Fasta-Datei machen müssen.

+1

Ich stimme zu, dass dieser Ansatz sehr elegant ist, da Sie eine Standardbibliothek verwenden müssen, aber ich fand sie sehr langsam. Wenn Sie eine Fasta-Datei ohne Zeilenumbrüche annehmen, können Sie einfach die Koordinaten in der Datei "suchen", was meiner Meinung nach viel schneller ist, und Sie müssen nicht alle Fasta-Dateien von jedem Chromosom in den Speicher laden. Gibt es eine Möglichkeit, mit einer Standardbibliothek wie biopython die gleiche Effizienz zu erreichen? Vielen Dank. – user248237dfsf

+0

Es ist nicht ganz klar, wonach Sie suchen, aber ich stimme zu, dass eine benutzerdefinierte Lösung, die auf Ihre spezifischen Dateien zugeschnitten ist, schneller ist als eine allgemeinere Lösung. In der Praxis haben die meisten FASTA-Dateien Zeilenumbrüche und was nicht, also bevorzuge ich es, allgemein zu sein, aber Ihre Erfahrung kann variieren. –

+0

Ich weiß, dass dies ein alter Thread ist, aber ich hoffe, dass jemand anderes es bemerken wird und aktuellere Nachrichten bringt. Samtools (holtools.sourceforge.net) hat eine Funktion namens faidx, mit der Sie genau dies in der Befehlszeile tun können. Pysam (https://github.com/pysam-developers/pysam) umschließt viele der Methoden, aber ich kann die Funktion faidx nicht funktionieren lassen.: P Im schlimmsten Fall kann ich das Befehlszeilentool einpacken, aber ich möchte etwas "native", wenn möglich. –

1

Werfen Sie einen Blick auf biopython, die Unterstützung für mehrere Gensequenzformate hat. Insbesondere hat es Unterstützung für FASTA and GenBank files, um ein paar zu nennen.

+0

Es tut, aber ich kann sehen, es nur unterstützt das Lesen von Datensätzen von FASTA, nicht Abrufen von Sequenzen ... Wenn Sie eine Sequenz (Start, Ende) von FASTA holen wollten, würden Sie benötigen Format ohne neue Zeilen und die richtige Schnittstelle und ich denke nicht, dass BioPython das unterstützt. Vielleicht habe ich etwas verpasst - könnten Sie auf den entsprechenden Dokument verweisen? Vielen Dank! – user248237dfsf

4

Abrufen von Sequenzdaten aus großen menschlichen Chromosoms Dateien können ineffiziente Speicherweise sein Wenn Sie also nach rechnerischer Effizienz suchen, können Sie die Sequenzdaten in eine gepackte binäre Zeichenfolge formatieren und auf der Byteposition suchen. Ich schrieb Routinen, um dies in Perl zu tun (verfügbar here), und Python hat die gleiche pack and unpack routines - so kann es gemacht werden, aber es lohnt sich nur, wenn Sie Probleme mit großen Dateien auf einer begrenzten Maschine laufen. Ansonsten benutze biopython SeqIO

Verwandte Themen