首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用scikit编写多个fasta条目

使用scikit编写多个fasta条目
EN

Stack Overflow用户
提问于 2016-01-13 22:36:20
回答 1查看 262关注 0票数 1

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

代码语言:javascript
复制
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,但是只有最后一个条目存在。如何将符合我的条件的所有序列写入文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-13 22:49:05

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

代码语言:javascript
复制
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编写序列生成器:

代码语言:javascript
复制
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')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34778392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档