私は遺伝子IDに従って複数のファイルに分割したいと思う大きなfastaファイルを作成しています。私はbiopythonチュートリアルから上記のスクリプトを使用しようとしています:それはそれらに93のシーケンスでファイルを分割ん大きなfastaファイルを複数のファイルに分割するためのbiopythonスクリプト
def batch_iterator(iterator, batch_size):
"""Returns lists of length batch_size.
This can be used on any iterator, for example to batch up
SeqRecord objects from Bio.SeqIO.parse(...), or to batch
Alignment objects from Bio.AlignIO.parse(...), or simply
lines from a file handle.
This is a generator function, and it returns lists of the
entries from the supplied iterator. Each list will have
batch_size entries, although the final list may be shorter.
"""
entry = True # Make sure we loop once
while entry:
batch = []
while len(batch) < batch_size:
try:
entry = iterator.next()
except StopIteration:
entry = None
if entry is None:
# End of file
break
batch.append(entry)
if batch:
yield batch
record_iter=SeqIO.parse(open('/path/sorted_sequences.fa'), 'fasta')
for i, batch in enumerate (batch_iterator(record_iter, 93)):
filename='gene_%i.fasta' % (i + 1)
with open('/path/files/' + filename, 'w') as ouput_handle:
count=SeqIO.write(batch, ouput_handle, 'fasta')
print ('Wrote %i records to %s' % (count, filename))
が、それは私がエラーを見ることができない93のグループごとに2つのファイルを提供しますが、私はものがあると思います。 大きなファストファイルを別の方法で分割する別の方法がありますか? おかげで
「93のグループあたり2つのファイルを提供していますか? – rodgdor
スクリプトは重複ファイル、すなわちgene_1を持つ93個の遺伝子の2つのファイルを生成することを示します。そして私は、それぞれの93があることを知っています。だから、最初の93シーケンスファイルを作成した後、次の93に移動する必要がありますが、私はそういうわけではありません。 – Ana