python - 将 fasta 文件格式读入 python 字典

标签 python

我有一个格式如下的文件:

>seq1
ATGGGTGTGTGTGTG
>seq2
ATGTGTTTGTGTGCTCCTCCTC
>seq3
AACGTCGTGACGGGTGCGTGGTGTGTGTCCAA

我想在 Python 中将此文件作为字典来读取。我知道 BIO-python 函数,但除了完成工作之外,我还想学习 python 脚本。到目前为止我已经尝试过这段代码:

import sys
sequence = ' '
fasta = {}
with open(sys.argv[1]) as file_one:
    file_one_content = file_one.read()
    for line in file_one_content.split("\n"):
        if not line.strip():
            continue
        if line.startswith(">"):
            sequence_name = line.rstrip('\n').replace(">", "")
        else:
            sequence = line.rstrip('\n')
        if sequence_name not in fasta:
            fasta[sequence_name] = []
        fasta[sequence_name].append(sequence)
print fasta

我得到以下输出:

{'seq3': ['ATGTGTTTGTGTGCTCCTCCTC', 'AACGTCGTGACGGGTGCGTGGTGTGTGTCCAA'], 'seq2': ['ATGGGTGTGTGTGTG', 'ATGTGTTTGTGTGCTCCTCCTC'], 'seq1': [' ', 'ATGGGTGTGTGTGTG']}

我期望的输出文件是:

{'seq3':['AACGTCGTGACGGGTGCGTGGTGTGTTCCAA'],'seq2':['ATGTGTTTGTGTGCTCCTCCTC'],'seq1':['ATGGGTGTGTGTGTG']}

我一直在努力理解为什么字典的打印方式有误,但我找不到错误。正如我想学习的那样,如果您能让我知道如何更正代码中的错误,那就太好了。谢谢。

最佳答案

使用 biopython SeqIO 和字典理解:

from Bio import SeqIO
seq_dict = {rec.id : rec.seq for rec in SeqIO.parse("myfile.fasta", "fasta")}

关于python - 将 fasta 文件格式读入 python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29333077/

相关文章:

python - 在 Python 中测试数学表达式的等价性

python - 在for循环中求和绝对值 - python

python - 带有逗号分隔符和引号的 CSV 文件,但不是每行都有

python - 输出层形状中的 Keras 功能 API 错误

python - django-admin-sortable2 不排序 SortableAdminMixin 的顺序

python - 如何迭代 pandas DataFrame 的列并从另一列返回值?

Python GPIO 等待两个按钮中的任何一个被按下

python - Memcached:AWS Elasticache 上的自动发现 python 支持?

python - Spacy NLP 库 : what is maximum reasonable document size

python - 如何在 python 中使用 turtle 模块循环颜色?