2016-05-18 3 views
1

Ich habe Schwierigkeiten beim Herunterladen von Fasta-Sequenzen für mehrere Zugriffsnummern in einer Textdatei mit einem Python-Skript. Ich kann für einen einzigen Zugangsnummer dieses OK tun z:Wie kann ich entsprechende Fasta-Proteinsequenzen aus ncbi aus mehreren Accession-Nummern in Python zurückgeben?

import sys 
from Bio import Entrez 
Entrez.email = "[email protected]" 
handle = Entrez.efetch(db="protein", id="EAS03220", rettype="fasta") 
print(handle.read()) 

Aber wenn ich versuche, es als eine Liste, eine Datei zu geben (siehe unten), dann bekomme ich Fehler.

import sys 
from Bio import Entrez 
Entrez.email = "[email protected]"  

accessions = [] 
for line in open(sys.argv[1],"r"): 
    line = line.strip() 
    accessions.append(line) 

for num in accessions: 
    handle = Entrez.efetch(db="protein", id="num", rettype="fasta") 
    print(handle.read()) 

hier und Beispiel dafür, wie meine Eingabedatei aussieht:

EAS06781 
EAS07087 
EAS07113 
EAS07200 
EAS07226 
EAS07230 

Ich bin sicher, dass die Lösung einfach ist, aber ich habe gelesen, Foren, ncbi Hilfe-Seiten und Python für Anfänger Bücher für Stunden und nirgendwohin! Danke im Voraus.

Antwort

2

Sie übergeben num als string, nicht als Variable. Versuchen Sie, die Anführungszeichen zu entfernen, und es sollte funktionieren.

handle = Entrez.efetch(db="protein", id=num, rettype="fasta") 
+0

Vielen Dank! Wusste, es wäre ein einfacher Fehler. – wl284

Verwandte Themen