2017-09-25 93 views
0

我有以下格式的小FASTA文件:從FASTA文件刪除第一條記錄在Python

>gene_1 + other data 
seq 1 
>gene_1 + other data 
seq2 
>gene_1 + other data 
seq3 

我想刪除的文件的第一個元素。這是一個龐大的Python腳本的一部分,一旦我已經使用該seq,並提取了它的有趣部分,我想從文件中刪除它。最終,文件將被清空,因此我可以從文件夾中刪除它。 因爲我一直在使用Biopython,所以我試圖查看是否可以在Biopython中找到一個函數,但是我找不到有關如何從fasta文件中刪除記錄的任何提示。由於SeqIO有一個列表,我嘗試了list.remove(list[0])方法,但它不起作用。對此有何想法?我遇到某人要求我發佈劇本,劇本約200行。 謝謝。

回答

0

這裏的東西簡單,讓你開始:

import sys 
from Bio import SeqIO 

filename = sys.argv[1] 

sequences = [] 

for not_first, record in enumerate(SeqIO.parse(filename, 'fasta')): 
    if not_first: 
     sequences.append(record) 

SeqIO.write(sequences, 'truncated-' + filename, 'fasta') 

這不是最佳的,我們要避免讀取他們都到內存中,而是隻處理一次一個漫長的序列也不需要大數量的序列。但這是一個開始的地方。

+0

Yeap我正在考慮這些條款。我認爲biopython可能會對此有所幫助。我使用列表(SeqIO.parse),但它沒有列出的所有功能。非常感謝你的幫助。 – Ana