BioPython: extraer los identificadores de secuencia de un archivo de salida explosiva
-
18-09-2019 - |
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
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/