簡體   English   中英

使用scikit-bio write編寫多個fasta條目

[英]Write multiple fasta entries using scikit-bio write

我正在嘗試使用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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM