Ваш вопрос и код вводят в заблуждение относительно того, что вы хотите - вы, кажется, хотите выводить в файл, а также в список для использования в более поздней функции.Основная проблема, которую я вижу в вашем коде: rna_x
- это две разные переменные с одинаковыми именами!Но есть и другие проблемы.Давайте разберем несколько примеров:
Разбор входного файла FASTA, генерирование выходного файла FASTA только с первой последовательностью из входного файла:
def unam_base_plot(in_file, out_file):
for record in SeqIO.parse(in_file, 'fasta'):
SeqIO.write(record, out_file, 'fasta')
break # we only want the first one!
Относительно вашего примера ввода, выводэтой подпрограммы будет файл, содержащий:
>seq_000
RSKKCMWRMRRAACKRWUSRSWSK
Если мы хотим просто данные последовательности в выводе, а не заголовок FASTA, мы изменим строку:
SeqIO.write(record, out_file, 'fasta')
вместо:
with open(out_file, 'w') as output:
print(record.seq, file=output)
Поскольку мы больше не создаем файл FASTA, а просто текст.Если вместо этого мы не хотим записывать выходные данные в файл, а просто сохраним первую последовательность в файле FASTA в глобальном списке:
rna_x = []
def unam_base_plot(in_file):
for record in SeqIO.parse(in_file, 'fasta'):
rna_x.append(record.seq)
break # we only want the first one!
Учитывая ваш пример ввода, наш глобальный список rna_x
будеттеперь содержит один элемент:
[Seq('RSKKCMWRMRRAACKRWUSRSWSK', SingleLetterAlphabet())]
после вызова, но в конечном итоге будет содержать другие, если функция будет вызываться для большего количества входных файлов.Если нам нужна только необработанная последовательность в нашем глобальном списке, а не объект последовательности BioPython, мы можем изменить строку:
rna_x.append(record.seq)
на вместо:
rna_x.append(str(record.seq))
Тогда rna_x
будет содержать:
['RSKKCMWRMRRAACKRWUSRSWSK']