Разбор вывода psiblast с использованием Biopython - PullRequest
1 голос
/ 12 марта 2020

Я просто запустил psiblast в командной строке и сохранил результат в my_output. xml. Сейчас я пытаюсь проанализировать файл xml с помощью Bio python, чтобы я мог перебирать результаты, полученные в каждом раунде псибласта, но это вызывает у меня проблемы. Вот мой код:

from Bio.Blast import NCBIXML

result_handle = open('my_output.xml', 'r')
blast_records = NCBIXML.parse(result_handle)

for blast_record in blast_records:
    print blast_record.rounds

ошибка, которую я получаю:

Traceback (most recent call last):
  File "parse_psiblast_output.py", line 10, in <module>
    print blast_record.rounds
AttributeError: 'Blast' object has no attribute 'rounds'

Что я хочу сделать: для каждой последовательности запросов получить все попадания из последней итерации psiblast для этот запрос.

1 Ответ

1 голос
/ 12 марта 2020

Я собираюсь предположить, что вы пытаетесь анализировать выходные данные из текущих пакетов NCBI Blast +, а не из каких-либо устаревших пакетов Blast (которые уже устарели).

Имея это в виду, вы следует использовать модуль Bio.SearchIO.

from Bio import SearchIO

blast_records = SearchIO.parse('my_output.xml', 'blast-xml')

for blast_record in blast_records:
    print(blast_record.hits)

Также отмечу, что вы, вероятно, используете Python 2.7 из-за отсутствия скобок в операторе print. Вы ДЕЙСТВИТЕЛЬНО должны использовать Python 3+, если это вообще возможно. Bio python отказывается от поддержки Python 2.7 с 2020 года.

...