我有一个格式如下的文件:
>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/