Кажется, проблема в том, что хит отличается от выравнивания . hit - это совпадение последовательности в базе данных, тогда как alignment - это фактическое положение нуклеотидов.Это может происходить несколько раз для одной и той же последовательности в базе данных.
В случае, если вы попытались, xml, который он сохраняет, действительно содержит три элемента в <Hit>
, но последний полученный вами удар имеет seven <Hsp>
записей, которые, по-видимому, являются тем, что вы повторяете с помощью цикла:
for rec in blast_records:
for alignment in rec.alignments:
for hsp in alignment.hsps:
print(rec.query) #DNA ID
Задание alignments=3
вместо попаданий даст вам максимум 3 выравнивания за удар, я думаю.Вы можете указать и то, и другое, если хотите контролировать количество попаданий и количество выравниваний.