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

War es hilfreich?

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/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top