ошибка при попытке прочитать .fasta файл в python - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь прочитать файл .fasta как словарь и извлечь заголовок и последовательность отдельно. В файле есть несколько заголовков и последовательностей. Пример ниже.

header= CMP12
sequence=agcgtmmnngucnncttsckkld

, но когда я пытаюсь прочитать файл fasta с помощью функции read_f и проверить его с помощью print (dict.keys ()), я получаю пустой список.

def read_f(fasta):
    '''Read a file from a FASTA format'''

    dictionary = {}
    with open(fasta) as file:
        text = file.readlines()
        print(text)

    name=''
    seq= ''
    #Create blocks of fasta text for each sequence, EXCEPT the last one
    for line in text:
        if line[0]=='>':
            dictionary[name] = seq
            name=line[1:].strip()
            seq=''

        else: seq = seq + line.strip()
    yield name,seq


fasta= ("sample.prot.fasta")
dict = read_f(fasta)

print(dict.keys())

это ошибка, которую я получаю:

'generator' object has no attribute 'keys'

1 Ответ

2 голосов
/ 08 октября 2019

Использование ключевого слова yield подразумевает, что при вызове функции read_fasta функция не выполняется. Вместо этого возвращается генератор, и вы должны выполнить итерацию этого генератора, чтобы получить элементы, которые возвращает функция.
В конкретных терминах замена dict = read_fasta(fasta) на dict = read_fasta(*fasta) должна сделать работу (* - это оператор для распаковки).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...