Biopython: Extrahieren Sequenz IDs von einer Hochausgabedatei
-
18-09-2019 - |
Frage
Ich habe eine BLAST-Ausgabedatei im XML-Format. Es ist 22 Abfragesequenzen mit 50 Hits aus jeder Sequenz berichtet. Und ich will alle 50x22 Treffer extrahieren. Dies ist der Code, den ich zur Zeit, aber es extrahiert nur die 50 Hits aus der ersten Abfrage.
from Bio.Blast import NCBIXM
blast_records = NCBIXML.parse(result_handle)
blast_record = blast_records.next()
save_file = open("/Users/jonbra/Desktop/my_fasta_seq.fasta", 'w')
for alignment in blast_record.alignments:
for hsp in alignment.hsps:
save_file.write('>%s\n' % (alignment.title,))
save_file.close()
Jemand irgendwelche Vorschläge haben, wie alle Hits zu extrahieren? Ich glaube, ich habe etwas anderes als Ausrichtungen verwenden. Hoffe, das war klar. Vielen Dank!
Jon
Lösung
Dies sollte alle Datensätze erhalten. Die Neuheit im Vergleich mit dem Original ist die
for blast_record in blast_records
das ist ein Python-Idiom durch Elemente in einem "Liste-like" Objekt, wie der blast_records (Überprüfung das CBIXML Modul Dokumentation zeigten, dass Parse () in der Tat einen Iterator zurückgibt)
from Bio.Blast import NCBIXM
blast_records = NCBIXML.parse(result_handle)
save_file = open("/Users/jonbra/Desktop/my_fasta_seq.fasta", 'w')
for blast_record in blast_records:
for alignment in blast_record.alignments:
for hsp in alignment.hsps:
save_file.write('>%s\n' % (alignment.title,))
#here possibly to output something to file, between each blast_record
save_file.close()
Andere Tipps
habe ich diesen Code für Extrakt all Ergebnisse
from Bio.Blast import NCBIXML
for record in NCBIXML.parse(open("rpoD.xml")) :
print "QUERY: %s" % record.query
for align in record.alignments :
print " MATCH: %s..." % align.title[:60]
for hsp in align.hsps :
print " HSP, e=%f, from position %i to %i" \
% (hsp.expect, hsp.query_start, hsp.query_end)
if hsp.align_length < 60 :
print " Query: %s" % hsp.query
print " Match: %s" % hsp.match
print " Sbjct: %s" % hsp.sbjct
else :
print " Query: %s..." % hsp.query[:57]
print " Match: %s..." % hsp.match[:57]
print " Sbjct: %s..." % hsp.sbjct[:57]
print "Done"
oder weniger Details
from Bio.Blast import NCBIXML
for record in NCBIXML.parse(open("NC_003197.xml")) :
#We want to ignore any queries with no search results:
if record.alignments :
print "QUERY: %s..." % record.query[:60]
for align in record.alignments :
for hsp in align.hsps :
print " %s HSP, e=%f, from position %i to %i" \
% (align.hit_id, hsp.expect, hsp.query_start, hsp.query_end)
print "Done"
Ich habe diese Website
http: //www2.warwick. ac.uk/fac/sci/moac/currentstudents/peter_cock/python/rpsblast/