문제

XML 형식의 폭발 출력 파일이 있습니다. 각 시퀀스에서 50 개의 히트 가보고 된 22 개의 쿼리 시퀀스입니다. 그리고 나는 모든 50x22 히트를 추출하고 싶습니다. 이것은 내가 현재 가지고있는 코드이지만 첫 번째 쿼리에서 50 번의 히트 만 추출합니다.

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

누군가 모든 히트를 추출하는 제안이 있습니까? 나는 정렬 외에 다른 것을 사용해야한다고 생각합니다. 이것이 분명해지기를 바랍니다. 감사!

도움이 되었습니까?

해결책

이것은 모든 기록을 가져야합니다. 원본과 비교 한 참신은

for blast_record in blast_records

Blast_Records와 같은 "목록과 같은"객체의 항목을 반복하는 파이썬 관용구입니다 (확인 CBIXML 모듈 문서 Parse ()가 실제로 반복자를 반환한다는 것을 보여 주었다)

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

다른 팁

이 코드를 사용하여 모든 결과를 추출했습니다

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"

또는 더 적은 세부 사항

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"

이 사이트를 사용했습니다

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top