gpt4 book ai didi

python - 使用 scikit-bio write 写入多个 fasta 条目

转载 作者:行者123 更新时间:2023-11-30 23:01:49 25 4
gpt4 key购买 nike

我正在尝试使用 scikit-bio 读取 FASTA 文件条目,然后如果满足某些要求,则将某些条目写回另一个文件。我遇到的问题是 .write 方法似乎打开和关闭一个文件,因此每个条目都会覆盖前一个条目。

In [39]: f = 'seqs.fna'
seqs = skbio.io.read(f, format='fasta')
for seq in seqs:
if seq.metadata['id'] in ['47P50SDHBQ1PA_0', '4OZ9UI889OL5V_1', '2EC8VWHQD1LW5_2']:
print('True')
seq.write('foo.txt')

True
True

我希望在这种情况下,两个条目将被写入 foo.txt 但只有最后一个条目存在。如何将所有符合我的标准的序列写入文件?

最佳答案

写入同一个打开的文件而不是指定文件路径:

with open('output.fna', 'w') as output_fh:
for seq in skbio.io.read('seqs.fna', format='fasta'):
if seq.metadata['id'] in ['47P50SDHBQ1PA_0', '4OZ9UI889OL5V_1', '2EC8VWHQD1LW5_2']:
seq.write(output_fh)

或者,您可以使用skbio.io.write来编写序列生成器:

def filtered_seqs():
for seq in skbio.io.read('seqs.fna', format='fasta'):
if seq.metadata['id'] in ['47P50SDHBQ1PA_0', '4OZ9UI889OL5V_1', '2EC8VWHQD1LW5_2']:
yield seq

skbio.io.write(filtered_seqs(), format='fasta', into='output.fna')

关于python - 使用 scikit-bio write 写入多个 fasta 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com