2012-01-02 21 views
1

我有一套使用軟件找到​​的(蛋白質)序列,但它們的長度比數據庫中的原始序列短。下載了整個數據庫,現在我已經找到了這些不完整序列的集合,並找到了序列的原始數據庫。從軟件使用Python檢索缺失的序列-'split'命令不起作用

實施例的結果是:

>tr|E7EWP2|E7EWP2_HUMAN Uncharacterized protein OS=Homo sapiens GN=TRIO PE=4 SV=2 
KEFIMAELIQTEKAYVRDLRECMDTYLWEMTSGVE 

序列在數據庫中:

>tr|E7EWP2|E7EWP2_HUMAN Uncharacterized protein OS=Homo sapiens GN=TRIO PE=4 SV=2 
ARRKEFIMAELIQTEKAYVRDLRECMDTYLWEMTSGVEEIP 

因此丟失的殘基是 'ARR' 和到底 'EIP',我有大約70不完整序列喜歡這個?我想編寫一個可以自動從數據庫中檢索完整序列的Python程序。 我真的是新的python,當然我會嘗試寫我自己的代碼,我想知道是否有任何庫或類似biopython模塊可以做到這一點。 我的計劃是從我的結果中取出間隔,展開並在原始數據庫上選中它,但我不知道如何繼續。

我想獲得list_seq = [ARR,KEFIMAELIQTEKAYVRDLRECMDTYLWEMTSGVE,EIP],以便我可以進一步使用list_seq[0] r.strip(3)list_seq[1] l.strip[3]以便我得到完整的序列。但是list_seq不起作用。

在此先感謝

+3

酷的故事,現在開始工作,當你有一個特定的編程問題時回來。 – 2012-01-02 15:54:34

+4

Jochen想要交流的是這樣一個問題,那就是「爲我寫這個程序」,這不是本網站的目的。如果你表現出自己的努力來解決問題,你很有可能獲得幫助。 – 2012-01-02 15:58:02

+0

你可能想看看[difflib](http://docs.python.org/library/difflib.html)。 – jterrace 2012-01-02 16:09:42

回答

4

您可以使用從BioPython SeqIO和index方法。 index方法通過蛋白質id索引數據庫記錄,並且不會將完整的數據庫加載到內存中,從而允許使用完整的大數據庫進行高效搜索(或者,您可以使用傳統的數據庫像sqlite來首先存儲記錄並對其執行搜索):

from Bio import SeqIO 

db1 = "dbase.fasta" 
db2 = "my_collection.fasta" 

dbase_dict = SeqIO.index(db1, "fasta") 
my_record_dict = SeqIO.index(db2, "fasta") 

for record in my_record_dict: 
    if record in dbase_dict: 
     rec_dbase = dbase_dict[record] 
     rec_mine = my_record_dict[record] 
     if rec_dbase.seq != rec_mine.seq: 
      print rec_dbase 

這個程序只是打印有差異的記錄。從這一點上,你可以將它們保存在一個列表中或寫入一個fasta文件

+0

感謝您的建議 – hari 2012-01-04 13:23:36

+0

我想分割我的序列從數據庫是list_seq = rec_dbase.seq.split(「rec_mine.seq」),但我不知道爲什麼它不起作用? – hari 2012-01-05 11:55:30

+0

@hari,如果在回答你的第一個問題之前選擇答案,然後再問一個新的,完全不同的東西。另一方面,如果您將問題文本回滾到其原始狀態並在其他帖子中尋求新問題,則會更加清楚。 – joaquin 2012-01-06 12:52:16