Pregunta

Tengo un archivo de explosión de salida en formato XML. Es 22 secuencias de consulta con 50 golpes reportados a partir de cada secuencia. Y quiero extraer todos los éxitos 50x22. Este es el código que tengo actualmente, pero sólo extrae los 50 éxitos de la primera consulta.

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()

Alguien tiene alguna sugerencia en cuanto a extraer todos los éxitos? Creo que tengo que usar algo más que las alineaciones. Espero que esto era clara. ¡Gracias!

Jon

¿Fue útil?

Solución

Esto debe recibir todos los registros. La novedad en comparación con el original es la Red

for blast_record in blast_records

que es un lenguaje pitón para iterar a través de los elementos de un objeto "-lista como", tales como los blast_records (control de la documentación del módulo CBIXML mostró que parse () de hecho devuelve un iterador)

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()

Otros consejos

He utilizado este código para extraer todos los resultados

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"

o para menos detalles

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"

He utilizado este sitio

http: //www2.warwick. ac.uk/fac/sci/moac/currentstudents/peter_cock/python/rpsblast/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top