Я пытаюсь реализовать небольшой скрипт, чтобы автоматизировать локальное выравнивание взрыва. Я запускал команды в терминале, и он отлично работает. Однако, когда я пытаюсь автоматизировать это, у меня появляется сообщение типа: Пустой файл XML. Должны ли мы реализовать «системное» время ожидания, чтобы файл мог быть записан, или я сделал что-то не так?
Код :
#sequence identifier as key, sequence as value.
for element in dictionnaryOfSequence:
#I make a little temporary fasta file because the blast command need a fasta file as input.
out_fasta = open("tmp.fasta", 'w')
query = ">" + element + "\n" + str(dictionnary[element])
out_fasta.write(query) # And I have this file with my sequence correctly filled
OUT_FASTA.CLOSE() # EDIT : It was out of my loop....
#Now the blast command, which works well in the terminal, I have my tmp.xml file well filled.
os.system("blastn -db reads.fasta -query tmp.fasta -out tmp.xml -outfmt 5 -max_target_seqs 5000")
#Parsing of the xml file.
handle = open("tmp.xml", 'r')
blast_records = NCBIXML.read(handle)
print blast_records
У меня ошибка: ваш файл XML был пуст, а объект blast_records не существует. Я что-то не так сделал с ручками?
Я принимаю все советы. Большое спасибо за ваши идеи и помощь.
РЕДАКТИРОВАТЬ: Проблема решена, извините за бесполезный вопрос. Я ошибся с дескриптором и не открыл файл в нужном месте. То же самое и с закрытием. Извините.