Поработав немного с Bio.SeqIO, я пришел к выводу, что @Bazingaa, вероятно, правильно. Адаптировал ваш код так:
from Bio import SeqIO
fasta=SeqIO.parse("fasta1.fasta","fasta")
seq_dict={}
for record in fasta:
seq_dict[record.id]=record.description
#print (seq_dict)
for line in open("names","r"):
line=line.strip()
print(line)
for cle, desc in seq_dict.items():
print(cle)
print(desc)
Вы, кажется, новичок в Python, поэтому вот что я сделал:
- вместо того, чтобы хранить record.seq, я сохранил record.description
for a, b in <some dictionary>.items()
будет перебирать элементы словаря, возвращая пары ключ-значение в переменные a, b
Надеюсь, это поможет.
Edit:
Вот несколько более "питоническая" версия. Я не очень понимаю, что такое fasta, поэтому я предположил, что вы захотите прочитать строки из имен, взять часть 'tr | кое-что' в качестве идентификаторов (без начального '>') и распечатать те из 'fasta1 .fasta 'если они в именах:
from Bio import SeqIO
fasta = SeqIO.parse("fasta1.fasta","fasta")
# read all the names
with open("names", "r") as f: # this takes care to close the file afterwards
names = [line.strip().lstrip('>') for line in f]
print("Names: ", names)
for record in fasta:
print("Record:", record.id)
if record.id in names:
print("Matching record:", record.id, record.seq, record.description)