У меня небольшая проблема с кодированием в проекте по биоинформатике, над которым я работаю. По сути, моя задача - извлечь последовательности мотивов из базы данных и использовать информацию для аннотирования файла выравнивания последовательностей. Файл выравнивания представляет собой простой текст, поэтому аннотация не будет чем-то сложным, в лучшем случае просто заменяя извлеченные последовательности звездочками в самом файле выравнивания.
У меня есть скрипт, который сканирует файл базы данных, извлекает все нужные мне последовательности и записывает их в выходной файл. Что мне нужно, учитывая запрос, чтобы прочитать эти последовательности и сопоставить их с соответствующими им подстроками в файлах выравнивания ASCII. Наконец, для каждого вхождения последовательности мотивов (подстрока очень большой строки символов) я бы заменил последовательность мотивов XXXXXXX последовательностью звездочек *.
Код, который я использую, выглядит следующим образом (11SGLOBULIN - имя записи белка в базе данных):
motif_file = open('/users/myfolder/final motifs_11SGLOBULIN','r')
align_file = open('/Users/myfolder/alignmentfiles/11sglobulin.seqs', 'w+')
finalmotifs = motif_file.readlines()
seqalign = align_file.readlines()
for line in seqalign:
if motif[i] in seqalign: # I have stored all motifs in a list called "motif"
replace(motif, '*****')
Но вместо замены каждой строки последовательностью звездочек, он удаляет весь файл. Кто-нибудь может понять, почему это происходит?
Я подозреваю, что проблема может заключаться в том факте, что мой файл ASCII - это просто один очень длинный список аминокислот, и Python не может знать, как заменить конкретную подстроку, скрытую в очень длинной строке.