Vom biopython Modul für BLAST:
http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc90
Es scheint, dass Sie in diesem biopython BLAST korrekt sind nicht SeqIO Objekt unterstützen oder biologische Sequenz als Parameter für BLAST-Funktionsaufruf, oder wie Sie mit subprocess.call()
der BLAST-Binärdatei durchführen. Der einzige akzeptierte Eingabesequenzparameter ist ein Dateiname. Aus dem Tutorial:
>>> from Bio.Blast.Applications import NcbiblastxCommandline
>>> help(NcbiblastxCommandline)
...
>>> blastx_cline = NcbiblastxCommandline(query="opuntia.fasta", db="nr", evalue=0.001,
... outfmt=5, out="opuntia.xml")
>>> blastx_cline
NcbiblastxCommandline(cmd='blastx', out='opuntia.xml', outfmt=5, query='opuntia.fasta',
db='nr', evalue=0.001)
>>> print(blastx_cline)
blastx -out opuntia.xml -outfmt 5 -query opuntia.fasta -db nr -evalue 0.001
>>> stdout, stderr = blastx_cline()
So ist Ihre einzige Option, die tatsächliche FASTA-Datei als Eingabe zu verwenden. Wenn Sie jeweils eine Sequenz abfragen möchten, müssen Sie jede Sequenz in einer Datei speichern. Ich würde dies jedoch empfehlen, es sei denn, Sie haben einen Grund dazu. Ich denke, BLAST könnte schneller ausführen, wenn alle Abfrage-Sequenzen in der gleichen Datei sind. Auch können Sie den resultierenden BLAST-Ausgang mit biopython lesen über die Ergebnisse für jede Abfrage iterieren finden Sie unter:
http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc92
Beispiel aus dem obigen Link genommen:
Wenn Sie stattdessen BLASEN eine andere Art und Weise laufen, und hat den BLAST-Ausgang (im XML-Format) in der Datei my_blast.xml, alles, was Sie tun müssen, ist die Datei zum Lesen zu öffnen:
>>> result_handle = open("my_blast.xml")
>>> from Bio.Blast import NCBIXML
>>> blast_record = NCBIXML.read(result_handle)
oder, wenn Sie viele Ergebnisse haben (dh mehrere Abfrage Sequenzen):
>>> from Bio.Blast import NCBIXML
>>> blast_records = NCBIXML.parse(result_handle)
Genau wie Bio.SeqIO und Bio.AlignIO (siehe Kapitel 5 und 6), haben wir ein Paar von Eingabefunktionen, lesen und analysieren, wo Lese für ist, wenn Sie genau ein Objekt haben, und Parse ist ein Iterator für den Fall, dass Sie viele Objekte haben können - aber anstatt SeqRecord- oder MultipleSeqAlignment-Objekte zu erhalten, erhalten wir BLAST-Record-Objekte.
Um mit der Situation umgehen zu können, in der die BLAST-Datei möglicherweise sehr groß ist und Tausende von Ergebnissen enthält, gibt NCBIXML.parse() einen Iterator zurück.Im Klartext, ermöglicht ein Iterator Sie durch die BLAST-Ausgabe zu dem Schritt Aufzeichnungen eines für jedes BLAST Suchergebnis durch einen BLAST Abrufen:
>>> from Bio.Blast import NCBIXML
>>> blast_records = NCBIXML.parse(result_handle)
>>> blast_record = next(blast_records)
# ... do something with blast_record
>>> blast_record = next(blast_records)
# ... do something with blast_record
>>> blast_record = next(blast_records)
# ... do something with blast_record
>>> blast_record = next(blast_records)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
# No further records